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