)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b73d19c1aeaf8af5c1aa8a58585ff791eebbd407","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b0ce710b_bc3354b4","updated":"2025-02-20 15:28:35.000000000","message":"looks good, just suggestion on config param name, not pressing for it though!!","commit_id":"ce56a2c258bd2b08a6a4efdb31e1e747dfe230be"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"925947964fa8225025815a4efa17a3832859c733","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"721cc98b_0f0e7bd4","updated":"2025-02-24 20:54:41.000000000","message":"recheck","commit_id":"e38ee91371dbbd832608b6225344bdab23f6a285"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"0010cb73a5b62dde33de61be6c4e2f0604a7e034","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"00405fc3_4e6498cc","updated":"2026-10-09 11:32:49.000000000","message":"Rebased and resolved the merge conflicts.","commit_id":"9218d95809e01f31bd853afc103444f1bbaa795c"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ab2f288137e4a28fce4bb0321d1a3fd0f39e0728","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"e8d82c8e_8186dd3d","updated":"2026-10-22 12:58:48.000000000","message":"The tempest-integrated-storage-import failure looks related","commit_id":"d46b8631a906c5f0a2a4ee441f93e009215dc315"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2f9139e19db72eb158332b3411f4565f9f8ddcc0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"29cf2694_9b5dee07","updated":"2026-10-22 13:42:59.000000000","message":"This definitely need releasenote and documentation.","commit_id":"d46b8631a906c5f0a2a4ee441f93e009215dc315"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"c885a602758832be18f685f3c6ac8fcd4cd9bcfb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"0626c664_8441187e","updated":"2026-10-22 13:52:38.000000000","message":"recheck","commit_id":"d46b8631a906c5f0a2a4ee441f93e009215dc315"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"c885a602758832be18f685f3c6ac8fcd4cd9bcfb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"7bf41bef_cfcc9072","in_reply_to":"e8d82c8e_8186dd3d","updated":"2026-10-22 13:52:38.000000000","message":"Looks like race during cleanup, let me add recheck and see if it fails again.","commit_id":"d46b8631a906c5f0a2a4ee441f93e009215dc315"}],"glance/common/config.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b73d19c1aeaf8af5c1aa8a58585ff791eebbd407","unresolved":true,"context_lines":[{"line_number":136,"context_line":"                       \u0027makes glance relax its definition of what a valid GPT \u0027"},{"line_number":137,"context_line":"                       \u0027disk image looks like and prevents strict adherence \u0027"},{"line_number":138,"context_line":"                       \u0027to the GPT spec.\u0027)),"},{"line_number":139,"context_line":"    cfg.BoolOpt(\u0027gpt_compat_as_raw\u0027,"},{"line_number":140,"context_line":"                default\u003dTrue,"},{"line_number":141,"context_line":"                help\u003d_(\u0027Allow images detected as GPT to be registered as \u0027"},{"line_number":142,"context_line":"                       \u0027disk_format\u003draw (i.e. compatibility with earlier \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"5846a2dc_91689961","line":139,"range":{"start_line":139,"start_character":17,"end_line":139,"end_character":34},"updated":"2025-02-20 15:28:35.000000000","message":"allow_gpt_as_raw?","commit_id":"ce56a2c258bd2b08a6a4efdb31e1e747dfe230be"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"bb78d7ae1fc220eff61ed7f779c883cf69cfb5c5","unresolved":true,"context_lines":[{"line_number":136,"context_line":"                       \u0027makes glance relax its definition of what a valid GPT \u0027"},{"line_number":137,"context_line":"                       \u0027disk image looks like and prevents strict adherence \u0027"},{"line_number":138,"context_line":"                       \u0027to the GPT spec.\u0027)),"},{"line_number":139,"context_line":"    cfg.BoolOpt(\u0027gpt_compat_as_raw\u0027,"},{"line_number":140,"context_line":"                default\u003dTrue,"},{"line_number":141,"context_line":"                help\u003d_(\u0027Allow images detected as GPT to be registered as \u0027"},{"line_number":142,"context_line":"                       \u0027disk_format\u003draw (i.e. compatibility with earlier \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"a1893348_8989c235","line":139,"range":{"start_line":139,"start_character":17,"end_line":139,"end_character":34},"in_reply_to":"31aedfea_f35a6cd4","updated":"2025-02-20 15:35:23.000000000","message":"No worries, let\u0027s see if any one else has same thought or good to go!!","commit_id":"ce56a2c258bd2b08a6a4efdb31e1e747dfe230be"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"35546cc17376fbad0e1abddedd013dfe19e011f4","unresolved":true,"context_lines":[{"line_number":136,"context_line":"                       \u0027makes glance relax its definition of what a valid GPT \u0027"},{"line_number":137,"context_line":"                       \u0027disk image looks like and prevents strict adherence \u0027"},{"line_number":138,"context_line":"                       \u0027to the GPT spec.\u0027)),"},{"line_number":139,"context_line":"    cfg.BoolOpt(\u0027gpt_compat_as_raw\u0027,"},{"line_number":140,"context_line":"                default\u003dTrue,"},{"line_number":141,"context_line":"                help\u003d_(\u0027Allow images detected as GPT to be registered as \u0027"},{"line_number":142,"context_line":"                       \u0027disk_format\u003draw (i.e. compatibility with earlier \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"31aedfea_f35a6cd4","line":139,"range":{"start_line":139,"start_character":17,"end_line":139,"end_character":34},"in_reply_to":"5846a2dc_91689961","updated":"2025-02-20 15:31:50.000000000","message":"I was trying to keep all the GPT-related things prefixed with `gpt_` but I can change it if that\u0027s what you\u0027re asking for.","commit_id":"ce56a2c258bd2b08a6a4efdb31e1e747dfe230be"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"e6bfd6d84b8b968b58cbe6c168887be4d8356601","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                       \u0027makes glance relax its definition of what a valid GPT \u0027"},{"line_number":137,"context_line":"                       \u0027disk image looks like and prevents strict adherence \u0027"},{"line_number":138,"context_line":"                       \u0027to the GPT spec.\u0027)),"},{"line_number":139,"context_line":"    cfg.BoolOpt(\u0027gpt_compat_as_raw\u0027,"},{"line_number":140,"context_line":"                default\u003dTrue,"},{"line_number":141,"context_line":"                help\u003d_(\u0027Allow images detected as GPT to be registered as \u0027"},{"line_number":142,"context_line":"                       \u0027disk_format\u003draw (i.e. compatibility with earlier \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"6feb1565_7c8df837","line":139,"range":{"start_line":139,"start_character":17,"end_line":139,"end_character":34},"in_reply_to":"a1893348_8989c235","updated":"2025-02-26 06:49:14.000000000","message":"Done","commit_id":"ce56a2c258bd2b08a6a4efdb31e1e747dfe230be"}],"glance/location.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2d074038a913df9d8a47f3fd547d4448e9f81599","unresolved":true,"context_lines":[{"line_number":643,"context_line":"                # recognize the format of the payload, allow it through."},{"line_number":644,"context_line":"                LOG.info(\u0027Image format %s is not an inspectable type\u0027,"},{"line_number":645,"context_line":"                         self.image.disk_format)"},{"line_number":646,"context_line":"            elif (self.image.disk_format \u003d\u003d \u0027raw\u0027 and format \u003d\u003d \u0027gpt\u0027 and"},{"line_number":647,"context_line":"                  raw_compat):"},{"line_number":648,"context_line":"                LOG.info(\u0027Image claims raw format but detected as gpt. \u0027"},{"line_number":649,"context_line":"                         \u0027Allowing because gpt_compat_as_raw\u003dTrue\u0027)"},{"line_number":650,"context_line":"                virtual_size \u003d inspector.actual_size"}],"source_content_type":"text/x-python","patch_set":9,"id":"c7b4140f_0529b1ee","line":647,"range":{"start_line":646,"start_character":0,"end_line":647,"end_character":30},"updated":"2026-10-22 14:34:43.000000000","message":"I think the conversion plugin needs the same check. It should honor\ngpt_compat_as_raw during source-format validation, before qemu-img is\ninvoked.","commit_id":"d46b8631a906c5f0a2a4ee441f93e009215dc315"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"6fd06ffd652540e764c20d29943e0d616d9e942c","unresolved":false,"context_lines":[{"line_number":643,"context_line":"                # recognize the format of the payload, allow it through."},{"line_number":644,"context_line":"                LOG.info(\u0027Image format %s is not an inspectable type\u0027,"},{"line_number":645,"context_line":"                         self.image.disk_format)"},{"line_number":646,"context_line":"            elif (self.image.disk_format \u003d\u003d \u0027raw\u0027 and format \u003d\u003d \u0027gpt\u0027 and"},{"line_number":647,"context_line":"                  raw_compat):"},{"line_number":648,"context_line":"                LOG.info(\u0027Image claims raw format but detected as gpt. \u0027"},{"line_number":649,"context_line":"                         \u0027Allowing because gpt_compat_as_raw\u003dTrue\u0027)"},{"line_number":650,"context_line":"                virtual_size \u003d inspector.actual_size"}],"source_content_type":"text/x-python","patch_set":9,"id":"a0fca779_f7a540e4","line":647,"range":{"start_line":646,"start_character":0,"end_line":647,"end_character":30},"in_reply_to":"c7b4140f_0529b1ee","updated":"2026-10-23 08:54:59.000000000","message":"Done","commit_id":"d46b8631a906c5f0a2a4ee441f93e009215dc315"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2d074038a913df9d8a47f3fd547d4448e9f81599","unresolved":true,"context_lines":[{"line_number":648,"context_line":"                LOG.info(\u0027Image claims raw format but detected as gpt. \u0027"},{"line_number":649,"context_line":"                         \u0027Allowing because gpt_compat_as_raw\u003dTrue\u0027)"},{"line_number":650,"context_line":"                virtual_size \u003d inspector.actual_size"},{"line_number":651,"context_line":"            elif self.image.disk_format \u003d\u003d \u0027raw\u0027 and format \u003d\u003d \u0027raw\u0027:"},{"line_number":652,"context_line":"                # This is something we can\u0027t inspect, so we allow it"},{"line_number":653,"context_line":"                LOG.warning(\u0027Image claims %r disk_format but is actually %r\u0027,"},{"line_number":654,"context_line":"                            self.image.disk_format, format)"}],"source_content_type":"text/x-python","patch_set":9,"id":"e49745c5_dbcd7857","line":651,"range":{"start_line":651,"start_character":12,"end_line":651,"end_character":69},"updated":"2026-10-22 14:34:43.000000000","message":"I think this is not needed now, as line no 636 is doing same thing, right?\n\nIf the intent is to keep accepting raw-declared images whose detected\nformat is not GPT, the condition should be `format !\u003d \u0027gpt\u0027` rather than\n`format \u003d\u003d \u0027raw\u0027`.","commit_id":"d46b8631a906c5f0a2a4ee441f93e009215dc315"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"6fd06ffd652540e764c20d29943e0d616d9e942c","unresolved":true,"context_lines":[{"line_number":648,"context_line":"                LOG.info(\u0027Image claims raw format but detected as gpt. \u0027"},{"line_number":649,"context_line":"                         \u0027Allowing because gpt_compat_as_raw\u003dTrue\u0027)"},{"line_number":650,"context_line":"                virtual_size \u003d inspector.actual_size"},{"line_number":651,"context_line":"            elif self.image.disk_format \u003d\u003d \u0027raw\u0027 and format \u003d\u003d \u0027raw\u0027:"},{"line_number":652,"context_line":"                # This is something we can\u0027t inspect, so we allow it"},{"line_number":653,"context_line":"                LOG.warning(\u0027Image claims %r disk_format but is actually %r\u0027,"},{"line_number":654,"context_line":"                            self.image.disk_format, format)"}],"source_content_type":"text/x-python","patch_set":9,"id":"0730e0f4_b6c90f38","line":651,"range":{"start_line":651,"start_character":12,"end_line":651,"end_character":69},"in_reply_to":"e49745c5_dbcd7857","updated":"2026-10-23 08:54:59.000000000","message":"Removed.","commit_id":"d46b8631a906c5f0a2a4ee441f93e009215dc315"}],"glance/tests/unit/test_store_image.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"e6bfd6d84b8b968b58cbe6c168887be4d8356601","unresolved":true,"context_lines":[{"line_number":438,"context_line":"        image_stub.disk_format \u003d \u0027raw\u0027"},{"line_number":439,"context_line":"        image \u003d glance.location.ImageProxy(image_stub, context,"},{"line_number":440,"context_line":"                                           store_api, self.store_utils)"},{"line_number":441,"context_line":"        self.assertRaisesRegex(exception.InvalidImageData,"},{"line_number":442,"context_line":"                               \u0027failed safety\u0027,"},{"line_number":443,"context_line":"                               image.set_data, iter((data,)), 1024)"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"        # Finally, with compat enabled and valid data, we should be allowed"},{"line_number":446,"context_line":"        # to upload GPT data into a raw image"}],"source_content_type":"text/x-python","patch_set":7,"id":"603b9242_6fbd171a","line":443,"range":{"start_line":441,"start_character":8,"end_line":443,"end_character":67},"updated":"2025-02-26 06:49:14.000000000","message":"I think this check should not be required, might be leftover or something missed during rebase/retool of the patches.","commit_id":"202bc1d0faac8dc74aa05fcfd0d3eefaa509aae8"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"6fd06ffd652540e764c20d29943e0d616d9e942c","unresolved":true,"context_lines":[{"line_number":438,"context_line":"        image_stub.disk_format \u003d \u0027raw\u0027"},{"line_number":439,"context_line":"        image \u003d glance.location.ImageProxy(image_stub, context,"},{"line_number":440,"context_line":"                                           store_api, self.store_utils)"},{"line_number":441,"context_line":"        self.assertRaisesRegex(exception.InvalidImageData,"},{"line_number":442,"context_line":"                               \u0027failed safety\u0027,"},{"line_number":443,"context_line":"                               image.set_data, iter((data,)), 1024)"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"        # Finally, with compat enabled and valid data, we should be allowed"},{"line_number":446,"context_line":"        # to upload GPT data into a raw image"}],"source_content_type":"text/x-python","patch_set":7,"id":"d9c9bd2b_2266a497","line":443,"range":{"start_line":441,"start_character":8,"end_line":443,"end_character":67},"in_reply_to":"603b9242_6fbd171a","updated":"2026-10-23 08:54:59.000000000","message":"I think this is still useful. With the option on, this unsafe GPT image claimed as raw gets past the format check and fails the safety check. With the option off, the block above fails on the format mismatch instead.","commit_id":"202bc1d0faac8dc74aa05fcfd0d3eefaa509aae8"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2d074038a913df9d8a47f3fd547d4448e9f81599","unresolved":true,"context_lines":[{"line_number":538,"context_line":"        image \u003d glance.location.ImageProxy(image_stub, context,"},{"line_number":539,"context_line":"                                           store_api, self.store_utils)"},{"line_number":540,"context_line":"        data \u003d self._get_stub_gpt()"},{"line_number":541,"context_line":"        image.set_data(iter((data,)), 1024)"},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"    def test_image_set_data_inspector_no_match_disabled(self):"},{"line_number":544,"context_line":"        self.config(require_image_format_match\u003dFalse, group\u003d\u0027image_format\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"4c3b9200_6f987869","line":541,"updated":"2026-10-22 14:34:43.000000000","message":"I think here we need to assert something like status, virtual size, size etc? otherwise remove this if it is of no use to have it here.","commit_id":"d46b8631a906c5f0a2a4ee441f93e009215dc315"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"6fd06ffd652540e764c20d29943e0d616d9e942c","unresolved":false,"context_lines":[{"line_number":538,"context_line":"        image \u003d glance.location.ImageProxy(image_stub, context,"},{"line_number":539,"context_line":"                                           store_api, self.store_utils)"},{"line_number":540,"context_line":"        data \u003d self._get_stub_gpt()"},{"line_number":541,"context_line":"        image.set_data(iter((data,)), 1024)"},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"    def test_image_set_data_inspector_no_match_disabled(self):"},{"line_number":544,"context_line":"        self.config(require_image_format_match\u003dFalse, group\u003d\u0027image_format\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"d89a9d3d_34086c2e","line":541,"in_reply_to":"4c3b9200_6f987869","updated":"2026-10-23 08:54:59.000000000","message":"Done","commit_id":"d46b8631a906c5f0a2a4ee441f93e009215dc315"}]}
