@@ -18,6 +18,8 @@ package controller
18
18
19
19
import (
20
20
"context"
21
+ "fmt"
22
+
21
23
"github.com/go-logr/logr"
22
24
"k8s.io/apimachinery/pkg/api/errors"
23
25
"k8s.io/apimachinery/pkg/runtime"
@@ -26,11 +28,12 @@ import (
26
28
"sigs.k8s.io/controller-runtime/pkg/log"
27
29
28
30
ncputil "github.com/cloud-club/Aviator-service/pkg"
31
+ server "github.com/cloud-club/Aviator-service/types/server"
29
32
30
33
vmv1 "vm.cloudclub.io/api/v1"
31
34
)
32
35
33
- var provisionReconcileMap map [string ]func (* ProvisionReconciler , logr.Logger , string , interface {}) error
36
+ var provisionReconcileMap map [string ]func (* ProvisionReconciler , logr.Logger , string , * vmv1. Provision , interface {}) error
34
37
35
38
// ProvisionReconciler reconciles a Provision object
36
39
type ProvisionReconciler struct {
@@ -42,8 +45,8 @@ type ProvisionReconciler struct {
42
45
func NewProvisionReconciler (
43
46
client client.Client ,
44
47
scheme * runtime.Scheme ,
45
- ncpService * ncputil.NcpService ) * ProvisionReconciler {
46
-
48
+ ncpService * ncputil.NcpService ,
49
+ ) * ProvisionReconciler {
47
50
initProvisionReconcileMap ()
48
51
return & ProvisionReconciler {
49
52
Client : client ,
@@ -53,7 +56,7 @@ func NewProvisionReconciler(
53
56
}
54
57
55
58
func initProvisionReconcileMap () {
56
- provisionReconcileMap = make (map [string ]func (* ProvisionReconciler , logr.Logger , string , interface {}) error )
59
+ provisionReconcileMap = make (map [string ]func (* ProvisionReconciler , logr.Logger , string , * vmv1. Provision , interface {}) error )
57
60
provisionReconcileMap ["provision" ] = provision
58
61
provisionReconcileMap ["deProvision" ] = deProvision
59
62
provisionReconcileMap ["update" ] = update
@@ -89,45 +92,45 @@ func (r *ProvisionReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
89
92
return ctrl.Result {}, err
90
93
}
91
94
92
- switch original .Status .Phase {
95
+ switch original .Spec .Phase {
93
96
case "" , vmv1 .ProvisionPhaseCreate :
94
97
if v , ok := provisionReconcileMap ["provision" ]; ok {
95
- if err = v (r , log , apiUrlCreate , nil ); err != nil {
98
+ if err = v (r , log , apiUrlCreate , original , nil ); err != nil {
96
99
log .Error (err , "Failed to create VM" )
97
100
return ctrl.Result {}, err
98
101
}
99
102
}
100
103
case vmv1 .ProvisionPhaseUpdate :
101
104
if v , ok := provisionReconcileMap ["update" ]; ok {
102
- if err = v (r , log , apiUrlUpdate , nil ); err != nil {
105
+ if err = v (r , log , apiUrlUpdate , original , nil ); err != nil {
103
106
log .Error (err , "Failed to update VM" )
104
107
return ctrl.Result {}, err
105
108
}
106
109
}
107
110
case vmv1 .ProvisionPhaseStop :
108
111
if v , ok := provisionReconcileMap ["stop" ]; ok {
109
- if err = v (r , log , apiUrlStop , nil ); err != nil {
112
+ if err = v (r , log , apiUrlStop , original , nil ); err != nil {
110
113
log .Error (err , "Failed to stop VM" )
111
114
return ctrl.Result {}, err
112
115
}
113
116
}
114
117
case vmv1 .ProvisionPhaseDelete :
115
118
if v , ok := provisionReconcileMap ["deProvision" ]; ok {
116
- if err = v (r , log , apiUrlDelete , nil ); err != nil {
119
+ if err = v (r , log , apiUrlDelete , original , nil ); err != nil {
117
120
log .Error (err , "Failed to delete VM" )
118
121
return ctrl.Result {}, err
119
122
}
120
123
}
121
124
case vmv1 .ProvisionPhaseGet :
122
125
if v , ok := provisionReconcileMap ["get" ]; ok {
123
- if err = v (r , log , apiUrlGet , nil ); err != nil {
126
+ if err = v (r , log , apiUrlGet , original , nil ); err != nil {
124
127
log .Error (err , "Failed to get VM information" )
125
128
return ctrl.Result {}, err
126
129
}
127
130
}
128
131
default :
129
132
log .V (ErrorLevelIsAnError ).Error (err , "No action defined for the current phase" ,
130
- "reconcile phase" , original .Status .Phase , "namespace" , req .NamespacedName )
133
+ "reconcile phase" , original .Spec .Phase , "namespace" , req .NamespacedName )
131
134
return ctrl.Result {}, err
132
135
}
133
136
@@ -141,32 +144,52 @@ func (r *ProvisionReconciler) SetupWithManager(mgr ctrl.Manager) error {
141
144
Complete (r )
142
145
}
143
146
144
- func provision (r * ProvisionReconciler , log logr.Logger , url string , payload interface {}) error {
147
+ func provision (r * ProvisionReconciler , log logr.Logger , url string , original * vmv1. Provision , payload interface {}) error {
145
148
log .V (ErrorLevelIsInfo ).Info ("Creating a new VM" )
146
- //return r.ncpService.Server.Create(url, payload)
147
- return nil
149
+ csr := & server.CreateServerRequest {
150
+ ServerImageProductCode : original .Spec .Server .ImageProductCode ,
151
+ VpcNo : original .Spec .VpcNo ,
152
+ SubnetNo : original .Spec .SubnetNo ,
153
+ NetworkInterfaceOrder : original .Spec .NetworkInterface .Order ,
154
+ AccessControlGroupNoListN : original .Spec .AccessControlGroupNoListN ,
155
+ ServerProductCode : original .Spec .Server .ProductCode ,
156
+ }
157
+ createServerResponse , err := r .ncpService .Server .Create (ncputil .API_URL + ncputil .CREATE_SERVER_INSTANCE_PATH , csr , []int {1 , 1 })
158
+ fmt .Println (createServerResponse )
159
+ return err
148
160
}
149
161
150
- func deProvision (r * ProvisionReconciler , log logr.Logger , url string , payload interface {}) error {
162
+ func deProvision (r * ProvisionReconciler , log logr.Logger , url string , original * vmv1. Provision , payload interface {}) error {
151
163
log .V (ErrorLevelIsInfo ).Info ("Deleting an existing VM" )
152
- //return r.ncpService.Server.Delete(url)
153
- return nil
164
+ dsr := & server.DeleteServerRequest {ServerNo : original .Spec .ServerNo }
165
+ deleteServerResponse , err := r .ncpService .Server .Delete (ncputil .API_URL + ncputil .DELETE_SERVER_INSTANCE_PATH , dsr )
166
+ fmt .Println (deleteServerResponse )
167
+ return err
154
168
}
155
169
156
- func update (r * ProvisionReconciler , log logr.Logger , url string , payload interface {}) error {
170
+ func update (r * ProvisionReconciler , log logr.Logger , url string , original * vmv1. Provision , payload interface {}) error {
157
171
log .V (ErrorLevelIsInfo ).Info ("Updating an existing VM" )
158
- //return r.ncpService.Server.Update(url)
159
- return nil
172
+ usr := & server.UpdateServerRequest {
173
+ ServerInstanceNo : original .Spec .ServerInstanceNo ,
174
+ ServerProductCode : original .Spec .Server .ProductCode ,
175
+ }
176
+ updateServerResponse , err := r .ncpService .Server .Update (ncputil .API_URL + ncputil .UPDATE_SERVER_INSTANCE_PATH , usr )
177
+ fmt .Println (updateServerResponse )
178
+ return err
160
179
}
161
180
162
- func stop (r * ProvisionReconciler , log logr.Logger , url string , payload interface {}) error {
181
+ func stop (r * ProvisionReconciler , log logr.Logger , url string , original * vmv1. Provision , payload interface {}) error {
163
182
log .V (ErrorLevelIsInfo ).Info ("Stopping an existing VM" )
164
- //return r.ncpService.Server.Stop(url)
165
- return nil
183
+ ssr := & server.StopServerRequest {ServerNo : original .Spec .ServerNo }
184
+ stopServerResponse , err := r .ncpService .Server .Stop (ncputil .API_URL + ncputil .STOP_SERVER_INSTANCE_PATH , ssr )
185
+ fmt .Println (stopServerResponse )
186
+ return err
166
187
}
167
188
168
- func get (r * ProvisionReconciler , log logr.Logger , url string , payload interface {}) error {
189
+ func get (r * ProvisionReconciler , log logr.Logger , url string , original * vmv1. Provision , payload interface {}) error {
169
190
log .V (ErrorLevelIsInfo ).Info ("Getting information for an existing VM" )
170
- return nil
171
- //return r.ncpService.Server.Get(url)
191
+ lsr := & server.ListServerRequest {RegionCode : original .Spec .RegionCode }
192
+ serverListResponse , err := r .ncpService .Server .List (ncputil .API_URL + ncputil .GET_SERVER_INSTANCE_PATH , lsr )
193
+ fmt .Println (serverListResponse )
194
+ return err
172
195
}
0 commit comments