)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e30a32910f258f52481a94eb0cd75f4a004f65fa","unresolved":true,"context_lines":[{"line_number":9,"context_line":"This commit adds some basic protection tests so that we can start"},{"line_number":10,"context_line":"testing the secure RBAC changes proposed to glance."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Depends-On: Ia0809b2b27ac8cf9325e264b3298149feea07eb4"},{"line_number":13,"context_line":"Change-Id: Iccc0e8dbbb726b532a91cb35f030c032046fc4c4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"3fd83c65_957e86d9","line":12,"updated":"2021-10-14 17:25:47.000000000","message":"Doesn\u0027t hurt anything, but this is no longer relevant. Also, you only need to have this on the base patch in a series from another tree like this, not all the patches. The ones stacked on top of the base will all get the same dependencies.","commit_id":"55d726769ffb5a2cb256e533fdfa268a9099523d"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"6468a6410f6b12d8df54d9d6df0c71e2885c1ce1","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This commit adds some basic protection tests so that we can start"},{"line_number":10,"context_line":"testing the secure RBAC changes proposed to glance."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Depends-On: Ia0809b2b27ac8cf9325e264b3298149feea07eb4"},{"line_number":13,"context_line":"Change-Id: Iccc0e8dbbb726b532a91cb35f030c032046fc4c4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"10c7f7a6_682c59ef","line":12,"in_reply_to":"3fd83c65_957e86d9","updated":"2021-12-15 06:02:01.000000000","message":"Ack","commit_id":"55d726769ffb5a2cb256e533fdfa268a9099523d"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"7d7b9c838224d477d1ea671dc9053c6b30ef8890","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"1d855d66_2844c993","updated":"2021-10-13 21:39:01.000000000","message":"A few nitpicks that can be adressed in this patch or a followup patch.","commit_id":"627d9aca2f97a99a2a03b3135867bca888ddb4de"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1f6a20a990920124ab7da10abd91ae572d7112a3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"468e3951_6280e27c","updated":"2021-10-14 18:34:07.000000000","message":"Aight, sounds like lance is good with this version. We can work on potentially fixing the concurrency thing later.","commit_id":"55d726769ffb5a2cb256e533fdfa268a9099523d"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"e2c9d91c9ba628c02fddf929396fd8e9c7a656f5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"78219ce7_b5b88862","updated":"2022-04-13 05:03:32.000000000","message":"Looks good to me, Kindly reply to all open comments or mark those as resolved.\nThank you!","commit_id":"cbc85d0efc76cc0cf1f5596e6d054cae5b172408"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b37eb92fb6ad14bc9116c665a3c0215efe3fb924","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"4138553d_52b55296","updated":"2022-04-19 14:47:19.000000000","message":"Sorry, found a bug that I hadn\u0027t noticed before","commit_id":"cbc85d0efc76cc0cf1f5596e6d054cae5b172408"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"bf190232d57d33ccdd4eed4963f885830b6e1266","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"b6c4c62a_10b451b7","updated":"2022-03-02 05:32:48.000000000","message":"recheck","commit_id":"cbc85d0efc76cc0cf1f5596e6d054cae5b172408"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"8910cee2658b68bffdf00fb65ae375be93f3f96d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"3116d9f1_1288b20a","updated":"2022-05-16 14:01:34.000000000","message":"As I suspect, we are now having intermittent failure for metadef tempest plugin tests since we removed the locking there;\n\nhttps://zuul.opendev.org/t/openstack/build/85658e9e913247c795de1dec6ea409e6\nhttps://review.opendev.org/841837","commit_id":"81f8b0214dd79ba565be051fd67fdbbed1d476a2"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"5246bc8bd849513531900912082b5815dcc8536f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"20b12a69_cc6870ed","updated":"2022-05-16 08:55:06.000000000","message":"Looks good,thank you!","commit_id":"81f8b0214dd79ba565be051fd67fdbbed1d476a2"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"484ef52b7189554941fdc13334a39793b2dfeef1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"f16e1a1b_4a53068c","updated":"2022-07-07 19:28:49.000000000","message":"this patch or code from this patch needs to backport to fix failure in stable/xena\n\nhttps://zuul.opendev.org/t/openstack/build/34f7e5a6585349179f9f7b78eb7b011d","commit_id":"81f8b0214dd79ba565be051fd67fdbbed1d476a2"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6effce05e5d0f56baea94990579d80a7181178e7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"76c9b16a_d594f4c4","in_reply_to":"3116d9f1_1288b20a","updated":"2022-05-16 14:14:46.000000000","message":"You\u0027re suggesting that we\u0027re deleting more than just the resources created in this (or some other) test, which causes the 404 right? I don\u0027t see that in this test, but maybe others.\n\nIf something else is doing a delete-all, then that would also delete actual data from someone running tempest against their live cloud (which is supposed to be supported).\n\nSo where do you think we\u0027re doing that?","commit_id":"81f8b0214dd79ba565be051fd67fdbbed1d476a2"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"94ad77837a44656c72afd4c8110fce58c71d4476","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"0eced192_c70a2d77","in_reply_to":"41ce508c_ea68c4e8","updated":"2022-05-16 14:38:07.000000000","message":"Yes, need a quick fix to unblock our gate, since Pranali is not here I would try to put up a quick patch as soon as finished with current work!","commit_id":"81f8b0214dd79ba565be051fd67fdbbed1d476a2"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"704c07f22a7d0b874bc50045da571276ee08c161","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"903d9f98_3795a311","in_reply_to":"76c9b16a_d594f4c4","updated":"2022-05-16 14:25:08.000000000","message":"As per my understanding, suppose test_list_namespaces [1],returns 8 namespaces available atm (e.g 4 created by this test and 4 created by different test) and while it is asserting the other test might finish its execution and cleanups the 4 namespaces created by it. At that time test_list_namespaces will fail with 404 not found error.\n\n[1] https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_856/841837/3/check/glance-secure-rbac-protection-functional/85658e9/testr_results.html\n\nTo avoid this issue, I guess in the list test case we should only assert the data created by that test.","commit_id":"81f8b0214dd79ba565be051fd67fdbbed1d476a2"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e9a1e20a68e9928490db0cd325a2c7d7f82b50c8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"41ce508c_ea68c4e8","in_reply_to":"903d9f98_3795a311","updated":"2022-05-16 14:30:27.000000000","message":"Ah, yep, I was focused on the idea of \"deleting things that are not ours\" but \"listing things that are not ours\" is also relevant. Good call.\n\nSo yeah, it should ignore the presence or absence of not-created-here namespaces.","commit_id":"81f8b0214dd79ba565be051fd67fdbbed1d476a2"}],"glance_tempest_plugin/tests/rbac/v2/base.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c5eeba968f0122fcc88b4dd4b6ff8f8dbaf0b22d","unresolved":true,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"class MetadefV2RbacBaseTests(object):"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    @classmethod"},{"line_number":90,"context_line":"    def skip_checks(cls):"},{"line_number":91,"context_line":"        super().skip_checks()"}],"source_content_type":"text/x-python","patch_set":2,"id":"74494ab7_72ac9bbc","line":88,"updated":"2021-08-26 16:02:50.000000000","message":"nit: remove blank line","commit_id":"00925aebf3352efd752ee24af5d1cf31752c6fe5"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"0352bd4ca28503b0992d4b3c99f3cda863c77540","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"class MetadefV2RbacBaseTests(object):"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    @classmethod"},{"line_number":90,"context_line":"    def skip_checks(cls):"},{"line_number":91,"context_line":"        super().skip_checks()"}],"source_content_type":"text/x-python","patch_set":2,"id":"134f064a_273faafd","line":88,"in_reply_to":"74494ab7_72ac9bbc","updated":"2021-08-26 19:05:37.000000000","message":"Done","commit_id":"00925aebf3352efd752ee24af5d1cf31752c6fe5"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"0b7d94c206dfb081813b44706d872857b0119255","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"efc92261_5c0e1105","line":172,"range":{"start_line":160,"start_character":4,"end_line":172,"end_character":0},"updated":"2021-08-26 17:53:49.000000000","message":"Just realized that we don\u0027t need this,\ncleaning up namespace will also clean this up as db api for delete namespace first deletes all its foreign references, same goes for object as well.","commit_id":"00925aebf3352efd752ee24af5d1cf31752c6fe5"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"0352bd4ca28503b0992d4b3c99f3cda863c77540","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c2a5f6f1_76766256","line":172,"range":{"start_line":160,"start_character":4,"end_line":172,"end_character":0},"in_reply_to":"efc92261_5c0e1105","updated":"2021-08-26 19:05:37.000000000","message":"Ack","commit_id":"00925aebf3352efd752ee24af5d1cf31752c6fe5"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fa888131a14b0f6b0d7f8ea3344c1d4c6f8f1385","unresolved":true,"context_lines":[{"line_number":97,"context_line":"        super(MetadefV2RbacBaseTests, cls).setup_clients()"},{"line_number":98,"context_line":"        # FIXME(lbragstad): This should use os_system_admin when glance"},{"line_number":99,"context_line":"        # supports system scope."},{"line_number":100,"context_line":"        cls.admin_client \u003d cls.os_project_admin.namespaces_client"},{"line_number":101,"context_line":"        cls.alt_admin_client \u003d cls.os_project_alt_admin.namespaces_client"},{"line_number":102,"context_line":"        cls.ns_admin_client \u003d cls.os_project_admin.namespaces_client"},{"line_number":103,"context_line":"        cls.ns_alt_admin_client \u003d cls.os_project_alt_admin.namespaces_client"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def do_request(self, method, expected_status\u003d200, client\u003dNone, **payload):"},{"line_number":106,"context_line":"        if not client:"}],"source_content_type":"text/x-python","patch_set":5,"id":"f975ce83_fe2f8d2c","line":103,"range":{"start_line":100,"start_character":0,"end_line":103,"end_character":76},"updated":"2021-08-27 15:12:53.000000000","message":"I think we should use any two of them and remove the other two.","commit_id":"db4a6a43cd1c1e49dd491d16dfe23080ca4a72b5"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"534e4e5f8b65a76183625d888ab194de3c2942e4","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        super(MetadefV2RbacBaseTests, cls).setup_clients()"},{"line_number":98,"context_line":"        # FIXME(lbragstad): This should use os_system_admin when glance"},{"line_number":99,"context_line":"        # supports system scope."},{"line_number":100,"context_line":"        cls.admin_client \u003d cls.os_project_admin.namespaces_client"},{"line_number":101,"context_line":"        cls.alt_admin_client \u003d cls.os_project_alt_admin.namespaces_client"},{"line_number":102,"context_line":"        cls.ns_admin_client \u003d cls.os_project_admin.namespaces_client"},{"line_number":103,"context_line":"        cls.ns_alt_admin_client \u003d cls.os_project_alt_admin.namespaces_client"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def do_request(self, method, expected_status\u003d200, client\u003dNone, **payload):"},{"line_number":106,"context_line":"        if not client:"}],"source_content_type":"text/x-python","patch_set":5,"id":"95eee2ae_7621eab0","line":103,"range":{"start_line":100,"start_character":0,"end_line":103,"end_character":76},"in_reply_to":"f975ce83_fe2f8d2c","updated":"2022-04-13 08:05:15.000000000","message":"Done","commit_id":"db4a6a43cd1c1e49dd491d16dfe23080ca4a72b5"}],"glance_tempest_plugin/tests/rbac/v2/metadefs/test_resource_types.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c5eeba968f0122fcc88b4dd4b6ff8f8dbaf0b22d","unresolved":true,"context_lines":[{"line_number":36,"context_line":"        cls.project_id \u003d cls.persona.namespaces_client.project_id"},{"line_number":37,"context_line":"        cls.alt_project_id \u003d cls.alt_persona.namespaces_client.project_id"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        cls.ns_admin_client \u003d cls.os_project_admin.namespaces_client"},{"line_number":40,"context_line":"        cls.ns_alt_admin_client \u003d cls.os_project_alt_admin.namespaces_client"},{"line_number":41,"context_line":"        cls.rs_type_admin_client \u003d cls.os_project_admin.resource_types_client"},{"line_number":42,"context_line":"        cls.rs_type_alt_admin_client \u003d \\"},{"line_number":43,"context_line":"            cls.os_project_alt_admin.resource_types_client"}],"source_content_type":"text/x-python","patch_set":2,"id":"c4b448e2_6f049d63","line":40,"range":{"start_line":39,"start_character":8,"end_line":40,"end_character":76},"updated":"2021-08-26 16:02:50.000000000","message":"As commented on oject patch we can move it to base class","commit_id":"00925aebf3352efd752ee24af5d1cf31752c6fe5"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"0352bd4ca28503b0992d4b3c99f3cda863c77540","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        cls.project_id \u003d cls.persona.namespaces_client.project_id"},{"line_number":37,"context_line":"        cls.alt_project_id \u003d cls.alt_persona.namespaces_client.project_id"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        cls.ns_admin_client \u003d cls.os_project_admin.namespaces_client"},{"line_number":40,"context_line":"        cls.ns_alt_admin_client \u003d cls.os_project_alt_admin.namespaces_client"},{"line_number":41,"context_line":"        cls.rs_type_admin_client \u003d cls.os_project_admin.resource_types_client"},{"line_number":42,"context_line":"        cls.rs_type_alt_admin_client \u003d \\"},{"line_number":43,"context_line":"            cls.os_project_alt_admin.resource_types_client"}],"source_content_type":"text/x-python","patch_set":2,"id":"8d2dab4b_49b6fc23","line":40,"range":{"start_line":39,"start_character":8,"end_line":40,"end_character":76},"in_reply_to":"c4b448e2_6f049d63","updated":"2021-08-26 19:05:37.000000000","message":"Done","commit_id":"00925aebf3352efd752ee24af5d1cf31752c6fe5"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c5eeba968f0122fcc88b4dd4b6ff8f8dbaf0b22d","unresolved":true,"context_lines":[{"line_number":108,"context_line":"                               client\u003dself.rs_type_admin_client)"},{"line_number":109,"context_line":"        resource_type_names \u003d set(rt[\u0027name\u0027] for rt in resp[\u0027resource_types\u0027])"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        # The resource types list count should be same as the total"},{"line_number":112,"context_line":"        # resource types created across the tenants."},{"line_number":113,"context_line":"        for rs_type in ns_rs_types:"},{"line_number":114,"context_line":"            self.assertIn(rs_type[\u0027resource_type\u0027][\u0027name\u0027],"},{"line_number":115,"context_line":"                          resource_type_names)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1783b7bc_6b3c4b69","line":112,"range":{"start_line":111,"start_character":8,"end_line":112,"end_character":52},"updated":"2021-08-26 16:02:50.000000000","message":"Comment is saying count but you are not asserting length here","commit_id":"00925aebf3352efd752ee24af5d1cf31752c6fe5"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"0352bd4ca28503b0992d4b3c99f3cda863c77540","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                               client\u003dself.rs_type_admin_client)"},{"line_number":109,"context_line":"        resource_type_names \u003d set(rt[\u0027name\u0027] for rt in resp[\u0027resource_types\u0027])"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        # The resource types list count should be same as the total"},{"line_number":112,"context_line":"        # resource types created across the tenants."},{"line_number":113,"context_line":"        for rs_type in ns_rs_types:"},{"line_number":114,"context_line":"            self.assertIn(rs_type[\u0027resource_type\u0027][\u0027name\u0027],"},{"line_number":115,"context_line":"                          resource_type_names)"}],"source_content_type":"text/x-python","patch_set":2,"id":"f9e64d17_a689157a","line":112,"range":{"start_line":111,"start_character":8,"end_line":112,"end_character":52},"in_reply_to":"1783b7bc_6b3c4b69","updated":"2021-08-26 19:05:37.000000000","message":"Ack","commit_id":"00925aebf3352efd752ee24af5d1cf31752c6fe5"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c5eeba968f0122fcc88b4dd4b6ff8f8dbaf0b22d","unresolved":true,"context_lines":[{"line_number":160,"context_line":"            self.assertEqual([], resp[\u0027resource_type_associations\u0027])"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        # Cleanup"},{"line_number":163,"context_line":"        self.cleanup_resource_types(ns_rs_types, self.ns_admin_client,"},{"line_number":164,"context_line":"                                    self.rs_type_alt_admin_client)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"class ProjectMemberTests(MetadefV2RbacResourceTypeTest,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7db9ffcb_d3462bb5","line":164,"range":{"start_line":163,"start_character":8,"end_line":164,"end_character":66},"updated":"2021-08-26 16:02:50.000000000","message":"Please add comment saying even though resource types are deleted we need to cleanup namespaces.\nSame will go for object patch as well I guess","commit_id":"00925aebf3352efd752ee24af5d1cf31752c6fe5"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"534e4e5f8b65a76183625d888ab194de3c2942e4","unresolved":false,"context_lines":[{"line_number":160,"context_line":"            self.assertEqual([], resp[\u0027resource_type_associations\u0027])"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        # Cleanup"},{"line_number":163,"context_line":"        self.cleanup_resource_types(ns_rs_types, self.ns_admin_client,"},{"line_number":164,"context_line":"                                    self.rs_type_alt_admin_client)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"class ProjectMemberTests(MetadefV2RbacResourceTypeTest,"}],"source_content_type":"text/x-python","patch_set":2,"id":"93a6d60e_223837b2","line":164,"range":{"start_line":163,"start_character":8,"end_line":164,"end_character":66},"in_reply_to":"7db9ffcb_d3462bb5","updated":"2022-04-13 08:05:15.000000000","message":"Done","commit_id":"00925aebf3352efd752ee24af5d1cf31752c6fe5"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c5eeba968f0122fcc88b4dd4b6ff8f8dbaf0b22d","unresolved":true,"context_lines":[{"line_number":180,"context_line":"            rs_type_name \u003d \"rs_type_of_%s\" % (namespace[\u0027namespace\u0027])"},{"line_number":181,"context_line":"            expected_status \u003d exceptions.Forbidden"},{"line_number":182,"context_line":"            if not (namespace[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"},{"line_number":183,"context_line":"                    namespace[\u0027owner\u0027] \u003d\u003d self.alt_project_id):"},{"line_number":184,"context_line":"                expected_status \u003d exceptions.NotFound"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"            self.do_request(\u0027create_resource_type_association\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"208c93e3_e03d70fc","line":183,"range":{"start_line":183,"start_character":42,"end_line":183,"end_character":61},"updated":"2021-08-26 16:02:50.000000000","message":"this should be self.project_id, right?\nor you are checking \"not\" that\u0027s why ?","commit_id":"00925aebf3352efd752ee24af5d1cf31752c6fe5"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"534e4e5f8b65a76183625d888ab194de3c2942e4","unresolved":false,"context_lines":[{"line_number":180,"context_line":"            rs_type_name \u003d \"rs_type_of_%s\" % (namespace[\u0027namespace\u0027])"},{"line_number":181,"context_line":"            expected_status \u003d exceptions.Forbidden"},{"line_number":182,"context_line":"            if not (namespace[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"},{"line_number":183,"context_line":"                    namespace[\u0027owner\u0027] \u003d\u003d self.alt_project_id):"},{"line_number":184,"context_line":"                expected_status \u003d exceptions.NotFound"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"            self.do_request(\u0027create_resource_type_association\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"eeb5e8cd_194184e1","line":183,"range":{"start_line":183,"start_character":42,"end_line":183,"end_character":61},"in_reply_to":"208c93e3_e03d70fc","updated":"2022-04-13 08:05:15.000000000","message":"Ack","commit_id":"00925aebf3352efd752ee24af5d1cf31752c6fe5"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c5eeba968f0122fcc88b4dd4b6ff8f8dbaf0b22d","unresolved":true,"context_lines":[{"line_number":254,"context_line":"                               client\u003dself.rs_type_admin_client)"},{"line_number":255,"context_line":"        resource_type_names \u003d set(rt[\u0027name\u0027] for rt in resp[\u0027resource_types\u0027])"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        # The resource types list count should be same as the total"},{"line_number":258,"context_line":"        # resource types created across the tenants."},{"line_number":259,"context_line":"        for rs_type in ns_rs_types:"},{"line_number":260,"context_line":"            self.assertIn(rs_type[\u0027resource_type\u0027][\u0027name\u0027],"},{"line_number":261,"context_line":"                          resource_type_names)"}],"source_content_type":"text/x-python","patch_set":2,"id":"c9bb2b8f_2caccb37","line":258,"range":{"start_line":257,"start_character":8,"end_line":258,"end_character":52},"updated":"2021-08-26 16:02:50.000000000","message":"ditto, not asserting count here\n\nAlso I think you should check the call with alt_project as well.","commit_id":"00925aebf3352efd752ee24af5d1cf31752c6fe5"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"534e4e5f8b65a76183625d888ab194de3c2942e4","unresolved":false,"context_lines":[{"line_number":254,"context_line":"                               client\u003dself.rs_type_admin_client)"},{"line_number":255,"context_line":"        resource_type_names \u003d set(rt[\u0027name\u0027] for rt in resp[\u0027resource_types\u0027])"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        # The resource types list count should be same as the total"},{"line_number":258,"context_line":"        # resource types created across the tenants."},{"line_number":259,"context_line":"        for rs_type in ns_rs_types:"},{"line_number":260,"context_line":"            self.assertIn(rs_type[\u0027resource_type\u0027][\u0027name\u0027],"},{"line_number":261,"context_line":"                          resource_type_names)"}],"source_content_type":"text/x-python","patch_set":2,"id":"2519f54c_863191f8","line":258,"range":{"start_line":257,"start_character":8,"end_line":258,"end_character":52},"in_reply_to":"c9bb2b8f_2caccb37","updated":"2022-04-13 08:05:15.000000000","message":"Done","commit_id":"00925aebf3352efd752ee24af5d1cf31752c6fe5"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"6d62b0669036f4b0c1a256adf0932edfd805597d","unresolved":true,"context_lines":[{"line_number":70,"context_line":"        # Make sure admin role of \u0027project\u0027 and \u0027alt_project\u0027 allowed to"},{"line_number":71,"context_line":"        # create resource_type"},{"line_number":72,"context_line":"        ns_rs_type \u003d self.create_resource_types()"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def test_get_resource_type(self):"},{"line_number":75,"context_line":"        ns_rs_types \u003d self.create_resource_types()"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb2baad_65ae732f","line":73,"updated":"2021-08-26 20:14:00.000000000","message":"Ditto, similar to commented on object patch, cleanup is needed in all tests.","commit_id":"ef92d27813a9df7ee7612ca3d1b94ea686c9379f"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"7670ce1580ad32599714f16bf5d57ee3c875f206","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        # Make sure admin role of \u0027project\u0027 and \u0027alt_project\u0027 allowed to"},{"line_number":71,"context_line":"        # create resource_type"},{"line_number":72,"context_line":"        ns_rs_type \u003d self.create_resource_types()"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def test_get_resource_type(self):"},{"line_number":75,"context_line":"        ns_rs_types \u003d self.create_resource_types()"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"20ebf7cb_7d6a9cf1","line":73,"in_reply_to":"9fb2baad_65ae732f","updated":"2021-08-27 06:54:58.000000000","message":"Ack","commit_id":"ef92d27813a9df7ee7612ca3d1b94ea686c9379f"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fa888131a14b0f6b0d7f8ea3344c1d4c6f8f1385","unresolved":true,"context_lines":[{"line_number":33,"context_line":"        cls.member_or_reader_client \u003d cls.persona.resource_types_client"},{"line_number":34,"context_line":"        cls.alt_member_or_reader_client \u003d \\"},{"line_number":35,"context_line":"            cls.alt_persona.resource_types_client"},{"line_number":36,"context_line":"        cls.project_id \u003d cls.persona.namespaces_client.project_id"},{"line_number":37,"context_line":"        cls.alt_project_id \u003d cls.alt_persona.namespaces_client.project_id"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        cls.rs_type_admin_client \u003d cls.os_project_admin.resource_types_client"},{"line_number":40,"context_line":"        cls.rs_type_alt_admin_client \u003d \\"}],"source_content_type":"text/x-python","patch_set":5,"id":"00ff4358_b34d1879","line":37,"range":{"start_line":36,"start_character":8,"end_line":37,"end_character":73},"updated":"2021-08-27 15:12:53.000000000","message":"This can be moved to base class as well as we are going to use this in all metadef test classes.","commit_id":"db4a6a43cd1c1e49dd491d16dfe23080ca4a72b5"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"089ee543d1a0fe96fe3e1dbc9ef0ee8860f038d8","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        cls.member_or_reader_client \u003d cls.persona.resource_types_client"},{"line_number":34,"context_line":"        cls.alt_member_or_reader_client \u003d \\"},{"line_number":35,"context_line":"            cls.alt_persona.resource_types_client"},{"line_number":36,"context_line":"        cls.project_id \u003d cls.persona.namespaces_client.project_id"},{"line_number":37,"context_line":"        cls.alt_project_id \u003d cls.alt_persona.namespaces_client.project_id"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        cls.rs_type_admin_client \u003d cls.os_project_admin.resource_types_client"},{"line_number":40,"context_line":"        cls.rs_type_alt_admin_client \u003d \\"}],"source_content_type":"text/x-python","patch_set":5,"id":"7d614b7f_bb0cb233","line":37,"range":{"start_line":36,"start_character":8,"end_line":37,"end_character":73},"in_reply_to":"00ff4358_b34d1879","updated":"2021-08-30 13:56:48.000000000","message":"Ack","commit_id":"db4a6a43cd1c1e49dd491d16dfe23080ca4a72b5"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fa888131a14b0f6b0d7f8ea3344c1d4c6f8f1385","unresolved":true,"context_lines":[{"line_number":69,"context_line":"    def test_create_resource_type(self):"},{"line_number":70,"context_line":"        # Make sure admin role of \u0027project\u0027 and \u0027alt_project\u0027 allowed to"},{"line_number":71,"context_line":"        # create resource_type"},{"line_number":72,"context_line":"        _ \u003d self.create_resource_types()"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def test_get_resource_type(self):"},{"line_number":75,"context_line":"        ns_rs_types \u003d self.create_resource_types()"}],"source_content_type":"text/x-python","patch_set":5,"id":"34a37f28_bdc053ab","line":72,"range":{"start_line":72,"start_character":8,"end_line":72,"end_character":12},"updated":"2021-08-27 15:12:53.000000000","message":"I think you can remove this and just call a function,\nor you can asser here that total 4 namespaces and 4 rs_types are created.\n\nI think later will be good.","commit_id":"db4a6a43cd1c1e49dd491d16dfe23080ca4a72b5"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"089ee543d1a0fe96fe3e1dbc9ef0ee8860f038d8","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    def test_create_resource_type(self):"},{"line_number":70,"context_line":"        # Make sure admin role of \u0027project\u0027 and \u0027alt_project\u0027 allowed to"},{"line_number":71,"context_line":"        # create resource_type"},{"line_number":72,"context_line":"        _ \u003d self.create_resource_types()"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def test_get_resource_type(self):"},{"line_number":75,"context_line":"        ns_rs_types \u003d self.create_resource_types()"}],"source_content_type":"text/x-python","patch_set":5,"id":"44e3b4b8_7bc90fb2","line":72,"range":{"start_line":72,"start_character":8,"end_line":72,"end_character":12},"in_reply_to":"34a37f28_bdc053ab","updated":"2021-08-30 13:56:48.000000000","message":"Ack","commit_id":"db4a6a43cd1c1e49dd491d16dfe23080ca4a72b5"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fa888131a14b0f6b0d7f8ea3344c1d4c6f8f1385","unresolved":true,"context_lines":[{"line_number":98,"context_line":"                               client\u003dself.rs_type_admin_client)"},{"line_number":99,"context_line":"        resource_type_names \u003d set(rt[\u0027name\u0027] for rt in resp[\u0027resource_types\u0027])"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        # The resource types list should have all the resource types"},{"line_number":102,"context_line":"        # created across the tenants."},{"line_number":103,"context_line":"        for rs_type in ns_rs_types:"},{"line_number":104,"context_line":"            self.assertIn(rs_type[\u0027resource_type\u0027][\u0027name\u0027],"},{"line_number":105,"context_line":"                          resource_type_names)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5731ad1a_1ff2fc96","line":102,"range":{"start_line":101,"start_character":8,"end_line":102,"end_character":37},"updated":"2021-08-27 15:12:53.000000000","message":"This comment does not match with below assert.\n\n\"should have all the resource types created\" implies that you know how many are there.\nSo asserting expected vs actual will be more useful here.\n\nApplicable to all tests related to list in this file.","commit_id":"db4a6a43cd1c1e49dd491d16dfe23080ca4a72b5"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2136601c4ce204db158390fdd561e707b5e9d16d","unresolved":true,"context_lines":[{"line_number":98,"context_line":"                               client\u003dself.rs_type_admin_client)"},{"line_number":99,"context_line":"        resource_type_names \u003d set(rt[\u0027name\u0027] for rt in resp[\u0027resource_types\u0027])"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        # The resource types list should have all the resource types"},{"line_number":102,"context_line":"        # created across the tenants."},{"line_number":103,"context_line":"        for rs_type in ns_rs_types:"},{"line_number":104,"context_line":"            self.assertIn(rs_type[\u0027resource_type\u0027][\u0027name\u0027],"},{"line_number":105,"context_line":"                          resource_type_names)"}],"source_content_type":"text/x-python","patch_set":5,"id":"95b3e34a_15bddf46","line":102,"range":{"start_line":101,"start_character":8,"end_line":102,"end_character":37},"in_reply_to":"37e47916_a9abc2dd","updated":"2021-08-30 15:00:34.000000000","message":"What I am suggesting is you can built the expected list using ns_rs_types and then compare it with assertEqual(expected, resource_type_names)\n\nTo build the list you can use;\nexpected_resource_types \u003d [rs_type[\u0027resource_type\u0027][\u0027name\u0027] for rs_type in ns_rs_types]","commit_id":"db4a6a43cd1c1e49dd491d16dfe23080ca4a72b5"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"089ee543d1a0fe96fe3e1dbc9ef0ee8860f038d8","unresolved":true,"context_lines":[{"line_number":98,"context_line":"                               client\u003dself.rs_type_admin_client)"},{"line_number":99,"context_line":"        resource_type_names \u003d set(rt[\u0027name\u0027] for rt in resp[\u0027resource_types\u0027])"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        # The resource types list should have all the resource types"},{"line_number":102,"context_line":"        # created across the tenants."},{"line_number":103,"context_line":"        for rs_type in ns_rs_types:"},{"line_number":104,"context_line":"            self.assertIn(rs_type[\u0027resource_type\u0027][\u0027name\u0027],"},{"line_number":105,"context_line":"                          resource_type_names)"}],"source_content_type":"text/x-python","patch_set":5,"id":"37e47916_a9abc2dd","line":102,"range":{"start_line":101,"start_character":8,"end_line":102,"end_character":37},"in_reply_to":"5731ad1a_1ff2fc96","updated":"2021-08-30 13:56:48.000000000","message":"yeah right, but I can just modify the comment here because the list resp we get here is the all resource types available in the db.","commit_id":"db4a6a43cd1c1e49dd491d16dfe23080ca4a72b5"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"534e4e5f8b65a76183625d888ab194de3c2942e4","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                               client\u003dself.rs_type_admin_client)"},{"line_number":99,"context_line":"        resource_type_names \u003d set(rt[\u0027name\u0027] for rt in resp[\u0027resource_types\u0027])"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        # The resource types list should have all the resource types"},{"line_number":102,"context_line":"        # created across the tenants."},{"line_number":103,"context_line":"        for rs_type in ns_rs_types:"},{"line_number":104,"context_line":"            self.assertIn(rs_type[\u0027resource_type\u0027][\u0027name\u0027],"},{"line_number":105,"context_line":"                          resource_type_names)"}],"source_content_type":"text/x-python","patch_set":5,"id":"04408d4f_88f71cdf","line":102,"range":{"start_line":101,"start_character":8,"end_line":102,"end_character":37},"in_reply_to":"95b3e34a_15bddf46","updated":"2022-04-13 08:05:15.000000000","message":"Done","commit_id":"db4a6a43cd1c1e49dd491d16dfe23080ca4a72b5"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fa888131a14b0f6b0d7f8ea3344c1d4c6f8f1385","unresolved":true,"context_lines":[{"line_number":162,"context_line":"            rs_type_name \u003d \"rs_type_of_%s\" % (namespace[\u0027namespace\u0027])"},{"line_number":163,"context_line":"            expected_status \u003d exceptions.Forbidden"},{"line_number":164,"context_line":"            if not (namespace[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"},{"line_number":165,"context_line":"                    namespace[\u0027owner\u0027] \u003d\u003d self.alt_project_id):"},{"line_number":166,"context_line":"                expected_status \u003d exceptions.NotFound"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"            self.do_request(\u0027create_resource_type_association\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"e2dfe1e1_552d06f5","line":165,"range":{"start_line":165,"start_character":42,"end_line":165,"end_character":61},"updated":"2021-08-27 15:12:53.000000000","message":"I think this should be project_id.","commit_id":"db4a6a43cd1c1e49dd491d16dfe23080ca4a72b5"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"534e4e5f8b65a76183625d888ab194de3c2942e4","unresolved":true,"context_lines":[{"line_number":162,"context_line":"            rs_type_name \u003d \"rs_type_of_%s\" % (namespace[\u0027namespace\u0027])"},{"line_number":163,"context_line":"            expected_status \u003d exceptions.Forbidden"},{"line_number":164,"context_line":"            if not (namespace[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"},{"line_number":165,"context_line":"                    namespace[\u0027owner\u0027] \u003d\u003d self.alt_project_id):"},{"line_number":166,"context_line":"                expected_status \u003d exceptions.NotFound"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"            self.do_request(\u0027create_resource_type_association\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"556204b9_72c7b03f","line":165,"range":{"start_line":165,"start_character":42,"end_line":165,"end_character":61},"in_reply_to":"e2dfe1e1_552d06f5","updated":"2022-04-13 08:05:15.000000000","message":"This was valid comment when in older patch set we were testing for both self.project_id \u0026 self.alt_project_id.\nNow we are only checking for for one to avoid repetition.","commit_id":"db4a6a43cd1c1e49dd491d16dfe23080ca4a72b5"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2136601c4ce204db158390fdd561e707b5e9d16d","unresolved":true,"context_lines":[{"line_number":19,"context_line":"from glance_tempest_plugin.tests.rbac.v2 import base as rbac_base"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"CONF \u003d config.CONF"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class MetadefV2RbacResourceTypeTest(rbac_base.MetadefV2RbacBaseTests,"}],"source_content_type":"text/x-python","patch_set":6,"id":"e7e380d8_56698a24","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":18},"updated":"2021-08-30 15:00:34.000000000","message":"Not used;","commit_id":"32da1b3cf59af45d1793ca2503bd93dfedce4941"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"534e4e5f8b65a76183625d888ab194de3c2942e4","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from glance_tempest_plugin.tests.rbac.v2 import base as rbac_base"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"CONF \u003d config.CONF"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class MetadefV2RbacResourceTypeTest(rbac_base.MetadefV2RbacBaseTests,"}],"source_content_type":"text/x-python","patch_set":6,"id":"42a04604_60690ca8","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":18},"in_reply_to":"e7e380d8_56698a24","updated":"2022-04-13 08:05:15.000000000","message":"Done","commit_id":"32da1b3cf59af45d1793ca2503bd93dfedce4941"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2136601c4ce204db158390fdd561e707b5e9d16d","unresolved":true,"context_lines":[{"line_number":148,"context_line":"class ProjectMemberTests(MetadefV2RbacResourceTypeTest,"},{"line_number":149,"context_line":"                         tempest.test.BaseTestCase):"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    credentials \u003d [\u0027project_member\u0027, \u0027project_alt_member\u0027, \u0027project_admin\u0027,"},{"line_number":152,"context_line":"                   \u0027project_alt_admin\u0027]"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def test_create_resource_type(self):"},{"line_number":155,"context_line":"        namespaces \u003d self.create_namespaces()"}],"source_content_type":"text/x-python","patch_set":6,"id":"160e32e7_e1075a80","line":152,"range":{"start_line":151,"start_character":57,"end_line":152,"end_character":38},"updated":"2021-08-30 15:00:34.000000000","message":"these are not required","commit_id":"32da1b3cf59af45d1793ca2503bd93dfedce4941"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"534e4e5f8b65a76183625d888ab194de3c2942e4","unresolved":false,"context_lines":[{"line_number":148,"context_line":"class ProjectMemberTests(MetadefV2RbacResourceTypeTest,"},{"line_number":149,"context_line":"                         tempest.test.BaseTestCase):"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    credentials \u003d [\u0027project_member\u0027, \u0027project_alt_member\u0027, \u0027project_admin\u0027,"},{"line_number":152,"context_line":"                   \u0027project_alt_admin\u0027]"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def test_create_resource_type(self):"},{"line_number":155,"context_line":"        namespaces \u003d self.create_namespaces()"}],"source_content_type":"text/x-python","patch_set":6,"id":"abe748d8_3478d6a4","line":152,"range":{"start_line":151,"start_character":57,"end_line":152,"end_character":38},"in_reply_to":"160e32e7_e1075a80","updated":"2022-04-13 08:05:15.000000000","message":"Done","commit_id":"32da1b3cf59af45d1793ca2503bd93dfedce4941"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"cade3f0bf358648d6f7971bc6a72ee0649f8bfee","unresolved":true,"context_lines":[{"line_number":154,"context_line":"    def test_create_resource_type(self):"},{"line_number":155,"context_line":"        namespaces \u003d self.create_namespaces()"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        def _assertRSTypeCreate(namespace, owner, client):"},{"line_number":158,"context_line":"            rs_type_name \u003d \"rs_type_of_%s\" % (namespace[\u0027namespace\u0027])"},{"line_number":159,"context_line":"            expected_status \u003d exceptions.Forbidden"},{"line_number":160,"context_line":"            if not (namespace[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"}],"source_content_type":"text/x-python","patch_set":6,"id":"eaebb76c_e7fa3853","line":157,"range":{"start_line":157,"start_character":12,"end_line":157,"end_character":31},"updated":"2021-08-30 16:16:09.000000000","message":"Similar comment here as in the previous patches. These seems like useful utility methods that should be outside the test module.","commit_id":"32da1b3cf59af45d1793ca2503bd93dfedce4941"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"534e4e5f8b65a76183625d888ab194de3c2942e4","unresolved":true,"context_lines":[{"line_number":154,"context_line":"    def test_create_resource_type(self):"},{"line_number":155,"context_line":"        namespaces \u003d self.create_namespaces()"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        def _assertRSTypeCreate(namespace, owner, client):"},{"line_number":158,"context_line":"            rs_type_name \u003d \"rs_type_of_%s\" % (namespace[\u0027namespace\u0027])"},{"line_number":159,"context_line":"            expected_status \u003d exceptions.Forbidden"},{"line_number":160,"context_line":"            if not (namespace[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"}],"source_content_type":"text/x-python","patch_set":6,"id":"f6fe3c48_905f3efd","line":157,"range":{"start_line":157,"start_character":12,"end_line":157,"end_character":31},"in_reply_to":"eaebb76c_e7fa3853","updated":"2022-04-13 08:05:15.000000000","message":"Moved those in the follow up patch","commit_id":"32da1b3cf59af45d1793ca2503bd93dfedce4941"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2136601c4ce204db158390fdd561e707b5e9d16d","unresolved":true,"context_lines":[{"line_number":259,"context_line":""},{"line_number":260,"context_line":"class ProjectReaderTests(ProjectMemberTests, tempest.test.BaseTestCase):"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    credentials \u003d [\u0027project_reader\u0027, \u0027project_alt_reader\u0027, \u0027project_admin\u0027,"},{"line_number":263,"context_line":"                   \u0027project_alt_admin\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"ef504897_89f9217a","line":263,"range":{"start_line":262,"start_character":59,"end_line":263,"end_character":38},"updated":"2021-08-30 15:00:34.000000000","message":"ditto","commit_id":"32da1b3cf59af45d1793ca2503bd93dfedce4941"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"534e4e5f8b65a76183625d888ab194de3c2942e4","unresolved":false,"context_lines":[{"line_number":259,"context_line":""},{"line_number":260,"context_line":"class ProjectReaderTests(ProjectMemberTests, tempest.test.BaseTestCase):"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    credentials \u003d [\u0027project_reader\u0027, \u0027project_alt_reader\u0027, \u0027project_admin\u0027,"},{"line_number":263,"context_line":"                   \u0027project_alt_admin\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"efe7b71d_614171d1","line":263,"range":{"start_line":262,"start_character":59,"end_line":263,"end_character":38},"in_reply_to":"ef504897_89f9217a","updated":"2022-04-13 08:05:15.000000000","message":"Done","commit_id":"32da1b3cf59af45d1793ca2503bd93dfedce4941"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fe33d54f6b3fbcd9b2ae46375e51d3f5ee762b5e","unresolved":true,"context_lines":[{"line_number":59,"context_line":"        namespace_resource_types \u003d []"},{"line_number":60,"context_line":"        for ns in namespaces:"},{"line_number":61,"context_line":"            if ns[\u0027namespace\u0027].startswith("},{"line_number":62,"context_line":"                self.rs_types_admin_client.project_id):"},{"line_number":63,"context_line":"                client \u003d self.rs_types_admin_client"},{"line_number":64,"context_line":"            resource_name \u003d \"rs_type_of_%s\" % (ns[\u0027namespace\u0027])"},{"line_number":65,"context_line":"            resource_type \u003d client.create_resource_type_association("}],"source_content_type":"text/x-python","patch_set":14,"id":"8333c44b_eadc7512","line":62,"range":{"start_line":62,"start_character":16,"end_line":62,"end_character":53},"updated":"2021-09-24 07:56:05.000000000","message":"nit: self.project_id","commit_id":"c8003e362879009af0c15039eb5c57febfd7ec0a"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"534e4e5f8b65a76183625d888ab194de3c2942e4","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        namespace_resource_types \u003d []"},{"line_number":60,"context_line":"        for ns in namespaces:"},{"line_number":61,"context_line":"            if ns[\u0027namespace\u0027].startswith("},{"line_number":62,"context_line":"                self.rs_types_admin_client.project_id):"},{"line_number":63,"context_line":"                client \u003d self.rs_types_admin_client"},{"line_number":64,"context_line":"            resource_name \u003d \"rs_type_of_%s\" % (ns[\u0027namespace\u0027])"},{"line_number":65,"context_line":"            resource_type \u003d client.create_resource_type_association("}],"source_content_type":"text/x-python","patch_set":14,"id":"a3b2a446_27255e28","line":62,"range":{"start_line":62,"start_character":16,"end_line":62,"end_character":53},"in_reply_to":"8333c44b_eadc7512","updated":"2022-04-13 08:05:15.000000000","message":"Ack","commit_id":"c8003e362879009af0c15039eb5c57febfd7ec0a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"530fc4bebe23fd61d0d0238e23660aae96a11f1e","unresolved":true,"context_lines":[{"line_number":60,"context_line":"        for ns in namespaces:"},{"line_number":61,"context_line":"            if ns[\u0027namespace\u0027].startswith("},{"line_number":62,"context_line":"                self.rs_types_admin_client.project_id):"},{"line_number":63,"context_line":"                client \u003d self.rs_types_admin_client"},{"line_number":64,"context_line":"            resource_name \u003d \"rs_type_of_%s\" % (ns[\u0027namespace\u0027])"},{"line_number":65,"context_line":"            resource_type \u003d client.create_resource_type_association("},{"line_number":66,"context_line":"                ns[\u0027namespace\u0027], name\u003dresource_name)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5d83d652_73668a08","line":63,"updated":"2021-09-28 18:22:37.000000000","message":"I don\u0027t think this matters does it? Both re_types_admin_client and alt_rs_types_admin_client have the \u0027admin\u0027 role on a project and we don\u0027t check tenancy for this API yet.","commit_id":"c8003e362879009af0c15039eb5c57febfd7ec0a"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"534e4e5f8b65a76183625d888ab194de3c2942e4","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        for ns in namespaces:"},{"line_number":61,"context_line":"            if ns[\u0027namespace\u0027].startswith("},{"line_number":62,"context_line":"                self.rs_types_admin_client.project_id):"},{"line_number":63,"context_line":"                client \u003d self.rs_types_admin_client"},{"line_number":64,"context_line":"            resource_name \u003d \"rs_type_of_%s\" % (ns[\u0027namespace\u0027])"},{"line_number":65,"context_line":"            resource_type \u003d client.create_resource_type_association("},{"line_number":66,"context_line":"                ns[\u0027namespace\u0027], name\u003dresource_name)"}],"source_content_type":"text/x-python","patch_set":14,"id":"fcff6caa_11e96f70","line":63,"in_reply_to":"5d83d652_73668a08","updated":"2022-04-13 08:05:15.000000000","message":"Ack","commit_id":"c8003e362879009af0c15039eb5c57febfd7ec0a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"530fc4bebe23fd61d0d0238e23660aae96a11f1e","unresolved":true,"context_lines":[{"line_number":72,"context_line":"        return namespace_resource_types"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def assertRSTypeList(self, actual_rs_types, resp):"},{"line_number":75,"context_line":"        expected_rs_types \u003d \\"},{"line_number":76,"context_line":"            set(rt[\u0027name\u0027] for rt in resp[\u0027resource_types\u0027])"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        for actual in actual_rs_types:"}],"source_content_type":"text/x-python","patch_set":14,"id":"4d4f4f5c_56bb4092","line":75,"range":{"start_line":75,"start_character":8,"end_line":75,"end_character":25},"updated":"2021-09-28 18:22:37.000000000","message":"nit: I feel like this should be actual_rs_types instead of expected since we\u0027re pulling the actual resources types from the response we\u0027re checking. The expected resource types should be what we create from create_resource_types().","commit_id":"c8003e362879009af0c15039eb5c57febfd7ec0a"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"534e4e5f8b65a76183625d888ab194de3c2942e4","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        return namespace_resource_types"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def assertRSTypeList(self, actual_rs_types, resp):"},{"line_number":75,"context_line":"        expected_rs_types \u003d \\"},{"line_number":76,"context_line":"            set(rt[\u0027name\u0027] for rt in resp[\u0027resource_types\u0027])"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        for actual in actual_rs_types:"}],"source_content_type":"text/x-python","patch_set":14,"id":"42dd19a1_100fcdb1","line":75,"range":{"start_line":75,"start_character":8,"end_line":75,"end_character":25},"in_reply_to":"4d4f4f5c_56bb4092","updated":"2022-04-13 08:05:15.000000000","message":"Ack","commit_id":"c8003e362879009af0c15039eb5c57febfd7ec0a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fe33d54f6b3fbcd9b2ae46375e51d3f5ee762b5e","unresolved":true,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    credentials \u003d [\u0027project_admin\u0027, \u0027project_alt_admin\u0027, \u0027primary\u0027]"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def test_create_resource_type(self):"},{"line_number":112,"context_line":"        # As this is been covered in other tests for admin role,"},{"line_number":113,"context_line":"        # skipping to test only create resource types seperately."},{"line_number":114,"context_line":"        pass"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def test_get_resource_type(self):"},{"line_number":117,"context_line":"        ns_rs_types \u003d self.create_resource_types()"}],"source_content_type":"text/x-python","patch_set":14,"id":"6cb6cbc6_65bc0353","line":114,"range":{"start_line":111,"start_character":0,"end_line":114,"end_character":12},"updated":"2021-09-24 07:56:05.000000000","message":"ditto, move it to the end","commit_id":"c8003e362879009af0c15039eb5c57febfd7ec0a"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"534e4e5f8b65a76183625d888ab194de3c2942e4","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    credentials \u003d [\u0027project_admin\u0027, \u0027project_alt_admin\u0027, \u0027primary\u0027]"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def test_create_resource_type(self):"},{"line_number":112,"context_line":"        # As this is been covered in other tests for admin role,"},{"line_number":113,"context_line":"        # skipping to test only create resource types seperately."},{"line_number":114,"context_line":"        pass"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def test_get_resource_type(self):"},{"line_number":117,"context_line":"        ns_rs_types \u003d self.create_resource_types()"}],"source_content_type":"text/x-python","patch_set":14,"id":"becf05f8_d72fad72","line":114,"range":{"start_line":111,"start_character":0,"end_line":114,"end_character":12},"in_reply_to":"6cb6cbc6_65bc0353","updated":"2022-04-13 08:05:15.000000000","message":"Ack","commit_id":"c8003e362879009af0c15039eb5c57febfd7ec0a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"530fc4bebe23fd61d0d0238e23660aae96a11f1e","unresolved":true,"context_lines":[{"line_number":169,"context_line":"        def assertRSTypeCreate(namespace, owner, client):"},{"line_number":170,"context_line":"            rs_type_name \u003d \"rs_type_of_%s\" % (namespace[\u0027namespace\u0027])"},{"line_number":171,"context_line":"            expected_status \u003d exceptions.Forbidden"},{"line_number":172,"context_line":"            if not (namespace[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"},{"line_number":173,"context_line":"                    namespace[\u0027owner\u0027] \u003d\u003d owner):"},{"line_number":174,"context_line":"                expected_status \u003d exceptions.NotFound"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"            self.do_request(\u0027create_resource_type_association\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"adba1b85_b85a231b","line":173,"range":{"start_line":172,"start_character":12,"end_line":173,"end_character":49},"updated":"2021-09-28 18:22:37.000000000","message":"nit: It took me a bit to double check this as I ran the 4 different cases through the not logic. I think this if statment can be more readable by removing the not operator and checking the exact case we want to assert a 404:\n\n  if namespace[\u0027visibility\u0027] \u003d\u003d \u0027private\u0027 and namespace[\u0027owner\u0027] !\u003d owner:\n      expected_status \u003d exceptions.NotFound","commit_id":"c8003e362879009af0c15039eb5c57febfd7ec0a"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"ad548e08cef112e51b49d7126f2c094b4c6be96a","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        def assertRSTypeCreate(namespace, owner, client):"},{"line_number":170,"context_line":"            rs_type_name \u003d \"rs_type_of_%s\" % (namespace[\u0027namespace\u0027])"},{"line_number":171,"context_line":"            expected_status \u003d exceptions.Forbidden"},{"line_number":172,"context_line":"            if not (namespace[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"},{"line_number":173,"context_line":"                    namespace[\u0027owner\u0027] \u003d\u003d owner):"},{"line_number":174,"context_line":"                expected_status \u003d exceptions.NotFound"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"            self.do_request(\u0027create_resource_type_association\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"d70a54c5_93045802","line":173,"range":{"start_line":172,"start_character":12,"end_line":173,"end_character":49},"in_reply_to":"adba1b85_b85a231b","updated":"2022-03-01 16:38:21.000000000","message":"Ack","commit_id":"c8003e362879009af0c15039eb5c57febfd7ec0a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"530fc4bebe23fd61d0d0238e23660aae96a11f1e","unresolved":true,"context_lines":[{"line_number":189,"context_line":"        # create resource type"},{"line_number":190,"context_line":"        for namespace in namespaces:"},{"line_number":191,"context_line":"            assertRSTypeCreate(namespace, self.alt_project_id,"},{"line_number":192,"context_line":"                               self.alt_rs_types_client)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def test_get_resource_type(self):"},{"line_number":195,"context_line":"        ns_rs_types \u003d self.create_resource_types()"}],"source_content_type":"text/x-python","patch_set":14,"id":"fdd54cfc_74bb8b76","line":192,"updated":"2021-09-28 18:22:37.000000000","message":"Similar comment here as in the previous patches. Do we need to test alt_project_member when we\u0027ve validated project_member:\n\n- gets a 403 when creating a resource type in a public namespace associated to their project\n- gets a 403 when creating a resource type in a private namespace associated to their project\n- gets a 403 when creating a resource type in a public namespace associated to another project\n- gets a 404 when creating a resource type in a private namespace associated to another project\n\nIs there anything about alt project that would exercise more than those ^ cases?","commit_id":"c8003e362879009af0c15039eb5c57febfd7ec0a"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"534e4e5f8b65a76183625d888ab194de3c2942e4","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        # create resource type"},{"line_number":190,"context_line":"        for namespace in namespaces:"},{"line_number":191,"context_line":"            assertRSTypeCreate(namespace, self.alt_project_id,"},{"line_number":192,"context_line":"                               self.alt_rs_types_client)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def test_get_resource_type(self):"},{"line_number":195,"context_line":"        ns_rs_types \u003d self.create_resource_types()"}],"source_content_type":"text/x-python","patch_set":14,"id":"a2d47e43_61fd54d8","line":192,"in_reply_to":"fdd54cfc_74bb8b76","updated":"2022-04-13 08:05:15.000000000","message":"Right, we don\u0027t need it actually.","commit_id":"c8003e362879009af0c15039eb5c57febfd7ec0a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"530fc4bebe23fd61d0d0238e23660aae96a11f1e","unresolved":true,"context_lines":[{"line_number":217,"context_line":"        # namespace of \u0027project\u0027"},{"line_number":218,"context_line":"        for rs_type in ns_rs_types:"},{"line_number":219,"context_line":"            assertRSTypeGet(rs_type, self.alt_rs_types_client,"},{"line_number":220,"context_line":"                            self.alt_project_id)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def test_list_resource_types(self):"},{"line_number":223,"context_line":"        ns_rs_types \u003d self.create_resource_types()"}],"source_content_type":"text/x-python","patch_set":14,"id":"a32bb945_431c97c1","line":220,"updated":"2021-09-28 18:22:37.000000000","message":"Same comment here as above","commit_id":"c8003e362879009af0c15039eb5c57febfd7ec0a"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"534e4e5f8b65a76183625d888ab194de3c2942e4","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        # namespace of \u0027project\u0027"},{"line_number":218,"context_line":"        for rs_type in ns_rs_types:"},{"line_number":219,"context_line":"            assertRSTypeGet(rs_type, self.alt_rs_types_client,"},{"line_number":220,"context_line":"                            self.alt_project_id)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def test_list_resource_types(self):"},{"line_number":223,"context_line":"        ns_rs_types \u003d self.create_resource_types()"}],"source_content_type":"text/x-python","patch_set":14,"id":"49f790b5_eb49551e","line":220,"in_reply_to":"a32bb945_431c97c1","updated":"2022-04-13 08:05:15.000000000","message":"Ack","commit_id":"c8003e362879009af0c15039eb5c57febfd7ec0a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"530fc4bebe23fd61d0d0238e23660aae96a11f1e","unresolved":true,"context_lines":[{"line_number":236,"context_line":"                               expected_status\u003d200,"},{"line_number":237,"context_line":"                               client\u003dself.alt_rs_types_client)"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        # Verify that admin role of \u0027alt_project\u0027 will be able to view"},{"line_number":240,"context_line":"        # available resource types"},{"line_number":241,"context_line":"        self.assertRSTypeList(ns_rs_types, resp)"},{"line_number":242,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"0cc05b82_d2212a70","line":239,"range":{"start_line":239,"start_character":22,"end_line":239,"end_character":27},"updated":"2021-09-28 18:22:37.000000000","message":"nit: member","commit_id":"c8003e362879009af0c15039eb5c57febfd7ec0a"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"534e4e5f8b65a76183625d888ab194de3c2942e4","unresolved":false,"context_lines":[{"line_number":236,"context_line":"                               expected_status\u003d200,"},{"line_number":237,"context_line":"                               client\u003dself.alt_rs_types_client)"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        # Verify that admin role of \u0027alt_project\u0027 will be able to view"},{"line_number":240,"context_line":"        # available resource types"},{"line_number":241,"context_line":"        self.assertRSTypeList(ns_rs_types, resp)"},{"line_number":242,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"a3d19464_2b718a7a","line":239,"range":{"start_line":239,"start_character":22,"end_line":239,"end_character":27},"in_reply_to":"0cc05b82_d2212a70","updated":"2022-04-13 08:05:15.000000000","message":"Done","commit_id":"c8003e362879009af0c15039eb5c57febfd7ec0a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"530fc4bebe23fd61d0d0238e23660aae96a11f1e","unresolved":true,"context_lines":[{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        # Verify that admin role of \u0027alt_project\u0027 will be able to view"},{"line_number":240,"context_line":"        # available resource types"},{"line_number":241,"context_line":"        self.assertRSTypeList(ns_rs_types, resp)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def test_delete_resource_type(self):"},{"line_number":244,"context_line":"        ns_rs_types \u003d self.create_resource_types()"}],"source_content_type":"text/x-python","patch_set":14,"id":"e91686c6_1f24ad92","line":241,"updated":"2021-09-28 18:22:37.000000000","message":"Similar comment as above.","commit_id":"c8003e362879009af0c15039eb5c57febfd7ec0a"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"534e4e5f8b65a76183625d888ab194de3c2942e4","unresolved":false,"context_lines":[{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        # Verify that admin role of \u0027alt_project\u0027 will be able to view"},{"line_number":240,"context_line":"        # available resource types"},{"line_number":241,"context_line":"        self.assertRSTypeList(ns_rs_types, resp)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def test_delete_resource_type(self):"},{"line_number":244,"context_line":"        ns_rs_types \u003d self.create_resource_types()"}],"source_content_type":"text/x-python","patch_set":14,"id":"2cd338d1_65965643","line":241,"in_reply_to":"e91686c6_1f24ad92","updated":"2022-04-13 08:05:15.000000000","message":"Done","commit_id":"c8003e362879009af0c15039eb5c57febfd7ec0a"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"7d7b9c838224d477d1ea671dc9053c6b30ef8890","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"# a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":16,"id":"5ff5a5db_1d17890e","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":1},"updated":"2021-10-13 21:39:01.000000000","message":"I think you might need \"Copyright 2021 Red Hat, Inc\" here.","commit_id":"627d9aca2f97a99a2a03b3135867bca888ddb4de"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"13e494bbac127d02c8d99b029150d55b25733211","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"# a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":16,"id":"423ffbfc_21ffdbde","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":1},"in_reply_to":"5ff5a5db_1d17890e","updated":"2021-10-14 12:14:51.000000000","message":"Done","commit_id":"627d9aca2f97a99a2a03b3135867bca888ddb4de"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"7d7b9c838224d477d1ea671dc9053c6b30ef8890","unresolved":true,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def assertRSTypeList(self, ns_rs_types, resp):"},{"line_number":67,"context_line":"        actual_rs_types \u003d \\"},{"line_number":68,"context_line":"            set(rt[\u0027name\u0027] for rt in resp[\u0027resource_types\u0027])"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        for rs_type in ns_rs_types:"},{"line_number":71,"context_line":"            self.assertIn(rs_type[\u0027resource_type\u0027][\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":16,"id":"6e803a3f_92f74904","line":68,"range":{"start_line":68,"start_character":0,"end_line":68,"end_character":60},"updated":"2021-10-13 21:39:01.000000000","message":"This would fit on a single line","commit_id":"627d9aca2f97a99a2a03b3135867bca888ddb4de"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"13e494bbac127d02c8d99b029150d55b25733211","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def assertRSTypeList(self, ns_rs_types, resp):"},{"line_number":67,"context_line":"        actual_rs_types \u003d \\"},{"line_number":68,"context_line":"            set(rt[\u0027name\u0027] for rt in resp[\u0027resource_types\u0027])"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        for rs_type in ns_rs_types:"},{"line_number":71,"context_line":"            self.assertIn(rs_type[\u0027resource_type\u0027][\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":16,"id":"6b125c39_6eb24ca9","line":68,"range":{"start_line":68,"start_character":0,"end_line":68,"end_character":60},"in_reply_to":"6e803a3f_92f74904","updated":"2021-10-14 12:14:51.000000000","message":"Done","commit_id":"627d9aca2f97a99a2a03b3135867bca888ddb4de"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"7d7b9c838224d477d1ea671dc9053c6b30ef8890","unresolved":true,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def test_create_resource_type(self):"},{"line_number":104,"context_line":"        # As this is been covered in other tests for admin role,"},{"line_number":105,"context_line":"        # skipping to test only create resource types seperately."},{"line_number":106,"context_line":"        pass"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def test_get_resource_type(self):"}],"source_content_type":"text/x-python","patch_set":16,"id":"5692b310_7df010c4","line":105,"range":{"start_line":105,"start_character":54,"end_line":105,"end_character":64},"updated":"2021-10-13 21:39:01.000000000","message":"separately*","commit_id":"627d9aca2f97a99a2a03b3135867bca888ddb4de"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"13e494bbac127d02c8d99b029150d55b25733211","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def test_create_resource_type(self):"},{"line_number":104,"context_line":"        # As this is been covered in other tests for admin role,"},{"line_number":105,"context_line":"        # skipping to test only create resource types seperately."},{"line_number":106,"context_line":"        pass"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def test_get_resource_type(self):"}],"source_content_type":"text/x-python","patch_set":16,"id":"021cea93_9cb31255","line":105,"range":{"start_line":105,"start_character":54,"end_line":105,"end_character":64},"in_reply_to":"5692b310_7df010c4","updated":"2021-10-14 12:14:51.000000000","message":"Done","commit_id":"627d9aca2f97a99a2a03b3135867bca888ddb4de"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"7d7b9c838224d477d1ea671dc9053c6b30ef8890","unresolved":true,"context_lines":[{"line_number":184,"context_line":"            ns \u003d actual_rs_type[\u0027namespace\u0027]"},{"line_number":185,"context_line":"            expected_status \u003d 200"},{"line_number":186,"context_line":"            if not (ns[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"},{"line_number":187,"context_line":"                    ns[\u0027owner\u0027] \u003d\u003d owner):"},{"line_number":188,"context_line":"                expected_status \u003d exceptions.NotFound"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"            self.do_request(\u0027list_resource_type_association\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"cd35f143_7a1edbd1","line":187,"range":{"start_line":187,"start_character":35,"end_line":187,"end_character":40},"updated":"2021-10-13 21:39:01.000000000","message":"This would fit on a single line.","commit_id":"627d9aca2f97a99a2a03b3135867bca888ddb4de"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"13e494bbac127d02c8d99b029150d55b25733211","unresolved":false,"context_lines":[{"line_number":184,"context_line":"            ns \u003d actual_rs_type[\u0027namespace\u0027]"},{"line_number":185,"context_line":"            expected_status \u003d 200"},{"line_number":186,"context_line":"            if not (ns[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"},{"line_number":187,"context_line":"                    ns[\u0027owner\u0027] \u003d\u003d owner):"},{"line_number":188,"context_line":"                expected_status \u003d exceptions.NotFound"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"            self.do_request(\u0027list_resource_type_association\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"c44514e2_a887312a","line":187,"range":{"start_line":187,"start_character":35,"end_line":187,"end_character":40},"in_reply_to":"cd35f143_7a1edbd1","updated":"2021-10-14 12:14:51.000000000","message":"Done","commit_id":"627d9aca2f97a99a2a03b3135867bca888ddb4de"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"7d7b9c838224d477d1ea671dc9053c6b30ef8890","unresolved":true,"context_lines":[{"line_number":223,"context_line":"            ns \u003d actual_rs_type[\u0027namespace\u0027]"},{"line_number":224,"context_line":"            expected_status \u003d exceptions.Forbidden"},{"line_number":225,"context_line":"            if not (ns[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"},{"line_number":226,"context_line":"                    ns[\u0027owner\u0027] \u003d\u003d owner):"},{"line_number":227,"context_line":"                expected_status \u003d exceptions.NotFound"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"            self.do_request("}],"source_content_type":"text/x-python","patch_set":16,"id":"57086227_45bf9c9b","line":226,"range":{"start_line":226,"start_character":34,"end_line":226,"end_character":35},"updated":"2021-10-13 21:39:01.000000000","message":"This would fit on a single line.","commit_id":"627d9aca2f97a99a2a03b3135867bca888ddb4de"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"13e494bbac127d02c8d99b029150d55b25733211","unresolved":false,"context_lines":[{"line_number":223,"context_line":"            ns \u003d actual_rs_type[\u0027namespace\u0027]"},{"line_number":224,"context_line":"            expected_status \u003d exceptions.Forbidden"},{"line_number":225,"context_line":"            if not (ns[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"},{"line_number":226,"context_line":"                    ns[\u0027owner\u0027] \u003d\u003d owner):"},{"line_number":227,"context_line":"                expected_status \u003d exceptions.NotFound"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"            self.do_request("}],"source_content_type":"text/x-python","patch_set":16,"id":"7b384306_d852fbe3","line":226,"range":{"start_line":226,"start_character":34,"end_line":226,"end_character":35},"in_reply_to":"57086227_45bf9c9b","updated":"2021-10-14 12:14:51.000000000","message":"Done","commit_id":"627d9aca2f97a99a2a03b3135867bca888ddb4de"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"34b20b54f4ff018ed015b999468a49a5ee9734ce","unresolved":true,"context_lines":[{"line_number":27,"context_line":"        # of invalid results if these tests are executed concurrently, to avoid"},{"line_number":28,"context_line":"        # such conflicts we are using locking to execute metadef tests"},{"line_number":29,"context_line":"        # serially."},{"line_number":30,"context_line":"        self.useFixture(fixtures.LockFixture(\u0027metadef_namespaces\u0027))"},{"line_number":31,"context_line":"        super(MetadefV2RbacResourceTypeTest, self).setUp()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f8e2104_7af2dc45","line":30,"updated":"2021-10-14 16:33:48.000000000","message":"I just want to make sure I understand.. is this because  we could run the three (admin, member, reader) classes below concurrently and we want to make sure that doesn\u0027t happen because of the potential for overlapping resource types?\n\nIt\u0027s not a huge deal, but blocking tests like this just makes them take longer, especially since unless we\u0027re oversubscribed, we won\u0027t do other tests while we wait. It would be a lot better to namespace the names we\u0027re using with self.__class__.__name__ or something to allow them to run concurrently.\n\nI totally missed this in the patches before this, but the more we add here, the worse it will get.","commit_id":"55d726769ffb5a2cb256e533fdfa268a9099523d"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"940cad3eddc9b827ac5a3e462338ceef519acd33","unresolved":true,"context_lines":[{"line_number":27,"context_line":"        # of invalid results if these tests are executed concurrently, to avoid"},{"line_number":28,"context_line":"        # such conflicts we are using locking to execute metadef tests"},{"line_number":29,"context_line":"        # serially."},{"line_number":30,"context_line":"        self.useFixture(fixtures.LockFixture(\u0027metadef_namespaces\u0027))"},{"line_number":31,"context_line":"        super(MetadefV2RbacResourceTypeTest, self).setUp()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":17,"id":"0ca0e5ca_4afa6e22","line":30,"in_reply_to":"4b28043d_a87a9fdf","updated":"2022-03-01 13:42:41.000000000","message":"Not sure how but updating namespace with self.__class__.__name__ started working now :) after removing the lock.","commit_id":"55d726769ffb5a2cb256e533fdfa268a9099523d"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"bc257f0160da45f92864be89311c8677905616c3","unresolved":true,"context_lines":[{"line_number":27,"context_line":"        # of invalid results if these tests are executed concurrently, to avoid"},{"line_number":28,"context_line":"        # such conflicts we are using locking to execute metadef tests"},{"line_number":29,"context_line":"        # serially."},{"line_number":30,"context_line":"        self.useFixture(fixtures.LockFixture(\u0027metadef_namespaces\u0027))"},{"line_number":31,"context_line":"        super(MetadefV2RbacResourceTypeTest, self).setUp()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":17,"id":"88b322ba_7945941b","line":30,"in_reply_to":"55e460cc_65965843","updated":"2021-10-18 14:44:06.000000000","message":"I think should be good with follow up.\nAs discussed on IRC this will need some manipulation to avoid race conditions.","commit_id":"55d726769ffb5a2cb256e533fdfa268a9099523d"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"6468a6410f6b12d8df54d9d6df0c71e2885c1ce1","unresolved":true,"context_lines":[{"line_number":27,"context_line":"        # of invalid results if these tests are executed concurrently, to avoid"},{"line_number":28,"context_line":"        # such conflicts we are using locking to execute metadef tests"},{"line_number":29,"context_line":"        # serially."},{"line_number":30,"context_line":"        self.useFixture(fixtures.LockFixture(\u0027metadef_namespaces\u0027))"},{"line_number":31,"context_line":"        super(MetadefV2RbacResourceTypeTest, self).setUp()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":17,"id":"4b28043d_a87a9fdf","line":30,"in_reply_to":"88b322ba_7945941b","updated":"2021-12-15 06:02:01.000000000","message":"Sorry for late reply,\nUpdating the namespace name with self.__class__.__name__ is also not solving the issue.\n\nIf i understand correctly as per the IRC logs[1], we just need to remove the lock and update the namespace name in create_namespace(), right?\nBut even after doing like that, the namespaces names still clashes like before[2], I also tried different combinations of names but unfortunately not working.\n\nPlease correct me if I\u0027m missing anything.\n\n[1]: https://meetings.opendev.org/irclogs/%23openstack-glance/%23openstack-glance.2021-10-14.log.html\n[2]: http://pastebin.test.redhat.com/1015761","commit_id":"55d726769ffb5a2cb256e533fdfa268a9099523d"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"74eaa05c12dbc6ccf1875b597eca7d9f68545875","unresolved":true,"context_lines":[{"line_number":27,"context_line":"        # of invalid results if these tests are executed concurrently, to avoid"},{"line_number":28,"context_line":"        # such conflicts we are using locking to execute metadef tests"},{"line_number":29,"context_line":"        # serially."},{"line_number":30,"context_line":"        self.useFixture(fixtures.LockFixture(\u0027metadef_namespaces\u0027))"},{"line_number":31,"context_line":"        super(MetadefV2RbacResourceTypeTest, self).setUp()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":17,"id":"55e460cc_65965843","line":30,"in_reply_to":"9f8e2104_7af2dc45","updated":"2021-10-14 17:15:56.000000000","message":"Okay, I see abhi asked for this a while ago on an earlier patch. I guess this is something we should try to follow up on.","commit_id":"55d726769ffb5a2cb256e533fdfa268a9099523d"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"bc257f0160da45f92864be89311c8677905616c3","unresolved":true,"context_lines":[{"line_number":55,"context_line":"        client \u003d self.os_project_admin.resource_types_client"},{"line_number":56,"context_line":"        namespace_resource_types \u003d []"},{"line_number":57,"context_line":"        for ns in namespaces:"},{"line_number":58,"context_line":"            if ns[\u0027namespace\u0027].startswith(self.project_id):"},{"line_number":59,"context_line":"                client \u003d self.os_project_alt_admin.resource_types_client"},{"line_number":60,"context_line":"            resource_name \u003d \"rs_type_of_%s\" % (ns[\u0027namespace\u0027])"},{"line_number":61,"context_line":"            resource_type \u003d client.create_resource_type_association("}],"source_content_type":"text/x-python","patch_set":17,"id":"5dd116fa_5a128d17","line":58,"range":{"start_line":58,"start_character":42,"end_line":58,"end_character":57},"updated":"2021-10-18 14:44:06.000000000","message":"this should be self.alt_project_id","commit_id":"55d726769ffb5a2cb256e533fdfa268a9099523d"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"940cad3eddc9b827ac5a3e462338ceef519acd33","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        client \u003d self.os_project_admin.resource_types_client"},{"line_number":56,"context_line":"        namespace_resource_types \u003d []"},{"line_number":57,"context_line":"        for ns in namespaces:"},{"line_number":58,"context_line":"            if ns[\u0027namespace\u0027].startswith(self.project_id):"},{"line_number":59,"context_line":"                client \u003d self.os_project_alt_admin.resource_types_client"},{"line_number":60,"context_line":"            resource_name \u003d \"rs_type_of_%s\" % (ns[\u0027namespace\u0027])"},{"line_number":61,"context_line":"            resource_type \u003d client.create_resource_type_association("}],"source_content_type":"text/x-python","patch_set":17,"id":"d52d536b_05a8ffda","line":58,"range":{"start_line":58,"start_character":42,"end_line":58,"end_character":57},"in_reply_to":"5dd116fa_5a128d17","updated":"2022-03-01 13:42:41.000000000","message":"Done","commit_id":"55d726769ffb5a2cb256e533fdfa268a9099523d"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b37eb92fb6ad14bc9116c665a3c0215efe3fb924","unresolved":true,"context_lines":[{"line_number":47,"context_line":"        namespace_resource_types \u003d []"},{"line_number":48,"context_line":"        for ns in namespaces:"},{"line_number":49,"context_line":"            if ns[\u0027namespace\u0027].startswith(self.alt_project_id):"},{"line_number":50,"context_line":"                client \u003d self.os_project_alt_admin.resource_types_client"},{"line_number":51,"context_line":"            resource_name \u003d \"rs_type_of_%s\" % (ns[\u0027namespace\u0027])"},{"line_number":52,"context_line":"            resource_type \u003d client.create_resource_type_association("},{"line_number":53,"context_line":"                ns[\u0027namespace\u0027], name\u003dresource_name)"}],"source_content_type":"text/x-python","patch_set":19,"id":"ac21ab68_d5ff18a1","line":50,"range":{"start_line":50,"start_character":16,"end_line":50,"end_character":22},"updated":"2022-04-19 14:47:19.000000000","message":"After we hit the first alt_project namespace, then we will overwrite this variable, making any other iteration use the same client (even if it hits this if statement). I think you should use a temporary variable for this and set it explicitly to the main client or the alternate one to avoid confusion. Even if this is not broken now, it could easily be broken in the future if someone reordered the namespaces returned by create_namespaces(), although looking at it, I think it probably *is* already broken.","commit_id":"cbc85d0efc76cc0cf1f5596e6d054cae5b172408"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"2001556a304ef975d46d5c2e8791267f676945cd","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        namespace_resource_types \u003d []"},{"line_number":48,"context_line":"        for ns in namespaces:"},{"line_number":49,"context_line":"            if ns[\u0027namespace\u0027].startswith(self.alt_project_id):"},{"line_number":50,"context_line":"                client \u003d self.os_project_alt_admin.resource_types_client"},{"line_number":51,"context_line":"            resource_name \u003d \"rs_type_of_%s\" % (ns[\u0027namespace\u0027])"},{"line_number":52,"context_line":"            resource_type \u003d client.create_resource_type_association("},{"line_number":53,"context_line":"                ns[\u0027namespace\u0027], name\u003dresource_name)"}],"source_content_type":"text/x-python","patch_set":19,"id":"318d8634_68fdb1a7","line":50,"range":{"start_line":50,"start_character":16,"end_line":50,"end_character":22},"in_reply_to":"ac21ab68_d5ff18a1","updated":"2022-05-06 12:51:35.000000000","message":"Done","commit_id":"cbc85d0efc76cc0cf1f5596e6d054cae5b172408"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"824d6bd6f5d8261ee51aa42d1f50d7a738505c97","unresolved":true,"context_lines":[{"line_number":48,"context_line":"            alt_client \u003d None"},{"line_number":49,"context_line":"            if ns[\u0027namespace\u0027].startswith(self.alt_project_id):"},{"line_number":50,"context_line":"                alt_client \u003d self.os_project_alt_admin.resource_types_client"},{"line_number":51,"context_line":"                client \u003d alt_client"},{"line_number":52,"context_line":"            if alt_client is None:"},{"line_number":53,"context_line":"                client \u003d self.os_project_admin.resource_types_client"},{"line_number":54,"context_line":"            resource_name \u003d \"rs_type_of_%s\" % (ns[\u0027namespace\u0027])"}],"source_content_type":"text/x-python","patch_set":20,"id":"ffe01689_8af43ed7","line":51,"updated":"2022-05-12 14:28:50.000000000","message":"This is not necessary, you might as well just set alt_client from self.os_project_alt... each time. Not wrong, but, not necessary :)","commit_id":"81f8b0214dd79ba565be051fd67fdbbed1d476a2"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"5246bc8bd849513531900912082b5815dcc8536f","unresolved":true,"context_lines":[{"line_number":48,"context_line":"            alt_client \u003d None"},{"line_number":49,"context_line":"            if ns[\u0027namespace\u0027].startswith(self.alt_project_id):"},{"line_number":50,"context_line":"                alt_client \u003d self.os_project_alt_admin.resource_types_client"},{"line_number":51,"context_line":"                client \u003d alt_client"},{"line_number":52,"context_line":"            if alt_client is None:"},{"line_number":53,"context_line":"                client \u003d self.os_project_admin.resource_types_client"},{"line_number":54,"context_line":"            resource_name \u003d \"rs_type_of_%s\" % (ns[\u0027namespace\u0027])"}],"source_content_type":"text/x-python","patch_set":20,"id":"37f2b0cb_b22c4035","line":51,"in_reply_to":"ffe01689_8af43ed7","updated":"2022-05-16 08:55:06.000000000","message":"++","commit_id":"81f8b0214dd79ba565be051fd67fdbbed1d476a2"}]}
