)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"62b4d9cd6a76829768f839c6d80102dcbe89a736","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"85317093_db9fbc19","updated":"2024-03-27 15:37:53.000000000","message":"very interesting)","commit_id":"8ce8772730f61da82b32d4d167c212f53d98251d"},{"author":{"_account_id":34213,"name":"Grzegorz Bialas","display_name":"Grzegorz Bialas","email":"grzegorz@stackhpc.com","username":"gbialas"},"change_message_id":"f0371d26371f355b8c45a1ebcae26ce7ccfa4add","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"d751f96b_0426eff1","updated":"2024-04-18 09:32:14.000000000","message":"recheck - fixed pep8 issues","commit_id":"d5ec0d2ceb113d55b19faa97414c224c46025180"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"8bc837eb3e6c494d0a079610b1900ffe5628e55e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"02fe4ef5_c4397b53","updated":"2024-04-24 12:00:29.000000000","message":"Other than that, we\u0027re missing docs and a reno","commit_id":"d74c8224d0dec99893824520b3b9a0905e2799a6"}],"kolla/image/tasks.py":[{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"16805425f3bd6bf5412fddd7ceccb7f6d93ff8f8","unresolved":true,"context_lines":[{"line_number":177,"context_line":"            return"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        dest_archive \u003d os.path.join(image.path, source[\u0027name\u0027] + \u0027-archive\u0027)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        # NOTE(mgoddard): Change ownership of files to root:root. This"},{"line_number":182,"context_line":"        # avoids an issue introduced by the fix for git CVE-2022-24765,"},{"line_number":183,"context_line":"        # which breaks PBR when the source checkout is not owned by the"}],"source_content_type":"text/x-python","patch_set":1,"id":"34e29e8e_352a773d","side":"PARENT","line":180,"updated":"2024-03-27 15:40:32.000000000","message":"add that line back","commit_id":"2576fbde000484502e88b58d372b4c193341ed8b"},{"author":{"_account_id":34213,"name":"Grzegorz Bialas","display_name":"Grzegorz Bialas","email":"grzegorz@stackhpc.com","username":"gbialas"},"change_message_id":"b254188b6cbcc545f4d7133f6254ee40c879f7e3","unresolved":false,"context_lines":[{"line_number":177,"context_line":"            return"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        dest_archive \u003d os.path.join(image.path, source[\u0027name\u0027] + \u0027-archive\u0027)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        # NOTE(mgoddard): Change ownership of files to root:root. This"},{"line_number":182,"context_line":"        # avoids an issue introduced by the fix for git CVE-2022-24765,"},{"line_number":183,"context_line":"        # which breaks PBR when the source checkout is not owned by the"}],"source_content_type":"text/x-python","patch_set":1,"id":"75a973bf_9d249e59","side":"PARENT","line":180,"in_reply_to":"34e29e8e_352a773d","updated":"2024-03-28 14:08:41.000000000","message":"Done","commit_id":"2576fbde000484502e88b58d372b4c193341ed8b"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"16805425f3bd6bf5412fddd7ceccb7f6d93ff8f8","unresolved":true,"context_lines":[{"line_number":265,"context_line":""},{"line_number":266,"context_line":"        # Set time on destination archive to epoch 0"},{"line_number":267,"context_line":"        os.utime(dest_archive, (0, 0))"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        return dest_archive"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def update_buildargs(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"4aff88aa_30d5b4fd","side":"PARENT","line":268,"updated":"2024-03-27 15:40:32.000000000","message":"add that line back","commit_id":"2576fbde000484502e88b58d372b4c193341ed8b"},{"author":{"_account_id":34213,"name":"Grzegorz Bialas","display_name":"Grzegorz Bialas","email":"grzegorz@stackhpc.com","username":"gbialas"},"change_message_id":"b254188b6cbcc545f4d7133f6254ee40c879f7e3","unresolved":false,"context_lines":[{"line_number":265,"context_line":""},{"line_number":266,"context_line":"        # Set time on destination archive to epoch 0"},{"line_number":267,"context_line":"        os.utime(dest_archive, (0, 0))"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        return dest_archive"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def update_buildargs(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"c84425dc_66a8889d","side":"PARENT","line":268,"in_reply_to":"4aff88aa_30d5b4fd","updated":"2024-03-28 14:08:41.000000000","message":"Done","commit_id":"2576fbde000484502e88b58d372b4c193341ed8b"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"16805425f3bd6bf5412fddd7ceccb7f6d93ff8f8","unresolved":true,"context_lines":[{"line_number":307,"context_line":""},{"line_number":308,"context_line":"            if archives:"},{"line_number":309,"context_line":"                for archive in archives:"},{"line_number":310,"context_line":"                    if tarfile.is_tarfile(archive):"},{"line_number":311,"context_line":"                        _test_malicious_tarball(archive, items_path)"},{"line_number":312,"context_line":"                        with tarfile.open(archive, \u0027r\u0027) as archive_tar:"},{"line_number":313,"context_line":"                            archive_tar.extractall(path\u003ditems_path)  # nosec"}],"source_content_type":"text/x-python","patch_set":1,"id":"cf22e48b_4e891961","line":310,"updated":"2024-03-27 15:40:32.000000000","message":"that is already in https://review.opendev.org/c/openstack/kolla/+/914193 - rebase this patch on the other patch","commit_id":"8ce8772730f61da82b32d4d167c212f53d98251d"},{"author":{"_account_id":34213,"name":"Grzegorz Bialas","display_name":"Grzegorz Bialas","email":"grzegorz@stackhpc.com","username":"gbialas"},"change_message_id":"b254188b6cbcc545f4d7133f6254ee40c879f7e3","unresolved":false,"context_lines":[{"line_number":307,"context_line":""},{"line_number":308,"context_line":"            if archives:"},{"line_number":309,"context_line":"                for archive in archives:"},{"line_number":310,"context_line":"                    if tarfile.is_tarfile(archive):"},{"line_number":311,"context_line":"                        _test_malicious_tarball(archive, items_path)"},{"line_number":312,"context_line":"                        with tarfile.open(archive, \u0027r\u0027) as archive_tar:"},{"line_number":313,"context_line":"                            archive_tar.extractall(path\u003ditems_path)  # nosec"}],"source_content_type":"text/x-python","patch_set":1,"id":"d4807876_20d21651","line":310,"in_reply_to":"cf22e48b_4e891961","updated":"2024-03-28 14:08:41.000000000","message":"Done","commit_id":"8ce8772730f61da82b32d4d167c212f53d98251d"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"16805425f3bd6bf5412fddd7ceccb7f6d93ff8f8","unresolved":true,"context_lines":[{"line_number":313,"context_line":"                            archive_tar.extractall(path\u003ditems_path)  # nosec"},{"line_number":314,"context_line":"                else:"},{"line_number":315,"context_line":"                    for archive in archives:"},{"line_number":316,"context_line":"                        try:"},{"line_number":317,"context_line":"                            os.mkdir(items_path)"},{"line_number":318,"context_line":"                        except:"},{"line_number":319,"context_line":"                            pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"537a5d9b_a161a4df","line":316,"updated":"2024-03-27 15:40:32.000000000","message":"would be nice to have a comment around what we\u0027re doing here and why it\u0027s needed","commit_id":"8ce8772730f61da82b32d4d167c212f53d98251d"},{"author":{"_account_id":34213,"name":"Grzegorz Bialas","display_name":"Grzegorz Bialas","email":"grzegorz@stackhpc.com","username":"gbialas"},"change_message_id":"b254188b6cbcc545f4d7133f6254ee40c879f7e3","unresolved":false,"context_lines":[{"line_number":313,"context_line":"                            archive_tar.extractall(path\u003ditems_path)  # nosec"},{"line_number":314,"context_line":"                else:"},{"line_number":315,"context_line":"                    for archive in archives:"},{"line_number":316,"context_line":"                        try:"},{"line_number":317,"context_line":"                            os.mkdir(items_path)"},{"line_number":318,"context_line":"                        except:"},{"line_number":319,"context_line":"                            pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"5d3debdf_91bebf1e","line":316,"in_reply_to":"537a5d9b_a161a4df","updated":"2024-03-28 14:08:41.000000000","message":"Done","commit_id":"8ce8772730f61da82b32d4d167c212f53d98251d"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"16805425f3bd6bf5412fddd7ceccb7f6d93ff8f8","unresolved":true,"context_lines":[{"line_number":320,"context_line":"                        file_name \u003d archive.split(\u0027/\u0027)[-1]"},{"line_number":321,"context_line":"                        file_extension \u003d file_name.split(\u0027-\u0027)[-2]"},{"line_number":322,"context_line":"                        full_file_name \u003d file_name + \u0027.\u0027 + file_extension"},{"line_number":323,"context_line":"                        self.logger.debug(\u0027\"Debug bialego z tarfile:\" %s\u0027 , full_file_name)"},{"line_number":324,"context_line":"                        archive_location \u003d os.path.join(items_path, full_file_name)"},{"line_number":325,"context_line":"                        shutil.move(archive, archive_location)          "},{"line_number":326,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1d81de8b_eca05561","line":323,"updated":"2024-03-27 15:40:32.000000000","message":"that\u0027s probably not needed","commit_id":"8ce8772730f61da82b32d4d167c212f53d98251d"},{"author":{"_account_id":34213,"name":"Grzegorz Bialas","display_name":"Grzegorz Bialas","email":"grzegorz@stackhpc.com","username":"gbialas"},"change_message_id":"b254188b6cbcc545f4d7133f6254ee40c879f7e3","unresolved":false,"context_lines":[{"line_number":320,"context_line":"                        file_name \u003d archive.split(\u0027/\u0027)[-1]"},{"line_number":321,"context_line":"                        file_extension \u003d file_name.split(\u0027-\u0027)[-2]"},{"line_number":322,"context_line":"                        full_file_name \u003d file_name + \u0027.\u0027 + file_extension"},{"line_number":323,"context_line":"                        self.logger.debug(\u0027\"Debug bialego z tarfile:\" %s\u0027 , full_file_name)"},{"line_number":324,"context_line":"                        archive_location \u003d os.path.join(items_path, full_file_name)"},{"line_number":325,"context_line":"                        shutil.move(archive, archive_location)          "},{"line_number":326,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"86080ab4_1a367720","line":323,"in_reply_to":"1d81de8b_eca05561","updated":"2024-03-28 14:08:41.000000000","message":"Done","commit_id":"8ce8772730f61da82b32d4d167c212f53d98251d"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"16805425f3bd6bf5412fddd7ceccb7f6d93ff8f8","unresolved":true,"context_lines":[{"line_number":322,"context_line":"                        full_file_name \u003d file_name + \u0027.\u0027 + file_extension"},{"line_number":323,"context_line":"                        self.logger.debug(\u0027\"Debug bialego z tarfile:\" %s\u0027 , full_file_name)"},{"line_number":324,"context_line":"                        archive_location \u003d os.path.join(items_path, full_file_name)"},{"line_number":325,"context_line":"                        shutil.move(archive, archive_location)          "},{"line_number":326,"context_line":"            else:"},{"line_number":327,"context_line":"                try:"},{"line_number":328,"context_line":"                    os.mkdir(items_path)"}],"source_content_type":"text/x-python","patch_set":1,"id":"c2b16f28_776e8470","line":325,"updated":"2024-03-27 15:40:32.000000000","message":"whitespaces","commit_id":"8ce8772730f61da82b32d4d167c212f53d98251d"},{"author":{"_account_id":34213,"name":"Grzegorz Bialas","display_name":"Grzegorz Bialas","email":"grzegorz@stackhpc.com","username":"gbialas"},"change_message_id":"b254188b6cbcc545f4d7133f6254ee40c879f7e3","unresolved":false,"context_lines":[{"line_number":322,"context_line":"                        full_file_name \u003d file_name + \u0027.\u0027 + file_extension"},{"line_number":323,"context_line":"                        self.logger.debug(\u0027\"Debug bialego z tarfile:\" %s\u0027 , full_file_name)"},{"line_number":324,"context_line":"                        archive_location \u003d os.path.join(items_path, full_file_name)"},{"line_number":325,"context_line":"                        shutil.move(archive, archive_location)          "},{"line_number":326,"context_line":"            else:"},{"line_number":327,"context_line":"                try:"},{"line_number":328,"context_line":"                    os.mkdir(items_path)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ad277f7b_78429c7b","line":325,"in_reply_to":"c2b16f28_776e8470","updated":"2024-03-28 14:08:41.000000000","message":"Done","commit_id":"8ce8772730f61da82b32d4d167c212f53d98251d"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"16805425f3bd6bf5412fddd7ceccb7f6d93ff8f8","unresolved":true,"context_lines":[{"line_number":344,"context_line":"            def reset_userinfo(tarinfo):"},{"line_number":345,"context_line":"                tarinfo.uid \u003d tarinfo.gid \u003d 0"},{"line_number":346,"context_line":"                tarinfo.uname \u003d tarinfo.gname \u003d \"root\""},{"line_number":347,"context_line":"                return tarinfo           "},{"line_number":348,"context_line":"            with tarfile.open(arc_path, \u0027w\u0027) as tar:"},{"line_number":349,"context_line":"                tar.add(items_path, arcname\u003darcname, filter\u003dreset_userinfo)"},{"line_number":350,"context_line":"            return len(os.listdir(items_path))"}],"source_content_type":"text/x-python","patch_set":1,"id":"853c1cd6_1caecf00","line":347,"updated":"2024-03-27 15:40:32.000000000","message":"whitespaces","commit_id":"8ce8772730f61da82b32d4d167c212f53d98251d"},{"author":{"_account_id":34213,"name":"Grzegorz Bialas","display_name":"Grzegorz Bialas","email":"grzegorz@stackhpc.com","username":"gbialas"},"change_message_id":"b254188b6cbcc545f4d7133f6254ee40c879f7e3","unresolved":false,"context_lines":[{"line_number":344,"context_line":"            def reset_userinfo(tarinfo):"},{"line_number":345,"context_line":"                tarinfo.uid \u003d tarinfo.gid \u003d 0"},{"line_number":346,"context_line":"                tarinfo.uname \u003d tarinfo.gname \u003d \"root\""},{"line_number":347,"context_line":"                return tarinfo           "},{"line_number":348,"context_line":"            with tarfile.open(arc_path, \u0027w\u0027) as tar:"},{"line_number":349,"context_line":"                tar.add(items_path, arcname\u003darcname, filter\u003dreset_userinfo)"},{"line_number":350,"context_line":"            return len(os.listdir(items_path))"}],"source_content_type":"text/x-python","patch_set":1,"id":"c297b1c2_f4975fb4","line":347,"in_reply_to":"853c1cd6_1caecf00","updated":"2024-03-28 14:08:41.000000000","message":"Done","commit_id":"8ce8772730f61da82b32d4d167c212f53d98251d"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"02821cb3c9f1584a9d58da2ff707bcf95e812549","unresolved":true,"context_lines":[{"line_number":325,"context_line":"                        image.status \u003d Status.CONNECTION_ERROR"},{"line_number":326,"context_line":"                        raise ArchivingError"},{"line_number":327,"context_line":"            arc_path \u003d os.path.join(image.path, \u0027%s-archive\u0027 % arcname)"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"            # NOTE(jneumann): Change ownership of files to root:root. This"},{"line_number":330,"context_line":"            # avoids an issue introduced by the fix for git CVE-2022-24765,"},{"line_number":331,"context_line":"            # which breaks PBR when the source checkout is not owned by the"}],"source_content_type":"text/x-python","patch_set":4,"id":"0c8af6c8_f2ed7fea","side":"PARENT","line":328,"updated":"2024-03-27 16:40:04.000000000","message":"do not remove this line","commit_id":"2576fbde000484502e88b58d372b4c193341ed8b"},{"author":{"_account_id":34213,"name":"Grzegorz Bialas","display_name":"Grzegorz Bialas","email":"grzegorz@stackhpc.com","username":"gbialas"},"change_message_id":"b254188b6cbcc545f4d7133f6254ee40c879f7e3","unresolved":false,"context_lines":[{"line_number":325,"context_line":"                        image.status \u003d Status.CONNECTION_ERROR"},{"line_number":326,"context_line":"                        raise ArchivingError"},{"line_number":327,"context_line":"            arc_path \u003d os.path.join(image.path, \u0027%s-archive\u0027 % arcname)"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"            # NOTE(jneumann): Change ownership of files to root:root. This"},{"line_number":330,"context_line":"            # avoids an issue introduced by the fix for git CVE-2022-24765,"},{"line_number":331,"context_line":"            # which breaks PBR when the source checkout is not owned by the"}],"source_content_type":"text/x-python","patch_set":4,"id":"e5cedaca_545ac531","side":"PARENT","line":328,"in_reply_to":"0c8af6c8_f2ed7fea","updated":"2024-03-28 14:08:41.000000000","message":"Done","commit_id":"2576fbde000484502e88b58d372b4c193341ed8b"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"02821cb3c9f1584a9d58da2ff707bcf95e812549","unresolved":true,"context_lines":[{"line_number":334,"context_line":"                tarinfo.uid \u003d tarinfo.gid \u003d 0"},{"line_number":335,"context_line":"                tarinfo.uname \u003d tarinfo.gname \u003d \"root\""},{"line_number":336,"context_line":"                return tarinfo"},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"            with tarfile.open(arc_path, \u0027w\u0027) as tar:"},{"line_number":339,"context_line":"                tar.add(items_path, arcname\u003darcname, filter\u003dreset_userinfo)"},{"line_number":340,"context_line":"            return len(os.listdir(items_path))"}],"source_content_type":"text/x-python","patch_set":4,"id":"34fb7ab9_8e243eb4","side":"PARENT","line":337,"updated":"2024-03-27 16:40:04.000000000","message":"do not remove this line","commit_id":"2576fbde000484502e88b58d372b4c193341ed8b"},{"author":{"_account_id":34213,"name":"Grzegorz Bialas","display_name":"Grzegorz Bialas","email":"grzegorz@stackhpc.com","username":"gbialas"},"change_message_id":"b254188b6cbcc545f4d7133f6254ee40c879f7e3","unresolved":false,"context_lines":[{"line_number":334,"context_line":"                tarinfo.uid \u003d tarinfo.gid \u003d 0"},{"line_number":335,"context_line":"                tarinfo.uname \u003d tarinfo.gname \u003d \"root\""},{"line_number":336,"context_line":"                return tarinfo"},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"            with tarfile.open(arc_path, \u0027w\u0027) as tar:"},{"line_number":339,"context_line":"                tar.add(items_path, arcname\u003darcname, filter\u003dreset_userinfo)"},{"line_number":340,"context_line":"            return len(os.listdir(items_path))"}],"source_content_type":"text/x-python","patch_set":4,"id":"c9fe3e6f_ed39cb9a","side":"PARENT","line":337,"in_reply_to":"34fb7ab9_8e243eb4","updated":"2024-03-28 14:08:41.000000000","message":"Done","commit_id":"2576fbde000484502e88b58d372b4c193341ed8b"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"02821cb3c9f1584a9d58da2ff707bcf95e812549","unresolved":true,"context_lines":[{"line_number":314,"context_line":"                        with tarfile.open(archive, \u0027r\u0027) as archive_tar:"},{"line_number":315,"context_line":"                            archive_tar.extractall(path\u003ditems_path)  # nosec"},{"line_number":316,"context_line":"                else:"},{"line_number":317,"context_line":"                    #NOTE(gbialas):This is an atempt to add support"},{"line_number":318,"context_line":"                    #for instaling rpm/deb files in containers build,"},{"line_number":319,"context_line":"                    #without rewriting whole script. Current aproach"},{"line_number":320,"context_line":"                    #is that only tar.gz archives are used during builds,"}],"source_content_type":"text/x-python","patch_set":4,"id":"0ad2ef16_fa73d100","line":317,"updated":"2024-03-27 16:40:04.000000000","message":"just write \"NOTE(gbialas): Create plugins dir if does not exist and move the downloaded file if it\u0027s not a tarball\"","commit_id":"ac251602a6622567162b3856712b4a4638d0be5a"},{"author":{"_account_id":34213,"name":"Grzegorz Bialas","display_name":"Grzegorz Bialas","email":"grzegorz@stackhpc.com","username":"gbialas"},"change_message_id":"b254188b6cbcc545f4d7133f6254ee40c879f7e3","unresolved":false,"context_lines":[{"line_number":314,"context_line":"                        with tarfile.open(archive, \u0027r\u0027) as archive_tar:"},{"line_number":315,"context_line":"                            archive_tar.extractall(path\u003ditems_path)  # nosec"},{"line_number":316,"context_line":"                else:"},{"line_number":317,"context_line":"                    #NOTE(gbialas):This is an atempt to add support"},{"line_number":318,"context_line":"                    #for instaling rpm/deb files in containers build,"},{"line_number":319,"context_line":"                    #without rewriting whole script. Current aproach"},{"line_number":320,"context_line":"                    #is that only tar.gz archives are used during builds,"}],"source_content_type":"text/x-python","patch_set":4,"id":"a4f5ed5f_ef5993e0","line":317,"in_reply_to":"0ad2ef16_fa73d100","updated":"2024-03-28 14:08:41.000000000","message":"Done","commit_id":"ac251602a6622567162b3856712b4a4638d0be5a"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"e70dfa441bac68b5d6de5578ea30b13d453ede4c","unresolved":true,"context_lines":[{"line_number":314,"context_line":"                        with tarfile.open(archive, \u0027r\u0027) as archive_tar:"},{"line_number":315,"context_line":"                            archive_tar.extractall(path\u003ditems_path)  # nosec"},{"line_number":316,"context_line":"                    else:"},{"line_number":317,"context_line":"                    # NOTE(gbialas):If downloaded file is not a tarball "},{"line_number":318,"context_line":"                    # create plugins dir if it does not exist, move "},{"line_number":319,"context_line":"                    # the downloaded file and restore file extension"},{"line_number":320,"context_line":"                    # for clarity."}],"source_content_type":"text/x-python","patch_set":10,"id":"bfc51f30_b20e003c","line":317,"range":{"start_line":317,"start_character":71,"end_line":317,"end_character":72},"updated":"2024-03-28 14:13:07.000000000","message":"whitespace","commit_id":"5a4a766e86ce3230a2061c9b5e2857f4b80b3c72"},{"author":{"_account_id":34213,"name":"Grzegorz Bialas","display_name":"Grzegorz Bialas","email":"grzegorz@stackhpc.com","username":"gbialas"},"change_message_id":"d968d40b60d953e34e752cbecb173beb1f9f5ee2","unresolved":false,"context_lines":[{"line_number":314,"context_line":"                        with tarfile.open(archive, \u0027r\u0027) as archive_tar:"},{"line_number":315,"context_line":"                            archive_tar.extractall(path\u003ditems_path)  # nosec"},{"line_number":316,"context_line":"                    else:"},{"line_number":317,"context_line":"                    # NOTE(gbialas):If downloaded file is not a tarball "},{"line_number":318,"context_line":"                    # create plugins dir if it does not exist, move "},{"line_number":319,"context_line":"                    # the downloaded file and restore file extension"},{"line_number":320,"context_line":"                    # for clarity."}],"source_content_type":"text/x-python","patch_set":10,"id":"d79c537a_f0dc03e9","line":317,"range":{"start_line":317,"start_character":71,"end_line":317,"end_character":72},"in_reply_to":"bfc51f30_b20e003c","updated":"2024-04-18 08:38:14.000000000","message":"Done","commit_id":"5a4a766e86ce3230a2061c9b5e2857f4b80b3c72"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"e70dfa441bac68b5d6de5578ea30b13d453ede4c","unresolved":true,"context_lines":[{"line_number":315,"context_line":"                            archive_tar.extractall(path\u003ditems_path)  # nosec"},{"line_number":316,"context_line":"                    else:"},{"line_number":317,"context_line":"                    # NOTE(gbialas):If downloaded file is not a tarball "},{"line_number":318,"context_line":"                    # create plugins dir if it does not exist, move "},{"line_number":319,"context_line":"                    # the downloaded file and restore file extension"},{"line_number":320,"context_line":"                    # for clarity."},{"line_number":321,"context_line":"                      for archive in archives:"}],"source_content_type":"text/x-python","patch_set":10,"id":"ec711f3f_0b22f811","line":318,"range":{"start_line":318,"start_character":67,"end_line":318,"end_character":68},"updated":"2024-03-28 14:13:07.000000000","message":"ditto","commit_id":"5a4a766e86ce3230a2061c9b5e2857f4b80b3c72"},{"author":{"_account_id":34213,"name":"Grzegorz Bialas","display_name":"Grzegorz Bialas","email":"grzegorz@stackhpc.com","username":"gbialas"},"change_message_id":"d968d40b60d953e34e752cbecb173beb1f9f5ee2","unresolved":false,"context_lines":[{"line_number":315,"context_line":"                            archive_tar.extractall(path\u003ditems_path)  # nosec"},{"line_number":316,"context_line":"                    else:"},{"line_number":317,"context_line":"                    # NOTE(gbialas):If downloaded file is not a tarball "},{"line_number":318,"context_line":"                    # create plugins dir if it does not exist, move "},{"line_number":319,"context_line":"                    # the downloaded file and restore file extension"},{"line_number":320,"context_line":"                    # for clarity."},{"line_number":321,"context_line":"                      for archive in archives:"}],"source_content_type":"text/x-python","patch_set":10,"id":"7c1419ed_869602d4","line":318,"range":{"start_line":318,"start_character":67,"end_line":318,"end_character":68},"in_reply_to":"ec711f3f_0b22f811","updated":"2024-04-18 08:38:14.000000000","message":"Done","commit_id":"5a4a766e86ce3230a2061c9b5e2857f4b80b3c72"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"e70dfa441bac68b5d6de5578ea30b13d453ede4c","unresolved":true,"context_lines":[{"line_number":320,"context_line":"                    # for clarity."},{"line_number":321,"context_line":"                      for archive in archives:"},{"line_number":322,"context_line":"                          try:"},{"line_number":323,"context_line":"                              os.mkdir(items_path)"},{"line_number":324,"context_line":"                          except Exception:"},{"line_number":325,"context_line":"                              pass"},{"line_number":326,"context_line":"                          file_name \u003d archive.split(\u0027/\u0027)[-1]"}],"source_content_type":"text/x-python","patch_set":10,"id":"d4942d28_f9b6abac","line":323,"range":{"start_line":323,"start_character":30,"end_line":323,"end_character":50},"updated":"2024-03-28 14:13:07.000000000","message":"we could use pathlib here (https://docs.python.org/3/library/pathlib.html#pathlib.Path.mkdir) without the try/except dance","commit_id":"5a4a766e86ce3230a2061c9b5e2857f4b80b3c72"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"9902bad6c4b9c3967f3d4e13009c0022473fb9c1","unresolved":false,"context_lines":[{"line_number":320,"context_line":"                    # for clarity."},{"line_number":321,"context_line":"                      for archive in archives:"},{"line_number":322,"context_line":"                          try:"},{"line_number":323,"context_line":"                              os.mkdir(items_path)"},{"line_number":324,"context_line":"                          except Exception:"},{"line_number":325,"context_line":"                              pass"},{"line_number":326,"context_line":"                          file_name \u003d archive.split(\u0027/\u0027)[-1]"}],"source_content_type":"text/x-python","patch_set":10,"id":"7c2364cc_d99130a2","line":323,"range":{"start_line":323,"start_character":30,"end_line":323,"end_character":50},"in_reply_to":"ba3a9287_bc14f287","updated":"2024-04-18 09:06:59.000000000","message":"Fine by me.","commit_id":"5a4a766e86ce3230a2061c9b5e2857f4b80b3c72"},{"author":{"_account_id":34213,"name":"Grzegorz Bialas","display_name":"Grzegorz Bialas","email":"grzegorz@stackhpc.com","username":"gbialas"},"change_message_id":"d968d40b60d953e34e752cbecb173beb1f9f5ee2","unresolved":false,"context_lines":[{"line_number":320,"context_line":"                    # for clarity."},{"line_number":321,"context_line":"                      for archive in archives:"},{"line_number":322,"context_line":"                          try:"},{"line_number":323,"context_line":"                              os.mkdir(items_path)"},{"line_number":324,"context_line":"                          except Exception:"},{"line_number":325,"context_line":"                              pass"},{"line_number":326,"context_line":"                          file_name \u003d archive.split(\u0027/\u0027)[-1]"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba3a9287_bc14f287","line":323,"range":{"start_line":323,"start_character":30,"end_line":323,"end_character":50},"in_reply_to":"d4942d28_f9b6abac","updated":"2024-04-18 08:38:14.000000000","message":"I would leave it because:\n- it is additional import\n- os is already used, so it will be one use of path lib, and few usages of os.","commit_id":"5a4a766e86ce3230a2061c9b5e2857f4b80b3c72"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"b893e48d75f3769ce9df8df3528c094523ccebb2","unresolved":true,"context_lines":[{"line_number":321,"context_line":"                    for archive in archives:"},{"line_number":322,"context_line":"                        os.makedirs(items_path, exist_ok\u003dTrue)"},{"line_number":323,"context_line":"                        file_name \u003d archive.split(\u0027/\u0027)[-1]"},{"line_number":324,"context_line":"                        file_extension \u003d file_name.split(\u0027-\u0027)[-2]"},{"line_number":325,"context_line":"                        full_file_name \u003d file_name + \u0027.\u0027 + file_extension"},{"line_number":326,"context_line":"                        archive_location \u003d os.path.join(items_path,"},{"line_number":327,"context_line":"                                                        full_file_name)"}],"source_content_type":"text/x-python","patch_set":19,"id":"5412028a_67c1fee3","line":324,"updated":"2024-04-24 12:00:09.000000000","message":"well, you assume here it\u0027s deb or rpm - but you don\u0027t check for it - should we have some validation?","commit_id":"d74c8224d0dec99893824520b3b9a0905e2799a6"}]}
