)]}'
{"tempest/lib/base.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"eb28722db525518dd3f826b87991d248eb4fbbdc","unresolved":true,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    identity_version \u003d \u0027v3\u0027"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def do_request(self, method, expected_status\u003d200, client\u003dNone, **payload):"},{"line_number":112,"context_line":"        if not client:"},{"line_number":113,"context_line":"            client \u003d self.client"},{"line_number":114,"context_line":"        if isinstance(expected_status, type(Exception)):"},{"line_number":115,"context_line":"            self.assertRaises(expected_status,"},{"line_number":116,"context_line":"                              getattr(client, method),"},{"line_number":117,"context_line":"                              **payload)"},{"line_number":118,"context_line":"        else:"},{"line_number":119,"context_line":"            response \u003d getattr(client, method)(**payload)"},{"line_number":120,"context_line":"            self.assertEqual(response.response.status, expected_status)"},{"line_number":121,"context_line":"            return response"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def setup_user_client(self, project_id\u003dNone):"},{"line_number":124,"context_line":"        \"\"\"Set up project user with its own client."}],"source_content_type":"text/x-python","patch_set":1,"id":"8403ac14_ed7d655c","line":121,"range":{"start_line":111,"start_character":0,"end_line":121,"end_character":27},"updated":"2021-03-22 17:57:54.000000000","message":"+1 for this but instead of new class, we can add this in test.py BaseTestCase [1] itself and then you do not need to add multiple inheritance. test.py is stable interface for all the plugins.\n\n[1] https://github.com/openstack/tempest/blob/master/tempest/test.py#L75","commit_id":"eb1ad440b7dd7ebb78b48b344807b498d0416e47"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"eb28722db525518dd3f826b87991d248eb4fbbdc","unresolved":true,"context_lines":[{"line_number":120,"context_line":"            self.assertEqual(response.response.status, expected_status)"},{"line_number":121,"context_line":"            return response"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def setup_user_client(self, project_id\u003dNone):"},{"line_number":124,"context_line":"        \"\"\"Set up project user with its own client."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        This is useful for testing protection of resources in separate"},{"line_number":127,"context_line":"        projects."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        Returns a client object and the user\u0027s ID."},{"line_number":130,"context_line":"        \"\"\""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        user_dict \u003d {"},{"line_number":133,"context_line":"            \u0027name\u0027: data_utils.rand_name(\u0027user\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"a1f2f0fc_83e6f36c","line":130,"range":{"start_line":123,"start_character":0,"end_line":130,"end_character":11},"updated":"2021-03-22 17:57:54.000000000","message":"the use case of this is not clear to me. Now test can request project member or project alt members from tempest[1], do we still need this?\n\n[1] https://docs.openstack.org/tempest/latest/keystone_scopes_and_roles_support.html#project-scoped-personas","commit_id":"eb1ad440b7dd7ebb78b48b344807b498d0416e47"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5edc607be1152824f8a8a843c8396a847133abba","unresolved":true,"context_lines":[{"line_number":120,"context_line":"            self.assertEqual(response.response.status, expected_status)"},{"line_number":121,"context_line":"            return response"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def setup_user_client(self, project_id\u003dNone):"},{"line_number":124,"context_line":"        \"\"\"Set up project user with its own client."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        This is useful for testing protection of resources in separate"},{"line_number":127,"context_line":"        projects."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        Returns a client object and the user\u0027s ID."},{"line_number":130,"context_line":"        \"\"\""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        user_dict \u003d {"},{"line_number":133,"context_line":"            \u0027name\u0027: data_utils.rand_name(\u0027user\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"4392b5ee_c3de474a","line":130,"range":{"start_line":123,"start_character":0,"end_line":130,"end_character":11},"in_reply_to":"a1f2f0fc_83e6f36c","updated":"2021-03-23 02:05:55.000000000","message":"This is probably obsolete now that you\u0027ve added the necessary plumbing for $PROJECT scope and $ALT_PROJECT scope. I think we should be able to cover nearly all our bases with those.\n\nWe can add this back in if we absolutely need it, or we can add another official persona if there is enough need for it.","commit_id":"eb1ad440b7dd7ebb78b48b344807b498d0416e47"}]}
