Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions internal/controller/manifests_downloader.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,6 @@ const (
func (p *phaseReconciler) downloadManifests(ctx context.Context) (reconcile.Result, error) {
log := ctrl.LoggerFrom(ctx)

log.Info("Downloading provider manifests")

// Return immediately if a custom config map is used instead of a url.
if p.provider.GetSpec().FetchConfig != nil && p.provider.GetSpec().FetchConfig.Selector != nil {
log.V(5).Info("Custom config map is used, skip downloading provider manifests")
Expand All @@ -75,6 +73,8 @@ func (p *phaseReconciler) downloadManifests(ctx context.Context) (reconcile.Resu
return reconcile.Result{}, nil
}

log.Info("Downloading provider manifests")

repo, err := repositoryFactory(p.providerConfig, p.configClient.Variables())
if err != nil {
err = fmt.Errorf("failed to create repo from provider url for provider %q: %w", p.provider.GetName(), err)
Expand Down
20 changes: 17 additions & 3 deletions internal/controller/phases.go
Original file line number Diff line number Diff line change
Expand Up @@ -218,9 +218,23 @@ func (p *phaseReconciler) secretReader(ctx context.Context) (configclient.Reader
}

// If provided store fetch config url in memory reader.
if p.provider.GetSpec().FetchConfig != nil && p.provider.GetSpec().FetchConfig.URL != "" {
log.Info("Custom fetch configuration url was provided")
return mr.AddProvider(p.provider.GetName(), util.ClusterctlProviderType(p.provider), p.provider.GetSpec().FetchConfig.URL)
if p.provider.GetSpec().FetchConfig != nil {
if p.provider.GetSpec().FetchConfig.URL != "" {
log.Info("Custom fetch configuration url was provided")
return mr.AddProvider(p.provider.GetName(), util.ClusterctlProviderType(p.provider), p.provider.GetSpec().FetchConfig.URL)
}

if p.provider.GetSpec().FetchConfig.Selector != nil {
log.Info("Custom fetch configuration config map was provided")

// To register a new provider from the config map, we need to specify a URL with a valid
// format. However, since we're using data from a local config map, URLs are not needed.
// As a workaround, we add a fake but well-formatted URL.

fakeURL := "https://example.com/my-provider"

return mr.AddProvider(p.provider.GetName(), util.ClusterctlProviderType(p.provider), fakeURL)
}
}

return mr, nil
Expand Down
13 changes: 7 additions & 6 deletions test/e2e/compressed_manifests_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import (

const (
ociInfrastructureProviderName = "oci"
ociInfrastructureProviderCustomName = "my-oci"
ociInfrastructureProviderVersion = "v0.12.0"
ociInfrastructureProviderDeploymentName = "capoci-controller-manager"
compressedAnnotation = "provider.cluster.x-k8s.io/compressed"
Expand Down Expand Up @@ -186,11 +187,11 @@ var _ = Describe("Create and delete a provider with manifests that don't fit the
}, timeout).Should(Equal(true))
})

It("should successfully create and delete an InfrastructureProvider for OCI from a pre-created ConfigMap", func() {
It("should successfully create and delete an InfrastructureProvider for OCI with custom name from a pre-created ConfigMap", func() {
k8sclient := bootstrapClusterProxy.GetClient()
infraProvider := &operatorv1.InfrastructureProvider{
ObjectMeta: metav1.ObjectMeta{
Name: ociInfrastructureProviderName,
Name: ociInfrastructureProviderCustomName,
Namespace: operatorNamespace,
},
Spec: operatorv1.InfrastructureProviderSpec{
Expand Down Expand Up @@ -219,7 +220,7 @@ var _ = Describe("Create and delete a provider with manifests that don't fit the
By("Waiting for the infrastructure provider to be ready")
Eventually(func() bool {
infraProvider := &operatorv1.InfrastructureProvider{}
key := client.ObjectKey{Namespace: operatorNamespace, Name: ociInfrastructureProviderName}
key := client.ObjectKey{Namespace: operatorNamespace, Name: ociInfrastructureProviderCustomName}
if err := k8sclient.Get(ctx, key, infraProvider); err != nil {
return false
}
Expand All @@ -235,7 +236,7 @@ var _ = Describe("Create and delete a provider with manifests that don't fit the
By("Waiting for status.IntalledVersion to be set")
Eventually(func() bool {
infraProvider := &operatorv1.InfrastructureProvider{}
key := client.ObjectKey{Namespace: operatorNamespace, Name: ociInfrastructureProviderName}
key := client.ObjectKey{Namespace: operatorNamespace, Name: ociInfrastructureProviderCustomName}
if err := k8sclient.Get(ctx, key, infraProvider); err != nil {
return false
}
Expand All @@ -256,8 +257,6 @@ var _ = Describe("Create and delete a provider with manifests that don't fit the

Expect(cm.BinaryData[componentsConfigMapKey]).ToNot(BeEmpty())

Expect(k8sclient.Delete(ctx, infraProvider)).To(Succeed())

By("Waiting for the infrastructure provider deployment to be created")
Eventually(func() bool {
deployment := &appsv1.Deployment{}
Expand All @@ -266,6 +265,8 @@ var _ = Describe("Create and delete a provider with manifests that don't fit the
return k8sclient.Get(ctx, key, deployment) == nil
}, timeout).Should(Equal(true))

Expect(k8sclient.Delete(ctx, infraProvider)).To(Succeed())

By("Waiting for the infrastructure provider deployment to be deleted")
Eventually(func() bool {
deployment := &appsv1.Deployment{}
Expand Down