Skip to content

Commit ae8635e

Browse files
Address comments
1 parent e5e6716 commit ae8635e

File tree

1 file changed

+23
-17
lines changed

1 file changed

+23
-17
lines changed

controlplane/kubeadm/internal/controllers/controller.go

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package controllers
1919
import (
2020
"context"
2121
"fmt"
22+
"reflect"
2223
"slices"
2324
"sort"
2425
"strings"
@@ -1575,11 +1576,6 @@ func (r *KubeadmControlPlaneReconciler) adoptMachines(ctx context.Context, kcp *
15751576

15761577
kcpRef := *metav1.NewControllerRef(kcp, controlplanev1.GroupVersion.WithKind(kubeadmControlPlaneKind))
15771578
for _, m := range machines {
1578-
// No op if OwnerReferences is set and up to date.
1579-
if util.HasExactOwnerRef(m.OwnerReferences, kcpRef) {
1580-
continue
1581-
}
1582-
15831579
ref := m.Spec.Bootstrap.ConfigRef
15841580
cfg := &bootstrapv1.KubeadmConfig{}
15851581

@@ -1591,6 +1587,11 @@ func (r *KubeadmControlPlaneReconciler) adoptMachines(ctx context.Context, kcp *
15911587
return err
15921588
}
15931589

1590+
// No op if OwnerReferences is set and up to date.
1591+
if util.HasExactOwnerRef(m.OwnerReferences, kcpRef) {
1592+
continue
1593+
}
1594+
15941595
original := m.DeepCopy()
15951596
m.SetOwnerReferences(util.EnsureOwnerRef(m.GetOwnerReferences(), kcpRef))
15961597

@@ -1642,23 +1643,28 @@ func (r *KubeadmControlPlaneReconciler) ensureCertificatesOwnerRef(ctx context.C
16421643
continue
16431644
}
16441645

1645-
// If the Type doesn't match the type used for secrets created by core components continue without altering the owner reference further.
1646-
if c.Secret.Type != clusterv1.ClusterSecretType {
1647-
continue
1646+
original := c.Secret.DeepCopy()
1647+
controller := metav1.GetControllerOf(c.Secret)
1648+
// If the current controller is KCP, ensure the owner reference is up to date.
1649+
// Note: This ensures secrets created prior to v1alpha4 are updated to have the correct owner reference apiVersion.
1650+
if controller != nil && controller.Kind == kubeadmControlPlaneKind {
1651+
c.Secret.SetOwnerReferences(util.EnsureOwnerRef(c.Secret.GetOwnerReferences(), owner))
16481652
}
16491653

1650-
// No op if the owner ref is already there
1651-
if util.HasExactOwnerRef(c.Secret.OwnerReferences, owner) {
1652-
continue
1654+
// If the Type doesn't match the type used for secrets created by core components continue without altering the owner reference further.
1655+
// Note: This ensures that control plane related secrets created by KubeadmConfig are eventually owned by KCP.
1656+
// TODO: Remove this logic once standalone control plane machines are no longer allowed.
1657+
if c.Secret.Type == clusterv1.ClusterSecretType {
1658+
// Remove the current controller if one exists.
1659+
if controller != nil {
1660+
c.Secret.SetOwnerReferences(util.RemoveOwnerRef(c.Secret.GetOwnerReferences(), *controller))
1661+
}
1662+
c.Secret.SetOwnerReferences(util.EnsureOwnerRef(c.Secret.GetOwnerReferences(), owner))
16531663
}
16541664

1655-
original := c.Secret.DeepCopy()
1656-
1657-
// Remove the current controller if one exists.
1658-
if controller := metav1.GetControllerOf(c.Secret); controller != nil && controller.Kind != kubeadmControlPlaneKind {
1659-
c.Secret.SetOwnerReferences(util.RemoveOwnerRef(c.Secret.GetOwnerReferences(), *controller))
1665+
if reflect.DeepEqual(original.GetOwnerReferences(), c.Secret.GetOwnerReferences()) {
1666+
continue
16601667
}
1661-
c.Secret.SetOwnerReferences(util.EnsureOwnerRef(c.Secret.GetOwnerReferences(), owner))
16621668

16631669
if err := r.Client.Patch(ctx, c.Secret, client.MergeFrom(original)); err != nil {
16641670
return errors.Wrapf(err, "failed to set ownerReference")

0 commit comments

Comments
 (0)