@@ -19,7 +19,7 @@ import (
1919)
2020
2121var (
22- clusterOperationMaxTime = 20 * time .Minute
22+ clusterOperationMaxTime = 60 * time .Minute
2323)
2424
2525func ClusterResource () * schema.Resource {
@@ -324,7 +324,7 @@ func containerEngineWorkRequestShouldRetryFunc(timeout time.Duration) func(respo
324324 }
325325}
326326
327- //containerEngineWaitForWorkRequest custom logic to extract clusterId from a workRequest
327+ //containerEngineWaitForWorkRequest custom logic to extract an identifier from a workRequest
328328func containerEngineWaitForWorkRequest (wId * string , entityType string , action oci_containerengine.WorkRequestResourceActionTypeEnum ,
329329 timeout time.Duration , disableFoundRetries bool , client * oci_containerengine.ContainerEngineClient ) (* string , error ) {
330330 retryPolicy := getRetryPolicy (disableFoundRetries , "containerengine" )
@@ -341,17 +341,20 @@ func containerEngineWaitForWorkRequest(wId *string, entityType string, action oc
341341 return nil , err
342342 }
343343
344+ var identifier * string
344345 //The work request response contains an array of objects that finished the operation
345346 for _ , res := range response .Resources {
346- if strings .Contains (strings .ToLower (* res .EntityType ), entityType ) &&
347- res .ActionType == action {
348- return res .Identifier , nil
347+ if strings .Contains (strings .ToLower (* res .EntityType ), entityType ) {
348+ identifier = res .Identifier
349+ if res .ActionType == action {
350+ return res .Identifier , nil
351+ }
349352 }
350353 }
351354
352355 //Otherwise the operation ended unsucessfully
353356 errorMessage , _ := getErrorFromWorkRequest (wId , response .CompartmentId , client , disableFoundRetries )
354- return nil , fmt .Errorf ("work request did not succeed, workId: %s, entity: %s, action: %s. Message: %s" , * wId , entityType , action , errorMessage )
357+ return identifier , fmt .Errorf ("work request did not succeed, workId: %s, entity: %s, action: %s. Message: %s" , * wId , entityType , action , errorMessage )
355358}
356359
357360func (s * ClusterResourceCrud ) Create () error {
@@ -394,7 +397,25 @@ func (s *ClusterResourceCrud) Create() error {
394397 //Wait until it finishes
395398 clusterID , err := containerEngineWaitForWorkRequest (workId , "cluster" ,
396399 oci_containerengine .WorkRequestResourceActionTypeCreated , clusterOperationMaxTime , s .DisableNotFoundRetries , s .Client )
400+
397401 if err != nil {
402+ if clusterID != nil {
403+ //Try to clean up
404+ delReq := oci_containerengine.DeleteClusterRequest {}
405+ delReq .ClusterId = clusterID
406+ delReq .RequestMetadata .RetryPolicy = getRetryPolicy (s .DisableNotFoundRetries , "containerengine" )
407+
408+ //Issue the delete delReq
409+ delRes , delErr := s .Client .DeleteCluster (context .Background (), delReq )
410+ if delErr != nil {
411+ return err
412+ }
413+ delWorkRequest := delRes .OpcWorkRequestId
414+
415+ //Wait until request finishes
416+ _ , _ = containerEngineWaitForWorkRequest (delWorkRequest , "cluster" ,
417+ oci_containerengine .WorkRequestResourceActionTypeDeleted , clusterOperationMaxTime , s .DisableNotFoundRetries , s .Client )
418+ }
398419 return err
399420 }
400421
0 commit comments