@@ -29,7 +29,6 @@ import (
29
29
"github.com/gophercloud/gophercloud/openstack/loadbalancer/v2/loadbalancers"
30
30
"github.com/gophercloud/gophercloud/openstack/loadbalancer/v2/monitors"
31
31
"github.com/gophercloud/gophercloud/openstack/loadbalancer/v2/pools"
32
- "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/floatingips"
33
32
"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/security/groups"
34
33
"github.com/gophercloud/gophercloud/openstack/networking/v2/ports"
35
34
infrav1 "sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha3"
@@ -72,19 +71,11 @@ func (s *Service) ReconcileLoadBalancer(clusterName string, openStackCluster *in
72
71
}
73
72
}
74
73
75
- fp , err := getOrCreateFloatingIP ( s . networkingClient , openStackCluster , openStackCluster .Spec .ControlPlaneEndpoint .Host )
74
+ fp , err := s . networkingService . GetOrCreateFloatingIP ( openStackCluster , openStackCluster .Spec .ControlPlaneEndpoint .Host )
76
75
if err != nil {
77
76
return err
78
77
}
79
- s .logger .Info ("Associating floating IP" , "IP" , fp .FloatingIP )
80
- fpUpdateOpts := & floatingips.UpdateOpts {
81
- PortID : & lb .VipPortID ,
82
- }
83
- fp , err = floatingips .Update (s .networkingClient , fp .ID , fpUpdateOpts ).Extract ()
84
- if err != nil {
85
- return fmt .Errorf ("error associating floating IP: %s" , err )
86
- }
87
- err = waitForFloatingIP (s .logger , s .networkingClient , fp .ID , "ACTIVE" )
78
+ err = s .networkingService .AssociateFloatingIP (fp , lb .VipPortID )
88
79
if err != nil {
89
80
return err
90
81
}
@@ -182,7 +173,7 @@ func (s *Service) assignNeutronLbaasAPISecGroup(clusterName string, lb *loadbala
182
173
listOpts := groups.ListOpts {
183
174
Name : neutronLbaasSecGroupName ,
184
175
}
185
- allPages , err := groups .List (s .networkingClient , listOpts ).AllPages ()
176
+ allPages , err := groups .List (s .loadbalancerClient , listOpts ).AllPages ()
186
177
if err != nil {
187
178
return err
188
179
}
@@ -200,7 +191,7 @@ func (s *Service) assignNeutronLbaasAPISecGroup(clusterName string, lb *loadbala
200
191
SecurityGroups : & []string {neutronLbaasGroups [0 ].ID },
201
192
}
202
193
203
- _ , err = ports .Update (s .networkingClient , lb .VipPortID , updateOpts ).Extract ()
194
+ _ , err = ports .Update (s .loadbalancerClient , lb .VipPortID , updateOpts ).Extract ()
204
195
if err != nil {
205
196
return err
206
197
}
@@ -317,10 +308,6 @@ func (s *Service) DeleteLoadBalancer(loadBalancerName string, openStackCluster *
317
308
return fmt .Errorf ("error deleting loadbalancer: %s" , err )
318
309
}
319
310
320
- // floating ip
321
- // TODO: need delete floating IP if it's created when doing the cluster provisioning
322
- // but keep the floating ips if it's original exist (probably should store it in the
323
- // Cluster status if the floating ip has been created by us)
324
311
return nil
325
312
}
326
313
@@ -484,47 +471,6 @@ func checkIfLbExists(client *gophercloud.ServiceClient, name string) (*loadbalan
484
471
return & lbList [0 ], nil
485
472
}
486
473
487
- func getOrCreateFloatingIP (client * gophercloud.ServiceClient , openStackCluster * infrav1.OpenStackCluster , ip string ) (* floatingips.FloatingIP , error ) {
488
- var fp * floatingips.FloatingIP
489
- var err error
490
- if ip != "" {
491
- fp , err = checkIfFloatingIPExists (client , ip )
492
- if err != nil {
493
- return nil , err
494
- }
495
- }
496
- if fp == nil {
497
- fpCreateOpts := & floatingips.CreateOpts {
498
- FloatingNetworkID : openStackCluster .Status .ExternalNetwork .ID ,
499
- }
500
- if ip != "" {
501
- fpCreateOpts .FloatingIP = ip
502
- }
503
- fp , err = floatingips .Create (client , fpCreateOpts ).Extract ()
504
- if err != nil {
505
- return nil , fmt .Errorf ("error creating floating IP: %s" , err )
506
- }
507
- record .Eventf (openStackCluster , "SuccessfulCreateFloatingIP" , "Created floating IP %s with id %s" , fp .FloatingIP , fp .ID )
508
-
509
- }
510
- return fp , nil
511
- }
512
-
513
- func checkIfFloatingIPExists (client * gophercloud.ServiceClient , ip string ) (* floatingips.FloatingIP , error ) {
514
- allPages , err := floatingips .List (client , floatingips.ListOpts {FloatingIP : ip }).AllPages ()
515
- if err != nil {
516
- return nil , err
517
- }
518
- fpList , err := floatingips .ExtractFloatingIPs (allPages )
519
- if err != nil {
520
- return nil , err
521
- }
522
- if len (fpList ) == 0 {
523
- return nil , nil
524
- }
525
- return & fpList [0 ], nil
526
- }
527
-
528
474
func checkIfListenerExists (client * gophercloud.ServiceClient , name string ) (* listeners.Listener , error ) {
529
475
allPages , err := listeners .List (client , listeners.ListOpts {Name : name }).AllPages ()
530
476
if err != nil {
@@ -604,17 +550,6 @@ func waitForLoadBalancerActive(logger logr.Logger, client *gophercloud.ServiceCl
604
550
})
605
551
}
606
552
607
- func waitForFloatingIP (logger logr.Logger , client * gophercloud.ServiceClient , id , target string ) error {
608
- logger .Info ("Waiting for floatingIP" , "id" , id , "targetStatus" , target )
609
- return wait .ExponentialBackoff (backoff , func () (bool , error ) {
610
- fp , err := floatingips .Get (client , id ).Extract ()
611
- if err != nil {
612
- return false , err
613
- }
614
- return fp .Status == target , nil
615
- })
616
- }
617
-
618
553
func waitForListener (logger logr.Logger , client * gophercloud.ServiceClient , id , target string ) error {
619
554
logger .Info ("Waiting for listener" , "id" , id , "targetStatus" , target )
620
555
return wait .ExponentialBackoff (backoff , func () (bool , error ) {
0 commit comments