)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":32704,"name":"Alfredo Garcia","display_name":"Alfredo Garcia","email":"alfrgarc@redhat.com","username":"alfrgarc","status":"Senior Software Quality Engineer @ Red Hat"},"change_message_id":"fc213988d4efc717aed5ce22afa415338c9d9fd1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"f2b7f1d3_d5da73f6","updated":"2026-02-06 20:39:02.000000000","message":"Ack, thanks for the quick resolution. Restoring the +1.","commit_id":"a0750353d42e733190e289be987b5defad37d4ce"},{"author":{"_account_id":32704,"name":"Alfredo Garcia","display_name":"Alfredo Garcia","email":"alfrgarc@redhat.com","username":"alfrgarc","status":"Senior Software Quality Engineer @ Red Hat"},"change_message_id":"411745d2f9dc17c539155aeb932ac521640f95e3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"e22a5269_3f4b5138","updated":"2026-02-05 13:53:42.000000000","message":"Changes are consistent with other similar changes. LGTM.","commit_id":"a0750353d42e733190e289be987b5defad37d4ce"},{"author":{"_account_id":32704,"name":"Alfredo Garcia","display_name":"Alfredo Garcia","email":"alfrgarc@redhat.com","username":"alfrgarc","status":"Senior Software Quality Engineer @ Red Hat"},"change_message_id":"7d93b769b8bf6f627aa1ee9eb4825fbc06dc6f9d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"24496541_ebe0295d","updated":"2026-02-06 15:31:45.000000000","message":"Just tested locally and ran into an error. See below:\n - CMD: \"tempest run --config-file /home/stack/tempest-dir/etc/tempest.conf --regex image\\.v2 --debug\"\n - File: \"/tempest/api/image/v2/admin/test_images.py\"\n - Line: \"line 79, in test_list_public_image\"\n - Error: \"AttributeError: \u0027BasicOperationsImagesAdminTest\u0027 object has no attribute \u0027reader_client\u0027\"\n \nI was able to fix this by changing \"reader_client\" in line 79 of test_image.py to \"reader_admin_client\". See below:\n - CMD: Same as above^\n - Output: tempest.api.image...test_list_public_image [0.820667s] ... ok\n\nNot sure if that should be the intended fix though, as it is possible that there should be an attribute of \"reader_client\". It is also possible that I am missing something in my Tempest configuration that would address the error I am running into.\n\nRemoving my +1 until this is resolved. I am not adding a -1 as this error I am seeing could be due to an error in my testing.","commit_id":"a0750353d42e733190e289be987b5defad37d4ce"},{"author":{"_account_id":32102,"name":"Manpreet Kaur","email":"kaurmanpreet2620@gmail.com","username":"manpreet"},"change_message_id":"47253a5ee7c34acc28e63471d0b42f84439faf89","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"46be6f69_ab774098","in_reply_to":"24496541_ebe0295d","updated":"2026-02-06 20:18:09.000000000","message":"Thanks for your comment.\nThis fix has a parent patch \u0027https://review.opendev.org/c/openstack/tempest/+/975296\u0027 and in the local testing environment it must be included.\nAs per the error \"AttributeError: \u0027BasicOperationsImagesAdminTest\u0027 object has no attribute \u0027reader_client\u0027\" it shows tempest/api/image/base.py changes done in Review ID: 975296 are missing.\nSo in the testing environment you need to incorporate both (https://review.opendev.org/c/openstack/tempest/+/975296 and https://review.opendev.org/c/openstack/tempest/+/975782)the patches before testing tempest image test cases.\nHope this helps.😊","commit_id":"a0750353d42e733190e289be987b5defad37d4ce"},{"author":{"_account_id":32102,"name":"Manpreet Kaur","email":"kaurmanpreet2620@gmail.com","username":"manpreet"},"change_message_id":"b6b193f8dd68000472e2c2e06b47099b07a6b38f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"7809afde_cc149c88","updated":"2026-07-13 09:17:22.000000000","message":"@gmaan, ping for review!","commit_id":"ee22789aab003af20af4d420642f8240a0713131"},{"author":{"_account_id":32704,"name":"Alfredo Garcia","display_name":"Alfredo Garcia","email":"alfrgarc@redhat.com","username":"alfrgarc","status":"Senior Software Quality Engineer @ Red Hat"},"change_message_id":"9d309716f73077dd49bc4f3a244d9da217800dd1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"50e9abd7_f78b1dae","updated":"2026-06-30 12:31:02.000000000","message":"LGTM","commit_id":"ee22789aab003af20af4d420642f8240a0713131"}],"tempest/api/image/base.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7e618af98d80f4696f4fe99430442139236b1181","unresolved":false,"context_lines":[{"line_number":249,"context_line":""},{"line_number":250,"context_line":"class BaseV2ImageAdminTest(BaseV2ImageTest):"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    credentials \u003d [\u0027admin\u0027, \u0027primary\u0027, \u0027project_reader\u0027]"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    @classmethod"},{"line_number":255,"context_line":"    def setup_clients(cls):"}],"source_content_type":"text/x-python","patch_set":1,"id":"577d5d68_b4efb150","line":252,"range":{"start_line":252,"start_character":37,"end_line":252,"end_character":56},"updated":"2026-06-24 20:32:55.000000000","message":"++","commit_id":"a0750353d42e733190e289be987b5defad37d4ce"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"2e12850831b9f7aa26989a2dfdc94fb1bd534f52","unresolved":true,"context_lines":[{"line_number":256,"context_line":"        super(BaseV2ImageAdminTest, cls).setup_clients()"},{"line_number":257,"context_line":"        cls.admin_client \u003d cls.os_admin.image_client_v2"},{"line_number":258,"context_line":"        if CONF.enforce_scope.glance and hasattr(cls, \u0027os_project_reader\u0027):"},{"line_number":259,"context_line":"            cls.reader_admin_client \u003d cls.os_project_reader.image_client_v2"},{"line_number":260,"context_line":"        else:"},{"line_number":261,"context_line":"            cls.reader_admin_client \u003d cls.admin_client"},{"line_number":262,"context_line":"        cls.namespaces_client \u003d cls.os_admin.namespaces_client"}],"source_content_type":"text/x-python","patch_set":1,"id":"4050ecb6_a7847f85","line":259,"range":{"start_line":259,"start_character":16,"end_line":259,"end_character":36},"updated":"2026-06-24 20:33:17.000000000","message":"ditto, this is reader client not reader+admin","commit_id":"a0750353d42e733190e289be987b5defad37d4ce"},{"author":{"_account_id":32102,"name":"Manpreet Kaur","email":"kaurmanpreet2620@gmail.com","username":"manpreet"},"change_message_id":"e45e724a28062b3e77e3e1f09447771cd157cfb4","unresolved":false,"context_lines":[{"line_number":256,"context_line":"        super(BaseV2ImageAdminTest, cls).setup_clients()"},{"line_number":257,"context_line":"        cls.admin_client \u003d cls.os_admin.image_client_v2"},{"line_number":258,"context_line":"        if CONF.enforce_scope.glance and hasattr(cls, \u0027os_project_reader\u0027):"},{"line_number":259,"context_line":"            cls.reader_admin_client \u003d cls.os_project_reader.image_client_v2"},{"line_number":260,"context_line":"        else:"},{"line_number":261,"context_line":"            cls.reader_admin_client \u003d cls.admin_client"},{"line_number":262,"context_line":"        cls.namespaces_client \u003d cls.os_admin.namespaces_client"}],"source_content_type":"text/x-python","patch_set":1,"id":"81d3f6a7_e926072c","line":259,"range":{"start_line":259,"start_character":16,"end_line":259,"end_character":36},"in_reply_to":"4050ecb6_a7847f85","updated":"2026-06-30 10:09:12.000000000","message":"Revert changes, as this is Tempest\u0027s admin credentials manager.","commit_id":"a0750353d42e733190e289be987b5defad37d4ce"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7e618af98d80f4696f4fe99430442139236b1181","unresolved":true,"context_lines":[{"line_number":255,"context_line":"    def setup_clients(cls):"},{"line_number":256,"context_line":"        super(BaseV2ImageAdminTest, cls).setup_clients()"},{"line_number":257,"context_line":"        cls.admin_client \u003d cls.os_admin.image_client_v2"},{"line_number":258,"context_line":"        if CONF.enforce_scope.glance and hasattr(cls, \u0027os_project_reader\u0027):"},{"line_number":259,"context_line":"            cls.reader_admin_client \u003d cls.os_project_reader.image_client_v2"},{"line_number":260,"context_line":"        else:"},{"line_number":261,"context_line":"            cls.reader_admin_client \u003d cls.admin_client"},{"line_number":262,"context_line":"        cls.namespaces_client \u003d cls.os_admin.namespaces_client"},{"line_number":263,"context_line":"        cls.resource_types_client \u003d cls.os_admin.resource_types_client"},{"line_number":264,"context_line":"        cls.namespace_properties_client \u003d\\"}],"source_content_type":"text/x-python","patch_set":1,"id":"bbcbae9c_e3cd6724","line":261,"range":{"start_line":258,"start_character":0,"end_line":261,"end_character":54},"updated":"2026-06-24 20:32:55.000000000","message":"is it needed? I think L82 will take care of it?","commit_id":"a0750353d42e733190e289be987b5defad37d4ce"},{"author":{"_account_id":32102,"name":"Manpreet Kaur","email":"kaurmanpreet2620@gmail.com","username":"manpreet"},"change_message_id":"e45e724a28062b3e77e3e1f09447771cd157cfb4","unresolved":false,"context_lines":[{"line_number":255,"context_line":"    def setup_clients(cls):"},{"line_number":256,"context_line":"        super(BaseV2ImageAdminTest, cls).setup_clients()"},{"line_number":257,"context_line":"        cls.admin_client \u003d cls.os_admin.image_client_v2"},{"line_number":258,"context_line":"        if CONF.enforce_scope.glance and hasattr(cls, \u0027os_project_reader\u0027):"},{"line_number":259,"context_line":"            cls.reader_admin_client \u003d cls.os_project_reader.image_client_v2"},{"line_number":260,"context_line":"        else:"},{"line_number":261,"context_line":"            cls.reader_admin_client \u003d cls.admin_client"},{"line_number":262,"context_line":"        cls.namespaces_client \u003d cls.os_admin.namespaces_client"},{"line_number":263,"context_line":"        cls.resource_types_client \u003d cls.os_admin.resource_types_client"},{"line_number":264,"context_line":"        cls.namespace_properties_client \u003d\\"}],"source_content_type":"text/x-python","patch_set":1,"id":"c808d3ab_d077d152","line":261,"range":{"start_line":258,"start_character":0,"end_line":261,"end_character":54},"in_reply_to":"bbcbae9c_e3cd6724","updated":"2026-06-30 10:09:12.000000000","message":"Agree, revert changes.","commit_id":"a0750353d42e733190e289be987b5defad37d4ce"}]}
