)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"ef12bdc299e0a0ee6d08313b510d4a5c8834c240","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"f935b37d_0dcf9aac","updated":"2026-07-01 15:47:23.000000000","message":"Can you please add release notes for this change?","commit_id":"769820b0aefe0946b9abf3f5b3198e7e2756c273"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"d255fb5e37d211587a7d0a2a5f68af3fafdf897e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"143c16cc_10371288","updated":"2026-07-06 21:50:42.000000000","message":"Won\u0027t block the change. I shared my opinion in the comments.","commit_id":"e4bcb9a280610f13586ef001f7da16e2cef713d0"}],"heat/templates/configmap-etc.yaml":[{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"1facd5cff450b73d1bf5554f0889207912e4b266","unresolved":true,"context_lines":[{"line_number":78,"context_line":"{{- $_ :\u003d set .Values.conf.heat.keystone_authtoken \"memcache_secret_key\" ( default ( randAlphaNum 64 ) .Values.endpoints.oslo_cache.auth.memcache_secret_key ) -}}"},{"line_number":79,"context_line":"{{- end -}}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"{{- if and (hasKey .Values.conf.heat \"cache\") (kindIs \"map\" .Values.conf.heat.cache) (empty .Values.conf.heat.cache.memcache_servers) }}"},{"line_number":82,"context_line":"{{- $_ :\u003d tuple \"oslo_cache\" \"internal\" \"memcache\" . | include \"helm-toolkit.endpoints.host_and_port_endpoint_uri_lookup\" | set .Values.conf.heat.cache \"memcache_servers\" -}}"},{"line_number":83,"context_line":"{{- end -}}"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":3,"id":"022444cf_9525575a","line":81,"updated":"2026-07-06 16:31:52.000000000","message":"\u003e [...] while\n\u003e bringing these charts in line with other OpenStack-Helm services that\n\u003e already populate cache memcache_servers from the oslo_cache endpoint.\n\nOther charts are using this condition:\n\n    {{- if empty .Values.conf.nova.cache.memcache_servers -}}\n    \nDid you find any issue with it? If not, can we use the same for consistency?","commit_id":"e4bcb9a280610f13586ef001f7da16e2cef713d0"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"d149ee7683869b590398561f073a9a6e253ec0fc","unresolved":true,"context_lines":[{"line_number":78,"context_line":"{{- $_ :\u003d set .Values.conf.heat.keystone_authtoken \"memcache_secret_key\" ( default ( randAlphaNum 64 ) .Values.endpoints.oslo_cache.auth.memcache_secret_key ) -}}"},{"line_number":79,"context_line":"{{- end -}}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"{{- if and (hasKey .Values.conf.heat \"cache\") (kindIs \"map\" .Values.conf.heat.cache) (empty .Values.conf.heat.cache.memcache_servers) }}"},{"line_number":82,"context_line":"{{- $_ :\u003d tuple \"oslo_cache\" \"internal\" \"memcache\" . | include \"helm-toolkit.endpoints.host_and_port_endpoint_uri_lookup\" | set .Values.conf.heat.cache \"memcache_servers\" -}}"},{"line_number":83,"context_line":"{{- end -}}"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":3,"id":"ee856270_01f92da4","line":81,"in_reply_to":"022444cf_9525575a","updated":"2026-07-06 17:47:52.000000000","message":"This check guards against .Values.conf.heat not having a \"cache\" key and it not being a mapping. I don\u0027t believe a \"cache\" key is required so its likely a good safety check.","commit_id":"e4bcb9a280610f13586ef001f7da16e2cef713d0"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"102e2715abef132ba79e4457cbef3631a392194a","unresolved":false,"context_lines":[{"line_number":78,"context_line":"{{- $_ :\u003d set .Values.conf.heat.keystone_authtoken \"memcache_secret_key\" ( default ( randAlphaNum 64 ) .Values.endpoints.oslo_cache.auth.memcache_secret_key ) -}}"},{"line_number":79,"context_line":"{{- end -}}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"{{- if and (hasKey .Values.conf.heat \"cache\") (kindIs \"map\" .Values.conf.heat.cache) (empty .Values.conf.heat.cache.memcache_servers) }}"},{"line_number":82,"context_line":"{{- $_ :\u003d tuple \"oslo_cache\" \"internal\" \"memcache\" . | include \"helm-toolkit.endpoints.host_and_port_endpoint_uri_lookup\" | set .Values.conf.heat.cache \"memcache_servers\" -}}"},{"line_number":83,"context_line":"{{- end -}}"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":3,"id":"774554dc_37b31a62","line":81,"in_reply_to":"4790e971_36fb145d","updated":"2026-07-07 17:59:20.000000000","message":"Alright, lets keep your proposal.","commit_id":"e4bcb9a280610f13586ef001f7da16e2cef713d0"},{"author":{"_account_id":39233,"name":"Adam Fabian","display_name":"awfabian-rs","email":"adam.fabian@rackspace.com","username":"awfabian-rs"},"change_message_id":"c0bb7a3eda5507c61505ea80f2021ce54c3c4b62","unresolved":false,"context_lines":[{"line_number":78,"context_line":"{{- $_ :\u003d set .Values.conf.heat.keystone_authtoken \"memcache_secret_key\" ( default ( randAlphaNum 64 ) .Values.endpoints.oslo_cache.auth.memcache_secret_key ) -}}"},{"line_number":79,"context_line":"{{- end -}}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"{{- if and (hasKey .Values.conf.heat \"cache\") (kindIs \"map\" .Values.conf.heat.cache) (empty .Values.conf.heat.cache.memcache_servers) }}"},{"line_number":82,"context_line":"{{- $_ :\u003d tuple \"oslo_cache\" \"internal\" \"memcache\" . | include \"helm-toolkit.endpoints.host_and_port_endpoint_uri_lookup\" | set .Values.conf.heat.cache \"memcache_servers\" -}}"},{"line_number":83,"context_line":"{{- end -}}"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":3,"id":"4790e971_36fb145d","line":81,"in_reply_to":"8ef8b7ce_ab799cd1","updated":"2026-07-07 17:26:07.000000000","message":"I tested both cache.enabled \u003d false and cache: {}.\n\nAdding conf.\u003cchart\u003e.cache.enabled \u003d false lets the simpler empty .Values.conf.\u003cchart\u003e.cache.memcache_servers guard render successfully, but it also adds a default [cache] enabled \u003d false section to the generated service config:\n\n```\n[cache]\nenabled \u003d false\nmemcache_servers \u003d memcached.default.svc.cluster.local:11211\n```\n\nI also tested cache: {} in values.yaml. For neutron (I didn\u0027t test all charts with this variant), that avoids setting enabled \u003d false, but still renders a [cache] section:\n\n```\n[cache]\nmemcache_servers \u003d memcached.default.svc.cluster.local:11211\n```\n\nIt may be possible to avoid rendering the section with additional template logic, but that would move the complexity from the guard into the rendering logic rather than removing it.\n\nUnless you feel strongly about matching the simpler guard pattern, I think the current guarded form is the narrower change. It avoids nil-pointer errors, preserves explicit memcache_servers overrides, and does not introduce a new default [cache] section when cache is otherwise not configured.","commit_id":"e4bcb9a280610f13586ef001f7da16e2cef713d0"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"d255fb5e37d211587a7d0a2a5f68af3fafdf897e","unresolved":true,"context_lines":[{"line_number":78,"context_line":"{{- $_ :\u003d set .Values.conf.heat.keystone_authtoken \"memcache_secret_key\" ( default ( randAlphaNum 64 ) .Values.endpoints.oslo_cache.auth.memcache_secret_key ) -}}"},{"line_number":79,"context_line":"{{- end -}}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"{{- if and (hasKey .Values.conf.heat \"cache\") (kindIs \"map\" .Values.conf.heat.cache) (empty .Values.conf.heat.cache.memcache_servers) }}"},{"line_number":82,"context_line":"{{- $_ :\u003d tuple \"oslo_cache\" \"internal\" \"memcache\" . | include \"helm-toolkit.endpoints.host_and_port_endpoint_uri_lookup\" | set .Values.conf.heat.cache \"memcache_servers\" -}}"},{"line_number":83,"context_line":"{{- end -}}"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":3,"id":"8ef8b7ce_ab799cd1","line":81,"in_reply_to":"e95fb391_460b2360","updated":"2026-07-06 21:50:42.000000000","message":"Don\u0027t you need to provide cache.enabled to enable cache? If so, can\u0027t we define cache.enabled \u003d false as default and therefore making cache a map by default. Just not a fan of adding type validation when elsewhere we don\u0027t for the same feature.","commit_id":"e4bcb9a280610f13586ef001f7da16e2cef713d0"},{"author":{"_account_id":39233,"name":"Adam Fabian","display_name":"awfabian-rs","email":"adam.fabian@rackspace.com","username":"awfabian-rs"},"change_message_id":"753f9b72c1644f70dadf3f89df77722cbf2ecfd8","unresolved":false,"context_lines":[{"line_number":78,"context_line":"{{- $_ :\u003d set .Values.conf.heat.keystone_authtoken \"memcache_secret_key\" ( default ( randAlphaNum 64 ) .Values.endpoints.oslo_cache.auth.memcache_secret_key ) -}}"},{"line_number":79,"context_line":"{{- end -}}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"{{- if and (hasKey .Values.conf.heat \"cache\") (kindIs \"map\" .Values.conf.heat.cache) (empty .Values.conf.heat.cache.memcache_servers) }}"},{"line_number":82,"context_line":"{{- $_ :\u003d tuple \"oslo_cache\" \"internal\" \"memcache\" . | include \"helm-toolkit.endpoints.host_and_port_endpoint_uri_lookup\" | set .Values.conf.heat.cache \"memcache_servers\" -}}"},{"line_number":83,"context_line":"{{- end -}}"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":3,"id":"e95fb391_460b2360","line":81,"in_reply_to":"ee856270_01f92da4","updated":"2026-07-06 18:48:07.000000000","message":"I tested the plain `empty .Values.conf.\u003cchart\u003e.cache.memcache_servers` form.\n\nIt did not fail for zaqar in my local check, but `helm lint` / `helm template` fails for heat, neutron, and trove because those charts can render without `conf.\u003cchart\u003e.cache` defined, so the direct nested access fails with a nil pointer before `empty` can evaluate `memcache_servers`.\n\nBecause of that, I kept the guarded form in this patchset. With the guarded form, `helm lint` and `helm template` pass for heat, neutron, trove, and zaqar. It only populates `memcache_servers` when the cache section exists and is a mapping, while still preserving explicit user overrides.","commit_id":"e4bcb9a280610f13586ef001f7da16e2cef713d0"}],"releasenotes/notes/common-69dcb0c8ac5ec814.yaml":[{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"0a126b18837bacce7e06989236189285ee4454fd","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e3578c0f_41c568eb","line":11,"updated":"2026-07-02 19:09:29.000000000","message":"End the release note with a `...`","commit_id":"37fe82a539d0ed00286c5213c719c256bee8fa1b"},{"author":{"_account_id":39233,"name":"Adam Fabian","display_name":"awfabian-rs","email":"adam.fabian@rackspace.com","username":"awfabian-rs"},"change_message_id":"43ed032564c4b025c562a721f60dd1871093b681","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"36891bd0_c7e74577","line":11,"in_reply_to":"e3578c0f_41c568eb","updated":"2026-07-06 17:19:29.000000000","message":"Done","commit_id":"37fe82a539d0ed00286c5213c719c256bee8fa1b"}]}
