From 4e67aed0f3f397a0df584b4b7a28721a63ce00f3 Mon Sep 17 00:00:00 2001 From: James Slagle Date: Thu, 11 Dec 2025 17:45:04 -0500 Subject: [PATCH] Don't Unmarshal edpm_services_override edpm_services_override is already marshal'd to JSON in ansible_execution.go, so there's no need to unmarshal and print it to string, b/c go drops the commas from the marshal'd value. This was breaking the download-cache service that relies on the proper value of edpm_services_override when using download-cache and servicesOverride on a Deployment. Jira: OSPRH-21737 Signed-off-by: James Slagle --- internal/dataplane/util/ansible_execution.go | 3 ++- internal/dataplane/util/ansibleee.go | 23 +++++++++---------- .../04-assert.yaml | 3 ++- .../07-assert.yaml | 3 ++- .../dataplane-deploy-tls-test/03-assert.yaml | 10 ++++++-- 5 files changed, 25 insertions(+), 17 deletions(-) diff --git a/internal/dataplane/util/ansible_execution.go b/internal/dataplane/util/ansible_execution.go index 0a50ed875..b9776cdb8 100644 --- a/internal/dataplane/util/ansible_execution.go +++ b/internal/dataplane/util/ansible_execution.go @@ -279,7 +279,8 @@ func (a *EEJob) FormatAEEExtraVars( } if len(deployment.Spec.ServicesOverride) > 0 { - a.ExtraVars["edpm_services_override"] = json.RawMessage([]byte(fmt.Sprintf("\"%s\"", deployment.Spec.ServicesOverride))) + marshalServicesOverride, _ := json.Marshal(deployment.Spec.ServicesOverride) + a.ExtraVars["edpm_services_override"] = json.RawMessage(marshalServicesOverride) } } diff --git a/internal/dataplane/util/ansibleee.go b/internal/dataplane/util/ansibleee.go index 1cf79eb8e..ca4ffb8e5 100644 --- a/internal/dataplane/util/ansibleee.go +++ b/internal/dataplane/util/ansibleee.go @@ -3,7 +3,6 @@ package util //nolint:revive // util is an acceptable package name in this conte import ( "encoding/json" "fmt" - "sort" "github.com/openstack-k8s-operators/lib-common/modules/storage" yaml "gopkg.in/yaml.v3" @@ -175,22 +174,22 @@ func (a *EEJob) JobForOpenStackAnsibleEE(h *helper.Helper) (*batchv1.Job, error) // if we have any extra vars for ansible to use set them in the RUNNER_EXTRA_VARS if len(a.ExtraVars) > 0 { - keys := make([]string, 0, len(a.ExtraVars)) - for k := range a.ExtraVars { - keys = append(keys, k) - } - sort.Strings(keys) - parsedExtraVars := "" - // unmarshal nested data structures - for _, variable := range keys { + extraVarsMap := make(map[string]interface{}) + for variable, rawValue := range a.ExtraVars { var tmp interface{} - err := yaml.Unmarshal(a.ExtraVars[variable], &tmp) + err := yaml.Unmarshal(rawValue, &tmp) if err != nil { return nil, err } - parsedExtraVars += fmt.Sprintf("%s: %s\n", variable, tmp) + extraVarsMap[variable] = tmp + } + + yamlBytes, err := yaml.Marshal(extraVarsMap) + if err != nil { + return nil, err } - setRunnerEnvVar(h, "RUNNER_EXTRA_VARS", parsedExtraVars, "extraVars", job, hashes) + + setRunnerEnvVar(h, "RUNNER_EXTRA_VARS", string(yamlBytes), "extraVars", job, hashes) } hashPodSpec(h, podSpec, hashes) diff --git a/test/kuttl/tests/dataplane-deploy-no-nodes-test/04-assert.yaml b/test/kuttl/tests/dataplane-deploy-no-nodes-test/04-assert.yaml index d11666214..322860f53 100644 --- a/test/kuttl/tests/dataplane-deploy-no-nodes-test/04-assert.yaml +++ b/test/kuttl/tests/dataplane-deploy-no-nodes-test/04-assert.yaml @@ -124,7 +124,8 @@ spec: edpm_override_hosts: edpm-compute-no-nodes edpm_service_type: ovn - edpm_services_override: [ovn] + edpm_services_override: + - ovn imagePullPolicy: Always diff --git a/test/kuttl/tests/dataplane-deploy-no-nodes-test/07-assert.yaml b/test/kuttl/tests/dataplane-deploy-no-nodes-test/07-assert.yaml index 32c1b4ca8..bb27c35c4 100644 --- a/test/kuttl/tests/dataplane-deploy-no-nodes-test/07-assert.yaml +++ b/test/kuttl/tests/dataplane-deploy-no-nodes-test/07-assert.yaml @@ -58,7 +58,8 @@ spec: edpm_override_hosts: edpm-compute-no-nodes edpm_service_type: configure-os - edpm_services_override: [configure-os] + edpm_services_override: + - configure-os imagePullPolicy: Always diff --git a/test/kuttl/tests/dataplane-deploy-tls-test/03-assert.yaml b/test/kuttl/tests/dataplane-deploy-tls-test/03-assert.yaml index e4d6f62b2..0aefd12c8 100644 --- a/test/kuttl/tests/dataplane-deploy-tls-test/03-assert.yaml +++ b/test/kuttl/tests/dataplane-deploy-tls-test/03-assert.yaml @@ -204,7 +204,10 @@ spec: edpm_override_hosts: openstack-edpm-tls edpm_service_type: tls-dns-ips - edpm_services_override: [install-certs-ovrd tls-dns-ips custom-tls-dns] + edpm_services_override: + - install-certs-ovrd + - tls-dns-ips + - custom-tls-dns imagePullPolicy: Always @@ -315,7 +318,10 @@ spec: edpm_override_hosts: openstack-edpm-tls edpm_service_type: custom-tls-dns - edpm_services_override: [install-certs-ovrd tls-dns-ips custom-tls-dns] + edpm_services_override: + - install-certs-ovrd + - tls-dns-ips + - custom-tls-dns imagePullPolicy: Always