)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"0e69f177f11c8c98f6214439d06ca6d004894a31","unresolved":true,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2023-08-19 07:06:35 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add support for new location APIs"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Depends-On: https://review.opendev.org/c/openstack/glance/+/890509"},{"line_number":10,"context_line":"Change-Id: Id378cd5b7d20775b5117ee3f509bd6bdd61702e3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7661f38c_f9007761","line":8,"updated":"2023-08-21 07:03:55.000000000","message":"This should have blueprint and tagged it here","commit_id":"12d35f0452db216956c5d9ed59df2b1fa1234aff"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"0e569250054307531ed1c98d995505141d1e326d","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2023-08-19 07:06:35 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add support for new location APIs"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Depends-On: https://review.opendev.org/c/openstack/glance/+/890509"},{"line_number":10,"context_line":"Change-Id: Id378cd5b7d20775b5117ee3f509bd6bdd61702e3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"24bd9868_8c52111f","line":8,"in_reply_to":"7661f38c_f9007761","updated":"2023-08-25 06:25:03.000000000","message":"Done","commit_id":"12d35f0452db216956c5d9ed59df2b1fa1234aff"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c55158628449422344de3e4d290f1d1aa9ce6feb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"146884e6_bb098372","updated":"2023-08-25 06:35:31.000000000","message":"Missing releasenotes","commit_id":"959d6fb7bd9476b671b7fc1e878c0bbc82f4f719"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"0e569250054307531ed1c98d995505141d1e326d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"164982ae_c2d343d1","updated":"2023-08-25 06:25:03.000000000","message":"Thanks Abhishek ! I have addressed the review comments.","commit_id":"959d6fb7bd9476b671b7fc1e878c0bbc82f4f719"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2aa109a844ec38e2c9ebc368fd7ad8b448955cc9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"9dcd5c13_f46ced90","updated":"2023-08-28 15:43:25.000000000","message":"one suggestion, one change","commit_id":"f92c39d2f7ae5e837342e91665efe619ff93639e"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"773a83d5c9c6b1ab057a8669a7bc5616d22e6d01","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"d69ffa8b_278137de","updated":"2023-08-29 09:52:47.000000000","message":"Thanks Abhishek !","commit_id":"9f3a8ea7328703e9cfaa4b636fd69461a1f8dd6c"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"e578b4ef3b27ce51642f03b5dd0e96b857f5400e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"820068f8_d420d991","updated":"2024-07-02 06:47:01.000000000","message":"Thanks for the review! I have added the validation.","commit_id":"2c6d87edde8dedb02f62125ac46259b27df0d426"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b896b06487503958694ac22863a43ba9abda5f49","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"df830e87_f0d2d65a","updated":"2024-08-09 21:46:11.000000000","message":"Code and tests look OK; see comments inline about the shell help string and the release note.","commit_id":"476cdadf2ea2003bf1b8fff3467f159e6b4614d9"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"3ac4c763925acfbfcac096b0b9ad0ec8eb884587","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"c5d41726_0b3c1d82","updated":"2024-08-12 07:02:09.000000000","message":"Thanks Brian for the suggestions!!","commit_id":"476cdadf2ea2003bf1b8fff3467f159e6b4614d9"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"199e940a6680f8073313473d0c5bf05c14bf7ff4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"9aa546c5_1feaede9","updated":"2024-08-13 13:49:29.000000000","message":"A few suggestions for the release note, otherwise LGTM ... except, does this require an update to the glanceclient documentation?","commit_id":"ff1415dd96f2cd85d1c74599ebd8f70a6877f150"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"9fe98bbbab902bd2bebc676ec998b9cc67f20c70","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"441497b3_7ab7ed92","updated":"2024-08-13 07:10:52.000000000","message":"Looks good, lets see what @Brian has to say about it!","commit_id":"ff1415dd96f2cd85d1c74599ebd8f70a6877f150"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"b8bfcd3a87ac56763c5ca257e2a6a03aa4979cff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"79a24d1d_d25fcf51","updated":"2024-08-12 10:16:47.000000000","message":"Thanks Abhishek!","commit_id":"ff1415dd96f2cd85d1c74599ebd8f70a6877f150"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"7fe748d82b22ee5e5222955c71db3678b1e62ceb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"925c9f1d_c843c52d","in_reply_to":"9aa546c5_1feaede9","updated":"2024-08-14 10:46:18.000000000","message":"I\u0027m not sure whether we need to update the doc after adding new api support to client as well if we have glance side doc updated already, is it really required? May be in follow-up patch it can be done if required.","commit_id":"ff1415dd96f2cd85d1c74599ebd8f70a6877f150"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"1d9f0489da01eba385cca28adfbf04b0dbc48b6b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"a43ef1ff_52c8dce0","updated":"2024-08-19 17:43:25.000000000","message":"Revisions LGTM; I\u0027m OK with updating the docs as a follow up.","commit_id":"4439db2ff023bdd65b4e965c7a5670b4a3da2923"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"85fdd69b2d4332edfa3938734567b38960b6c8b0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"9411438c_fe8dfd82","updated":"2024-08-19 17:04:43.000000000","message":"We can work on documentation in followup patch!!","commit_id":"4439db2ff023bdd65b4e965c7a5670b4a3da2923"}],"glanceclient/common/utils.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"4dc6d8ea16fe043a1a1282203619ed46b72580ad","unresolved":true,"context_lines":[{"line_number":258,"context_line":"    print(encodeutils.safe_decode(pt.get_string()))"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"def print_list(objs, fields, formatters\u003dNone, field_settings\u003dNone):"},{"line_number":262,"context_line":"    \u0027\u0027\u0027Prints a list of objects."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    @param objs: Objects to print"}],"source_content_type":"text/x-python","patch_set":1,"id":"861a6017_eb6611a1","line":261,"range":{"start_line":261,"start_character":4,"end_line":261,"end_character":14},"updated":"2023-08-07 08:10:18.000000000","message":"why not use this instead adding print_locations?","commit_id":"ad3b3b7485fd9c9b88f6e89075cfd1c9f6306c61"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"11a6f94d6d150e0e681e6abc1df785c80deff713","unresolved":false,"context_lines":[{"line_number":258,"context_line":"    print(encodeutils.safe_decode(pt.get_string()))"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"def print_list(objs, fields, formatters\u003dNone, field_settings\u003dNone):"},{"line_number":262,"context_line":"    \u0027\u0027\u0027Prints a list of objects."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    @param objs: Objects to print"}],"source_content_type":"text/x-python","patch_set":1,"id":"1265b5d3_bfe3bd2e","line":261,"range":{"start_line":261,"start_character":4,"end_line":261,"end_character":14},"in_reply_to":"861a6017_eb6611a1","updated":"2023-08-07 09:56:39.000000000","message":"Done","commit_id":"ad3b3b7485fd9c9b88f6e89075cfd1c9f6306c61"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"0e69f177f11c8c98f6214439d06ca6d004894a31","unresolved":true,"context_lines":[{"line_number":267,"context_line":""},{"line_number":268,"context_line":"            if field in formatters:"},{"line_number":269,"context_line":"                row.append(formatters[field](o))"},{"line_number":270,"context_line":"            elif isinstance(o, dict) and \u0027url\u0027 in o.keys():"},{"line_number":271,"context_line":"                for k, v in o.items():"},{"line_number":272,"context_line":"                    if k \u003d\u003d field:"},{"line_number":273,"context_line":"                        row.append(v)"}],"source_content_type":"text/x-python","patch_set":6,"id":"62d949c9_aaec0def","line":270,"range":{"start_line":270,"start_character":41,"end_line":270,"end_character":59},"updated":"2023-08-21 07:03:55.000000000","message":"I think if you remove this then it will become generic, right?","commit_id":"12d35f0452db216956c5d9ed59df2b1fa1234aff"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"0e569250054307531ed1c98d995505141d1e326d","unresolved":true,"context_lines":[{"line_number":267,"context_line":""},{"line_number":268,"context_line":"            if field in formatters:"},{"line_number":269,"context_line":"                row.append(formatters[field](o))"},{"line_number":270,"context_line":"            elif isinstance(o, dict) and \u0027url\u0027 in o.keys():"},{"line_number":271,"context_line":"                for k, v in o.items():"},{"line_number":272,"context_line":"                    if k \u003d\u003d field:"},{"line_number":273,"context_line":"                        row.append(v)"}],"source_content_type":"text/x-python","patch_set":6,"id":"b3607186_4626d977","line":270,"range":{"start_line":270,"start_character":41,"end_line":270,"end_character":59},"in_reply_to":"62d949c9_aaec0def","updated":"2023-08-25 06:25:03.000000000","message":"Yeah, I just tried adding it temp since noticed few existing functioanl tests were failing, now changing these checks sequence fixing the issue.","commit_id":"12d35f0452db216956c5d9ed59df2b1fa1234aff"}],"glanceclient/tests/unit/v2/base.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"0e69f177f11c8c98f6214439d06ca6d004894a31","unresolved":true,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def get_image_locations(self, *args):"},{"line_number":125,"context_line":"        resource \u003d self.controller.get_image_locations(*args)"},{"line_number":126,"context_line":"        return resource"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"class BaseResourceTypeController(BaseController):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9075e011_ead296c5","line":126,"updated":"2023-08-21 07:03:55.000000000","message":"why no assertReguestId here?","commit_id":"12d35f0452db216956c5d9ed59df2b1fa1234aff"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"0e569250054307531ed1c98d995505141d1e326d","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def get_image_locations(self, *args):"},{"line_number":125,"context_line":"        resource \u003d self.controller.get_image_locations(*args)"},{"line_number":126,"context_line":"        return resource"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"class BaseResourceTypeController(BaseController):"}],"source_content_type":"text/x-python","patch_set":6,"id":"38d207fc_f7887e08","line":126,"in_reply_to":"9075e011_ead296c5","updated":"2023-08-25 06:25:03.000000000","message":"Done","commit_id":"12d35f0452db216956c5d9ed59df2b1fa1234aff"}],"glanceclient/tests/unit/v2/test_images.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"0e69f177f11c8c98f6214439d06ca6d004894a31","unresolved":true,"context_lines":[{"line_number":1530,"context_line":"            mock_has_version.return_value \u003d True"},{"line_number":1531,"context_line":"            self.controller.add_image_location(image_id, location_url, {})"},{"line_number":1532,"context_line":"            self.assertEqual(expect, self.api.calls)"},{"line_number":1533,"context_line":""},{"line_number":1534,"context_line":"    def test_add_image_location_not_supported(self):"},{"line_number":1535,"context_line":"        with mock.patch.object(common_utils,"},{"line_number":1536,"context_line":"                               \u0027has_version\u0027) as mock_has_version:"}],"source_content_type":"text/x-python","patch_set":6,"id":"a4b8fa39_9b11f770","line":1533,"updated":"2023-08-21 07:03:55.000000000","message":"One test for validation data as input?","commit_id":"12d35f0452db216956c5d9ed59df2b1fa1234aff"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"0e569250054307531ed1c98d995505141d1e326d","unresolved":false,"context_lines":[{"line_number":1530,"context_line":"            mock_has_version.return_value \u003d True"},{"line_number":1531,"context_line":"            self.controller.add_image_location(image_id, location_url, {})"},{"line_number":1532,"context_line":"            self.assertEqual(expect, self.api.calls)"},{"line_number":1533,"context_line":""},{"line_number":1534,"context_line":"    def test_add_image_location_not_supported(self):"},{"line_number":1535,"context_line":"        with mock.patch.object(common_utils,"},{"line_number":1536,"context_line":"                               \u0027has_version\u0027) as mock_has_version:"}],"source_content_type":"text/x-python","patch_set":6,"id":"a2fd4792_1cde889e","line":1533,"in_reply_to":"a4b8fa39_9b11f770","updated":"2023-08-25 06:25:03.000000000","message":"Done","commit_id":"12d35f0452db216956c5d9ed59df2b1fa1234aff"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c55158628449422344de3e4d290f1d1aa9ce6feb","unresolved":true,"context_lines":[{"line_number":1538,"context_line":"            (\u0027POST\u0027,"},{"line_number":1539,"context_line":"             \u0027/v2/images/%s/locations\u0027 % (image_id),"},{"line_number":1540,"context_line":"             {},"},{"line_number":1541,"context_line":"             [(\u0027url\u0027, location_url), (\u0027validation_data\u0027, {\u0027spam\u0027: \u0027ham\u0027})]),"},{"line_number":1542,"context_line":"            (\u0027GET\u0027, \u0027/v2/images/%s\u0027 % (image_id), {}, None)]"},{"line_number":1543,"context_line":"        with mock.patch.object(common_utils,"},{"line_number":1544,"context_line":"                               \u0027has_version\u0027) as mock_has_version:"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f714672_2cb9ebaa","line":1541,"range":{"start_line":1541,"start_character":58,"end_line":1541,"end_character":71},"updated":"2023-08-25 06:35:31.000000000","message":"this should not be allowed now, I know you are directly calling client method but now client/shell has validation to not allow such input.","commit_id":"959d6fb7bd9476b671b7fc1e878c0bbc82f4f719"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a0860b6f1adc3e37149dded115ca36b2a37d5e89","unresolved":false,"context_lines":[{"line_number":1538,"context_line":"            (\u0027POST\u0027,"},{"line_number":1539,"context_line":"             \u0027/v2/images/%s/locations\u0027 % (image_id),"},{"line_number":1540,"context_line":"             {},"},{"line_number":1541,"context_line":"             [(\u0027url\u0027, location_url), (\u0027validation_data\u0027, {\u0027spam\u0027: \u0027ham\u0027})]),"},{"line_number":1542,"context_line":"            (\u0027GET\u0027, \u0027/v2/images/%s\u0027 % (image_id), {}, None)]"},{"line_number":1543,"context_line":"        with mock.patch.object(common_utils,"},{"line_number":1544,"context_line":"                               \u0027has_version\u0027) as mock_has_version:"}],"source_content_type":"text/x-python","patch_set":7,"id":"623e5d73_5267015e","line":1541,"range":{"start_line":1541,"start_character":58,"end_line":1541,"end_character":71},"in_reply_to":"5f714672_2cb9ebaa","updated":"2024-05-13 11:12:41.000000000","message":"Done","commit_id":"959d6fb7bd9476b671b7fc1e878c0bbc82f4f719"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"302771b4622fcd8cd47d23121b15b47228f9bccf","unresolved":true,"context_lines":[{"line_number":1545,"context_line":"                               \u0027has_version\u0027) as mock_has_version:"},{"line_number":1546,"context_line":"            mock_has_version.return_value \u003d True"},{"line_number":1547,"context_line":"            self.controller.add_image_location(image_id, location_url,"},{"line_number":1548,"context_line":"                                               {\u0027os_hash_algo\u0027: \u0027algo\u0027})"},{"line_number":1549,"context_line":"            self.assertEqual(expect, self.api.calls)"},{"line_number":1550,"context_line":""},{"line_number":1551,"context_line":"    def test_add_image_location_not_supported(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"438f933a_14845c25","line":1548,"range":{"start_line":1548,"start_character":65,"end_line":1548,"end_character":69},"updated":"2024-06-20 05:38:05.000000000","message":"Ideally this should fail unless you are mocking the api call. I will suggest you should provide actual expected value here.\n\nAlso this brings question, that shouldn\u0027t we validate the input provided by user at client side? I think we should at least check for os_hash_algo value since we support limited options.","commit_id":"2c6d87edde8dedb02f62125ac46259b27df0d426"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"af5585125ac5c3b583ae81baf09043d3edb867d5","unresolved":true,"context_lines":[{"line_number":1545,"context_line":"                               \u0027has_version\u0027) as mock_has_version:"},{"line_number":1546,"context_line":"            mock_has_version.return_value \u003d True"},{"line_number":1547,"context_line":"            self.controller.add_image_location(image_id, location_url,"},{"line_number":1548,"context_line":"                                               {\u0027os_hash_algo\u0027: \u0027algo\u0027})"},{"line_number":1549,"context_line":"            self.assertEqual(expect, self.api.calls)"},{"line_number":1550,"context_line":""},{"line_number":1551,"context_line":"    def test_add_image_location_not_supported(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"6e97ebce_7afac2f7","line":1548,"range":{"start_line":1548,"start_character":65,"end_line":1548,"end_character":69},"in_reply_to":"418088b9_1df782f1","updated":"2024-07-02 06:50:47.000000000","message":"yes we do","commit_id":"2c6d87edde8dedb02f62125ac46259b27df0d426"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"e578b4ef3b27ce51642f03b5dd0e96b857f5400e","unresolved":true,"context_lines":[{"line_number":1545,"context_line":"                               \u0027has_version\u0027) as mock_has_version:"},{"line_number":1546,"context_line":"            mock_has_version.return_value \u003d True"},{"line_number":1547,"context_line":"            self.controller.add_image_location(image_id, location_url,"},{"line_number":1548,"context_line":"                                               {\u0027os_hash_algo\u0027: \u0027algo\u0027})"},{"line_number":1549,"context_line":"            self.assertEqual(expect, self.api.calls)"},{"line_number":1550,"context_line":""},{"line_number":1551,"context_line":"    def test_add_image_location_not_supported(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"418088b9_1df782f1","line":1548,"range":{"start_line":1548,"start_character":65,"end_line":1548,"end_character":69},"in_reply_to":"438f933a_14845c25","updated":"2024-07-02 06:47:01.000000000","message":"Do we do such validations at client side if we already have it at api level?","commit_id":"2c6d87edde8dedb02f62125ac46259b27df0d426"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"fd7ccfe9c4a858c955a95c87334918b6137a4c02","unresolved":false,"context_lines":[{"line_number":1545,"context_line":"                               \u0027has_version\u0027) as mock_has_version:"},{"line_number":1546,"context_line":"            mock_has_version.return_value \u003d True"},{"line_number":1547,"context_line":"            self.controller.add_image_location(image_id, location_url,"},{"line_number":1548,"context_line":"                                               {\u0027os_hash_algo\u0027: \u0027algo\u0027})"},{"line_number":1549,"context_line":"            self.assertEqual(expect, self.api.calls)"},{"line_number":1550,"context_line":""},{"line_number":1551,"context_line":"    def test_add_image_location_not_supported(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"312d366f_9b3a963b","line":1548,"range":{"start_line":1548,"start_character":65,"end_line":1548,"end_character":69},"in_reply_to":"6e97ebce_7afac2f7","updated":"2024-07-02 08:01:52.000000000","message":"Done","commit_id":"2c6d87edde8dedb02f62125ac46259b27df0d426"}],"glanceclient/tests/unit/v2/test_shell_v2.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"302771b4622fcd8cd47d23121b15b47228f9bccf","unresolved":true,"context_lines":[{"line_number":1992,"context_line":"    def test_do_add_location(self):"},{"line_number":1993,"context_line":"        gc \u003d self.gc"},{"line_number":1994,"context_line":"        url \u003d \u0027http://foo.com/\u0027,"},{"line_number":1995,"context_line":"        validation_data \u003d {\u0027os_hash_algo\u0027: \u0027algo\u0027,"},{"line_number":1996,"context_line":"                           \u0027os_hash_value\u0027: \u0027value\u0027}"},{"line_number":1997,"context_line":"        args \u003d {\u0027id\u0027: \u0027IMG-01\u0027,"},{"line_number":1998,"context_line":"                \u0027url\u0027: url,"}],"source_content_type":"text/x-python","patch_set":11,"id":"b90d7e56_7af0d407","line":1995,"range":{"start_line":1995,"start_character":44,"end_line":1995,"end_character":48},"updated":"2024-06-20 05:38:05.000000000","message":"ditto","commit_id":"2c6d87edde8dedb02f62125ac46259b27df0d426"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"e578b4ef3b27ce51642f03b5dd0e96b857f5400e","unresolved":false,"context_lines":[{"line_number":1992,"context_line":"    def test_do_add_location(self):"},{"line_number":1993,"context_line":"        gc \u003d self.gc"},{"line_number":1994,"context_line":"        url \u003d \u0027http://foo.com/\u0027,"},{"line_number":1995,"context_line":"        validation_data \u003d {\u0027os_hash_algo\u0027: \u0027algo\u0027,"},{"line_number":1996,"context_line":"                           \u0027os_hash_value\u0027: \u0027value\u0027}"},{"line_number":1997,"context_line":"        args \u003d {\u0027id\u0027: \u0027IMG-01\u0027,"},{"line_number":1998,"context_line":"                \u0027url\u0027: url,"}],"source_content_type":"text/x-python","patch_set":11,"id":"32cb3a63_c687b98f","line":1995,"range":{"start_line":1995,"start_character":44,"end_line":1995,"end_character":48},"in_reply_to":"b90d7e56_7af0d407","updated":"2024-07-02 06:47:01.000000000","message":"Done","commit_id":"2c6d87edde8dedb02f62125ac46259b27df0d426"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"302771b4622fcd8cd47d23121b15b47228f9bccf","unresolved":true,"context_lines":[{"line_number":2011,"context_line":"    def test_do_add_location_with_checksum_in_validation_data(self,"},{"line_number":2012,"context_line":"                                                              mock_exit):"},{"line_number":2013,"context_line":"        validation_data \u003d {\u0027checksum\u0027: \u0027value\u0027,"},{"line_number":2014,"context_line":"                           \u0027os_hash_algo\u0027: \u0027algo\u0027,"},{"line_number":2015,"context_line":"                           \u0027os_hash_value\u0027: \u0027value\u0027}"},{"line_number":2016,"context_line":""},{"line_number":2017,"context_line":"        args \u003d self._make_args("}],"source_content_type":"text/x-python","patch_set":11,"id":"d6797666_b9b29928","line":2014,"range":{"start_line":2014,"start_character":44,"end_line":2014,"end_character":48},"updated":"2024-06-20 05:38:05.000000000","message":"ditto","commit_id":"2c6d87edde8dedb02f62125ac46259b27df0d426"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"e578b4ef3b27ce51642f03b5dd0e96b857f5400e","unresolved":false,"context_lines":[{"line_number":2011,"context_line":"    def test_do_add_location_with_checksum_in_validation_data(self,"},{"line_number":2012,"context_line":"                                                              mock_exit):"},{"line_number":2013,"context_line":"        validation_data \u003d {\u0027checksum\u0027: \u0027value\u0027,"},{"line_number":2014,"context_line":"                           \u0027os_hash_algo\u0027: \u0027algo\u0027,"},{"line_number":2015,"context_line":"                           \u0027os_hash_value\u0027: \u0027value\u0027}"},{"line_number":2016,"context_line":""},{"line_number":2017,"context_line":"        args \u003d self._make_args("}],"source_content_type":"text/x-python","patch_set":11,"id":"db0126b0_254277aa","line":2014,"range":{"start_line":2014,"start_character":44,"end_line":2014,"end_character":48},"in_reply_to":"d6797666_b9b29928","updated":"2024-07-02 06:47:01.000000000","message":"Done","commit_id":"2c6d87edde8dedb02f62125ac46259b27df0d426"}],"glanceclient/v2/images.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"4dc6d8ea16fe043a1a1282203619ed46b72580ad","unresolved":true,"context_lines":[{"line_number":571,"context_line":"        headers \u003d {}"},{"line_number":572,"context_line":"        url \u003d \u0027/v2/images/%s/locations\u0027 % image_id"},{"line_number":573,"context_line":"        data \u003d {\u0027url\u0027: location_url, \u0027validation_data\u0027: validation_data}"},{"line_number":574,"context_line":"        resp, body \u003d self.http_client.post(url, data\u003ddata, headers\u003dheaders)"},{"line_number":575,"context_line":"        return body, resp"},{"line_number":576,"context_line":""},{"line_number":577,"context_line":"    def get_image_locations(self, image_id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"48acde1b_6ea60e43","line":574,"range":{"start_line":574,"start_character":59,"end_line":574,"end_character":74},"updated":"2023-08-07 08:10:18.000000000","message":"I think you can avoid this","commit_id":"ad3b3b7485fd9c9b88f6e89075cfd1c9f6306c61"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"11a6f94d6d150e0e681e6abc1df785c80deff713","unresolved":false,"context_lines":[{"line_number":571,"context_line":"        headers \u003d {}"},{"line_number":572,"context_line":"        url \u003d \u0027/v2/images/%s/locations\u0027 % image_id"},{"line_number":573,"context_line":"        data \u003d {\u0027url\u0027: location_url, \u0027validation_data\u0027: validation_data}"},{"line_number":574,"context_line":"        resp, body \u003d self.http_client.post(url, data\u003ddata, headers\u003dheaders)"},{"line_number":575,"context_line":"        return body, resp"},{"line_number":576,"context_line":""},{"line_number":577,"context_line":"    def get_image_locations(self, image_id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"99845540_ca3ff53e","line":574,"range":{"start_line":574,"start_character":59,"end_line":574,"end_character":74},"in_reply_to":"48acde1b_6ea60e43","updated":"2023-08-07 09:56:39.000000000","message":"Done","commit_id":"ad3b3b7485fd9c9b88f6e89075cfd1c9f6306c61"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"24a9b751afb033a2c1c78cdaaa2dd48a04026b74","unresolved":true,"context_lines":[{"line_number":561,"context_line":""},{"line_number":562,"context_line":"        return self._get(image_id, req_id_hdr)"},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"    def add_image_location(self, image_id, location_url, validation_data):"},{"line_number":565,"context_line":"        \"\"\"Add a new location entry to an image."},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"        :param image_id: ID of image to which the location is to be added."}],"source_content_type":"text/x-python","patch_set":3,"id":"0d8f3533_8ae27a83","line":564,"range":{"start_line":564,"start_character":57,"end_line":564,"end_character":72},"updated":"2023-08-07 14:34:05.000000000","message":"it should be validation_data\u003d{}","commit_id":"05343d0db95e61db4bb8c89f9a7a07fb7eb153e8"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"b6f916c3d02b1ab31b8bc5bcaa6e7268c06a86d5","unresolved":false,"context_lines":[{"line_number":561,"context_line":""},{"line_number":562,"context_line":"        return self._get(image_id, req_id_hdr)"},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"    def add_image_location(self, image_id, location_url, validation_data):"},{"line_number":565,"context_line":"        \"\"\"Add a new location entry to an image."},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"        :param image_id: ID of image to which the location is to be added."}],"source_content_type":"text/x-python","patch_set":3,"id":"58154e59_348ac13c","line":564,"range":{"start_line":564,"start_character":57,"end_line":564,"end_character":72},"in_reply_to":"0d8f3533_8ae27a83","updated":"2023-08-14 11:50:17.000000000","message":"Done","commit_id":"05343d0db95e61db4bb8c89f9a7a07fb7eb153e8"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"24a9b751afb033a2c1c78cdaaa2dd48a04026b74","unresolved":true,"context_lines":[{"line_number":570,"context_line":"        \"\"\""},{"line_number":571,"context_line":"        url \u003d \u0027/v2/images/%s/locations\u0027 % image_id"},{"line_number":572,"context_line":"        data \u003d {\u0027url\u0027: location_url, \u0027validation_data\u0027: validation_data}"},{"line_number":573,"context_line":"        resp, body \u003d self.http_client.post(url, data\u003ddata, headers\u003d{})"},{"line_number":574,"context_line":"        return body, resp"},{"line_number":575,"context_line":""},{"line_number":576,"context_line":"    def get_image_locations(self, image_id):"}],"source_content_type":"text/x-python","patch_set":3,"id":"65ba2c50_a01d21fb","line":573,"range":{"start_line":573,"start_character":59,"end_line":573,"end_character":69},"updated":"2023-08-07 14:34:05.000000000","message":"also this is not necessary imo","commit_id":"05343d0db95e61db4bb8c89f9a7a07fb7eb153e8"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"b6f916c3d02b1ab31b8bc5bcaa6e7268c06a86d5","unresolved":false,"context_lines":[{"line_number":570,"context_line":"        \"\"\""},{"line_number":571,"context_line":"        url \u003d \u0027/v2/images/%s/locations\u0027 % image_id"},{"line_number":572,"context_line":"        data \u003d {\u0027url\u0027: location_url, \u0027validation_data\u0027: validation_data}"},{"line_number":573,"context_line":"        resp, body \u003d self.http_client.post(url, data\u003ddata, headers\u003d{})"},{"line_number":574,"context_line":"        return body, resp"},{"line_number":575,"context_line":""},{"line_number":576,"context_line":"    def get_image_locations(self, image_id):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3499c18a_e3d6b66f","line":573,"range":{"start_line":573,"start_character":59,"end_line":573,"end_character":69},"in_reply_to":"65ba2c50_a01d21fb","updated":"2023-08-14 11:50:17.000000000","message":"Done","commit_id":"05343d0db95e61db4bb8c89f9a7a07fb7eb153e8"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"24a9b751afb033a2c1c78cdaaa2dd48a04026b74","unresolved":true,"context_lines":[{"line_number":580,"context_line":"        \"\"\""},{"line_number":581,"context_line":"        url \u003d \u0027/v2/images/%s/locations\u0027 % (image_id)"},{"line_number":582,"context_line":"        resp, location \u003d self.http_client.get(url)"},{"line_number":583,"context_line":"        return location"}],"source_content_type":"text/x-python","patch_set":3,"id":"37ae4bd6_1f661cf4","line":583,"updated":"2023-08-07 14:34:05.000000000","message":"I think resp should be returned from here as well","commit_id":"05343d0db95e61db4bb8c89f9a7a07fb7eb153e8"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"b6f916c3d02b1ab31b8bc5bcaa6e7268c06a86d5","unresolved":false,"context_lines":[{"line_number":580,"context_line":"        \"\"\""},{"line_number":581,"context_line":"        url \u003d \u0027/v2/images/%s/locations\u0027 % (image_id)"},{"line_number":582,"context_line":"        resp, location \u003d self.http_client.get(url)"},{"line_number":583,"context_line":"        return location"}],"source_content_type":"text/x-python","patch_set":3,"id":"b04ea872_58e6136a","line":583,"in_reply_to":"37ae4bd6_1f661cf4","updated":"2023-08-14 11:50:17.000000000","message":"Done","commit_id":"05343d0db95e61db4bb8c89f9a7a07fb7eb153e8"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"5c206382f49b2d9d887f2ce9ecbd7b881425d85f","unresolved":true,"context_lines":[{"line_number":501,"context_line":"                validation_data \u003d {}"},{"line_number":502,"context_line":"            resp, body \u003d self.add_image_location(image_id, url,"},{"line_number":503,"context_line":"                                                 validation_data)"},{"line_number":504,"context_line":"            return self._get(image_id)"},{"line_number":505,"context_line":"        else:"},{"line_number":506,"context_line":"            add_patch \u003d [{\u0027op\u0027: \u0027add\u0027, \u0027path\u0027: \u0027/locations/-\u0027,"},{"line_number":507,"context_line":"                          \u0027value\u0027: {\u0027url\u0027: url, \u0027metadata\u0027: metadata}}]"}],"source_content_type":"text/x-python","patch_set":4,"id":"f777ec85_71831358","line":504,"range":{"start_line":504,"start_character":12,"end_line":504,"end_character":38},"updated":"2023-08-16 06:02:36.000000000","message":"I don\u0027t think you need to modify existing command here.","commit_id":"b7c9eff3adafafd7912b53650102e7e9fe657de3"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"aa5473eb3b30b6e2d1ce2cdb796e4038989593ef","unresolved":false,"context_lines":[{"line_number":501,"context_line":"                validation_data \u003d {}"},{"line_number":502,"context_line":"            resp, body \u003d self.add_image_location(image_id, url,"},{"line_number":503,"context_line":"                                                 validation_data)"},{"line_number":504,"context_line":"            return self._get(image_id)"},{"line_number":505,"context_line":"        else:"},{"line_number":506,"context_line":"            add_patch \u003d [{\u0027op\u0027: \u0027add\u0027, \u0027path\u0027: \u0027/locations/-\u0027,"},{"line_number":507,"context_line":"                          \u0027value\u0027: {\u0027url\u0027: url, \u0027metadata\u0027: metadata}}]"}],"source_content_type":"text/x-python","patch_set":4,"id":"91bd880e_b6e16bd4","line":504,"range":{"start_line":504,"start_character":12,"end_line":504,"end_character":38},"in_reply_to":"c80c4cbd_71e3a1cb","updated":"2023-08-20 12:22:57.000000000","message":"Done","commit_id":"b7c9eff3adafafd7912b53650102e7e9fe657de3"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"dadde74338db97c2e75172f8d19e207cff7d1056","unresolved":true,"context_lines":[{"line_number":501,"context_line":"                validation_data \u003d {}"},{"line_number":502,"context_line":"            resp, body \u003d self.add_image_location(image_id, url,"},{"line_number":503,"context_line":"                                                 validation_data)"},{"line_number":504,"context_line":"            return self._get(image_id)"},{"line_number":505,"context_line":"        else:"},{"line_number":506,"context_line":"            add_patch \u003d [{\u0027op\u0027: \u0027add\u0027, \u0027path\u0027: \u0027/locations/-\u0027,"},{"line_number":507,"context_line":"                          \u0027value\u0027: {\u0027url\u0027: url, \u0027metadata\u0027: metadata}}]"}],"source_content_type":"text/x-python","patch_set":4,"id":"c80c4cbd_71e3a1cb","line":504,"range":{"start_line":504,"start_character":12,"end_line":504,"end_character":38},"in_reply_to":"f777ec85_71831358","updated":"2023-08-16 12:35:37.000000000","message":"Yeah my bad, there is no point in modifying this existing one, we still need to keep old api call.","commit_id":"b7c9eff3adafafd7912b53650102e7e9fe657de3"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b0c89408b5adf7eb2298b44a5e3a8dd902b91b53","unresolved":true,"context_lines":[{"line_number":584,"context_line":"        :param image_id: ID of image to which the location is to be fetched."},{"line_number":585,"context_line":"        \"\"\""},{"line_number":586,"context_line":"        url \u003d \u0027/v2/images/%s/locations\u0027 % (image_id)"},{"line_number":587,"context_line":"        resp, location \u003d self.http_client.get(url)"},{"line_number":588,"context_line":"        return location, resp"}],"source_content_type":"text/x-python","patch_set":5,"id":"442e039d_4afa319a","line":587,"updated":"2023-08-16 15:01:50.000000000","message":"this should also have version check","commit_id":"d3cc873451ea88081796a995f89eca5b6f496e09"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"aa5473eb3b30b6e2d1ce2cdb796e4038989593ef","unresolved":false,"context_lines":[{"line_number":584,"context_line":"        :param image_id: ID of image to which the location is to be fetched."},{"line_number":585,"context_line":"        \"\"\""},{"line_number":586,"context_line":"        url \u003d \u0027/v2/images/%s/locations\u0027 % (image_id)"},{"line_number":587,"context_line":"        resp, location \u003d self.http_client.get(url)"},{"line_number":588,"context_line":"        return location, resp"}],"source_content_type":"text/x-python","patch_set":5,"id":"1261f284_e2418298","line":587,"in_reply_to":"442e039d_4afa319a","updated":"2023-08-20 12:22:57.000000000","message":"Done","commit_id":"d3cc873451ea88081796a995f89eca5b6f496e09"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"0e69f177f11c8c98f6214439d06ca6d004894a31","unresolved":true,"context_lines":[{"line_number":568,"context_line":"        :param location_url: URL of the location to add."},{"line_number":569,"context_line":"        :param validation_data: Validation data for the image."},{"line_number":570,"context_line":"        \"\"\""},{"line_number":571,"context_line":"        if utils.has_version(self.http_client, \u0027v2.17\u0027):"},{"line_number":572,"context_line":"            url \u003d \u0027/v2/images/%s/locations\u0027 % image_id"},{"line_number":573,"context_line":"            data \u003d {\u0027url\u0027: location_url,"},{"line_number":574,"context_line":"                    \u0027validation_data\u0027: validation_data}"},{"line_number":575,"context_line":"            resp, body \u003d self.http_client.post(url, data\u003ddata)"},{"line_number":576,"context_line":"            return self._get(image_id)"},{"line_number":577,"context_line":"        else:"},{"line_number":578,"context_line":"            raise exc.HTTPNotImplemented("},{"line_number":579,"context_line":"                \u0027This operation is not supported by Glance.\u0027)"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"    def get_image_locations(self, image_id):"},{"line_number":582,"context_line":"        \"\"\"Fetch list of locations associated to the Image."}],"source_content_type":"text/x-python","patch_set":6,"id":"cd8ab03e_9dace7a6","line":579,"range":{"start_line":571,"start_character":7,"end_line":579,"end_character":61},"updated":"2023-08-21 07:03:55.000000000","message":"nit:\nbetter to do it as\nif not utils.has_version:\n   raise\n   \nregular code","commit_id":"12d35f0452db216956c5d9ed59df2b1fa1234aff"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"0e569250054307531ed1c98d995505141d1e326d","unresolved":false,"context_lines":[{"line_number":568,"context_line":"        :param location_url: URL of the location to add."},{"line_number":569,"context_line":"        :param validation_data: Validation data for the image."},{"line_number":570,"context_line":"        \"\"\""},{"line_number":571,"context_line":"        if utils.has_version(self.http_client, \u0027v2.17\u0027):"},{"line_number":572,"context_line":"            url \u003d \u0027/v2/images/%s/locations\u0027 % image_id"},{"line_number":573,"context_line":"            data \u003d {\u0027url\u0027: location_url,"},{"line_number":574,"context_line":"                    \u0027validation_data\u0027: validation_data}"},{"line_number":575,"context_line":"            resp, body \u003d self.http_client.post(url, data\u003ddata)"},{"line_number":576,"context_line":"            return self._get(image_id)"},{"line_number":577,"context_line":"        else:"},{"line_number":578,"context_line":"            raise exc.HTTPNotImplemented("},{"line_number":579,"context_line":"                \u0027This operation is not supported by Glance.\u0027)"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"    def get_image_locations(self, image_id):"},{"line_number":582,"context_line":"        \"\"\"Fetch list of locations associated to the Image."}],"source_content_type":"text/x-python","patch_set":6,"id":"add8d309_4fd32de4","line":579,"range":{"start_line":571,"start_character":7,"end_line":579,"end_character":61},"in_reply_to":"cd8ab03e_9dace7a6","updated":"2023-08-25 06:25:03.000000000","message":"Done","commit_id":"12d35f0452db216956c5d9ed59df2b1fa1234aff"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c55158628449422344de3e4d290f1d1aa9ce6feb","unresolved":true,"context_lines":[{"line_number":588,"context_line":"                \u0027This operation is not supported by Glance.\u0027)"},{"line_number":589,"context_line":"        url \u003d \u0027/v2/images/%s/locations\u0027 % (image_id)"},{"line_number":590,"context_line":"        resp, location \u003d self.http_client.get(url)"},{"line_number":591,"context_line":"        return location, resp"}],"source_content_type":"text/x-python","patch_set":7,"id":"8fe8898a_728e36dd","line":591,"updated":"2023-08-25 06:35:31.000000000","message":"Generally we return like,\n\nreturn (resp, body), resp // here it will be location in case of body\n\nany reason for not returning in such format, will it cause any issue?","commit_id":"959d6fb7bd9476b671b7fc1e878c0bbc82f4f719"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a0860b6f1adc3e37149dded115ca36b2a37d5e89","unresolved":false,"context_lines":[{"line_number":588,"context_line":"                \u0027This operation is not supported by Glance.\u0027)"},{"line_number":589,"context_line":"        url \u003d \u0027/v2/images/%s/locations\u0027 % (image_id)"},{"line_number":590,"context_line":"        resp, location \u003d self.http_client.get(url)"},{"line_number":591,"context_line":"        return location, resp"}],"source_content_type":"text/x-python","patch_set":7,"id":"3ddfedd2_baf06c2f","line":591,"in_reply_to":"57a533c9_f5e8b160","updated":"2024-05-13 11:12:41.000000000","message":"Done","commit_id":"959d6fb7bd9476b671b7fc1e878c0bbc82f4f719"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"386b7399f0e43d4d1621f60279824c7af255a07e","unresolved":true,"context_lines":[{"line_number":588,"context_line":"                \u0027This operation is not supported by Glance.\u0027)"},{"line_number":589,"context_line":"        url \u003d \u0027/v2/images/%s/locations\u0027 % (image_id)"},{"line_number":590,"context_line":"        resp, location \u003d self.http_client.get(url)"},{"line_number":591,"context_line":"        return location, resp"}],"source_content_type":"text/x-python","patch_set":7,"id":"57a533c9_f5e8b160","line":591,"in_reply_to":"8fe8898a_728e36dd","updated":"2023-08-25 11:16:48.000000000","message":"Now I\u0027m using print_dict_list instead of print_list (which was causing some functional tests failure) and if (resp, location), resp passed it fails while iterating in dict_list. And there are existing examples as well where just body, resp returned and dict_list used further.","commit_id":"959d6fb7bd9476b671b7fc1e878c0bbc82f4f719"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"e98021469c81c6c18897804544accf192d3130f0","unresolved":true,"context_lines":[{"line_number":561,"context_line":""},{"line_number":562,"context_line":"        return self._get(image_id, req_id_hdr)"},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"    def add_image_location(self, image_id, location_url, validation_data\u003d{}):"},{"line_number":565,"context_line":"        \"\"\"Add a new location to an image."},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"        :param image_id: ID of image to which the location is to be added."}],"source_content_type":"text/x-python","patch_set":12,"id":"d13e0dc7_38ac5379","line":564,"range":{"start_line":564,"start_character":8,"end_line":564,"end_character":26},"updated":"2024-07-02 06:55:02.000000000","message":"I think you have not tested this locally, because this function needs to get called from shell.py similar to [1]\n\nhttps://github.com/openstack/python-glanceclient/blob/master/glanceclient/v2/shell.py#L965","commit_id":"7542857110823caaae6b6626370119976b994592"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"f9cce5b61a6a3d2e060067efbce411bc9a069436","unresolved":true,"context_lines":[{"line_number":561,"context_line":""},{"line_number":562,"context_line":"        return self._get(image_id, req_id_hdr)"},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"    def add_image_location(self, image_id, location_url, validation_data\u003d{}):"},{"line_number":565,"context_line":"        \"\"\"Add a new location to an image."},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"        :param image_id: ID of image to which the location is to be added."}],"source_content_type":"text/x-python","patch_set":12,"id":"e7ae329c_33c217fe","line":564,"range":{"start_line":564,"start_character":8,"end_line":564,"end_character":26},"in_reply_to":"d13e0dc7_38ac5379","updated":"2024-07-02 07:35:40.000000000","message":"Sorry I was looking at diff, it is there.","commit_id":"7542857110823caaae6b6626370119976b994592"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"fd7ccfe9c4a858c955a95c87334918b6137a4c02","unresolved":false,"context_lines":[{"line_number":561,"context_line":""},{"line_number":562,"context_line":"        return self._get(image_id, req_id_hdr)"},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"    def add_image_location(self, image_id, location_url, validation_data\u003d{}):"},{"line_number":565,"context_line":"        \"\"\"Add a new location to an image."},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"        :param image_id: ID of image to which the location is to be added."}],"source_content_type":"text/x-python","patch_set":12,"id":"76408969_d7a5a69b","line":564,"range":{"start_line":564,"start_character":8,"end_line":564,"end_character":26},"in_reply_to":"e7ae329c_33c217fe","updated":"2024-07-02 08:01:52.000000000","message":"Done","commit_id":"7542857110823caaae6b6626370119976b994592"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"f9cce5b61a6a3d2e060067efbce411bc9a069436","unresolved":true,"context_lines":[{"line_number":572,"context_line":"            raise exc.HTTPNotImplemented("},{"line_number":573,"context_line":"                \u0027This operation is not supported by Glance.\u0027)"},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"        allowed_hash_algo \u003d [\u0027sha512\u0027, \u0027sha256\u0027, \u0027sha1\u0027, \u0027md5\u0027]"},{"line_number":576,"context_line":"        if validation_data and \\"},{"line_number":577,"context_line":"                validation_data[\u0027os_hash_algo\u0027] not in allowed_hash_algo:"},{"line_number":578,"context_line":"            raise exc.HTTPBadRequest(\u0027os_hash_algo: `%s` is incorrect, \u0027"},{"line_number":579,"context_line":"                                     \u0027allowed hashing algorithms: %s\u0027 %"},{"line_number":580,"context_line":"                                     (validation_data[\u0027os_hash_algo\u0027],"},{"line_number":581,"context_line":"                                      allowed_hash_algo))"},{"line_number":582,"context_line":"        url \u003d \u0027/v2/images/%s/locations\u0027 % image_id"},{"line_number":583,"context_line":"        data \u003d {\u0027url\u0027: location_url,"},{"line_number":584,"context_line":"                \u0027validation_data\u0027: validation_data}"}],"source_content_type":"text/x-python","patch_set":12,"id":"c2a16439_f1fc1204","line":581,"range":{"start_line":575,"start_character":8,"end_line":581,"end_character":57},"updated":"2024-07-02 07:35:40.000000000","message":"This validation should be part of shell.py","commit_id":"7542857110823caaae6b6626370119976b994592"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"fd7ccfe9c4a858c955a95c87334918b6137a4c02","unresolved":false,"context_lines":[{"line_number":572,"context_line":"            raise exc.HTTPNotImplemented("},{"line_number":573,"context_line":"                \u0027This operation is not supported by Glance.\u0027)"},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"        allowed_hash_algo \u003d [\u0027sha512\u0027, \u0027sha256\u0027, \u0027sha1\u0027, \u0027md5\u0027]"},{"line_number":576,"context_line":"        if validation_data and \\"},{"line_number":577,"context_line":"                validation_data[\u0027os_hash_algo\u0027] not in allowed_hash_algo:"},{"line_number":578,"context_line":"            raise exc.HTTPBadRequest(\u0027os_hash_algo: `%s` is incorrect, \u0027"},{"line_number":579,"context_line":"                                     \u0027allowed hashing algorithms: %s\u0027 %"},{"line_number":580,"context_line":"                                     (validation_data[\u0027os_hash_algo\u0027],"},{"line_number":581,"context_line":"                                      allowed_hash_algo))"},{"line_number":582,"context_line":"        url \u003d \u0027/v2/images/%s/locations\u0027 % image_id"},{"line_number":583,"context_line":"        data \u003d {\u0027url\u0027: location_url,"},{"line_number":584,"context_line":"                \u0027validation_data\u0027: validation_data}"}],"source_content_type":"text/x-python","patch_set":12,"id":"5d012b04_48cd2380","line":581,"range":{"start_line":575,"start_character":8,"end_line":581,"end_character":57},"in_reply_to":"c2a16439_f1fc1204","updated":"2024-07-02 08:01:52.000000000","message":"Done","commit_id":"7542857110823caaae6b6626370119976b994592"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"88f2f6474824dec9a398246d0e7dfd913d16353c","unresolved":true,"context_lines":[{"line_number":579,"context_line":"        return self._get(image_id)"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"    @utils.add_req_id_to_object()"},{"line_number":582,"context_line":"    def get_image_locations(self, image_id):"},{"line_number":583,"context_line":"        \"\"\"Fetch list of locations associated to the Image."},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"        :param image_id: ID of image to which the location is to be fetched."}],"source_content_type":"text/x-python","patch_set":14,"id":"6a57ec1c_c1775f3b","line":582,"range":{"start_line":582,"start_character":8,"end_line":582,"end_character":27},"updated":"2024-08-01 15:02:18.000000000","message":"So this method is not exposed to the user? Is it meant to be used only as a library method?","commit_id":"476cdadf2ea2003bf1b8fff3467f159e6b4614d9"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"be5dedefc4bd9ab6c16d3a114eef7953b11c80f6","unresolved":true,"context_lines":[{"line_number":579,"context_line":"        return self._get(image_id)"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"    @utils.add_req_id_to_object()"},{"line_number":582,"context_line":"    def get_image_locations(self, image_id):"},{"line_number":583,"context_line":"        \"\"\"Fetch list of locations associated to the Image."},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"        :param image_id: ID of image to which the location is to be fetched."}],"source_content_type":"text/x-python","patch_set":14,"id":"97913adc_9a72dff0","line":582,"range":{"start_line":582,"start_character":8,"end_line":582,"end_character":27},"in_reply_to":"6a57ec1c_c1775f3b","updated":"2024-08-01 15:07:18.000000000","message":"this new api is meant for service user (i.e. only consumer of glance like nova or cinder will call it) so not needed to expose it to end user as it will always return 403 forbidden,","commit_id":"476cdadf2ea2003bf1b8fff3467f159e6b4614d9"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"7fe748d82b22ee5e5222955c71db3678b1e62ceb","unresolved":false,"context_lines":[{"line_number":579,"context_line":"        return self._get(image_id)"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"    @utils.add_req_id_to_object()"},{"line_number":582,"context_line":"    def get_image_locations(self, image_id):"},{"line_number":583,"context_line":"        \"\"\"Fetch list of locations associated to the Image."},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"        :param image_id: ID of image to which the location is to be fetched."}],"source_content_type":"text/x-python","patch_set":14,"id":"1ec36cfc_357bf9fb","line":582,"range":{"start_line":582,"start_character":8,"end_line":582,"end_character":27},"in_reply_to":"97913adc_9a72dff0","updated":"2024-08-14 10:46:18.000000000","message":"Done","commit_id":"476cdadf2ea2003bf1b8fff3467f159e6b4614d9"}],"glanceclient/v2/shell.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"4dc6d8ea16fe043a1a1282203619ed46b72580ad","unresolved":true,"context_lines":[{"line_number":1039,"context_line":"def do_get_locations(gc, args):"},{"line_number":1040,"context_line":"    \"\"\"Get locations associated to an image\"\"\""},{"line_number":1041,"context_line":"    location \u003d gc.images.get_image_locations(args.id)"},{"line_number":1042,"context_line":"    columns \u003d [\u0027url\u0027, \u0027metadata\u0027]"},{"line_number":1043,"context_line":"    utils.print_locations(location, columns)"},{"line_number":1044,"context_line":""},{"line_number":1045,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9835568f_52d6eb33","line":1042,"range":{"start_line":1042,"start_character":14,"end_line":1042,"end_character":33},"updated":"2023-08-07 08:10:18.000000000","message":"better to be like \u0027image_id\u0027, \u0027url\u0027, \u0027metadata\u0027","commit_id":"ad3b3b7485fd9c9b88f6e89075cfd1c9f6306c61"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"11a6f94d6d150e0e681e6abc1df785c80deff713","unresolved":false,"context_lines":[{"line_number":1039,"context_line":"def do_get_locations(gc, args):"},{"line_number":1040,"context_line":"    \"\"\"Get locations associated to an image\"\"\""},{"line_number":1041,"context_line":"    location \u003d gc.images.get_image_locations(args.id)"},{"line_number":1042,"context_line":"    columns \u003d [\u0027url\u0027, \u0027metadata\u0027]"},{"line_number":1043,"context_line":"    utils.print_locations(location, columns)"},{"line_number":1044,"context_line":""},{"line_number":1045,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"d1004212_67b64a90","line":1042,"range":{"start_line":1042,"start_character":14,"end_line":1042,"end_character":33},"in_reply_to":"9835568f_52d6eb33","updated":"2023-08-07 09:56:39.000000000","message":"Done","commit_id":"ad3b3b7485fd9c9b88f6e89075cfd1c9f6306c61"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"0e69f177f11c8c98f6214439d06ca6d004894a31","unresolved":true,"context_lines":[{"line_number":1016,"context_line":"@utils.arg(\u0027--url\u0027, metavar\u003d\u0027\u003cURL\u003e\u0027, required\u003dTrue,"},{"line_number":1017,"context_line":"           help\u003d_(\u0027URL of location to update.\u0027))"},{"line_number":1018,"context_line":"@utils.arg(\u0027--validation-data\u0027, metavar\u003d\u0027\u003cSTRING\u003e\u0027, default\u003d\u0027{}\u0027,"},{"line_number":1019,"context_line":"           help\u003d_(\u0027Validation data containing metadata associated to the \u0027"},{"line_number":1020,"context_line":"                  \u0027image. Must be a valid JSON object \u0027"},{"line_number":1021,"context_line":"                  \u0027(default: %(default)s)\u0027))"},{"line_number":1022,"context_line":"@utils.arg(\u0027id\u0027, metavar\u003d\u0027\u003cIMAGE_ID\u003e\u0027,"},{"line_number":1023,"context_line":"           help\u003d_(\u0027ID of image whose location is to be updated.\u0027))"}],"source_content_type":"text/x-python","patch_set":6,"id":"13f60a8b_49883830","line":1020,"range":{"start_line":1019,"start_character":46,"end_line":1020,"end_character":24},"updated":"2023-08-21 07:03:55.000000000","message":"it should be a specific metadata only and not all or anything else.\nlike, checksum, os_hash_algo and os_hash_value only.\n\nNeed to add validation to raise error if anything else is provided.","commit_id":"12d35f0452db216956c5d9ed59df2b1fa1234aff"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"0e569250054307531ed1c98d995505141d1e326d","unresolved":false,"context_lines":[{"line_number":1016,"context_line":"@utils.arg(\u0027--url\u0027, metavar\u003d\u0027\u003cURL\u003e\u0027, required\u003dTrue,"},{"line_number":1017,"context_line":"           help\u003d_(\u0027URL of location to update.\u0027))"},{"line_number":1018,"context_line":"@utils.arg(\u0027--validation-data\u0027, metavar\u003d\u0027\u003cSTRING\u003e\u0027, default\u003d\u0027{}\u0027,"},{"line_number":1019,"context_line":"           help\u003d_(\u0027Validation data containing metadata associated to the \u0027"},{"line_number":1020,"context_line":"                  \u0027image. Must be a valid JSON object \u0027"},{"line_number":1021,"context_line":"                  \u0027(default: %(default)s)\u0027))"},{"line_number":1022,"context_line":"@utils.arg(\u0027id\u0027, metavar\u003d\u0027\u003cIMAGE_ID\u003e\u0027,"},{"line_number":1023,"context_line":"           help\u003d_(\u0027ID of image whose location is to be updated.\u0027))"}],"source_content_type":"text/x-python","patch_set":6,"id":"15b0c381_20436da2","line":1020,"range":{"start_line":1019,"start_character":46,"end_line":1020,"end_character":24},"in_reply_to":"13f60a8b_49883830","updated":"2023-08-25 06:25:03.000000000","message":"Done","commit_id":"12d35f0452db216956c5d9ed59df2b1fa1234aff"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"0e69f177f11c8c98f6214439d06ca6d004894a31","unresolved":true,"context_lines":[{"line_number":1020,"context_line":"                  \u0027image. Must be a valid JSON object \u0027"},{"line_number":1021,"context_line":"                  \u0027(default: %(default)s)\u0027))"},{"line_number":1022,"context_line":"@utils.arg(\u0027id\u0027, metavar\u003d\u0027\u003cIMAGE_ID\u003e\u0027,"},{"line_number":1023,"context_line":"           help\u003d_(\u0027ID of image whose location is to be updated.\u0027))"},{"line_number":1024,"context_line":"def do_add_location(gc, args):"},{"line_number":1025,"context_line":"    \"\"\"Add location to an image\"\"\""},{"line_number":1026,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"a8fdfef1_7d508fcb","line":1023,"range":{"start_line":1023,"start_character":55,"end_line":1023,"end_character":62},"updated":"2023-08-21 07:03:55.000000000","message":"updated??","commit_id":"12d35f0452db216956c5d9ed59df2b1fa1234aff"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"0e569250054307531ed1c98d995505141d1e326d","unresolved":false,"context_lines":[{"line_number":1020,"context_line":"                  \u0027image. Must be a valid JSON object \u0027"},{"line_number":1021,"context_line":"                  \u0027(default: %(default)s)\u0027))"},{"line_number":1022,"context_line":"@utils.arg(\u0027id\u0027, metavar\u003d\u0027\u003cIMAGE_ID\u003e\u0027,"},{"line_number":1023,"context_line":"           help\u003d_(\u0027ID of image whose location is to be updated.\u0027))"},{"line_number":1024,"context_line":"def do_add_location(gc, args):"},{"line_number":1025,"context_line":"    \"\"\"Add location to an image\"\"\""},{"line_number":1026,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"20fea032_ee34b2d8","line":1023,"range":{"start_line":1023,"start_character":55,"end_line":1023,"end_character":62},"in_reply_to":"a8fdfef1_7d508fcb","updated":"2023-08-25 06:25:03.000000000","message":"Done","commit_id":"12d35f0452db216956c5d9ed59df2b1fa1234aff"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"0e69f177f11c8c98f6214439d06ca6d004894a31","unresolved":true,"context_lines":[{"line_number":1029,"context_line":"        utils.exit(\u0027Metadata is not a valid JSON object.\u0027)"},{"line_number":1030,"context_line":"    else:"},{"line_number":1031,"context_line":"        image \u003d gc.images.add_image_location(args.id, args.url,"},{"line_number":1032,"context_line":"                                             validation_data)"},{"line_number":1033,"context_line":"    utils.print_image(image)"},{"line_number":1034,"context_line":""},{"line_number":1035,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"a9db2376_642094c3","line":1032,"range":{"start_line":1032,"start_character":45,"end_line":1032,"end_character":60},"updated":"2023-08-21 07:03:55.000000000","message":"this should be validation_data\u003dvalidation_data","commit_id":"12d35f0452db216956c5d9ed59df2b1fa1234aff"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"0e569250054307531ed1c98d995505141d1e326d","unresolved":false,"context_lines":[{"line_number":1029,"context_line":"        utils.exit(\u0027Metadata is not a valid JSON object.\u0027)"},{"line_number":1030,"context_line":"    else:"},{"line_number":1031,"context_line":"        image \u003d gc.images.add_image_location(args.id, args.url,"},{"line_number":1032,"context_line":"                                             validation_data)"},{"line_number":1033,"context_line":"    utils.print_image(image)"},{"line_number":1034,"context_line":""},{"line_number":1035,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fcc30ffa_68fcd677","line":1032,"range":{"start_line":1032,"start_character":45,"end_line":1032,"end_character":60},"in_reply_to":"a9db2376_642094c3","updated":"2023-08-25 06:25:03.000000000","message":"Done","commit_id":"12d35f0452db216956c5d9ed59df2b1fa1234aff"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"0e69f177f11c8c98f6214439d06ca6d004894a31","unresolved":true,"context_lines":[{"line_number":1034,"context_line":""},{"line_number":1035,"context_line":""},{"line_number":1036,"context_line":"@utils.arg(\u0027id\u0027, metavar\u003d\u0027\u003cIMAGE_ID\u003e\u0027,"},{"line_number":1037,"context_line":"           help\u003d_(\u0027ID of image whose location is to be updated.\u0027))"},{"line_number":1038,"context_line":"def do_get_locations(gc, args):"},{"line_number":1039,"context_line":"    \"\"\"Get locations associated to an image\"\"\""},{"line_number":1040,"context_line":"    location \u003d gc.images.get_image_locations(args.id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ac9957f8_f8c0528d","line":1037,"range":{"start_line":1037,"start_character":55,"end_line":1037,"end_character":62},"updated":"2023-08-21 07:03:55.000000000","message":"updated?","commit_id":"12d35f0452db216956c5d9ed59df2b1fa1234aff"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"0e569250054307531ed1c98d995505141d1e326d","unresolved":false,"context_lines":[{"line_number":1034,"context_line":""},{"line_number":1035,"context_line":""},{"line_number":1036,"context_line":"@utils.arg(\u0027id\u0027, metavar\u003d\u0027\u003cIMAGE_ID\u003e\u0027,"},{"line_number":1037,"context_line":"           help\u003d_(\u0027ID of image whose location is to be updated.\u0027))"},{"line_number":1038,"context_line":"def do_get_locations(gc, args):"},{"line_number":1039,"context_line":"    \"\"\"Get locations associated to an image\"\"\""},{"line_number":1040,"context_line":"    location \u003d gc.images.get_image_locations(args.id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"0f33b7ae_49497529","line":1037,"range":{"start_line":1037,"start_character":55,"end_line":1037,"end_character":62},"in_reply_to":"ac9957f8_f8c0528d","updated":"2023-08-25 06:25:03.000000000","message":"Done","commit_id":"12d35f0452db216956c5d9ed59df2b1fa1234aff"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c55158628449422344de3e4d290f1d1aa9ce6feb","unresolved":true,"context_lines":[{"line_number":1026,"context_line":"    try:"},{"line_number":1027,"context_line":"        validation_data \u003d json.loads(args.validation_data)"},{"line_number":1028,"context_line":"        for val_data in validation_data:"},{"line_number":1029,"context_line":"            if val_data in [\u0027os_hash_algo\u0027, \u0027os_hash_value\u0027]:"},{"line_number":1030,"context_line":"                continue"},{"line_number":1031,"context_line":"            utils.exit(\u0027Validation Data should contain only os_hash_algo \u0027"},{"line_number":1032,"context_line":"                       \u0027and os_hash_value\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"d660b414_ae3d286b","line":1029,"updated":"2023-08-25 06:35:31.000000000","message":"why not checksum???\n\nalso we should have test to validate this","commit_id":"959d6fb7bd9476b671b7fc1e878c0bbc82f4f719"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2aa109a844ec38e2c9ebc368fd7ad8b448955cc9","unresolved":false,"context_lines":[{"line_number":1026,"context_line":"    try:"},{"line_number":1027,"context_line":"        validation_data \u003d json.loads(args.validation_data)"},{"line_number":1028,"context_line":"        for val_data in validation_data:"},{"line_number":1029,"context_line":"            if val_data in [\u0027os_hash_algo\u0027, \u0027os_hash_value\u0027]:"},{"line_number":1030,"context_line":"                continue"},{"line_number":1031,"context_line":"            utils.exit(\u0027Validation Data should contain only os_hash_algo \u0027"},{"line_number":1032,"context_line":"                       \u0027and os_hash_value\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9650128f_a58db775","line":1029,"in_reply_to":"5058d62e_8b972dff","updated":"2023-08-28 15:43:25.000000000","message":"Ack","commit_id":"959d6fb7bd9476b671b7fc1e878c0bbc82f4f719"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"386b7399f0e43d4d1621f60279824c7af255a07e","unresolved":true,"context_lines":[{"line_number":1026,"context_line":"    try:"},{"line_number":1027,"context_line":"        validation_data \u003d json.loads(args.validation_data)"},{"line_number":1028,"context_line":"        for val_data in validation_data:"},{"line_number":1029,"context_line":"            if val_data in [\u0027os_hash_algo\u0027, \u0027os_hash_value\u0027]:"},{"line_number":1030,"context_line":"                continue"},{"line_number":1031,"context_line":"            utils.exit(\u0027Validation Data should contain only os_hash_algo \u0027"},{"line_number":1032,"context_line":"                       \u0027and os_hash_value\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5058d62e_8b972dff","line":1029,"in_reply_to":"d660b414_ae3d286b","updated":"2023-08-25 11:16:48.000000000","message":"Checksum is not expected to be passed as per [1] It was decided to skip from validation data [2]\n\nUnit test added.\n\n[1]: https://review.opendev.org/c/openstack/glance-specs/+/883491/8/specs/2023.2/approved/glance/new-location-info-apis.rst#280\n\n[2]: https://meetings.opendev.org/irclogs/%23openstack-glance/%23openstack-glance.2023-06-07.log.html#t2023-06-07T14:26:36","commit_id":"959d6fb7bd9476b671b7fc1e878c0bbc82f4f719"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2aa109a844ec38e2c9ebc368fd7ad8b448955cc9","unresolved":true,"context_lines":[{"line_number":1014,"context_line":""},{"line_number":1015,"context_line":""},{"line_number":1016,"context_line":"@utils.arg(\u0027--url\u0027, metavar\u003d\u0027\u003cURL\u003e\u0027, required\u003dTrue,"},{"line_number":1017,"context_line":"           help\u003d_(\u0027URL of location to update.\u0027))"},{"line_number":1018,"context_line":"@utils.arg(\u0027--validation-data\u0027, metavar\u003d\u0027\u003cSTRING\u003e\u0027, default\u003d\u0027{}\u0027,"},{"line_number":1019,"context_line":"           help\u003d_(\u0027Validation data containing os_hash_algo and os_hash_value\u0027"},{"line_number":1020,"context_line":"                  \u0027only associated to the image. Must be a valid JSON object \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fe3790d_648c9883","line":1017,"range":{"start_line":1017,"start_character":38,"end_line":1017,"end_character":44},"updated":"2023-08-28 15:43:25.000000000","message":"update?","commit_id":"f92c39d2f7ae5e837342e91665efe619ff93639e"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"773a83d5c9c6b1ab057a8669a7bc5616d22e6d01","unresolved":false,"context_lines":[{"line_number":1014,"context_line":""},{"line_number":1015,"context_line":""},{"line_number":1016,"context_line":"@utils.arg(\u0027--url\u0027, metavar\u003d\u0027\u003cURL\u003e\u0027, required\u003dTrue,"},{"line_number":1017,"context_line":"           help\u003d_(\u0027URL of location to update.\u0027))"},{"line_number":1018,"context_line":"@utils.arg(\u0027--validation-data\u0027, metavar\u003d\u0027\u003cSTRING\u003e\u0027, default\u003d\u0027{}\u0027,"},{"line_number":1019,"context_line":"           help\u003d_(\u0027Validation data containing os_hash_algo and os_hash_value\u0027"},{"line_number":1020,"context_line":"                  \u0027only associated to the image. Must be a valid JSON object \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"72b31f02_a3e9a0a8","line":1017,"range":{"start_line":1017,"start_character":38,"end_line":1017,"end_character":44},"in_reply_to":"9fe3790d_648c9883","updated":"2023-08-29 09:52:47.000000000","message":"Done","commit_id":"f92c39d2f7ae5e837342e91665efe619ff93639e"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2aa109a844ec38e2c9ebc368fd7ad8b448955cc9","unresolved":true,"context_lines":[{"line_number":1025,"context_line":"    \"\"\"Add location to an image\"\"\""},{"line_number":1026,"context_line":"    try:"},{"line_number":1027,"context_line":"        validation_data \u003d json.loads(args.validation_data)"},{"line_number":1028,"context_line":"        for val_data in validation_data:"},{"line_number":1029,"context_line":"            if val_data in [\u0027os_hash_algo\u0027, \u0027os_hash_value\u0027]:"},{"line_number":1030,"context_line":"                continue"},{"line_number":1031,"context_line":"            utils.exit(\u0027Validation Data should contain only os_hash_algo \u0027"},{"line_number":1032,"context_line":"                       \u0027and os_hash_value\u0027)"},{"line_number":1033,"context_line":"    except ValueError:"},{"line_number":1034,"context_line":"        utils.exit(\u0027Metadata is not a valid JSON object.\u0027)"},{"line_number":1035,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f1e5dac_84d08477","line":1032,"range":{"start_line":1028,"start_character":8,"end_line":1032,"end_character":43},"updated":"2023-08-28 15:43:25.000000000","message":"I think you can use like\n\naccepted_values \u003d [\u0027os_hash_algo\u0027, \u0027os_hash_value\u0027]\nif list(set(validation_data.keys()).difference(accepted_values)):\nexit","commit_id":"f92c39d2f7ae5e837342e91665efe619ff93639e"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"773a83d5c9c6b1ab057a8669a7bc5616d22e6d01","unresolved":false,"context_lines":[{"line_number":1025,"context_line":"    \"\"\"Add location to an image\"\"\""},{"line_number":1026,"context_line":"    try:"},{"line_number":1027,"context_line":"        validation_data \u003d json.loads(args.validation_data)"},{"line_number":1028,"context_line":"        for val_data in validation_data:"},{"line_number":1029,"context_line":"            if val_data in [\u0027os_hash_algo\u0027, \u0027os_hash_value\u0027]:"},{"line_number":1030,"context_line":"                continue"},{"line_number":1031,"context_line":"            utils.exit(\u0027Validation Data should contain only os_hash_algo \u0027"},{"line_number":1032,"context_line":"                       \u0027and os_hash_value\u0027)"},{"line_number":1033,"context_line":"    except ValueError:"},{"line_number":1034,"context_line":"        utils.exit(\u0027Metadata is not a valid JSON object.\u0027)"},{"line_number":1035,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":8,"id":"ecf4a775_539a29b9","line":1032,"range":{"start_line":1028,"start_character":8,"end_line":1032,"end_character":43},"in_reply_to":"3f1e5dac_84d08477","updated":"2023-08-29 09:52:47.000000000","message":"Done","commit_id":"f92c39d2f7ae5e837342e91665efe619ff93639e"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"e136dc90396a7290e398320fceab2b683d892422","unresolved":true,"context_lines":[{"line_number":1028,"context_line":"        accepted_values \u003d [\u0027os_hash_algo\u0027, \u0027os_hash_value\u0027]"},{"line_number":1029,"context_line":"        if list(set(validation_data.keys()).difference(accepted_values)):"},{"line_number":1030,"context_line":"            utils.exit(\u0027Validation Data should contain only os_hash_algo \u0027"},{"line_number":1031,"context_line":"                       \u0027and os_hash_value\u0027)"},{"line_number":1032,"context_line":"    except ValueError:"},{"line_number":1033,"context_line":"        utils.exit(\u0027Metadata is not a valid JSON object.\u0027)"},{"line_number":1034,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"08d4618b_5a5b1de6","line":1031,"updated":"2023-08-29 10:07:06.000000000","message":"If new PS is needed then you can add additional values here in error message.","commit_id":"9f3a8ea7328703e9cfaa4b636fd69461a1f8dd6c"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a0860b6f1adc3e37149dded115ca36b2a37d5e89","unresolved":false,"context_lines":[{"line_number":1028,"context_line":"        accepted_values \u003d [\u0027os_hash_algo\u0027, \u0027os_hash_value\u0027]"},{"line_number":1029,"context_line":"        if list(set(validation_data.keys()).difference(accepted_values)):"},{"line_number":1030,"context_line":"            utils.exit(\u0027Validation Data should contain only os_hash_algo \u0027"},{"line_number":1031,"context_line":"                       \u0027and os_hash_value\u0027)"},{"line_number":1032,"context_line":"    except ValueError:"},{"line_number":1033,"context_line":"        utils.exit(\u0027Metadata is not a valid JSON object.\u0027)"},{"line_number":1034,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"d7d51466_be2429ca","line":1031,"in_reply_to":"08d4618b_5a5b1de6","updated":"2024-05-13 11:12:41.000000000","message":"Acknowledged","commit_id":"9f3a8ea7328703e9cfaa4b636fd69461a1f8dd6c"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"e136dc90396a7290e398320fceab2b683d892422","unresolved":true,"context_lines":[{"line_number":1030,"context_line":"            utils.exit(\u0027Validation Data should contain only os_hash_algo \u0027"},{"line_number":1031,"context_line":"                       \u0027and os_hash_value\u0027)"},{"line_number":1032,"context_line":"    except ValueError:"},{"line_number":1033,"context_line":"        utils.exit(\u0027Metadata is not a valid JSON object.\u0027)"},{"line_number":1034,"context_line":"    else:"},{"line_number":1035,"context_line":"        image \u003d gc.images.add_image_location(args.id, args.url,"},{"line_number":1036,"context_line":"                                             validation_data\u003dvalidation_data)"}],"source_content_type":"text/x-python","patch_set":9,"id":"614e88cb_5d6b45f1","line":1033,"range":{"start_line":1033,"start_character":20,"end_line":1033,"end_character":28},"updated":"2023-08-29 10:07:06.000000000","message":"Ideally it should be validation-data","commit_id":"9f3a8ea7328703e9cfaa4b636fd69461a1f8dd6c"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a0860b6f1adc3e37149dded115ca36b2a37d5e89","unresolved":false,"context_lines":[{"line_number":1030,"context_line":"            utils.exit(\u0027Validation Data should contain only os_hash_algo \u0027"},{"line_number":1031,"context_line":"                       \u0027and os_hash_value\u0027)"},{"line_number":1032,"context_line":"    except ValueError:"},{"line_number":1033,"context_line":"        utils.exit(\u0027Metadata is not a valid JSON object.\u0027)"},{"line_number":1034,"context_line":"    else:"},{"line_number":1035,"context_line":"        image \u003d gc.images.add_image_location(args.id, args.url,"},{"line_number":1036,"context_line":"                                             validation_data\u003dvalidation_data)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5d894154_2eca89fa","line":1033,"range":{"start_line":1033,"start_character":20,"end_line":1033,"end_character":28},"in_reply_to":"614e88cb_5d6b45f1","updated":"2024-05-13 11:12:41.000000000","message":"Done","commit_id":"9f3a8ea7328703e9cfaa4b636fd69461a1f8dd6c"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"91ce8d344200e5727fdfe1511833b8679cdf4ea9","unresolved":true,"context_lines":[{"line_number":1046,"context_line":"    else:"},{"line_number":1047,"context_line":"        image \u003d gc.images.add_image_location(args.id, args.url,"},{"line_number":1048,"context_line":"                                             validation_data\u003dvalidation_data)"},{"line_number":1049,"context_line":"    utils.print_image(image)"},{"line_number":1050,"context_line":""},{"line_number":1051,"context_line":""},{"line_number":1052,"context_line":"@utils.arg(\u0027id\u0027, metavar\u003d\u0027\u003cIMAGE_ID\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"7070fc0a_6a0020b0","line":1049,"range":{"start_line":1049,"start_character":4,"end_line":1049,"end_character":28},"updated":"2024-07-02 08:13:21.000000000","message":"nit, this should be part of else block","commit_id":"01d2cdedf5aca704f9389d8cf094f35de5f06170"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"3e1fd06e37c1e65d1c8e793aef2c806a6885dfc7","unresolved":false,"context_lines":[{"line_number":1046,"context_line":"    else:"},{"line_number":1047,"context_line":"        image \u003d gc.images.add_image_location(args.id, args.url,"},{"line_number":1048,"context_line":"                                             validation_data\u003dvalidation_data)"},{"line_number":1049,"context_line":"    utils.print_image(image)"},{"line_number":1050,"context_line":""},{"line_number":1051,"context_line":""},{"line_number":1052,"context_line":"@utils.arg(\u0027id\u0027, metavar\u003d\u0027\u003cIMAGE_ID\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"9ab645c1_c1bc9d73","line":1049,"range":{"start_line":1049,"start_character":4,"end_line":1049,"end_character":28},"in_reply_to":"7070fc0a_6a0020b0","updated":"2024-07-25 12:12:47.000000000","message":"Done","commit_id":"01d2cdedf5aca704f9389d8cf094f35de5f06170"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"d5a5e2b1c66a41e312c75bc9d697ffc2bb7298c3","unresolved":true,"context_lines":[{"line_number":1051,"context_line":""},{"line_number":1052,"context_line":"@utils.arg(\u0027id\u0027, metavar\u003d\u0027\u003cIMAGE_ID\u003e\u0027,"},{"line_number":1053,"context_line":"           help\u003d_(\u0027ID of image whose locations to get.\u0027))"},{"line_number":1054,"context_line":"def do_get_locations(gc, args):"},{"line_number":1055,"context_line":"    \"\"\"Get locations associated to an image\"\"\""},{"line_number":1056,"context_line":"    location \u003d gc.images.get_image_locations(args.id)"},{"line_number":1057,"context_line":"    columns \u003d [\u0027image_id\u0027, \u0027url\u0027, \u0027metadata\u0027]"}],"source_content_type":"text/x-python","patch_set":13,"id":"1e097153_bd21587f","line":1054,"range":{"start_line":1054,"start_character":4,"end_line":1054,"end_character":20},"updated":"2024-07-18 06:57:30.000000000","message":"I think only service role will be using this, so no need to provide a interface for normal user as he will always going to get 403 error for this.","commit_id":"01d2cdedf5aca704f9389d8cf094f35de5f06170"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"3e1fd06e37c1e65d1c8e793aef2c806a6885dfc7","unresolved":false,"context_lines":[{"line_number":1051,"context_line":""},{"line_number":1052,"context_line":"@utils.arg(\u0027id\u0027, metavar\u003d\u0027\u003cIMAGE_ID\u003e\u0027,"},{"line_number":1053,"context_line":"           help\u003d_(\u0027ID of image whose locations to get.\u0027))"},{"line_number":1054,"context_line":"def do_get_locations(gc, args):"},{"line_number":1055,"context_line":"    \"\"\"Get locations associated to an image\"\"\""},{"line_number":1056,"context_line":"    location \u003d gc.images.get_image_locations(args.id)"},{"line_number":1057,"context_line":"    columns \u003d [\u0027image_id\u0027, \u0027url\u0027, \u0027metadata\u0027]"}],"source_content_type":"text/x-python","patch_set":13,"id":"5820fa8a_a7be0af0","line":1054,"range":{"start_line":1054,"start_character":4,"end_line":1054,"end_character":20},"in_reply_to":"1e097153_bd21587f","updated":"2024-07-25 12:12:47.000000000","message":"Done","commit_id":"01d2cdedf5aca704f9389d8cf094f35de5f06170"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b896b06487503958694ac22863a43ba9abda5f49","unresolved":true,"context_lines":[{"line_number":1015,"context_line":"@utils.arg(\u0027--url\u0027, metavar\u003d\u0027\u003cURL\u003e\u0027, required\u003dTrue,"},{"line_number":1016,"context_line":"           help\u003d_(\u0027URL of location to add.\u0027))"},{"line_number":1017,"context_line":"@utils.arg(\u0027--validation-data\u0027, metavar\u003d\u0027\u003cSTRING\u003e\u0027, default\u003d\u0027{}\u0027,"},{"line_number":1018,"context_line":"           help\u003d_(\u0027Validation data containing os_hash_algo and os_hash_value\u0027"},{"line_number":1019,"context_line":"                  \u0027only associated to the image. Must be a valid JSON object \u0027"},{"line_number":1020,"context_line":"                  \u0027(default: %(default)s)\u0027))"},{"line_number":1021,"context_line":"@utils.arg(\u0027id\u0027, metavar\u003d\u0027\u003cIMAGE_ID\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"dd765dba_7b65e405","line":1018,"range":{"start_line":1018,"start_character":76,"end_line":1018,"end_character":77},"updated":"2024-08-09 21:46:11.000000000","message":"missing a space before this single quote","commit_id":"476cdadf2ea2003bf1b8fff3467f159e6b4614d9"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"3ac4c763925acfbfcac096b0b9ad0ec8eb884587","unresolved":false,"context_lines":[{"line_number":1015,"context_line":"@utils.arg(\u0027--url\u0027, metavar\u003d\u0027\u003cURL\u003e\u0027, required\u003dTrue,"},{"line_number":1016,"context_line":"           help\u003d_(\u0027URL of location to add.\u0027))"},{"line_number":1017,"context_line":"@utils.arg(\u0027--validation-data\u0027, metavar\u003d\u0027\u003cSTRING\u003e\u0027, default\u003d\u0027{}\u0027,"},{"line_number":1018,"context_line":"           help\u003d_(\u0027Validation data containing os_hash_algo and os_hash_value\u0027"},{"line_number":1019,"context_line":"                  \u0027only associated to the image. Must be a valid JSON object \u0027"},{"line_number":1020,"context_line":"                  \u0027(default: %(default)s)\u0027))"},{"line_number":1021,"context_line":"@utils.arg(\u0027id\u0027, metavar\u003d\u0027\u003cIMAGE_ID\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"fe3c1984_d2e15339","line":1018,"range":{"start_line":1018,"start_character":76,"end_line":1018,"end_character":77},"in_reply_to":"dd765dba_7b65e405","updated":"2024-08-12 07:02:09.000000000","message":"Done","commit_id":"476cdadf2ea2003bf1b8fff3467f159e6b4614d9"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b896b06487503958694ac22863a43ba9abda5f49","unresolved":true,"context_lines":[{"line_number":1021,"context_line":"@utils.arg(\u0027id\u0027, metavar\u003d\u0027\u003cIMAGE_ID\u003e\u0027,"},{"line_number":1022,"context_line":"           help\u003d_(\u0027ID of image whose location is to be added.\u0027))"},{"line_number":1023,"context_line":"def do_add_location(gc, args):"},{"line_number":1024,"context_line":"    \"\"\"Add location to an image\"\"\""},{"line_number":1025,"context_line":"    try:"},{"line_number":1026,"context_line":"        invalid_val_data \u003d None"},{"line_number":1027,"context_line":"        validation_data \u003d json.loads(args.validation_data)"}],"source_content_type":"text/x-python","patch_set":14,"id":"276e606d_9fb2921d","line":1024,"updated":"2024-08-09 21:46:11.000000000","message":"Should probably say something here that this applies only to images in \u0027queued\u0027 status","commit_id":"476cdadf2ea2003bf1b8fff3467f159e6b4614d9"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"3ac4c763925acfbfcac096b0b9ad0ec8eb884587","unresolved":false,"context_lines":[{"line_number":1021,"context_line":"@utils.arg(\u0027id\u0027, metavar\u003d\u0027\u003cIMAGE_ID\u003e\u0027,"},{"line_number":1022,"context_line":"           help\u003d_(\u0027ID of image whose location is to be added.\u0027))"},{"line_number":1023,"context_line":"def do_add_location(gc, args):"},{"line_number":1024,"context_line":"    \"\"\"Add location to an image\"\"\""},{"line_number":1025,"context_line":"    try:"},{"line_number":1026,"context_line":"        invalid_val_data \u003d None"},{"line_number":1027,"context_line":"        validation_data \u003d json.loads(args.validation_data)"}],"source_content_type":"text/x-python","patch_set":14,"id":"f02fc8cf_e027aeb2","line":1024,"in_reply_to":"276e606d_9fb2921d","updated":"2024-08-12 07:02:09.000000000","message":"Acknowledged","commit_id":"476cdadf2ea2003bf1b8fff3467f159e6b4614d9"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b896b06487503958694ac22863a43ba9abda5f49","unresolved":true,"context_lines":[{"line_number":1033,"context_line":"                       \u0027and os_hash_value. `%s` is not allowed\u0027 %"},{"line_number":1034,"context_line":"                       (*invalid_val_data,))"},{"line_number":1035,"context_line":""},{"line_number":1036,"context_line":"        allowed_hash_algo \u003d [\u0027sha512\u0027, \u0027sha256\u0027, \u0027sha1\u0027, \u0027md5\u0027]"},{"line_number":1037,"context_line":"        if validation_data and \\"},{"line_number":1038,"context_line":"                validation_data[\u0027os_hash_algo\u0027] not in allowed_hash_algo:"},{"line_number":1039,"context_line":"            raise utils.exit(\u0027os_hash_algo: `%s` is incorrect, \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"348ac685_0665d557","line":1036,"updated":"2024-08-09 21:46:11.000000000","message":"ok, this is the default list defined in https://specs.openstack.org/openstack/glance-specs/specs/2024.2/approved/glance/configurable-hash-algorithms.html","commit_id":"476cdadf2ea2003bf1b8fff3467f159e6b4614d9"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"3ac4c763925acfbfcac096b0b9ad0ec8eb884587","unresolved":true,"context_lines":[{"line_number":1033,"context_line":"                       \u0027and os_hash_value. `%s` is not allowed\u0027 %"},{"line_number":1034,"context_line":"                       (*invalid_val_data,))"},{"line_number":1035,"context_line":""},{"line_number":1036,"context_line":"        allowed_hash_algo \u003d [\u0027sha512\u0027, \u0027sha256\u0027, \u0027sha1\u0027, \u0027md5\u0027]"},{"line_number":1037,"context_line":"        if validation_data and \\"},{"line_number":1038,"context_line":"                validation_data[\u0027os_hash_algo\u0027] not in allowed_hash_algo:"},{"line_number":1039,"context_line":"            raise utils.exit(\u0027os_hash_algo: `%s` is incorrect, \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"da4f9faf_053c0936","line":1036,"in_reply_to":"348ac685_0665d557","updated":"2024-08-12 07:02:09.000000000","message":"Yes","commit_id":"476cdadf2ea2003bf1b8fff3467f159e6b4614d9"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"7fe748d82b22ee5e5222955c71db3678b1e62ceb","unresolved":false,"context_lines":[{"line_number":1033,"context_line":"                       \u0027and os_hash_value. `%s` is not allowed\u0027 %"},{"line_number":1034,"context_line":"                       (*invalid_val_data,))"},{"line_number":1035,"context_line":""},{"line_number":1036,"context_line":"        allowed_hash_algo \u003d [\u0027sha512\u0027, \u0027sha256\u0027, \u0027sha1\u0027, \u0027md5\u0027]"},{"line_number":1037,"context_line":"        if validation_data and \\"},{"line_number":1038,"context_line":"                validation_data[\u0027os_hash_algo\u0027] not in allowed_hash_algo:"},{"line_number":1039,"context_line":"            raise utils.exit(\u0027os_hash_algo: `%s` is incorrect, \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"4015bc39_c0117dc4","line":1036,"in_reply_to":"da4f9faf_053c0936","updated":"2024-08-14 10:46:18.000000000","message":"Done","commit_id":"476cdadf2ea2003bf1b8fff3467f159e6b4614d9"}],"releasenotes/notes/add_new_locations_apis_support-1ceb47178d384d58.yaml":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"e136dc90396a7290e398320fceab2b683d892422","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    - Add support for add-location to an existing image."},{"line_number":5,"context_line":"    - Add support for get-locations associated to an image."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"0ccd4483_336b7ea6","line":4,"range":{"start_line":4,"start_character":41,"end_line":4,"end_character":49},"updated":"2023-08-29 10:07:06.000000000","message":"This will work for only queued image and once only.","commit_id":"9f3a8ea7328703e9cfaa4b636fd69461a1f8dd6c"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a0860b6f1adc3e37149dded115ca36b2a37d5e89","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    - Add support for add-location to an existing image."},{"line_number":5,"context_line":"    - Add support for get-locations associated to an image."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"a2280d14_99fac82f","line":4,"range":{"start_line":4,"start_character":41,"end_line":4,"end_character":49},"in_reply_to":"0ccd4483_336b7ea6","updated":"2024-05-13 11:12:41.000000000","message":"Acknowledged","commit_id":"9f3a8ea7328703e9cfaa4b636fd69461a1f8dd6c"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b896b06487503958694ac22863a43ba9abda5f49","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    - Add support for add-location to add new location to queued image only."},{"line_number":5,"context_line":"    - Add support for get-locations associated to an image."}],"source_content_type":"text/x-yaml","patch_set":14,"id":"1e71d6dd_9656f153","line":4,"updated":"2024-08-09 21:46:11.000000000","message":"I think you should say something about how this is different from the location-add command and what the use cases are","commit_id":"476cdadf2ea2003bf1b8fff3467f159e6b4614d9"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"3ac4c763925acfbfcac096b0b9ad0ec8eb884587","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    - Add support for add-location to add new location to queued image only."},{"line_number":5,"context_line":"    - Add support for get-locations associated to an image."}],"source_content_type":"text/x-yaml","patch_set":14,"id":"74ad1f37_775fa45a","line":4,"in_reply_to":"1e71d6dd_9656f153","updated":"2024-08-12 07:02:09.000000000","message":"Acknowledged","commit_id":"476cdadf2ea2003bf1b8fff3467f159e6b4614d9"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b896b06487503958694ac22863a43ba9abda5f49","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    - Add support for add-location to add new location to queued image only."},{"line_number":5,"context_line":"    - Add support for get-locations associated to an image."}],"source_content_type":"text/x-yaml","patch_set":14,"id":"67bac11a_878e11ae","line":5,"updated":"2024-08-09 21:46:11.000000000","message":"I think you need to distinguish between the new shell command, \u0027add-location\u0027, and the new client methods, add_image_location and get_image_locations","commit_id":"476cdadf2ea2003bf1b8fff3467f159e6b4614d9"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"3ac4c763925acfbfcac096b0b9ad0ec8eb884587","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    - Add support for add-location to add new location to queued image only."},{"line_number":5,"context_line":"    - Add support for get-locations associated to an image."}],"source_content_type":"text/x-yaml","patch_set":14,"id":"6aaf52f5_c51987fa","line":5,"in_reply_to":"67bac11a_878e11ae","updated":"2024-08-12 07:02:09.000000000","message":"Acknowledged","commit_id":"476cdadf2ea2003bf1b8fff3467f159e6b4614d9"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b11e78f9d33d06f5b0c9b19b6c2aebca4f620e9f","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    - Add support for newly added add-location api in Glance."},{"line_number":5,"context_line":"      This new add location operation is only allowed for service to"},{"line_number":6,"context_line":"      service interaction and image owner, when image is in ``queued``"},{"line_number":7,"context_line":"      state only to prevent malicious users from modifying the image"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"a952d059_cb2b705a","line":4,"range":{"start_line":4,"start_character":34,"end_line":4,"end_character":46},"updated":"2024-08-12 08:28:28.000000000","message":"it should be api path /v2/images/api_name","commit_id":"2d8f83e250f5b84b146bd5adef75529f3cc55cc1"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"b8bfcd3a87ac56763c5ca257e2a6a03aa4979cff","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    - Add support for newly added add-location api in Glance."},{"line_number":5,"context_line":"      This new add location operation is only allowed for service to"},{"line_number":6,"context_line":"      service interaction and image owner, when image is in ``queued``"},{"line_number":7,"context_line":"      state only to prevent malicious users from modifying the image"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"58833a3c_8a583db4","line":4,"range":{"start_line":4,"start_character":34,"end_line":4,"end_character":46},"in_reply_to":"a952d059_cb2b705a","updated":"2024-08-12 10:16:47.000000000","message":"Done","commit_id":"2d8f83e250f5b84b146bd5adef75529f3cc55cc1"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b11e78f9d33d06f5b0c9b19b6c2aebca4f620e9f","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    - Add support for newly added add-location api in Glance."},{"line_number":5,"context_line":"      This new add location operation is only allowed for service to"},{"line_number":6,"context_line":"      service interaction and image owner, when image is in ``queued``"},{"line_number":7,"context_line":"      state only to prevent malicious users from modifying the image"},{"line_number":8,"context_line":"      location again and again since the location added for the first"},{"line_number":9,"context_line":"      time is the correct one as far as Glance is concerned. The old"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"da9eeceb_78a6b2ac","line":6,"range":{"start_line":6,"start_character":30,"end_line":6,"end_character":41},"updated":"2024-08-12 08:28:28.000000000","message":"http backend should be more appropriate. IMO Brian wants to mention about old security reference here.","commit_id":"2d8f83e250f5b84b146bd5adef75529f3cc55cc1"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"b8bfcd3a87ac56763c5ca257e2a6a03aa4979cff","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    - Add support for newly added add-location api in Glance."},{"line_number":5,"context_line":"      This new add location operation is only allowed for service to"},{"line_number":6,"context_line":"      service interaction and image owner, when image is in ``queued``"},{"line_number":7,"context_line":"      state only to prevent malicious users from modifying the image"},{"line_number":8,"context_line":"      location again and again since the location added for the first"},{"line_number":9,"context_line":"      time is the correct one as far as Glance is concerned. The old"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"7ac8204f_16b8b461","line":6,"range":{"start_line":6,"start_character":30,"end_line":6,"end_character":41},"in_reply_to":"da9eeceb_78a6b2ac","updated":"2024-08-12 10:16:47.000000000","message":"Acknowledged","commit_id":"2d8f83e250f5b84b146bd5adef75529f3cc55cc1"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b11e78f9d33d06f5b0c9b19b6c2aebca4f620e9f","unresolved":true,"context_lines":[{"line_number":13,"context_line":"      improve the caching operations."},{"line_number":14,"context_line":"      This change adds support of new shell command ``add-location``"},{"line_number":15,"context_line":"      and new client method ``add_image_location``."},{"line_number":16,"context_line":"    - Add support for newly added get-locations api in glance to fetche"},{"line_number":17,"context_line":"      the locations associated to an image. This change adds new client"},{"line_number":18,"context_line":"      method ``get_image_locations`` since this new get locations api is"},{"line_number":19,"context_line":"      meant for service user only hence not expose it to end user."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"099cc136_00834bae","line":16,"range":{"start_line":16,"start_character":34,"end_line":16,"end_character":47},"updated":"2024-08-12 08:28:28.000000000","message":"ditto, it should be full api path","commit_id":"2d8f83e250f5b84b146bd5adef75529f3cc55cc1"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"b8bfcd3a87ac56763c5ca257e2a6a03aa4979cff","unresolved":false,"context_lines":[{"line_number":13,"context_line":"      improve the caching operations."},{"line_number":14,"context_line":"      This change adds support of new shell command ``add-location``"},{"line_number":15,"context_line":"      and new client method ``add_image_location``."},{"line_number":16,"context_line":"    - Add support for newly added get-locations api in glance to fetche"},{"line_number":17,"context_line":"      the locations associated to an image. This change adds new client"},{"line_number":18,"context_line":"      method ``get_image_locations`` since this new get locations api is"},{"line_number":19,"context_line":"      meant for service user only hence not expose it to end user."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"241b349f_e130d32e","line":16,"range":{"start_line":16,"start_character":34,"end_line":16,"end_character":47},"in_reply_to":"099cc136_00834bae","updated":"2024-08-12 10:16:47.000000000","message":"Done","commit_id":"2d8f83e250f5b84b146bd5adef75529f3cc55cc1"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"199e940a6680f8073313473d0c5bf05c14bf7ff4","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    - Add client support for newly added api,"},{"line_number":5,"context_line":"      POST /v2/images/{image_id}/locations in Glance."},{"line_number":6,"context_line":"      New add location operation is allowed for service to service"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"8ee37e39_9f39901c","line":3,"updated":"2024-08-13 13:49:29.000000000","message":"This displays kind of weird in HTML due to the bulleting:\nhttps://1c9b86174b43e7b5158f-9bb3bc858dbcc830f291452ed0dfae72.ssl.cf1.rackcdn.com/890634/16/check/build-openstack-releasenotes/4ab0d61/docs/unreleased.html#new-features\n\nIf you want 2 bullets, I think just do:\n\n```\n  - |\n    Add client support ...\n  - |\n    Add support for ...\n```\n\nOr, you could get creative and do something like:\n\n```\n  - |\n    Add support for the new Glance \"locations\" API\n    \n    - Add client support ...\n    - Add support for ...\n```","commit_id":"ff1415dd96f2cd85d1c74599ebd8f70a6877f150"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"7fe748d82b22ee5e5222955c71db3678b1e62ceb","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    - Add client support for newly added api,"},{"line_number":5,"context_line":"      POST /v2/images/{image_id}/locations in Glance."},{"line_number":6,"context_line":"      New add location operation is allowed for service to service"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"92d968eb_cfa3295f","line":3,"in_reply_to":"8ee37e39_9f39901c","updated":"2024-08-14 10:46:18.000000000","message":"Done","commit_id":"ff1415dd96f2cd85d1c74599ebd8f70a6877f150"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"199e940a6680f8073313473d0c5bf05c14bf7ff4","unresolved":true,"context_lines":[{"line_number":14,"context_line":"      GET /v2/images/{image_id}/locations in Glance to fetch the locations"},{"line_number":15,"context_line":"      associated to an image. This change adds new client method"},{"line_number":16,"context_line":"      ``get_image_locations`` since this new get locations api is meant"},{"line_number":17,"context_line":"      for service user only hence not expose it to end user."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"7dc095ad_db4006bf","line":17,"range":{"start_line":17,"start_character":34,"end_line":17,"end_character":59},"updated":"2024-08-13 13:49:29.000000000","message":"\"it is not exposed to the end user as a shell command\"\n\nAlso, \"api\" should probably be \"API\" throughout\n\nYou might also want to add double-backticks around the API calls\n\nAnd if you want to be nice to your readers, you could make the OSSN references links to the notes:\nhttps://wiki.openstack.org/wiki/OSSN/OSSN-0090\nhttps://wiki.openstack.org/wiki/OSSN/OSSN-0065","commit_id":"ff1415dd96f2cd85d1c74599ebd8f70a6877f150"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"7fe748d82b22ee5e5222955c71db3678b1e62ceb","unresolved":false,"context_lines":[{"line_number":14,"context_line":"      GET /v2/images/{image_id}/locations in Glance to fetch the locations"},{"line_number":15,"context_line":"      associated to an image. This change adds new client method"},{"line_number":16,"context_line":"      ``get_image_locations`` since this new get locations api is meant"},{"line_number":17,"context_line":"      for service user only hence not expose it to end user."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"662f63d9_36be57b8","line":17,"range":{"start_line":17,"start_character":34,"end_line":17,"end_character":59},"in_reply_to":"7dc095ad_db4006bf","updated":"2024-08-14 10:46:18.000000000","message":"Done","commit_id":"ff1415dd96f2cd85d1c74599ebd8f70a6877f150"}]}
