From d64dbaa7fc75685ca46d23110fd5b57ca9f4aa38 Mon Sep 17 00:00:00 2001 From: Karthik K N Date: Fri, 19 Nov 2021 16:46:24 +0530 Subject: [PATCH] Added enablePublicEndpoint environmental variable to deployment file --- pkg/cloud/ibm/assets/deployment.yaml | 2 ++ pkg/cloud/ibm/ibm.go | 25 +++++++++++++++++++++---- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/pkg/cloud/ibm/assets/deployment.yaml b/pkg/cloud/ibm/assets/deployment.yaml index 298dcad05..e58b61918 100644 --- a/pkg/cloud/ibm/assets/deployment.yaml +++ b/pkg/cloud/ibm/assets/deployment.yaml @@ -59,6 +59,8 @@ spec: fieldPath: status.podIP - name: VPCCTL_CLOUD_CONFIG value: /etc/ibm/cloud.conf + - name: VPCCTL_PUBLIC_ENDPOINT + value: {{ .enablePublicEndpoint }} command: - /bin/bash - -c diff --git a/pkg/cloud/ibm/ibm.go b/pkg/cloud/ibm/ibm.go index 3279f8217..1f92c4fde 100644 --- a/pkg/cloud/ibm/ibm.go +++ b/pkg/cloud/ibm/ibm.go @@ -4,6 +4,8 @@ import ( "embed" "fmt" + configv1 "github.com/openshift/api/config/v1" + "github.com/asaskevich/govalidator" appsv1 "k8s.io/api/apps/v1" "sigs.k8s.io/controller-runtime/pkg/client" @@ -27,7 +29,8 @@ type imagesReference struct { } var templateValuesValidationMap = map[string]interface{}{ - "images": "required", + "images": "required", + "enablePublicEndpoint": "required", } type ibmAssets struct { @@ -39,9 +42,10 @@ func (assets *ibmAssets) GetRenderedResources() []client.Object { return assets.renderedResources } -func getTemplateValues(images *imagesReference) (common.TemplateValues, error) { +func getTemplateValues(images *imagesReference, operatorConfig config.OperatorConfig) (common.TemplateValues, error) { values := common.TemplateValues{ - "images": images, + "images": images, + "enablePublicEndpoint": fmt.Sprintf("%t", getEnablePublicEndpointValue(operatorConfig)), } _, err := govalidator.ValidateMap(values, templateValuesValidationMap) if err != nil { @@ -50,6 +54,19 @@ func getTemplateValues(images *imagesReference) (common.TemplateValues, error) { return values, nil } +func getEnablePublicEndpointValue(operatorConfig config.OperatorConfig) bool { + if operatorConfig.PlatformStatus == nil { + return false + } + switch operatorConfig.PlatformStatus.Type { + case configv1.PowerVSPlatformType: + // For Power VS Platform enable public endpoints + return true + default: + return false + } +} + func NewProviderAssets(config config.OperatorConfig) (common.CloudProviderAssets, error) { images := &imagesReference{ CloudControllerManager: config.ImagesReference.CloudControllerManagerIBM, @@ -66,7 +83,7 @@ func NewProviderAssets(config config.OperatorConfig) (common.CloudProviderAssets if err != nil { return nil, err } - templateValues, err := getTemplateValues(images) + templateValues, err := getTemplateValues(images, config) if err != nil { return nil, fmt.Errorf("can not construct template values for %s assets: %v", providerName, err) }