From 5a2706f8e474293694cbc4b8b99a8e29e0778def Mon Sep 17 00:00:00 2001 From: Carlos Salas Date: Fri, 16 Feb 2024 10:33:51 +0100 Subject: [PATCH] feat: explicitly check for cluster labels Signed-off-by: Carlos Salas --- internal/controllers/import_controller_v3.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/internal/controllers/import_controller_v3.go b/internal/controllers/import_controller_v3.go index d805fe5b..d5f28789 100644 --- a/internal/controllers/import_controller_v3.go +++ b/internal/controllers/import_controller_v3.go @@ -297,7 +297,23 @@ func (r *CAPIImportManagementV3Reconciler) rancherClusterToCapiCluster(ctx conte log := log.FromContext(ctx) return func(_ context.Context, o client.Object) []ctrl.Request { - labels := o.GetLabels() + cluster, ok := o.(*managementv3.Cluster) + if !ok { + log.Error(nil, fmt.Sprintf("Expected a rancher cluster but got a %T", o)) + return nil + } + + labels := cluster.GetLabels() + if _, ok := labels[capiClusterOwner]; !ok { + log.Error(fmt.Errorf("missing label %s", capiClusterOwner), "getting rancher cluster labels") + return nil + } + + if _, ok := labels[capiClusterOwnerNamespace]; !ok { + log.Error(fmt.Errorf("missing label %s", capiClusterOwnerNamespace), "getting rancher cluster labels") + return nil + } + capiCluster := &clusterv1.Cluster{ObjectMeta: metav1.ObjectMeta{ Name: labels[capiClusterOwner], Namespace: labels[capiClusterOwnerNamespace],