Skip to content

Commit 1b0555f

Browse files
authored
Fixes pause of IPAddressClaim (#28)
* Fixes pause of IPAddressClaim * Use root cluster name
1 parent 0b40010 commit 1b0555f

File tree

3 files changed

+23
-12
lines changed

3 files changed

+23
-12
lines changed

internal/service/vmservice/ip.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ func handleIPAddressForDevice(ctx context.Context, machineScope *scope.MachineSc
9191
}
9292
machineScope.Logger.V(4).Info("IPAddress not found, creating it.", "device", device)
9393
// IpAddress not yet created.
94-
err = machineScope.IPAMHelper.CreateIPAddressClaim(ctx, machineScope.ProxmoxMachine, device, format, ipamRef)
94+
err = machineScope.IPAMHelper.CreateIPAddressClaim(ctx, machineScope.ProxmoxMachine, device, format, machineScope.InfraCluster.Cluster.GetName(), ipamRef)
9595
if err != nil {
9696
return "", errors.Wrapf(err, "unable to create Ip address claim for machine %s", machineScope.Name())
9797
}

pkg/kubernetes/ipam/ipam.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ func (h *Helper) GetGlobalInClusterIPPool(ctx context.Context, ref *corev1.Typed
152152
}
153153

154154
// CreateIPAddressClaim creates an IPAddressClaim for a given object.
155-
func (h *Helper) CreateIPAddressClaim(ctx context.Context, owner client.Object, device, format string, ref *corev1.TypedLocalObjectReference) error {
155+
func (h *Helper) CreateIPAddressClaim(ctx context.Context, owner client.Object, device, format, clusterNameLabel string, ref *corev1.TypedLocalObjectReference) error {
156156
var gvk schema.GroupVersionKind
157157
key := client.ObjectKey{
158158
Namespace: owner.GetNamespace(),
@@ -200,15 +200,15 @@ func (h *Helper) CreateIPAddressClaim(ctx context.Context, owner client.Object,
200200

201201
// Ensures that the claim has a reference to the cluster of the VM to
202202
// support pausing reconciliation.
203-
annotations := map[string]string{
204-
clusterv1.ClusterNameAnnotation: h.cluster.GetName(),
203+
labels := map[string]string{
204+
clusterv1.ClusterNameLabel: clusterNameLabel,
205205
}
206206

207207
desired := &ipamv1.IPAddressClaim{
208208
ObjectMeta: metav1.ObjectMeta{
209-
Name: fmt.Sprintf("%s-%s-%s", owner.GetName(), device, suffix),
210-
Namespace: owner.GetNamespace(),
211-
Annotations: annotations,
209+
Name: fmt.Sprintf("%s-%s-%s", owner.GetName(), device, suffix),
210+
Namespace: owner.GetNamespace(),
211+
Labels: labels,
212212
},
213213
Spec: ipamv1.IPAddressClaimSpec{
214214
PoolRef: corev1.TypedLocalObjectReference{

pkg/kubernetes/ipam/ipam_test.go

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package ipam
1818

1919
import (
2020
"context"
21+
"fmt"
2122
"testing"
2223

2324
"github.com/stretchr/testify/require"
@@ -234,9 +235,19 @@ func (s *IPAMTestSuite) Test_CreateIPAddressClaim() {
234235

235236
device := "net0"
236237

237-
err := s.helper.CreateIPAddressClaim(s.ctx, getCluster(), device, infrav1.IPV4Format, nil)
238+
rootClusterName := "test"
239+
err := s.helper.CreateIPAddressClaim(s.ctx, getCluster(), device, infrav1.IPV4Format, rootClusterName, nil)
238240
s.NoError(err)
239241

242+
// Ensure cluster label is set.
243+
var claim ipamv1.IPAddressClaim
244+
name := fmt.Sprintf("%s-%s-%s", getCluster().GetName(), device, infrav1.DefaultSuffix)
245+
nn := types.NamespacedName{Name: name, Namespace: getCluster().GetNamespace()}
246+
err = s.cl.Get(s.ctx, nn, &claim)
247+
s.NoError(err)
248+
s.Contains(claim.ObjectMeta.Labels, clusterv1.ClusterNameLabel)
249+
s.Equal(rootClusterName, claim.ObjectMeta.Labels[clusterv1.ClusterNameLabel])
250+
240251
// additional device with InClusterIPPool
241252
s.NoError(s.helper.ctrlClient.Create(s.ctx, &ipamicv1.InClusterIPPool{
242253
ObjectMeta: metav1.ObjectMeta{
@@ -258,7 +269,7 @@ func (s *IPAMTestSuite) Test_CreateIPAddressClaim() {
258269

259270
additionalDevice := "net1"
260271

261-
err = s.helper.CreateIPAddressClaim(s.ctx, getCluster(), additionalDevice, infrav1.IPV4Format, &corev1.TypedLocalObjectReference{
272+
err = s.helper.CreateIPAddressClaim(s.ctx, getCluster(), additionalDevice, infrav1.IPV4Format, "test-cluster", &corev1.TypedLocalObjectReference{
262273
Name: "test-additional-cluster-icip",
263274
Kind: "InClusterIPPool",
264275
APIGroup: ptr.To("ipam.cluster.x-k8s.io"),
@@ -284,7 +295,7 @@ func (s *IPAMTestSuite) Test_CreateIPAddressClaim() {
284295

285296
globalDevice := "net2"
286297

287-
err = s.helper.CreateIPAddressClaim(s.ctx, getCluster(), globalDevice, infrav1.IPV4Format, &corev1.TypedLocalObjectReference{
298+
err = s.helper.CreateIPAddressClaim(s.ctx, getCluster(), globalDevice, infrav1.IPV4Format, "test-cluster", &corev1.TypedLocalObjectReference{
288299
Name: "test-global-cluster-icip",
289300
Kind: "GlobalInClusterIPPool",
290301
APIGroup: ptr.To("ipam.cluster.x-k8s.io"),
@@ -305,7 +316,7 @@ func (s *IPAMTestSuite) Test_CreateIPAddressClaim() {
305316
Name: "test-cluster-v6-icip",
306317
}, &poolV6))
307318

308-
err = s.helper.CreateIPAddressClaim(s.ctx, getCluster(), device, infrav1.IPV6Format, nil)
319+
err = s.helper.CreateIPAddressClaim(s.ctx, getCluster(), device, infrav1.IPV6Format, "test-cluster", nil)
309320
s.NoError(err)
310321
}
311322

@@ -318,7 +329,7 @@ func (s *IPAMTestSuite) Test_GetIPAddress() {
318329
Name: "test-cluster-v4-icip",
319330
}, &pool))
320331

321-
err := s.helper.CreateIPAddressClaim(s.ctx, getCluster(), "net0", infrav1.IPV4Format, &corev1.TypedLocalObjectReference{
332+
err := s.helper.CreateIPAddressClaim(s.ctx, getCluster(), "net0", infrav1.IPV4Format, "test-cluster", &corev1.TypedLocalObjectReference{
322333
Name: "test-cluster-icip",
323334
})
324335
s.NoError(err)

0 commit comments

Comments
 (0)