Skip to content

Commit 06364a8

Browse files
restructure GetOrCreateFloatingIP, unify notation
Unify notation of load balancer, rename variables that cover pkg name. Update mover.md toc. Signed-off-by: Sean Schneeweiss <[email protected]>
1 parent 74ecd86 commit 06364a8

File tree

6 files changed

+54
-56
lines changed

6 files changed

+54
-56
lines changed

docs/mover.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@
33
**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)*
44

55
- [Pre-condition](#pre-condition)
6-
- [Install openstack providers into target cluster](#install-openstack-providers-into-target-cluster)
7-
- [Move objects in `bootstrap` cluster into `target` cluster.](#move-objects-in-bootstrap-cluster-into-target-cluster)
8-
- [Create secret in `target` cluster](#create-secret-in-target-cluster)
6+
- [Install OpenStack Cluster API provider into target cluster](#install-openstack-cluster-api-provider-into-target-cluster)
7+
- [Move objects from `bootstrap` cluster into `target` cluster.](#move-objects-from-bootstrap-cluster-into-target-cluster)
98
- [Check cluster status](#check-cluster-status)
109

1110
<!-- END doctoc generated TOC please keep comment here to allow auto update -->

pkg/cloud/services/compute/instance.go

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -142,10 +142,9 @@ func (s *Service) InstanceCreate(openStackCluster *infrav1.OpenStackCluster, mac
142142

143143
out, err := createInstance(s, clusterName, input)
144144
if err != nil {
145-
record.Warnf(openStackMachine, "FailedCreateServer", "Failed to create server %s: %v", out.Name, err)
145+
record.Warnf(openStackMachine, "FailedCreateServer", "Failed to create server %s: %v", input.Name, err)
146146
return nil, err
147147
}
148-
149148
record.Eventf(openStackMachine, "SuccessfulCreateServer", "Created server %s with id %s", out.Name, out.ID)
150149
return out, nil
151150
}
@@ -158,16 +157,16 @@ func createInstance(is *Service, clusterName string, i *infrav1.Instance) (*infr
158157
}
159158

160159
accessIPv4 := ""
161-
nets := i.Networks
160+
networkList := i.Networks
162161
portsList := []servers.Network{}
163-
for _, net := range *nets {
164-
net := net
165-
if net.ID == "" {
162+
for _, network := range *networkList {
163+
network := network
164+
if network.ID == "" {
166165
return nil, fmt.Errorf("no network was found or provided. Please check your machine configuration and try again")
167166
}
168167
allPages, err := ports.List(is.networkClient, ports.ListOpts{
169168
Name: i.Name,
170-
NetworkID: net.ID,
169+
NetworkID: network.ID,
171170
}).AllPages()
172171
if err != nil {
173172
return nil, fmt.Errorf("searching for existing port for server: %v", err)
@@ -179,7 +178,7 @@ func createInstance(is *Service, clusterName string, i *infrav1.Instance) (*infr
179178
var port ports.Port
180179
if len(portList) == 0 {
181180
// create server port
182-
port, err = createPort(is, clusterName, i.Name, &net, i.SecurityGroups)
181+
port, err = createPort(is, clusterName, i.Name, &network, i.SecurityGroups)
183182
if err != nil {
184183
return nil, fmt.Errorf("failed to create port err: %v", err)
185184
}
@@ -331,12 +330,12 @@ func GetIPFromInstance(v servers.Server) (map[string]string, error) {
331330
if err != nil {
332331
return nil, fmt.Errorf("extract IP from instance err: %v", err)
333332
}
334-
var networks []interface{}
335-
err = json.Unmarshal(list, &networks)
333+
var networkList []interface{}
334+
err = json.Unmarshal(list, &networkList)
336335
if err != nil {
337336
return nil, fmt.Errorf("extract IP from instance err: %v", err)
338337
}
339-
for _, network := range networks {
338+
for _, network := range networkList {
340339
var netInterface networkInterface
341340
b, _ := json.Marshal(network)
342341
err = json.Unmarshal(b, &netInterface)
@@ -444,22 +443,22 @@ func getSecurityGroups(is *Service, securityGroupParams []infrav1.SecurityGroupP
444443

445444
func getServerNetworks(networkClient *gophercloud.ServiceClient, networkParams []infrav1.NetworkParam) ([]infrav1.Network, error) {
446445
var nets []infrav1.Network
447-
for _, net := range networkParams {
448-
opts := networks.ListOpts(net.Filter)
449-
opts.ID = net.UUID
446+
for _, networkParam := range networkParams {
447+
opts := networks.ListOpts(networkParam.Filter)
448+
opts.ID = networkParam.UUID
450449
ids, err := networking.GetNetworkIDsByFilter(networkClient, &opts)
451450
if err != nil {
452451
return nil, err
453452
}
454453
for _, netID := range ids {
455-
if net.Subnets == nil {
454+
if networkParam.Subnets == nil {
456455
nets = append(nets, infrav1.Network{
457456
ID: netID,
458457
})
459458
continue
460459
}
461460

462-
for _, subnet := range net.Subnets {
461+
for _, subnet := range networkParam.Subnets {
463462
subnetOpts := subnets.ListOpts(subnet.Filter)
464463
subnetOpts.ID = subnet.UUID
465464
subnetOpts.NetworkID = netID

pkg/cloud/services/loadbalancer/loadbalancer.go

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,15 @@ const (
4242

4343
func (s *Service) ReconcileLoadBalancer(openStackCluster *infrav1.OpenStackCluster, clusterName string) error {
4444
loadBalancerName := getLoadBalancerName(clusterName)
45-
s.logger.Info("Reconciling loadbalancer", "name", loadBalancerName)
45+
s.logger.Info("Reconciling load balancer", "name", loadBalancerName)
4646

4747
// lb
4848
lb, err := checkIfLbExists(s.loadbalancerClient, loadBalancerName)
4949
if err != nil {
5050
return err
5151
}
5252
if lb == nil {
53-
s.logger.Info("Creating loadbalancer", "name", loadBalancerName)
53+
s.logger.Info("Creating load balancer", "name", loadBalancerName)
5454
lbCreateOpts := loadbalancers.CreateOpts{
5555
Name: loadBalancerName,
5656
VipSubnetID: openStackCluster.Status.Network.Subnet.ID,
@@ -67,11 +67,11 @@ func (s *Service) ReconcileLoadBalancer(openStackCluster *infrav1.OpenStackClust
6767
return err
6868
}
6969

70-
fip := openStackCluster.Spec.ControlPlaneEndpoint.Host
70+
floatingIPAddress := openStackCluster.Spec.ControlPlaneEndpoint.Host
7171
if openStackCluster.Spec.APIServerFloatingIP != "" {
72-
fip = openStackCluster.Spec.APIServerFloatingIP
72+
floatingIPAddress = openStackCluster.Spec.APIServerFloatingIP
7373
}
74-
fp, err := s.networkingService.GetOrCreateFloatingIP(openStackCluster, fip)
74+
fp, err := s.networkingService.GetOrCreateFloatingIP(openStackCluster, floatingIPAddress)
7575
if err != nil {
7676
return err
7777
}
@@ -90,7 +90,7 @@ func (s *Service) ReconcileLoadBalancer(openStackCluster *infrav1.OpenStackClust
9090
return err
9191
}
9292
if listener == nil {
93-
s.logger.Info("Creating lb listener", "name", lbPortObjectsName)
93+
s.logger.Info("Creating load balancer listener", "name", lbPortObjectsName)
9494
listenerCreateOpts := listeners.CreateOpts{
9595
Name: lbPortObjectsName,
9696
Protocol: "TCP",
@@ -116,7 +116,7 @@ func (s *Service) ReconcileLoadBalancer(openStackCluster *infrav1.OpenStackClust
116116
return err
117117
}
118118
if pool == nil {
119-
s.logger.Info("Creating lb pool", "name", lbPortObjectsName)
119+
s.logger.Info("Creating load balancer pool", "name", lbPortObjectsName)
120120
poolCreateOpts := pools.CreateOpts{
121121
Name: lbPortObjectsName,
122122
Protocol: "TCP",
@@ -138,7 +138,7 @@ func (s *Service) ReconcileLoadBalancer(openStackCluster *infrav1.OpenStackClust
138138
return err
139139
}
140140
if monitor == nil {
141-
s.logger.Info("Creating lb monitor", "name", lbPortObjectsName)
141+
s.logger.Info("Creating load balancer monitor", "name", lbPortObjectsName)
142142
monitorCreateOpts := monitors.CreateOpts{
143143
Name: lbPortObjectsName,
144144
PoolID: pool.ID,
@@ -182,7 +182,7 @@ func (s *Service) ReconcileLoadBalancerMember(openStackCluster *infrav1.OpenStac
182182
}
183183

184184
loadBalancerName := getLoadBalancerName(clusterName)
185-
s.logger.Info("Reconciling loadbalancer", "name", loadBalancerName)
185+
s.logger.Info("Reconciling load balancer", "name", loadBalancerName)
186186

187187
lbID := openStackCluster.Status.Network.APIServerLoadBalancer.ID
188188
portList := []int{int(openStackCluster.Spec.ControlPlaneEndpoint.Port)}
@@ -196,7 +196,7 @@ func (s *Service) ReconcileLoadBalancerMember(openStackCluster *infrav1.OpenStac
196196
return err
197197
}
198198
if pool == nil {
199-
return errors.New("loadbalancer pool does not exist yet")
199+
return errors.New("load balancer pool does not exist yet")
200200
}
201201

202202
lbMember, err := checkIfLbMemberExists(s.loadbalancerClient, pool.ID, name)
@@ -211,7 +211,7 @@ func (s *Service) ReconcileLoadBalancerMember(openStackCluster *infrav1.OpenStac
211211
return nil
212212
}
213213

214-
s.logger.Info("Deleting lb member (because the IP of the machine changed)", "name", name)
214+
s.logger.Info("Deleting load balancer member (because the IP of the machine changed)", "name", name)
215215

216216
// lb member changed so let's delete it so we can create it again with the correct IP
217217
err = waitForLoadBalancerActive(s.logger, s.loadbalancerClient, lbID)
@@ -228,7 +228,7 @@ func (s *Service) ReconcileLoadBalancerMember(openStackCluster *infrav1.OpenStac
228228
}
229229
}
230230

231-
s.logger.Info("Creating lb member", "name", name)
231+
s.logger.Info("Creating load balancer member", "name", name)
232232

233233
// if we got to this point we should either create or re-create the lb member
234234
lbMemberOpts := pools.CreateMemberOpts{
@@ -263,7 +263,7 @@ func (s *Service) DeleteLoadBalancer(openStackCluster *infrav1.OpenStackCluster,
263263
deleteOpts := loadbalancers.DeleteOpts{
264264
Cascade: true,
265265
}
266-
s.logger.Info("Deleting loadbalancer", "name", loadBalancerName)
266+
s.logger.Info("Deleting load balancer", "name", loadBalancerName, "cascade", deleteOpts.Cascade)
267267
err = loadbalancers.Delete(s.loadbalancerClient, lb.ID, deleteOpts).ExtractErr()
268268
if err != nil {
269269
record.Warnf(openStackCluster, "FailedDeleteLoadBalancer", "Failed to delete load balancer %s with id %s: %v", lb.Name, lb.ID, err)
@@ -280,7 +280,7 @@ func (s *Service) DeleteLoadBalancerMember(openStackCluster *infrav1.OpenStackCl
280280
}
281281

282282
loadBalancerName := getLoadBalancerName(clusterName)
283-
s.logger.Info("Reconciling loadbalancer", "name", loadBalancerName)
283+
s.logger.Info("Reconciling load balancer", "name", loadBalancerName)
284284

285285
lbID := openStackCluster.Status.Network.APIServerLoadBalancer.ID
286286

@@ -295,7 +295,7 @@ func (s *Service) DeleteLoadBalancerMember(openStackCluster *infrav1.OpenStackCl
295295
return err
296296
}
297297
if pool == nil {
298-
s.logger.Info("Pool does not exist", "name", lbPortObjectsName)
298+
s.logger.Info("Load balancer pool does not exist", "name", lbPortObjectsName)
299299
continue
300300
}
301301

@@ -313,7 +313,7 @@ func (s *Service) DeleteLoadBalancerMember(openStackCluster *infrav1.OpenStackCl
313313
}
314314
err = pools.DeleteMember(s.loadbalancerClient, pool.ID, lbMember.ID).ExtractErr()
315315
if err != nil {
316-
return fmt.Errorf("error deleting lbmember: %s", err)
316+
return fmt.Errorf("error deleting load balancer member: %s", err)
317317
}
318318
err = waitForLoadBalancerActive(s.logger, s.loadbalancerClient, lbID)
319319
if err != nil {
@@ -412,7 +412,7 @@ var backoff = wait.Backoff{
412412

413413
// Possible LoadBalancer states are documented here: https://developer.openstack.org/api-ref/network/v2/?expanded=show-load-balancer-status-tree-detail#load-balancer-statuses
414414
func waitForLoadBalancerActive(logger logr.Logger, client *gophercloud.ServiceClient, id string) error {
415-
logger.Info("Waiting for loadbalancer", "id", id, "targetStatus", "ACTIVE")
415+
logger.Info("Waiting for load balancer", "id", id, "targetStatus", "ACTIVE")
416416
return wait.ExponentialBackoff(backoff, func() (bool, error) {
417417
lb, err := loadbalancers.Get(client, id).Extract()
418418
if err != nil {
@@ -423,7 +423,7 @@ func waitForLoadBalancerActive(logger logr.Logger, client *gophercloud.ServiceCl
423423
}
424424

425425
func waitForListener(logger logr.Logger, client *gophercloud.ServiceClient, id, target string) error {
426-
logger.Info("Waiting for listener", "id", id, "targetStatus", target)
426+
logger.Info("Waiting for load balancer listener", "id", id, "targetStatus", target)
427427
return wait.ExponentialBackoff(backoff, func() (bool, error) {
428428
_, err := listeners.Get(client, id).Extract()
429429
if err != nil {

pkg/cloud/services/loadbalancer/service.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func NewService(client *gophercloud.ProviderClient, clientOpts *clientconfig.Cli
4040
Region: clientOpts.RegionName,
4141
})
4242
if err != nil {
43-
return nil, fmt.Errorf("failed to create loadbalancer service client: %v", err)
43+
return nil, fmt.Errorf("failed to create load balancer service client: %v", err)
4444
}
4545

4646
networkingService, err := networking.NewService(client, clientOpts, logger)

pkg/cloud/services/networking/floatingip.go

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -30,28 +30,28 @@ import (
3030
func (s *Service) GetOrCreateFloatingIP(openStackCluster *infrav1.OpenStackCluster, ip string) (*floatingips.FloatingIP, error) {
3131
var fp *floatingips.FloatingIP
3232
var err error
33+
var fpCreateOpts floatingips.CreateOpts
34+
3335
if ip != "" {
3436
fp, err = checkIfFloatingIPExists(s.client, ip)
3537
if err != nil {
3638
return nil, err
3739
}
38-
}
39-
if fp == nil {
40-
fpCreateOpts := &floatingips.CreateOpts{
41-
FloatingNetworkID: openStackCluster.Status.ExternalNetwork.ID,
42-
}
43-
if ip != "" {
44-
// only admin can add ip address
45-
fpCreateOpts.FloatingIP = ip
46-
}
47-
fp, err = floatingips.Create(s.client, fpCreateOpts).Extract()
48-
if err != nil {
49-
record.Warnf(openStackCluster, "FailedCreateFloatingIP", "Failed to create floating IP %s: %v", fp.FloatingIP, err)
50-
return nil, err
40+
if fp != nil {
41+
return fp, nil
5142
}
52-
record.Eventf(openStackCluster, "SuccessfulCreateFloatingIP", "Created floating IP %s with id %s", fp.FloatingIP, fp.ID)
43+
// only admin can add ip address
44+
fpCreateOpts.FloatingIP = ip
45+
}
46+
47+
fpCreateOpts.FloatingNetworkID = openStackCluster.Status.ExternalNetwork.ID
5348

49+
fp, err = floatingips.Create(s.client, fpCreateOpts).Extract()
50+
if err != nil {
51+
record.Warnf(openStackCluster, "FailedCreateFloatingIP", "Failed to create floating IP %s: %v", ip, err)
52+
return nil, err
5453
}
54+
record.Eventf(openStackCluster, "SuccessfulCreateFloatingIP", "Created floating IP %s with id %s", ip, fp.ID)
5555
return fp, nil
5656
}
5757

@@ -93,18 +93,18 @@ var backoff = wait.Backoff{
9393
}
9494

9595
func (s *Service) AssociateFloatingIP(openStackCluster *infrav1.OpenStackCluster, fp *floatingips.FloatingIP, portID string) error {
96-
s.logger.Info("Associating floating IP", "IP", fp.FloatingIP)
96+
s.logger.Info("Associating floating IP", "id", fp.ID, "ip", fp.FloatingIP)
9797
fpUpdateOpts := &floatingips.UpdateOpts{
9898
PortID: &portID,
9999
}
100-
fp, err := floatingips.Update(s.client, fp.ID, fpUpdateOpts).Extract()
100+
_, err := floatingips.Update(s.client, fp.ID, fpUpdateOpts).Extract()
101101
if err != nil {
102102
record.Warnf(openStackCluster, "FailedAssociateFloatingIP", "Failed to associate floating IP %s with port %s: %v", fp.FloatingIP, portID, err)
103103
return err
104104
}
105105
record.Eventf(openStackCluster, "SuccessfulAssociateFloatingIP", "Associated floating IP %s with port %s", fp.FloatingIP, portID)
106106

107-
s.logger.Info("Waiting for floatingIP", "id", fp.ID, "targetStatus", "ACTIVE")
107+
s.logger.Info("Waiting for floating IP", "id", fp.ID, "targetStatus", "ACTIVE")
108108

109109
return wait.ExponentialBackoff(backoff, func() (bool, error) {
110110
fp, err := floatingips.Get(s.client, fp.ID).Extract()

test/e2e/suites/e2e/e2e_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ var _ = Describe("e2e tests", func() {
165165
configCluster.Flavor = shared.FlavorDefault
166166
_ = createCluster(ctx, configCluster, specName)
167167

168-
shared.Byf("Creating Machine Deployment with invalid subnet ID")
168+
shared.Byf("Creating Machine Deployment with invalid subnet id")
169169
md1Name := clusterName + "-md-1"
170170
framework.CreateMachineDeployment(ctx, framework.CreateMachineDeploymentInput{
171171
Creator: e2eCtx.Environment.BootstrapClusterProxy.GetClient(),

0 commit comments

Comments
 (0)