)]}'
{".ansible-lint":[{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"d93cf4386800fb71226cc037ad7ab879918399c6","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"exclude_paths:"},{"line_number":3,"context_line":"  - releasenotes"},{"line_number":4,"context_line":"  - roles"},{"line_number":5,"context_line":"  - tests"},{"line_number":6,"context_line":"  - zuul.d"},{"line_number":7,"context_line":"rulesdir:"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"c0e93e10_b5fda98a","line":4,"updated":"2026-01-07 16:03:52.000000000","message":"previous check also tested roles/ folder\n roles_path \u003d os.path.join(PROJECT_ROOT, \u0027ansible\u0027, \u0027roles\u0027)","commit_id":"308dfe27fbc4f21a90eabcc2feb5f7dea25896a7"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"317ae46925f1e70277c43a6db45923fce01b8d21","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"exclude_paths:"},{"line_number":3,"context_line":"  - releasenotes"},{"line_number":4,"context_line":"  - roles"},{"line_number":5,"context_line":"  - tests"},{"line_number":6,"context_line":"  - zuul.d"},{"line_number":7,"context_line":"rulesdir:"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"83499302_ae942ef2","line":4,"in_reply_to":"c0e93e10_b5fda98a","updated":"2026-01-08 09:53:30.000000000","message":"Done","commit_id":"308dfe27fbc4f21a90eabcc2feb5f7dea25896a7"}],".ansible-lint-rules/kolla_docker_become.py":[{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"7a2400cd515de64b1ffda819c58993ea0cb0a610","unresolved":true,"context_lines":[{"line_number":20,"context_line":"from ansiblelint.rules import AnsibleLintRule"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class KollaContainerBecomeRule(AnsibleLintRule):"},{"line_number":24,"context_line":"    \"\"\"kolla_container module should have become set to true.\"\"\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    id \u003d \"kolla-container-become\""}],"source_content_type":"text/x-python","patch_set":2,"id":"0ac09879_3cccf1fc","line":23,"updated":"2026-01-07 12:07:46.000000000","message":"how about other become usage? as in kolla_toolbox, kolla_container_facts or any command/shell tasks for that matter?","commit_id":"38d6115b607c76f2fe6e5851feb4b29b1370f4e5"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"9524e59602835c936d4e103b12cfbefbbdaf927f","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from ansiblelint.rules import AnsibleLintRule"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class KollaContainerBecomeRule(AnsibleLintRule):"},{"line_number":24,"context_line":"    \"\"\"kolla_container module should have become set to true.\"\"\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    id \u003d \"kolla-container-become\""}],"source_content_type":"text/x-python","patch_set":2,"id":"035f6ea0_bd85db7c","line":23,"in_reply_to":"0ac09879_3cccf1fc","updated":"2026-01-07 15:46:37.000000000","message":"Done","commit_id":"38d6115b607c76f2fe6e5851feb4b29b1370f4e5"}],".ansible-lint-rules/newline_eof.py":[{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"fb7ed51f8fe6d5683040f78c0e6a59ed26762e0b","unresolved":true,"context_lines":[{"line_number":29,"context_line":"    version_added \u003d \"1.0.0\""},{"line_number":30,"context_line":"    version_changed \u003d \"1.0.0\""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def matchyaml(self, file: Lintable) -\u003e list[MatchError]:"},{"line_number":33,"context_line":"        \"\"\"Check if file ends with a newline."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        Args:"}],"source_content_type":"text/x-python","patch_set":13,"id":"7fc0ece7_6df262da","line":32,"updated":"2026-01-08 08:42:18.000000000","message":"this will only check yaml files? Previously we did test also other extensions","commit_id":"06561d989e1c8dbb54e6d8f4a82f17f1f938f304"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"317ae46925f1e70277c43a6db45923fce01b8d21","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    version_added \u003d \"1.0.0\""},{"line_number":30,"context_line":"    version_changed \u003d \"1.0.0\""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def matchyaml(self, file: Lintable) -\u003e list[MatchError]:"},{"line_number":33,"context_line":"        \"\"\"Check if file ends with a newline."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        Args:"}],"source_content_type":"text/x-python","patch_set":13,"id":"a9f54e1d_61f4d1f4","line":32,"in_reply_to":"7fc0ece7_6df262da","updated":"2026-01-08 09:53:30.000000000","message":"But we never really benefitted from that, ansible-lint (with yamllint), j2lint and pep8/flake8 should be enough for all of our code","commit_id":"06561d989e1c8dbb54e6d8f4a82f17f1f938f304"},{"author":{"_account_id":37306,"name":"Piotr Milewski","display_name":"Piotr Milewski","email":"vurmil@gmail.com","username":"vurmil"},"change_message_id":"f806aae92939ecdd1241926a7ae8189c6ce35d2c","unresolved":true,"context_lines":[{"line_number":39,"context_line":"            List of MatchError objects if violations found"},{"line_number":40,"context_line":"        \"\"\""},{"line_number":41,"context_line":"        # Read the raw file content"},{"line_number":42,"context_line":"        try:"},{"line_number":43,"context_line":"            with open(file.path, \u0027rb\u0027) as f:"},{"line_number":44,"context_line":"                content \u003d f.read()"},{"line_number":45,"context_line":"        except (IOError, OSError):"}],"source_content_type":"text/x-python","patch_set":13,"id":"38a90a45_d2b2f865","line":42,"range":{"start_line":42,"start_character":8,"end_line":42,"end_character":12},"updated":"2026-01-08 08:48:43.000000000","message":"This approach is more efficient because your original f.read() method loads the entire file into RAM, whereas using f.seek() allows you to check only the last byte without impacting memory performance\n\ntry:\n            with open(file.path, \u0027rb\u0027) as f:\n                # Move the cursor to the end of the file\n                f.seek(0, 2)\n                size \u003d f.tell()\n                \n                # Empty files are considered valid\n                if size \u003d\u003d 0:\n                    return []\n                \n                # Move back 1 byte from the end and read it\n                f.seek(-1, 2)\n                last_char \u003d f.read(1)\n        except (IOError, OSError):\n            # If the file cannot be read, skip the check\n            return []\n\n        # Check if the last character is a newline (LF)\n        if last_char !\u003d b\u0027\\n\u0027:\n            return [\n                self.create_matcherror(\n                    message\u003d\"File does not end with a newline character\",\n                    filename\u003dfile,\n                )\n            ]\n\n        return []","commit_id":"06561d989e1c8dbb54e6d8f4a82f17f1f938f304"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"96f5f3f70276de761f6d2debe1e2a3ec55bbc826","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            List of MatchError objects if violations found"},{"line_number":40,"context_line":"        \"\"\""},{"line_number":41,"context_line":"        # Read the raw file content"},{"line_number":42,"context_line":"        try:"},{"line_number":43,"context_line":"            with open(file.path, \u0027rb\u0027) as f:"},{"line_number":44,"context_line":"                content \u003d f.read()"},{"line_number":45,"context_line":"        except (IOError, OSError):"}],"source_content_type":"text/x-python","patch_set":13,"id":"73c682da_af67a272","line":42,"range":{"start_line":42,"start_character":8,"end_line":42,"end_character":12},"in_reply_to":"38a90a45_d2b2f865","updated":"2026-01-08 09:57:19.000000000","message":"Actually this rule is already covered by yamllint","commit_id":"06561d989e1c8dbb54e6d8f4a82f17f1f938f304"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"1d277bdc64cb8642aba2de9785707763e97399de","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"725eeea3_bcc2796f","updated":"2026-01-08 14:04:15.000000000","message":"recheck mariadb failure unrelated","commit_id":"7764af3b9f5a20371dee82a18511b20f3ad06ae1"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"c0a0d360d7e40263d5d61de698393c67085b2ca9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"26fcfdb6_56f9fc22","updated":"2026-01-08 19:22:26.000000000","message":"recheck post failures (rax swift issues)","commit_id":"bada5a90dc3bd7a0ce5cf61329bd5c65ea543d43"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"ae452d2932812da0660f1ad6c7d16a17c2fe0285","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"20fa07c1_a490beec","updated":"2026-01-09 05:39:24.000000000","message":"Merging given previous +2s","commit_id":"7a09319ab8c67b34c4b95a0331e1e98eef23477a"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"3a9a5932f6bb5d17102fa467fc2d0f3e32e520c8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"bb8db8d6_9654dff8","updated":"2026-01-10 08:18:50.000000000","message":"Merging given previous +2s","commit_id":"c8ea844b2b31cfc0446b6174e6b033a4036b9750"}],"ansible/roles/service-check-containers/tasks/iterated.yml":[{"author":{"_account_id":37306,"name":"Piotr Milewski","display_name":"Piotr Milewski","email":"vurmil@gmail.com","username":"vurmil"},"change_message_id":"01df369e38c201c6a950451f3d383acce3be7feb","unresolved":true,"context_lines":[{"line_number":29,"context_line":"# NOTE(yoctozepto): Must be a separate task because one cannot see the whole"},{"line_number":30,"context_line":"# result in the previous task and Ansible has a quirk regarding notifiers."},{"line_number":31,"context_line":"# For details see https://github.com/ansible/ansible/issues/22579"},{"line_number":32,"context_line":"- name: \"Notify handlers to restart containers for { kolla_role_name | default(project_name) }}\""},{"line_number":33,"context_line":"  debug:"},{"line_number":34,"context_line":"    msg: Notifying handlers"},{"line_number":35,"context_line":"  changed_when: container_check is changed"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"134e34f0_be7624d2","line":32,"range":{"start_line":32,"start_character":2,"end_line":32,"end_character":96},"updated":"2026-01-08 08:15:02.000000000","message":"it should be {{ kolla_role_name | default(....","commit_id":"29896c81f1f6aed778b3371b13c6ce2bcc55e754"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"f1854f0bc8100d5167d1e22155412498bcb08e0e","unresolved":false,"context_lines":[{"line_number":29,"context_line":"# NOTE(yoctozepto): Must be a separate task because one cannot see the whole"},{"line_number":30,"context_line":"# result in the previous task and Ansible has a quirk regarding notifiers."},{"line_number":31,"context_line":"# For details see https://github.com/ansible/ansible/issues/22579"},{"line_number":32,"context_line":"- name: \"Notify handlers to restart containers for { kolla_role_name | default(project_name) }}\""},{"line_number":33,"context_line":"  debug:"},{"line_number":34,"context_line":"    msg: Notifying handlers"},{"line_number":35,"context_line":"  changed_when: container_check is changed"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"06dca44f_19ef11f2","line":32,"range":{"start_line":32,"start_character":2,"end_line":32,"end_character":96},"in_reply_to":"134e34f0_be7624d2","updated":"2026-01-08 08:31:33.000000000","message":"Done","commit_id":"29896c81f1f6aed778b3371b13c6ce2bcc55e754"},{"author":{"_account_id":37306,"name":"Piotr Milewski","display_name":"Piotr Milewski","email":"vurmil@gmail.com","username":"vurmil"},"change_message_id":"64e85ea850902918c95ea1236e31de01742043d1","unresolved":true,"context_lines":[{"line_number":29,"context_line":"# NOTE(yoctozepto): Must be a separate task because one cannot see the whole"},{"line_number":30,"context_line":"# result in the previous task and Ansible has a quirk regarding notifiers."},{"line_number":31,"context_line":"# For details see https://github.com/ansible/ansible/issues/22579"},{"line_number":32,"context_line":"- name: \"Notify handlers to restart containers for {{} kolla_role_name | default(project_name) }}\""},{"line_number":33,"context_line":"  debug:"},{"line_number":34,"context_line":"    msg: Notifying handlers"},{"line_number":35,"context_line":"  changed_when: container_check is changed"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"f23308c2_760c2d4e","line":32,"range":{"start_line":32,"start_character":51,"end_line":32,"end_character":97},"updated":"2026-01-08 08:42:10.000000000","message":"{{} kolla_role_name\nto\n{{ kolla_role_name","commit_id":"06561d989e1c8dbb54e6d8f4a82f17f1f938f304"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"317ae46925f1e70277c43a6db45923fce01b8d21","unresolved":false,"context_lines":[{"line_number":29,"context_line":"# NOTE(yoctozepto): Must be a separate task because one cannot see the whole"},{"line_number":30,"context_line":"# result in the previous task and Ansible has a quirk regarding notifiers."},{"line_number":31,"context_line":"# For details see https://github.com/ansible/ansible/issues/22579"},{"line_number":32,"context_line":"- name: \"Notify handlers to restart containers for {{} kolla_role_name | default(project_name) }}\""},{"line_number":33,"context_line":"  debug:"},{"line_number":34,"context_line":"    msg: Notifying handlers"},{"line_number":35,"context_line":"  changed_when: container_check is changed"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"926f060b_0add32e5","line":32,"range":{"start_line":32,"start_character":51,"end_line":32,"end_character":97},"in_reply_to":"f23308c2_760c2d4e","updated":"2026-01-08 09:53:30.000000000","message":"Done","commit_id":"06561d989e1c8dbb54e6d8f4a82f17f1f938f304"}],"ansible/roles/service-config-validate/tasks/validate.yml":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"602501ac12d80c84e4f682346a65bbd424f55dee","unresolved":true,"context_lines":[{"line_number":28,"context_line":"  file:"},{"line_number":29,"context_line":"    path: \"{{ output_dir }}\""},{"line_number":30,"context_line":"    state: directory"},{"line_number":31,"context_line":"    mode: \"0644\""},{"line_number":32,"context_line":"  when:"},{"line_number":33,"context_line":"    - result.results | map(attribute\u003d\u0027rc\u0027, default\u003d0) | select(\u0027equalto\u0027, 1) | list | length \u003e 0"},{"line_number":34,"context_line":"    - result.results | map(attribute\u003d\u0027stderr\u0027, default\u003d\"\") | select(\u0027ne\u0027, \"\") | list | length \u003e 0"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"59a028f8_f3a90957","line":31,"updated":"2026-01-08 14:35:49.000000000","message":"```suggestion\n    mode: \"0755\"\n```\ndirectory","commit_id":"7764af3b9f5a20371dee82a18511b20f3ad06ae1"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"155cce1123b4e36624cac94cdc09575813da574c","unresolved":false,"context_lines":[{"line_number":28,"context_line":"  file:"},{"line_number":29,"context_line":"    path: \"{{ output_dir }}\""},{"line_number":30,"context_line":"    state: directory"},{"line_number":31,"context_line":"    mode: \"0644\""},{"line_number":32,"context_line":"  when:"},{"line_number":33,"context_line":"    - result.results | map(attribute\u003d\u0027rc\u0027, default\u003d0) | select(\u0027equalto\u0027, 1) | list | length \u003e 0"},{"line_number":34,"context_line":"    - result.results | map(attribute\u003d\u0027stderr\u0027, default\u003d\"\") | select(\u0027ne\u0027, \"\") | list | length \u003e 0"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"dcfe973a_c17da3d1","line":31,"in_reply_to":"59a028f8_f3a90957","updated":"2026-01-08 14:49:57.000000000","message":"Fix applied.","commit_id":"7764af3b9f5a20371dee82a18511b20f3ad06ae1"}],"roles/kolla-ansible-setup-disks/tasks/main.yml":[{"author":{"_account_id":37306,"name":"Piotr Milewski","display_name":"Piotr Milewski","email":"vurmil@gmail.com","username":"vurmil"},"change_message_id":"01df369e38c201c6a950451f3d383acce3be7feb","unresolved":true,"context_lines":[{"line_number":17,"context_line":"  become: true"},{"line_number":18,"context_line":"  ansible.builtin.command:"},{"line_number":19,"context_line":"    cmd: \"losetup -f\""},{"line_number":20,"context_line":"  changed_when: true"},{"line_number":21,"context_line":"  register: _loop_device"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"- name: Mount file on loop device"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"681c5b95_3f0484f4","line":20,"range":{"start_line":20,"start_character":1,"end_line":20,"end_character":20},"updated":"2026-01-08 08:15:02.000000000","message":"In this task, changed_when: true is incorrect. The losetup -f command only returns the name of the next available loop device (e.g., /dev/loop0) and does not modify the system state. It should be set to changed_when: false. The actual system change only occurs in the subsequent task (\u0027Mount file on loop device\u0027).","commit_id":"29896c81f1f6aed778b3371b13c6ce2bcc55e754"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"f1854f0bc8100d5167d1e22155412498bcb08e0e","unresolved":false,"context_lines":[{"line_number":17,"context_line":"  become: true"},{"line_number":18,"context_line":"  ansible.builtin.command:"},{"line_number":19,"context_line":"    cmd: \"losetup -f\""},{"line_number":20,"context_line":"  changed_when: true"},{"line_number":21,"context_line":"  register: _loop_device"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"- name: Mount file on loop device"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"76285d4e_d0f7f08b","line":20,"range":{"start_line":20,"start_character":1,"end_line":20,"end_character":20},"in_reply_to":"681c5b95_3f0484f4","updated":"2026-01-08 08:31:33.000000000","message":"Done","commit_id":"29896c81f1f6aed778b3371b13c6ce2bcc55e754"}],"tools/validate-all-file.py":[{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"fb7ed51f8fe6d5683040f78c0e6a59ed26762e0b","unresolved":true,"context_lines":[{"line_number":78,"context_line":"    return return_code"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"def check_json_j2():"},{"line_number":82,"context_line":"    includes \u003d r\u0027|\u0027.join([fnmatch.translate(x)"},{"line_number":83,"context_line":"                          for x in JSON_J2_INCLUDE_PATTERNS])"},{"line_number":84,"context_line":"    excludes \u003d r\u0027|\u0027.join([fnmatch.translate(x)"}],"source_content_type":"text/x-python","patch_set":5,"id":"2a0d9565_e892ea2a","side":"PARENT","line":81,"updated":"2026-01-08 08:42:18.000000000","message":"it looks like we lost this logic in new version","commit_id":"496dd763d82eaa666549556c28f1f4fb74a8d446"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"a6a555e8f2f8cf205510da08f04f25ba186254df","unresolved":true,"context_lines":[{"line_number":78,"context_line":"    return return_code"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"def check_json_j2():"},{"line_number":82,"context_line":"    includes \u003d r\u0027|\u0027.join([fnmatch.translate(x)"},{"line_number":83,"context_line":"                          for x in JSON_J2_INCLUDE_PATTERNS])"},{"line_number":84,"context_line":"    excludes \u003d r\u0027|\u0027.join([fnmatch.translate(x)"}],"source_content_type":"text/x-python","patch_set":5,"id":"78202147_d74265d1","side":"PARENT","line":81,"in_reply_to":"2a0d9565_e892ea2a","updated":"2026-01-08 08:45:17.000000000","message":"It rendered jinja2 templates - I assume j2lint is enough?","commit_id":"496dd763d82eaa666549556c28f1f4fb74a8d446"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"85c10ad1817d21c421b671accba7497ea42970bf","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    return return_code"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"def check_json_j2():"},{"line_number":82,"context_line":"    includes \u003d r\u0027|\u0027.join([fnmatch.translate(x)"},{"line_number":83,"context_line":"                          for x in JSON_J2_INCLUDE_PATTERNS])"},{"line_number":84,"context_line":"    excludes \u003d r\u0027|\u0027.join([fnmatch.translate(x)"}],"source_content_type":"text/x-python","patch_set":5,"id":"dac7490c_7efdf224","side":"PARENT","line":81,"in_reply_to":"78202147_d74265d1","updated":"2026-01-08 09:33:58.000000000","message":"Done","commit_id":"496dd763d82eaa666549556c28f1f4fb74a8d446"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"602501ac12d80c84e4f682346a65bbd424f55dee","unresolved":true,"context_lines":[{"line_number":78,"context_line":"    return return_code"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"def check_json_j2():"},{"line_number":82,"context_line":"    includes \u003d r\u0027|\u0027.join([fnmatch.translate(x)"},{"line_number":83,"context_line":"                          for x in JSON_J2_INCLUDE_PATTERNS])"},{"line_number":84,"context_line":"    excludes \u003d r\u0027|\u0027.join([fnmatch.translate(x)"}],"source_content_type":"text/x-python","patch_set":16,"id":"79f1758b_0e15510e","side":"PARENT","line":81,"updated":"2026-01-08 14:35:49.000000000","message":"I\u0027m not sure what this check is getting replaced with?","commit_id":"f699a56a8ac9706c6c33edf00e5056f8ce1dc896"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"facc833ff54b6a85f7c6aeaf66155251f6d6645b","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    return return_code"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"def check_json_j2():"},{"line_number":82,"context_line":"    includes \u003d r\u0027|\u0027.join([fnmatch.translate(x)"},{"line_number":83,"context_line":"                          for x in JSON_J2_INCLUDE_PATTERNS])"},{"line_number":84,"context_line":"    excludes \u003d r\u0027|\u0027.join([fnmatch.translate(x)"}],"source_content_type":"text/x-python","patch_set":16,"id":"186dbac0_8166c335","side":"PARENT","line":81,"in_reply_to":"1b92cd67_936c8633","updated":"2026-01-08 15:59:05.000000000","message":"Done","commit_id":"f699a56a8ac9706c6c33edf00e5056f8ce1dc896"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"c989286f5fc2a74ecebb40055ae122b30aa20377","unresolved":true,"context_lines":[{"line_number":78,"context_line":"    return return_code"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"def check_json_j2():"},{"line_number":82,"context_line":"    includes \u003d r\u0027|\u0027.join([fnmatch.translate(x)"},{"line_number":83,"context_line":"                          for x in JSON_J2_INCLUDE_PATTERNS])"},{"line_number":84,"context_line":"    excludes \u003d r\u0027|\u0027.join([fnmatch.translate(x)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1b92cd67_936c8633","side":"PARENT","line":81,"in_reply_to":"412f1def_af8c0bc8","updated":"2026-01-08 15:16:55.000000000","message":"ok","commit_id":"f699a56a8ac9706c6c33edf00e5056f8ce1dc896"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"155cce1123b4e36624cac94cdc09575813da574c","unresolved":true,"context_lines":[{"line_number":78,"context_line":"    return return_code"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"def check_json_j2():"},{"line_number":82,"context_line":"    includes \u003d r\u0027|\u0027.join([fnmatch.translate(x)"},{"line_number":83,"context_line":"                          for x in JSON_J2_INCLUDE_PATTERNS])"},{"line_number":84,"context_line":"    excludes \u003d r\u0027|\u0027.join([fnmatch.translate(x)"}],"source_content_type":"text/x-python","patch_set":16,"id":"412f1def_af8c0bc8","side":"PARENT","line":81,"in_reply_to":"79f1758b_0e15510e","updated":"2026-01-08 14:49:57.000000000","message":"I think improved j2lint in https://review.opendev.org/c/openstack/kolla-ansible/+/963980 should be enough","commit_id":"f699a56a8ac9706c6c33edf00e5056f8ce1dc896"}]}
