)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"04f387fe4eb5019453a6ec6bd2f30cdf7c75f764","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"981fad9d_b2b2165f","updated":"2024-09-03 00:36:57.000000000","message":"Minor issues, thanks for the patch!","commit_id":"d44b174747b5aad3dca6d99538616b94d9425e97"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"86546d3c5d9fed0e471b70edc524d9bd53a7cb38","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7513fec5_24754edf","updated":"2025-03-19 07:23:13.000000000","message":"recheck","commit_id":"baa25af2c6ed78fbbac8d5acb7db29b0ef4255ed"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"55447729a0012bfa99469349e5e0a1f85b895d62","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d04ef797_2f31e184","updated":"2025-07-28 14:35:13.000000000","message":"Rebase incoming","commit_id":"6478ca5cfa135a600ae034b5a4e7f61e461c7c0f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cb7446a6f2e939ea0cc8030cbfd9377f95512e9d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"dcfceeb7_01c97c65","updated":"2025-08-07 15:31:07.000000000","message":"Couple of points, but my main comment is [this one](https://review.opendev.org/c/openstack/python-openstackclient/+/927242/comment/3cb60d4e_a1a922e7/): can we nestle this under the existing `image task list` command (with an `--image` option) instead?","commit_id":"13f794d7f119187e6e7971647d7e4dd12960c5c9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"99c235603824b0ff0670a8a542a43f74dfc3a217","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"be829aa2_77aea714","updated":"2025-08-15 12:43:23.000000000","message":"I experimented with this more today (notes [here](https://that.guru/blog/glance-tasks-api/)). I don\u0027t think we should proceed further with this. The tasks API is deprecated for removal and all of the information that this API exposes is already available from the tasks API and equivalent commands. I appreciate that time and effort has been put into this, but it\u0027s a lot of code to maintain ad infinitum and I\u0027m doubtful anyone will ever use it. We\u0027d be better off marking this as WONTFIX and moving on with our lives. Feel free to let me know if you disagree, of course, but I\u0027m going to abandon this until then.","commit_id":"13f794d7f119187e6e7971647d7e4dd12960c5c9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2a5f9b39f3968c3519c330780f685c2c6d0f3cde","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"88208af8_c31d9777","in_reply_to":"be829aa2_77aea714","updated":"2025-08-15 12:46:22.000000000","message":"And as soon as I typed that, I see this is a relatively recent API. Out of curiosity, is this envisioned to replace the `/tasks` API entirely? If so, I think my earlier idea of folding this into the `image task list` API, but we might want to add an `\u003cimage_id\u003e` argument that we will eventually make mandatory?","commit_id":"13f794d7f119187e6e7971647d7e4dd12960c5c9"}],"doc/source/cli/data/glance.csv":[{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"04f387fe4eb5019453a6ec6bd2f30cdf7c75f764","unresolved":true,"context_lines":[{"line_number":15,"context_line":"image-stage,image stage,Upload data for a specific image to staging."},{"line_number":16,"context_line":"image-tag-delete,image unset --tag \u003ctag\u003e,Delete the tag associated with the given image."},{"line_number":17,"context_line":"image-tag-update,image set --tag \u003ctag\u003e,Update an image with the given tag."},{"line_number":18,"context_line":"image-tasks,image associated tasks,Get tasks associated with image."},{"line_number":19,"context_line":"image-update,image set,Update an existing image."},{"line_number":20,"context_line":"image-upload,,Upload data for a specific image."},{"line_number":21,"context_line":"import-info,image import info,Show available import methods from Glance."}],"source_content_type":"application/octet-stream","patch_set":1,"id":"8da9fa2c_41088f98","line":18,"range":{"start_line":18,"start_character":18,"end_line":18,"end_character":28},"updated":"2024-09-03 00:36:57.000000000","message":"Was this discussed ahead of this patch? The command name is a bit strange. Why not \"image tasks\"?","commit_id":"d44b174747b5aad3dca6d99538616b94d9425e97"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"8cb0de3cc02ad9f2d6e73343d10e440226bbcb13","unresolved":false,"context_lines":[{"line_number":15,"context_line":"image-stage,image stage,Upload data for a specific image to staging."},{"line_number":16,"context_line":"image-tag-delete,image unset --tag \u003ctag\u003e,Delete the tag associated with the given image."},{"line_number":17,"context_line":"image-tag-update,image set --tag \u003ctag\u003e,Update an image with the given tag."},{"line_number":18,"context_line":"image-tasks,image associated tasks,Get tasks associated with image."},{"line_number":19,"context_line":"image-update,image set,Update an existing image."},{"line_number":20,"context_line":"image-upload,,Upload data for a specific image."},{"line_number":21,"context_line":"import-info,image import info,Show available import methods from Glance."}],"source_content_type":"application/octet-stream","patch_set":1,"id":"bd3901f1_7afaeb4f","line":18,"range":{"start_line":18,"start_character":18,"end_line":18,"end_character":28},"in_reply_to":"8da9fa2c_41088f98","updated":"2024-10-16 14:40:08.000000000","message":"Done","commit_id":"d44b174747b5aad3dca6d99538616b94d9425e97"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"668600cedadced18a7ace71192f3bb2d9c6ac49a","unresolved":true,"context_lines":[{"line_number":15,"context_line":"image-stage,image stage,Upload data for a specific image to staging."},{"line_number":16,"context_line":"image-tag-delete,image unset --tag \u003ctag\u003e,Delete the tag associated with the given image."},{"line_number":17,"context_line":"image-tag-update,image set --tag \u003ctag\u003e,Update an image with the given tag."},{"line_number":18,"context_line":"image-tasks,image associated tasks,Get tasks associated with image."},{"line_number":19,"context_line":"image-update,image set,Update an existing image."},{"line_number":20,"context_line":"image-upload,,Upload data for a specific image."},{"line_number":21,"context_line":"import-info,image import info,Show available import methods from Glance."}],"source_content_type":"application/octet-stream","patch_set":2,"id":"2ff9ba55_83be4409","line":18,"range":{"start_line":18,"start_character":18,"end_line":18,"end_character":28},"updated":"2025-03-26 15:43:54.000000000","message":"Looking at setup.cfg, isn\u0027t the command juste \"image tasks\"?","commit_id":"baa25af2c6ed78fbbac8d5acb7db29b0ef4255ed"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"55447729a0012bfa99469349e5e0a1f85b895d62","unresolved":false,"context_lines":[{"line_number":15,"context_line":"image-stage,image stage,Upload data for a specific image to staging."},{"line_number":16,"context_line":"image-tag-delete,image unset --tag \u003ctag\u003e,Delete the tag associated with the given image."},{"line_number":17,"context_line":"image-tag-update,image set --tag \u003ctag\u003e,Update an image with the given tag."},{"line_number":18,"context_line":"image-tasks,image associated tasks,Get tasks associated with image."},{"line_number":19,"context_line":"image-update,image set,Update an existing image."},{"line_number":20,"context_line":"image-upload,,Upload data for a specific image."},{"line_number":21,"context_line":"import-info,image import info,Show available import methods from Glance."}],"source_content_type":"application/octet-stream","patch_set":2,"id":"0bf12487_c11885a7","line":18,"range":{"start_line":18,"start_character":18,"end_line":18,"end_character":28},"in_reply_to":"2ff9ba55_83be4409","updated":"2025-07-28 14:35:13.000000000","message":"Done","commit_id":"baa25af2c6ed78fbbac8d5acb7db29b0ef4255ed"}],"openstackclient/image/v2/image.py":[{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"668600cedadced18a7ace71192f3bb2d9c6ac49a","unresolved":true,"context_lines":[{"line_number":1896,"context_line":"        parser.add_argument("},{"line_number":1897,"context_line":"            \"image\","},{"line_number":1898,"context_line":"            metavar\u003d\"\u003cimage\u003e\","},{"line_number":1899,"context_line":"            help\u003d_(\"Image (name or ID)\"),"},{"line_number":1900,"context_line":"        )"},{"line_number":1901,"context_line":"        return parser"},{"line_number":1902,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"8ac0e1ea_00a20848","line":1899,"range":{"start_line":1899,"start_character":20,"end_line":1899,"end_character":25},"updated":"2025-03-26 15:43:54.000000000","message":"Do we want required\u003dTrue here?","commit_id":"baa25af2c6ed78fbbac8d5acb7db29b0ef4255ed"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"55447729a0012bfa99469349e5e0a1f85b895d62","unresolved":false,"context_lines":[{"line_number":1896,"context_line":"        parser.add_argument("},{"line_number":1897,"context_line":"            \"image\","},{"line_number":1898,"context_line":"            metavar\u003d\"\u003cimage\u003e\","},{"line_number":1899,"context_line":"            help\u003d_(\"Image (name or ID)\"),"},{"line_number":1900,"context_line":"        )"},{"line_number":1901,"context_line":"        return parser"},{"line_number":1902,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"8d6c8b78_cfdd07fa","line":1899,"range":{"start_line":1899,"start_character":20,"end_line":1899,"end_character":25},"in_reply_to":"8ac0e1ea_00a20848","updated":"2025-07-28 14:35:13.000000000","message":"Nope, this is a positional argument :) Past me made a mistake.","commit_id":"baa25af2c6ed78fbbac8d5acb7db29b0ef4255ed"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cb7446a6f2e939ea0cc8030cbfd9377f95512e9d","unresolved":true,"context_lines":[{"line_number":1890,"context_line":"            )"},{"line_number":1891,"context_line":""},{"line_number":1892,"context_line":""},{"line_number":1893,"context_line":"class ListImageAssociatedTasks(command.Lister):"},{"line_number":1894,"context_line":"    _description \u003d _(\"List tasks associated with image\")"},{"line_number":1895,"context_line":""},{"line_number":1896,"context_line":"    def get_parser(self, prog_name):"},{"line_number":1897,"context_line":"        parser \u003d super().get_parser(prog_name)"},{"line_number":1898,"context_line":"        parser.add_argument("},{"line_number":1899,"context_line":"            \"image\","},{"line_number":1900,"context_line":"            metavar\u003d\"\u003cimage\u003e\","},{"line_number":1901,"context_line":"            help\u003d_(\"Image (name or ID)\"),"},{"line_number":1902,"context_line":"        )"},{"line_number":1903,"context_line":"        return parser"},{"line_number":1904,"context_line":""},{"line_number":1905,"context_line":"    def take_action(self, parsed_args):"},{"line_number":1906,"context_line":"        image_client \u003d self.app.client_manager.image"},{"line_number":1907,"context_line":"        columns \u003d [\u0027id\u0027, \u0027message\u0027, \u0027status\u0027, \u0027updated_at\u0027]"},{"line_number":1908,"context_line":"        column_headers \u003d [\"ID\", \"Message\", \"Status\", \"Updated at\"]"},{"line_number":1909,"context_line":""},{"line_number":1910,"context_line":"        image_id \u003d image_client.find_image("},{"line_number":1911,"context_line":"            parsed_args.image,"},{"line_number":1912,"context_line":"            ignore_missing\u003dFalse,"},{"line_number":1913,"context_line":"        ).id"},{"line_number":1914,"context_line":""},{"line_number":1915,"context_line":"        tasks \u003d image_client.image_tasks(image\u003dimage_id)"},{"line_number":1916,"context_line":""},{"line_number":1917,"context_line":"        return ("},{"line_number":1918,"context_line":"            column_headers,"},{"line_number":1919,"context_line":"            ("},{"line_number":1920,"context_line":"                utils.get_dict_properties("},{"line_number":1921,"context_line":"                    task,"},{"line_number":1922,"context_line":"                    columns,"},{"line_number":1923,"context_line":"                )"},{"line_number":1924,"context_line":"                for task in tasks"},{"line_number":1925,"context_line":"            ),"},{"line_number":1926,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":6,"id":"e212a3c2_c03e466f","line":1926,"range":{"start_line":1893,"start_character":47,"end_line":1926,"end_character":9},"updated":"2025-08-07 15:31:07.000000000","message":"Can you move this to a new file, `image_task.py`, please? Please move the tests also.","commit_id":"13f794d7f119187e6e7971647d7e4dd12960c5c9"}],"openstackclient/tests/unit/image/v2/fakes.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cb7446a6f2e939ea0cc8030cbfd9377f95512e9d","unresolved":true,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    image_task_info.update(attrs)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    return _image_tasks.ImageTasks(**image_task_info)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"def create_one_import_info(attrs\u003dNone):"}],"source_content_type":"text/x-python","patch_set":6,"id":"70b16e82_5cf69899","line":150,"updated":"2025-08-07 15:31:07.000000000","message":"nit: you shouldn\u0027t need this since you can use the fake generator from `opestack.test.fakes`","commit_id":"13f794d7f119187e6e7971647d7e4dd12960c5c9"}],"openstackclient/tests/unit/image/v2/test_image.py":[{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"04f387fe4eb5019453a6ec6bd2f30cdf7c75f764","unresolved":true,"context_lines":[{"line_number":2238,"context_line":"        super().setUp()"},{"line_number":2239,"context_line":""},{"line_number":2240,"context_line":"        self.image_client.find_image.return_value \u003d self.image"},{"line_number":2241,"context_line":"        self.image_client.get_image_tasks.return_value \u003d self.image"},{"line_number":2242,"context_line":"        self.cmd \u003d _image.ListImageAssociatedTasks(self.app, None)"},{"line_number":2243,"context_line":""},{"line_number":2244,"context_line":"    def test_image_associated_tasks(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"c5d6653d_6415a1ce","line":2241,"range":{"start_line":2241,"start_character":57,"end_line":2241,"end_character":67},"updated":"2024-09-03 00:36:57.000000000","message":"Isn\u0027t it a bit weird that get_image_task returns self.image? Shouldn\u0027t it rather return a fake task, or mock.Mock()?","commit_id":"d44b174747b5aad3dca6d99538616b94d9425e97"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"8cb0de3cc02ad9f2d6e73343d10e440226bbcb13","unresolved":false,"context_lines":[{"line_number":2238,"context_line":"        super().setUp()"},{"line_number":2239,"context_line":""},{"line_number":2240,"context_line":"        self.image_client.find_image.return_value \u003d self.image"},{"line_number":2241,"context_line":"        self.image_client.get_image_tasks.return_value \u003d self.image"},{"line_number":2242,"context_line":"        self.cmd \u003d _image.ListImageAssociatedTasks(self.app, None)"},{"line_number":2243,"context_line":""},{"line_number":2244,"context_line":"    def test_image_associated_tasks(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"e7f90bea_45bd88ed","line":2241,"range":{"start_line":2241,"start_character":57,"end_line":2241,"end_character":67},"in_reply_to":"c5d6653d_6415a1ce","updated":"2024-10-16 14:40:08.000000000","message":"Done","commit_id":"d44b174747b5aad3dca6d99538616b94d9425e97"},{"author":{"_account_id":34510,"name":"Maxim Sava","email":"msava@redhat.com","username":"msava@redhat.com"},"change_message_id":"a1d0d9d04161f425049b77fd43ba5fedd18a10ea","unresolved":true,"context_lines":[{"line_number":2218,"context_line":"        )"},{"line_number":2219,"context_line":""},{"line_number":2220,"context_line":""},{"line_number":2221,"context_line":"class TestImageAssociatedTasks(TestImage):"},{"line_number":2222,"context_line":"    image \u003d image_fakes.create_one_image()"},{"line_number":2223,"context_line":"    image_tasks \u003d image_fakes.create_one_image_task()"},{"line_number":2224,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"36269f25_ef156903","line":2221,"updated":"2025-05-26 18:18:18.000000000","message":"I think we should follow same openstackclient naming patterns as \n`Resource + Action`\nEx. `TestImageTasks`","commit_id":"6478ca5cfa135a600ae034b5a4e7f61e461c7c0f"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"55447729a0012bfa99469349e5e0a1f85b895d62","unresolved":false,"context_lines":[{"line_number":2218,"context_line":"        )"},{"line_number":2219,"context_line":""},{"line_number":2220,"context_line":""},{"line_number":2221,"context_line":"class TestImageAssociatedTasks(TestImage):"},{"line_number":2222,"context_line":"    image \u003d image_fakes.create_one_image()"},{"line_number":2223,"context_line":"    image_tasks \u003d image_fakes.create_one_image_task()"},{"line_number":2224,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"2a36d014_7f6d68df","line":2221,"in_reply_to":"36269f25_ef156903","updated":"2025-07-28 14:35:13.000000000","message":"Done","commit_id":"6478ca5cfa135a600ae034b5a4e7f61e461c7c0f"},{"author":{"_account_id":34510,"name":"Maxim Sava","email":"msava@redhat.com","username":"msava@redhat.com"},"change_message_id":"a1d0d9d04161f425049b77fd43ba5fedd18a10ea","unresolved":true,"context_lines":[{"line_number":2226,"context_line":"        super().setUp()"},{"line_number":2227,"context_line":""},{"line_number":2228,"context_line":"        self.image_client.find_image.return_value \u003d self.image"},{"line_number":2229,"context_line":"        self.image_client.get_image_tasks.return_value \u003d self.image_tasks"},{"line_number":2230,"context_line":"        self.cmd \u003d _image.ListImageAssociatedTasks(self.app, None)"},{"line_number":2231,"context_line":""},{"line_number":2232,"context_line":"    def test_image_associated_tasks(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ab4f2401_40803966","line":2229,"updated":"2025-05-26 18:18:18.000000000","message":"```suggestion\n        self.image_client.image_tasks.return_value \u003d self.image_tasks\n```","commit_id":"6478ca5cfa135a600ae034b5a4e7f61e461c7c0f"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"55447729a0012bfa99469349e5e0a1f85b895d62","unresolved":false,"context_lines":[{"line_number":2226,"context_line":"        super().setUp()"},{"line_number":2227,"context_line":""},{"line_number":2228,"context_line":"        self.image_client.find_image.return_value \u003d self.image"},{"line_number":2229,"context_line":"        self.image_client.get_image_tasks.return_value \u003d self.image_tasks"},{"line_number":2230,"context_line":"        self.cmd \u003d _image.ListImageAssociatedTasks(self.app, None)"},{"line_number":2231,"context_line":""},{"line_number":2232,"context_line":"    def test_image_associated_tasks(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"4aa0438b_7a7f784f","line":2229,"in_reply_to":"ab4f2401_40803966","updated":"2025-07-28 14:35:13.000000000","message":"Yes, openstacksdk uses image_tasks, not get_image_tasks, so this is the right thing to do.","commit_id":"6478ca5cfa135a600ae034b5a4e7f61e461c7c0f"},{"author":{"_account_id":34510,"name":"Maxim Sava","email":"msava@redhat.com","username":"msava@redhat.com"},"change_message_id":"a1d0d9d04161f425049b77fd43ba5fedd18a10ea","unresolved":true,"context_lines":[{"line_number":2236,"context_line":""},{"line_number":2237,"context_line":"        columns, data \u003d self.cmd.take_action(parsed_args)"},{"line_number":2238,"context_line":""},{"line_number":2239,"context_line":"        self.image_client.get_image_tasks.assert_called_with("},{"line_number":2240,"context_line":"            image\u003dself.image.id"},{"line_number":2241,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":4,"id":"9bbc8a73_84d6908d","line":2239,"updated":"2025-05-26 18:18:18.000000000","message":"```suggestion\n        self.image_client.image_tasks.assert_called_with(\n```","commit_id":"6478ca5cfa135a600ae034b5a4e7f61e461c7c0f"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"55447729a0012bfa99469349e5e0a1f85b895d62","unresolved":false,"context_lines":[{"line_number":2236,"context_line":""},{"line_number":2237,"context_line":"        columns, data \u003d self.cmd.take_action(parsed_args)"},{"line_number":2238,"context_line":""},{"line_number":2239,"context_line":"        self.image_client.get_image_tasks.assert_called_with("},{"line_number":2240,"context_line":"            image\u003dself.image.id"},{"line_number":2241,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":4,"id":"4ed887dd_1e3f39fa","line":2239,"in_reply_to":"9bbc8a73_84d6908d","updated":"2025-07-28 14:35:13.000000000","message":"Done","commit_id":"6478ca5cfa135a600ae034b5a4e7f61e461c7c0f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cb7446a6f2e939ea0cc8030cbfd9377f95512e9d","unresolved":true,"context_lines":[{"line_number":2292,"context_line":"        )"},{"line_number":2293,"context_line":""},{"line_number":2294,"context_line":""},{"line_number":2295,"context_line":"class TestImageTasks(TestImage):"},{"line_number":2296,"context_line":"    image \u003d image_fakes.create_one_image()"},{"line_number":2297,"context_line":"    image_tasks \u003d image_fakes.create_one_image_task()"},{"line_number":2298,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"05263dc4_cf1551d2","line":2295,"updated":"2025-08-07 15:31:07.000000000","message":"Please move this to `test_image_task`. You can subclass from `image_fakes.TestImagev2` directly since you won\u0027t need the rest of this.","commit_id":"13f794d7f119187e6e7971647d7e4dd12960c5c9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cb7446a6f2e939ea0cc8030cbfd9377f95512e9d","unresolved":true,"context_lines":[{"line_number":2294,"context_line":""},{"line_number":2295,"context_line":"class TestImageTasks(TestImage):"},{"line_number":2296,"context_line":"    image \u003d image_fakes.create_one_image()"},{"line_number":2297,"context_line":"    image_tasks \u003d image_fakes.create_one_image_task()"},{"line_number":2298,"context_line":""},{"line_number":2299,"context_line":"    def setUp(self):"},{"line_number":2300,"context_line":"        super().setUp()"}],"source_content_type":"text/x-python","patch_set":6,"id":"5617810d_8a0554ff","line":2297,"updated":"2025-08-07 15:31:07.000000000","message":"Please create this inside `setUp` so that they\u0027re instance rather than class attributes (they\u0027re mutable so it\u0027s best practice)","commit_id":"13f794d7f119187e6e7971647d7e4dd12960c5c9"}],"pyproject.toml":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cb7446a6f2e939ea0cc8030cbfd9377f95512e9d","unresolved":true,"context_lines":[{"line_number":353,"context_line":"image_import_info \u003d \"openstackclient.image.v2.info:ImportInfo\""},{"line_number":354,"context_line":"image_import \u003d \"openstackclient.image.v2.image:ImportImage\""},{"line_number":355,"context_line":"image_stores_list \u003d \"openstackclient.image.v2.image:StoresInfo\""},{"line_number":356,"context_line":"image_tasks \u003d \"openstackclient.image.v2.image:ListImageAssociatedTasks\""},{"line_number":357,"context_line":"image_metadef_namespace_create \u003d \"openstackclient.image.v2.metadef_namespaces:CreateMetadefNamespace\""},{"line_number":358,"context_line":"image_metadef_namespace_delete \u003d \"openstackclient.image.v2.metadef_namespaces:DeleteMetadefNamespace\""},{"line_number":359,"context_line":"image_metadef_namespace_list \u003d \"openstackclient.image.v2.metadef_namespaces:ListMetadefNamespace\""}],"source_content_type":"text/x-toml","patch_set":6,"id":"3cb60d4e_a1a922e7","line":356,"updated":"2025-08-07 15:31:07.000000000","message":"I was going to say this should be `image task list` but that\u0027s already taken. How similar are the APIs? Could we do e.g.\n\n```\n# get all images tasks\nimage task list\n\n# get image tasks associated with a specific image\nimage task list --image \u003cimage\u003e\n```","commit_id":"13f794d7f119187e6e7971647d7e4dd12960c5c9"}],"releasenotes/notes/image-associated-tasks-b27941f07dc7ef68.yaml":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cb7446a6f2e939ea0cc8030cbfd9377f95512e9d","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 ``image associated tasks`` command, allowing users to get tasks"},{"line_number":5,"context_line":"    associated with a particular image."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"61ad4240_e80732c3","line":4,"updated":"2025-08-07 15:31:07.000000000","message":"```suggestion\n    Add ``image tasks`` command, allowing users to get tasks\n```","commit_id":"13f794d7f119187e6e7971647d7e4dd12960c5c9"}]}
