)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"f323bf9f957dbd7cfde078c47616600078b4f211","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Aydin \u003caydintabatabaei909@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-05-20 01:27:31 +0330"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"rometheus: fix custom alertmanager config Jinja2 conflict"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When operators provide a custom prometheus-alertmanager.yml config file,"},{"line_number":10,"context_line":"the task uses the template module which causes Jinja2 to process the file."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"0bad7e96_f09efa85","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":9},"updated":"2026-05-20 18:09:20.000000000","message":"Prometheus","commit_id":"2c74ce5ed7bd09d04c368da6363e1dc33b396d2f"},{"author":{"_account_id":39111,"name":"aydin tabatabaei","display_name":"aydin","email":"aydintabatabaei909@gmail.com","username":"aydin381"},"change_message_id":"ae025f44850c525eb38b767c9a1ca45d9a8daca7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Aydin \u003caydintabatabaei909@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-05-20 01:27:31 +0330"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"rometheus: fix custom alertmanager config Jinja2 conflict"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When operators provide a custom prometheus-alertmanager.yml config file,"},{"line_number":10,"context_line":"the task uses the template module which causes Jinja2 to process the file."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1571cd7e_072ade92","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":9},"in_reply_to":"0bad7e96_f09efa85","updated":"2026-05-21 14:53:48.000000000","message":"Done","commit_id":"2c74ce5ed7bd09d04c368da6363e1dc33b396d2f"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"cf474f3f36e3fee5587290e6f97473a33de191be","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"2033f495_2f4d32b9","updated":"2026-05-15 11:36:40.000000000","message":"https://review.opendev.org/c/openstack/kolla-ansible/+/981547 tries a different approach on this, which looks more reasonable to me, wdyt?","commit_id":"aac1006dbfb2b78127d9d4ab89447f0258b825af"},{"author":{"_account_id":39111,"name":"aydin tabatabaei","display_name":"aydin","email":"aydintabatabaei909@gmail.com","username":"aydin381"},"change_message_id":"b53cc6a438e601a1c2d10a7962ee57eb3e5b450c","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"f0803196_e2f53c11","in_reply_to":"08f180a8_ba7ce8a4","updated":"2026-05-15 12:20:39.000000000","message":"Thank you for the suggestion. I agree that the delimiter override \napproach from patch 981547 is cleaner. I have updated this patch \nto use the same approach","commit_id":"aac1006dbfb2b78127d9d4ab89447f0258b825af"},{"author":{"_account_id":39111,"name":"aydin tabatabaei","display_name":"aydin","email":"aydintabatabaei909@gmail.com","username":"aydin381"},"change_message_id":"78e2610322380c81b010620b2b15ce27738bc22a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"08f180a8_ba7ce8a4","in_reply_to":"2033f495_2f4d32b9","updated":"2026-05-15 11:50:51.000000000","message":"Thank you for the review and the reference.\n\nI looked at patch 981547, but I believe these two patches address \ndifferent problems:\n\n- Patch 981547 is about copying custom alert rules files to the \n  prometheus-server using copy module instead of template.\n\n- This patch specifically addresses the prometheus-alertmanager config \n  file (prometheus-alertmanager.yml), which is a separate service and \n  a separate task entirely.\n\nThe issue I am solving is that operators who provide a custom \nalertmanager config with Go template syntax (e.g. for Slack \nnotifications) hit a Jinja2 syntax conflict because the task uses \nthe template module unconditionally, even for user-provided files.\n\nSo while the approach is similar, there is no overlap between the \ntwo patches and both are needed independently.\n\nWould you agree this patch should proceed on its own?","commit_id":"aac1006dbfb2b78127d9d4ab89447f0258b825af"},{"author":{"_account_id":39111,"name":"aydin tabatabaei","display_name":"aydin","email":"aydintabatabaei909@gmail.com","username":"aydin381"},"change_message_id":"f0b112b72bd3be0362ccf2adf5042680db357af9","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"05b7fe15_ba081a60","in_reply_to":"5aea90f6_9d6a5f38","updated":"2026-05-18 20:21:59.000000000","message":"Combined both fixes and added your documentation in this new patchset.","commit_id":"aac1006dbfb2b78127d9d4ab89447f0258b825af"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"742d51efbe4e3e45bc10a630a579150206aa7b2c","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"dca384a1_73e1d92d","in_reply_to":"93549aaa_a156e162","updated":"2026-05-18 09:40:55.000000000","message":"We did have a discussion at the PTG around change the delimiters for all prometheus config files: https://etherpad.opendev.org/p/kolla-hibiscus-ptg#L255 using a variable to set the delimiters.","commit_id":"aac1006dbfb2b78127d9d4ab89447f0258b825af"},{"author":{"_account_id":39111,"name":"aydin tabatabaei","display_name":"aydin","email":"aydintabatabaei909@gmail.com","username":"aydin381"},"change_message_id":"ae4f5775d1a31069b4716d181112b60131bf816a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"eb6f9f42_21535f43","in_reply_to":"db333d7c_5db0506d","updated":"2026-05-18 10:03:17.000000000","message":"Got it! I will implement the fix using these global variables and include your documentation in the next patchset.","commit_id":"aac1006dbfb2b78127d9d4ab89447f0258b825af"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"fadcdf6f30c0cd95223abb67386ded0b3e34b880","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"ee4e84e6_844508e3","in_reply_to":"dca384a1_73e1d92d","updated":"2026-05-18 09:46:42.000000000","message":"prometheus_block_start_string: \"\u003c%\"\n    prometheus_block_end_string: \"%\u003e\"\n    prometheus_variable_start_string: \"%%\"\n    prometheus_variable_end_string: \"%%\"\n\n\n    ansible.builtin.template:\n      src: \"{{ item }}\"\n      dest: \"{{ node_config_directory }}/prometheus-alertmanager/prometheus-alertmanager.yml\"\n      mode: \"0660\"\n      block_start_string: \"{{ prometheus_block_start_string }}\"\n      block_end_string: \"{{ prometheus_block_end_string }}\"\n      variable_start_string: \"{{ prometheus_variable_start_string }}\"\n      variable_end_string: \"{{ prometheus_variable_end_string }}\"","commit_id":"aac1006dbfb2b78127d9d4ab89447f0258b825af"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"6606941aec31932ede5f441f6d00cc4424086f8f","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"5aea90f6_9d6a5f38","in_reply_to":"eb6f9f42_21535f43","updated":"2026-05-18 10:59:15.000000000","message":"Perfect - Do you think it would make sense to incorporate my change into yours and do it all in one patch? If so, I\u0027m happy to abandon. Alternatively, it could be a follow up, as it also turns on templating for the alert files (which is another change in behavior). I\u0027m easy either way.","commit_id":"aac1006dbfb2b78127d9d4ab89447f0258b825af"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"7499402b974bf582385de4b9ca11626dc8db36ec","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"db333d7c_5db0506d","in_reply_to":"ee4e84e6_844508e3","updated":"2026-05-18 09:47:55.000000000","message":"\u003e If you have time to push this, maybe I could abandon mine? Feel free to copy the docs too.\n\nI see... different file, but could use same approach as above.","commit_id":"aac1006dbfb2b78127d9d4ab89447f0258b825af"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"c5d3ff74a46db939a74fee1be1ed777fb1f1d275","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"93549aaa_a156e162","in_reply_to":"f0803196_e2f53c11","updated":"2026-05-18 09:38:44.000000000","message":"If you have time to push this, maybe I could abandon mine? Feel free to copy the docs too.","commit_id":"aac1006dbfb2b78127d9d4ab89447f0258b825af"},{"author":{"_account_id":37306,"name":"Piotr Milewski","display_name":"Piotr Milewski","email":"vurmil@gmail.com","username":"vurmil"},"change_message_id":"b8e017af578b0b634b4ebab0100ce5df9a076563","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"1dc7d7ae_3f27d02e","updated":"2026-05-18 20:37:56.000000000","message":"I don\u0027t make the final call, but I think this is overkill. Changing standard Jinja2 delimiters just to avoid {% raw %} tags is overengineering and patches the problem in the wrong place.\n\nIn our setup, we keep Prometheus rules in a shared Git repo used by other, non-OpenStack services. Introducing a custom %% %% syntax breaks compatibility for those shared files.\n\nOut of curiosity are there really that many use cases where we heavily need to inject Ansible variables directly into Prometheus rules? Most of the time, we just deploy ready-made, static YAML files with rules, or simply use standard {% raw %} blocks when Ansible templating is absolutely necessary. Sticking to the standard Jinja2 syntax seems much safer and more predictable for everyone.","commit_id":"e44e14384dc8869a3a37968e2f47e485c35f6d30"},{"author":{"_account_id":37306,"name":"Piotr Milewski","display_name":"Piotr Milewski","email":"vurmil@gmail.com","username":"vurmil"},"change_message_id":"3777746d0e69d974ea67f3f88df211166be8f4e5","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"ae5f2ec0_7ad9ae7b","in_reply_to":"1dc7d7ae_3f27d02e","updated":"2026-05-18 20:41:20.000000000","message":"I\u0027m not exactly sure what the ultimate goal is with the provided example:\n\n\u003c% for host in groups[\u0027prometheus\u0027] %\u003e\n      - alert: \"KollaServiceDown_%% host %%\"\n        expr: up{job\u003d\"kolla-service\", instance\u003d\"%% host %%\"} \u003d\u003d 0\n        for: 5m\n        labels:\n          severity: warning\n\nBut unless I\u0027m completely missing something, we can achieve the exact same result with just one standard Prometheus rule by relying on proper labeling. The expression up{job\u003d\"kolla-service\"} \u003d\u003d 0 already returns a vector of all failing instances, and Prometheus inherently triggers a separate alert for each one based on its labels.\n\nGenerating an individual alert rule per host using a Jinja loop is a Prometheus anti-pattern. Can\u0027t we just write a single rule and let Prometheus handle the labels natively?","commit_id":"e44e14384dc8869a3a37968e2f47e485c35f6d30"},{"author":{"_account_id":39111,"name":"aydin tabatabaei","display_name":"aydin","email":"aydintabatabaei909@gmail.com","username":"aydin381"},"change_message_id":"5d5eac30b3054771ebf2300bebd5d9ad730bc728","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"badba42c_338a568d","in_reply_to":"ae5f2ec0_7ad9ae7b","updated":"2026-05-19 21:53:26.000000000","message":"I will revert that part.\n\nHowever, the core issue with the custom Alertmanager configuration (prometheus-alertmanager.yml) is very real. When operators add Go templates (e.g., for Slack notifications), it hits a hard Jinja2 syntax error. Right now, Kolla docs don\u0027t cover this well, and users are stuck with configs getting overridden.\n\nI propose updating this patch to only apply the delimiter override to the Alertmanager task, leaving the Prometheus rules untouched.","commit_id":"e44e14384dc8869a3a37968e2f47e485c35f6d30"},{"author":{"_account_id":37306,"name":"Piotr Milewski","display_name":"Piotr Milewski","email":"vurmil@gmail.com","username":"vurmil"},"change_message_id":"75287e9c9d331d49db5bf7b782cfa2a71551a6ef","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"f44d043a_06619edb","in_reply_to":"badba42c_338a568d","updated":"2026-05-20 07:20:52.000000000","message":":) \n\nenjoy\n\nhttps://paste.opendev.org/show/byFZjcjkJrRdftTXRFG1/\n\n\nYou just need Alertmanager version 0.32+ because that’s where they added:\n\n`[FEATURE] slack: Allow receiver to edit existing messages`\n\nIn older versions, `api_url:` worked differently. I specifically needed message editing, so I upgraded the version myself.\n\nBut I’ve actually been using notifications in this format for a very long time.","commit_id":"e44e14384dc8869a3a37968e2f47e485c35f6d30"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"5930df82cfea807a73436b2c3bca3bbf9e4621a7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"84a392e2_0504c883","updated":"2026-05-21 06:42:16.000000000","message":"recheck - let\u0027s see if new docker-ce fixed rocky","commit_id":"2c74ce5ed7bd09d04c368da6363e1dc33b396d2f"}]}
