Skip to content

Commit

Permalink
fix setting owner references
Browse files Browse the repository at this point in the history
  • Loading branch information
defo89 committed Jan 23, 2025
1 parent 6da6deb commit 31cdb7f
Showing 1 changed file with 22 additions and 20 deletions.
42 changes: 22 additions & 20 deletions internal/controller/ironcore.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,15 @@ type IronCoreServerController struct {
// Reconcile looks up IronCore clusters in Netbox and creates Servers for it
func (c *IronCoreServerController) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
logger := log.FromContext(ctx)
logger.Info("reconciling IronCore cluster")

var clusterRoles []string
if c.IronCoreRoles != "" {
clusterRoles = strings.Split(c.IronCoreRoles, ",")
}

for _, clusterRole := range clusterRoles {
logger.Info("reconciling IronCore cluster role " + clusterRole + " in " + c.IronCoreRegion)

devices, cluster, err := c.Nb.LookupCluster(clusterRole, c.IronCoreRegion, "")
if err != nil {
logger.Error(err, "unable to lookup cluster in netbox")
Expand Down Expand Up @@ -115,8 +116,9 @@ func (c *IronCoreServerController) ReconcileDevice(ctx context.Context, cluster
return nil
}
// check if the host already exists
metalServerName := device.Name + "-system-0"
server := &metalv1alpha1.Server{}
err := c.Client.Get(ctx, client.ObjectKey{Name: device.Name, Namespace: defaultNamespace}, server)
err := c.Client.Get(ctx, client.ObjectKey{Name: metalServerName, Namespace: defaultNamespace}, server)
if err == nil {
logger.Info("host already exists", "host", server.Name)
return nil
Expand Down Expand Up @@ -161,7 +163,6 @@ func (c *IronCoreServerController) ReconcileDevice(ctx context.Context, cluster
return err
}

metalServerName := device.Name + "-system-0"
metalServer := &metalv1alpha1.Server{
ObjectMeta: ctrl.ObjectMeta{
Name: metalServerName,
Expand All @@ -183,23 +184,13 @@ func (c *IronCoreServerController) ReconcileDevice(ctx context.Context, cluster
return err
}

if err := controllerutil.SetControllerReference(server, bmcSecret, c.Scheme); err != nil {
logger.Error(err, "unable to set owner reference for bmc secret")
return err
}
err = c.Client.Patch(ctx, bmcSecret, client.MergeFrom(bmcSecret))
if err != nil {
logger.Error(err, "unable to patch bmcSecret")
if err := c.setOwnerReferenceAndPatch(ctx, metalServer, bmcSecret); err != nil {
logger.Error(err, "unable to set owner reference and patch bmc secret")
return err
}

if err := controllerutil.SetControllerReference(server, bmc, c.Scheme); err != nil {
logger.Error(err, "unable to set owner reference for bmc")
return err
}
err = c.Client.Patch(ctx, bmc, client.MergeFrom(bmc))
if err != nil {
logger.Error(err, "unable to patch BMC")
if err := c.setOwnerReferenceAndPatch(ctx, metalServer, bmc); err != nil {
logger.Error(err, "unable to set owner reference and patch BMC")
return err
}

Expand All @@ -222,9 +213,9 @@ func (c *IronCoreServerController) createBmcSecret(
Name: device.Name,
Labels: labels,
},
StringData: map[string]string{
"username": user,
"password": password,
Data: map[string][]byte{
metalv1alpha1.BMCSecretUsernameKeyName: []byte(user),
metalv1alpha1.BMCSecretPasswordKeyName: []byte(password),
},
}
err := c.Client.Create(ctx, bmcSecret)
Expand Down Expand Up @@ -285,3 +276,14 @@ func (c *IronCoreServerController) getOobIP(
}
return ip.String(), nil
}

func (c *IronCoreServerController) setOwnerReferenceAndPatch(ctx context.Context, owner, object client.Object) error {
deepCopiedObject := object.DeepCopyObject().(client.Object)
if err := controllerutil.SetControllerReference(owner, deepCopiedObject, c.Scheme); err != nil {
return fmt.Errorf("unable to set owner reference: %w", err)
}
if err := c.Client.Patch(ctx, deepCopiedObject, client.MergeFrom(object)); err != nil {
return fmt.Errorf("unable to patch object: %w", err)
}
return nil
}

0 comments on commit 31cdb7f

Please sign in to comment.