Skip to content

Commit 53b604a

Browse files
committed
chore: relocate GetCustomProviders to util, fix some naming
1 parent 02da990 commit 53b604a

File tree

4 files changed

+59
-60
lines changed

4 files changed

+59
-60
lines changed

internal/controller/phases.go

Lines changed: 4 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -147,11 +147,13 @@ func (p *phaseReconciler) initializePhaseReconciler(ctx context.Context) (reconc
147147
return reconcile.Result{}, err
148148
}
149149

150-
customProviders, err := p.getCustomProviders(ctx)
150+
// Get all providers using fetchConfig that aren't the current provider.
151+
customProviders, err := util.GetCustomProviders(ctx, p.ctrlClient, p.provider)
151152
if err != nil {
152153
return reconcile.Result{}, err
153154
}
154155

156+
// Load all custom providers into MemoryReader.
155157
reader, err = loadCustomProviders(customProviders, reader)
156158
if err != nil {
157159
return reconcile.Result{}, err
@@ -572,44 +574,7 @@ func getProvider(provider operatorv1.GenericProvider, defaultVersion string) clu
572574
return *clusterctlProvider
573575
}
574576

575-
func (p *phaseReconciler) getCustomProviders(ctx context.Context) ([]operatorv1.GenericProvider, error) {
576-
customProviders := []operatorv1.GenericProvider{}
577-
currProviderName := p.provider.GetName()
578-
currProviderType := p.provider.GetType()
579-
580-
providerLists := []client.ObjectList{
581-
&operatorv1.CoreProviderList{},
582-
&operatorv1.BootstrapProviderList{},
583-
&operatorv1.ControlPlaneProviderList{},
584-
&operatorv1.InfrastructureProviderList{},
585-
&operatorv1.AddonProviderList{},
586-
&operatorv1.IPAMProviderList{},
587-
&operatorv1.RuntimeExtensionProviderList{},
588-
}
589-
590-
for _, providerList := range providerLists {
591-
if err := p.ctrlClient.List(ctx, providerList); err != nil {
592-
return nil, fmt.Errorf("cannot get a list of providers from the server: %w", err)
593-
}
594-
595-
genericProviderList, ok := providerList.(operatorv1.GenericProviderList)
596-
if !ok {
597-
return nil, fmt.Errorf("cannot cast providers list to GenericProviderList")
598-
}
599-
600-
genericProviderListItems := genericProviderList.GetItems()
601-
for i, provider := range genericProviderListItems {
602-
if provider.GetName() == currProviderName && provider.GetType() == currProviderType || provider.GetSpec().FetchConfig == nil {
603-
continue
604-
}
605-
606-
customProviders = append(customProviders, genericProviderListItems[i])
607-
}
608-
}
609-
610-
return customProviders, nil
611-
}
612-
577+
// loadCustomProviders loads the passed providers list into the clusterctl configuration via the MemoryReader.
613578
func loadCustomProviders(providers []operatorv1.GenericProvider, reader configclient.Reader) (configclient.Reader, error) {
614579
mr, ok := reader.(*configclient.MemoryReader)
615580
if !ok {

test/e2e/air_gapped_test.go

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import (
3535
)
3636

3737
var _ = Describe("Install Controlplane, Core, Bootstrap Providers in an air-gapped environment", func() {
38-
It("should successfully create config maps with Core and Bootstrap Provider manifests", func() {
38+
It("should successfully create config maps with Controlplane, Core, and Bootstrap Provider manifests", func() {
3939
// Ensure that there are no Cluster API installed
4040
deleteClusterAPICRDs(bootstrapClusterProxy)
4141

@@ -62,7 +62,7 @@ var _ = Describe("Install Controlplane, Core, Bootstrap Providers in an air-gapp
6262
}
6363

6464
By("Creating provider namespaces")
65-
for _, namespaceName := range []string{capkbSystemNamespace, capkcpSystemNamespace, capiSystemNamespace} {
65+
for _, namespaceName := range []string{cabpkSystemNamespace, cacpkSystemNamespace, capiSystemNamespace} {
6666
namespace := &corev1.Namespace{
6767
ObjectMeta: metav1.ObjectMeta{
6868
Name: namespaceName,
@@ -82,7 +82,7 @@ var _ = Describe("Install Controlplane, Core, Bootstrap Providers in an air-gapp
8282
bootstrapProvider := &operatorv1.BootstrapProvider{
8383
ObjectMeta: metav1.ObjectMeta{
8484
Name: customProviderName,
85-
Namespace: capkbSystemNamespace,
85+
Namespace: cabpkSystemNamespace,
8686
},
8787
Spec: operatorv1.BootstrapProviderSpec{
8888
ProviderSpec: operatorv1.ProviderSpec{
@@ -105,7 +105,7 @@ var _ = Describe("Install Controlplane, Core, Bootstrap Providers in an air-gapp
105105
By("Waiting for the bootstrap provider deployment to be ready")
106106
framework.WaitForDeploymentsAvailable(ctx, framework.WaitForDeploymentsAvailableInput{
107107
Getter: bootstrapClusterProxy.GetClient(),
108-
Deployment: &appsv1.Deployment{ObjectMeta: metav1.ObjectMeta{Name: bootstrapProviderDeploymentName, Namespace: capkbSystemNamespace}},
108+
Deployment: &appsv1.Deployment{ObjectMeta: metav1.ObjectMeta{Name: bootstrapProviderDeploymentName, Namespace: cabpkSystemNamespace}},
109109
}, e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
110110

111111
By("Waiting for bootstrap provider to be ready")
@@ -166,7 +166,7 @@ var _ = Describe("Install Controlplane, Core, Bootstrap Providers in an air-gapp
166166
controlPlaneProvider := &operatorv1.ControlPlaneProvider{
167167
ObjectMeta: metav1.ObjectMeta{
168168
Name: customProviderName,
169-
Namespace: capkcpSystemNamespace,
169+
Namespace: cacpkSystemNamespace,
170170
},
171171
Spec: operatorv1.ControlPlaneProviderSpec{
172172
ProviderSpec: operatorv1.ProviderSpec{
@@ -189,7 +189,7 @@ var _ = Describe("Install Controlplane, Core, Bootstrap Providers in an air-gapp
189189
By("Waiting for the controlplane provider deployment to be ready")
190190
framework.WaitForDeploymentsAvailable(ctx, framework.WaitForDeploymentsAvailableInput{
191191
Getter: bootstrapClusterProxy.GetClient(),
192-
Deployment: &appsv1.Deployment{ObjectMeta: metav1.ObjectMeta{Name: cpProviderDeploymentName, Namespace: capkcpSystemNamespace}},
192+
Deployment: &appsv1.Deployment{ObjectMeta: metav1.ObjectMeta{Name: cpProviderDeploymentName, Namespace: cacpkSystemNamespace}},
193193
}, e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
194194

195195
By("Waiting for controlplane provider to be ready")
@@ -210,13 +210,13 @@ var _ = Describe("Install Controlplane, Core, Bootstrap Providers in an air-gapp
210210
coreProvider := &operatorv1.CoreProvider{}
211211
controlPlaneProvider := &operatorv1.ControlPlaneProvider{}
212212

213-
bootstrapKey := client.ObjectKey{Namespace: capkbSystemNamespace, Name: customProviderName}
213+
bootstrapKey := client.ObjectKey{Namespace: cabpkSystemNamespace, Name: customProviderName}
214214
Expect(bootstrapCluster.Get(ctx, bootstrapKey, bootstrapProvider)).To(Succeed())
215215

216216
coreKey := client.ObjectKey{Namespace: capiSystemNamespace, Name: coreProviderName}
217217
Expect(bootstrapCluster.Get(ctx, coreKey, coreProvider)).To(Succeed())
218218

219-
cpKey := client.ObjectKey{Namespace: capkcpSystemNamespace, Name: customProviderName}
219+
cpKey := client.ObjectKey{Namespace: cacpkSystemNamespace, Name: customProviderName}
220220
Expect(bootstrapCluster.Get(ctx, cpKey, controlPlaneProvider)).To(Succeed())
221221

222222
bootstrapProvider.Spec.Version = nextCAPIVersion
@@ -233,7 +233,7 @@ var _ = Describe("Install Controlplane, Core, Bootstrap Providers in an air-gapp
233233
By("Waiting for the bootstrap provider deployment to be ready")
234234
framework.WaitForDeploymentsAvailable(ctx, framework.WaitForDeploymentsAvailableInput{
235235
Getter: bootstrapClusterProxy.GetClient(),
236-
Deployment: &appsv1.Deployment{ObjectMeta: metav1.ObjectMeta{Name: bootstrapProviderDeploymentName, Namespace: capkbSystemNamespace}},
236+
Deployment: &appsv1.Deployment{ObjectMeta: metav1.ObjectMeta{Name: bootstrapProviderDeploymentName, Namespace: cabpkSystemNamespace}},
237237
}, e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
238238

239239
By("Waiting for bootstrap provider to be ready")
@@ -265,7 +265,7 @@ var _ = Describe("Install Controlplane, Core, Bootstrap Providers in an air-gapp
265265
By("Waiting for the controlplane provider deployment to be ready")
266266
framework.WaitForDeploymentsAvailable(ctx, framework.WaitForDeploymentsAvailableInput{
267267
Getter: bootstrapClusterProxy.GetClient(),
268-
Deployment: &appsv1.Deployment{ObjectMeta: metav1.ObjectMeta{Name: cpProviderDeploymentName, Namespace: capkcpSystemNamespace}},
268+
Deployment: &appsv1.Deployment{ObjectMeta: metav1.ObjectMeta{Name: cpProviderDeploymentName, Namespace: cacpkSystemNamespace}},
269269
}, e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
270270

271271
By("Waiting for controlplane provider to be ready")
@@ -283,15 +283,15 @@ var _ = Describe("Install Controlplane, Core, Bootstrap Providers in an air-gapp
283283
bootstrapCluster := bootstrapClusterProxy.GetClient()
284284
bootstrapProvider := &operatorv1.BootstrapProvider{ObjectMeta: metav1.ObjectMeta{
285285
Name: customProviderName,
286-
Namespace: capkbSystemNamespace,
286+
Namespace: cabpkSystemNamespace,
287287
}}
288288

289289
Expect(bootstrapCluster.Delete(ctx, bootstrapProvider)).To(Succeed())
290290

291291
By("Waiting for the bootstrap provider deployment to be deleted")
292292
WaitForDelete(ctx, For(&appsv1.Deployment{ObjectMeta: metav1.ObjectMeta{
293293
Name: bootstrapProviderDeploymentName,
294-
Namespace: capkbSystemNamespace,
294+
Namespace: cabpkSystemNamespace,
295295
}}).In(bootstrapCluster), e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
296296

297297
By("Waiting for the bootstrap provider object to be deleted")
@@ -323,7 +323,7 @@ var _ = Describe("Install Controlplane, Core, Bootstrap Providers in an air-gapp
323323
By("Deleting capkb-system namespace")
324324
namespace := &corev1.Namespace{
325325
ObjectMeta: metav1.ObjectMeta{
326-
Name: capkbSystemNamespace,
326+
Name: cabpkSystemNamespace,
327327
},
328328
}
329329
Expect(bootstrapCluster.Delete(ctx, namespace)).To(Succeed())
@@ -383,15 +383,15 @@ var _ = Describe("Install Controlplane, Core, Bootstrap Providers in an air-gapp
383383
bootstrapCluster := bootstrapClusterProxy.GetClient()
384384
ControlPlaneProvider := &operatorv1.ControlPlaneProvider{ObjectMeta: metav1.ObjectMeta{
385385
Name: customProviderName,
386-
Namespace: capkcpSystemNamespace,
386+
Namespace: cacpkSystemNamespace,
387387
}}
388388

389389
Expect(bootstrapCluster.Delete(ctx, ControlPlaneProvider)).To(Succeed())
390390

391391
By("Waiting for the controlplane provider deployment to be deleted")
392392
WaitForDelete(ctx, For(&appsv1.Deployment{ObjectMeta: metav1.ObjectMeta{
393393
Name: cpProviderDeploymentName,
394-
Namespace: capkcpSystemNamespace,
394+
Namespace: cacpkSystemNamespace,
395395
}}).In(bootstrapCluster), e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
396396

397397
By("Waiting for the controlplane provider object to be deleted")
@@ -423,7 +423,7 @@ var _ = Describe("Install Controlplane, Core, Bootstrap Providers in an air-gapp
423423
By("Deleting capkcp-system namespace")
424424
namespace := &corev1.Namespace{
425425
ObjectMeta: metav1.ObjectMeta{
426-
Name: capkcpSystemNamespace,
426+
Name: cacpkSystemNamespace,
427427
},
428428
}
429429
Expect(bootstrapCluster.Delete(ctx, namespace)).To(Succeed())

test/e2e/helpers_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@ import (
2727
var ctx = context.Background()
2828

2929
const (
30-
operatorNamespace = "capi-operator-system"
31-
capkbSystemNamespace = "capi-kubeadm-bootstrap-system"
32-
capkcpSystemNamespace = "capi-kubeadm-control-plane-system"
33-
capiSystemNamespace = "capi-system"
34-
capiOperatorRelease = "capi-operator"
30+
operatorNamespace = "capi-operator-system"
31+
cabpkSystemNamespace = "capi-kubeadm-bootstrap-system"
32+
cacpkSystemNamespace = "capi-kubeadm-control-plane-system"
33+
capiSystemNamespace = "capi-system"
34+
capiOperatorRelease = "capi-operator"
3535

3636
previousCAPIVersion = "v1.7.7"
3737
nextCAPIVersion = "v1.8.0"

util/util.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,40 @@ func ClusterctlProviderType(genericProvider operatorv1.GenericProvider) clusterc
7070
return clusterctlv1.ProviderTypeUnknown
7171
}
7272

73+
// GetCustomProviders retrieves all custom providers using `FetchConfig` that aren't the current provider name / type.
74+
func GetCustomProviders(ctx context.Context, cl ctrlclient.Client, currProvider genericprovider.GenericProvider) ([]operatorv1.GenericProvider, error) {
75+
customProviders := []operatorv1.GenericProvider{}
76+
currProviderName := currProvider.GetName()
77+
currProviderType := currProvider.GetType()
78+
79+
for _, providerList := range operatorv1.ProviderLists {
80+
providerList, ok := providerList.(ctrlclient.ObjectList)
81+
if !ok {
82+
return nil, fmt.Errorf("cannot cast providers list to ObjectList")
83+
}
84+
85+
if err := cl.List(ctx, providerList); err != nil {
86+
return nil, fmt.Errorf("cannot get a list of providers from the server: %w", err)
87+
}
88+
89+
genericProviderList, ok := providerList.(operatorv1.GenericProviderList)
90+
if !ok {
91+
return nil, fmt.Errorf("cannot cast providers list to GenericProviderList")
92+
}
93+
94+
genericProviderListItems := genericProviderList.GetItems()
95+
for i, provider := range genericProviderListItems {
96+
if provider.GetName() == currProviderName && provider.GetType() == currProviderType || provider.GetSpec().FetchConfig == nil {
97+
continue
98+
}
99+
100+
customProviders = append(customProviders, genericProviderListItems[i])
101+
}
102+
}
103+
104+
return customProviders, nil
105+
}
106+
73107
// GetGenericProvider returns the first of generic providers matching the type and the name from the configclient.Provider.
74108
func GetGenericProvider(ctx context.Context, cl ctrlclient.Client, provider configclient.Provider) (operatorv1.GenericProvider, error) {
75109
var list genericProviderList

0 commit comments

Comments
 (0)