)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"02fc88baf218987f5c6c0dbe150d5d30dfffdd8a","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\"security_opt\" handling for podman_worker."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"  1. Added resolve_security_opt() method to the base class (before check_image) — handles dict format, list format (backward compat), and auto-generation from container name for selinux/apparmor."},{"line_number":10,"context_line":"  2. Updated compare_security_opt() to use self.resolve_security_opt() instead of self.params.get(\u0027security_opt\u0027, list())."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I4bddef96cbeb225f76508e579c2d71d0b5e144f5"},{"line_number":13,"context_line":"Signed-off-by: Ruslan Savvin \u003crs.xperia@gmail.com\u003e"},{"line_number":14,"context_line":"Closes-Bug: 2115881"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"6ef1c014_bf039b98","line":11,"range":{"start_line":9,"start_character":0,"end_line":11,"end_character":0},"updated":"2026-04-10 08:24:33.000000000","message":"too long lines, please wrap each at 72\nhttps://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"1a471c2cbf0e973708db8f34bfbf18d5807f803e"},{"author":{"_account_id":38029,"name":"Ruslan Savvin","display_name":"Ruslan Savvin","email":"rs.xperia@gmail.com","username":"rsavvin"},"change_message_id":"118a3b036edaf52d18a640684f1ff498d63eaae8","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\"security_opt\" handling for podman_worker."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"  1. Added resolve_security_opt() method to the base class (before check_image) — handles dict format, list format (backward compat), and auto-generation from container name for selinux/apparmor."},{"line_number":10,"context_line":"  2. Updated compare_security_opt() to use self.resolve_security_opt() instead of self.params.get(\u0027security_opt\u0027, list())."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I4bddef96cbeb225f76508e579c2d71d0b5e144f5"},{"line_number":13,"context_line":"Signed-off-by: Ruslan Savvin \u003crs.xperia@gmail.com\u003e"},{"line_number":14,"context_line":"Closes-Bug: 2115881"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"96f34197_bb2b7e82","line":11,"range":{"start_line":9,"start_character":0,"end_line":11,"end_character":0},"in_reply_to":"6ef1c014_bf039b98","updated":"2026-04-10 10:33:51.000000000","message":"Done","commit_id":"1a471c2cbf0e973708db8f34bfbf18d5807f803e"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"0bcaa226342c5ef2494eb1d1cd0f078ff3acddb6","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"69983ca9_27cf133c","updated":"2025-07-02 12:17:58.000000000","message":"is this a bug? if yes - file a bug in launchpad and add closes-bug (and then it can be backported to stable branches)\nif no - add a release note for a feature (and then no backport is possible)","commit_id":"f80b35a85c49899e9b95a809f6557694002b6bb4"},{"author":{"_account_id":38029,"name":"Ruslan Savvin","display_name":"Ruslan Savvin","email":"rs.xperia@gmail.com","username":"rsavvin"},"change_message_id":"3735dfffeafa7361406363e63d371744484b9395","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"430507c2_0ec382b2","in_reply_to":"69983ca9_27cf133c","updated":"2025-07-07 10:40:02.000000000","message":"Done","commit_id":"f80b35a85c49899e9b95a809f6557694002b6bb4"},{"author":{"_account_id":32688,"name":"Victor Chembaev","email":"chembervint@gmail.com","username":"chembervint"},"change_message_id":"d1808bdb72ed48bb66ecc8f95c1f416494f3338b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"8576ca4b_74d27cbb","updated":"2025-07-08 11:24:51.000000000","message":"LGTM","commit_id":"8c1b930a7c197fcbc91c2415558192771ddaf1cb"},{"author":{"_account_id":38029,"name":"Ruslan Savvin","display_name":"Ruslan Savvin","email":"rs.xperia@gmail.com","username":"rsavvin"},"change_message_id":"3735dfffeafa7361406363e63d371744484b9395","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"64abdd46_1e845aad","updated":"2025-07-07 10:40:02.000000000","message":"Opened bug 2115881 in launchpad, commit amended with closes-bug#. Re-check pls.","commit_id":"8c1b930a7c197fcbc91c2415558192771ddaf1cb"},{"author":{"_account_id":38029,"name":"Ruslan Savvin","display_name":"Ruslan Savvin","email":"rs.xperia@gmail.com","username":"rsavvin"},"change_message_id":"1402267748d5c5669bbcb39c47a7f3fcc4043138","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"cb8fcede_355e61fb","updated":"2026-04-01 12:50:41.000000000","message":"Reformat according to pep8","commit_id":"dd5f509eede8827cd86b12ddacaf5f4b6bff135e"},{"author":{"_account_id":38029,"name":"Ruslan Savvin","display_name":"Ruslan Savvin","email":"rs.xperia@gmail.com","username":"rsavvin"},"change_message_id":"d94e675df518b15488f2e7f31cb045334a5a7365","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"7dfd9c0f_9ff5b538","updated":"2026-04-01 13:21:01.000000000","message":"Modified podman/docker tests according to current security_opt format","commit_id":"1a471c2cbf0e973708db8f34bfbf18d5807f803e"},{"author":{"_account_id":38029,"name":"Ruslan Savvin","display_name":"Ruslan Savvin","email":"rs.xperia@gmail.com","username":"rsavvin"},"change_message_id":"2fd0ad4831794025085adfaedd0ed8aa4826e74d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"a7bd3c33_aa4fee03","updated":"2026-04-01 16:22:17.000000000","message":"recheck - failed test openstack-tox-linters","commit_id":"1a471c2cbf0e973708db8f34bfbf18d5807f803e"},{"author":{"_account_id":38029,"name":"Ruslan Savvin","display_name":"Ruslan Savvin","email":"rs.xperia@gmail.com","username":"rsavvin"},"change_message_id":"118a3b036edaf52d18a640684f1ff498d63eaae8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"b18f758f_cca1cd32","updated":"2026-04-10 10:33:51.000000000","message":"Commit message wrapped by \u003c72 chars strings","commit_id":"f49427aea53efbfc33a1c8be25ce82f27fa27909"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"ffc7e5d14f77fff358d2540386ea76c34c4e544b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"506fd390_2f41ac33","updated":"2026-04-15 13:34:02.000000000","message":"thanks","commit_id":"f49427aea53efbfc33a1c8be25ce82f27fa27909"}],"ansible/module_utils/kolla_container_worker.py":[{"author":{"_account_id":38029,"name":"Ruslan Savvin","display_name":"Ruslan Savvin","email":"rs.xperia@gmail.com","username":"rsavvin"},"change_message_id":"1402267748d5c5669bbcb39c47a7f3fcc4043138","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        # Auto-generate default from container name"},{"line_number":76,"context_line":"        if name:"},{"line_number":77,"context_line":"            # Explicit mappings for containers that don\u0027t follow naming patterns"},{"line_number":78,"context_line":"            name_mappings \u003d {"},{"line_number":79,"context_line":"                \u0027mariabackup\u0027: \u0027mariadb\u0027,"},{"line_number":80,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":6,"id":"dfef0e00_ba44b70c","line":77,"in_reply_to":"27e88f40_908bc01b","updated":"2026-04-01 12:50:41.000000000","message":"\u003e pep8: E501 line too long (80 \u003e 79 characters)\n\nPlease fix.","commit_id":"de7f640a6b01a0d6aee0b641a0a3fcec564e16b4"},{"author":{"_account_id":38029,"name":"Ruslan Savvin","display_name":"Ruslan Savvin","email":"rs.xperia@gmail.com","username":"rsavvin"},"change_message_id":"1402267748d5c5669bbcb39c47a7f3fcc4043138","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        # Auto-generate default from container name"},{"line_number":76,"context_line":"        if name:"},{"line_number":77,"context_line":"            # Explicit mappings for containers that don\u0027t follow naming patterns"},{"line_number":78,"context_line":"            name_mappings \u003d {"},{"line_number":79,"context_line":"                \u0027mariabackup\u0027: \u0027mariadb\u0027,"},{"line_number":80,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":6,"id":"61edd9c7_75d04de5","line":77,"in_reply_to":"8b9e0755_de05e061","updated":"2026-04-01 12:50:41.000000000","message":"\u003e linters: E501 line too long (80 \u003e 79 characters)\n\nPlease fix.","commit_id":"de7f640a6b01a0d6aee0b641a0a3fcec564e16b4"}],"ansible/module_utils/kolla_podman_worker.py":[{"author":{"_account_id":38029,"name":"Ruslan Savvin","display_name":"Ruslan Savvin","email":"rs.xperia@gmail.com","username":"rsavvin"},"change_message_id":"82afea7f48e844b8767021ca93ddfe0782cea559","unresolved":true,"context_lines":[{"line_number":121,"context_line":"            args[\u0027cap_add\u0027] \u003d self.params.pop(\u0027cap_add\u0027, []) + [\u0027AUDIT_WRITE\u0027]"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        security_opt \u003d self.params.get(\u0027security_opt\u0027)"},{"line_number":124,"context_line":"        if security_opt is not None and not self.params.get(\u0027privileged\u0027, False):"},{"line_number":125,"context_line":"            args[\u0027security_opt\u0027] \u003d [i.split(\u0027label\u003d\u0027)[1] for i in security_opt]"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        # maybe can be done straight away,"}],"source_content_type":"text/x-python","patch_set":3,"id":"df3a4d14_01809cdb","line":124,"in_reply_to":"9990f385_7f0c6f44","updated":"2025-07-03 11:49:58.000000000","message":"\u003e linters: E501 line too long (81 \u003e 79 characters)\n\nPlease fix.","commit_id":"f80b35a85c49899e9b95a809f6557694002b6bb4"},{"author":{"_account_id":38029,"name":"Ruslan Savvin","display_name":"Ruslan Savvin","email":"rs.xperia@gmail.com","username":"rsavvin"},"change_message_id":"3735dfffeafa7361406363e63d371744484b9395","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            args[\u0027cap_add\u0027] \u003d self.params.pop(\u0027cap_add\u0027, []) + [\u0027AUDIT_WRITE\u0027]"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        security_opt \u003d self.params.get(\u0027security_opt\u0027)"},{"line_number":124,"context_line":"        if security_opt is not None and not self.params.get(\u0027privileged\u0027, False):"},{"line_number":125,"context_line":"            args[\u0027security_opt\u0027] \u003d [i.split(\u0027label\u003d\u0027)[1] for i in security_opt]"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        # maybe can be done straight away,"}],"source_content_type":"text/x-python","patch_set":3,"id":"d2b38674_8df015bd","line":124,"in_reply_to":"df3a4d14_01809cdb","updated":"2025-07-07 10:40:02.000000000","message":"Done","commit_id":"f80b35a85c49899e9b95a809f6557694002b6bb4"},{"author":{"_account_id":38029,"name":"Ruslan Savvin","display_name":"Ruslan Savvin","email":"rs.xperia@gmail.com","username":"rsavvin"},"change_message_id":"3735dfffeafa7361406363e63d371744484b9395","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            args[\u0027cap_add\u0027] \u003d self.params.pop(\u0027cap_add\u0027, []) + [\u0027AUDIT_WRITE\u0027]"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        security_opt \u003d self.params.get(\u0027security_opt\u0027)"},{"line_number":124,"context_line":"        if security_opt is not None and not self.params.get(\u0027privileged\u0027, False):"},{"line_number":125,"context_line":"            args[\u0027security_opt\u0027] \u003d [i.split(\u0027label\u003d\u0027)[1] for i in security_opt]"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        # maybe can be done straight away,"}],"source_content_type":"text/x-python","patch_set":3,"id":"d75f0e91_dedec0c0","line":124,"in_reply_to":"eed0bf27_8581d7ee","updated":"2025-07-07 10:40:02.000000000","message":"\u003e pep8: E501 line too long (81 \u003e 79 characters)\n\nPlease fix.","commit_id":"f80b35a85c49899e9b95a809f6557694002b6bb4"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"458b07af2a2adf77b7e67879713bd98a9b198748","unresolved":true,"context_lines":[{"line_number":120,"context_line":"        if not self.params.get(\u0027privileged\u0027, False):"},{"line_number":121,"context_line":"            args[\u0027cap_add\u0027] \u003d self.params.pop(\u0027cap_add\u0027, []) + [\u0027AUDIT_WRITE\u0027]"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        security_opt \u003d self.params.get(\u0027security_opt\u0027)"},{"line_number":124,"context_line":"        if security_opt is not None and not self.params.get("},{"line_number":125,"context_line":"                \u0027privileged\u0027, False):"},{"line_number":126,"context_line":"            args[\u0027security_opt\u0027] \u003d [i.split(\u0027label\u003d\u0027)[1] for i in security_opt]"}],"source_content_type":"text/x-python","patch_set":5,"id":"771032a9_b3ce89d9","line":123,"updated":"2025-07-08 12:47:35.000000000","message":"Can we get a test for this in tests/kolla_container_tests?","commit_id":"8c1b930a7c197fcbc91c2415558192771ddaf1cb"},{"author":{"_account_id":38029,"name":"Ruslan Savvin","display_name":"Ruslan Savvin","email":"rs.xperia@gmail.com","username":"rsavvin"},"change_message_id":"9847f9cf9c3a4f2fa3649a7a57fa4120a7b1bb8a","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        if not self.params.get(\u0027privileged\u0027, False):"},{"line_number":121,"context_line":"            args[\u0027cap_add\u0027] \u003d self.params.pop(\u0027cap_add\u0027, []) + [\u0027AUDIT_WRITE\u0027]"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        security_opt \u003d self.params.get(\u0027security_opt\u0027)"},{"line_number":124,"context_line":"        if security_opt is not None and not self.params.get("},{"line_number":125,"context_line":"                \u0027privileged\u0027, False):"},{"line_number":126,"context_line":"            args[\u0027security_opt\u0027] \u003d [i.split(\u0027label\u003d\u0027)[1] for i in security_opt]"}],"source_content_type":"text/x-python","patch_set":5,"id":"e7304540_cb6f681c","line":123,"in_reply_to":"771032a9_b3ce89d9","updated":"2026-04-01 11:32:43.000000000","message":"Done","commit_id":"8c1b930a7c197fcbc91c2415558192771ddaf1cb"}]}
