)]}'
{"kolla/image/kolla_worker.py":[{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"18273196ed1d7f30145e32ab51c668c098f0cce8","unresolved":true,"context_lines":[{"line_number":434,"context_line":"                        lines[i + 1:i + 1] \u003d pip_args"},{"line_number":435,"context_line":"                        break"},{"line_number":436,"context_line":"                content \u003d \u0027\\n\u0027.join(lines)"},{"line_number":437,"context_line":"            if repos_cleanup_cmd:"},{"line_number":438,"context_line":"                lines \u003d content.split(\u0027\\n\u0027)"},{"line_number":439,"context_line":"                for i in range(len(lines) - 1, -1, -1):"},{"line_number":440,"context_line":"                    if lines[i].startswith(\u0027CMD \u0027):"}],"source_content_type":"text/x-python","patch_set":10,"id":"8caae48e_5e0e3ffe","line":437,"updated":"2026-06-24 13:41:04.000000000","message":"I think we\u0027re adding cleanup after USER grafana/fluentd etc., so it will try to remove/restore root-owned repo files as non-root user and it may fail or not cleanup repos. Shouldn\u0027t we put it before USER?","commit_id":"a01c7e547e24726d568e4412db190a5ebf9d1b9f"}],"kolla/template/methods.py":[{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"18273196ed1d7f30145e32ab51c668c098f0cce8","unresolved":true,"context_lines":[{"line_number":214,"context_line":"                if mode \u003d\u003d \u0027enable\u0027:"},{"line_number":215,"context_line":"                    if not _repo.get(\u0027distro\u0027):"},{"line_number":216,"context_line":"                        if _repo.get(\u0027build_only\u0027):"},{"line_number":217,"context_line":"                            repo_file \u003d \u0027/etc/yum.repos.d/{}.repo\u0027.format(repo)"},{"line_number":218,"context_line":"                            if repo_file not in backed_up_files:"},{"line_number":219,"context_line":"                                commands +\u003d RPM_BACKUP.format("},{"line_number":220,"context_line":"                                    backup_dir\u003dBACKUP_DIR, repo\u003drepo)"}],"source_content_type":"text/x-python","patch_set":10,"id":"4c38ca08_f7eb4a9f","line":217,"updated":"2026-06-24 13:41:04.000000000","message":"I think we\u0027re removing rocky.repo file and trying to backup bases.repo file, so we won\u0027t restore rocky.repo file","commit_id":"a01c7e547e24726d568e4412db190a5ebf9d1b9f"}],"kolla/tests/test_methods.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a75d629727a85deb24586eb0ee559b05bbc05790","unresolved":false,"context_lines":[{"line_number":478,"context_line":"            os.unlink(fname)"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"    def test_handle_repos_build_only_no_double_backup(self):"},{"line_number":481,"context_line":"        \"\"\"Each distinct file is backed up exactly once per handle_repos call.\"\"\""},{"line_number":482,"context_line":"        repos \u003d {\u0027debian\u0027: {"},{"line_number":483,"context_line":"            \u0027mirror-a\u0027: {"},{"line_number":484,"context_line":"                \u0027build_only\u0027: True,"}],"source_content_type":"text/x-python","patch_set":1,"id":"e4ee9d5b_3feebeb5","line":481,"updated":"2026-06-17 06:34:08.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"1423290a81b86bbc681578c27199a308e6d784c6"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a75d629727a85deb24586eb0ee559b05bbc05790","unresolved":false,"context_lines":[{"line_number":590,"context_line":"        self.assertEqual(\u0027\u0027, result)"},{"line_number":591,"context_line":""},{"line_number":592,"context_line":"    def test_get_cleanup_commands_skips_distro_repos(self):"},{"line_number":593,"context_line":"        \"\"\"distro: True repos are a no-op in handle_repos so need no cleanup.\"\"\""},{"line_number":594,"context_line":"        repos \u003d {\u0027debian\u0027: {\u0027debian\u0027: {"},{"line_number":595,"context_line":"            \u0027build_only\u0027: True,"},{"line_number":596,"context_line":"            \u0027distro\u0027: True,"}],"source_content_type":"text/x-python","patch_set":1,"id":"6de76b17_fb8b409b","line":593,"updated":"2026-06-17 06:34:08.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"1423290a81b86bbc681578c27199a308e6d784c6"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f435be8392fcb74f46d352cbb0a6da940b7cc4a8","unresolved":false,"context_lines":[{"line_number":478,"context_line":"            os.unlink(fname)"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"    def test_handle_repos_build_only_no_double_backup(self):"},{"line_number":481,"context_line":"        \"\"\"Each distinct file is backed up exactly once per handle_repos call.\"\"\""},{"line_number":482,"context_line":"        repos \u003d {\u0027debian\u0027: {"},{"line_number":483,"context_line":"            \u0027mirror-a\u0027: {"},{"line_number":484,"context_line":"                \u0027build_only\u0027: True,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae50ea7_595f0b81","line":481,"updated":"2026-06-17 10:49:21.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"e36f642ee073361eb7a99dfc0999f024aebd5ed4"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f435be8392fcb74f46d352cbb0a6da940b7cc4a8","unresolved":false,"context_lines":[{"line_number":590,"context_line":"        self.assertEqual(\u0027\u0027, result)"},{"line_number":591,"context_line":""},{"line_number":592,"context_line":"    def test_get_cleanup_commands_skips_distro_repos(self):"},{"line_number":593,"context_line":"        \"\"\"distro: True repos are a no-op in handle_repos so need no cleanup.\"\"\""},{"line_number":594,"context_line":"        repos \u003d {\u0027debian\u0027: {\u0027debian\u0027: {"},{"line_number":595,"context_line":"            \u0027build_only\u0027: True,"},{"line_number":596,"context_line":"            \u0027distro\u0027: True,"}],"source_content_type":"text/x-python","patch_set":2,"id":"70bb282a_810e38d7","line":593,"updated":"2026-06-17 10:49:21.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"e36f642ee073361eb7a99dfc0999f024aebd5ed4"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"e25a3d533fc0064a4adefbdabe3741ec73d0a716","unresolved":false,"context_lines":[{"line_number":484,"context_line":"            os.unlink(fname)"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"    def test_handle_repos_build_only_no_double_backup(self):"},{"line_number":487,"context_line":"        \"\"\"Each distinct file is backed up exactly once per handle_repos call.\"\"\""},{"line_number":488,"context_line":"        repos \u003d {\u0027debian\u0027: {"},{"line_number":489,"context_line":"            \u0027mirror-a\u0027: {"},{"line_number":490,"context_line":"                \u0027build_only\u0027: True,"}],"source_content_type":"text/x-python","patch_set":3,"id":"a73b6918_55efcb23","line":487,"updated":"2026-06-17 18:02:01.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"51ba4186e184478893473780e3051bf42d50200d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"e25a3d533fc0064a4adefbdabe3741ec73d0a716","unresolved":false,"context_lines":[{"line_number":602,"context_line":"        self.assertEqual(\u0027\u0027, result)"},{"line_number":603,"context_line":""},{"line_number":604,"context_line":"    def test_get_cleanup_commands_skips_distro_repos(self):"},{"line_number":605,"context_line":"        \"\"\"distro: True repos are a no-op in handle_repos so need no cleanup.\"\"\""},{"line_number":606,"context_line":"        repos \u003d {\u0027debian\u0027: {\u0027debian\u0027: {"},{"line_number":607,"context_line":"            \u0027build_only\u0027: True,"},{"line_number":608,"context_line":"            \u0027distro\u0027: True,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9b7c0d37_58b1d77e","line":605,"updated":"2026-06-17 18:02:01.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"51ba4186e184478893473780e3051bf42d50200d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"40af08f11144413bc0d3022be3cc73eea4bc381a","unresolved":false,"context_lines":[{"line_number":618,"context_line":"        finally:"},{"line_number":619,"context_line":"            os.unlink(fname)"},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"    def test_repos_yaml_rpm_section_override_not_blocked_by_distro_section(self):"},{"line_number":622,"context_line":"        \"\"\"Overriding distro repos in \u0027rpm\u0027 section must not be undone by the"},{"line_number":623,"context_line":"        more-specific distro section merging distro:True back on top.\"\"\""},{"line_number":624,"context_line":"        repos \u003d {\u0027rpm\u0027: {"}],"source_content_type":"text/x-python","patch_set":8,"id":"2f325d25_77afce6c","line":621,"updated":"2026-06-22 07:49:15.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"88722dfd63d68e687e0cde2422c2c2fe9c3c4818"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"40af08f11144413bc0d3022be3cc73eea4bc381a","unresolved":false,"context_lines":[{"line_number":619,"context_line":"            os.unlink(fname)"},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"    def test_repos_yaml_rpm_section_override_not_blocked_by_distro_section(self):"},{"line_number":622,"context_line":"        \"\"\"Overriding distro repos in \u0027rpm\u0027 section must not be undone by the"},{"line_number":623,"context_line":"        more-specific distro section merging distro:True back on top.\"\"\""},{"line_number":624,"context_line":"        repos \u003d {\u0027rpm\u0027: {"},{"line_number":625,"context_line":"            \u0027baseos\u0027: {"}],"source_content_type":"text/x-python","patch_set":8,"id":"2f38b4aa_362036a8","line":622,"updated":"2026-06-22 07:49:15.000000000","message":"pep8: H403: multi line docstrings should end on a new line","commit_id":"88722dfd63d68e687e0cde2422c2c2fe9c3c4818"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"40af08f11144413bc0d3022be3cc73eea4bc381a","unresolved":false,"context_lines":[{"line_number":619,"context_line":"            os.unlink(fname)"},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"    def test_repos_yaml_rpm_section_override_not_blocked_by_distro_section(self):"},{"line_number":622,"context_line":"        \"\"\"Overriding distro repos in \u0027rpm\u0027 section must not be undone by the"},{"line_number":623,"context_line":"        more-specific distro section merging distro:True back on top.\"\"\""},{"line_number":624,"context_line":"        repos \u003d {\u0027rpm\u0027: {"},{"line_number":625,"context_line":"            \u0027baseos\u0027: {"}],"source_content_type":"text/x-python","patch_set":8,"id":"5ef6e984_674042b4","line":622,"updated":"2026-06-22 07:49:15.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"88722dfd63d68e687e0cde2422c2c2fe9c3c4818"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"40af08f11144413bc0d3022be3cc73eea4bc381a","unresolved":false,"context_lines":[{"line_number":620,"context_line":""},{"line_number":621,"context_line":"    def test_repos_yaml_rpm_section_override_not_blocked_by_distro_section(self):"},{"line_number":622,"context_line":"        \"\"\"Overriding distro repos in \u0027rpm\u0027 section must not be undone by the"},{"line_number":623,"context_line":"        more-specific distro section merging distro:True back on top.\"\"\""},{"line_number":624,"context_line":"        repos \u003d {\u0027rpm\u0027: {"},{"line_number":625,"context_line":"            \u0027baseos\u0027: {"},{"line_number":626,"context_line":"                \u0027name\u0027: \u0027baseos\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1b85f1e9_b269cb62","line":623,"updated":"2026-06-22 07:49:15.000000000","message":"pep8: H403: multi line docstrings should end on a new line","commit_id":"88722dfd63d68e687e0cde2422c2c2fe9c3c4818"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"40af08f11144413bc0d3022be3cc73eea4bc381a","unresolved":false,"context_lines":[{"line_number":620,"context_line":""},{"line_number":621,"context_line":"    def test_repos_yaml_rpm_section_override_not_blocked_by_distro_section(self):"},{"line_number":622,"context_line":"        \"\"\"Overriding distro repos in \u0027rpm\u0027 section must not be undone by the"},{"line_number":623,"context_line":"        more-specific distro section merging distro:True back on top.\"\"\""},{"line_number":624,"context_line":"        repos \u003d {\u0027rpm\u0027: {"},{"line_number":625,"context_line":"            \u0027baseos\u0027: {"},{"line_number":626,"context_line":"                \u0027name\u0027: \u0027baseos\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"da7d43ff_68a59bfe","line":623,"updated":"2026-06-22 07:49:15.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"88722dfd63d68e687e0cde2422c2c2fe9c3c4818"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"40af08f11144413bc0d3022be3cc73eea4bc381a","unresolved":false,"context_lines":[{"line_number":624,"context_line":"        repos \u003d {\u0027rpm\u0027: {"},{"line_number":625,"context_line":"            \u0027baseos\u0027: {"},{"line_number":626,"context_line":"                \u0027name\u0027: \u0027baseos\u0027,"},{"line_number":627,"context_line":"                \u0027baseurl\u0027: \u0027http://mirror.example.com/centos/10/BaseOS/$basearch/\u0027,"},{"line_number":628,"context_line":"                \u0027gpgkey\u0027: \u0027file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial\u0027,"},{"line_number":629,"context_line":"            },"},{"line_number":630,"context_line":"            \u0027appstream\u0027: {"}],"source_content_type":"text/x-python","patch_set":8,"id":"dcd69c03_a881f1a8","line":627,"updated":"2026-06-22 07:49:15.000000000","message":"pep8: E501 line too long (83 \u003e 79 characters)","commit_id":"88722dfd63d68e687e0cde2422c2c2fe9c3c4818"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"40af08f11144413bc0d3022be3cc73eea4bc381a","unresolved":false,"context_lines":[{"line_number":629,"context_line":"            },"},{"line_number":630,"context_line":"            \u0027appstream\u0027: {"},{"line_number":631,"context_line":"                \u0027name\u0027: \u0027appstream\u0027,"},{"line_number":632,"context_line":"                \u0027baseurl\u0027: \u0027http://mirror.example.com/centos/10/AppStream/$basearch/\u0027,"},{"line_number":633,"context_line":"                \u0027gpgkey\u0027: \u0027file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial\u0027,"},{"line_number":634,"context_line":"            },"},{"line_number":635,"context_line":"            \u0027crb\u0027: {"}],"source_content_type":"text/x-python","patch_set":8,"id":"c67b99c4_be2cd8c1","line":632,"updated":"2026-06-22 07:49:15.000000000","message":"pep8: E501 line too long (86 \u003e 79 characters)","commit_id":"88722dfd63d68e687e0cde2422c2c2fe9c3c4818"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"40af08f11144413bc0d3022be3cc73eea4bc381a","unresolved":false,"context_lines":[{"line_number":634,"context_line":"            },"},{"line_number":635,"context_line":"            \u0027crb\u0027: {"},{"line_number":636,"context_line":"                \u0027name\u0027: \u0027crb\u0027,"},{"line_number":637,"context_line":"                \u0027baseurl\u0027: \u0027http://mirror.example.com/centos/10/CRB/$basearch/\u0027,"},{"line_number":638,"context_line":"                \u0027gpgkey\u0027: \u0027file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial\u0027,"},{"line_number":639,"context_line":"            },"},{"line_number":640,"context_line":"        }}"}],"source_content_type":"text/x-python","patch_set":8,"id":"2318f8a8_712777aa","line":637,"updated":"2026-06-22 07:49:15.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"88722dfd63d68e687e0cde2422c2c2fe9c3c4818"}]}
