diff --git a/pkg/handlers/generic/lifecycle/ccm/aws/handler.go b/pkg/handlers/generic/lifecycle/ccm/aws/handler.go index 2e0e9225e..c9f34ebfc 100644 --- a/pkg/handlers/generic/lifecycle/ccm/aws/handler.go +++ b/pkg/handlers/generic/lifecycle/ccm/aws/handler.go @@ -16,6 +16,7 @@ import ( ctrlclient "sigs.k8s.io/controller-runtime/pkg/client" "github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/common/pkg/k8s/client" + lifecycleutils "github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/pkg/handlers/generic/lifecycle/utils" "github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/pkg/handlers/options" ) @@ -52,10 +53,10 @@ func New( } } -func (a *AWSCCM) EnsureCCMConfigMapForCluster( +func (a *AWSCCM) Apply( ctx context.Context, cluster *clusterv1.Cluster, -) (*corev1.ConfigMap, error) { +) error { log := ctrl.LoggerFrom(ctx).WithValues( "cluster", cluster.Name, @@ -63,7 +64,7 @@ func (a *AWSCCM) EnsureCCMConfigMapForCluster( log.Info("Creating AWS CCM ConfigMap for Cluster") version, err := semver.ParseTolerant(cluster.Spec.Topology.Version) if err != nil { - return nil, fmt.Errorf("failed to parse version from cluster %w", err) + return fmt.Errorf("failed to parse version from cluster %w", err) } minorVersion := fmt.Sprintf("%d.%d", version.Major, version.Minor) configMapForMinorVersion := a.config.kubernetesMinorVersionToCCMConfigMapNames[minorVersion] @@ -79,7 +80,7 @@ func (a *AWSCCM) EnsureCCMConfigMapForCluster( err = a.client.Get(ctx, objName, ccmConfigMapForMinorVersion) if err != nil { log.Error(err, "failed to fetch CCM template for cluster") - return nil, fmt.Errorf( + return fmt.Errorf( "failed to retrieve default AWS CCM manifests ConfigMap %q: %w", objName, err, @@ -87,14 +88,20 @@ func (a *AWSCCM) EnsureCCMConfigMapForCluster( } ccmConfigMap := generateCCMConfigMapForCluster(ccmConfigMapForMinorVersion, cluster) - if err := client.ServerSideApply(ctx, a.client, ccmConfigMap); err != nil { + if err = client.ServerSideApply(ctx, a.client, ccmConfigMap); err != nil { log.Error(err, "failed to apply CCM configmap for cluster") - return nil, fmt.Errorf( + return fmt.Errorf( "failed to apply AWS CCM manifests ConfigMap: %w", err, ) } - return ccmConfigMap, nil + + err = lifecycleutils.EnsureCRSForClusterFromObjects(ctx, ccmConfigMap.Name, a.client, cluster, ccmConfigMap) + if err != nil { + return fmt.Errorf("failed to generate CCM CRS for cluster: %w", err) + } + + return nil } func generateCCMConfigMapForCluster( diff --git a/pkg/handlers/generic/lifecycle/ccm/handler.go b/pkg/handlers/generic/lifecycle/ccm/handler.go index 04dd32f85..08d8372f0 100644 --- a/pkg/handlers/generic/lifecycle/ccm/handler.go +++ b/pkg/handlers/generic/lifecycle/ccm/handler.go @@ -8,7 +8,6 @@ import ( "fmt" "strings" - corev1 "k8s.io/api/core/v1" clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1" runtimehooksv1 "sigs.k8s.io/cluster-api/exp/runtime/hooks/api/v1alpha1" ctrl "sigs.k8s.io/controller-runtime" @@ -19,7 +18,6 @@ import ( "github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/common/pkg/capi/clustertopology/handlers/lifecycle" "github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/common/pkg/capi/clustertopology/variables" "github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/pkg/handlers/generic/clusterconfig" - lifecycleutils "github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/pkg/handlers/generic/lifecycle/utils" ) const ( @@ -27,7 +25,7 @@ const ( ) type CCMProvider interface { - EnsureCCMConfigMapForCluster(context.Context, *clusterv1.Cluster) (*corev1.ConfigMap, error) + Apply(context.Context, *clusterv1.Cluster) error } type CCMHandler struct { @@ -100,31 +98,18 @@ func (c *CCMHandler) AfterControlPlaneInitialized( log.Info(fmt.Sprintf("No CCM handler provided for infra kind %s", infraKind)) return } - cm, err := handler.EnsureCCMConfigMapForCluster(ctx, &req.Cluster) + err = handler.Apply(ctx, &req.Cluster) if err != nil { log.Error( err, - "failed to generate CCM configmap", + "failed to deploy CCM for cluster", ) resp.SetStatus(runtimehooksv1.ResponseStatusFailure) resp.SetMessage( - fmt.Sprintf("failed to generate CCM configmap: %v", + fmt.Sprintf("failed to deploy CCM for cluster: %v", err, ), ) return } - err = lifecycleutils.EnsureCRSForClusterFromObjects(ctx, cm.Name, c.client, &req.Cluster, cm) - if err != nil { - log.Error( - err, - "failed to generate CCM CRS for cluster", - ) - resp.SetStatus(runtimehooksv1.ResponseStatusFailure) - resp.SetMessage( - fmt.Sprintf("failed to generate CCM CRS: %v", - err, - ), - ) - } }