diff --git a/releasenotes/notes/ironic-empty-log-config-57f81ea05b6c29d4.yaml b/releasenotes/notes/ironic-empty-log-config-57f81ea05b6c29d4.yaml new file mode 100644 index 0000000000..3d991bfbd2 --- /dev/null +++ b/releasenotes/notes/ironic-empty-log-config-57f81ea05b6c29d4.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + Renders an empty ``log_config_append`` value when file-based Ironic + logging is disabled. This avoids serializing YAML ``null`` as the literal + ```` filename in ``ironic.conf``. diff --git a/roles/ironic/vars/main.yml b/roles/ironic/vars/main.yml index 57a0f1b57e..9ce4bf980c 100644 --- a/roles/ironic/vars/main.yml +++ b/roles/ironic/vars/main.yml @@ -44,7 +44,7 @@ _ironic_helm_values: conf: ironic: DEFAULT: - log_config_append: null + log_config_append: "" enabled_network_interfaces: flat,neutron default_network_interface: flat rbac_service_role_elevated_access: true diff --git a/roles/ironic/vars_test.go b/roles/ironic/vars_test.go index f8bc0f96f0..4cc6aa57ad 100644 --- a/roles/ironic/vars_test.go +++ b/roles/ironic/vars_test.go @@ -61,3 +61,20 @@ func TestHelmValues(t *testing.T) { testutils.TestAllPodsHaveRuntimeClass(t, vals) testutils.TestAllPodsHavePriorityClass(t, vals) } +func TestDisabledLogConfigRendersEmptyValue(t *testing.T) { + var values struct { + HelmValues struct { + Conf struct { + Ironic struct { + Default map[string]any `yaml:"DEFAULT"` + } `yaml:"ironic"` + } `yaml:"conf"` + } `yaml:"_ironic_helm_values"` + } + err := yaml.UnmarshalWithOptions(varsFile, &values) + require.NoError(t, err) + require.Contains(t, values.HelmValues.Conf.Ironic.Default, + "log_config_append") + require.Equal(t, "", + values.HelmValues.Conf.Ironic.Default["log_config_append"]) +}