diff --git a/pkg/operator/configobservation/cloudprovider/observe_cloudprovider.go b/pkg/operator/configobservation/cloudprovider/observe_cloudprovider.go index 36573d0eb..d6a72acfe 100644 --- a/pkg/operator/configobservation/cloudprovider/observe_cloudprovider.go +++ b/pkg/operator/configobservation/cloudprovider/observe_cloudprovider.go @@ -76,6 +76,9 @@ func ObserveCloudProviderNames(genericListers configobserver.Listers, recorder e case platform["libvirt"] != nil: // this means we are using libvirt return observedConfig, errs + case platform["none"] != nil: + // this means we are using bare metal + return observedConfig, errs case platform["aws"] != nil: cloudProvider = "aws" default: diff --git a/pkg/operator/configobservation/cloudprovider/observe_cloudprovider_test.go b/pkg/operator/configobservation/cloudprovider/observe_cloudprovider_test.go index 0f47d80fb..c6dbf314a 100644 --- a/pkg/operator/configobservation/cloudprovider/observe_cloudprovider_test.go +++ b/pkg/operator/configobservation/cloudprovider/observe_cloudprovider_test.go @@ -15,33 +15,53 @@ import ( ) func TestObserveCloudProviderNames(t *testing.T) { - indexer := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{}) - if err := indexer.Add(&corev1.ConfigMap{ - ObjectMeta: metav1.ObjectMeta{ - Name: "cluster-config-v1", - Namespace: "kube-system", - }, - Data: map[string]string{ - "install-config": "platform:\n aws: {}\n", - }, - }); err != nil { - t.Fatal(err.Error()) - } - listers := configobservation.Listers{ - ConfigmapLister: corelistersv1.NewConfigMapLister(indexer), - } - result, errs := ObserveCloudProviderNames(listers, events.NewInMemoryRecorder("cloud"), map[string]interface{}{}) - if len(errs) > 0 { - t.Fatal(errs) - } - cloudProvider, _, err := unstructured.NestedSlice(result, "extendedArguments", "cloud-provider") - if err != nil { - t.Fatal(err) - } - if e, a := 1, len(cloudProvider); e != a { - t.Fatalf("expected len(cloudProvider) == %d, got %d", e, a) - } - if e, a := "aws", cloudProvider[0]; e != a { - t.Errorf("expected cloud-provider=%s, got %s", e, a) + cases := []struct { + installConfig string + expectedCloudProvider string + cloudProviderCount int + }{{ + installConfig: "platform:\n aws: {}\n", + expectedCloudProvider: "aws", + cloudProviderCount: 1, + }, { + installConfig: "platform:\n libvirt: {}\n", + cloudProviderCount: 0, + }, { + installConfig: "platform:\n none: {}\n", + cloudProviderCount: 0, + }} + for idx, c := range cases { + t.Logf("Testing case #%d", idx+1) + indexer := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{}) + if err := indexer.Add(&corev1.ConfigMap{ + ObjectMeta: metav1.ObjectMeta{ + Name: "cluster-config-v1", + Namespace: "kube-system", + }, + Data: map[string]string{ + "install-config": c.installConfig, + }, + }); err != nil { + t.Fatal(err.Error()) + } + listers := configobservation.Listers{ + ConfigmapLister: corelistersv1.NewConfigMapLister(indexer), + } + result, errs := ObserveCloudProviderNames(listers, events.NewInMemoryRecorder("cloud"), map[string]interface{}{}) + if len(errs) > 0 { + t.Fatal(errs) + } + cloudProvider, _, err := unstructured.NestedSlice(result, "extendedArguments", "cloud-provider") + if err != nil { + t.Fatal(err) + } + if e, a := c.cloudProviderCount, len(cloudProvider); e != a { + t.Fatalf("expected len(cloudProvider) == %d, got %d", e, a) + } + if c.cloudProviderCount > 0 { + if e, a := c.expectedCloudProvider, cloudProvider[0]; e != a { + t.Errorf("expected cloud-provider=%s, got %s", e, a) + } + } } }