diff --git a/charts/consul/templates/server-statefulset.yaml b/charts/consul/templates/server-statefulset.yaml index 0cde35f37e..b0dff111a9 100644 --- a/charts/consul/templates/server-statefulset.yaml +++ b/charts/consul/templates/server-statefulset.yaml @@ -285,6 +285,11 @@ spec: secretKeyRef: name: {{ .Values.global.cloud.secretName }} key: api-hostname + - name: HCP_SCADA_ADDRESS + valueFrom: + secretKeyRef: + name: {{ .Values.global.cloud.secretName }} + key: scada-address {{- end }} {{- include "consul.extraEnvironmentVars" .Values.server | nindent 12 }} command: diff --git a/charts/consul/test/unit/server-statefulset.bats b/charts/consul/test/unit/server-statefulset.bats index 0053346aea..354a5123cd 100755 --- a/charts/consul/test/unit/server-statefulset.bats +++ b/charts/consul/test/unit/server-statefulset.bats @@ -1923,7 +1923,7 @@ load _helpers [ "${envvar}" = "" ] } -@test "server/StatefulSet: does not create HCP_RESOURCE_ID, HCP_CLIENT_ID, HCP_CLIENT_SECRET, HCP_AUTH_URL, and HCP_API_HOSTNAME envvars in consul container when global.cloud.enabled is not set" { +@test "server/StatefulSet: does not create HCP_RESOURCE_ID, HCP_CLIENT_ID, HCP_CLIENT_SECRET, HCP_AUTH_URL, HCP_SCADA_ADDRESS, and HCP_API_HOSTNAME envvars in consul container when global.cloud.enabled is not set" { cd `chart_dir` local object=$(helm template \ -s templates/server-statefulset.yaml \ @@ -1953,6 +1953,10 @@ load _helpers yq -r '.env[] | select(.name == "HCP_API_HOSTNAME")' | tee /dev/stderr) [ "${envvar}" = "" ] + envvar=$(echo "$container" | + yq -r '.env[] | select(.name == "HCP_SCADA_ADDRESS")' | tee /dev/stderr) + [ "${envvar}" = "" ] + } @test "server/StatefulSet: cloud config is set in command when global.cloud.enabled is set" { @@ -1969,7 +1973,7 @@ load _helpers } -@test "server/StatefulSet: creates HCP_RESOURCE_ID, HCP_CLIENT_ID, HCP_CLIENT_SECRET, HCP_AUTH_URL, and HCP_API_HOSTNAME envvars in consul container when global.cloud.enabled is set" { +@test "server/StatefulSet: creates HCP_RESOURCE_ID, HCP_CLIENT_ID, HCP_CLIENT_SECRET, HCP_AUTH_URL, HCP_SCADA_ADDRESS, and HCP_API_HOSTNAME envvars in consul container when global.cloud.enabled is set" { cd `chart_dir` local object=$(helm template \ -s templates/server-statefulset.yaml \ @@ -2039,6 +2043,18 @@ load _helpers actual=$(echo "$envvar" | yq -r '.valueFrom.secretKeyRef.key' | tee /dev/stderr) [ "${actual}" = "api-hostname" ] + + # HCP_SCADA_ADDRESS + envvar=$(echo "$container" | + yq -r '.env[] | select(.name == "HCP_SCADA_ADDRESS")' | tee /dev/stderr) + + local actual=$(echo "$envvar" | + yq -r '.valueFrom.secretKeyRef.name' | tee /dev/stderr) + [ "${actual}" = "foo" ] + + actual=$(echo "$envvar" | + yq -r '.valueFrom.secretKeyRef.key' | tee /dev/stderr) + [ "${actual}" = "scada-address" ] } @test "server/StatefulSet: cloud config is set in command global.cloud.enabled is not set" { diff --git a/cli/cmd/install/install.go b/cli/cmd/install/install.go index 4aa4df10cd..ecb8f3d67e 100644 --- a/cli/cmd/install/install.go +++ b/cli/cmd/install/install.go @@ -68,6 +68,7 @@ const ( envHCPClientSecret = "HCP_CLIENT_SECRET" envHCPAuthURL = "HCP_AUTH_URL" envHCPAPIHost = "HCP_API_HOST" + envHCPScadaAddress = "HCP_SCADA_ADDRESS" flagNameDemo = "demo" defaultDemo = false @@ -655,6 +656,7 @@ func (c *Command) getPreset(name string) (preset.Preset, error) { ClientSecret: os.Getenv(envHCPClientSecret), AuthURL: os.Getenv(envHCPAuthURL), APIHostname: os.Getenv(envHCPAPIHost), + ScadaAddress: os.Getenv(envHCPScadaAddress), } getPresetConfig := &preset.GetPresetConfig{ Name: name, diff --git a/cli/preset/cloud_preset.go b/cli/preset/cloud_preset.go index d0988831c9..a97cdf46b6 100644 --- a/cli/preset/cloud_preset.go +++ b/cli/preset/cloud_preset.go @@ -31,6 +31,7 @@ const ( secretKeyHCPResourceID = "resource-id" secretKeyHCPAuthURL = "auth-url" secretKeyHCPAPIHostname = "api-hostname" + secretKeyHCPScadaAddress = "scada-address" secretKeyGossipKey = "key" secretKeyBootstrapToken = "token" ) @@ -52,6 +53,7 @@ type HCPConfig struct { ClientSecret string AuthURL string APIHostname string + ScadaAddress string } // ConsulConfig represents 'cluster.consul_config' in the response @@ -302,6 +304,7 @@ func (i *CloudPreset) saveServerHCPConfigSecret(config *CloudBootstrapConfig) er secretKeyHCPResourceID: []byte(config.HCPConfig.ResourceID), secretKeyHCPAuthURL: []byte(config.HCPConfig.AuthURL), secretKeyHCPAPIHostname: []byte(config.HCPConfig.APIHostname), + secretKeyHCPScadaAddress: []byte(config.HCPConfig.ScadaAddress), } if err := i.saveSecret(secretNameHCPConfig, data, corev1.SecretTypeOpaque); err != nil { return err diff --git a/cli/preset/cloud_preset_test.go b/cli/preset/cloud_preset_test.go index a3ec87325a..521abaa7ac 100644 --- a/cli/preset/cloud_preset_test.go +++ b/cli/preset/cloud_preset_test.go @@ -76,6 +76,7 @@ var hcpConfig *HCPConfig = &HCPConfig{ ClientSecret: hcpClientSecret, AuthURL: "https://foobar", APIHostname: "https://foo.bar", + ScadaAddress: "10.10.10.10", } var validBootstrapConfig *CloudBootstrapConfig = &CloudBootstrapConfig{ @@ -398,6 +399,7 @@ func checkSecretsWereSaved(t require.TestingT, k8s kubernetes.Interface, expecte require.Equal(t, expectedConfig.HCPConfig.ClientSecret, string(hcpConfigSecret.Data[secretKeyHCPClientSecret])) require.Equal(t, expectedConfig.HCPConfig.ResourceID, string(hcpConfigSecret.Data[secretKeyHCPResourceID])) require.Equal(t, expectedConfig.HCPConfig.AuthURL, string(hcpConfigSecret.Data[secretKeyHCPAuthURL])) + require.Equal(t, expectedConfig.HCPConfig.ScadaAddress, string(hcpConfigSecret.Data[secretKeyHCPScadaAddress])) require.Equal(t, expectedConfig.HCPConfig.APIHostname, string(hcpConfigSecret.Data[secretKeyHCPAPIHostname])) require.Equal(t, corev1.SecretTypeOpaque, hcpConfigSecret.Type) require.Equal(t, common.CLILabelValue, hcpConfigSecret.Labels[common.CLILabelKey])