Skip to content

Commit ab6cca9

Browse files
authored
Merge pull request #2167 from shiftstack/moveServer
openstackserver: create before delete if adoption fields are empty
2 parents dfb7912 + 4ea1016 commit ab6cca9

File tree

2 files changed

+18
-10
lines changed

2 files changed

+18
-10
lines changed

controllers/openstackcluster_controller.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -309,16 +309,6 @@ func (r *OpenStackClusterReconciler) reconcileNormal(ctx context.Context, scope
309309
return reconcile.Result{}, err
310310
}
311311

312-
// TODO(emilien) we should do that separately but the reconcileBastion
313-
// should happen after the cluster Ready is true
314-
result, err := r.reconcileBastion(ctx, scope, cluster, openStackCluster)
315-
if err != nil {
316-
return reconcile.Result{}, err
317-
}
318-
if result != nil {
319-
return *result, nil
320-
}
321-
322312
availabilityZones, err := computeService.GetAvailabilityZones()
323313
if err != nil {
324314
return ctrl.Result{}, err
@@ -343,6 +333,16 @@ func (r *OpenStackClusterReconciler) reconcileNormal(ctx context.Context, scope
343333
openStackCluster.Status.FailureMessage = nil
344334
openStackCluster.Status.FailureReason = nil
345335
scope.Logger().Info("Reconciled Cluster created successfully")
336+
337+
result, err := r.reconcileBastion(ctx, scope, cluster, openStackCluster)
338+
if err != nil {
339+
return reconcile.Result{}, err
340+
}
341+
if result != nil {
342+
return *result, nil
343+
}
344+
scope.Logger().Info("Reconciled Bastion created successfully")
345+
346346
return reconcile.Result{}, nil
347347
}
348348

controllers/openstackserver_controller.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,14 @@ func (r *OpenStackServerReconciler) Reconcile(ctx context.Context, req ctrl.Requ
127127
}()
128128

129129
if !openStackServer.ObjectMeta.DeletionTimestamp.IsZero() {
130+
// When moving a cluster, we need to populate the server status with the resources
131+
// that were in another object's status.
132+
// This is because the status is not persisted across CAPI resources moves.
133+
if openStackServer.Status.Resolved == nil || openStackServer.Status.Resources == nil {
134+
if _, err := r.reconcileNormal(ctx, scope, openStackServer); err != nil {
135+
return ctrl.Result{}, err
136+
}
137+
}
130138
return reconcile.Result{}, r.reconcileDelete(scope, openStackServer)
131139
}
132140

0 commit comments

Comments
 (0)