@@ -452,31 +452,22 @@ func (s *VPCClusterScope) ReconcileVPC() (bool, error) {
452
452
453
453
// If no VPC id was found, we need to create a new VPC.
454
454
s .V (3 ).Info ("Creating a VPC" )
455
- vpcDetails , err : = s .createVPC ()
455
+ err = s .createVPC ()
456
456
if err != nil {
457
457
return false , fmt .Errorf ("failed to create vpc: %w" , err )
458
458
}
459
459
460
460
s .V (3 ).Info ("Successfully created VPC" )
461
- var vpcName * string
462
- if vpcDetails != nil {
463
- vpcName = vpcDetails .Name
464
- }
465
- s .SetResourceStatus (infrav1beta2 .ResourceTypeVPC , & infrav1beta2.ResourceStatus {
466
- ID : * vpcDetails .ID ,
467
- Name : vpcName ,
468
- Ready : false ,
469
- })
470
461
return true , nil
471
462
}
472
463
473
- func (s * VPCClusterScope ) createVPC () ( * vpcv1. VPC , error ) {
464
+ func (s * VPCClusterScope ) createVPC () error {
474
465
// We use the cluster's Resource Group ID, as we expect to create all resources in that Resource Group.
475
466
resourceGroupID , err := s .GetResourceGroupID ()
476
467
if err != nil {
477
- return nil , fmt .Errorf ("failed retreiving resource group id during vpc creation: %w" , err )
468
+ return fmt .Errorf ("failed retreiving resource group id during vpc creation: %w" , err )
478
469
} else if resourceGroupID == "" {
479
- return nil , fmt .Errorf ("resource group id is empty cannot create vpc" )
470
+ return fmt .Errorf ("resource group id is empty cannot create vpc" )
480
471
}
481
472
vpcName := s .GetServiceName (infrav1beta2 .ResourceTypeVPC )
482
473
if s .NetworkSpec () != nil && s .NetworkSpec ().VPC != nil && s .NetworkSpec ().VPC .Name != nil {
@@ -492,17 +483,25 @@ func (s *VPCClusterScope) createVPC() (*vpcv1.VPC, error) {
492
483
}
493
484
vpcDetails , _ , err := s .VPCClient .CreateVPC (vpcOptions )
494
485
if err != nil {
495
- return nil , fmt .Errorf ("error creating vpc: %w" , err )
486
+ return fmt .Errorf ("error creating vpc: %w" , err )
496
487
} else if vpcDetails == nil {
497
- return nil , fmt .Errorf ("no vpc details after creation" )
488
+ return fmt .Errorf ("no vpc details after creation" )
498
489
}
499
490
491
+ // Set the VPC status.
492
+ s .SetResourceStatus (infrav1beta2 .ResourceTypeVPC , & infrav1beta2.ResourceStatus {
493
+ ID : * vpcDetails .ID ,
494
+ Name : vpcDetails .Name ,
495
+ // We wait for a followup reconcile loop to set as Ready, to confirm the VPC can be found.
496
+ Ready : false ,
497
+ })
498
+
500
499
// NOTE: This tagging is only attempted once. We may wish to refactor in case this single attempt fails.
501
500
if err = s .TagResource (s .Name (), * vpcDetails .CRN ); err != nil {
502
- return nil , fmt .Errorf ("error tagging vpc: %w" , err )
501
+ return fmt .Errorf ("error tagging vpc: %w" , err )
503
502
}
504
503
505
- return vpcDetails , nil
504
+ return nil
506
505
}
507
506
508
507
// ReconcileVPCCustomImage reconciles the VPC Custom Image.
0 commit comments