@@ -2285,12 +2285,12 @@ func (s *PowerVSClusterScope) DeleteLoadBalancer() (bool, error) {
2285
2285
continue
2286
2286
}
2287
2287
2288
- lb , _ , err := s .IBMVPCClient .GetLoadBalancer (& vpcv1.GetLoadBalancerOptions {
2288
+ lb , resp , err := s .IBMVPCClient .GetLoadBalancer (& vpcv1.GetLoadBalancerOptions {
2289
2289
ID : lb .ID ,
2290
2290
})
2291
2291
2292
2292
if err != nil {
2293
- if strings . Contains ( err . Error (), string ( VPCLoadBalancerNotFound )) {
2293
+ if resp != nil && resp . StatusCode == ResourceNotFoundCode {
2294
2294
s .Info ("VPC load balancer successfully deleted" )
2295
2295
continue
2296
2296
}
@@ -2324,10 +2324,10 @@ func (s *PowerVSClusterScope) DeleteVPCSecurityGroups() error {
2324
2324
s .Info ("Skipping VPC security group deletion as resource is not created by controller" , "ID" , * securityGroup .ID )
2325
2325
continue
2326
2326
}
2327
- if _ , _ , err := s .IBMVPCClient .GetSecurityGroup (& vpcv1.GetSecurityGroupOptions {
2327
+ if _ , resp , err := s .IBMVPCClient .GetSecurityGroup (& vpcv1.GetSecurityGroupOptions {
2328
2328
ID : securityGroup .ID ,
2329
2329
}); err != nil {
2330
- if strings . Contains ( err . Error (), string ( VPCSecurityGroupNotFound )) {
2330
+ if resp != nil && resp . StatusCode == ResourceNotFoundCode {
2331
2331
s .Info ("VPC security group has been already deleted" , "ID" , * securityGroup .ID )
2332
2332
continue
2333
2333
}
@@ -2356,12 +2356,12 @@ func (s *PowerVSClusterScope) DeleteVPCSubnet() (bool, error) {
2356
2356
continue
2357
2357
}
2358
2358
2359
- net , _ , err := s .IBMVPCClient .GetSubnet (& vpcv1.GetSubnetOptions {
2359
+ net , resp , err := s .IBMVPCClient .GetSubnet (& vpcv1.GetSubnetOptions {
2360
2360
ID : subnet .ID ,
2361
2361
})
2362
2362
2363
2363
if err != nil {
2364
- if strings . Contains ( err . Error (), string ( VPCSubnetNotFound )) {
2364
+ if resp != nil && resp . StatusCode == ResourceNotFoundCode {
2365
2365
s .Info ("VPC subnet successfully deleted" )
2366
2366
continue
2367
2367
}
@@ -2398,12 +2398,12 @@ func (s *PowerVSClusterScope) DeleteVPC() (bool, error) {
2398
2398
return false , nil
2399
2399
}
2400
2400
2401
- vpc , _ , err := s .IBMVPCClient .GetVPC (& vpcv1.GetVPCOptions {
2401
+ vpc , resp , err := s .IBMVPCClient .GetVPC (& vpcv1.GetVPCOptions {
2402
2402
ID : s .IBMPowerVSCluster .Status .VPC .ID ,
2403
2403
})
2404
2404
2405
2405
if err != nil {
2406
- if strings . Contains ( err . Error (), string ( VPCNotFound )) {
2406
+ if resp != nil && resp . StatusCode == ResourceNotFoundCode {
2407
2407
s .Info ("VPC successfully deleted" )
2408
2408
return false , nil
2409
2409
}
@@ -2433,12 +2433,12 @@ func (s *PowerVSClusterScope) DeleteTransitGateway() (bool, error) {
2433
2433
return false , nil
2434
2434
}
2435
2435
2436
- tg , _ , err := s .TransitGatewayClient .GetTransitGateway (& tgapiv1.GetTransitGatewayOptions {
2436
+ tg , resp , err := s .TransitGatewayClient .GetTransitGateway (& tgapiv1.GetTransitGatewayOptions {
2437
2437
ID : s .IBMPowerVSCluster .Status .TransitGateway .ID ,
2438
2438
})
2439
2439
2440
2440
if err != nil {
2441
- if strings . Contains ( err . Error (), string ( TransitGatewayNotFound )) {
2441
+ if resp != nil && resp . StatusCode == ResourceNotFoundCode {
2442
2442
s .Info ("Transit gateway successfully deleted" )
2443
2443
return false , nil
2444
2444
}
@@ -2498,6 +2498,10 @@ func (s *PowerVSClusterScope) DeleteDHCPServer() error {
2498
2498
s .Info ("Skipping DHP server deletion as resource is not created by controller" )
2499
2499
return nil
2500
2500
}
2501
+ if s .isResourceCreatedByController (infrav1beta2 .ResourceTypeServiceInstance ) {
2502
+ s .Info ("Skipping DHCP server deletion as PowerVS service instance is created by controller, will directly delete the PowerVS service instance since it will delete the DHCP server internally" )
2503
+ return nil
2504
+ }
2501
2505
2502
2506
if s .IBMPowerVSCluster .Status .DHCPServer .ID == nil {
2503
2507
return nil
@@ -2541,26 +2545,13 @@ func (s *PowerVSClusterScope) DeleteServiceInstance() (bool, error) {
2541
2545
return false , nil
2542
2546
}
2543
2547
2544
- // If PowerVS service instance is in failed state, proceed with deletion instead of checking for existing network resources.
2545
- if serviceInstance != nil && * serviceInstance .State != string (infrav1beta2 .ServiceInstanceStateFailed ) {
2546
- servers , err := s .IBMPowerVSClient .GetAllDHCPServers ()
2547
- if err != nil {
2548
- return false , fmt .Errorf ("error fetching networks in the PowerVS service instance: %w" , err )
2549
- }
2550
-
2551
- if len (servers ) > 0 {
2552
- s .Info ("Wait for DHCP server to be deleted before deleting PowerVS service instance" )
2553
- return true , nil
2554
- }
2555
- }
2556
-
2557
2548
if _ , err = s .ResourceClient .DeleteResourceInstance (& resourcecontrollerv2.DeleteResourceInstanceOptions {
2558
2549
ID : serviceInstance .ID ,
2559
2550
}); err != nil {
2560
2551
s .Error (err , "failed to delete Power VS service instance" )
2561
2552
return false , err
2562
2553
}
2563
- s . Info ( "PowerVS service instance successfully deleted" )
2554
+
2564
2555
return true , nil
2565
2556
}
2566
2557
@@ -2575,11 +2566,11 @@ func (s *PowerVSClusterScope) DeleteCOSInstance() error {
2575
2566
return nil
2576
2567
}
2577
2568
2578
- cosInstance , _ , err := s .ResourceClient .GetResourceInstance (& resourcecontrollerv2.GetResourceInstanceOptions {
2569
+ cosInstance , resp , err := s .ResourceClient .GetResourceInstance (& resourcecontrollerv2.GetResourceInstanceOptions {
2579
2570
ID : s .IBMPowerVSCluster .Status .COSInstance .ID ,
2580
2571
})
2581
2572
if err != nil {
2582
- if strings . Contains ( err . Error (), string ( COSInstanceNotFound )) {
2573
+ if resp != nil && resp . StatusCode == ResourceNotFoundCode {
2583
2574
return nil
2584
2575
}
2585
2576
return fmt .Errorf ("failed to fetch COS service instance: %w" , err )
0 commit comments