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

Commit 96f6fd9

Browse files
committed
feat: create crs from provider credentials
1 parent 00a0eb2 commit 96f6fd9

File tree

8 files changed

+62
-14
lines changed

8 files changed

+62
-14
lines changed

pkg/handlers/generic/lifecycle/clusterautoscaler/strategy_crs.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ func (s crsStrategy) apply(
121121
)
122122
}
123123

124-
if err = utils.EnsureCRSForClusterFromConfigMaps(ctx, cm.Name, s.client, targetCluster, cm); err != nil {
124+
if err = utils.EnsureCRSForClusterFromObjects(ctx, cm.Name, s.client, targetCluster, cm); err != nil {
125125
return fmt.Errorf(
126126
"failed to apply cluster-autoscaler installation ClusterResourceSet: %w",
127127
err,

pkg/handlers/generic/lifecycle/cni/calico/strategy_crs.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ func (s crsStrategy) ensureCNICRSForCluster(
150150
)
151151
}
152152

153-
if err := utils.EnsureCRSForClusterFromConfigMaps(ctx, cm.Name, s.client, cluster, tigeraConfigMap, cm); err != nil {
153+
if err := utils.EnsureCRSForClusterFromObjects(ctx, cm.Name, s.client, cluster, tigeraConfigMap, cm); err != nil {
154154
return fmt.Errorf(
155155
"failed to apply Calico CNI installation ClusterResourceSet: %w",
156156
err,

pkg/handlers/generic/lifecycle/cni/cilium/strategy_crs.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ func (s crsStrategy) apply(
8787
)
8888
}
8989

90-
if err := utils.EnsureCRSForClusterFromConfigMaps(ctx, cm.Name, s.client, cluster, cm); err != nil {
90+
if err := utils.EnsureCRSForClusterFromObjects(ctx, cm.Name, s.client, cluster, cm); err != nil {
9191
return fmt.Errorf(
9292
"failed to apply Cilium CNI installation ClusterResourceSet: %w",
9393
err,

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ func (c *CPIHandler) AfterControlPlaneInitialized(
114114
)
115115
return
116116
}
117-
err = lifecycleutils.EnsureCRSForClusterFromConfigMaps(ctx, cm.Name, c.client, &req.Cluster, cm)
117+
err = lifecycleutils.EnsureCRSForClusterFromObjects(ctx, cm.Name, c.client, &req.Cluster, cm)
118118
if err != nil {
119119
log.Error(
120120
err,

pkg/handlers/generic/lifecycle/csi/aws-ebs/handler.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ func (a *AWSEBS) createStorageClasses(ctx context.Context,
103103
if err != nil {
104104
return err
105105
}
106-
return lifecycleutils.EnsureCRSForClusterFromConfigMaps(
106+
return lifecycleutils.EnsureCRSForClusterFromObjects(
107107
ctx,
108108
"aws-storageclass-crs",
109109
a.client,
@@ -140,7 +140,7 @@ func (a *AWSEBS) handleCRSApply(ctx context.Context,
140140
err,
141141
)
142142
}
143-
err = lifecycleutils.EnsureCRSForClusterFromConfigMaps(
143+
err = lifecycleutils.EnsureCRSForClusterFromObjects(
144144
ctx,
145145
cm.Name,
146146
a.client,

pkg/handlers/generic/lifecycle/csi/nutanix-csi/handler.go

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"fmt"
99

1010
"github.com/spf13/pflag"
11+
corev1 "k8s.io/api/core/v1"
1112
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1213
"k8s.io/apimachinery/pkg/runtime"
1314
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
@@ -75,6 +76,36 @@ func (n *NutanixCSI) Apply(
7576
default:
7677
return fmt.Errorf("stategy %s not implemented", strategy)
7778
}
79+
if provider.Credentials != nil {
80+
sec := &corev1.Secret{
81+
TypeMeta: metav1.TypeMeta{
82+
APIVersion: corev1.SchemeGroupVersion.String(),
83+
Kind: "Secret",
84+
},
85+
ObjectMeta: metav1.ObjectMeta{
86+
Namespace: provider.Credentials.Name,
87+
Name: provider.Credentials.Namespace,
88+
},
89+
}
90+
err := n.client.Get(
91+
ctx,
92+
ctrlclient.ObjectKeyFromObject(sec),
93+
sec,
94+
)
95+
if err != nil {
96+
return err
97+
}
98+
err = lifecycleutils.EnsureCRSForClusterFromObjects(
99+
ctx,
100+
fmt.Sprintf("nutanix-csi-credentials-crs-%s", req.Cluster.Name),
101+
n.client,
102+
&req.Cluster,
103+
sec,
104+
)
105+
if err != nil {
106+
return err
107+
}
108+
}
78109
return n.createStorageClasses(
79110
ctx,
80111
provider.StorageClassConfig,
@@ -163,7 +194,7 @@ func (n *NutanixCSI) createStorageClasses(ctx context.Context,
163194
if err != nil {
164195
return err
165196
}
166-
return lifecycleutils.EnsureCRSForClusterFromConfigMaps(
197+
return lifecycleutils.EnsureCRSForClusterFromObjects(
167198
ctx,
168199
"nutanix-storageclass-crs",
169200
n.client,

pkg/handlers/generic/lifecycle/nfd/strategy_crs.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ func (s crsStrategy) apply(
8787
)
8888
}
8989

90-
if err := utils.EnsureCRSForClusterFromConfigMaps(ctx, cm.Name, s.client, cluster, cm); err != nil {
90+
if err := utils.EnsureCRSForClusterFromObjects(ctx, cm.Name, s.client, cluster, cm); err != nil {
9191
return fmt.Errorf(
9292
"failed to apply NFD installation ClusterResourceSet: %w",
9393
err,

pkg/handlers/generic/lifecycle/utils/utils.go

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,18 +40,35 @@ var (
4040
}
4141
)
4242

43-
func EnsureCRSForClusterFromConfigMaps(
43+
func EnsureCRSForClusterFromObjects(
4444
ctx context.Context,
4545
crsName string,
4646
c ctrlclient.Client,
4747
cluster *clusterv1.Cluster,
48-
configMaps ...*corev1.ConfigMap,
48+
objects ...runtime.Object,
4949
) error {
50-
resources := make([]crsv1.ResourceRef, 0, len(configMaps))
51-
for _, cm := range configMaps {
50+
resources := make([]crsv1.ResourceRef, 0, len(objects))
51+
for _, obj := range objects {
52+
var name string
53+
var kind crsv1.ClusterResourceSetResourceKind
54+
cm, ok := obj.(*corev1.ConfigMap)
55+
if !ok {
56+
sec, secOk := obj.(*corev1.Secret)
57+
if !secOk {
58+
return fmt.Errorf(
59+
"cannot create ClusterResourceSet with obj %v only secrets and configmaps are supported",
60+
obj,
61+
)
62+
}
63+
name = sec.Name
64+
kind = crsv1.SecretClusterResourceSetResourceKind
65+
} else {
66+
name = cm.Name
67+
kind = crsv1.ConfigMapClusterResourceSetResourceKind
68+
}
5269
resources = append(resources, crsv1.ResourceRef{
53-
Kind: string(crsv1.ConfigMapClusterResourceSetResourceKind),
54-
Name: cm.Name,
70+
Name: name,
71+
Kind: string(kind),
5572
})
5673
}
5774

0 commit comments

Comments
 (0)