@@ -42,7 +42,7 @@ func (f *Frontend) CreateOrUpdateNodePool(writer http.ResponseWriter, request *h
4242 return
4343 }
4444
45- nodePoolResourceID , err := ResourceIDFromContext (ctx )
45+ resourceID , err := ResourceIDFromContext (ctx )
4646 if err != nil {
4747 f .logger .Error (err .Error ())
4848 arm .WriteInternalServerError (writer )
@@ -58,41 +58,14 @@ func (f *Frontend) CreateOrUpdateNodePool(writer http.ResponseWriter, request *h
5858
5959 f .logger .Info (fmt .Sprintf ("%s: CreateNodePool" , versionedInterface ))
6060
61- clusterResourceID := nodePoolResourceID .GetParent ()
62- if clusterResourceID == nil {
63- f .logger .Error (fmt .Sprintf ("failed to obtain Azure parent resourceID for node pool %s" , nodePoolResourceID ))
64- arm .WriteInternalServerError (writer )
65- return
66- }
67-
68- clusterDoc , err := f .dbClient .GetResourceDoc (ctx , clusterResourceID )
69- if err != nil {
70- f .logger .Error (err .Error ())
71- arm .WriteInternalServerError (writer )
72- return
73- }
74-
75- csCluster , err := f .clusterServiceClient .GetCSCluster (ctx , clusterDoc .InternalID )
76- if err != nil {
77- f .logger .Error (fmt .Sprintf ("failed to fetch CS cluster for %s: %v" , clusterResourceID , err ))
78- arm .WriteInternalServerError (writer )
79- return
80- }
81-
82- if csCluster .State () == cmv1 .ClusterStateUninstalling {
83- f .logger .Error (fmt .Sprintf ("failed to create node pool for cluster %s as it is in %v state" , clusterResourceID , cmv1 .ClusterStateUninstalling ))
84- arm .WriteInternalServerError (writer )
85- return
86- }
87-
88- nodePoolDoc , err := f .dbClient .GetResourceDoc (ctx , nodePoolResourceID )
61+ doc , err := f .dbClient .GetResourceDoc (ctx , resourceID )
8962 if err != nil && ! errors .Is (err , database .ErrNotFound ) {
9063 f .logger .Error (err .Error ())
9164 arm .WriteInternalServerError (writer )
9265 return
9366 }
9467
95- var updating = (nodePoolDoc != nil )
68+ var updating = (doc != nil )
9669 var operationRequest database.OperationRequest
9770
9871 var versionedCurrentNodePool api.VersionedHCPOpenShiftClusterNodePool
@@ -106,14 +79,14 @@ func (f *Frontend) CreateOrUpdateNodePool(writer http.ResponseWriter, request *h
10679 // No special treatment here for "not found" errors. A "not found"
10780 // error indicates the database has gotten out of sync and so it's
10881 // appropriate to fail.
109- csNodePool , err := f .clusterServiceClient .GetCSNodePool (ctx , nodePoolDoc .InternalID )
82+ csNodePool , err := f .clusterServiceClient .GetCSNodePool (ctx , doc .InternalID )
11083 if err != nil {
111- f .logger .Error (fmt .Sprintf ("failed to fetch CS node pool for %s: %v" , nodePoolResourceID , err ))
84+ f .logger .Error (fmt .Sprintf ("failed to fetch CS node pool for %s: %v" , resourceID , err ))
11285 arm .WriteInternalServerError (writer )
11386 return
11487 }
11588
116- hcpNodePool := ConvertCStoNodePool (nodePoolResourceID , csNodePool )
89+ hcpNodePool := ConvertCStoNodePool (resourceID , csNodePool )
11790
11891 // Do not set the TrackedResource.Tags field here. We need
11992 // the Tags map to remain nil so we can see if the request
@@ -143,11 +116,11 @@ func (f *Frontend) CreateOrUpdateNodePool(writer http.ResponseWriter, request *h
143116 case http .MethodPatch :
144117 // PATCH requests never create a new resource.
145118 f .logger .Error ("Resource not found" )
146- arm .WriteResourceNotFoundError (writer , nodePoolResourceID )
119+ arm .WriteResourceNotFoundError (writer , resourceID )
147120 return
148121 }
149122
150- nodePoolDoc = database .NewResourceDocument (nodePoolResourceID )
123+ doc = database .NewResourceDocument (resourceID )
151124 }
152125
153126 body , err := BodyFromContext (ctx )
@@ -181,31 +154,38 @@ func (f *Frontend) CreateOrUpdateNodePool(writer http.ResponseWriter, request *h
181154 }
182155
183156 if updating {
184- f .logger .Info (fmt .Sprintf ("updating resource %s" , nodePoolResourceID ))
185- csNodePool , err = f .clusterServiceClient .UpdateCSNodePool (ctx , nodePoolDoc .InternalID , csNodePool )
157+ f .logger .Info (fmt .Sprintf ("updating resource %s" , resourceID ))
158+ csNodePool , err = f .clusterServiceClient .UpdateCSNodePool (ctx , doc .InternalID , csNodePool )
186159 if err != nil {
187160 f .logger .Error (err .Error ())
188161 arm .WriteInternalServerError (writer )
189162 return
190163 }
191164 } else {
192- f .logger .Info (fmt .Sprintf ("creating resource %s" , nodePoolResourceID ))
165+ f .logger .Info (fmt .Sprintf ("creating resource %s" , resourceID ))
166+ clusterDoc , err := f .dbClient .GetResourceDoc (ctx , resourceID .GetParent ())
167+ if err != nil {
168+ f .logger .Error (err .Error ())
169+ arm .WriteInternalServerError (writer )
170+ return
171+ }
172+
193173 csNodePool , err = f .clusterServiceClient .PostCSNodePool (ctx , clusterDoc .InternalID , csNodePool )
194174 if err != nil {
195175 f .logger .Error (err .Error ())
196176 arm .WriteInternalServerError (writer )
197177 return
198178 }
199179
200- nodePoolDoc .InternalID , err = ocm .NewInternalID (csNodePool .HREF ())
180+ doc .InternalID , err = ocm .NewInternalID (csNodePool .HREF ())
201181 if err != nil {
202182 f .logger .Error (err .Error ())
203183 arm .WriteInternalServerError (writer )
204184 return
205185 }
206186 }
207187
208- operationDoc , err := f .StartOperation (writer , request , nodePoolDoc , operationRequest )
188+ operationDoc , err := f .StartOperation (writer , request , doc , operationRequest )
209189 if err != nil {
210190 f .logger .Error (fmt .Sprintf ("failed to write operation document: %v" , err ))
211191 arm .WriteInternalServerError (writer )
@@ -236,27 +216,27 @@ func (f *Frontend) CreateOrUpdateNodePool(writer http.ResponseWriter, request *h
236216 }
237217
238218 if ! updating {
239- updateResourceMetadata (nodePoolDoc )
240- err = f .dbClient .CreateResourceDoc (ctx , nodePoolDoc )
219+ updateResourceMetadata (doc )
220+ err = f .dbClient .CreateResourceDoc (ctx , doc )
241221 if err != nil {
242222 f .logger .Error (err .Error ())
243223 arm .WriteInternalServerError (writer )
244224 return
245225 }
246- f .logger .Info (fmt .Sprintf ("document created for %s" , nodePoolResourceID ))
226+ f .logger .Info (fmt .Sprintf ("document created for %s" , resourceID ))
247227 } else {
248- updated , err := f .dbClient .UpdateResourceDoc (ctx , nodePoolResourceID , updateResourceMetadata )
228+ updated , err := f .dbClient .UpdateResourceDoc (ctx , resourceID , updateResourceMetadata )
249229 if err != nil {
250230 f .logger .Error (err .Error ())
251231 arm .WriteInternalServerError (writer )
252232 return
253233 }
254234 if updated {
255- f .logger .Info (fmt .Sprintf ("document updated for %s" , nodePoolResourceID ))
235+ f .logger .Info (fmt .Sprintf ("document updated for %s" , resourceID ))
256236 }
257237 }
258238
259- responseBody , err := marshalCSNodePool (csNodePool , nodePoolDoc , versionedInterface )
239+ responseBody , err := marshalCSNodePool (csNodePool , doc , versionedInterface )
260240 if err != nil {
261241 f .logger .Error (err .Error ())
262242 arm .WriteInternalServerError (writer )
0 commit comments