Skip to content
This repository was archived by the owner on Apr 11, 2024. It is now read-only.

Commit d4768a4

Browse files
authored
refactor: CCM code to support both CRS and CAAPH provider (#25)
1 parent aa6feca commit d4768a4

File tree

2 files changed

+18
-26
lines changed

2 files changed

+18
-26
lines changed

pkg/handlers/generic/lifecycle/ccm/aws/handler.go

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
ctrlclient "sigs.k8s.io/controller-runtime/pkg/client"
1717

1818
"github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/common/pkg/k8s/client"
19+
lifecycleutils "github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/pkg/handlers/generic/lifecycle/utils"
1920
"github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/pkg/handlers/options"
2021
)
2122

@@ -52,18 +53,18 @@ func New(
5253
}
5354
}
5455

55-
func (a *AWSCCM) EnsureCCMConfigMapForCluster(
56+
func (a *AWSCCM) Apply(
5657
ctx context.Context,
5758
cluster *clusterv1.Cluster,
58-
) (*corev1.ConfigMap, error) {
59+
) error {
5960
log := ctrl.LoggerFrom(ctx).WithValues(
6061
"cluster",
6162
cluster.Name,
6263
)
6364
log.Info("Creating AWS CCM ConfigMap for Cluster")
6465
version, err := semver.ParseTolerant(cluster.Spec.Topology.Version)
6566
if err != nil {
66-
return nil, fmt.Errorf("failed to parse version from cluster %w", err)
67+
return fmt.Errorf("failed to parse version from cluster %w", err)
6768
}
6869
minorVersion := fmt.Sprintf("%d.%d", version.Major, version.Minor)
6970
configMapForMinorVersion := a.config.kubernetesMinorVersionToCCMConfigMapNames[minorVersion]
@@ -79,22 +80,28 @@ func (a *AWSCCM) EnsureCCMConfigMapForCluster(
7980
err = a.client.Get(ctx, objName, ccmConfigMapForMinorVersion)
8081
if err != nil {
8182
log.Error(err, "failed to fetch CCM template for cluster")
82-
return nil, fmt.Errorf(
83+
return fmt.Errorf(
8384
"failed to retrieve default AWS CCM manifests ConfigMap %q: %w",
8485
objName,
8586
err,
8687
)
8788
}
8889

8990
ccmConfigMap := generateCCMConfigMapForCluster(ccmConfigMapForMinorVersion, cluster)
90-
if err := client.ServerSideApply(ctx, a.client, ccmConfigMap); err != nil {
91+
if err = client.ServerSideApply(ctx, a.client, ccmConfigMap); err != nil {
9192
log.Error(err, "failed to apply CCM configmap for cluster")
92-
return nil, fmt.Errorf(
93+
return fmt.Errorf(
9394
"failed to apply AWS CCM manifests ConfigMap: %w",
9495
err,
9596
)
9697
}
97-
return ccmConfigMap, nil
98+
99+
err = lifecycleutils.EnsureCRSForClusterFromObjects(ctx, ccmConfigMap.Name, a.client, cluster, ccmConfigMap)
100+
if err != nil {
101+
return fmt.Errorf("failed to generate CCM CRS for cluster: %w", err)
102+
}
103+
104+
return nil
98105
}
99106

100107
func generateCCMConfigMapForCluster(

pkg/handlers/generic/lifecycle/ccm/handler.go

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import (
88
"fmt"
99
"strings"
1010

11-
corev1 "k8s.io/api/core/v1"
1211
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
1312
runtimehooksv1 "sigs.k8s.io/cluster-api/exp/runtime/hooks/api/v1alpha1"
1413
ctrl "sigs.k8s.io/controller-runtime"
@@ -19,15 +18,14 @@ import (
1918
"github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/common/pkg/capi/clustertopology/handlers/lifecycle"
2019
"github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/common/pkg/capi/clustertopology/variables"
2120
"github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/pkg/handlers/generic/clusterconfig"
22-
lifecycleutils "github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/pkg/handlers/generic/lifecycle/utils"
2321
)
2422

2523
const (
2624
variableRootName = "ccm"
2725
)
2826

2927
type CCMProvider interface {
30-
EnsureCCMConfigMapForCluster(context.Context, *clusterv1.Cluster) (*corev1.ConfigMap, error)
28+
Apply(context.Context, *clusterv1.Cluster) error
3129
}
3230

3331
type CCMHandler struct {
@@ -100,31 +98,18 @@ func (c *CCMHandler) AfterControlPlaneInitialized(
10098
log.Info(fmt.Sprintf("No CCM handler provided for infra kind %s", infraKind))
10199
return
102100
}
103-
cm, err := handler.EnsureCCMConfigMapForCluster(ctx, &req.Cluster)
101+
err = handler.Apply(ctx, &req.Cluster)
104102
if err != nil {
105103
log.Error(
106104
err,
107-
"failed to generate CCM configmap",
105+
"failed to deploy CCM for cluster",
108106
)
109107
resp.SetStatus(runtimehooksv1.ResponseStatusFailure)
110108
resp.SetMessage(
111-
fmt.Sprintf("failed to generate CCM configmap: %v",
109+
fmt.Sprintf("failed to deploy CCM for cluster: %v",
112110
err,
113111
),
114112
)
115113
return
116114
}
117-
err = lifecycleutils.EnsureCRSForClusterFromObjects(ctx, cm.Name, c.client, &req.Cluster, cm)
118-
if err != nil {
119-
log.Error(
120-
err,
121-
"failed to generate CCM CRS for cluster",
122-
)
123-
resp.SetStatus(runtimehooksv1.ResponseStatusFailure)
124-
resp.SetMessage(
125-
fmt.Sprintf("failed to generate CCM CRS: %v",
126-
err,
127-
),
128-
)
129-
}
130115
}

0 commit comments

Comments
 (0)