)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":32704,"name":"Alfredo Garcia","email":"alfrgarc@redhat.com","username":"alfrgarc"},"change_message_id":"f22ed0b626e7a1c6ad1116227f041daaf6a547f7","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"fdd53c93_cecfa3a1","updated":"2023-02-23 14:01:49.000000000","message":"The code looks amazing and is very comprehensive! Just some minor nits:\n- Please remove the WIP from the title of the patch, after this I\u0027m ready to give the +1\n- 2 Very minor style nit picks, these aren\u0027t super important and aren\u0027t stopping me from giving a +1","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"d9ea305030c9a3c4a8966d7d7d9dc95bb31da3c3","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"8fca8c85_0c484965","in_reply_to":"398d7b46_e1412191","updated":"2023-02-27 09:22:38.000000000","message":"Thanks guys\nwill work on fixing the issues.","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"72303269439fa0897999caf4cc6a19835eefb571","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"09c04692_7b87fd0a","in_reply_to":"881a44ac_4fef89d9","updated":"2023-05-21 13:35:46.000000000","message":"Done","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"3939dce5bf31f439e04c46cb5d7083832d6fa05c","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"c180bab0_3e3603dd","in_reply_to":"8fca8c85_0c484965","updated":"2023-03-07 09:02:39.000000000","message":"Luigi, looks like these failures are related to this configuration in tempest.conf:\n[auth]\ntempest_roles \u003d member\n\nOn my setup, I commented it out to avoid these failures\n\nI\u0027m not sure if there is an open patch on this issue - maybe you know?","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":10459,"name":"Luigi Toscano","email":"ltoscano@redhat.com","username":"ltoscano"},"change_message_id":"bf70be43b7fbf29ee818a0819257617682705057","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"881a44ac_4fef89d9","in_reply_to":"c180bab0_3e3603dd","updated":"2023-03-07 09:56:59.000000000","message":"I\u0027m going to loop gmann and mkopec here","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":10459,"name":"Luigi Toscano","email":"ltoscano@redhat.com","username":"ltoscano"},"change_message_id":"5f7ead5338de585e9f9a0e51d5fb2b3b52a8b0cf","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"398d7b46_e1412191","in_reply_to":"fdd53c93_cecfa3a1","updated":"2023-02-23 14:18:56.000000000","message":"I need to point out that until the gates (apart from possible glitches) says it is ready, it\u0027s not ready (see at least the pep8 job).\n\nAlso, the patch is only tested by cinder-tempest-plugin-protection-functional and the tests are failing:\n\ncinder_tempest_plugin.rbac.v3.test_snapshots.ProjectReaderTests","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0c639959d98ea2ab28fd5b0977381e253c23d555","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"dd7a9ee7_16ab8481","updated":"2023-03-13 18:29:31.000000000","message":"adding comments. I agree with tosky not to inherit reader from member test class. Few more suggestion as per tempest latest code.","commit_id":"fe1a14cc50bd1fcccb9224bd8cda6ddd50a10361"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"9d58bf1e21319c58eb95404e5067208a1fbc8bba","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"513b2a8c_671b1a39","updated":"2023-03-29 12:58:54.000000000","message":"Thanks Evelina!","commit_id":"fa15cc68022edfd39f2122f202f6597565629915"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f4c66515045687ecac048cb491178c62ebe3465d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"15bd62e3_e2f0a6b4","updated":"2023-03-31 19:52:55.000000000","message":"few question on allowed operation for reader role and some suggest what reader role test should looks like","commit_id":"8f981168aa112effe1938a1e3a986677956245f6"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"0501efb2d98f988d6ff0ed3837361d17a3771edc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"f8fcfc75_2400c7ba","updated":"2023-05-23 09:56:18.000000000","message":"Looks good to me, I just have one question, please see inline","commit_id":"22083f2d1287657b132aefe96f6aff40daa710ec"},{"author":{"_account_id":10459,"name":"Luigi Toscano","email":"ltoscano@redhat.com","username":"ltoscano"},"change_message_id":"c753e4eb5550daa484ebf607ed25b7be4eff810a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"02981105_d50ff9b9","updated":"2023-05-23 08:45:51.000000000","message":"So, this patch and https://review.opendev.org/c/openstack/cinder-tempest-plugin/+/878587 have slightly different implementation of create_volume, and the same implementation of delete_resource. If this is merged, the other would conflict. Please either sync the two implementation, or (better and preferred) stack this patch on top of the other. But I guess you two need to discuss :)","commit_id":"22083f2d1287657b132aefe96f6aff40daa710ec"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"d9058daba859e8daf6361e45aec423a802e93447","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"6ce01726_81600a54","updated":"2023-05-23 08:18:31.000000000","message":"What about Admin class ?","commit_id":"22083f2d1287657b132aefe96f6aff40daa710ec"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"16d186aae5eea0a101737d977dd74cddeb6e679c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"27ff9c75_a496c09b","updated":"2023-05-22 13:56:15.000000000","message":"looks good to me, the tests pass as expected - https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_740/872986/31/check/cinder-tempest-plugin-protection-functional/74003f8/testr_results.html","commit_id":"22083f2d1287657b132aefe96f6aff40daa710ec"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"adb811e624b8981b1ee374c4cdae60010c4be86a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"403e2e59_41db97f5","in_reply_to":"02981105_d50ff9b9","updated":"2023-05-23 09:59:03.000000000","message":"both https://review.opendev.org/c/openstack/cinder-tempest-plugin/+/878672 and https://review.opendev.org/c/openstack/cinder-tempest-plugin/+/883182 use this base as well, so let\u0027s keep this one and refactor the \u0027backups\u0027 one","commit_id":"22083f2d1287657b132aefe96f6aff40daa710ec"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"0501efb2d98f988d6ff0ed3837361d17a3771edc","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":31,"id":"fb991ec6_d0c76f40","in_reply_to":"02981105_d50ff9b9","updated":"2023-05-23 09:56:18.000000000","message":"oh, which one should I review first?","commit_id":"22083f2d1287657b132aefe96f6aff40daa710ec"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"adb811e624b8981b1ee374c4cdae60010c4be86a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"1f8fd2a6_8327ed09","in_reply_to":"6ce01726_81600a54","updated":"2023-05-23 09:59:03.000000000","message":"Will be done as part of the next phase.","commit_id":"22083f2d1287657b132aefe96f6aff40daa710ec"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"8d3cc12fd1765a91e6aad4c326ca3a41502c6b8b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"361d534d_a98ffde1","updated":"2023-05-23 15:54:26.000000000","message":"LGTM","commit_id":"de601aeb6bb5a3467ead8231f0d101128360fa40"},{"author":{"_account_id":32704,"name":"Alfredo Garcia","email":"alfrgarc@redhat.com","username":"alfrgarc"},"change_message_id":"19029a30b942d1a2df43a1034cc43e8962c89957","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"f788be66_4ffc7548","updated":"2023-05-23 12:46:27.000000000","message":"LGTM","commit_id":"de601aeb6bb5a3467ead8231f0d101128360fa40"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"3aecc1a46a2942a44463eb4e9b2688e6043fd9c6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"71ac4a75_df3a3a14","updated":"2023-05-23 12:04:42.000000000","message":"Looks good, waiting for Zuul vote","commit_id":"de601aeb6bb5a3467ead8231f0d101128360fa40"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"cbb56d06121dd5c3b38f29d7caae4573dc873eaa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"d610987e_7714aeab","updated":"2023-05-28 07:28:33.000000000","message":"recheck","commit_id":"de601aeb6bb5a3467ead8231f0d101128360fa40"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"564ba74933a07718f413f9e8e0c1002941593a5d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"b01004d1_6ce1c5c2","updated":"2023-05-24 07:39:31.000000000","message":"recheck\n\ncinder-tempest-plugin-lvm-lio-barbican failure is a one time failure, failed tests are unrelated to this change.","commit_id":"de601aeb6bb5a3467ead8231f0d101128360fa40"},{"author":{"_account_id":10459,"name":"Luigi Toscano","email":"ltoscano@redhat.com","username":"ltoscano"},"change_message_id":"7eec16c491783f9715bb185d7290a7b3f6855bf0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"38fc12d8_4fd1fc20","updated":"2023-05-26 10:57:19.000000000","message":"recheck\n\nunrelated failure in cinder-tempest-plugin-lvm-multiattach","commit_id":"de601aeb6bb5a3467ead8231f0d101128360fa40"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"1613f5a8b5308524f870f8a5d732a6751250bbff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"b27dae32_86aecd52","updated":"2023-05-29 13:20:15.000000000","message":"recheck\n\nunrelated failure in cinder-tempest-plugin-lvm-multiattach","commit_id":"de601aeb6bb5a3467ead8231f0d101128360fa40"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"796099b7d98f6f3a09d35800098c21a86f24da24","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"23b25f33_75ae7664","updated":"2023-05-24 10:13:35.000000000","message":"recheck\n\nunrelated timeout of cinder-tempest-plugin-lvm-multiattach","commit_id":"de601aeb6bb5a3467ead8231f0d101128360fa40"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"01cb967c22ebb737d96e28b08357a06078052f0b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"542a8a3b_4ea21803","updated":"2023-05-25 09:18:32.000000000","message":"recheck timeouts","commit_id":"de601aeb6bb5a3467ead8231f0d101128360fa40"}],"cinder_tempest_plugin/api/volume/base.py":[{"author":{"_account_id":10459,"name":"Luigi Toscano","email":"ltoscano@redhat.com","username":"ltoscano"},"change_message_id":"6e7041e3aef5951e1ac7cae7418e1a7ab031aaf4","unresolved":true,"context_lines":[{"line_number":46,"context_line":"    @classmethod"},{"line_number":47,"context_line":"    def setup_clients(cls):"},{"line_number":48,"context_line":"        super(BaseVolumeTest, cls).setup_clients()"},{"line_number":49,"context_line":"        if not CONF.enforce_scope.cinder:"},{"line_number":50,"context_line":"            cls.backups_client \u003d cls.os_primary.backups_client_latest"},{"line_number":51,"context_line":"            cls.volumes_client \u003d cls.os_primary.volumes_client_latest"},{"line_number":52,"context_line":"            cls.snapshots_client \u003d cls.os_primary.snapshots_client_latest"}],"source_content_type":"text/x-python","patch_set":24,"id":"d19e1fff_7c436406","line":49,"updated":"2023-04-20 18:01:09.000000000","message":"This requires a proper fix. The non-SRBAC tests fail with errors like:\n\n\nft6.1: cinder_tempest_plugin.api.volume.test_volume_backup.VolumesBackupsTest.test_backup_create_and_restore_to_an_existing_volume[id-b5d837b0-7066-455d-88fc-4a721a899306]testtools.testresult.real._StringException: Traceback (most recent call last):\n  File \"/opt/stack/tempest/.tox/tempest/lib/python3.10/site-packages/cinder_tempest_plugin/api/volume/test_volume_backup.py\", line 54, in test_backup_create_and_restore_to_an_existing_volume\n    src_vol \u003d self.create_volume()\n  File \"/opt/stack/tempest/.tox/tempest/lib/python3.10/site-packages/cinder_tempest_plugin/api/volume/base.py\", line 91, in create_volume\n    volume \u003d cls.volumes_client.create_volume(**kwargs)[\u0027volume\u0027]\nAttributeError: type object \u0027VolumesBackupsTest\u0027 has no attribute \u0027volumes_client\u0027\n\n\nSee https://review.opendev.org/c/openstack/cinder-tempest-plugin/+/880984 , https://zuul.opendev.org/t/openstack/build/6ac2be882b4d42eb83c7b239f42fe02f/logs","commit_id":"54be46ae344d48e55968d3bec072cd3b3a927bdb"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"72303269439fa0897999caf4cc6a19835eefb571","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    @classmethod"},{"line_number":47,"context_line":"    def setup_clients(cls):"},{"line_number":48,"context_line":"        super(BaseVolumeTest, cls).setup_clients()"},{"line_number":49,"context_line":"        if not CONF.enforce_scope.cinder:"},{"line_number":50,"context_line":"            cls.backups_client \u003d cls.os_primary.backups_client_latest"},{"line_number":51,"context_line":"            cls.volumes_client \u003d cls.os_primary.volumes_client_latest"},{"line_number":52,"context_line":"            cls.snapshots_client \u003d cls.os_primary.snapshots_client_latest"}],"source_content_type":"text/x-python","patch_set":24,"id":"c69db1c1_150a6dae","line":49,"in_reply_to":"d19e1fff_7c436406","updated":"2023-05-21 13:35:46.000000000","message":"Done","commit_id":"54be46ae344d48e55968d3bec072cd3b3a927bdb"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"de284c020992f8347f319e14eeed3ad8e2ce8adb","unresolved":true,"context_lines":[{"line_number":46,"context_line":"    @classmethod"},{"line_number":47,"context_line":"    def setup_clients(cls):"},{"line_number":48,"context_line":"        super(BaseVolumeTest, cls).setup_clients()"},{"line_number":49,"context_line":"        if not CONF.enforce_scope.cinder:"},{"line_number":50,"context_line":"            cls.backups_client \u003d cls.os_primary.backups_client_latest"},{"line_number":51,"context_line":"            cls.volumes_client \u003d cls.os_primary.volumes_client_latest"},{"line_number":52,"context_line":"            cls.snapshots_client \u003d cls.os_primary.snapshots_client_latest"}],"source_content_type":"text/x-python","patch_set":25,"id":"7f5f818b_23f80363","line":49,"range":{"start_line":49,"start_character":8,"end_line":49,"end_character":40},"updated":"2023-05-10 12:58:21.000000000","message":"Since you don\u0027t inherit from this base class, you can revert revert it.","commit_id":"f5de2822607d89bba859fd171fd3e4d5f40c88b1"},{"author":{"_account_id":35834,"name":"Yosi Ben Shimon","display_name":"Yosi Ben Shimon","email":"ybenshim@redhat.com","username":"ybenshim"},"change_message_id":"b4e71d1e27f8591dcaf9e3d1e2aa4161881cc56a","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    @classmethod"},{"line_number":47,"context_line":"    def setup_clients(cls):"},{"line_number":48,"context_line":"        super(BaseVolumeTest, cls).setup_clients()"},{"line_number":49,"context_line":"        if not CONF.enforce_scope.cinder:"},{"line_number":50,"context_line":"            cls.backups_client \u003d cls.os_primary.backups_client_latest"},{"line_number":51,"context_line":"            cls.volumes_client \u003d cls.os_primary.volumes_client_latest"},{"line_number":52,"context_line":"            cls.snapshots_client \u003d cls.os_primary.snapshots_client_latest"}],"source_content_type":"text/x-python","patch_set":25,"id":"246fca25_7ee5f62e","line":49,"range":{"start_line":49,"start_character":8,"end_line":49,"end_character":40},"in_reply_to":"7f5f818b_23f80363","updated":"2023-05-10 13:38:13.000000000","message":"Done","commit_id":"f5de2822607d89bba859fd171fd3e4d5f40c88b1"}],"cinder_tempest_plugin/rbac/v3/base.py":[{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"4202bba5c498c0dde8d8f73bd1511b3a245e9713","unresolved":true,"context_lines":[{"line_number":133,"context_line":"        client.delete_snapshot(snapshot_id)"},{"line_number":134,"context_line":"        client.wait_for_resource_deletion(snapshot_id)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    @cleanup_order"},{"line_number":137,"context_line":"    def setup_user_client(self, client, project_id):"},{"line_number":138,"context_line":"        \"\"\"Set up project user with its own client."},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"2c826dca_12028d94","line":136,"range":{"start_line":136,"start_character":4,"end_line":136,"end_character":18},"updated":"2023-02-27 10:53:06.000000000","message":"I don\u0027t need this decorator","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"432ac2a5490363ba494c3df4ab228e69a422459d","unresolved":true,"context_lines":[{"line_number":133,"context_line":"        client.delete_snapshot(snapshot_id)"},{"line_number":134,"context_line":"        client.wait_for_resource_deletion(snapshot_id)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    @cleanup_order"},{"line_number":137,"context_line":"    def setup_user_client(self, client, project_id):"},{"line_number":138,"context_line":"        \"\"\"Set up project user with its own client."},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"57f2b9bb_d61347f5","line":136,"range":{"start_line":136,"start_character":4,"end_line":136,"end_character":18},"in_reply_to":"2c826dca_12028d94","updated":"2023-03-06 13:07:22.000000000","message":"why not? I do would like to delete this user at the end of a test.","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"2c4e1aed56b28b44869c03ed17e877d5bbb46d77","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        client.delete_snapshot(snapshot_id)"},{"line_number":134,"context_line":"        client.wait_for_resource_deletion(snapshot_id)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    @cleanup_order"},{"line_number":137,"context_line":"    def setup_user_client(self, client, project_id):"},{"line_number":138,"context_line":"        \"\"\"Set up project user with its own client."},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"6895dc60_d431be1c","line":136,"range":{"start_line":136,"start_character":4,"end_line":136,"end_character":18},"in_reply_to":"57f2b9bb_d61347f5","updated":"2023-03-07 09:18:23.000000000","message":"Done","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":32704,"name":"Alfredo Garcia","email":"alfrgarc@redhat.com","username":"alfrgarc"},"change_message_id":"f22ed0b626e7a1c6ad1116227f041daaf6a547f7","unresolved":true,"context_lines":[{"line_number":146,"context_line":"        Returns:"},{"line_number":147,"context_line":"            Client object"},{"line_number":148,"context_line":"        \"\"\""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        users_client \u003d client.identity_v3.UsersClient()"},{"line_number":151,"context_line":"        roles_client \u003d client.identity_v3.RolesClient()"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"36f026c4_346bf13f","line":149,"updated":"2023-02-23 14:01:49.000000000","message":"Minor style nit, the white space in line 149 should be deleted","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"432ac2a5490363ba494c3df4ab228e69a422459d","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        Returns:"},{"line_number":147,"context_line":"            Client object"},{"line_number":148,"context_line":"        \"\"\""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        users_client \u003d client.identity_v3.UsersClient()"},{"line_number":151,"context_line":"        roles_client \u003d client.identity_v3.RolesClient()"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"6c9c09b7_4bd01834","line":149,"in_reply_to":"36f026c4_346bf13f","updated":"2023-03-06 13:07:22.000000000","message":"Ack","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0c639959d98ea2ab28fd5b0977381e253c23d555","unresolved":true,"context_lines":[{"line_number":133,"context_line":"        client.delete_snapshot(snapshot_id)"},{"line_number":134,"context_line":"        client.wait_for_resource_deletion(snapshot_id)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    @cleanup_order"},{"line_number":137,"context_line":"    def setup_user_client(self, client, project_id):"},{"line_number":138,"context_line":"        \"\"\"Set up project user with its own client."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        Useful when testing protection of resources in a specific project."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        Args:"},{"line_number":143,"context_line":"            client: Client object"},{"line_number":144,"context_line":"            project_id: ID of the preject where the user will be created"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        Returns:"},{"line_number":147,"context_line":"            Client object"},{"line_number":148,"context_line":"        \"\"\""},{"line_number":149,"context_line":"        users_client \u003d client.identity_v3.UsersClient()"},{"line_number":150,"context_line":"        roles_client \u003d client.identity_v3.RolesClient()"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        user_dict \u003d {"},{"line_number":153,"context_line":"            \u0027name\u0027: data_utils.rand_name(\u0027user\u0027),"},{"line_number":154,"context_line":"            \u0027password\u0027: data_utils.rand_password(),"},{"line_number":155,"context_line":"        }"},{"line_number":156,"context_line":"        user_id \u003d users_client.create_user(**user_dict)[\u0027user\u0027][\u0027id\u0027]"},{"line_number":157,"context_line":"        self.cleanup("},{"line_number":158,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":159,"context_line":"            func\u003dusers_client.delete_user, user_id\u003duser_id"},{"line_number":160,"context_line":"        )"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        member_role_id \u003d roles_client.list_roles("},{"line_number":163,"context_line":"            name\u003d\u0027member\u0027)[\u0027roles\u0027][0][\u0027id\u0027]"},{"line_number":164,"context_line":"        roles_client.create_user_role_on_project("},{"line_number":165,"context_line":"            project_id\u003dproject_id, user_id\u003duser_id, role_id\u003dmember_role_id"},{"line_number":166,"context_line":"        )"},{"line_number":167,"context_line":"        creds \u003d auth.KeystoneV3Credentials("},{"line_number":168,"context_line":"            user_id\u003duser_id, password\u003duser_dict[\u0027password\u0027],"},{"line_number":169,"context_line":"            project_id\u003dproject_id"},{"line_number":170,"context_line":"        )"},{"line_number":171,"context_line":"        creds \u003d clients.get_auth_provider(credentials\u003dcreds).fill_credentials()"},{"line_number":172,"context_line":"        client \u003d clients.Manager(credentials\u003dcreds)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        return client"}],"source_content_type":"text/x-python","patch_set":10,"id":"7b00eb31_9119356e","line":174,"range":{"start_line":136,"start_character":0,"end_line":174,"end_character":21},"updated":"2023-03-13 18:29:31.000000000","message":"you do not need this anymore as Tempest fixed he project_id bug for project reader/member - https://review.opendev.org/c/openstack/tempest/+/875372/6\n\nNow you can request project_reader, project_member, project_admin and they will be created in same project and you can verify the things like resource A created by project B member role can be seen by project B reader role user.","commit_id":"fe1a14cc50bd1fcccb9224bd8cda6ddd50a10361"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"140a3bf90f72cff4350b5c57452bf0d40e9c08d0","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        client.delete_snapshot(snapshot_id)"},{"line_number":134,"context_line":"        client.wait_for_resource_deletion(snapshot_id)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    @cleanup_order"},{"line_number":137,"context_line":"    def setup_user_client(self, client, project_id):"},{"line_number":138,"context_line":"        \"\"\"Set up project user with its own client."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        Useful when testing protection of resources in a specific project."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        Args:"},{"line_number":143,"context_line":"            client: Client object"},{"line_number":144,"context_line":"            project_id: ID of the preject where the user will be created"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        Returns:"},{"line_number":147,"context_line":"            Client object"},{"line_number":148,"context_line":"        \"\"\""},{"line_number":149,"context_line":"        users_client \u003d client.identity_v3.UsersClient()"},{"line_number":150,"context_line":"        roles_client \u003d client.identity_v3.RolesClient()"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        user_dict \u003d {"},{"line_number":153,"context_line":"            \u0027name\u0027: data_utils.rand_name(\u0027user\u0027),"},{"line_number":154,"context_line":"            \u0027password\u0027: data_utils.rand_password(),"},{"line_number":155,"context_line":"        }"},{"line_number":156,"context_line":"        user_id \u003d users_client.create_user(**user_dict)[\u0027user\u0027][\u0027id\u0027]"},{"line_number":157,"context_line":"        self.cleanup("},{"line_number":158,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":159,"context_line":"            func\u003dusers_client.delete_user, user_id\u003duser_id"},{"line_number":160,"context_line":"        )"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        member_role_id \u003d roles_client.list_roles("},{"line_number":163,"context_line":"            name\u003d\u0027member\u0027)[\u0027roles\u0027][0][\u0027id\u0027]"},{"line_number":164,"context_line":"        roles_client.create_user_role_on_project("},{"line_number":165,"context_line":"            project_id\u003dproject_id, user_id\u003duser_id, role_id\u003dmember_role_id"},{"line_number":166,"context_line":"        )"},{"line_number":167,"context_line":"        creds \u003d auth.KeystoneV3Credentials("},{"line_number":168,"context_line":"            user_id\u003duser_id, password\u003duser_dict[\u0027password\u0027],"},{"line_number":169,"context_line":"            project_id\u003dproject_id"},{"line_number":170,"context_line":"        )"},{"line_number":171,"context_line":"        creds \u003d clients.get_auth_provider(credentials\u003dcreds).fill_credentials()"},{"line_number":172,"context_line":"        client \u003d clients.Manager(credentials\u003dcreds)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        return client"}],"source_content_type":"text/x-python","patch_set":10,"id":"1d36958d_85ced3cd","line":174,"range":{"start_line":136,"start_character":0,"end_line":174,"end_character":21},"in_reply_to":"34525b6d_d0651731","updated":"2023-03-27 18:03:24.000000000","message":"Ack","commit_id":"fe1a14cc50bd1fcccb9224bd8cda6ddd50a10361"},{"author":{"_account_id":10459,"name":"Luigi Toscano","email":"ltoscano@redhat.com","username":"ltoscano"},"change_message_id":"d579eb74093512fe485c88c81fc1a715dd34b232","unresolved":true,"context_lines":[{"line_number":133,"context_line":"        client.delete_snapshot(snapshot_id)"},{"line_number":134,"context_line":"        client.wait_for_resource_deletion(snapshot_id)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    @cleanup_order"},{"line_number":137,"context_line":"    def setup_user_client(self, client, project_id):"},{"line_number":138,"context_line":"        \"\"\"Set up project user with its own client."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        Useful when testing protection of resources in a specific project."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        Args:"},{"line_number":143,"context_line":"            client: Client object"},{"line_number":144,"context_line":"            project_id: ID of the preject where the user will be created"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        Returns:"},{"line_number":147,"context_line":"            Client object"},{"line_number":148,"context_line":"        \"\"\""},{"line_number":149,"context_line":"        users_client \u003d client.identity_v3.UsersClient()"},{"line_number":150,"context_line":"        roles_client \u003d client.identity_v3.RolesClient()"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        user_dict \u003d {"},{"line_number":153,"context_line":"            \u0027name\u0027: data_utils.rand_name(\u0027user\u0027),"},{"line_number":154,"context_line":"            \u0027password\u0027: data_utils.rand_password(),"},{"line_number":155,"context_line":"        }"},{"line_number":156,"context_line":"        user_id \u003d users_client.create_user(**user_dict)[\u0027user\u0027][\u0027id\u0027]"},{"line_number":157,"context_line":"        self.cleanup("},{"line_number":158,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":159,"context_line":"            func\u003dusers_client.delete_user, user_id\u003duser_id"},{"line_number":160,"context_line":"        )"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        member_role_id \u003d roles_client.list_roles("},{"line_number":163,"context_line":"            name\u003d\u0027member\u0027)[\u0027roles\u0027][0][\u0027id\u0027]"},{"line_number":164,"context_line":"        roles_client.create_user_role_on_project("},{"line_number":165,"context_line":"            project_id\u003dproject_id, user_id\u003duser_id, role_id\u003dmember_role_id"},{"line_number":166,"context_line":"        )"},{"line_number":167,"context_line":"        creds \u003d auth.KeystoneV3Credentials("},{"line_number":168,"context_line":"            user_id\u003duser_id, password\u003duser_dict[\u0027password\u0027],"},{"line_number":169,"context_line":"            project_id\u003dproject_id"},{"line_number":170,"context_line":"        )"},{"line_number":171,"context_line":"        creds \u003d clients.get_auth_provider(credentials\u003dcreds).fill_credentials()"},{"line_number":172,"context_line":"        client \u003d clients.Manager(credentials\u003dcreds)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        return client"}],"source_content_type":"text/x-python","patch_set":10,"id":"953e1535_e5c4ee04","line":174,"range":{"start_line":136,"start_character":0,"end_line":174,"end_character":21},"in_reply_to":"7b00eb31_9119356e","updated":"2023-03-13 18:58:00.000000000","message":"Is https://review.opendev.org/c/openstack/tempest/+/875372/6 the review or is it a wrong copy/paste?","commit_id":"fe1a14cc50bd1fcccb9224bd8cda6ddd50a10361"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"35205f0468f8f37a10b7887de23deed1d283d54c","unresolved":true,"context_lines":[{"line_number":133,"context_line":"        client.delete_snapshot(snapshot_id)"},{"line_number":134,"context_line":"        client.wait_for_resource_deletion(snapshot_id)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    @cleanup_order"},{"line_number":137,"context_line":"    def setup_user_client(self, client, project_id):"},{"line_number":138,"context_line":"        \"\"\"Set up project user with its own client."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        Useful when testing protection of resources in a specific project."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        Args:"},{"line_number":143,"context_line":"            client: Client object"},{"line_number":144,"context_line":"            project_id: ID of the preject where the user will be created"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        Returns:"},{"line_number":147,"context_line":"            Client object"},{"line_number":148,"context_line":"        \"\"\""},{"line_number":149,"context_line":"        users_client \u003d client.identity_v3.UsersClient()"},{"line_number":150,"context_line":"        roles_client \u003d client.identity_v3.RolesClient()"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        user_dict \u003d {"},{"line_number":153,"context_line":"            \u0027name\u0027: data_utils.rand_name(\u0027user\u0027),"},{"line_number":154,"context_line":"            \u0027password\u0027: data_utils.rand_password(),"},{"line_number":155,"context_line":"        }"},{"line_number":156,"context_line":"        user_id \u003d users_client.create_user(**user_dict)[\u0027user\u0027][\u0027id\u0027]"},{"line_number":157,"context_line":"        self.cleanup("},{"line_number":158,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":159,"context_line":"            func\u003dusers_client.delete_user, user_id\u003duser_id"},{"line_number":160,"context_line":"        )"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        member_role_id \u003d roles_client.list_roles("},{"line_number":163,"context_line":"            name\u003d\u0027member\u0027)[\u0027roles\u0027][0][\u0027id\u0027]"},{"line_number":164,"context_line":"        roles_client.create_user_role_on_project("},{"line_number":165,"context_line":"            project_id\u003dproject_id, user_id\u003duser_id, role_id\u003dmember_role_id"},{"line_number":166,"context_line":"        )"},{"line_number":167,"context_line":"        creds \u003d auth.KeystoneV3Credentials("},{"line_number":168,"context_line":"            user_id\u003duser_id, password\u003duser_dict[\u0027password\u0027],"},{"line_number":169,"context_line":"            project_id\u003dproject_id"},{"line_number":170,"context_line":"        )"},{"line_number":171,"context_line":"        creds \u003d clients.get_auth_provider(credentials\u003dcreds).fill_credentials()"},{"line_number":172,"context_line":"        client \u003d clients.Manager(credentials\u003dcreds)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        return client"}],"source_content_type":"text/x-python","patch_set":10,"id":"34525b6d_d0651731","line":174,"range":{"start_line":136,"start_character":0,"end_line":174,"end_character":21},"in_reply_to":"953e1535_e5c4ee04","updated":"2023-03-13 19:06:06.000000000","message":"ah my bad. its copy/paste error.\n\nCorrect bug link https://bugs.launchpad.net/tempest/+bug/1964509","commit_id":"fe1a14cc50bd1fcccb9224bd8cda6ddd50a10361"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"e412a789963c2728ce037003c40aaa28cb874f6b","unresolved":true,"context_lines":[{"line_number":57,"context_line":"            return response"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @cleanup_order"},{"line_number":60,"context_line":"    def create_vol(self, client, **kwargs):"},{"line_number":61,"context_line":"        \"\"\"Wrapper utility that returns a test volume"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        Args:"}],"source_content_type":"text/x-python","patch_set":14,"id":"28fe2266_4c365d2e","line":60,"range":{"start_line":60,"start_character":8,"end_line":60,"end_character":18},"updated":"2023-03-28 07:57:15.000000000","message":"Why not create_volume ?","commit_id":"f36b744e39799400994902b6d4ddaea7df0f1713"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"38fec4e655a3e99212b4959062c9a2fe859f63cd","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            return response"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @cleanup_order"},{"line_number":60,"context_line":"    def create_vol(self, client, **kwargs):"},{"line_number":61,"context_line":"        \"\"\"Wrapper utility that returns a test volume"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        Args:"}],"source_content_type":"text/x-python","patch_set":14,"id":"a48bd473_4b623f3a","line":60,"range":{"start_line":60,"start_character":8,"end_line":60,"end_character":18},"in_reply_to":"28fe2266_4c365d2e","updated":"2023-03-28 08:12:05.000000000","message":"Volume tests depend on this base, and there are tests there named create_volume, delete_volume\nhttps://review.opendev.org/c/openstack/cinder-tempest-plugin/+/878672/6/cinder_tempest_plugin/rbac/v3/test_volumes.py","commit_id":"f36b744e39799400994902b6d4ddaea7df0f1713"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"e412a789963c2728ce037003c40aaa28cb874f6b","unresolved":true,"context_lines":[{"line_number":110,"context_line":"        return snapshot_id"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    @staticmethod"},{"line_number":113,"context_line":"    def delete_vol(client, volume_id):"},{"line_number":114,"context_line":"        \"\"\"Delete volume by the given client"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        Args:"}],"source_content_type":"text/x-python","patch_set":15,"id":"212486cf_2c97ece7","line":113,"range":{"start_line":113,"start_character":8,"end_line":113,"end_character":18},"updated":"2023-03-28 07:57:15.000000000","message":"delete_volume","commit_id":"a06b39a73b08f865244c1305f42b5fe974b6437f"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"38fec4e655a3e99212b4959062c9a2fe859f63cd","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        return snapshot_id"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    @staticmethod"},{"line_number":113,"context_line":"    def delete_vol(client, volume_id):"},{"line_number":114,"context_line":"        \"\"\"Delete volume by the given client"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        Args:"}],"source_content_type":"text/x-python","patch_set":15,"id":"288a06ba_a541a8dd","line":113,"range":{"start_line":113,"start_character":8,"end_line":113,"end_character":18},"in_reply_to":"212486cf_2c97ece7","updated":"2023-03-28 08:12:05.000000000","message":"same","commit_id":"a06b39a73b08f865244c1305f42b5fe974b6437f"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"e412a789963c2728ce037003c40aaa28cb874f6b","unresolved":true,"context_lines":[{"line_number":108,"context_line":"        )"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        return snapshot_id"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    @staticmethod"},{"line_number":113,"context_line":"    def delete_vol(client, volume_id):"},{"line_number":114,"context_line":"        \"\"\"Delete volume by the given client"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        Args:"},{"line_number":117,"context_line":"            client: Client object"},{"line_number":118,"context_line":"            volume_id: ID of the volume"},{"line_number":119,"context_line":"        \"\"\""},{"line_number":120,"context_line":"        client.delete_volume(volume_id)"},{"line_number":121,"context_line":"        client.wait_for_resource_deletion(volume_id)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    @staticmethod"},{"line_number":124,"context_line":"    def delete_snapshot(client, snapshot_id):"},{"line_number":125,"context_line":"        \"\"\"Delete snapshot by the given client"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        Args:"},{"line_number":128,"context_line":"            client: Client object"},{"line_number":129,"context_line":"            snapshot_id: ID of the snapshot"},{"line_number":130,"context_line":"        \"\"\""},{"line_number":131,"context_line":"        client.delete_snapshot(snapshot_id)"},{"line_number":132,"context_line":"        client.wait_for_resource_deletion(snapshot_id)"}],"source_content_type":"text/x-python","patch_set":15,"id":"2dd847d1_633bcaaf","line":132,"range":{"start_line":111,"start_character":0,"end_line":132,"end_character":54},"updated":"2023-03-28 07:57:15.000000000","message":"I suggest to create a generic method that delete any resource and call it \u0027delete_resource\u0027","commit_id":"a06b39a73b08f865244c1305f42b5fe974b6437f"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"6d000836f5668663e27709b5b3258d3c88a3c240","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        )"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        return snapshot_id"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    @staticmethod"},{"line_number":113,"context_line":"    def delete_vol(client, volume_id):"},{"line_number":114,"context_line":"        \"\"\"Delete volume by the given client"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        Args:"},{"line_number":117,"context_line":"            client: Client object"},{"line_number":118,"context_line":"            volume_id: ID of the volume"},{"line_number":119,"context_line":"        \"\"\""},{"line_number":120,"context_line":"        client.delete_volume(volume_id)"},{"line_number":121,"context_line":"        client.wait_for_resource_deletion(volume_id)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    @staticmethod"},{"line_number":124,"context_line":"    def delete_snapshot(client, snapshot_id):"},{"line_number":125,"context_line":"        \"\"\"Delete snapshot by the given client"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        Args:"},{"line_number":128,"context_line":"            client: Client object"},{"line_number":129,"context_line":"            snapshot_id: ID of the snapshot"},{"line_number":130,"context_line":"        \"\"\""},{"line_number":131,"context_line":"        client.delete_snapshot(snapshot_id)"},{"line_number":132,"context_line":"        client.wait_for_resource_deletion(snapshot_id)"}],"source_content_type":"text/x-python","patch_set":15,"id":"3a89e340_ab72a6d2","line":132,"range":{"start_line":111,"start_character":0,"end_line":132,"end_character":54},"in_reply_to":"2dd847d1_633bcaaf","updated":"2023-03-28 09:30:32.000000000","message":"Ack","commit_id":"a06b39a73b08f865244c1305f42b5fe974b6437f"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"9d58bf1e21319c58eb95404e5067208a1fbc8bba","unresolved":true,"context_lines":[{"line_number":120,"context_line":"            snapshot_id: ID of a snapshot"},{"line_number":121,"context_line":"            volume_id: ID of a volume"},{"line_number":122,"context_line":"        \"\"\""},{"line_number":123,"context_line":"        key, resource_id \u003d list(kwargs.items())[0]"},{"line_number":124,"context_line":"        resource_name \u003d key.split(\u0027_\u0027)[0]"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        del_action \u003d getattr(client, f\u0027delete_{resource_name}\u0027)"},{"line_number":127,"context_line":"        test_utils.call_and_ignore_notfound_exc(del_action, resource_id)"},{"line_number":128,"context_line":"        test_utils.call_and_ignore_notfound_exc("},{"line_number":129,"context_line":"            client.wait_for_resource_deletion, resource_id)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1c9bfd20_c4c6b429","line":126,"range":{"start_line":123,"start_character":0,"end_line":126,"end_character":63},"updated":"2023-03-29 12:58:54.000000000","message":"There\u0027s an attribute you can use, called \"resource_type\".\nSo you can do the same in one line:\ndel_action \u003d getattr(client, \u0027delete_\u0027 + client.resource_type)","commit_id":"fa15cc68022edfd39f2122f202f6597565629915"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"549c2703297c2833436266c963e234dc50e0ad48","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            snapshot_id: ID of a snapshot"},{"line_number":121,"context_line":"            volume_id: ID of a volume"},{"line_number":122,"context_line":"        \"\"\""},{"line_number":123,"context_line":"        key, resource_id \u003d list(kwargs.items())[0]"},{"line_number":124,"context_line":"        resource_name \u003d key.split(\u0027_\u0027)[0]"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        del_action \u003d getattr(client, f\u0027delete_{resource_name}\u0027)"},{"line_number":127,"context_line":"        test_utils.call_and_ignore_notfound_exc(del_action, resource_id)"},{"line_number":128,"context_line":"        test_utils.call_and_ignore_notfound_exc("},{"line_number":129,"context_line":"            client.wait_for_resource_deletion, resource_id)"}],"source_content_type":"text/x-python","patch_set":18,"id":"59d663ed_487f3329","line":126,"range":{"start_line":123,"start_character":0,"end_line":126,"end_character":63},"in_reply_to":"1c9bfd20_c4c6b429","updated":"2023-03-30 10:08:38.000000000","message":"for snapshots, client.resource_type is \u0027volume-snapshot\u0027 and not \u0027snapshot\u0027, so it won\u0027t work..","commit_id":"fa15cc68022edfd39f2122f202f6597565629915"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"75fbec7b8843831ceea2c0eb04c646eb18ef457a","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            snapshot_id: ID of a snapshot"},{"line_number":121,"context_line":"            volume_id: ID of a volume"},{"line_number":122,"context_line":"        \"\"\""},{"line_number":123,"context_line":"        key, resource_id \u003d list(kwargs.items())[0]"},{"line_number":124,"context_line":"        resource_name \u003d key.split(\u0027_\u0027)[0]"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        del_action \u003d getattr(client, f\u0027delete_{resource_name}\u0027)"},{"line_number":127,"context_line":"        test_utils.call_and_ignore_notfound_exc(del_action, resource_id)"},{"line_number":128,"context_line":"        test_utils.call_and_ignore_notfound_exc("},{"line_number":129,"context_line":"            client.wait_for_resource_deletion, resource_id)"}],"source_content_type":"text/x-python","patch_set":18,"id":"b4eac9f5_9641ee3c","line":126,"range":{"start_line":123,"start_character":0,"end_line":126,"end_character":63},"in_reply_to":"59d663ed_487f3329","updated":"2023-03-30 10:54:46.000000000","message":"Ok","commit_id":"fa15cc68022edfd39f2122f202f6597565629915"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"0501efb2d98f988d6ff0ed3837361d17a3771edc","unresolved":true,"context_lines":[{"line_number":102,"context_line":"        )"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        volume_id \u003d client.create_volume(**kwargs)[\u0027volume\u0027][\u0027id\u0027]"},{"line_number":105,"context_line":"        self.cleanup("},{"line_number":106,"context_line":"            test_utils.call_and_ignore_notfound_exc, func\u003dself.delete_resource,"},{"line_number":107,"context_line":"            client\u003dclient, volume_id\u003dvolume_id"},{"line_number":108,"context_line":"        )"},{"line_number":109,"context_line":"        waiters.wait_for_volume_resource_status("},{"line_number":110,"context_line":"            client\u003dclient, resource_id\u003dvolume_id, status\u003d\u0027available\u0027"},{"line_number":111,"context_line":"        )"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        return volume_id"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"254c699a_4f25d3f1","line":111,"range":{"start_line":105,"start_character":8,"end_line":111,"end_character":9},"updated":"2023-05-23 09:56:18.000000000","message":":-1: Just a quick thought - correct me if I\u0027m off base here, but it seems like you might be doubling up on the cleanup task, given that `client.create_volume()` does the cleaning up for you already. Check it out here: https://opendev.org/openstack/cinder-tempest-plugin/src/branch/master/cinder_tempest_plugin/api/volume/base.py#L91-L98\n\nIf this is indeed the case, it would be prudent to eliminate the duplicate cleanup. This redundancy appears to be causing a 400 HTTP error. For instance, see this example: https://review.opendev.org/c/openstack/tempest/+/843542","commit_id":"22083f2d1287657b132aefe96f6aff40daa710ec"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"00a9f5e6a298186d3d720adcf1a8bd417ac9d4ca","unresolved":true,"context_lines":[{"line_number":102,"context_line":"        )"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        volume_id \u003d client.create_volume(**kwargs)[\u0027volume\u0027][\u0027id\u0027]"},{"line_number":105,"context_line":"        self.cleanup("},{"line_number":106,"context_line":"            test_utils.call_and_ignore_notfound_exc, func\u003dself.delete_resource,"},{"line_number":107,"context_line":"            client\u003dclient, volume_id\u003dvolume_id"},{"line_number":108,"context_line":"        )"},{"line_number":109,"context_line":"        waiters.wait_for_volume_resource_status("},{"line_number":110,"context_line":"            client\u003dclient, resource_id\u003dvolume_id, status\u003d\u0027available\u0027"},{"line_number":111,"context_line":"        )"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        return volume_id"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"aab56524_075615d6","line":111,"range":{"start_line":105,"start_character":8,"end_line":111,"end_character":9},"in_reply_to":"254c699a_4f25d3f1","updated":"2023-05-23 10:45:29.000000000","message":"the volume creation is done directly from the client and not using the api.volume.base.create_volume() so the cleanup is happening only once here since it is not using the cleanup you referred to, but using the one I added here.","commit_id":"22083f2d1287657b132aefe96f6aff40daa710ec"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"3aecc1a46a2942a44463eb4e9b2688e6043fd9c6","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        )"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        volume_id \u003d client.create_volume(**kwargs)[\u0027volume\u0027][\u0027id\u0027]"},{"line_number":105,"context_line":"        self.cleanup("},{"line_number":106,"context_line":"            test_utils.call_and_ignore_notfound_exc, func\u003dself.delete_resource,"},{"line_number":107,"context_line":"            client\u003dclient, volume_id\u003dvolume_id"},{"line_number":108,"context_line":"        )"},{"line_number":109,"context_line":"        waiters.wait_for_volume_resource_status("},{"line_number":110,"context_line":"            client\u003dclient, resource_id\u003dvolume_id, status\u003d\u0027available\u0027"},{"line_number":111,"context_line":"        )"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        return volume_id"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"d29c4aff_6f739ba4","line":111,"range":{"start_line":105,"start_character":8,"end_line":111,"end_character":9},"in_reply_to":"aab56524_075615d6","updated":"2023-05-23 12:04:42.000000000","message":"Thanks!!","commit_id":"22083f2d1287657b132aefe96f6aff40daa710ec"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"0501efb2d98f988d6ff0ed3837361d17a3771edc","unresolved":true,"context_lines":[{"line_number":131,"context_line":"        snapshot_id \u003d client.create_snapshot("},{"line_number":132,"context_line":"            volume_id\u003dvolume_id, **kwargs)[\u0027snapshot\u0027][\u0027id\u0027]"},{"line_number":133,"context_line":"        if cleanup:"},{"line_number":134,"context_line":"            self.cleanup("},{"line_number":135,"context_line":"                test_utils.call_and_ignore_notfound_exc,"},{"line_number":136,"context_line":"                func\u003dself.delete_resource,"},{"line_number":137,"context_line":"                client\u003dclient, snapshot_id\u003dsnapshot_id"},{"line_number":138,"context_line":"            )"},{"line_number":139,"context_line":"        waiters.wait_for_volume_resource_status("},{"line_number":140,"context_line":"            client\u003dclient, resource_id\u003dsnapshot_id, status\u003d\u0027available\u0027"},{"line_number":141,"context_line":"        )"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        return snapshot_id"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"da60322c_0d391cd7","line":141,"range":{"start_line":134,"start_character":0,"end_line":141,"end_character":9},"updated":"2023-05-23 09:56:18.000000000","message":"same problem? https://opendev.org/openstack/cinder-tempest-plugin/src/branch/master/cinder_tempest_plugin/api/volume/base.py#L110-L116","commit_id":"22083f2d1287657b132aefe96f6aff40daa710ec"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"3aecc1a46a2942a44463eb4e9b2688e6043fd9c6","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        snapshot_id \u003d client.create_snapshot("},{"line_number":132,"context_line":"            volume_id\u003dvolume_id, **kwargs)[\u0027snapshot\u0027][\u0027id\u0027]"},{"line_number":133,"context_line":"        if cleanup:"},{"line_number":134,"context_line":"            self.cleanup("},{"line_number":135,"context_line":"                test_utils.call_and_ignore_notfound_exc,"},{"line_number":136,"context_line":"                func\u003dself.delete_resource,"},{"line_number":137,"context_line":"                client\u003dclient, snapshot_id\u003dsnapshot_id"},{"line_number":138,"context_line":"            )"},{"line_number":139,"context_line":"        waiters.wait_for_volume_resource_status("},{"line_number":140,"context_line":"            client\u003dclient, resource_id\u003dsnapshot_id, status\u003d\u0027available\u0027"},{"line_number":141,"context_line":"        )"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        return snapshot_id"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"abe5437c_6347c252","line":141,"range":{"start_line":134,"start_character":0,"end_line":141,"end_character":9},"in_reply_to":"0dc33b35_0941b1b9","updated":"2023-05-23 12:04:42.000000000","message":"thanks!!","commit_id":"22083f2d1287657b132aefe96f6aff40daa710ec"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"00a9f5e6a298186d3d720adcf1a8bd417ac9d4ca","unresolved":true,"context_lines":[{"line_number":131,"context_line":"        snapshot_id \u003d client.create_snapshot("},{"line_number":132,"context_line":"            volume_id\u003dvolume_id, **kwargs)[\u0027snapshot\u0027][\u0027id\u0027]"},{"line_number":133,"context_line":"        if cleanup:"},{"line_number":134,"context_line":"            self.cleanup("},{"line_number":135,"context_line":"                test_utils.call_and_ignore_notfound_exc,"},{"line_number":136,"context_line":"                func\u003dself.delete_resource,"},{"line_number":137,"context_line":"                client\u003dclient, snapshot_id\u003dsnapshot_id"},{"line_number":138,"context_line":"            )"},{"line_number":139,"context_line":"        waiters.wait_for_volume_resource_status("},{"line_number":140,"context_line":"            client\u003dclient, resource_id\u003dsnapshot_id, status\u003d\u0027available\u0027"},{"line_number":141,"context_line":"        )"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        return snapshot_id"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"0dc33b35_0941b1b9","line":141,"range":{"start_line":134,"start_character":0,"end_line":141,"end_character":9},"in_reply_to":"da60322c_0d391cd7","updated":"2023-05-23 10:45:29.000000000","message":"same here, the snapshot creation is done directly from the client and not from api.volume.base.create_snapshot().","commit_id":"22083f2d1287657b132aefe96f6aff40daa710ec"}],"cinder_tempest_plugin/rbac/v3/test_snapshots.py":[{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"4202bba5c498c0dde8d8f73bd1511b3a245e9713","unresolved":true,"context_lines":[{"line_number":79,"context_line":"        pass"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class ProjectMemberTests(VolumeV3RbacSnapshotsTests, base.BaseVolumeTest):"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    credentials \u003d [\u0027project_member\u0027, \u0027project_admin\u0027]"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"11f8b89c_51fd4ae1","line":82,"range":{"start_line":82,"start_character":0,"end_line":82,"end_character":74},"updated":"2023-02-27 10:53:06.000000000","message":"You\u0027re not covering the case where the resource is created in another project.","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"432ac2a5490363ba494c3df4ab228e69a422459d","unresolved":true,"context_lines":[{"line_number":79,"context_line":"        pass"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class ProjectMemberTests(VolumeV3RbacSnapshotsTests, base.BaseVolumeTest):"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    credentials \u003d [\u0027project_member\u0027, \u0027project_admin\u0027]"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"b3ff2327_d14b86f3","line":82,"range":{"start_line":82,"start_character":0,"end_line":82,"end_character":74},"in_reply_to":"11f8b89c_51fd4ae1","updated":"2023-03-06 13:07:22.000000000","message":"Would be done later, currently the focus is on covering phase1 - the most critical ones (check Jira ticket OSP-22070 for more details)","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"2c4e1aed56b28b44869c03ed17e877d5bbb46d77","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        pass"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class ProjectMemberTests(VolumeV3RbacSnapshotsTests, base.BaseVolumeTest):"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    credentials \u003d [\u0027project_member\u0027, \u0027project_admin\u0027]"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"d488bd47_057d28e4","line":82,"range":{"start_line":82,"start_character":0,"end_line":82,"end_character":74},"in_reply_to":"b3ff2327_d14b86f3","updated":"2023-03-07 09:18:23.000000000","message":"Done","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"4202bba5c498c0dde8d8f73bd1511b3a245e9713","unresolved":true,"context_lines":[{"line_number":113,"context_line":"        )"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    @decorators.idempotent_id(\u002743f77b31-aab4-46d0-b76f-e17000d23589\u0027)"},{"line_number":116,"context_line":"    @decorators.cleanup_order"},{"line_number":117,"context_line":"    def test_create_snapshot(self):"},{"line_number":118,"context_line":"        volume_id \u003d self.create_volume(client\u003dself.vol_other_client)"},{"line_number":119,"context_line":"        snap_name \u003d data_utils.rand_name("}],"source_content_type":"text/x-python","patch_set":6,"id":"e41a2dab_00edb49b","line":116,"range":{"start_line":116,"start_character":4,"end_line":116,"end_character":29},"updated":"2023-02-27 10:53:06.000000000","message":"I guess you can remove it","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"432ac2a5490363ba494c3df4ab228e69a422459d","unresolved":true,"context_lines":[{"line_number":113,"context_line":"        )"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    @decorators.idempotent_id(\u002743f77b31-aab4-46d0-b76f-e17000d23589\u0027)"},{"line_number":116,"context_line":"    @decorators.cleanup_order"},{"line_number":117,"context_line":"    def test_create_snapshot(self):"},{"line_number":118,"context_line":"        volume_id \u003d self.create_volume(client\u003dself.vol_other_client)"},{"line_number":119,"context_line":"        snap_name \u003d data_utils.rand_name("}],"source_content_type":"text/x-python","patch_set":6,"id":"fbe4096b_5f8f2c5e","line":116,"range":{"start_line":116,"start_character":4,"end_line":116,"end_character":29},"in_reply_to":"e41a2dab_00edb49b","updated":"2023-03-06 13:07:22.000000000","message":"why? I do would like to delete the created snapshot at the end of the test","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"2c4e1aed56b28b44869c03ed17e877d5bbb46d77","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        )"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    @decorators.idempotent_id(\u002743f77b31-aab4-46d0-b76f-e17000d23589\u0027)"},{"line_number":116,"context_line":"    @decorators.cleanup_order"},{"line_number":117,"context_line":"    def test_create_snapshot(self):"},{"line_number":118,"context_line":"        volume_id \u003d self.create_volume(client\u003dself.vol_other_client)"},{"line_number":119,"context_line":"        snap_name \u003d data_utils.rand_name("}],"source_content_type":"text/x-python","patch_set":6,"id":"937a65e7_a97d8f9d","line":116,"range":{"start_line":116,"start_character":4,"end_line":116,"end_character":29},"in_reply_to":"fbe4096b_5f8f2c5e","updated":"2023-03-07 09:18:23.000000000","message":"Done","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"4202bba5c498c0dde8d8f73bd1511b3a245e9713","unresolved":true,"context_lines":[{"line_number":171,"context_line":"        snapshot_id \u003d self.create_snapshot("},{"line_number":172,"context_line":"            client\u003dself.snap_other_client, volume_id\u003dvolume_id"},{"line_number":173,"context_line":"        )"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        self.os_project_admin.snapshots_client_latest.reset_snapshot_status("},{"line_number":176,"context_line":"            snapshot_id\u003dsnapshot_id, status\u003d\u0027creating\u0027"},{"line_number":177,"context_line":"        )"},{"line_number":178,"context_line":"        waiters.wait_for_volume_resource_status("},{"line_number":179,"context_line":"            client\u003dself.os_project_admin.snapshots_client_latest,"},{"line_number":180,"context_line":"            resource_id\u003dsnapshot_id, status\u003d\u0027creating\u0027"},{"line_number":181,"context_line":"        )"},{"line_number":182,"context_line":"        self.do_request("},{"line_number":183,"context_line":"            \u0027update_snapshot_status\u0027, expected_status\u003d202,"},{"line_number":184,"context_line":"            snapshot_id\u003dsnapshot_id, status\u003d\u0027error\u0027, progress\u003d\u002780%\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"6cbeccae_8199386d","line":181,"range":{"start_line":174,"start_character":0,"end_line":181,"end_character":9},"updated":"2023-02-27 10:53:06.000000000","message":"Why do you need to reset the snapshot status by admin ?","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"432ac2a5490363ba494c3df4ab228e69a422459d","unresolved":true,"context_lines":[{"line_number":171,"context_line":"        snapshot_id \u003d self.create_snapshot("},{"line_number":172,"context_line":"            client\u003dself.snap_other_client, volume_id\u003dvolume_id"},{"line_number":173,"context_line":"        )"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        self.os_project_admin.snapshots_client_latest.reset_snapshot_status("},{"line_number":176,"context_line":"            snapshot_id\u003dsnapshot_id, status\u003d\u0027creating\u0027"},{"line_number":177,"context_line":"        )"},{"line_number":178,"context_line":"        waiters.wait_for_volume_resource_status("},{"line_number":179,"context_line":"            client\u003dself.os_project_admin.snapshots_client_latest,"},{"line_number":180,"context_line":"            resource_id\u003dsnapshot_id, status\u003d\u0027creating\u0027"},{"line_number":181,"context_line":"        )"},{"line_number":182,"context_line":"        self.do_request("},{"line_number":183,"context_line":"            \u0027update_snapshot_status\u0027, expected_status\u003d202,"},{"line_number":184,"context_line":"            snapshot_id\u003dsnapshot_id, status\u003d\u0027error\u0027, progress\u003d\u002780%\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"e5cc1365_2712e214","line":181,"range":{"start_line":174,"start_character":0,"end_line":181,"end_character":9},"in_reply_to":"6cbeccae_8199386d","updated":"2023-03-06 13:07:22.000000000","message":"I don\u0027t remember the exact error, but there is a need to reset the snapshot status first and this is something only admin can do.\nAlso, I used as a reference this test: tempest\u003eapi\u003evolume\u003eadmin\u003etest_snapshots_actions\u003etest_update_snapshot_status","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"2c4e1aed56b28b44869c03ed17e877d5bbb46d77","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        snapshot_id \u003d self.create_snapshot("},{"line_number":172,"context_line":"            client\u003dself.snap_other_client, volume_id\u003dvolume_id"},{"line_number":173,"context_line":"        )"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        self.os_project_admin.snapshots_client_latest.reset_snapshot_status("},{"line_number":176,"context_line":"            snapshot_id\u003dsnapshot_id, status\u003d\u0027creating\u0027"},{"line_number":177,"context_line":"        )"},{"line_number":178,"context_line":"        waiters.wait_for_volume_resource_status("},{"line_number":179,"context_line":"            client\u003dself.os_project_admin.snapshots_client_latest,"},{"line_number":180,"context_line":"            resource_id\u003dsnapshot_id, status\u003d\u0027creating\u0027"},{"line_number":181,"context_line":"        )"},{"line_number":182,"context_line":"        self.do_request("},{"line_number":183,"context_line":"            \u0027update_snapshot_status\u0027, expected_status\u003d202,"},{"line_number":184,"context_line":"            snapshot_id\u003dsnapshot_id, status\u003d\u0027error\u0027, progress\u003d\u002780%\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"b67ef9a2_a4f9ffe8","line":181,"range":{"start_line":174,"start_character":0,"end_line":181,"end_character":9},"in_reply_to":"e5cc1365_2712e214","updated":"2023-03-07 09:18:23.000000000","message":"Done","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":10459,"name":"Luigi Toscano","email":"ltoscano@redhat.com","username":"ltoscano"},"change_message_id":"2ba4af7b27e89280aafffcbbad3b0e3a1c5a6b88","unresolved":true,"context_lines":[{"line_number":225,"context_line":"        )"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"class ProjectReaderTests(ProjectMemberTests, base.BaseVolumeTest):"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    credentials \u003d [\u0027project_reader\u0027, \u0027project_admin\u0027]"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"c337932d_e4d7f528","line":228,"updated":"2023-02-23 14:21:19.000000000","message":"So, I know this pattern is used elsewhere, but why should a ProjectReaderTests inherit from ProjectMemberTests?\n\na) they should probably inherit from a generic mixin/abstract PersonaTests class or so\nb) or at most, if an inheritance should be defined, the inheritance should be reverted: if I\u0027m not mistaken, a member is also a reader, but of course a reader is not a member.","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0c639959d98ea2ab28fd5b0977381e253c23d555","unresolved":true,"context_lines":[{"line_number":225,"context_line":"        )"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"class ProjectReaderTests(ProjectMemberTests, base.BaseVolumeTest):"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    credentials \u003d [\u0027project_reader\u0027, \u0027project_admin\u0027]"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"e8028d78_4de77c55","line":228,"in_reply_to":"064eba34_b0e0700a","updated":"2023-03-13 18:29:31.000000000","message":"Agree with tosky. \n\nI am not sure why that was done but these two role test can be separte and anything common can be defined in base class.","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"432ac2a5490363ba494c3df4ab228e69a422459d","unresolved":true,"context_lines":[{"line_number":225,"context_line":"        )"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"class ProjectReaderTests(ProjectMemberTests, base.BaseVolumeTest):"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    credentials \u003d [\u0027project_reader\u0027, \u0027project_admin\u0027]"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"064eba34_b0e0700a","line":228,"in_reply_to":"077f8511_e7ea8024","updated":"2023-03-06 13:07:22.000000000","message":"sure, totally open for other approaches.\nIn such a case where ProjectReaderTests doesn\u0027t inherit from ProjectMemberTests, what would you suggest to avoid/reduce dup code for tests that their expected result is the same both for member and reader?","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":10459,"name":"Luigi Toscano","email":"ltoscano@redhat.com","username":"ltoscano"},"change_message_id":"bcb5c07b6eeda790b7436ff52c025af0ff00b37d","unresolved":true,"context_lines":[{"line_number":225,"context_line":"        )"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"class ProjectReaderTests(ProjectMemberTests, base.BaseVolumeTest):"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    credentials \u003d [\u0027project_reader\u0027, \u0027project_admin\u0027]"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"077f8511_e7ea8024","line":228,"in_reply_to":"bee2440e_6543ea5d","updated":"2023-02-27 09:33:59.000000000","message":"Reducing the duplication is fine, but please note that I disagree on the way this reduction is achieved. My previous comment is about the *how* this is done. I hope we can discuss it for real.","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"d9ea305030c9a3c4a8966d7d7d9dc95bb31da3c3","unresolved":true,"context_lines":[{"line_number":225,"context_line":"        )"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"class ProjectReaderTests(ProjectMemberTests, base.BaseVolumeTest):"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    credentials \u003d [\u0027project_reader\u0027, \u0027project_admin\u0027]"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bee2440e_6543ea5d","line":228,"in_reply_to":"c337932d_e4d7f528","updated":"2023-02-27 09:22:38.000000000","message":"yes, this pattern was used in test_capabilities.py and in Manila\u0027s code for srbac\nthe idea is to avoid (as possible...) dup code - there are cases where the expect result is the same for both reader and member, so to avoid duplication of the same test, inheritance was a solution.","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"3d5152740029868f79d1696aca5f0a2a63089c96","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        )"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"class ProjectReaderTests(ProjectMemberTests, base.BaseVolumeTest):"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    credentials \u003d [\u0027project_reader\u0027, \u0027project_admin\u0027]"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3996cc58_c85c7e00","line":228,"in_reply_to":"e8028d78_4de77c55","updated":"2023-03-27 12:40:48.000000000","message":"Ack","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"4202bba5c498c0dde8d8f73bd1511b3a245e9713","unresolved":true,"context_lines":[{"line_number":232,"context_line":"    @classmethod"},{"line_number":233,"context_line":"    def setup_clients(cls):"},{"line_number":234,"context_line":"        super().setup_clients()"},{"line_number":235,"context_line":"        other_project_member \u003d cls.setup_user_client("},{"line_number":236,"context_line":"            client\u003dcls.os_project_admin,"},{"line_number":237,"context_line":"            project_id\u003dcls.persona.credentials.project_id"},{"line_number":238,"context_line":"        )"},{"line_number":239,"context_line":"        cls.vol_other_client \u003d other_project_member.volumes_client_latest"},{"line_number":240,"context_line":"        cls.snap_other_client \u003d other_project_member.snapshots_client_latest"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    @decorators.idempotent_id(\u0027dd8e19dc-c8fd-443c-8aed-cdffe07fa6be\u0027)"},{"line_number":243,"context_line":"    def test_list_snapshots(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"50a5a835_8900061a","line":240,"range":{"start_line":235,"start_character":0,"end_line":240,"end_character":76},"updated":"2023-02-27 10:53:06.000000000","message":"It\u0027s already done on the member class.","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"432ac2a5490363ba494c3df4ab228e69a422459d","unresolved":false,"context_lines":[{"line_number":232,"context_line":"    @classmethod"},{"line_number":233,"context_line":"    def setup_clients(cls):"},{"line_number":234,"context_line":"        super().setup_clients()"},{"line_number":235,"context_line":"        other_project_member \u003d cls.setup_user_client("},{"line_number":236,"context_line":"            client\u003dcls.os_project_admin,"},{"line_number":237,"context_line":"            project_id\u003dcls.persona.credentials.project_id"},{"line_number":238,"context_line":"        )"},{"line_number":239,"context_line":"        cls.vol_other_client \u003d other_project_member.volumes_client_latest"},{"line_number":240,"context_line":"        cls.snap_other_client \u003d other_project_member.snapshots_client_latest"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    @decorators.idempotent_id(\u0027dd8e19dc-c8fd-443c-8aed-cdffe07fa6be\u0027)"},{"line_number":243,"context_line":"    def test_list_snapshots(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"2b6e5ae2_22228061","line":240,"range":{"start_line":235,"start_character":0,"end_line":240,"end_character":76},"in_reply_to":"50a5a835_8900061a","updated":"2023-03-06 13:07:22.000000000","message":"Ack","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":32704,"name":"Alfredo Garcia","email":"alfrgarc@redhat.com","username":"alfrgarc"},"change_message_id":"f22ed0b626e7a1c6ad1116227f041daaf6a547f7","unresolved":true,"context_lines":[{"line_number":285,"context_line":"            snapshot_id\u003dsnapshot_id, description\u003dnew_desc"},{"line_number":286,"context_line":"        )"},{"line_number":287,"context_line":"    @decorators.idempotent_id(\u0027c90f98d7-3665-4c9f-820f-3f4c2adfdbf5\u0027)"},{"line_number":288,"context_line":"    def test_update_snapshot_status(self):"},{"line_number":289,"context_line":"        volume_id \u003d self.create_volume(client\u003dself.vol_other_client)"},{"line_number":290,"context_line":"        snapshot_id \u003d self.create_snapshot("},{"line_number":291,"context_line":"            client\u003dself.snap_other_client, volume_id\u003dvolume_id"}],"source_content_type":"text/x-python","patch_set":6,"id":"3b04ce63_49eb3249","line":288,"range":{"start_line":288,"start_character":0,"end_line":288,"end_character":4},"updated":"2023-02-23 14:01:49.000000000","message":"Another minor style nit, please separate line 287 and 288 with an extra space","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"432ac2a5490363ba494c3df4ab228e69a422459d","unresolved":false,"context_lines":[{"line_number":285,"context_line":"            snapshot_id\u003dsnapshot_id, description\u003dnew_desc"},{"line_number":286,"context_line":"        )"},{"line_number":287,"context_line":"    @decorators.idempotent_id(\u0027c90f98d7-3665-4c9f-820f-3f4c2adfdbf5\u0027)"},{"line_number":288,"context_line":"    def test_update_snapshot_status(self):"},{"line_number":289,"context_line":"        volume_id \u003d self.create_volume(client\u003dself.vol_other_client)"},{"line_number":290,"context_line":"        snapshot_id \u003d self.create_snapshot("},{"line_number":291,"context_line":"            client\u003dself.snap_other_client, volume_id\u003dvolume_id"}],"source_content_type":"text/x-python","patch_set":6,"id":"f5d326a7_de0c09e2","line":288,"range":{"start_line":288,"start_character":0,"end_line":288,"end_character":4},"in_reply_to":"06f4a55b_29989ded","updated":"2023-03-06 13:07:22.000000000","message":"Ack","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":32704,"name":"Alfredo Garcia","email":"alfrgarc@redhat.com","username":"alfrgarc"},"change_message_id":"f200ea6daca34b8d9f844274f5fe0900baf87a67","unresolved":true,"context_lines":[{"line_number":285,"context_line":"            snapshot_id\u003dsnapshot_id, description\u003dnew_desc"},{"line_number":286,"context_line":"        )"},{"line_number":287,"context_line":"    @decorators.idempotent_id(\u0027c90f98d7-3665-4c9f-820f-3f4c2adfdbf5\u0027)"},{"line_number":288,"context_line":"    def test_update_snapshot_status(self):"},{"line_number":289,"context_line":"        volume_id \u003d self.create_volume(client\u003dself.vol_other_client)"},{"line_number":290,"context_line":"        snapshot_id \u003d self.create_snapshot("},{"line_number":291,"context_line":"            client\u003dself.snap_other_client, volume_id\u003dvolume_id"}],"source_content_type":"text/x-python","patch_set":6,"id":"06f4a55b_29989ded","line":288,"range":{"start_line":288,"start_character":0,"end_line":288,"end_character":4},"in_reply_to":"3b04ce63_49eb3249","updated":"2023-02-23 14:04:07.000000000","message":"My mistake! It\u0027s lines 286 and 287 that should be separated.","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"4202bba5c498c0dde8d8f73bd1511b3a245e9713","unresolved":true,"context_lines":[{"line_number":291,"context_line":"            client\u003dself.snap_other_client, volume_id\u003dvolume_id"},{"line_number":292,"context_line":"        )"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        self.os_project_admin.snapshots_client_latest.reset_snapshot_status("},{"line_number":295,"context_line":"            snapshot_id\u003dsnapshot_id, status\u003d\u0027error\u0027"},{"line_number":296,"context_line":"        )"},{"line_number":297,"context_line":"        waiters.wait_for_volume_resource_status("},{"line_number":298,"context_line":"            client\u003dself.os_project_admin.snapshots_client_latest,"},{"line_number":299,"context_line":"            resource_id\u003dsnapshot_id, status\u003d\u0027error\u0027"},{"line_number":300,"context_line":"        )"},{"line_number":301,"context_line":"        self.do_request("},{"line_number":302,"context_line":"            \u0027update_snapshot_status\u0027, expected_status\u003dexceptions.Forbidden,"}],"source_content_type":"text/x-python","patch_set":6,"id":"15c5258c_5f69852f","line":299,"range":{"start_line":294,"start_character":0,"end_line":299,"end_character":51},"updated":"2023-02-27 10:53:06.000000000","message":"Same here","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"140a3bf90f72cff4350b5c57452bf0d40e9c08d0","unresolved":false,"context_lines":[{"line_number":291,"context_line":"            client\u003dself.snap_other_client, volume_id\u003dvolume_id"},{"line_number":292,"context_line":"        )"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        self.os_project_admin.snapshots_client_latest.reset_snapshot_status("},{"line_number":295,"context_line":"            snapshot_id\u003dsnapshot_id, status\u003d\u0027error\u0027"},{"line_number":296,"context_line":"        )"},{"line_number":297,"context_line":"        waiters.wait_for_volume_resource_status("},{"line_number":298,"context_line":"            client\u003dself.os_project_admin.snapshots_client_latest,"},{"line_number":299,"context_line":"            resource_id\u003dsnapshot_id, status\u003d\u0027error\u0027"},{"line_number":300,"context_line":"        )"},{"line_number":301,"context_line":"        self.do_request("},{"line_number":302,"context_line":"            \u0027update_snapshot_status\u0027, expected_status\u003dexceptions.Forbidden,"}],"source_content_type":"text/x-python","patch_set":6,"id":"94a34c24_53718c24","line":299,"range":{"start_line":294,"start_character":0,"end_line":299,"end_character":51},"in_reply_to":"15c5258c_5f69852f","updated":"2023-03-27 18:03:24.000000000","message":"Done","commit_id":"b44740924c2057551659e539890eac773186f452"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0c639959d98ea2ab28fd5b0977381e253c23d555","unresolved":true,"context_lines":[{"line_number":30,"context_line":"    @classmethod"},{"line_number":31,"context_line":"    def setup_clients(cls):"},{"line_number":32,"context_line":"        super().setup_clients()"},{"line_number":33,"context_line":"        cls.persona \u003d getattr(cls, f\u0027os_{cls.credentials[0]}\u0027)"},{"line_number":34,"context_line":"        cls.client \u003d cls.persona.snapshots_client_latest"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @classmethod"},{"line_number":37,"context_line":"    def setup_credentials(cls):"}],"source_content_type":"text/x-python","patch_set":10,"id":"d2cef064_ba79d9e1","line":34,"range":{"start_line":33,"start_character":0,"end_line":34,"end_character":56},"updated":"2023-03-13 18:29:31.000000000","message":"Honestly saying I do not like these magic :) and fetching things with the cls.credentials order. \n\nI think you might be refering the glance/keystone or other example on this but as temest fixed the project_id bug now you can eaisly access project_member|reader via their name itself.","commit_id":"fe1a14cc50bd1fcccb9224bd8cda6ddd50a10361"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"3d5152740029868f79d1696aca5f0a2a63089c96","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    @classmethod"},{"line_number":31,"context_line":"    def setup_clients(cls):"},{"line_number":32,"context_line":"        super().setup_clients()"},{"line_number":33,"context_line":"        cls.persona \u003d getattr(cls, f\u0027os_{cls.credentials[0]}\u0027)"},{"line_number":34,"context_line":"        cls.client \u003d cls.persona.snapshots_client_latest"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @classmethod"},{"line_number":37,"context_line":"    def setup_credentials(cls):"}],"source_content_type":"text/x-python","patch_set":10,"id":"f8c746d0_cb74e319","line":34,"range":{"start_line":33,"start_character":0,"end_line":34,"end_character":56},"in_reply_to":"d2cef064_ba79d9e1","updated":"2023-03-27 12:40:48.000000000","message":"Ack","commit_id":"fe1a14cc50bd1fcccb9224bd8cda6ddd50a10361"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0c639959d98ea2ab28fd5b0977381e253c23d555","unresolved":true,"context_lines":[{"line_number":86,"context_line":"    @classmethod"},{"line_number":87,"context_line":"    def setup_clients(cls):"},{"line_number":88,"context_line":"        super().setup_clients()"},{"line_number":89,"context_line":"        other_project_member \u003d cls.setup_user_client("},{"line_number":90,"context_line":"            client\u003dcls.os_project_admin,"},{"line_number":91,"context_line":"            project_id\u003dcls.persona.credentials.project_id"},{"line_number":92,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":10,"id":"d9da61ac_21f348de","line":89,"range":{"start_line":89,"start_character":8,"end_line":89,"end_character":29},"updated":"2023-03-13 18:29:31.000000000","message":"you can request it via project_alt_member in credentials and use it as self.os_project_alt_member","commit_id":"fe1a14cc50bd1fcccb9224bd8cda6ddd50a10361"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"3d5152740029868f79d1696aca5f0a2a63089c96","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    @classmethod"},{"line_number":87,"context_line":"    def setup_clients(cls):"},{"line_number":88,"context_line":"        super().setup_clients()"},{"line_number":89,"context_line":"        other_project_member \u003d cls.setup_user_client("},{"line_number":90,"context_line":"            client\u003dcls.os_project_admin,"},{"line_number":91,"context_line":"            project_id\u003dcls.persona.credentials.project_id"},{"line_number":92,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":10,"id":"b8741429_1d9d9664","line":89,"range":{"start_line":89,"start_character":8,"end_line":89,"end_character":29},"in_reply_to":"d9da61ac_21f348de","updated":"2023-03-27 12:40:48.000000000","message":"alt_member is created in another project.\nI changed it to admin instead.","commit_id":"fe1a14cc50bd1fcccb9224bd8cda6ddd50a10361"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0c639959d98ea2ab28fd5b0977381e253c23d555","unresolved":true,"context_lines":[{"line_number":90,"context_line":"            client\u003dcls.os_project_admin,"},{"line_number":91,"context_line":"            project_id\u003dcls.persona.credentials.project_id"},{"line_number":92,"context_line":"        )"},{"line_number":93,"context_line":"        cls.vol_other_client \u003d other_project_member.volumes_client_latest"},{"line_number":94,"context_line":"        cls.snap_other_client \u003d other_project_member.snapshots_client_latest"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    @decorators.idempotent_id(\u00275b3ec87f-443f-42f7-bd3c-ab05ea30c5e1\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ba04d3d_f9e86497","line":93,"range":{"start_line":93,"start_character":8,"end_line":93,"end_character":73},"updated":"2023-03-13 18:29:31.000000000","message":"for example here:\n\ncls.vol_other_client \u003d cls.os_project_alt_member.volumes_client_latest","commit_id":"fe1a14cc50bd1fcccb9224bd8cda6ddd50a10361"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"140a3bf90f72cff4350b5c57452bf0d40e9c08d0","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            client\u003dcls.os_project_admin,"},{"line_number":91,"context_line":"            project_id\u003dcls.persona.credentials.project_id"},{"line_number":92,"context_line":"        )"},{"line_number":93,"context_line":"        cls.vol_other_client \u003d other_project_member.volumes_client_latest"},{"line_number":94,"context_line":"        cls.snap_other_client \u003d other_project_member.snapshots_client_latest"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    @decorators.idempotent_id(\u00275b3ec87f-443f-42f7-bd3c-ab05ea30c5e1\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"018956b5_697e915d","line":93,"range":{"start_line":93,"start_character":8,"end_line":93,"end_character":73},"in_reply_to":"1ba04d3d_f9e86497","updated":"2023-03-27 18:03:24.000000000","message":"Done","commit_id":"fe1a14cc50bd1fcccb9224bd8cda6ddd50a10361"},{"author":{"_account_id":10459,"name":"Luigi Toscano","email":"ltoscano@redhat.com","username":"ltoscano"},"change_message_id":"3de2981dd998fb8c6bbbabe7168555e5527801bf","unresolved":true,"context_lines":[{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":"        self.do_request(method\u003d\u0027show_snapshot\u0027, snapshot_id\u003dsnapshot_id)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def make_snapshot(self, success\u003dTrue):"},{"line_number":58,"context_line":"        \"\"\""},{"line_number":59,"context_line":"        Test create_snapshot operation."},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"d183e5c6_2c3b5d5f","line":57,"updated":"2023-03-27 14:59:59.000000000","message":"instead of \"success\", why not \"expect_success\"?\nAlso, maybe there may be other result status than just success with a 202 and deny with Forbidden - or maybe not. But it would be worth wondering whether moving the expected results could make the code a bit less readable.","commit_id":"a7532d36296bd5ebee01879de710effc600c7e95"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"0f1b30c709a39ed7c6fb06cb0168a7c7037847c8","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":"        self.do_request(method\u003d\u0027show_snapshot\u0027, snapshot_id\u003dsnapshot_id)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def make_snapshot(self, success\u003dTrue):"},{"line_number":58,"context_line":"        \"\"\""},{"line_number":59,"context_line":"        Test create_snapshot operation."},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"06a7abde_402f6abc","line":57,"in_reply_to":"2126eefb_666aaef7","updated":"2023-04-20 11:45:50.000000000","message":"Done","commit_id":"a7532d36296bd5ebee01879de710effc600c7e95"},{"author":{"_account_id":10459,"name":"Luigi Toscano","email":"ltoscano@redhat.com","username":"ltoscano"},"change_message_id":"953a9adedf6f12d13f5a947bb420aee7f2f4aa98","unresolved":true,"context_lines":[{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":"        self.do_request(method\u003d\u0027show_snapshot\u0027, snapshot_id\u003dsnapshot_id)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def make_snapshot(self, success\u003dTrue):"},{"line_number":58,"context_line":"        \"\"\""},{"line_number":59,"context_line":"        Test create_snapshot operation."},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"2126eefb_666aaef7","line":57,"in_reply_to":"5b77ae80_bc470da3","updated":"2023-04-03 08:27:43.000000000","message":"It\u0027s a way to say that I find that solution a bit more flexible and future proof.","commit_id":"a7532d36296bd5ebee01879de710effc600c7e95"},{"author":{"_account_id":10459,"name":"Luigi Toscano","email":"ltoscano@redhat.com","username":"ltoscano"},"change_message_id":"df62c81d1f38286222c62c8740c4f88e0d4c5b04","unresolved":true,"context_lines":[{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":"        self.do_request(method\u003d\u0027show_snapshot\u0027, snapshot_id\u003dsnapshot_id)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def make_snapshot(self, success\u003dTrue):"},{"line_number":58,"context_line":"        \"\"\""},{"line_number":59,"context_line":"        Test create_snapshot operation."},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5b77ae80_bc470da3","line":57,"in_reply_to":"c073a6a1_53d92482","updated":"2023-03-31 11:14:10.000000000","message":"Uhm, have you seen the example with expected_status here, which looks a bit more flexible and avoid a \"boolean trap\"? https://review.opendev.org/c/openstack/cinder-tempest-plugin/+/876730/6/cinder_tempest_plugin/rbac/v3/test_user_messages.py","commit_id":"a7532d36296bd5ebee01879de710effc600c7e95"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"140a3bf90f72cff4350b5c57452bf0d40e9c08d0","unresolved":true,"context_lines":[{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":"        self.do_request(method\u003d\u0027show_snapshot\u0027, snapshot_id\u003dsnapshot_id)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def make_snapshot(self, success\u003dTrue):"},{"line_number":58,"context_line":"        \"\"\""},{"line_number":59,"context_line":"        Test create_snapshot operation."},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"c073a6a1_53d92482","line":57,"in_reply_to":"d183e5c6_2c3b5d5f","updated":"2023-03-27 18:03:24.000000000","message":"\u0027success\u0027 \u003d if operation should succeed\nif so, the expected result is 202 (in this test) and if operation should not succeed (\u003d forbidden) then the expected result is forbidden.\n\nit comes from what is allowed for each role, there is only 2 options: allowed/forbidden. Allowed is the expected result is each case (200, 202, ...) and forbidden is forbidden (403),\n\nmaybe then change \u0027success\u0027 to \u0027isAllowed\u0027 / \u0027is_allowed\u0027?","commit_id":"a7532d36296bd5ebee01879de710effc600c7e95"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"e412a789963c2728ce037003c40aaa28cb874f6b","unresolved":true,"context_lines":[{"line_number":51,"context_line":"        )"},{"line_number":52,"context_line":"        self.do_request(method\u003d\u0027show_snapshot\u0027, snapshot_id\u003dsnapshot_id)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def make_snapshot(self, is_allowed\u003dTrue):"},{"line_number":55,"context_line":"        \"\"\"Test create_snapshot operation."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        Args:"}],"source_content_type":"text/x-python","patch_set":14,"id":"62903d95_893cda8f","line":54,"range":{"start_line":54,"start_character":8,"end_line":54,"end_character":21},"updated":"2023-03-28 07:57:15.000000000","message":"I suggest to add underscore \u003d\u003e _create_snapshot","commit_id":"f36b744e39799400994902b6d4ddaea7df0f1713"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"38fec4e655a3e99212b4959062c9a2fe859f63cd","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        )"},{"line_number":52,"context_line":"        self.do_request(method\u003d\u0027show_snapshot\u0027, snapshot_id\u003dsnapshot_id)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def make_snapshot(self, is_allowed\u003dTrue):"},{"line_number":55,"context_line":"        \"\"\"Test create_snapshot operation."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        Args:"}],"source_content_type":"text/x-python","patch_set":14,"id":"fc2f4f06_27d56777","line":54,"range":{"start_line":54,"start_character":8,"end_line":54,"end_character":21},"in_reply_to":"62903d95_893cda8f","updated":"2023-03-28 08:12:05.000000000","message":"thanks, will change both here and in Volumes\nthanks","commit_id":"f36b744e39799400994902b6d4ddaea7df0f1713"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"e412a789963c2728ce037003c40aaa28cb874f6b","unresolved":true,"context_lines":[{"line_number":79,"context_line":"                volume_id\u003dvolume_id, name\u003dsnap_name"},{"line_number":80,"context_line":"            )"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def remove_snapshot(self, is_allowed\u003dTrue):"},{"line_number":83,"context_line":"        \"\"\"Test create_snapshot operation."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        Args:"}],"source_content_type":"text/x-python","patch_set":14,"id":"7e8e0d84_f3348640","line":82,"range":{"start_line":82,"start_character":8,"end_line":82,"end_character":23},"updated":"2023-03-28 07:57:15.000000000","message":"_delete_snapshot","commit_id":"f36b744e39799400994902b6d4ddaea7df0f1713"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"38fec4e655a3e99212b4959062c9a2fe859f63cd","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                volume_id\u003dvolume_id, name\u003dsnap_name"},{"line_number":80,"context_line":"            )"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def remove_snapshot(self, is_allowed\u003dTrue):"},{"line_number":83,"context_line":"        \"\"\"Test create_snapshot operation."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        Args:"}],"source_content_type":"text/x-python","patch_set":14,"id":"2654766d_7ddf2aa4","line":82,"range":{"start_line":82,"start_character":8,"end_line":82,"end_character":23},"in_reply_to":"7e8e0d84_f3348640","updated":"2023-03-28 08:12:05.000000000","message":"Ack","commit_id":"f36b744e39799400994902b6d4ddaea7df0f1713"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f4c66515045687ecac048cb491178c62ebe3465d","unresolved":true,"context_lines":[{"line_number":229,"context_line":"    @classmethod"},{"line_number":230,"context_line":"    def setup_credentials(cls):"},{"line_number":231,"context_line":"        super().setup_credentials()"},{"line_number":232,"context_line":"        cls.os_primary \u003d cls.os_project_member"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    @decorators.idempotent_id(\u00275b3ec87f-443f-42f7-bd3c-ab05ea30c5e1\u0027)"},{"line_number":235,"context_line":"    def test_list_snapshots(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"325d373a_7f6c7f4d","line":232,"range":{"start_line":232,"start_character":0,"end_line":232,"end_character":46},"updated":"2023-03-31 19:52:55.000000000","message":"we should not need this as os_primary and os_project_manager are same things tempest create.","commit_id":"fa15cc68022edfd39f2122f202f6597565629915"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"34737ca5ec4331389dbfe8b73d35609e0e5694b5","unresolved":false,"context_lines":[{"line_number":229,"context_line":"    @classmethod"},{"line_number":230,"context_line":"    def setup_credentials(cls):"},{"line_number":231,"context_line":"        super().setup_credentials()"},{"line_number":232,"context_line":"        cls.os_primary \u003d cls.os_project_member"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    @decorators.idempotent_id(\u00275b3ec87f-443f-42f7-bd3c-ab05ea30c5e1\u0027)"},{"line_number":235,"context_line":"    def test_list_snapshots(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"00fb4bf3_16e58782","line":232,"range":{"start_line":232,"start_character":0,"end_line":232,"end_character":46},"in_reply_to":"325d373a_7f6c7f4d","updated":"2023-04-02 09:40:45.000000000","message":"Ack","commit_id":"fa15cc68022edfd39f2122f202f6597565629915"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f4c66515045687ecac048cb491178c62ebe3465d","unresolved":true,"context_lines":[{"line_number":274,"context_line":""},{"line_number":275,"context_line":"class ProjectReaderTests(VolumeV3RbacSnapshotsTests, base.BaseVolumeTest):"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    credentials \u003d [\u0027project_reader\u0027, \u0027project_admin\u0027]"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    @classmethod"},{"line_number":280,"context_line":"    def setup_clients(cls):"}],"source_content_type":"text/x-python","patch_set":18,"id":"d1fc35a5_28f43ad8","line":277,"range":{"start_line":277,"start_character":0,"end_line":277,"end_character":53},"updated":"2023-03-31 19:52:55.000000000","message":"test I am more interested in reader role is\n\nTest1\n- cerate resource by project_member|admin\n- try to get those created resource by project_reader role and it should be able to get\n\nTest2\n- cerate resource by project_alt_member|admin\n- try to get those created resource by project_reader role (in different project than resource were created) and it should be able to get","commit_id":"fa15cc68022edfd39f2122f202f6597565629915"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"2f89688e73046dc8f37b43b944b6ec344800a8de","unresolved":false,"context_lines":[{"line_number":274,"context_line":""},{"line_number":275,"context_line":"class ProjectReaderTests(VolumeV3RbacSnapshotsTests, base.BaseVolumeTest):"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    credentials \u003d [\u0027project_reader\u0027, \u0027project_admin\u0027]"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    @classmethod"},{"line_number":280,"context_line":"    def setup_clients(cls):"}],"source_content_type":"text/x-python","patch_set":18,"id":"1c4fad87_2aea4ace","line":277,"range":{"start_line":277,"start_character":0,"end_line":277,"end_character":53},"in_reply_to":"660d6a3b_9860c4d9","updated":"2023-04-03 17:19:01.000000000","message":"perfect, sounds good","commit_id":"fa15cc68022edfd39f2122f202f6597565629915"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"34737ca5ec4331389dbfe8b73d35609e0e5694b5","unresolved":false,"context_lines":[{"line_number":274,"context_line":""},{"line_number":275,"context_line":"class ProjectReaderTests(VolumeV3RbacSnapshotsTests, base.BaseVolumeTest):"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    credentials \u003d [\u0027project_reader\u0027, \u0027project_admin\u0027]"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    @classmethod"},{"line_number":280,"context_line":"    def setup_clients(cls):"}],"source_content_type":"text/x-python","patch_set":18,"id":"660d6a3b_9860c4d9","line":277,"range":{"start_line":277,"start_character":0,"end_line":277,"end_character":53},"in_reply_to":"82f30a23_9d2ee25d","updated":"2023-04-02 09:40:45.000000000","message":"alt tests would be implemented later, not as part of this patch","commit_id":"fa15cc68022edfd39f2122f202f6597565629915"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d13cc8735ffa8b11d468b6eb82f714a249334150","unresolved":true,"context_lines":[{"line_number":274,"context_line":""},{"line_number":275,"context_line":"class ProjectReaderTests(VolumeV3RbacSnapshotsTests, base.BaseVolumeTest):"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    credentials \u003d [\u0027project_reader\u0027, \u0027project_admin\u0027]"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    @classmethod"},{"line_number":280,"context_line":"    def setup_clients(cls):"}],"source_content_type":"text/x-python","patch_set":18,"id":"82f30a23_9d2ee25d","line":277,"range":{"start_line":277,"start_character":0,"end_line":277,"end_character":53},"in_reply_to":"d1fc35a5_28f43ad8","updated":"2023-03-31 19:54:02.000000000","message":"correction in Test2\n\n- cerate resource by project_alt_member|admin\n- try to get those created resource by project_reader role (reader user in different project than resource were created) and it should NOT be able to get","commit_id":"fa15cc68022edfd39f2122f202f6597565629915"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f4c66515045687ecac048cb491178c62ebe3465d","unresolved":true,"context_lines":[{"line_number":284,"context_line":"    @classmethod"},{"line_number":285,"context_line":"    def setup_credentials(cls):"},{"line_number":286,"context_line":"        super().setup_credentials()"},{"line_number":287,"context_line":"        cls.os_primary \u003d cls.os_project_reader"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    @decorators.idempotent_id(\u0027dd8e19dc-c8fd-443c-8aed-cdffe07fa6be\u0027)"},{"line_number":290,"context_line":"    def test_list_snapshots(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"631b3dcc_26a27310","line":287,"range":{"start_line":287,"start_character":12,"end_line":287,"end_character":23},"updated":"2023-03-31 19:52:55.000000000","message":"this is confusing, os_primary is old cred manager which is member role but you are overriding it with reader creds","commit_id":"fa15cc68022edfd39f2122f202f6597565629915"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"2f89688e73046dc8f37b43b944b6ec344800a8de","unresolved":true,"context_lines":[{"line_number":284,"context_line":"    @classmethod"},{"line_number":285,"context_line":"    def setup_credentials(cls):"},{"line_number":286,"context_line":"        super().setup_credentials()"},{"line_number":287,"context_line":"        cls.os_primary \u003d cls.os_project_reader"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    @decorators.idempotent_id(\u0027dd8e19dc-c8fd-443c-8aed-cdffe07fa6be\u0027)"},{"line_number":290,"context_line":"    def test_list_snapshots(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"ca1800eb_801f8834","line":287,"range":{"start_line":287,"start_character":12,"end_line":287,"end_character":23},"in_reply_to":"00c4cee7_31b9c989","updated":"2023-04-03 17:19:01.000000000","message":"yeah it is good to add it in the class where they are used. +1","commit_id":"fa15cc68022edfd39f2122f202f6597565629915"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"34737ca5ec4331389dbfe8b73d35609e0e5694b5","unresolved":true,"context_lines":[{"line_number":284,"context_line":"    @classmethod"},{"line_number":285,"context_line":"    def setup_credentials(cls):"},{"line_number":286,"context_line":"        super().setup_credentials()"},{"line_number":287,"context_line":"        cls.os_primary \u003d cls.os_project_reader"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    @decorators.idempotent_id(\u0027dd8e19dc-c8fd-443c-8aed-cdffe07fa6be\u0027)"},{"line_number":290,"context_line":"    def test_list_snapshots(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"00c4cee7_31b9c989","line":287,"range":{"start_line":287,"start_character":12,"end_line":287,"end_character":23},"in_reply_to":"631b3dcc_26a27310","updated":"2023-04-02 09:40:45.000000000","message":"a w/a that was taken from test_capabilities.py.\n\nI will add this in base instead:\n\n    def setup_clients(cls):\n        super(BaseVolumeTest, cls).setup_clients()\n---\u003e    if not CONF.scope_enforce.cinder:    \n            cls.backups_client \u003d cls.os_primary.backups_client_latest\n            cls.volumes_client \u003d cls.os_primary.volumes_client_latest\n            cls.snapshots_client \u003d cls.os_primary.snapshots_client_latest","commit_id":"fa15cc68022edfd39f2122f202f6597565629915"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"0f1b30c709a39ed7c6fb06cb0168a7c7037847c8","unresolved":false,"context_lines":[{"line_number":284,"context_line":"    @classmethod"},{"line_number":285,"context_line":"    def setup_credentials(cls):"},{"line_number":286,"context_line":"        super().setup_credentials()"},{"line_number":287,"context_line":"        cls.os_primary \u003d cls.os_project_reader"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    @decorators.idempotent_id(\u0027dd8e19dc-c8fd-443c-8aed-cdffe07fa6be\u0027)"},{"line_number":290,"context_line":"    def test_list_snapshots(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"6b85658c_422b247f","line":287,"range":{"start_line":287,"start_character":12,"end_line":287,"end_character":23},"in_reply_to":"ca1800eb_801f8834","updated":"2023-04-20 11:45:50.000000000","message":"Done","commit_id":"fa15cc68022edfd39f2122f202f6597565629915"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"9d58bf1e21319c58eb95404e5067208a1fbc8bba","unresolved":true,"context_lines":[{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    @decorators.idempotent_id(\u002713ae344f-fa01-44cc-b9f1-d04452940dc1\u0027)"},{"line_number":298,"context_line":"    def test_create_snapshot(self):"},{"line_number":299,"context_line":"        self._create_snapshot(is_allowed\u003dFalse)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    @decorators.idempotent_id(\u00275b58f647-da0f-4d2a-bf68-680fc692efb4\u0027)"},{"line_number":302,"context_line":"    def test_delete_snapshot(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"c5dd1c30_32a2ba8b","line":299,"range":{"start_line":299,"start_character":30,"end_line":299,"end_character":46},"updated":"2023-03-29 12:58:54.000000000","message":"It\u0027s confusing that sometimes the default value of \"is_allowed\" is true and sometimes false. It makes the review difficult.\nPlease be consistent with this in all methods.","commit_id":"fa15cc68022edfd39f2122f202f6597565629915"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"75fbec7b8843831ceea2c0eb04c646eb18ef457a","unresolved":true,"context_lines":[{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    @decorators.idempotent_id(\u002713ae344f-fa01-44cc-b9f1-d04452940dc1\u0027)"},{"line_number":298,"context_line":"    def test_create_snapshot(self):"},{"line_number":299,"context_line":"        self._create_snapshot(is_allowed\u003dFalse)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    @decorators.idempotent_id(\u00275b58f647-da0f-4d2a-bf68-680fc692efb4\u0027)"},{"line_number":302,"context_line":"    def test_delete_snapshot(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"a9c62ed4_c16df898","line":299,"range":{"start_line":299,"start_character":30,"end_line":299,"end_character":46},"in_reply_to":"4094b542_0c93ec90","updated":"2023-03-30 10:54:46.000000000","message":"I understood the logic here. I would say don\u0027t even set a default value to make it easy to distinguish between an authorized user and not.\nBut it\u0027s not really critical.","commit_id":"fa15cc68022edfd39f2122f202f6597565629915"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"34737ca5ec4331389dbfe8b73d35609e0e5694b5","unresolved":false,"context_lines":[{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    @decorators.idempotent_id(\u002713ae344f-fa01-44cc-b9f1-d04452940dc1\u0027)"},{"line_number":298,"context_line":"    def test_create_snapshot(self):"},{"line_number":299,"context_line":"        self._create_snapshot(is_allowed\u003dFalse)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    @decorators.idempotent_id(\u00275b58f647-da0f-4d2a-bf68-680fc692efb4\u0027)"},{"line_number":302,"context_line":"    def test_delete_snapshot(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"6a2da5cb_203e861a","line":299,"range":{"start_line":299,"start_character":30,"end_line":299,"end_character":46},"in_reply_to":"a9c62ed4_c16df898","updated":"2023-04-02 09:40:45.000000000","message":"Ack","commit_id":"fa15cc68022edfd39f2122f202f6597565629915"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"34737ca5ec4331389dbfe8b73d35609e0e5694b5","unresolved":false,"context_lines":[{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    @decorators.idempotent_id(\u002713ae344f-fa01-44cc-b9f1-d04452940dc1\u0027)"},{"line_number":298,"context_line":"    def test_create_snapshot(self):"},{"line_number":299,"context_line":"        self._create_snapshot(is_allowed\u003dFalse)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    @decorators.idempotent_id(\u00275b58f647-da0f-4d2a-bf68-680fc692efb4\u0027)"},{"line_number":302,"context_line":"    def test_delete_snapshot(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"df58f97c_ffc69224","line":299,"range":{"start_line":299,"start_character":30,"end_line":299,"end_character":46},"in_reply_to":"a9c62ed4_c16df898","updated":"2023-04-02 09:40:45.000000000","message":"Ack","commit_id":"fa15cc68022edfd39f2122f202f6597565629915"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"549c2703297c2833436266c963e234dc50e0ad48","unresolved":true,"context_lines":[{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    @decorators.idempotent_id(\u002713ae344f-fa01-44cc-b9f1-d04452940dc1\u0027)"},{"line_number":298,"context_line":"    def test_create_snapshot(self):"},{"line_number":299,"context_line":"        self._create_snapshot(is_allowed\u003dFalse)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    @decorators.idempotent_id(\u00275b58f647-da0f-4d2a-bf68-680fc692efb4\u0027)"},{"line_number":302,"context_line":"    def test_delete_snapshot(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"4094b542_0c93ec90","line":299,"range":{"start_line":299,"start_character":30,"end_line":299,"end_character":46},"in_reply_to":"c5dd1c30_32a2ba8b","updated":"2023-03-30 10:08:38.000000000","message":"it depends - if only admin is allowed to perform an action, and member+reader are not - then the default would be False.\nif at least two roles are allowed to perform the action - then the default would be True.","commit_id":"fa15cc68022edfd39f2122f202f6597565629915"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f4c66515045687ecac048cb491178c62ebe3465d","unresolved":true,"context_lines":[{"line_number":302,"context_line":"    def test_delete_snapshot(self):"},{"line_number":303,"context_line":"        self._remove_snapshot(is_allowed\u003dFalse)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    @decorators.idempotent_id(\u0027809d8c8c-25bf-4f1f-9b77-1a81ce4292d1\u0027)"},{"line_number":306,"context_line":"    def test_reset_snapshot_status(self):"},{"line_number":307,"context_line":"        self._reset_snapshot_status()"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    @decorators.idempotent_id(\u0027c46f5df8-9a6f-4ed6-b94c-3b65ef05ee9e\u0027)"},{"line_number":310,"context_line":"    def test_update_snapshot(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"39dda51b_77434026","line":307,"range":{"start_line":305,"start_character":0,"end_line":307,"end_character":37},"updated":"2023-03-31 19:52:55.000000000","message":"is reader allowed to reset status?","commit_id":"fa15cc68022edfd39f2122f202f6597565629915"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"2f89688e73046dc8f37b43b944b6ec344800a8de","unresolved":false,"context_lines":[{"line_number":302,"context_line":"    def test_delete_snapshot(self):"},{"line_number":303,"context_line":"        self._remove_snapshot(is_allowed\u003dFalse)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    @decorators.idempotent_id(\u0027809d8c8c-25bf-4f1f-9b77-1a81ce4292d1\u0027)"},{"line_number":306,"context_line":"    def test_reset_snapshot_status(self):"},{"line_number":307,"context_line":"        self._reset_snapshot_status()"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    @decorators.idempotent_id(\u0027c46f5df8-9a6f-4ed6-b94c-3b65ef05ee9e\u0027)"},{"line_number":310,"context_line":"    def test_update_snapshot(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"ccd16469_37702b31","line":307,"range":{"start_line":305,"start_character":0,"end_line":307,"end_character":37},"in_reply_to":"1c62cd01_03e4c68e","updated":"2023-04-03 17:19:01.000000000","message":"ohk, I think I got confused the same way tosky was. you are passing  is_allowed\u003dFalse in some places even that is default and some palces not and I thought  is_allowed is True by default.","commit_id":"fa15cc68022edfd39f2122f202f6597565629915"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"34737ca5ec4331389dbfe8b73d35609e0e5694b5","unresolved":false,"context_lines":[{"line_number":302,"context_line":"    def test_delete_snapshot(self):"},{"line_number":303,"context_line":"        self._remove_snapshot(is_allowed\u003dFalse)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    @decorators.idempotent_id(\u0027809d8c8c-25bf-4f1f-9b77-1a81ce4292d1\u0027)"},{"line_number":306,"context_line":"    def test_reset_snapshot_status(self):"},{"line_number":307,"context_line":"        self._reset_snapshot_status()"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    @decorators.idempotent_id(\u0027c46f5df8-9a6f-4ed6-b94c-3b65ef05ee9e\u0027)"},{"line_number":310,"context_line":"    def test_update_snapshot(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"1c62cd01_03e4c68e","line":307,"range":{"start_line":305,"start_character":0,"end_line":307,"end_character":37},"in_reply_to":"39dda51b_77434026","updated":"2023-04-02 09:40:45.000000000","message":"no, notice that is_allowed\u003dFalse by default.","commit_id":"fa15cc68022edfd39f2122f202f6597565629915"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f4c66515045687ecac048cb491178c62ebe3465d","unresolved":true,"context_lines":[{"line_number":314,"context_line":"    def test_update_snapshot_status(self):"},{"line_number":315,"context_line":"        self._update_snapshot_status(is_allowed\u003dFalse)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    @decorators.idempotent_id(\u002763aa8184-897d-4e00-9b80-d2e7828f1b13\u0027)"},{"line_number":318,"context_line":"    def test_force_delete_snapshot(self):"},{"line_number":319,"context_line":"        self._force_delete_snapshot()"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    @decorators.idempotent_id(\u002735495666-b663-4c68-ba44-0695e30a6838\u0027)"},{"line_number":322,"context_line":"    def test_unmanage_snapshot(self):"},{"line_number":323,"context_line":"        self._unmanage_snapshot()"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"    @decorators.idempotent_id(\u0027d2d1326d-fb47-4448-a1e1-2d1219d30fd5\u0027)"},{"line_number":326,"context_line":"    def test_manage_snapshot(self):"},{"line_number":327,"context_line":"        self._manage_snapshot()"}],"source_content_type":"text/x-python","patch_set":18,"id":"28877e79_a02ce81b","line":327,"range":{"start_line":317,"start_character":0,"end_line":327,"end_character":31},"updated":"2023-03-31 19:52:55.000000000","message":"ditto, is reader allowed to do those write operation?","commit_id":"fa15cc68022edfd39f2122f202f6597565629915"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"2f89688e73046dc8f37b43b944b6ec344800a8de","unresolved":false,"context_lines":[{"line_number":314,"context_line":"    def test_update_snapshot_status(self):"},{"line_number":315,"context_line":"        self._update_snapshot_status(is_allowed\u003dFalse)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    @decorators.idempotent_id(\u002763aa8184-897d-4e00-9b80-d2e7828f1b13\u0027)"},{"line_number":318,"context_line":"    def test_force_delete_snapshot(self):"},{"line_number":319,"context_line":"        self._force_delete_snapshot()"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    @decorators.idempotent_id(\u002735495666-b663-4c68-ba44-0695e30a6838\u0027)"},{"line_number":322,"context_line":"    def test_unmanage_snapshot(self):"},{"line_number":323,"context_line":"        self._unmanage_snapshot()"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"    @decorators.idempotent_id(\u0027d2d1326d-fb47-4448-a1e1-2d1219d30fd5\u0027)"},{"line_number":326,"context_line":"    def test_manage_snapshot(self):"},{"line_number":327,"context_line":"        self._manage_snapshot()"}],"source_content_type":"text/x-python","patch_set":18,"id":"92938c31_4d96ac8e","line":327,"range":{"start_line":317,"start_character":0,"end_line":327,"end_character":31},"in_reply_to":"0081c99a_f661c809","updated":"2023-04-03 17:19:01.000000000","message":"ack","commit_id":"fa15cc68022edfd39f2122f202f6597565629915"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"34737ca5ec4331389dbfe8b73d35609e0e5694b5","unresolved":true,"context_lines":[{"line_number":314,"context_line":"    def test_update_snapshot_status(self):"},{"line_number":315,"context_line":"        self._update_snapshot_status(is_allowed\u003dFalse)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    @decorators.idempotent_id(\u002763aa8184-897d-4e00-9b80-d2e7828f1b13\u0027)"},{"line_number":318,"context_line":"    def test_force_delete_snapshot(self):"},{"line_number":319,"context_line":"        self._force_delete_snapshot()"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    @decorators.idempotent_id(\u002735495666-b663-4c68-ba44-0695e30a6838\u0027)"},{"line_number":322,"context_line":"    def test_unmanage_snapshot(self):"},{"line_number":323,"context_line":"        self._unmanage_snapshot()"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"    @decorators.idempotent_id(\u0027d2d1326d-fb47-4448-a1e1-2d1219d30fd5\u0027)"},{"line_number":326,"context_line":"    def test_manage_snapshot(self):"},{"line_number":327,"context_line":"        self._manage_snapshot()"}],"source_content_type":"text/x-python","patch_set":18,"id":"0081c99a_f661c809","line":327,"range":{"start_line":317,"start_character":0,"end_line":327,"end_character":31},"in_reply_to":"28877e79_a02ce81b","updated":"2023-04-02 09:40:45.000000000","message":"Same here, the default value here is false.\n\nThe default value changes - If only admin is allowed to perform an action, and member+reader are not - then the default would be False.\nIf at least two roles are allowed to perform the action - Then the default would be True.\n\nWhat would be better:\n1. Remove the default value and set the expected value (is_allowed\u003dTrue or is_allowed\u003dFalse) for each test?\n2. Change the value to expected status as was suggested here: https://review.opendev.org/c/openstack/cinder-tempest-plugin/+/876730/6/cinder_tempest_plugin/rbac/v3/test_user_messages.py ?","commit_id":"fa15cc68022edfd39f2122f202f6597565629915"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"16d186aae5eea0a101737d977dd74cddeb6e679c","unresolved":true,"context_lines":[{"line_number":147,"context_line":"            client\u003dself.snap_other_client, volume_id\u003dvolume_id"},{"line_number":148,"context_line":"        )"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        resert_status \u003d \u0027creating\u0027 if expected_status \u003d\u003d 202 else \u0027error\u0027"},{"line_number":151,"context_line":"        request_status \u003d \u0027error\u0027 if expected_status \u003d\u003d 202 else \u0027creating\u0027"},{"line_number":152,"context_line":"        self.os_project_admin.snapshots_client_latest.reset_snapshot_status("},{"line_number":153,"context_line":"            snapshot_id\u003dsnapshot_id, status\u003dresert_status"}],"source_content_type":"text/x-python","patch_set":31,"id":"2f735b61_0ef04a2f","line":150,"range":{"start_line":150,"start_character":8,"end_line":150,"end_character":21},"updated":"2023-05-22 13:56:15.000000000","message":"just curious, is resert an abbreviation of something?","commit_id":"22083f2d1287657b132aefe96f6aff40daa710ec"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"0501efb2d98f988d6ff0ed3837361d17a3771edc","unresolved":true,"context_lines":[{"line_number":147,"context_line":"            client\u003dself.snap_other_client, volume_id\u003dvolume_id"},{"line_number":148,"context_line":"        )"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        resert_status \u003d \u0027creating\u0027 if expected_status \u003d\u003d 202 else \u0027error\u0027"},{"line_number":151,"context_line":"        request_status \u003d \u0027error\u0027 if expected_status \u003d\u003d 202 else \u0027creating\u0027"},{"line_number":152,"context_line":"        self.os_project_admin.snapshots_client_latest.reset_snapshot_status("},{"line_number":153,"context_line":"            snapshot_id\u003dsnapshot_id, status\u003dresert_status"}],"source_content_type":"text/x-python","patch_set":31,"id":"75dfbf7b_55c0bdf6","line":150,"range":{"start_line":150,"start_character":8,"end_line":150,"end_character":21},"in_reply_to":"2f735b61_0ef04a2f","updated":"2023-05-23 09:56:18.000000000","message":"😊same question here","commit_id":"22083f2d1287657b132aefe96f6aff40daa710ec"},{"author":{"_account_id":35621,"name":"Evelina Shames","display_name":"Evelina Shames","email":"ESHAMES@REDHAT.COM","username":"eshames"},"change_message_id":"00a9f5e6a298186d3d720adcf1a8bd417ac9d4ca","unresolved":false,"context_lines":[{"line_number":147,"context_line":"            client\u003dself.snap_other_client, volume_id\u003dvolume_id"},{"line_number":148,"context_line":"        )"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        resert_status \u003d \u0027creating\u0027 if expected_status \u003d\u003d 202 else \u0027error\u0027"},{"line_number":151,"context_line":"        request_status \u003d \u0027error\u0027 if expected_status \u003d\u003d 202 else \u0027creating\u0027"},{"line_number":152,"context_line":"        self.os_project_admin.snapshots_client_latest.reset_snapshot_status("},{"line_number":153,"context_line":"            snapshot_id\u003dsnapshot_id, status\u003dresert_status"}],"source_content_type":"text/x-python","patch_set":31,"id":"32cc0319_6e071e0f","line":150,"range":{"start_line":150,"start_character":8,"end_line":150,"end_character":21},"in_reply_to":"75dfbf7b_55c0bdf6","updated":"2023-05-23 10:45:29.000000000","message":"typo, fixing 😊","commit_id":"22083f2d1287657b132aefe96f6aff40daa710ec"}]}
