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

Commit ea32369

Browse files
committed
feat: set a default storage class if you have one provider and one storage class config
1 parent 96f6fd9 commit ea32369

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ func (a *AWSEBS) Apply(
5454
ctx context.Context,
5555
provider v1alpha1.CSIProvider,
5656
defaultStorageConfig *v1alpha1.DefaultStorage,
57+
hasOneProviderAndOneStorageClass bool,
5758
req *runtimehooksv1.AfterControlPlaneInitializedRequest,
5859
) error {
5960
strategy := provider.Strategy
@@ -71,19 +72,21 @@ func (a *AWSEBS) Apply(
7172
ctx,
7273
provider.StorageClassConfig,
7374
&req.Cluster,
75+
hasOneProviderAndOneStorageClass,
7476
defaultStorageConfig,
7577
)
7678
}
7779

7880
func (a *AWSEBS) createStorageClasses(ctx context.Context,
7981
configs []v1alpha1.StorageClassConfig,
8082
cluster *clusterv1.Cluster,
83+
hasOneProviderAndOneStorageClass bool,
8184
defaultStorageConfig *v1alpha1.DefaultStorage,
8285
) error {
8386
allStorageClasses := make([]runtime.Object, 0, len(configs))
8487
for _, c := range configs {
8588
setAsDefault := c.Name == defaultStorageConfig.StorageClassConfigName &&
86-
v1alpha1.CSIProviderAWSEBS == defaultStorageConfig.ProviderName
89+
v1alpha1.CSIProviderAWSEBS == defaultStorageConfig.ProviderName || hasOneProviderAndOneStorageClass
8790
allStorageClasses = append(allStorageClasses, lifecycleutils.CreateStorageClass(
8891
c,
8992
a.config.GlobalOptions.DefaultsNamespace(),

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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ type CSIProvider interface {
2727
context.Context,
2828
v1alpha1.CSIProvider,
2929
*v1alpha1.DefaultStorage,
30+
bool, // this is a bool which keeps track of the case where a user has only one provider and one storageclass
3031
*runtimehooksv1.AfterControlPlaneInitializedRequest,
3132
) error
3233
}
@@ -98,6 +99,10 @@ func (c *CSIHandler) AfterControlPlaneInitialized(
9899
)
99100
return
100101
}
102+
hasOneProviderAndOneStorageClass := len(csiProviders.Providers) == 1 &&
103+
len(csiProviders.Providers[0].StorageClassConfig) == 1 &&
104+
csiProviders.DefaultStorage == nil
105+
101106
for _, provider := range csiProviders.Providers {
102107
handler, ok := c.ProviderHandler[provider.Name]
103108
if !ok {
@@ -110,7 +115,13 @@ func (c *CSIHandler) AfterControlPlaneInitialized(
110115
continue
111116
}
112117
log.Info(fmt.Sprintf("Creating csi provider %s", provider))
113-
err = handler.Apply(ctx, provider, csiProviders.DefaultStorage, req)
118+
err = handler.Apply(
119+
ctx,
120+
provider,
121+
csiProviders.DefaultStorage,
122+
hasOneProviderAndOneStorageClass,
123+
req,
124+
)
114125
if err != nil {
115126
log.Error(
116127
err,

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ func (n *NutanixCSI) Apply(
6363
ctx context.Context,
6464
provider v1alpha1.CSIProvider,
6565
defaultStorageConfig *v1alpha1.DefaultStorage,
66+
hasOneProviderAndOneStorageClass bool,
6667
req *runtimehooksv1.AfterControlPlaneInitializedRequest,
6768
) error {
6869
strategy := provider.Strategy
@@ -110,6 +111,7 @@ func (n *NutanixCSI) Apply(
110111
ctx,
111112
provider.StorageClassConfig,
112113
&req.Cluster,
114+
hasOneProviderAndOneStorageClass,
113115
defaultStorageConfig,
114116
)
115117
}
@@ -169,12 +171,14 @@ func (n *NutanixCSI) handleHelmAddonApply(
169171
func (n *NutanixCSI) createStorageClasses(ctx context.Context,
170172
configs []v1alpha1.StorageClassConfig,
171173
cluster *clusterv1.Cluster,
174+
hasOneProviderAndOneStorageClass bool,
172175
defaultStorageConfig *v1alpha1.DefaultStorage,
173176
) error {
174177
allStorageClasses := make([]runtime.Object, 0, len(configs))
175178
for _, c := range configs {
176179
setAsDefault := c.Name == defaultStorageConfig.StorageClassConfigName &&
177-
v1alpha1.CSIProviderNutanix == defaultStorageConfig.ProviderName
180+
v1alpha1.CSIProviderNutanix == defaultStorageConfig.ProviderName ||
181+
hasOneProviderAndOneStorageClass
178182
allStorageClasses = append(allStorageClasses, lifecycleutils.CreateStorageClass(
179183
c,
180184
n.config.GlobalOptions.DefaultsNamespace(),

0 commit comments

Comments
 (0)