)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"38e726bf4466df56fa3fbcbf3c5bad6eda498dc3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"423b6104_5c11995e","updated":"2025-04-08 11:01:07.000000000","message":"Also, sorry for taking so long to get to these. They\u0027re hard to review as they touch aspects of the Glance API that are generally poorly understood (at least by me 😅) so I keep putting them off","commit_id":"0cc67981f3fdf14cc09874f14cb226f924c33b65"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"21db9e1b8ab75b1fb1ce15dfc7df0c7bb492f707","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"d899294a_00af4163","updated":"2025-04-08 11:00:12.000000000","message":"I\u0027ve left a load of comments. For inspiration, I would recommend looking at the `Member` resource in `openstack/image/v2/member.py`, which allows a lot more operations but is an example of a resource nested under the image resource.","commit_id":"0cc67981f3fdf14cc09874f14cb226f924c33b65"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"ce4ce6ce84ab4bf28798e88a8c0059fbfc00760a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a31900e1_ff5fdf0e","updated":"2025-03-26 15:39:09.000000000","message":"Seems like Stephen\u0027s concerns were adressed.","commit_id":"0cc67981f3fdf14cc09874f14cb226f924c33b65"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"e773d8dc3f6f46e98ab79a0fb771c66f0e1b9e5c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7629c7b4_f2dc752e","updated":"2025-07-29 13:55:59.000000000","message":"@Maxim: I think Mridula made sense, do you agree with her answers?","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"03f3120c1cc44082052cb5ceddc1fdfa67fdd803","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"a0207477_a25b470e","updated":"2025-08-05 16:14:51.000000000","message":"New patch incoming :)","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f7df4d78ee8dd893baa8974ede7eabbc4db97053","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"f09f8510_3ec16f75","updated":"2025-07-31 17:13:11.000000000","message":"Per my comment inline, I don\u0027t think this currently works. Could you manually test this against a deployment and/or ideally add a functional tests?\n\nI have a couple of other notes about docs, but this is the biggest issue.","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"8018f8549fe5754ed63e9a2f35951bb4b0bf9186","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"16de4527_4c5bea0d","updated":"2025-05-16 05:14:39.000000000","message":"recheck","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"94c7692dc97390544204e6ed6ddeaf3e3b25354e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"5aa8f70f_c7a3a3d2","updated":"2025-05-06 11:05:29.000000000","message":"recheck","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"4346ee4d4c06d070e7a3442e6f4d7a33238f5799","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"5eee779e_3e9be130","updated":"2025-05-08 08:25:14.000000000","message":"recheck","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"ebc533fc4aa4eff7001f18b034af06b0bb216324","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"8ec9fc79_f62ab1a0","updated":"2025-05-07 07:54:50.000000000","message":"recheck","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"}],"doc/source/user/proxies/image_v2.rst":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"21db9e1b8ab75b1fb1ce15dfc7df0c7bb492f707","unresolved":true,"context_lines":[{"line_number":23,"context_line":"            add_tag, remove_tag"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Image Task Operations"},{"line_number":26,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":".. autoclass:: openstack.image.v2._proxy.Proxy"},{"line_number":29,"context_line":"  :noindex:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"f39576a7_f78dc109","line":26,"range":{"start_line":26,"start_character":21,"end_line":26,"end_character":25},"updated":"2025-04-08 11:00:12.000000000","message":"nit","commit_id":"0cc67981f3fdf14cc09874f14cb226f924c33b65"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"534cfe833e68e5f36e9a92d011a6a0ee4a67c98d","unresolved":false,"context_lines":[{"line_number":23,"context_line":"            add_tag, remove_tag"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Image Task Operations"},{"line_number":26,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":".. autoclass:: openstack.image.v2._proxy.Proxy"},{"line_number":29,"context_line":"  :noindex:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"46863ff3_3425f3fb","line":26,"range":{"start_line":26,"start_character":21,"end_line":26,"end_character":25},"in_reply_to":"f39576a7_f78dc109","updated":"2025-05-02 15:54:50.000000000","message":"Done","commit_id":"0cc67981f3fdf14cc09874f14cb226f924c33b65"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"21db9e1b8ab75b1fb1ce15dfc7df0c7bb492f707","unresolved":true,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":".. autoclass:: openstack.image.v2._proxy.Proxy"},{"line_number":29,"context_line":"  :noindex:"},{"line_number":30,"context_line":"  :members: get_image_tasks"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Member Operations"},{"line_number":33,"context_line":"^^^^^^^^^^^^^^^^^"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf37ac32_fbb7778b","line":31,"range":{"start_line":30,"start_character":12,"end_line":31,"end_character":1},"updated":"2025-04-08 11:00:12.000000000","message":"Per my comments later in the change.\n\n```suggestion\n  :members: image_tasks\n\n```","commit_id":"0cc67981f3fdf14cc09874f14cb226f924c33b65"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"534cfe833e68e5f36e9a92d011a6a0ee4a67c98d","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":".. autoclass:: openstack.image.v2._proxy.Proxy"},{"line_number":29,"context_line":"  :noindex:"},{"line_number":30,"context_line":"  :members: get_image_tasks"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Member Operations"},{"line_number":33,"context_line":"^^^^^^^^^^^^^^^^^"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"6dc04938_c1eaf5ce","line":31,"range":{"start_line":30,"start_character":12,"end_line":31,"end_character":1},"in_reply_to":"bf37ac32_fbb7778b","updated":"2025-05-02 15:54:50.000000000","message":"Done","commit_id":"0cc67981f3fdf14cc09874f14cb226f924c33b65"},{"author":{"_account_id":34510,"name":"Maxim Sava","email":"msava@redhat.com","username":"msava@redhat.com"},"change_message_id":"cc5efb676677b6e5f8bba5d3c8909a333ad37f5e","unresolved":true,"context_lines":[{"line_number":22,"context_line":"            deactivate_image, reactivate_image, stage_image,"},{"line_number":23,"context_line":"            add_tag, remove_tag"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Image Task Operations"},{"line_number":26,"context_line":"^^^^^^^^^^^^^^^^^^^^^"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":".. autoclass:: openstack.image.v2._proxy.Proxy"},{"line_number":29,"context_line":"  :noindex:"},{"line_number":30,"context_line":"  :members: image_tasks"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Member Operations"},{"line_number":33,"context_line":"^^^^^^^^^^^^^^^^^"}],"source_content_type":"text/x-rst","patch_set":4,"id":"597a7546_eeae4ac2","line":30,"range":{"start_line":25,"start_character":0,"end_line":30,"end_character":23},"updated":"2025-05-05 07:52:16.000000000","message":"Shows tasks associated with an image operation.\nShould we move `tasks_image` to l#23 and name according to the rest of members?","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"bbcf7a75500a8197830743def077666d6d699bdf","unresolved":true,"context_lines":[{"line_number":22,"context_line":"            deactivate_image, reactivate_image, stage_image,"},{"line_number":23,"context_line":"            add_tag, remove_tag"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Image Task Operations"},{"line_number":26,"context_line":"^^^^^^^^^^^^^^^^^^^^^"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":".. autoclass:: openstack.image.v2._proxy.Proxy"},{"line_number":29,"context_line":"  :noindex:"},{"line_number":30,"context_line":"  :members: image_tasks"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Member Operations"},{"line_number":33,"context_line":"^^^^^^^^^^^^^^^^^"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bc58b3c7_a54eb754","line":30,"range":{"start_line":25,"start_character":0,"end_line":30,"end_character":23},"in_reply_to":"597a7546_eeae4ac2","updated":"2025-05-06 11:04:36.000000000","message":"Since it\u0027s a different resource we are using, hence we have to mention it specific image task operation.","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"},{"author":{"_account_id":34510,"name":"Maxim Sava","email":"msava@redhat.com","username":"msava@redhat.com"},"change_message_id":"9cfb65690c5358afcedd9e245c1409ff037a1415","unresolved":false,"context_lines":[{"line_number":22,"context_line":"            deactivate_image, reactivate_image, stage_image,"},{"line_number":23,"context_line":"            add_tag, remove_tag"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Image Task Operations"},{"line_number":26,"context_line":"^^^^^^^^^^^^^^^^^^^^^"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":".. autoclass:: openstack.image.v2._proxy.Proxy"},{"line_number":29,"context_line":"  :noindex:"},{"line_number":30,"context_line":"  :members: image_tasks"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Member Operations"},{"line_number":33,"context_line":"^^^^^^^^^^^^^^^^^"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ca5e0b0f_d366c960","line":30,"range":{"start_line":25,"start_character":0,"end_line":30,"end_character":23},"in_reply_to":"bc58b3c7_a54eb754","updated":"2025-07-31 12:42:03.000000000","message":"Done","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"}],"openstack/image/v2/_proxy.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"abfcda74256b584c8525172979a2c77f92462ff1","unresolved":true,"context_lines":[{"line_number":965,"context_line":"    def get_image_tasks(self, image):"},{"line_number":966,"context_line":"        image \u003d self._get_resource(_image.Image, image)"},{"line_number":967,"context_line":"        url \u003d utils.urljoin(image.base_path, image.id, \u0027tasks\u0027)"},{"line_number":968,"context_line":"        return self._get(_image.Image, base_path\u003durl, requires_id\u003dFalse)"},{"line_number":969,"context_line":""},{"line_number":970,"context_line":"    def add_tag(self, image, tag):"},{"line_number":971,"context_line":"        \"\"\"Add a tag to an image"}],"source_content_type":"text/x-python","patch_set":1,"id":"b6f67696_2ecc97fb","line":968,"updated":"2024-09-12 10:09:53.000000000","message":"This looks wrong. This suggests you\u0027re returning an image, but the tasks API is a wholly different API [1] I think you need to add a new `ImageTask` resource that only allows the list operation\n\n[1] https://docs.openstack.org/api-ref/image/v2/index.html#show-tasks-associated-with-image","commit_id":"d2c00b318b123d9bd1278f4ac8ad3c7378309c67"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"21db9e1b8ab75b1fb1ce15dfc7df0c7bb492f707","unresolved":false,"context_lines":[{"line_number":965,"context_line":"    def get_image_tasks(self, image):"},{"line_number":966,"context_line":"        image \u003d self._get_resource(_image.Image, image)"},{"line_number":967,"context_line":"        url \u003d utils.urljoin(image.base_path, image.id, \u0027tasks\u0027)"},{"line_number":968,"context_line":"        return self._get(_image.Image, base_path\u003durl, requires_id\u003dFalse)"},{"line_number":969,"context_line":""},{"line_number":970,"context_line":"    def add_tag(self, image, tag):"},{"line_number":971,"context_line":"        \"\"\"Add a tag to an image"}],"source_content_type":"text/x-python","patch_set":1,"id":"c05dd04c_4bbc0de6","line":968,"in_reply_to":"b6f67696_2ecc97fb","updated":"2025-04-08 11:00:12.000000000","message":"Done","commit_id":"d2c00b318b123d9bd1278f4ac8ad3c7378309c67"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"21db9e1b8ab75b1fb1ce15dfc7df0c7bb492f707","unresolved":true,"context_lines":[{"line_number":963,"context_line":""},{"line_number":964,"context_line":"        return True"},{"line_number":965,"context_line":""},{"line_number":966,"context_line":"    def get_image_tasks(self, image):"},{"line_number":967,"context_line":"        image_id \u003d resource.Resource._get_id(image)"},{"line_number":968,"context_line":"        return self._get("},{"line_number":969,"context_line":"            _image_tasks.ImageTasks, image_id\u003dimage_id, requires_id\u003dFalse"}],"source_content_type":"text/x-python","patch_set":3,"id":"6ab62843_bacdc288","line":966,"range":{"start_line":966,"start_character":8,"end_line":966,"end_character":23},"updated":"2025-04-08 11:00:12.000000000","message":"This returns a list, yeah? Can we call it `image_tasks` if so?\n\n```suggestion\n    def image_tasks(self, image):\n```","commit_id":"0cc67981f3fdf14cc09874f14cb226f924c33b65"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"534cfe833e68e5f36e9a92d011a6a0ee4a67c98d","unresolved":false,"context_lines":[{"line_number":963,"context_line":""},{"line_number":964,"context_line":"        return True"},{"line_number":965,"context_line":""},{"line_number":966,"context_line":"    def get_image_tasks(self, image):"},{"line_number":967,"context_line":"        image_id \u003d resource.Resource._get_id(image)"},{"line_number":968,"context_line":"        return self._get("},{"line_number":969,"context_line":"            _image_tasks.ImageTasks, image_id\u003dimage_id, requires_id\u003dFalse"}],"source_content_type":"text/x-python","patch_set":3,"id":"2b7e9ea5_08edf1df","line":966,"range":{"start_line":966,"start_character":8,"end_line":966,"end_character":23},"in_reply_to":"6ab62843_bacdc288","updated":"2025-05-02 15:54:50.000000000","message":"Done","commit_id":"0cc67981f3fdf14cc09874f14cb226f924c33b65"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"21db9e1b8ab75b1fb1ce15dfc7df0c7bb492f707","unresolved":true,"context_lines":[{"line_number":965,"context_line":""},{"line_number":966,"context_line":"    def get_image_tasks(self, image):"},{"line_number":967,"context_line":"        image_id \u003d resource.Resource._get_id(image)"},{"line_number":968,"context_line":"        return self._get("},{"line_number":969,"context_line":"            _image_tasks.ImageTasks, image_id\u003dimage_id, requires_id\u003dFalse"},{"line_number":970,"context_line":"        )"},{"line_number":971,"context_line":""},{"line_number":972,"context_line":"    def add_tag(self, image, tag):"},{"line_number":973,"context_line":"        \"\"\"Add a tag to an image"}],"source_content_type":"text/x-python","patch_set":3,"id":"b23bbeaa_04276389","line":970,"range":{"start_line":968,"start_character":0,"end_line":970,"end_character":9},"updated":"2025-04-08 11:00:12.000000000","message":"Per my comments on the next file\n\n```suggestion\n        return self._list(_image_tasks.ImageTasks, image_id\u003dimage_id)\n```","commit_id":"0cc67981f3fdf14cc09874f14cb226f924c33b65"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"534cfe833e68e5f36e9a92d011a6a0ee4a67c98d","unresolved":false,"context_lines":[{"line_number":965,"context_line":""},{"line_number":966,"context_line":"    def get_image_tasks(self, image):"},{"line_number":967,"context_line":"        image_id \u003d resource.Resource._get_id(image)"},{"line_number":968,"context_line":"        return self._get("},{"line_number":969,"context_line":"            _image_tasks.ImageTasks, image_id\u003dimage_id, requires_id\u003dFalse"},{"line_number":970,"context_line":"        )"},{"line_number":971,"context_line":""},{"line_number":972,"context_line":"    def add_tag(self, image, tag):"},{"line_number":973,"context_line":"        \"\"\"Add a tag to an image"}],"source_content_type":"text/x-python","patch_set":3,"id":"0681767f_111fa761","line":970,"range":{"start_line":968,"start_character":0,"end_line":970,"end_character":9},"in_reply_to":"b23bbeaa_04276389","updated":"2025-05-02 15:54:50.000000000","message":"Done","commit_id":"0cc67981f3fdf14cc09874f14cb226f924c33b65"},{"author":{"_account_id":34510,"name":"Maxim Sava","email":"msava@redhat.com","username":"msava@redhat.com"},"change_message_id":"968ad226ff144b1542559fce660f5fea98f63262","unresolved":true,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"class Proxy(proxy.Proxy):"},{"line_number":57,"context_line":"    _resource_registry \u003d {"},{"line_number":58,"context_line":"        \"cache\": _cache.Cache,"},{"line_number":59,"context_line":"        \"image\": _image.Image,"},{"line_number":60,"context_line":"        \"image_member\": _member.Member,"}],"source_content_type":"text/x-python","patch_set":4,"id":"6707fee5_683364c1","line":57,"updated":"2025-08-05 13:48:16.000000000","message":"Should we define image_task resource  here?","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"03f3120c1cc44082052cb5ceddc1fdfa67fdd803","unresolved":true,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"class Proxy(proxy.Proxy):"},{"line_number":57,"context_line":"    _resource_registry \u003d {"},{"line_number":58,"context_line":"        \"cache\": _cache.Cache,"},{"line_number":59,"context_line":"        \"image\": _image.Image,"},{"line_number":60,"context_line":"        \"image_member\": _member.Member,"}],"source_content_type":"text/x-python","patch_set":4,"id":"dccb2108_654b425d","line":57,"in_reply_to":"6707fee5_683364c1","updated":"2025-08-05 16:14:51.000000000","message":"I\u0027m not sure.\n\n@stephenfin@redhat.com  What do you think?","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"df5210669326c90e61828a9b0ec7988d1eb5f79f","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"class Proxy(proxy.Proxy):"},{"line_number":57,"context_line":"    _resource_registry \u003d {"},{"line_number":58,"context_line":"        \"cache\": _cache.Cache,"},{"line_number":59,"context_line":"        \"image\": _image.Image,"},{"line_number":60,"context_line":"        \"image_member\": _member.Member,"}],"source_content_type":"text/x-python","patch_set":4,"id":"4bbda313_fcbadafa","line":57,"in_reply_to":"dccb2108_654b425d","updated":"2025-08-07 15:24:20.000000000","message":"This is used by the purge operation. Given images tasks are read-only, I don\u0027t think we need to register it here, no.","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f7df4d78ee8dd893baa8974ede7eabbc4db97053","unresolved":true,"context_lines":[{"line_number":963,"context_line":""},{"line_number":964,"context_line":"        return True"},{"line_number":965,"context_line":""},{"line_number":966,"context_line":"    def image_tasks(self, image):"},{"line_number":967,"context_line":"        image_id \u003d resource.Resource._get_id(image)"},{"line_number":968,"context_line":"        return self._list(_image_tasks.ImageTasks, image_id\u003dimage_id)"},{"line_number":969,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7706772b_dcc86ded","line":966,"updated":"2025-07-31 17:13:11.000000000","message":"Can we get a docstring here, please?","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"03f3120c1cc44082052cb5ceddc1fdfa67fdd803","unresolved":false,"context_lines":[{"line_number":963,"context_line":""},{"line_number":964,"context_line":"        return True"},{"line_number":965,"context_line":""},{"line_number":966,"context_line":"    def image_tasks(self, image):"},{"line_number":967,"context_line":"        image_id \u003d resource.Resource._get_id(image)"},{"line_number":968,"context_line":"        return self._list(_image_tasks.ImageTasks, image_id\u003dimage_id)"},{"line_number":969,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1b7ee11b_fbea696b","line":966,"in_reply_to":"7706772b_dcc86ded","updated":"2025-08-05 16:14:51.000000000","message":"Done","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"}],"openstack/image/v2/image_tasks.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"21db9e1b8ab75b1fb1ce15dfc7df0c7bb492f707","unresolved":true,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class ImageTasks(resource.Resource):"},{"line_number":20,"context_line":"    base_path \u003d \u0027/images/%(image_id)s/tasks\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    allow_fetch \u003d True"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dbd5560d_504dd0bd","line":20,"updated":"2025-04-08 11:00:12.000000000","message":"I think you need a `resources_key` here?\n\nLater: Ah, you\u0027re working around this by setting `tasks`. I think it would be better to provide the list of actual fields and set `resource_key` instead.\n\n```suggestion\n    resources_key \u003d \u0027tasks\u0027\n    base_path \u003d \u0027/images/%(image_id)s/tasks\u0027\n```","commit_id":"0cc67981f3fdf14cc09874f14cb226f924c33b65"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"534cfe833e68e5f36e9a92d011a6a0ee4a67c98d","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class ImageTasks(resource.Resource):"},{"line_number":20,"context_line":"    base_path \u003d \u0027/images/%(image_id)s/tasks\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    allow_fetch \u003d True"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fd62fd18_739ca87f","line":20,"in_reply_to":"dbd5560d_504dd0bd","updated":"2025-05-02 15:54:50.000000000","message":"Done","commit_id":"0cc67981f3fdf14cc09874f14cb226f924c33b65"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"21db9e1b8ab75b1fb1ce15dfc7df0c7bb492f707","unresolved":true,"context_lines":[{"line_number":19,"context_line":"class ImageTasks(resource.Resource):"},{"line_number":20,"context_line":"    base_path \u003d \u0027/images/%(image_id)s/tasks\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    allow_fetch \u003d True"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    _max_microversion \u003d \u00272.17\u0027"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"b55ef6c1_dbb3409b","line":22,"updated":"2025-04-08 11:00:12.000000000","message":"If this returns a list, you probably want to use `allow_list` instead\n\n```suggestion\n    allow_list \u003d True\n```","commit_id":"0cc67981f3fdf14cc09874f14cb226f924c33b65"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"534cfe833e68e5f36e9a92d011a6a0ee4a67c98d","unresolved":false,"context_lines":[{"line_number":19,"context_line":"class ImageTasks(resource.Resource):"},{"line_number":20,"context_line":"    base_path \u003d \u0027/images/%(image_id)s/tasks\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    allow_fetch \u003d True"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    _max_microversion \u003d \u00272.17\u0027"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"19a999e2_d626120d","line":22,"in_reply_to":"b55ef6c1_dbb3409b","updated":"2025-05-02 15:54:50.000000000","message":"Done","commit_id":"0cc67981f3fdf14cc09874f14cb226f924c33b65"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"21db9e1b8ab75b1fb1ce15dfc7df0c7bb492f707","unresolved":true,"context_lines":[{"line_number":26,"context_line":"    #: Image ID stored through the image API. Typically a UUID."},{"line_number":27,"context_line":"    image_id \u003d resource.URI(\u0027image_id\u0027)"},{"line_number":28,"context_line":"    #: The location metadata."},{"line_number":29,"context_line":"    tasks \u003d resource.Body(\u0027tasks\u0027, type\u003dlist)"}],"source_content_type":"text/x-python","patch_set":3,"id":"8bc7a429_81027254","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":45},"updated":"2025-04-08 11:00:12.000000000","message":"```suggestion\n    type \u003d resource.Body(\u0027type\u0027)\n    status \u003d resource.Body(\u0027status\u0027)\n    owner \u003d resource.Body(\u0027owner\u0027)\n    expires_at \u003d resource.Body(\u0027expires_at\u0027)\n    created_at \u003d resource.Body(\u0027created_at\u0027)\n    updated_at \u003d resource.Body(\u0027updated_at\u0027)\n    deleted_at \u003d resource.Body(\u0027deleted_at\u0027)\n    deleted \u003d resource.Body(\u0027deleted\u0027)\n    image_id \u003d resource.Body(\u0027image_id\u0027)\n    request_id \u003d resource.Body(\u0027request_id\u0027)\n    user_id \u003d resource.Body(\u0027user_id\u0027)\n    input \u003d resource.Body(\u0027input\u0027)\n    result \u003d resource.Body(\u0027result\u0027)\n    message \u003d resource.Body(\u0027message\u0027)\n```","commit_id":"0cc67981f3fdf14cc09874f14cb226f924c33b65"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"534cfe833e68e5f36e9a92d011a6a0ee4a67c98d","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    #: Image ID stored through the image API. Typically a UUID."},{"line_number":27,"context_line":"    image_id \u003d resource.URI(\u0027image_id\u0027)"},{"line_number":28,"context_line":"    #: The location metadata."},{"line_number":29,"context_line":"    tasks \u003d resource.Body(\u0027tasks\u0027, type\u003dlist)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3bda7568_5282106d","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":45},"in_reply_to":"8bc7a429_81027254","updated":"2025-05-02 15:54:50.000000000","message":"Done","commit_id":"0cc67981f3fdf14cc09874f14cb226f924c33b65"},{"author":{"_account_id":34510,"name":"Maxim Sava","email":"msava@redhat.com","username":"msava@redhat.com"},"change_message_id":"6f12db81de9436a2a53e090eba4b0576a9cc5e94","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2024 RedHat Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#   Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a50f444_fd0237aa","line":1,"updated":"2025-08-05 09:19:09.000000000","message":"Do we need to define a separate task resource here? It looks like the existing one might already cover this use case\nhttps://opendev.org/openstack/openstacksdk/commit/4417a7e646ec6e76df80d147ac71c235dca39e5a","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"},{"author":{"_account_id":34510,"name":"Maxim Sava","email":"msava@redhat.com","username":"msava@redhat.com"},"change_message_id":"352052dc687e23105f9fde7ef117555a750f80e6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2024 RedHat Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#   Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"3868f952_e5f2af1b","line":1,"in_reply_to":"9a50f444_fd0237aa","updated":"2025-08-05 09:46:35.000000000","message":"Ah ok it\u0027s a different resource with `image_tasks`","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"},{"author":{"_account_id":34510,"name":"Maxim Sava","email":"msava@redhat.com","username":"msava@redhat.com"},"change_message_id":"cc5efb676677b6e5f8bba5d3c8909a333ad37f5e","unresolved":true,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    allow_list \u003d True"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    _max_microversion \u003d \u00272.17\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    type \u003d resource.Body(\u0027type\u0027)"},{"line_number":28,"context_line":"    status \u003d resource.Body(\u0027status\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7bc92df0_e3ae2ffc","line":25,"range":{"start_line":25,"start_character":25,"end_line":25,"end_character":29},"updated":"2025-05-05 07:52:16.000000000","message":"According to API reference show image tasks since `2.12`","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"bbcf7a75500a8197830743def077666d6d699bdf","unresolved":true,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    allow_list \u003d True"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    _max_microversion \u003d \u00272.17\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    type \u003d resource.Body(\u0027type\u0027)"},{"line_number":28,"context_line":"    status \u003d resource.Body(\u0027status\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"a9841661_8dc77c94","line":25,"range":{"start_line":25,"start_character":25,"end_line":25,"end_character":29},"in_reply_to":"7bc92df0_e3ae2ffc","updated":"2025-05-06 11:04:36.000000000","message":"This indicates the latest version of the resource that we are currently aware of/have support for.","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"},{"author":{"_account_id":34510,"name":"Maxim Sava","email":"msava@redhat.com","username":"msava@redhat.com"},"change_message_id":"9cfb65690c5358afcedd9e245c1409ff037a1415","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    allow_list \u003d True"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    _max_microversion \u003d \u00272.17\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    type \u003d resource.Body(\u0027type\u0027)"},{"line_number":28,"context_line":"    status \u003d resource.Body(\u0027status\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5b6d602d_07ab9743","line":25,"range":{"start_line":25,"start_character":25,"end_line":25,"end_character":29},"in_reply_to":"a9841661_8dc77c94","updated":"2025-07-31 12:42:03.000000000","message":"Done","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f7df4d78ee8dd893baa8974ede7eabbc4db97053","unresolved":true,"context_lines":[{"line_number":32,"context_line":"    updated_at \u003d resource.Body(\u0027updated_at\u0027)"},{"line_number":33,"context_line":"    deleted_at \u003d resource.Body(\u0027deleted_at\u0027)"},{"line_number":34,"context_line":"    deleted \u003d resource.Body(\u0027deleted\u0027)"},{"line_number":35,"context_line":"    image_id \u003d resource.Body(\u0027image_id\u0027)"},{"line_number":36,"context_line":"    request_id \u003d resource.Body(\u0027request_id\u0027)"},{"line_number":37,"context_line":"    user_id \u003d resource.Body(\u0027user_id\u0027)"},{"line_number":38,"context_line":"    input \u003d resource.Body(\u0027input\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"f87df813_908ec385","line":35,"updated":"2025-07-31 17:13:11.000000000","message":"`image_id` is a URI field also but it\u0027s not declared here. I would have expected you to have to define an `resource.URI` field earlier in this class and comment this out with a TODO. Are you sure that this code works?","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"b413fb609217e253557522394e1db8bd37e591d1","unresolved":true,"context_lines":[{"line_number":32,"context_line":"    updated_at \u003d resource.Body(\u0027updated_at\u0027)"},{"line_number":33,"context_line":"    deleted_at \u003d resource.Body(\u0027deleted_at\u0027)"},{"line_number":34,"context_line":"    deleted \u003d resource.Body(\u0027deleted\u0027)"},{"line_number":35,"context_line":"    image_id \u003d resource.Body(\u0027image_id\u0027)"},{"line_number":36,"context_line":"    request_id \u003d resource.Body(\u0027request_id\u0027)"},{"line_number":37,"context_line":"    user_id \u003d resource.Body(\u0027user_id\u0027)"},{"line_number":38,"context_line":"    input \u003d resource.Body(\u0027input\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"879d87b7_00b2cfec","line":35,"in_reply_to":"2aa46a65_611e94f7","updated":"2025-08-06 13:13:48.000000000","message":"Can you:\n\n$ pip list | grep openstacksdk\n\nand check it\u0027s indeed the version of the SDK that is patched?","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"fdd90b916fbd555bd40354921d550445183c9f97","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    updated_at \u003d resource.Body(\u0027updated_at\u0027)"},{"line_number":33,"context_line":"    deleted_at \u003d resource.Body(\u0027deleted_at\u0027)"},{"line_number":34,"context_line":"    deleted \u003d resource.Body(\u0027deleted\u0027)"},{"line_number":35,"context_line":"    image_id \u003d resource.Body(\u0027image_id\u0027)"},{"line_number":36,"context_line":"    request_id \u003d resource.Body(\u0027request_id\u0027)"},{"line_number":37,"context_line":"    user_id \u003d resource.Body(\u0027user_id\u0027)"},{"line_number":38,"context_line":"    input \u003d resource.Body(\u0027input\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"d83408cb_9281367f","line":35,"in_reply_to":"879d87b7_00b2cfec","updated":"2025-08-07 15:23:20.000000000","message":"Yeah, the SDK feature looks good. I tested locally since I didn\u0027t believe you 😄\n\n```\n\u003e\u003e\u003e import openstack\n\u003e\u003e\u003e conn \u003d openstack.connect(\u0027devstack-admin\u0027)\n\u003e\u003e\u003e openstack.enable_logging(debug\u003dTrue)\n\u003e\u003e\u003e conn.image.image_tasks(\u00278bd3bebc-8e1b-40fe-a292-1a63a53dcfd9\u0027)\nREQ: curl -g -i -X GET http://10.0.111.148/identity -H \"Accept: application/json\" -H \"User-Agent: openstacksdk/4.6.1 keystoneauth1/5.11.1 python-requests/2.32.3 CPython/3.13.5\"\nRESP: [300] Connection: close Content-Length: 271 Content-Type: application/json Date: Thu, 07 Aug 2025 15:21:06 GMT Location: http://10.0.111.148/identity/v3/ Server: Apache/2.4.58 (Ubuntu) Vary: X-Auth-Token x-openstack-request-id: req-4f392dc2-2c6e-40ac-bd68-f5334f0a12ca\nRESP BODY: {\"versions\": {\"values\": [{\"id\": \"v3.14\", \"status\": \"stable\", \"updated\": \"2020-04-07T00:00:00Z\", \"links\": [{\"rel\": \"self\", \"href\": \"http://10.0.111.148/identity/v3/\"}], \"media-types\": [{\"base\": \"application/json\", \"type\": \"application/vnd.openstack.identity-v3+json\"}]}]}}\nGET call to http://10.0.111.148/identity used request id req-4f392dc2-2c6e-40ac-bd68-f5334f0a12ca\nMaking authentication request to http://10.0.111.148/identity/v3/auth/tokens\n{\"token\": {\"methods\": [\"password\"], \"user\": {\"domain\": {\"id\": \"default\", \"name\": \"Default\"}, \"id\": \"105a84e11f0a421ea814833a5d23f37b\", \"name\": \"admin\", \"password_expires_at\": null}, \"audit_ids\": [\"S3JkZX3oRyiMlGx6dyG9EQ\"], \"expires_at\": \"2025-08-07T16:21:06.000000Z\", \"issued_at\": \"2025-08-07T15:21:06.000000Z\", \"project\": {\"domain\": {\"id\": \"default\", \"name\": \"Default\"}, \"id\": \"d8dea803f1fe44e2bdf9d9d017750b4e\", \"name\": \"admin\"}, \"is_domain\": false, \"roles\": [{\"id\": \"79936f24a8964f9a8f75878e502d5a2b\", \"name\": \"admin\"}, {\"id\": \"7848f3cf51c8476fa074a5cf68b91694\", \"name\": \"reader\"}, {\"id\": \"ef4de288f3b74abd96437e8b62d811a9\", \"name\": \"manager\"}, {\"id\": \"ced94cae1abc4e979befcfd2bef67e1b\", \"name\": \"member\"}], \"catalog\": [{\"endpoints\": [{\"id\": \"3db8b3a2b9ec465dbfcfd0aa3ae85d09\", \"interface\": \"public\", \"region_id\": \"RegionOne\", \"url\": \"http://10.0.111.148/compute/v2/d8dea803f1fe44e2bdf9d9d017750b4e\", \"region\": \"RegionOne\"}], \"id\": \"07c1f9e649074b28be1544aed2031249\", \"type\": \"compute_legacy\", \"name\": \"nova_legacy\"}, {\"endpoints\": [{\"id\": \"adf19c7b82be44b48b0a1e0ee24fd245\", \"interface\": \"public\", \"region_id\": \"RegionOne\", \"url\": \"http://10.0.111.148/image\", \"region\": \"RegionOne\"}], \"id\": \"0ba11f74fa664c55aed58a02694e4d15\", \"type\": \"image\", \"name\": \"glance\"}, {\"endpoints\": [{\"id\": \"986ff45f7e974903998050012d091187\", \"interface\": \"public\", \"region_id\": \"RegionOne\", \"url\": \"http://10.0.111.148/compute/v2.1\", \"region\": \"RegionOne\"}], \"id\": \"1c35d42e73864223a0323b458ef53646\", \"type\": \"compute\", \"name\": \"nova\"}, {\"endpoints\": [{\"id\": \"0d8ce065f2304e65a662091ff16ea263\", \"interface\": \"public\", \"region_id\": \"RegionOne\", \"url\": \"http://10.0.111.148/networking\", \"region\": \"RegionOne\"}], \"id\": \"1d36d3f438b34d4c91586c5280b7afe1\", \"type\": \"network\", \"name\": \"neutron\"}, {\"endpoints\": [{\"id\": \"abdc0beece284944abc5d78136e98d67\", \"interface\": \"public\", \"region_id\": \"RegionOne\", \"url\": \"http://10.0.111.148/placement\", \"region\": \"RegionOne\"}], \"id\": \"5b3bd8e64788437c8512c98e05678162\", \"type\": \"placement\", \"name\": \"placement\"}, {\"endpoints\": [{\"id\": \"0e276422be4a4f0eba7a21372be2e383\", \"interface\": \"public\", \"region_id\": \"RegionOne\", \"url\": \"http://10.0.111.148/volume/v3\", \"region\": \"RegionOne\"}], \"id\": \"9cde74078dd74d658b11649ce6b415ed\", \"type\": \"block-storage\", \"name\": \"cinder\"}, {\"endpoints\": [{\"id\": \"c379c373285241359a96c2485414b53f\", \"interface\": \"public\", \"region_id\": \"RegionOne\", \"url\": \"http://10.0.111.148/identity\", \"region\": \"RegionOne\"}], \"id\": \"e21f137508f14ef48262eaa19b9f4076\", \"type\": \"identity\", \"name\": \"keystone\"}]}}\nREQ: curl -g -i -X GET http://10.0.111.148/image -H \"Accept: application/json\" -H \"User-Agent: openstacksdk/4.6.1 keystoneauth1/5.11.1 python-requests/2.32.3 CPython/3.13.5\"\nRESP: [300] Connection: close Content-Length: 1420 Content-Type: application/json Date: Thu, 07 Aug 2025 15:21:06 GMT Server: Apache/2.4.58 (Ubuntu)\nRESP BODY: {\"versions\": [{\"id\": \"v2.16\", \"status\": \"SUPPORTED\", \"links\": [{\"rel\": \"self\", \"href\": \"http://10.0.111.148/image/v2/\"}]}, {\"id\": \"v2.15\", \"status\": \"SUPPORTED\", \"links\": [{\"rel\": \"self\", \"href\": \"http://10.0.111.148/image/v2/\"}]}, {\"id\": \"v2.14\", \"status\": \"SUPPORTED\", \"links\": [{\"rel\": \"self\", \"href\": \"http://10.0.111.148/image/v2/\"}]}, {\"id\": \"v2.9\", \"status\": \"SUPPORTED\", \"links\": [{\"rel\": \"self\", \"href\": \"http://10.0.111.148/image/v2/\"}]}, {\"id\": \"v2.17\", \"status\": \"CURRENT\", \"links\": [{\"rel\": \"self\", \"href\": \"http://10.0.111.148/image/v2/\"}]}, {\"id\": \"v2.7\", \"status\": \"SUPPORTED\", \"links\": [{\"rel\": \"self\", \"href\": \"http://10.0.111.148/image/v2/\"}]}, {\"id\": \"v2.6\", \"status\": \"SUPPORTED\", \"links\": [{\"rel\": \"self\", \"href\": \"http://10.0.111.148/image/v2/\"}]}, {\"id\": \"v2.5\", \"status\": \"SUPPORTED\", \"links\": [{\"rel\": \"self\", \"href\": \"http://10.0.111.148/image/v2/\"}]}, {\"id\": \"v2.4\", \"status\": \"SUPPORTED\", \"links\": [{\"rel\": \"self\", \"href\": \"http://10.0.111.148/image/v2/\"}]}, {\"id\": \"v2.3\", \"status\": \"SUPPORTED\", \"links\": [{\"rel\": \"self\", \"href\": \"http://10.0.111.148/image/v2/\"}]}, {\"id\": \"v2.2\", \"status\": \"SUPPORTED\", \"links\": [{\"rel\": \"self\", \"href\": \"http://10.0.111.148/image/v2/\"}]}, {\"id\": \"v2.1\", \"status\": \"SUPPORTED\", \"links\": [{\"rel\": \"self\", \"href\": \"http://10.0.111.148/image/v2/\"}]}, {\"id\": \"v2.0\", \"status\": \"SUPPORTED\", \"links\": [{\"rel\": \"self\", \"href\": \"http://10.0.111.148/image/v2/\"}]}]}\n\u003cgenerator object Resource.list at 0x7f6d83eef6a0\u003e\n\u003e\u003e\u003e list(conn.image.image_tasks(\u00278bd3bebc-8e1b-40fe-a292-1a63a53dcfd9\u0027))\nREQ: curl -g -i -X GET http://10.0.111.148/image/v2/images/8bd3bebc-8e1b-40fe-a292-1a63a53dcfd9/tasks -H \"Accept: application/json\" -H \"User-Agent: openstacksdk/4.6.1 keystoneauth1/5.11.1 python-requests/2.32.3 CPython/3.13.5\" -H \"X-Auth-Token: {SHA256}8275aa191f0e0f46ed1144d96666c8144201ad37f63009b5a83cdc1c04415c65\"\nRESP: [200] Connection: close Content-Length: 13 Content-Type: application/json Date: Thu, 07 Aug 2025 15:21:13 GMT Server: Apache/2.4.58 (Ubuntu) x-openstack-request-id: req-8ca4e0af-3bb7-4336-8739-48e86674f2ea\nRESP BODY: {\"tasks\": []}\nGET call to image for http://10.0.111.148/image/v2/images/8bd3bebc-8e1b-40fe-a292-1a63a53dcfd9/tasks used request id req-8ca4e0af-3bb7-4336-8739-48e86674f2ea\n[]\n```","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"},{"author":{"_account_id":34510,"name":"Maxim Sava","email":"msava@redhat.com","username":"msava@redhat.com"},"change_message_id":"390c7e8057f9d476b8ad93ef54e3836c5058a3b5","unresolved":true,"context_lines":[{"line_number":32,"context_line":"    updated_at \u003d resource.Body(\u0027updated_at\u0027)"},{"line_number":33,"context_line":"    deleted_at \u003d resource.Body(\u0027deleted_at\u0027)"},{"line_number":34,"context_line":"    deleted \u003d resource.Body(\u0027deleted\u0027)"},{"line_number":35,"context_line":"    image_id \u003d resource.Body(\u0027image_id\u0027)"},{"line_number":36,"context_line":"    request_id \u003d resource.Body(\u0027request_id\u0027)"},{"line_number":37,"context_line":"    user_id \u003d resource.Body(\u0027user_id\u0027)"},{"line_number":38,"context_line":"    input \u003d resource.Body(\u0027input\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"2aa46a65_611e94f7","line":35,"in_reply_to":"dd006736_8c1d7e24","updated":"2025-08-06 05:02:54.000000000","message":"Interesting.\nIn my devstack env with patches as in `https://review.opendev.org/c/openstack/python-openstackclient/+/927242`:\nstack@devstack:~$ glance image-list\n+--------------------------------------+--------------------------+\n| ID                                   | Name                     |\n+--------------------------------------+--------------------------+\n| 842f681b-4d46-4a24-a6d9-a5fde478c850 | cirros-0.6.3-x86_64-disk |\n+--------------------------------------+--------------------------+\nstack@devstack:~$ openstack image tasks -f json cirros-0.6.3-x86_64-disk\n\u0027Proxy\u0027 object has no attribute \u0027image_tasks\u0027","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"03f3120c1cc44082052cb5ceddc1fdfa67fdd803","unresolved":true,"context_lines":[{"line_number":32,"context_line":"    updated_at \u003d resource.Body(\u0027updated_at\u0027)"},{"line_number":33,"context_line":"    deleted_at \u003d resource.Body(\u0027deleted_at\u0027)"},{"line_number":34,"context_line":"    deleted \u003d resource.Body(\u0027deleted\u0027)"},{"line_number":35,"context_line":"    image_id \u003d resource.Body(\u0027image_id\u0027)"},{"line_number":36,"context_line":"    request_id \u003d resource.Body(\u0027request_id\u0027)"},{"line_number":37,"context_line":"    user_id \u003d resource.Body(\u0027user_id\u0027)"},{"line_number":38,"context_line":"    input \u003d resource.Body(\u0027input\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dd006736_8c1d7e24","line":35,"in_reply_to":"f87df813_908ec385","updated":"2025-08-05 16:14:51.000000000","message":"On devstack:\n\n$ openstack image tasks -f json  cirros-0.6.3-x86_64-disk\n[\n  {\n    \"ID\": \"8525b254-b9bd-460c-abbd-b0aceb3bb14a\",\n    \"Message\": \"Input does not contain \u0027import_from\u0027 field\",\n    \"Status\": \"failure\",\n    \"Updated at\": \"2025-08-05T14:57:35.000000\"\n  },\n  {\n    \"ID\": \"ad6d372d-179f-4d13-a66d-9aa39816172b\",\n    \"Message\": \"Input does not contain \u0027import_from\u0027 field\",\n    \"Status\": \"failure\",\n    \"Updated at\": \"2025-08-05T14:14:14.000000\"\n  }\n]\n\nI can also edit the client code to return the image_id:\n\n$ openstack image tasks -f json  cirros-0.6.3-x86_64-disk\n[\n  {\n    \"ID\": \"8525b254-b9bd-460c-abbd-b0aceb3bb14a\",\n    \"Message\": \"Input does not contain \u0027import_from\u0027 field\",\n    \"Status\": \"failure\",\n    \"Updated at\": \"2025-08-05T14:57:35.000000\",\n    \"image_id\": \"f2f8854a-25f5-40c0-a329-f5d094cb4b4e\"\n  },\n  {\n    \"ID\": \"ad6d372d-179f-4d13-a66d-9aa39816172b\",\n    \"Message\": \"Input does not contain \u0027import_from\u0027 field\",\n    \"Status\": \"failure\",\n    \"Updated at\": \"2025-08-05T14:14:14.000000\",\n    \"image_id\": \"f2f8854a-25f5-40c0-a329-f5d094cb4b4e\"\n  }\n]","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f7df4d78ee8dd893baa8974ede7eabbc4db97053","unresolved":true,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    _max_microversion \u003d \u00272.17\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    type \u003d resource.Body(\u0027type\u0027)"},{"line_number":28,"context_line":"    status \u003d resource.Body(\u0027status\u0027)"},{"line_number":29,"context_line":"    owner \u003d resource.Body(\u0027owner\u0027)"},{"line_number":30,"context_line":"    expires_at \u003d resource.Body(\u0027expires_at\u0027)"},{"line_number":31,"context_line":"    created_at \u003d resource.Body(\u0027created_at\u0027)"},{"line_number":32,"context_line":"    updated_at \u003d resource.Body(\u0027updated_at\u0027)"},{"line_number":33,"context_line":"    deleted_at \u003d resource.Body(\u0027deleted_at\u0027)"},{"line_number":34,"context_line":"    deleted \u003d resource.Body(\u0027deleted\u0027)"},{"line_number":35,"context_line":"    image_id \u003d resource.Body(\u0027image_id\u0027)"},{"line_number":36,"context_line":"    request_id \u003d resource.Body(\u0027request_id\u0027)"},{"line_number":37,"context_line":"    user_id \u003d resource.Body(\u0027user_id\u0027)"},{"line_number":38,"context_line":"    input \u003d resource.Body(\u0027input\u0027)"},{"line_number":39,"context_line":"    result \u003d resource.Body(\u0027result\u0027)"},{"line_number":40,"context_line":"    message \u003d resource.Body(\u0027message\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bee96719_e591237d","line":40,"range":{"start_line":27,"start_character":0,"end_line":40,"end_character":38},"updated":"2025-07-31 17:13:11.000000000","message":"We could do with documentation for each of these properties. You can mostly copy-paste what\u0027s in the Glance api-ref.","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"03f3120c1cc44082052cb5ceddc1fdfa67fdd803","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    _max_microversion \u003d \u00272.17\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    type \u003d resource.Body(\u0027type\u0027)"},{"line_number":28,"context_line":"    status \u003d resource.Body(\u0027status\u0027)"},{"line_number":29,"context_line":"    owner \u003d resource.Body(\u0027owner\u0027)"},{"line_number":30,"context_line":"    expires_at \u003d resource.Body(\u0027expires_at\u0027)"},{"line_number":31,"context_line":"    created_at \u003d resource.Body(\u0027created_at\u0027)"},{"line_number":32,"context_line":"    updated_at \u003d resource.Body(\u0027updated_at\u0027)"},{"line_number":33,"context_line":"    deleted_at \u003d resource.Body(\u0027deleted_at\u0027)"},{"line_number":34,"context_line":"    deleted \u003d resource.Body(\u0027deleted\u0027)"},{"line_number":35,"context_line":"    image_id \u003d resource.Body(\u0027image_id\u0027)"},{"line_number":36,"context_line":"    request_id \u003d resource.Body(\u0027request_id\u0027)"},{"line_number":37,"context_line":"    user_id \u003d resource.Body(\u0027user_id\u0027)"},{"line_number":38,"context_line":"    input \u003d resource.Body(\u0027input\u0027)"},{"line_number":39,"context_line":"    result \u003d resource.Body(\u0027result\u0027)"},{"line_number":40,"context_line":"    message \u003d resource.Body(\u0027message\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"973e1a0d_65f64fda","line":40,"range":{"start_line":27,"start_character":0,"end_line":40,"end_character":38},"in_reply_to":"bee96719_e591237d","updated":"2025-08-05 16:14:51.000000000","message":"Done","commit_id":"6a67c873d5a22bbb39d494d1a49b590f939d3de2"}],"openstack/tests/unit/image/v2/test_image_tasks.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"21db9e1b8ab75b1fb1ce15dfc7df0c7bb492f707","unresolved":true,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from openstack.image.v2 import image_tasks"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"EXAMPLE \u003d {"},{"line_number":20,"context_line":"    \u0027tasks\u0027: ["},{"line_number":21,"context_line":"        {"},{"line_number":22,"context_line":"            \u0027id\u0027: \u002756ab5f98-2bb7-44c7-bc05-52bde37eb53b\u0027,"},{"line_number":23,"context_line":"            \u0027type\u0027: \u0027import\u0027,"},{"line_number":24,"context_line":"            \u0027status\u0027: \u0027failure\u0027,"},{"line_number":25,"context_line":"            \u0027owner\u0027: \u00272858d31bc5f54f4db66e53ab905ef566\u0027,"},{"line_number":26,"context_line":"            \u0027expires_at\u0027: \u00272024-10-10T09:28:58.000000\u0027,"},{"line_number":27,"context_line":"            \u0027created_at\u0027: \u00272024-10-08T09:28:58.000000\u0027,"},{"line_number":28,"context_line":"            \u0027updated_at\u0027: \u00272024-10-08T09:28:58.000000\u0027,"},{"line_number":29,"context_line":"            \u0027deleted_at\u0027: None,"},{"line_number":30,"context_line":"            \u0027deleted\u0027: False,"},{"line_number":31,"context_line":"            \u0027image_id\u0027: \u002756a39162-730d-401c-8a77-11bc078cf3e2\u0027,"},{"line_number":32,"context_line":"            \u0027request_id\u0027: \u0027req-7d2f073c-f6f8-4807-9fdb-5ce6b10c65c5\u0027,"},{"line_number":33,"context_line":"            \u0027user_id\u0027: \u0027dec9b6d341ec481abddf1027576c2d60\u0027,"},{"line_number":34,"context_line":"            \u0027input\u0027: {\u0027image_id\u0027: \u002756a39162-730d-401c-8a77-11bc078cf3e2\u0027},"},{"line_number":35,"context_line":"            \u0027result\u0027: None,"},{"line_number":36,"context_line":"            \u0027message\u0027: \"Input does not contain \u0027import_from\u0027 field\","},{"line_number":37,"context_line":"        }"},{"line_number":38,"context_line":"    ]"},{"line_number":39,"context_line":"}"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class TestImageTasks(testtools.TestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f8b36b1_b5ca75ae","line":39,"range":{"start_line":19,"start_character":0,"end_line":39,"end_character":1},"updated":"2025-04-08 11:00:12.000000000","message":"```suggestion\nEXAMPLE \u003d {\n    \u0027id\u0027: \u002756ab5f98-2bb7-44c7-bc05-52bde37eb53b\u0027,\n    \u0027type\u0027: \u0027import\u0027,\n    \u0027status\u0027: \u0027failure\u0027,\n    \u0027owner\u0027: \u00272858d31bc5f54f4db66e53ab905ef566\u0027,\n    \u0027expires_at\u0027: \u00272024-10-10T09:28:58.000000\u0027,\n    \u0027created_at\u0027: \u00272024-10-08T09:28:58.000000\u0027,\n    \u0027updated_at\u0027: \u00272024-10-08T09:28:58.000000\u0027,\n    \u0027deleted_at\u0027: None,\n    \u0027deleted\u0027: False,\n    \u0027image_id\u0027: \u002756a39162-730d-401c-8a77-11bc078cf3e2\u0027,\n    \u0027request_id\u0027: \u0027req-7d2f073c-f6f8-4807-9fdb-5ce6b10c65c5\u0027,\n    \u0027user_id\u0027: \u0027dec9b6d341ec481abddf1027576c2d60\u0027,\n    \u0027input\u0027: {\u0027image_id\u0027: \u002756a39162-730d-401c-8a77-11bc078cf3e2\u0027},\n    \u0027result\u0027: None,\n    \u0027message\u0027: \"Input does not contain \u0027import_from\u0027 field\",\n}\n```","commit_id":"0cc67981f3fdf14cc09874f14cb226f924c33b65"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"534cfe833e68e5f36e9a92d011a6a0ee4a67c98d","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from openstack.image.v2 import image_tasks"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"EXAMPLE \u003d {"},{"line_number":20,"context_line":"    \u0027tasks\u0027: ["},{"line_number":21,"context_line":"        {"},{"line_number":22,"context_line":"            \u0027id\u0027: \u002756ab5f98-2bb7-44c7-bc05-52bde37eb53b\u0027,"},{"line_number":23,"context_line":"            \u0027type\u0027: \u0027import\u0027,"},{"line_number":24,"context_line":"            \u0027status\u0027: \u0027failure\u0027,"},{"line_number":25,"context_line":"            \u0027owner\u0027: \u00272858d31bc5f54f4db66e53ab905ef566\u0027,"},{"line_number":26,"context_line":"            \u0027expires_at\u0027: \u00272024-10-10T09:28:58.000000\u0027,"},{"line_number":27,"context_line":"            \u0027created_at\u0027: \u00272024-10-08T09:28:58.000000\u0027,"},{"line_number":28,"context_line":"            \u0027updated_at\u0027: \u00272024-10-08T09:28:58.000000\u0027,"},{"line_number":29,"context_line":"            \u0027deleted_at\u0027: None,"},{"line_number":30,"context_line":"            \u0027deleted\u0027: False,"},{"line_number":31,"context_line":"            \u0027image_id\u0027: \u002756a39162-730d-401c-8a77-11bc078cf3e2\u0027,"},{"line_number":32,"context_line":"            \u0027request_id\u0027: \u0027req-7d2f073c-f6f8-4807-9fdb-5ce6b10c65c5\u0027,"},{"line_number":33,"context_line":"            \u0027user_id\u0027: \u0027dec9b6d341ec481abddf1027576c2d60\u0027,"},{"line_number":34,"context_line":"            \u0027input\u0027: {\u0027image_id\u0027: \u002756a39162-730d-401c-8a77-11bc078cf3e2\u0027},"},{"line_number":35,"context_line":"            \u0027result\u0027: None,"},{"line_number":36,"context_line":"            \u0027message\u0027: \"Input does not contain \u0027import_from\u0027 field\","},{"line_number":37,"context_line":"        }"},{"line_number":38,"context_line":"    ]"},{"line_number":39,"context_line":"}"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class TestImageTasks(testtools.TestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"2b1b3de1_49d98354","line":39,"range":{"start_line":19,"start_character":0,"end_line":39,"end_character":1},"in_reply_to":"5f8b36b1_b5ca75ae","updated":"2025-05-02 15:54:50.000000000","message":"Done","commit_id":"0cc67981f3fdf14cc09874f14cb226f924c33b65"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"21db9e1b8ab75b1fb1ce15dfc7df0c7bb492f707","unresolved":true,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def test_make_it(self):"},{"line_number":49,"context_line":"        sot \u003d image_tasks.ImageTasks(**EXAMPLE)"},{"line_number":50,"context_line":"        self.assertEqual(EXAMPLE[\u0027tasks\u0027], sot.tasks)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5b6c89eb_745700eb","line":50,"updated":"2025-04-08 11:00:12.000000000","message":"```suggestion\n        self.assertEqual(EXAMPLE[\u0027id\u0027], sot.id)\n        self.assertEqual(EXAMPLE[\u0027type\u0027], sot.type)\n        self.assertEqual(EXAMPLE[\u0027status\u0027], sot.status)\n        self.assertEqual(EXAMPLE[\u0027owner\u0027], sot.owner)\n        self.assertEqual(EXAMPLE[\u0027expires_at\u0027], sot.expires_at)\n        self.assertEqual(EXAMPLE[\u0027created_at\u0027], sot.created_at)\n        self.assertEqual(EXAMPLE[\u0027updated_at\u0027], sot.updated_at)\n        self.assertEqual(EXAMPLE[\u0027deleted_at\u0027], sot.deleted_at)\n        self.assertEqual(EXAMPLE[\u0027deleted\u0027], sot.deleted)\n        self.assertEqual(EXAMPLE[\u0027image_id\u0027], sot.image_id)\n        self.assertEqual(EXAMPLE[\u0027request_id\u0027], sot.request_id)\n        self.assertEqual(EXAMPLE[\u0027user_id\u0027], sot.user_id)\n        self.assertEqual(EXAMPLE[\u0027input\u0027], sot.input)\n        self.assertEqual(EXAMPLE[\u0027result\u0027], sot.result)\n        self.assertEqual(EXAMPLE[\u0027message\u0027], sot.message)\n```","commit_id":"0cc67981f3fdf14cc09874f14cb226f924c33b65"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"534cfe833e68e5f36e9a92d011a6a0ee4a67c98d","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def test_make_it(self):"},{"line_number":49,"context_line":"        sot \u003d image_tasks.ImageTasks(**EXAMPLE)"},{"line_number":50,"context_line":"        self.assertEqual(EXAMPLE[\u0027tasks\u0027], sot.tasks)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1eb9aebc_5f34ca08","line":50,"in_reply_to":"5b6c89eb_745700eb","updated":"2025-05-02 15:54:50.000000000","message":"Done","commit_id":"0cc67981f3fdf14cc09874f14cb226f924c33b65"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"534cfe833e68e5f36e9a92d011a6a0ee4a67c98d","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def test_make_it(self):"},{"line_number":49,"context_line":"        sot \u003d image_tasks.ImageTasks(**EXAMPLE)"},{"line_number":50,"context_line":"        self.assertEqual(EXAMPLE[\u0027tasks\u0027], sot.tasks)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ce82b116_0094372b","line":50,"in_reply_to":"5b6c89eb_745700eb","updated":"2025-05-02 15:54:50.000000000","message":"Done","commit_id":"0cc67981f3fdf14cc09874f14cb226f924c33b65"}],"openstack/tests/unit/image/v2/test_proxy.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"21db9e1b8ab75b1fb1ce15dfc7df0c7bb492f707","unresolved":true,"context_lines":[{"line_number":581,"context_line":"            expected_args\u003d[self.proxy],"},{"line_number":582,"context_line":"        )"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"    def test_get_image_tasks(self):"},{"line_number":585,"context_line":"        self._verify("},{"line_number":586,"context_line":"            \"openstack.proxy.Proxy._get\","},{"line_number":587,"context_line":"            self.proxy.get_image_tasks,"},{"line_number":588,"context_line":"            method_args\u003d[\"image\"],"},{"line_number":589,"context_line":"            expected_args\u003d[_image_tasks.ImageTasks],"},{"line_number":590,"context_line":"            expected_kwargs\u003d{"},{"line_number":591,"context_line":"                \u0027image_id\u0027: \u0027image\u0027,"},{"line_number":592,"context_line":"                \u0027requires_id\u0027: False,"},{"line_number":593,"context_line":"            },"},{"line_number":594,"context_line":"        )"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":""},{"line_number":597,"context_line":"class TestMember(TestImageProxy):"}],"source_content_type":"text/x-python","patch_set":3,"id":"58142c80_d9f7b1a6","line":594,"range":{"start_line":584,"start_character":0,"end_line":594,"end_character":9},"updated":"2025-04-08 11:00:12.000000000","message":"```suggestion\n    def test_image_tasks(self):\n        self.verify_list(\n            self.proxy.image_tasks,\n            _image_tasks.ImageTask,\n            method_kwargs\u003d{\u0027image\u0027: \u0027image_1\u0027},\n            expected_kwargs\u003d{\u0027image_id\u0027: \u0027image_1\u0027},\n        )\n```","commit_id":"0cc67981f3fdf14cc09874f14cb226f924c33b65"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"534cfe833e68e5f36e9a92d011a6a0ee4a67c98d","unresolved":false,"context_lines":[{"line_number":581,"context_line":"            expected_args\u003d[self.proxy],"},{"line_number":582,"context_line":"        )"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"    def test_get_image_tasks(self):"},{"line_number":585,"context_line":"        self._verify("},{"line_number":586,"context_line":"            \"openstack.proxy.Proxy._get\","},{"line_number":587,"context_line":"            self.proxy.get_image_tasks,"},{"line_number":588,"context_line":"            method_args\u003d[\"image\"],"},{"line_number":589,"context_line":"            expected_args\u003d[_image_tasks.ImageTasks],"},{"line_number":590,"context_line":"            expected_kwargs\u003d{"},{"line_number":591,"context_line":"                \u0027image_id\u0027: \u0027image\u0027,"},{"line_number":592,"context_line":"                \u0027requires_id\u0027: False,"},{"line_number":593,"context_line":"            },"},{"line_number":594,"context_line":"        )"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":""},{"line_number":597,"context_line":"class TestMember(TestImageProxy):"}],"source_content_type":"text/x-python","patch_set":3,"id":"65869ec0_7d3498ff","line":594,"range":{"start_line":584,"start_character":0,"end_line":594,"end_character":9},"in_reply_to":"58142c80_d9f7b1a6","updated":"2025-05-02 15:54:50.000000000","message":"Done","commit_id":"0cc67981f3fdf14cc09874f14cb226f924c33b65"}]}
