Skip to content

Commit 88f4f2b

Browse files
committed
release(captcluster): v0.4.2 - always set ownerRef; add startup version log
1 parent bfcba44 commit 88f4f2b

File tree

1 file changed

+42
-9
lines changed

1 file changed

+42
-9
lines changed

internal/controller/captcluster/controller.go

Lines changed: 42 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ const (
3535

3636
// ClusterNameLabel is the label used to identify the cluster name
3737
ClusterNameLabel = "cluster.x-k8s.io/cluster-name"
38+
39+
// ControllerVersion indicates the running version of the CAPTCluster controller
40+
ControllerVersion = "v0.4.2"
3841
)
3942

4043
// Reconciler reconciles a CAPTCluster object
@@ -108,6 +111,27 @@ func (r *Reconciler) ensureClusterLabels(ctx context.Context, captCluster *infra
108111
return nil
109112
}
110113

114+
// setOwnerReference sets the owner reference to the parent Cluster
115+
func (r *Reconciler) setOwnerReference(ctx context.Context, captCluster *infrastructurev1beta1.CAPTCluster, cluster *clusterv1.Cluster) error {
116+
if cluster == nil {
117+
return nil
118+
}
119+
120+
// Check if owner reference already exists
121+
for _, ref := range captCluster.OwnerReferences {
122+
if ref.Kind == "Cluster" && ref.APIVersion == clusterv1.GroupVersion.String() {
123+
return nil
124+
}
125+
}
126+
127+
// Set owner reference
128+
if err := controllerutil.SetControllerReference(cluster, captCluster, r.Scheme); err != nil {
129+
return err
130+
}
131+
132+
return r.Update(ctx, captCluster)
133+
}
134+
111135
func (r *Reconciler) Reconcile(ctx context.Context, req ctrl.Request) (Result, error) {
112136
logger := log.FromContext(ctx)
113137
logger.Info("Reconciling CAPTCluster")
@@ -140,6 +164,15 @@ func (r *Reconciler) Reconcile(ctx context.Context, req ctrl.Request) (Result, e
140164
return r.reconcileDelete(ctx, captCluster)
141165
}
142166

167+
// Add finalizer if it doesn't exist
168+
if !controllerutil.ContainsFinalizer(captCluster, CAPTClusterFinalizer) {
169+
controllerutil.AddFinalizer(captCluster, CAPTClusterFinalizer)
170+
if err := r.Update(ctx, captCluster); err != nil {
171+
logger.Error(err, "Failed to add finalizer")
172+
return Result{}, err
173+
}
174+
}
175+
143176
// Ensure required labels are set. This is done before the topology check
144177
// to ensure that the cluster name label is always present, which is used
145178
// by other parts of the system.
@@ -148,17 +181,15 @@ func (r *Reconciler) Reconcile(ctx context.Context, req ctrl.Request) (Result, e
148181
return Result{}, err
149182
}
150183

151-
if cluster.Spec.Topology == nil {
152-
// Set owner reference if cluster exists
153-
if err := controllerutil.SetControllerReference(cluster, captCluster, r.Scheme); err != nil {
154-
logger.Error(err, "Failed to set owner reference")
155-
return Result{}, err
156-
}
157-
158-
// Clear WaitingForCluster condition if it exists
159-
meta.RemoveStatusCondition(&captCluster.Status.Conditions, WaitingForClusterCondition)
184+
// Set owner reference if cluster exists (Topology有無に関わらず)
185+
if err := r.setOwnerReference(ctx, captCluster, cluster); err != nil {
186+
logger.Error(err, "Failed to set owner reference")
187+
return Result{}, err
160188
}
161189

190+
// Clear WaitingForCluster condition if it exists
191+
meta.RemoveStatusCondition(&captCluster.Status.Conditions, WaitingForClusterCondition)
192+
162193
// Validate VPC configuration
163194
if err := captCluster.Spec.ValidateVPCConfiguration(); err != nil {
164195
logger.Error(err, "Invalid VPC configuration")
@@ -256,6 +287,8 @@ func (r *Reconciler) cleanupWorkspaceTemplateApply(ctx context.Context, captClus
256287

257288
// SetupWithManager sets up the controller with the Manager.
258289
func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error {
290+
// Log controller version at startup
291+
log.Log.WithName("captcluster").Info("Starting CAPTCluster controller", "version", ControllerVersion)
259292
return ctrl.NewControllerManagedBy(mgr).
260293
For(&infrastructurev1beta1.CAPTCluster{}, builder.WithPredicates(predicate.GenerationChangedPredicate{})).
261294
Owns(&infrastructurev1beta1.WorkspaceTemplateApply{}).

0 commit comments

Comments
 (0)