@@ -520,33 +520,29 @@ func (m *MachineScope) ReconcileCreateInstanceOnLB(ctx context.Context) error {
520
520
backendName := instanceIp + ":" + strconv .Itoa (int (m .OCICluster .Spec .ControlPlaneEndpoint .Port ))
521
521
if ! m .containsLBBackend (backendSet , backendName ) {
522
522
logger := m .Logger .WithValues ("backend-set" , * backendSet .Name )
523
- workRequest := m .OCIMachine .Status .CreateBackendWorkRequestId
524
523
logger .Info ("Checking work request status for create backend" )
525
- if workRequest != "" {
526
- _ , err = ociutil .AwaitLBWorkRequest (ctx , m .LoadBalancerClient , & workRequest )
527
- if err != nil {
528
- return err
529
- }
530
- } else {
531
- resp , err := m .LoadBalancerClient .CreateBackend (ctx , loadbalancer.CreateBackendRequest {
532
- LoadBalancerId : loadbalancerId ,
533
- BackendSetName : backendSet .Name ,
534
- CreateBackendDetails : loadbalancer.CreateBackendDetails {
535
- IpAddress : common .String (instanceIp ),
536
- Port : common .Int (int (m .OCICluster .Spec .ControlPlaneEndpoint .Port )),
537
- },
538
- OpcRetryToken : ociutil .GetOPCRetryToken ("%s-%s" , "create-backend" , string (m .OCIMachine .UID )),
539
- })
540
- if err != nil {
541
- return err
542
- }
543
- m .OCIMachine .Status .CreateBackendWorkRequestId = * resp .OpcWorkRequestId
544
- logger .Info ("Add instance to LB backend-set" , "WorkRequestId" , resp .OpcWorkRequestId )
545
- logger .Info ("Waiting for LB work request to be complete" )
546
- _ , err = ociutil .AwaitLBWorkRequest (ctx , m .LoadBalancerClient , resp .OpcWorkRequestId )
547
- if err != nil {
548
- return err
549
- }
524
+ // we always try to create the backend if it exists during a reconcile loop and wait for the work request
525
+ // to complete. If there is a work request in progress, in the rare case, CAPOCI pod restarts during the
526
+ // work request, the create backend call may throw an error which is ok, as reconcile will go into
527
+ // an exponential backoff
528
+ resp , err := m .LoadBalancerClient .CreateBackend (ctx , loadbalancer.CreateBackendRequest {
529
+ LoadBalancerId : loadbalancerId ,
530
+ BackendSetName : backendSet .Name ,
531
+ CreateBackendDetails : loadbalancer.CreateBackendDetails {
532
+ IpAddress : common .String (instanceIp ),
533
+ Port : common .Int (int (m .OCICluster .Spec .ControlPlaneEndpoint .Port )),
534
+ },
535
+ OpcRetryToken : ociutil .GetOPCRetryToken ("%s-%s" , "create-backend" , string (m .OCIMachine .UID )),
536
+ })
537
+ if err != nil {
538
+ return err
539
+ }
540
+ m .OCIMachine .Status .CreateBackendWorkRequestId = * resp .OpcWorkRequestId
541
+ logger .Info ("Add instance to LB backend-set" , "WorkRequestId" , resp .OpcWorkRequestId )
542
+ logger .Info ("Waiting for LB work request to be complete" )
543
+ _ , err = ociutil .AwaitLBWorkRequest (ctx , m .LoadBalancerClient , resp .OpcWorkRequestId )
544
+ if err != nil {
545
+ return err
550
546
}
551
547
}
552
548
@@ -561,37 +557,32 @@ func (m *MachineScope) ReconcileCreateInstanceOnLB(ctx context.Context) error {
561
557
if ! m .containsNLBBackend (backendSet , m .Name ()) {
562
558
logger := m .Logger .WithValues ("backend-set" , * backendSet .Name )
563
559
logger .Info ("Checking work request status for create backend" )
564
- workRequest := m .OCIMachine .Status .CreateBackendWorkRequestId
565
- if workRequest != "" {
566
- _ , err = ociutil .AwaitNLBWorkRequest (ctx , m .NetworkLoadBalancerClient , & workRequest )
567
- if err != nil {
568
- return err
569
- }
570
- } else {
571
- resp , err := m .NetworkLoadBalancerClient .CreateBackend (ctx , networkloadbalancer.CreateBackendRequest {
572
- NetworkLoadBalancerId : loadbalancerId ,
573
- BackendSetName : backendSet .Name ,
574
- CreateBackendDetails : networkloadbalancer.CreateBackendDetails {
575
- IpAddress : common .String (instanceIp ),
576
- Port : common .Int (int (m .OCICluster .Spec .ControlPlaneEndpoint .Port )),
577
- Name : common .String (m .Name ()),
578
- },
579
- OpcRetryToken : ociutil .GetOPCRetryToken ("%s-%s" , "create-backend" , string (m .OCIMachine .UID )),
580
- })
581
- if err != nil {
582
- return err
583
- }
584
- m .OCIMachine .Status .CreateBackendWorkRequestId = * resp .OpcWorkRequestId
585
- logger .Info ("Add instance to NLB backend-set" , "WorkRequestId" , resp .OpcWorkRequestId )
586
- logger .Info ("Waiting for NLB work request to be complete" )
587
- _ , err = ociutil .AwaitNLBWorkRequest (ctx , m .NetworkLoadBalancerClient , resp .OpcWorkRequestId )
588
- if err != nil {
589
- return err
590
- }
591
- logger .Info ("NLB Backend addition work request is complete" )
560
+ // we always try to create the backend if it exists during a reconcile loop and wait for the work request
561
+ // to complete. If there is a work request in progress, in the rare case, CAPOCI pod restarts during the
562
+ // work request, the create backend call may throw an error which is ok, as reconcile will go into
563
+ // an exponential backoff
564
+ resp , err := m .NetworkLoadBalancerClient .CreateBackend (ctx , networkloadbalancer.CreateBackendRequest {
565
+ NetworkLoadBalancerId : loadbalancerId ,
566
+ BackendSetName : backendSet .Name ,
567
+ CreateBackendDetails : networkloadbalancer.CreateBackendDetails {
568
+ IpAddress : common .String (instanceIp ),
569
+ Port : common .Int (int (m .OCICluster .Spec .ControlPlaneEndpoint .Port )),
570
+ Name : common .String (m .Name ()),
571
+ },
572
+ OpcRetryToken : ociutil .GetOPCRetryToken ("%s-%s" , "create-backend" , string (m .OCIMachine .UID )),
573
+ })
574
+ if err != nil {
575
+ return err
576
+ }
577
+ m .OCIMachine .Status .CreateBackendWorkRequestId = * resp .OpcWorkRequestId
578
+ logger .Info ("Add instance to NLB backend-set" , "WorkRequestId" , resp .OpcWorkRequestId )
579
+ logger .Info ("Waiting for NLB work request to be complete" )
580
+ _ , err = ociutil .AwaitNLBWorkRequest (ctx , m .NetworkLoadBalancerClient , resp .OpcWorkRequestId )
581
+ if err != nil {
582
+ return err
592
583
}
584
+ logger .Info ("NLB Backend addition work request is complete" )
593
585
}
594
-
595
586
}
596
587
return nil
597
588
}
@@ -628,36 +619,31 @@ func (m *MachineScope) ReconcileDeleteInstanceOnLB(ctx context.Context) error {
628
619
backendName := instanceIp + ":" + strconv .Itoa (int (m .OCICluster .Spec .ControlPlaneEndpoint .Port ))
629
620
if m .containsLBBackend (backendSet , backendName ) {
630
621
logger := m .Logger .WithValues ("backend-set" , * backendSet .Name )
631
- workRequest := m .OCIMachine .Status .DeleteBackendWorkRequestId
632
- if workRequest != "" {
633
- _ , err = ociutil .AwaitLBWorkRequest (ctx , m .LoadBalancerClient , & workRequest )
634
- if err != nil {
635
- return err
636
- }
637
- } else {
638
- // in OCI CLI, the colon in the backend name is replaced by %3A
639
- // replace the colon in the backend name by %3A to avoid the error in PCA
640
- escapedBackendName := url .QueryEscape (backendName )
641
-
642
- resp , err := m .LoadBalancerClient .DeleteBackend (ctx , loadbalancer.DeleteBackendRequest {
643
- LoadBalancerId : loadbalancerId ,
644
- BackendSetName : backendSet .Name ,
645
- BackendName : common .String (escapedBackendName ),
646
- })
647
- if err != nil {
648
- logger .Error (err , "Delete instance from LB backend-set failed" ,
649
- "backendSetName" , * backendSet .Name ,
650
- "backendName" , escapedBackendName ,
651
- )
652
- return err
653
- }
654
- m .OCIMachine .Status .DeleteBackendWorkRequestId = * resp .OpcWorkRequestId
655
- logger .Info ("Delete instance from LB backend-set" , "WorkRequestId" , resp .OpcWorkRequestId )
656
- logger .Info ("Waiting for LB work request to be complete" )
657
- _ , err = ociutil .AwaitLBWorkRequest (ctx , m .LoadBalancerClient , resp .OpcWorkRequestId )
658
- if err != nil {
659
- return err
660
- }
622
+ // in OCI CLI, the colon in the backend name is replaced by %3A
623
+ // replace the colon in the backend name by %3A to avoid the error in PCA
624
+ escapedBackendName := url .QueryEscape (backendName )
625
+ // we always try to delete the backend if it exists during a reconcile loop and wait for the work request
626
+ // to complete. If there is a work request in progress, in the rare case, CAPOCI pod restarts during the
627
+ // work request, the delete backend call may throw an error which is ok, as reconcile will go into
628
+ // an exponential backoff
629
+ resp , err := m .LoadBalancerClient .DeleteBackend (ctx , loadbalancer.DeleteBackendRequest {
630
+ LoadBalancerId : loadbalancerId ,
631
+ BackendSetName : backendSet .Name ,
632
+ BackendName : common .String (escapedBackendName ),
633
+ })
634
+ if err != nil {
635
+ logger .Error (err , "Delete instance from LB backend-set failed" ,
636
+ "backendSetName" , * backendSet .Name ,
637
+ "backendName" , escapedBackendName ,
638
+ )
639
+ return err
640
+ }
641
+ m .OCIMachine .Status .DeleteBackendWorkRequestId = * resp .OpcWorkRequestId
642
+ logger .Info ("Delete instance from LB backend-set" , "WorkRequestId" , resp .OpcWorkRequestId )
643
+ logger .Info ("Waiting for LB work request to be complete" )
644
+ _ , err = ociutil .AwaitLBWorkRequest (ctx , m .LoadBalancerClient , resp .OpcWorkRequestId )
645
+ if err != nil {
646
+ return err
661
647
}
662
648
logger .Info ("LB Backend addition work request is complete" )
663
649
}
@@ -671,28 +657,24 @@ func (m *MachineScope) ReconcileDeleteInstanceOnLB(ctx context.Context) error {
671
657
backendSet := lb .BackendSets [APIServerLBBackendSetName ]
672
658
if m .containsNLBBackend (backendSet , m .Name ()) {
673
659
logger := m .Logger .WithValues ("backend-set" , * backendSet .Name )
674
- workRequest := m .OCIMachine .Status .DeleteBackendWorkRequestId
675
- if workRequest != "" {
676
- _ , err = ociutil .AwaitNLBWorkRequest (ctx , m .NetworkLoadBalancerClient , & workRequest )
677
- if err != nil {
678
- return err
679
- }
680
- } else {
681
- resp , err := m .NetworkLoadBalancerClient .DeleteBackend (ctx , networkloadbalancer.DeleteBackendRequest {
682
- NetworkLoadBalancerId : loadbalancerId ,
683
- BackendSetName : backendSet .Name ,
684
- BackendName : common .String (m .Name ()),
685
- })
686
- if err != nil {
687
- return err
688
- }
689
- m .OCIMachine .Status .DeleteBackendWorkRequestId = * resp .OpcWorkRequestId
690
- logger .Info ("Delete instance from LB backend-set" , "WorkRequestId" , resp .OpcWorkRequestId )
691
- logger .Info ("Waiting for LB work request to be complete" )
692
- _ , err = ociutil .AwaitNLBWorkRequest (ctx , m .NetworkLoadBalancerClient , resp .OpcWorkRequestId )
693
- if err != nil {
694
- return err
695
- }
660
+ // we always try to delete the backend if it exists during a reconcile loop and wait for the work request
661
+ // to complete. If there is a work request in progress, in the rare case, CAPOCI pod restarts during the
662
+ // work request, the delete backend call may throw an error which is ok, as reconcile will go into
663
+ // an exponential backoff
664
+ resp , err := m .NetworkLoadBalancerClient .DeleteBackend (ctx , networkloadbalancer.DeleteBackendRequest {
665
+ NetworkLoadBalancerId : loadbalancerId ,
666
+ BackendSetName : backendSet .Name ,
667
+ BackendName : common .String (m .Name ()),
668
+ })
669
+ if err != nil {
670
+ return err
671
+ }
672
+ m .OCIMachine .Status .DeleteBackendWorkRequestId = * resp .OpcWorkRequestId
673
+ logger .Info ("Delete instance from LB backend-set" , "WorkRequestId" , resp .OpcWorkRequestId )
674
+ logger .Info ("Waiting for LB work request to be complete" )
675
+ _ , err = ociutil .AwaitNLBWorkRequest (ctx , m .NetworkLoadBalancerClient , resp .OpcWorkRequestId )
676
+ if err != nil {
677
+ return err
696
678
}
697
679
}
698
680
}
0 commit comments