Skip to content

Commit a2acda3

Browse files
authored
Merge pull request #925 from Daimler/floating-ip-desc
✨ add description and tag to floating ips
2 parents 0fe0316 + 011ff9c commit a2acda3

File tree

4 files changed

+19
-5
lines changed

4 files changed

+19
-5
lines changed

controllers/openstackcluster_controller.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,8 @@ func reconcileBastion(log logr.Logger, osProviderClient *gophercloud.ProviderCli
314314
if err != nil {
315315
return err
316316
}
317-
fp, err := networkingService.GetOrCreateFloatingIP(openStackCluster, openStackCluster.Spec.Bastion.Instance.FloatingIP)
317+
clusterName := fmt.Sprintf("%s-%s", cluster.Namespace, cluster.Name)
318+
fp, err := networkingService.GetOrCreateFloatingIP(openStackCluster, clusterName, openStackCluster.Spec.Bastion.Instance.FloatingIP)
318319
if err != nil {
319320
return errors.Errorf("failed to get or create floating IP for bastion: %v", err)
320321
}
@@ -403,7 +404,7 @@ func reconcileNetworkComponents(log logr.Logger, osProviderClient *gophercloud.P
403404
} else {
404405
port = int32(openStackCluster.Spec.APIServerPort)
405406
}
406-
fp, err := networkingService.GetOrCreateFloatingIP(openStackCluster, openStackCluster.Spec.APIServerFloatingIP)
407+
fp, err := networkingService.GetOrCreateFloatingIP(openStackCluster, clusterName, openStackCluster.Spec.APIServerFloatingIP)
407408
if err != nil {
408409
return errors.Errorf("Floating IP cannot be got or created: %v", err)
409410
}

controllers/openstackmachine_controller.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ func (r *OpenStackMachineReconciler) reconcileNormal(ctx context.Context, logger
348348
return ctrl.Result{}, nil
349349
}
350350
} else if util.IsControlPlaneMachine(machine) {
351-
fp, err := networkingService.GetOrCreateFloatingIP(openStackCluster, openStackCluster.Spec.ControlPlaneEndpoint.Host)
351+
fp, err := networkingService.GetOrCreateFloatingIP(openStackCluster, clusterName, openStackCluster.Spec.ControlPlaneEndpoint.Host)
352352
if err != nil {
353353
handleUpdateMachineError(logger, openStackMachine, errors.Errorf("Floating IP cannot be got or created: %v", err))
354354
return ctrl.Result{}, nil

pkg/cloud/services/loadbalancer/loadbalancer.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ func (s *Service) ReconcileLoadBalancer(openStackCluster *infrav1.OpenStackClust
5353
if openStackCluster.Spec.APIServerFloatingIP != "" {
5454
floatingIPAddress = openStackCluster.Spec.APIServerFloatingIP
5555
}
56-
fp, err := s.networkingService.GetOrCreateFloatingIP(openStackCluster, floatingIPAddress)
56+
fp, err := s.networkingService.GetOrCreateFloatingIP(openStackCluster, clusterName, floatingIPAddress)
5757
if err != nil {
5858
return err
5959
}

pkg/cloud/services/networking/floatingip.go

+14-1
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,17 @@ package networking
1919
import (
2020
"time"
2121

22+
"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/attributestags"
2223
"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/floatingips"
2324
"k8s.io/apimachinery/pkg/util/wait"
2425

2526
infrav1 "sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha4"
2627
"sigs.k8s.io/cluster-api-provider-openstack/pkg/metrics"
2728
"sigs.k8s.io/cluster-api-provider-openstack/pkg/record"
29+
"sigs.k8s.io/cluster-api-provider-openstack/pkg/utils/names"
2830
)
2931

30-
func (s *Service) GetOrCreateFloatingIP(openStackCluster *infrav1.OpenStackCluster, ip string) (*floatingips.FloatingIP, error) {
32+
func (s *Service) GetOrCreateFloatingIP(openStackCluster *infrav1.OpenStackCluster, clusterName, ip string) (*floatingips.FloatingIP, error) {
3133
var fp *floatingips.FloatingIP
3234
var err error
3335
var fpCreateOpts floatingips.CreateOpts
@@ -45,6 +47,7 @@ func (s *Service) GetOrCreateFloatingIP(openStackCluster *infrav1.OpenStackClust
4547
}
4648

4749
fpCreateOpts.FloatingNetworkID = openStackCluster.Status.ExternalNetwork.ID
50+
fpCreateOpts.Description = names.GetDescription(clusterName)
4851

4952
mc := metrics.NewMetricPrometheusContext("floating_ip", "create")
5053
fp, err = floatingips.Create(s.client, fpCreateOpts).Extract()
@@ -53,6 +56,16 @@ func (s *Service) GetOrCreateFloatingIP(openStackCluster *infrav1.OpenStackClust
5356
return nil, err
5457
}
5558

59+
if len(openStackCluster.Spec.Tags) > 0 {
60+
mc := metrics.NewMetricPrometheusContext("floating_ip", "update")
61+
_, err = attributestags.ReplaceAll(s.client, "floatingips", fp.ID, attributestags.ReplaceAllOpts{
62+
Tags: openStackCluster.Spec.Tags,
63+
}).Extract()
64+
if mc.ObserveRequest(err) != nil {
65+
return nil, err
66+
}
67+
}
68+
5669
record.Eventf(openStackCluster, "SuccessfulCreateFloatingIP", "Created floating IP %s with id %s", fp.FloatingIP, fp.ID)
5770
return fp, nil
5871
}

0 commit comments

Comments
 (0)