diff --git a/internal/dataplane/inventory.go b/internal/dataplane/inventory.go index f8dbc9178..3f13b08db 100644 --- a/internal/dataplane/inventory.go +++ b/internal/dataplane/inventory.go @@ -153,9 +153,8 @@ func GenerateNodeSetInventory(ctx context.Context, helper *helper.Helper, return "", fmt.Errorf("failed to get MachineConfig registry configuration: %w", err) } } else { - helper.GetLogger().Info("Mirror registries detected via IDMS/ICSP. Using OCP registry configuration.") - nodeSetGroup.Vars["edpm_podman_registries_conf"] = registryConfig - nodeSetGroup.Vars["edpm_podman_disconnected_ocp"] = hasMirrorRegistries + helper.GetLogger().Info("Mirror registries detected via IDMS/ICSP. Using OCP registry configuration defaults.") + setDefaultPodmanRegistryConfigVars(nodeSetGroup.Vars, hasMirrorRegistries, registryConfig) } mirrorScopes, sourceByMirror, err := util.GetMirrorRegistryScopes(ctx, helper) @@ -306,6 +305,15 @@ func populateInventoryFromIPAM( host.Vars["dns_search_domains"] = dnsSearchDomains } +func setDefaultPodmanRegistryConfigVars(vars map[string]interface{}, hasMirrorRegistries bool, registryConfig string) { + if _, ok := vars["edpm_podman_registries_conf"]; !ok { + vars["edpm_podman_registries_conf"] = registryConfig + } + if _, ok := vars["edpm_podman_disconnected_ocp"]; !ok { + vars["edpm_podman_disconnected_ocp"] = hasMirrorRegistries + } +} + // set group ansible vars from NodeTemplate func resolveGroupAnsibleVars(template *dataplanev1.NodeTemplate, group *ansible.Group, containerImages openstackv1.ContainerImages, diff --git a/internal/dataplane/inventory_test.go b/internal/dataplane/inventory_test.go index 896c20afc..df55a694c 100644 --- a/internal/dataplane/inventory_test.go +++ b/internal/dataplane/inventory_test.go @@ -86,6 +86,48 @@ func TestProcessConfigMapData_NumbersAsInts(t *testing.T) { } } +func TestSetDefaultPodmanRegistryConfigVars(t *testing.T) { + tests := []struct { + name string + vars map[string]interface{} + expectedConfig string + expectedOCP bool + }{ + { + name: "sets registry configuration defaults", + vars: map[string]interface{}{}, + expectedConfig: "ocp registry config", + expectedOCP: true, + }, + { + name: "preserves user registry configuration vars", + vars: map[string]interface{}{ + "edpm_podman_registries_conf": "director local mirror config", + "edpm_podman_disconnected_ocp": false, + }, + expectedConfig: "director local mirror config", + expectedOCP: false, + }, + { + name: "preserves independently overridden registry configuration vars", + vars: map[string]interface{}{ + "edpm_podman_disconnected_ocp": false, + }, + expectedConfig: "ocp registry config", + expectedOCP: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + setDefaultPodmanRegistryConfigVars(tt.vars, true, "ocp registry config") + + assert.Equal(t, tt.expectedConfig, tt.vars["edpm_podman_registries_conf"]) + assert.Equal(t, tt.expectedOCP, tt.vars["edpm_podman_disconnected_ocp"]) + }) + } +} + func TestProcessSecretData_NumbersAsInts(t *testing.T) { tests := []struct { name string