)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"cdb0bc8c8454951e4a18324978a67cac4f762d92","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"3119fdc8_b15c393f","updated":"2026-09-18 01:47:46.000000000","message":"As I pointed out in my previous comment I wasn\u0027t able to reproduce the issue. I tried to render the neutron chart with and without this PS and with the override that sets one of the parameters to empty string.\n\n\nHere is the script that can be used to check how the mergeOverwrite works with and without strip_overridden_keys. I used helm 4.2.1.\n```\nR\u003d~/openstack-helm\nrm -rf /tmp/mergeprobe \u0026\u0026 mkdir -p /tmp/mergeprobe/templates \u0026\u0026 cd /tmp/mergeprobe\n\ncat \u003e Chart.yaml \u003c\u003c\u0027EOF\u0027\napiVersion: v2\nname: mergeprobe\nversion: 0.1.0\nEOF\n\ncp $R/helm-toolkit/templates/utils/_merge.tpl templates/_merge.tpl\n\ncat \u003e values.yaml \u003c\u003c\u0027EOF\u0027\nbase:\n  str:    \"external:br-ex\"\n  num:    42\n  flag:   true\n  alist:  [a, b, c]\n  amap:   {inner: keepme}\n  nested: {deep: {xx: \"base-xx\", yy: \"base-yy\"}}\noverride:\n  str:    \"\"\n  num:    0\n  flag:   false\n  alist:  []\n  amap:   {}\n  nested: {deep: {xx: \"\"}}\nEOF\n\ncat \u003e templates/probe.yaml \u003c\u003c\u0027EOF\u0027\n{{- $b1 :\u003d .Values.base | toYaml | fromYaml }}\n{{- $o1 :\u003d .Values.override | toYaml | fromYaml }}\n---\n# A) mergeOverwrite alone (what master does)\n{{ (mergeOverwrite $b1 $o1) | toYaml | nindent 0 }}\n{{- $b2 :\u003d .Values.base | toYaml | fromYaml }}\n{{- $o2 :\u003d .Values.override | toYaml | fromYaml }}\n{{- $_ :\u003d include \"helm-toolkit.utils.strip_overridden_keys\" (dict \"target\" $b2 \"source\" $o2) }}\n---\n# B) strip_overridden_keys + mergeOverwrite (what the patch does)\n{{ (mergeOverwrite $b2 $o2) | toYaml | nindent 0 }}\n{{- $b3 :\u003d .Values.base | toYaml | fromYaml }}\n{{- $o3 :\u003d .Values.override | toYaml | fromYaml }}\n---\n# C) plain merge -- THIS is the behaviour the commit describes\n{{ (merge $b3 $o3) | toYaml | nindent 0 }}\nEOF\n\nhelm template . | grep -v \u0027^# Source\u0027\n\n```","commit_id":"c0e75ebd3f25cc31d8a4cc80278468c2507ca906"},{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"b027131e6ab37315709d8bbf9891d585981e875c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"cd8f9142_c057dfad","updated":"2026-09-17 16:52:21.000000000","message":"I rendered neutron with the exact commit message scenario (a host override setting plugins.openvswitch_agent.ovs.bridge_mappings to \"\") on HEAD~1 and on this patch. Output is byte-identical and in both cases the override host gets \"bridge_mappings \u003d \" while other hosts keep \"external:br-ex\".","commit_id":"c0e75ebd3f25cc31d8a4cc80278468c2507ca906"}]}
