)]}'
{"tempest/api/identity/admin/v2/test_tenants.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"b8e1defd2d38a13ad8469bc06965c9d019b1a903","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        body \u003d self.tenants_client.create_tenant(tenant_name,"},{"line_number":53,"context_line":"                                                 description\u003dtenant_desc)"},{"line_number":54,"context_line":"        tenant_body \u003d body[\u0027tenant\u0027]"},{"line_number":55,"context_line":"        tenant \u003d tenant_body"},{"line_number":56,"context_line":"        self.data.tenants.append(tenant)"},{"line_number":57,"context_line":"        tenant_id \u003d tenant_body[\u0027id\u0027]"},{"line_number":58,"context_line":"        desc1 \u003d tenant_body[\u0027description\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a8ffd7b_b13a9897","line":55,"updated":"2015-11-27 15:10:06.000000000","message":"Err... why do you need this?","commit_id":"0b6a5c3fc73d5bc09c2f182e78717145fd3976dc"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"dfec8fd382542be6b512f4251d06f3e3516c8979","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        body \u003d self.tenants_client.create_tenant(tenant_name,"},{"line_number":53,"context_line":"                                                 description\u003dtenant_desc)"},{"line_number":54,"context_line":"        tenant_body \u003d body[\u0027tenant\u0027]"},{"line_number":55,"context_line":"        tenant \u003d tenant_body"},{"line_number":56,"context_line":"        self.data.tenants.append(tenant)"},{"line_number":57,"context_line":"        tenant_id \u003d tenant_body[\u0027id\u0027]"},{"line_number":58,"context_line":"        desc1 \u003d tenant_body[\u0027description\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a8ffd7b_c0bf475f","line":55,"in_reply_to":"9a8ffd7b_8c597b37","updated":"2015-11-27 15:54:36.000000000","message":"Sorry I don\u0027t get it. How would tenant \u003d body[\u0027tenant\u0027] be different?","commit_id":"0b6a5c3fc73d5bc09c2f182e78717145fd3976dc"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"596e8a3185fa3e635f199d0b308086ddd53a33cc","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        body \u003d self.tenants_client.create_tenant(tenant_name,"},{"line_number":53,"context_line":"                                                 description\u003dtenant_desc)"},{"line_number":54,"context_line":"        tenant_body \u003d body[\u0027tenant\u0027]"},{"line_number":55,"context_line":"        tenant \u003d tenant_body"},{"line_number":56,"context_line":"        self.data.tenants.append(tenant)"},{"line_number":57,"context_line":"        tenant_id \u003d tenant_body[\u0027id\u0027]"},{"line_number":58,"context_line":"        desc1 \u003d tenant_body[\u0027description\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a8ffd7b_8c597b37","line":55,"in_reply_to":"9a8ffd7b_b13a9897","updated":"2015-11-27 15:22:59.000000000","message":"This is only for the sake of not going over pep8\u0027s limit","commit_id":"0b6a5c3fc73d5bc09c2f182e78717145fd3976dc"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"6b3b1874c66318a42206041a0865c947aa66587f","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        body \u003d self.tenants_client.create_tenant(tenant_name,"},{"line_number":53,"context_line":"                                                 description\u003dtenant_desc)"},{"line_number":54,"context_line":"        tenant_body \u003d body[\u0027tenant\u0027]"},{"line_number":55,"context_line":"        tenant \u003d tenant_body"},{"line_number":56,"context_line":"        self.data.tenants.append(tenant)"},{"line_number":57,"context_line":"        tenant_id \u003d tenant_body[\u0027id\u0027]"},{"line_number":58,"context_line":"        desc1 \u003d tenant_body[\u0027description\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a8ffd7b_83af097c","line":55,"in_reply_to":"9a8ffd7b_c0bf475f","updated":"2015-11-27 16:11:06.000000000","message":"So my reasoning was this:\ntenant, as to avoid having to type\n\u003d\u003d\u003d\u003d\nbody \u003d self.tenants_clients.create_tenant(tenant_name,\n                                                                     description\u003dtenant_desc)\ntenant \u003d body[\u0027tenant\u0027]\nself.data.tenants.append(tenant)\ntenant_id \u003d body[\u0027tenant\u0027][\u0027id]  \u003c\u003d This line \n\u003d\u003d\u003d\n\nI opted for create the tenat_body var holding body[\u0027tenant\u0027]\nand then calling it just like that\n\ntenant_id \u003d tenant_body[\u0027id\u0027]\n\nIf you prefer the other approach, I\u0027m up to modify it ;)","commit_id":"0b6a5c3fc73d5bc09c2f182e78717145fd3976dc"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"b8e1defd2d38a13ad8469bc06965c9d019b1a903","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        t_desc \u003d data_utils.rand_name(name\u003d\u0027desc\u0027)"},{"line_number":135,"context_line":"        body \u003d self.tenants_client.create_tenant(t_name, description\u003dt_desc)"},{"line_number":136,"context_line":"        tenant_body \u003d body[\u0027tenant\u0027]"},{"line_number":137,"context_line":"        tenant \u003d tenant_body"},{"line_number":138,"context_line":"        self.data.tenants.append(tenant)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        t_id \u003d tenant_body[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a8ffd7b_115044d3","line":137,"updated":"2015-11-27 15:10:06.000000000","message":"This looks redundant?","commit_id":"0b6a5c3fc73d5bc09c2f182e78717145fd3976dc"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"596e8a3185fa3e635f199d0b308086ddd53a33cc","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        t_desc \u003d data_utils.rand_name(name\u003d\u0027desc\u0027)"},{"line_number":135,"context_line":"        body \u003d self.tenants_client.create_tenant(t_name, description\u003dt_desc)"},{"line_number":136,"context_line":"        tenant_body \u003d body[\u0027tenant\u0027]"},{"line_number":137,"context_line":"        tenant \u003d tenant_body"},{"line_number":138,"context_line":"        self.data.tenants.append(tenant)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        t_id \u003d tenant_body[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a8ffd7b_8c22dba1","line":137,"in_reply_to":"9a8ffd7b_115044d3","updated":"2015-11-27 15:22:59.000000000","message":"ditto","commit_id":"0b6a5c3fc73d5bc09c2f182e78717145fd3976dc"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"a443a927c957fb7684bb54f04dae419d700862ba","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        t_desc2 \u003d data_utils.rand_name(name\u003d\u0027desc2\u0027)"},{"line_number":140,"context_line":"        body \u003d self.tenants_client.update_tenant(t_id, description\u003dt_desc2)"},{"line_number":141,"context_line":"        tenant2 \u003d body[\u0027tenant\u0027]"},{"line_number":142,"context_line":"        resp2_desc \u003d tenant2[\u0027description\u0027]"},{"line_number":143,"context_line":"        self.assertNotEqual(resp1_desc, resp2_desc)"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"9a8ffd7b_955d7717","line":141,"updated":"2015-12-01 16:57:52.000000000","message":"When I see tenant2 I think it is another tenant, but it is the same tenant, just updated. I think we should either rename this variable into updated_tenant or remove it at all.","commit_id":"11f5fbdbf44f0b9c2972ce977a19c2e86e394ddc"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"8ec22d13558e28de3953db2bb7c099e6d3c2fdd4","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        t_desc2 \u003d data_utils.rand_name(name\u003d\u0027desc2\u0027)"},{"line_number":140,"context_line":"        body \u003d self.tenants_client.update_tenant(t_id, description\u003dt_desc2)"},{"line_number":141,"context_line":"        tenant2 \u003d body[\u0027tenant\u0027]"},{"line_number":142,"context_line":"        resp2_desc \u003d tenant2[\u0027description\u0027]"},{"line_number":143,"context_line":"        self.assertNotEqual(resp1_desc, resp2_desc)"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"9a8ffd7b_8a4888b4","line":141,"in_reply_to":"9a8ffd7b_955d7717","updated":"2015-12-03 09:49:00.000000000","message":"Done","commit_id":"11f5fbdbf44f0b9c2972ce977a19c2e86e394ddc"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"a443a927c957fb7684bb54f04dae419d700862ba","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        t_en \u003d False"},{"line_number":160,"context_line":"        body \u003d self.tenants_client.create_tenant(t_name, enabled\u003dt_en)"},{"line_number":161,"context_line":"        tenant_body \u003d body[\u0027tenant\u0027]"},{"line_number":162,"context_line":"        tenant \u003d tenant_body"},{"line_number":163,"context_line":"        self.data.tenants.append(tenant)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        t_id \u003d tenant_body[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a8ffd7b_f55723c8","line":162,"updated":"2015-12-01 16:57:52.000000000","message":"tenant \u003d body[\u0027tenant\u0027]. L161 should be removed.","commit_id":"11f5fbdbf44f0b9c2972ce977a19c2e86e394ddc"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"8ec22d13558e28de3953db2bb7c099e6d3c2fdd4","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        t_en \u003d False"},{"line_number":160,"context_line":"        body \u003d self.tenants_client.create_tenant(t_name, enabled\u003dt_en)"},{"line_number":161,"context_line":"        tenant_body \u003d body[\u0027tenant\u0027]"},{"line_number":162,"context_line":"        tenant \u003d tenant_body"},{"line_number":163,"context_line":"        self.data.tenants.append(tenant)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        t_id \u003d tenant_body[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a8ffd7b_2ac87c21","line":162,"in_reply_to":"9a8ffd7b_f55723c8","updated":"2015-12-03 09:49:00.000000000","message":"Done","commit_id":"11f5fbdbf44f0b9c2972ce977a19c2e86e394ddc"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"a443a927c957fb7684bb54f04dae419d700862ba","unresolved":false,"context_lines":[{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        t_en2 \u003d True"},{"line_number":169,"context_line":"        body \u003d self.tenants_client.update_tenant(t_id, enabled\u003dt_en2)"},{"line_number":170,"context_line":"        tenant2 \u003d body[\u0027tenant\u0027]"},{"line_number":171,"context_line":"        resp2_en \u003d tenant2[\u0027enabled\u0027]"},{"line_number":172,"context_line":"        self.assertNotEqual(resp1_en, resp2_en)"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"9a8ffd7b_750333b9","line":170,"updated":"2015-12-01 16:57:52.000000000","message":"See comment above.","commit_id":"11f5fbdbf44f0b9c2972ce977a19c2e86e394ddc"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"8ec22d13558e28de3953db2bb7c099e6d3c2fdd4","unresolved":false,"context_lines":[{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        t_en2 \u003d True"},{"line_number":169,"context_line":"        body \u003d self.tenants_client.update_tenant(t_id, enabled\u003dt_en2)"},{"line_number":170,"context_line":"        tenant2 \u003d body[\u0027tenant\u0027]"},{"line_number":171,"context_line":"        resp2_en \u003d tenant2[\u0027enabled\u0027]"},{"line_number":172,"context_line":"        self.assertNotEqual(resp1_en, resp2_en)"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"9a8ffd7b_4acdc02f","line":170,"in_reply_to":"9a8ffd7b_750333b9","updated":"2015-12-03 09:49:00.000000000","message":"Done","commit_id":"11f5fbdbf44f0b9c2972ce977a19c2e86e394ddc"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"46ce55524f702757a907158496cb1dc6d5cfd5ea","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        t_desc2 \u003d data_utils.rand_name(name\u003d\u0027desc2\u0027)"},{"line_number":140,"context_line":"        body \u003d self.tenants_client.update_tenant(t_id, description\u003dt_desc2)"},{"line_number":141,"context_line":"        updated_tenant \u003d body[\u0027tenant\u0027]"},{"line_number":142,"context_line":"        resp2_desc \u003d updated_tenant[\u0027description\u0027]"},{"line_number":143,"context_line":"        self.assertNotEqual(resp1_desc, resp2_desc)"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7a740942_ed89bacb","line":141,"updated":"2015-12-04 09:01:59.000000000","message":"NIT: this changes seems unrelated","commit_id":"f7bba531fd15eb388ecd3b56cc331475bbd06dc1"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"a7cea43c5f72261ff765d18fbf35cef05f269c18","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        t_desc2 \u003d data_utils.rand_name(name\u003d\u0027desc2\u0027)"},{"line_number":140,"context_line":"        body \u003d self.tenants_client.update_tenant(t_id, description\u003dt_desc2)"},{"line_number":141,"context_line":"        updated_tenant \u003d body[\u0027tenant\u0027]"},{"line_number":142,"context_line":"        resp2_desc \u003d updated_tenant[\u0027description\u0027]"},{"line_number":143,"context_line":"        self.assertNotEqual(resp1_desc, resp2_desc)"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7a740942_945fda71","line":141,"in_reply_to":"7a740942_e8dbe8eb","updated":"2015-12-04 11:29:11.000000000","message":"Andrea, please take a look at this line in patch set 13.","commit_id":"f7bba531fd15eb388ecd3b56cc331475bbd06dc1"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"0e323cfabddccf205950da35bf243439a3c5c831","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        t_desc2 \u003d data_utils.rand_name(name\u003d\u0027desc2\u0027)"},{"line_number":140,"context_line":"        body \u003d self.tenants_client.update_tenant(t_id, description\u003dt_desc2)"},{"line_number":141,"context_line":"        updated_tenant \u003d body[\u0027tenant\u0027]"},{"line_number":142,"context_line":"        resp2_desc \u003d updated_tenant[\u0027description\u0027]"},{"line_number":143,"context_line":"        self.assertNotEqual(resp1_desc, resp2_desc)"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7a740942_e8dbe8eb","line":141,"in_reply_to":"7a740942_ed89bacb","updated":"2015-12-04 09:44:45.000000000","message":"Requested by ylobankon to clarify the use and be coherent, and PEP8, please see former patchset","commit_id":"f7bba531fd15eb388ecd3b56cc331475bbd06dc1"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"46ce55524f702757a907158496cb1dc6d5cfd5ea","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        # Update the enabled attribute of a tenant"},{"line_number":158,"context_line":"        t_name \u003d data_utils.rand_name(name\u003d\u0027tenant\u0027)"},{"line_number":159,"context_line":"        t_en \u003d False"},{"line_number":160,"context_line":"        body \u003d self.tenants_client.create_tenant(t_name, enabled\u003dt_en)"},{"line_number":161,"context_line":"        tenant \u003d body[\u0027tenant\u0027]"},{"line_number":162,"context_line":"        self.data.tenants.append(tenant)"},{"line_number":163,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7a740942_6d186a85","line":160,"updated":"2015-12-04 09:01:59.000000000","message":"Ditto","commit_id":"f7bba531fd15eb388ecd3b56cc331475bbd06dc1"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"0e323cfabddccf205950da35bf243439a3c5c831","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        # Update the enabled attribute of a tenant"},{"line_number":158,"context_line":"        t_name \u003d data_utils.rand_name(name\u003d\u0027tenant\u0027)"},{"line_number":159,"context_line":"        t_en \u003d False"},{"line_number":160,"context_line":"        body \u003d self.tenants_client.create_tenant(t_name, enabled\u003dt_en)"},{"line_number":161,"context_line":"        tenant \u003d body[\u0027tenant\u0027]"},{"line_number":162,"context_line":"        self.data.tenants.append(tenant)"},{"line_number":163,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7a740942_0800b433","line":160,"in_reply_to":"7a740942_6d186a85","updated":"2015-12-04 09:44:45.000000000","message":"Ditto","commit_id":"f7bba531fd15eb388ecd3b56cc331475bbd06dc1"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"46ce55524f702757a907158496cb1dc6d5cfd5ea","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        t_en2 \u003d True"},{"line_number":168,"context_line":"        body \u003d self.tenants_client.update_tenant(t_id, enabled\u003dt_en2)"},{"line_number":169,"context_line":"        updated_tenant \u003d body[\u0027tenant\u0027]"},{"line_number":170,"context_line":"        resp2_en \u003d updated_tenant[\u0027enabled\u0027]"},{"line_number":171,"context_line":"        self.assertNotEqual(resp1_en, resp2_en)"},{"line_number":172,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7a740942_4d17ae51","line":169,"updated":"2015-12-04 09:01:59.000000000","message":"Ditto","commit_id":"f7bba531fd15eb388ecd3b56cc331475bbd06dc1"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"0e323cfabddccf205950da35bf243439a3c5c831","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        t_en2 \u003d True"},{"line_number":168,"context_line":"        body \u003d self.tenants_client.update_tenant(t_id, enabled\u003dt_en2)"},{"line_number":169,"context_line":"        updated_tenant \u003d body[\u0027tenant\u0027]"},{"line_number":170,"context_line":"        resp2_en \u003d updated_tenant[\u0027enabled\u0027]"},{"line_number":171,"context_line":"        self.assertNotEqual(resp1_en, resp2_en)"},{"line_number":172,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7a740942_c8f94c4f","line":169,"in_reply_to":"7a740942_4d17ae51","updated":"2015-12-04 09:44:45.000000000","message":"Ditto","commit_id":"f7bba531fd15eb388ecd3b56cc331475bbd06dc1"}],"tempest/api/identity/base.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"27fc2da1fa9c6351cd1ef3b1dfd678a68a0d3ad8","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        cls.creds_client \u003d cls.os_adm.credentials_client"},{"line_number":147,"context_line":"        cls.groups_client \u003d cls.os_adm.groups_client"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        cls.data \u003d DataGenerator(cls.client, cls.tenants_client)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    @classmethod"},{"line_number":152,"context_line":"    def resource_cleanup(cls):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_0afd0a6e","line":149,"updated":"2015-12-01 06:43:23.000000000","message":"cls.tenants_client  is v2 client and does not looks good to pass that for v3.\n\nBest way is to separate the DataGenerator for v3 and v2 and have cls.data accordingly. Currently this is having methods for both.\n\nhow about separating DataGenerator in base patch and making this patch dependent on that. So that we can have clean implementation here.\n\nor you want to do that later then as of now making tenants_client as optional in  DataGenerator with TODO?","commit_id":"e9d2b9733bcddde82085732c5cd1e90484ded74e"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"00be96340c8aa6d11fc9135673b0a700c13230ab","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        cls.creds_client \u003d cls.os_adm.credentials_client"},{"line_number":147,"context_line":"        cls.groups_client \u003d cls.os_adm.groups_client"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        cls.data \u003d DataGenerator(cls.client, cls.tenants_client)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    @classmethod"},{"line_number":152,"context_line":"    def resource_cleanup(cls):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_39806646","line":149,"in_reply_to":"9a8ffd7b_0afd0a6e","updated":"2015-12-01 09:33:41.000000000","message":"Done","commit_id":"e9d2b9733bcddde82085732c5cd1e90484ded74e"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"a443a927c957fb7684bb54f04dae419d700862ba","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        super(BaseIdentityV3AdminTest, cls).setup_clients()"},{"line_number":139,"context_line":"        cls.client \u003d cls.os_adm.identity_v3_client"},{"line_number":140,"context_line":"        cls.token \u003d cls.os_adm.token_v3_client"},{"line_number":141,"context_line":"        cls.tenants_client \u003d cls.os_adm.tenants_client"},{"line_number":142,"context_line":"        cls.endpoints_client \u003d cls.os_adm.endpoints_client"},{"line_number":143,"context_line":"        cls.region_client \u003d cls.os_adm.region_client"},{"line_number":144,"context_line":"        cls.service_client \u003d cls.os_adm.service_client"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a8ffd7b_759fb35f","line":141,"updated":"2015-12-01 16:57:52.000000000","message":"Sorry, maybe I am missing something. Why do we need it here? It is V3 class.","commit_id":"11f5fbdbf44f0b9c2972ce977a19c2e86e394ddc"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"8ec22d13558e28de3953db2bb7c099e6d3c2fdd4","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        super(BaseIdentityV3AdminTest, cls).setup_clients()"},{"line_number":139,"context_line":"        cls.client \u003d cls.os_adm.identity_v3_client"},{"line_number":140,"context_line":"        cls.token \u003d cls.os_adm.token_v3_client"},{"line_number":141,"context_line":"        cls.tenants_client \u003d cls.os_adm.tenants_client"},{"line_number":142,"context_line":"        cls.endpoints_client \u003d cls.os_adm.endpoints_client"},{"line_number":143,"context_line":"        cls.region_client \u003d cls.os_adm.region_client"},{"line_number":144,"context_line":"        cls.service_client \u003d cls.os_adm.service_client"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a8ffd7b_65e4773b","line":141,"in_reply_to":"9a8ffd7b_759fb35f","updated":"2015-12-03 09:49:00.000000000","message":"Done","commit_id":"11f5fbdbf44f0b9c2972ce977a19c2e86e394ddc"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"fccdf452e3966d374b41ff5d9321ebabb54d12a1","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        cls.creds_client \u003d cls.os_adm.credentials_client"},{"line_number":147,"context_line":"        cls.groups_client \u003d cls.os_adm.groups_client"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        cls.data \u003d DataGenerator(cls.client, cls.tenants_client)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    @classmethod"},{"line_number":152,"context_line":"    def resource_cleanup(cls):"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a8ffd7b_4cb0d2dd","line":149,"updated":"2015-12-02 00:31:27.000000000","message":"Yes as per comment in PS 11, its not good to pass v2 client here. I prefer to split the DataGenerator for v2 and v3 as it has separate methods for both not on sharing bases. but as of now you can pass None.","commit_id":"11f5fbdbf44f0b9c2972ce977a19c2e86e394ddc"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"8ec22d13558e28de3953db2bb7c099e6d3c2fdd4","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        cls.creds_client \u003d cls.os_adm.credentials_client"},{"line_number":147,"context_line":"        cls.groups_client \u003d cls.os_adm.groups_client"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        cls.data \u003d DataGenerator(cls.client, cls.tenants_client)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    @classmethod"},{"line_number":152,"context_line":"    def resource_cleanup(cls):"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a8ffd7b_25d18f57","line":149,"in_reply_to":"9a8ffd7b_4cb0d2dd","updated":"2015-12-03 09:49:00.000000000","message":"Done","commit_id":"11f5fbdbf44f0b9c2972ce977a19c2e86e394ddc"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"fccdf452e3966d374b41ff5d9321ebabb54d12a1","unresolved":false,"context_lines":[{"line_number":187,"context_line":"            self.client \u003d client"},{"line_number":188,"context_line":"            # TODO(dmellado) split Datagenerator for v2 and v3"},{"line_number":189,"context_line":"            if tenants_client is not None:"},{"line_number":190,"context_line":"                self.tenants_client \u003d tenants_client"},{"line_number":191,"context_line":"            self.users \u003d []"},{"line_number":192,"context_line":"            self.tenants \u003d []"},{"line_number":193,"context_line":"            self.roles \u003d []"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a8ffd7b_4cfe926c","line":190,"updated":"2015-12-02 00:31:27.000000000","message":"or just assign it directly.","commit_id":"11f5fbdbf44f0b9c2972ce977a19c2e86e394ddc"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"8ec22d13558e28de3953db2bb7c099e6d3c2fdd4","unresolved":false,"context_lines":[{"line_number":187,"context_line":"            self.client \u003d client"},{"line_number":188,"context_line":"            # TODO(dmellado) split Datagenerator for v2 and v3"},{"line_number":189,"context_line":"            if tenants_client is not None:"},{"line_number":190,"context_line":"                self.tenants_client \u003d tenants_client"},{"line_number":191,"context_line":"            self.users \u003d []"},{"line_number":192,"context_line":"            self.tenants \u003d []"},{"line_number":193,"context_line":"            self.roles \u003d []"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a8ffd7b_45d61350","line":190,"in_reply_to":"9a8ffd7b_4cfe926c","updated":"2015-12-03 09:49:00.000000000","message":"Done","commit_id":"11f5fbdbf44f0b9c2972ce977a19c2e86e394ddc"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"7b763fdac44a53c3ee4117d6a6b8ce89cdebbda5","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        def __init__(self, client, tenants_client\u003dNone):"},{"line_number":191,"context_line":"            self.client \u003d client"},{"line_number":192,"context_line":"            # TODO(dmellado) split Datagenerator for v2 and v3"},{"line_number":193,"context_line":"            self.tenants_client \u003d tenants_client"},{"line_number":194,"context_line":"            self.users \u003d []"},{"line_number":195,"context_line":"            self.tenants \u003d []"}],"source_content_type":"text/x-python","patch_set":24,"id":"5a710552_5d63e21a","line":192,"updated":"2015-12-15 11:20:24.000000000","message":"I think you can use the creds_client here, or even drop the DataGenerator, just add some logic to cleanup the created resources","commit_id":"b04da902a332a6059e4680252c76b265b23bcf7d"}],"tempest/clients.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"a443a927c957fb7684bb54f04dae419d700862ba","unresolved":false,"context_lines":[{"line_number":410,"context_line":"        # Client uses public endpoint type of Keystone API v2"},{"line_number":411,"context_line":"        self.identity_public_client \u003d IdentityClient(self.auth_provider,"},{"line_number":412,"context_line":"                                                     **params_v2_public)"},{"line_number":413,"context_line":"        self.tenants_public_client \u003d TenantsClient(self.auth_provider,"},{"line_number":414,"context_line":"                                                   **params_v2_public)"},{"line_number":415,"context_line":"        params_v3 \u003d params.copy()"},{"line_number":416,"context_line":"        params_v3[\u0027endpoint_type\u0027] \u003d CONF.identity.v3_endpoint_type"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a8ffd7b_b9a19548","line":413,"updated":"2015-12-01 16:57:52.000000000","message":"I didn\u0027t find any place where this client is used.","commit_id":"11f5fbdbf44f0b9c2972ce977a19c2e86e394ddc"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"ec0b64bcb613e7ed2d9a60540750cc5767826c8d","unresolved":false,"context_lines":[{"line_number":410,"context_line":"        # Client uses public endpoint type of Keystone API v2"},{"line_number":411,"context_line":"        self.identity_public_client \u003d IdentityClient(self.auth_provider,"},{"line_number":412,"context_line":"                                                     **params_v2_public)"},{"line_number":413,"context_line":"        self.tenants_public_client \u003d TenantsClient(self.auth_provider,"},{"line_number":414,"context_line":"                                                   **params_v2_public)"},{"line_number":415,"context_line":"        params_v3 \u003d params.copy()"},{"line_number":416,"context_line":"        params_v3[\u0027endpoint_type\u0027] \u003d CONF.identity.v3_endpoint_type"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a8ffd7b_c8d1f8fc","line":413,"in_reply_to":"9a8ffd7b_6c86f6dc","updated":"2015-12-02 10:53:47.000000000","message":"Now I can see. Thanks.","commit_id":"11f5fbdbf44f0b9c2972ce977a19c2e86e394ddc"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"fccdf452e3966d374b41ff5d9321ebabb54d12a1","unresolved":false,"context_lines":[{"line_number":410,"context_line":"        # Client uses public endpoint type of Keystone API v2"},{"line_number":411,"context_line":"        self.identity_public_client \u003d IdentityClient(self.auth_provider,"},{"line_number":412,"context_line":"                                                     **params_v2_public)"},{"line_number":413,"context_line":"        self.tenants_public_client \u003d TenantsClient(self.auth_provider,"},{"line_number":414,"context_line":"                                                   **params_v2_public)"},{"line_number":415,"context_line":"        params_v3 \u003d params.copy()"},{"line_number":416,"context_line":"        params_v3[\u0027endpoint_type\u0027] \u003d CONF.identity.v3_endpoint_type"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a8ffd7b_6c86f6dc","line":413,"in_reply_to":"9a8ffd7b_b9a19548","updated":"2015-12-02 00:31:27.000000000","message":"it is used in BaseIdentityV2Test","commit_id":"11f5fbdbf44f0b9c2972ce977a19c2e86e394ddc"}],"tempest/cmd/cleanup_service.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"7b763fdac44a53c3ee4117d6a6b8ce89cdebbda5","unresolved":false,"context_lines":[{"line_number":896,"context_line":"class TenantService(IdentityService):"},{"line_number":897,"context_line":""},{"line_number":898,"context_line":"    def __init__(self, manager, **kwargs):"},{"line_number":899,"context_line":"        super(TenantService, self).__init__(kwargs)"},{"line_number":900,"context_line":"        self.client \u003d manager.tenants_client"},{"line_number":901,"context_line":""},{"line_number":902,"context_line":"    def list(self):"}],"source_content_type":"text/x-python","patch_set":24,"id":"5a710552_10e8e17b","line":899,"updated":"2015-12-15 11:20:24.000000000","message":"The manager parameter is missing in the call to super","commit_id":"b04da902a332a6059e4680252c76b265b23bcf7d"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"7e78cd0fce1938c6bd6d7a7f013067b000b9e15b","unresolved":false,"context_lines":[{"line_number":896,"context_line":"class TenantService(IdentityService):"},{"line_number":897,"context_line":""},{"line_number":898,"context_line":"    def __init__(self, manager, **kwargs):"},{"line_number":899,"context_line":"        super(TenantService, self).__init__(kwargs)"},{"line_number":900,"context_line":"        self.client \u003d manager.tenants_client"},{"line_number":901,"context_line":""},{"line_number":902,"context_line":"    def list(self):"}],"source_content_type":"text/x-python","patch_set":24,"id":"5a710552_04709f71","line":899,"in_reply_to":"5a710552_10e8e17b","updated":"2015-12-15 11:32:35.000000000","message":"Not true, sorry","commit_id":"b04da902a332a6059e4680252c76b265b23bcf7d"}],"tempest/common/cred_client.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"cfef812fe742cfcb8e65d1490ab1319c5df65720","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"class V2CredsClient(CredsClient):"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def create_project(self, name, description):"},{"line_number":100,"context_line":"        tenant \u003d self.tenant_client.create_tenant("},{"line_number":101,"context_line":"            name\u003dname, description\u003ddescription)[\u0027tenant\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_28a3df01","line":98,"updated":"2015-11-26 10:29:57.000000000","message":"How about just storing tenant_client in this only not in base class","commit_id":"c7b2d1b1474548c2da48d1cdbcb894918faee427"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"cfef812fe742cfcb8e65d1490ab1319c5df65720","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    if isinstance(tenant_client, v2_tenant.TenantClient):"},{"line_number":163,"context_line":"        return V2CredsClient(tenant_client)"},{"line_number":164,"context_line":"    elif isinstance(identity_client, v2_identity.IdentityClient):"},{"line_number":165,"context_line":"        return V2CredsClient(identity_client)"},{"line_number":166,"context_line":"    else:"},{"line_number":167,"context_line":"        return V3CredsClient(identity_client, project_domain_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_c8e2532f","line":165,"updated":"2015-11-26 10:29:57.000000000","message":"we can just store both client in V2CredsClient and use them accordingly","commit_id":"c7b2d1b1474548c2da48d1cdbcb894918faee427"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"27fc2da1fa9c6351cd1ef3b1dfd678a68a0d3ad8","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        self.identity_client \u003d identity_client"},{"line_number":37,"context_line":"        # this is temporary until the v3 project client is"},{"line_number":38,"context_line":"        # separated, then tenants_client will become mandatory"},{"line_number":39,"context_line":"        self.tenants_client \u003d tenants_client or identity_client"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def create_user(self, username, password, project, email):"},{"line_number":42,"context_line":"        user \u003d self.identity_client.create_user("}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_68e85e17","line":39,"updated":"2015-12-01 06:43:23.000000000","message":"why not self.tenants_client \u003d tenants_client only\n\nas v3 (either base class method) will not use self.tenants_client.\n\nI was thinking to have self.tenants_client in v2 class only but as you mentioned v3 project client can be separated then it is fine to store here.","commit_id":"e9d2b9733bcddde82085732c5cd1e90484ded74e"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"292547deda8d11ddfd2987a5b8a186ddf0500978","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        self.identity_client \u003d identity_client"},{"line_number":37,"context_line":"        # this is temporary until the v3 project client is"},{"line_number":38,"context_line":"        # separated, then tenants_client will become mandatory"},{"line_number":39,"context_line":"        self.tenants_client \u003d tenants_client or identity_client"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def create_user(self, username, password, project, email):"},{"line_number":42,"context_line":"        user \u003d self.identity_client.create_user("}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_ecf1b996","line":39,"in_reply_to":"9a8ffd7b_1e43086e","updated":"2015-12-01 10:02:24.000000000","message":"My proposal here was to have:\n\nself.projects_client \u003d projects_client or identity_client\n\nso that in v2 case we pass the tenants_client into the projects_client parameter, and for v3 we fall back to the identity client, until the v3 project client is separated.\n\nThe it would be:\n\nself.projects_client \u003d projects_client","commit_id":"e9d2b9733bcddde82085732c5cd1e90484ded74e"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"37fd79e2b9cc679cc26c737168fba5d4bef7c1fa","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        self.identity_client \u003d identity_client"},{"line_number":37,"context_line":"        # this is temporary until the v3 project client is"},{"line_number":38,"context_line":"        # separated, then tenants_client will become mandatory"},{"line_number":39,"context_line":"        self.tenants_client \u003d tenants_client or identity_client"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def create_user(self, username, password, project, email):"},{"line_number":42,"context_line":"        user \u003d self.identity_client.create_user("}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_e9b8c62c","line":39,"in_reply_to":"9a8ffd7b_263fdd26","updated":"2015-12-01 10:53:56.000000000","message":"+1 guys. I will start work on separating projects_client from identity_client once this patch is merged.","commit_id":"e9d2b9733bcddde82085732c5cd1e90484ded74e"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"00be96340c8aa6d11fc9135673b0a700c13230ab","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        self.identity_client \u003d identity_client"},{"line_number":37,"context_line":"        # this is temporary until the v3 project client is"},{"line_number":38,"context_line":"        # separated, then tenants_client will become mandatory"},{"line_number":39,"context_line":"        self.tenants_client \u003d tenants_client or identity_client"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def create_user(self, username, password, project, email):"},{"line_number":42,"context_line":"        user \u003d self.identity_client.create_user("}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_1e43086e","line":39,"in_reply_to":"9a8ffd7b_68e85e17","updated":"2015-12-01 09:33:41.000000000","message":"Done","commit_id":"e9d2b9733bcddde82085732c5cd1e90484ded74e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"2cf2ba3275208debe5ed326ffd269d3b7785b4d2","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        self.identity_client \u003d identity_client"},{"line_number":37,"context_line":"        # this is temporary until the v3 project client is"},{"line_number":38,"context_line":"        # separated, then tenants_client will become mandatory"},{"line_number":39,"context_line":"        self.tenants_client \u003d tenants_client or identity_client"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def create_user(self, username, password, project, email):"},{"line_number":42,"context_line":"        user \u003d self.identity_client.create_user("}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_263fdd26","line":39,"in_reply_to":"9a8ffd7b_ecf1b996","updated":"2015-12-01 10:46:31.000000000","message":"+1.\nYea m also on same page. I was thinking to do that once v3 client is separated (so that we can have sefl.project_client) but worth to do now as it will be easy and less confusing for v3 work.","commit_id":"e9d2b9733bcddde82085732c5cd1e90484ded74e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"27fc2da1fa9c6351cd1ef3b1dfd678a68a0d3ad8","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                                     v2_identity.IdentityClient):"},{"line_number":166,"context_line":"        return V2CredsClient(identity_client, tenants_client)"},{"line_number":167,"context_line":"    elif isinstance(identity_client, v2_identity.IdentityClient):"},{"line_number":168,"context_line":"        return V2CredsClient(identity_client)"},{"line_number":169,"context_line":"    else:"},{"line_number":170,"context_line":"        return V3CredsClient(identity_client, project_domain_name)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_88782291","line":168,"updated":"2015-12-01 06:43:23.000000000","message":"we can have this without condition as in V2CredsClient you made tenants_client as mandatory arg\n\nif isinstance(identity_client, v2_identity.IdentityClient):\n    return V2CredsClient(identity_client, tenants_client)\nelse:\n    return V3CredsClient(identity_client, project_domain_name)","commit_id":"e9d2b9733bcddde82085732c5cd1e90484ded74e"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"00be96340c8aa6d11fc9135673b0a700c13230ab","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                                     v2_identity.IdentityClient):"},{"line_number":166,"context_line":"        return V2CredsClient(identity_client, tenants_client)"},{"line_number":167,"context_line":"    elif isinstance(identity_client, v2_identity.IdentityClient):"},{"line_number":168,"context_line":"        return V2CredsClient(identity_client)"},{"line_number":169,"context_line":"    else:"},{"line_number":170,"context_line":"        return V3CredsClient(identity_client, project_domain_name)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_7e4ed497","line":168,"in_reply_to":"9a8ffd7b_88782291","updated":"2015-12-01 09:33:41.000000000","message":"Done","commit_id":"e9d2b9733bcddde82085732c5cd1e90484ded74e"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"e9d63e842bc39af3aae3e1096a450d9d4ff1aa61","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        # The client implies version and credentials"},{"line_number":36,"context_line":"        self.identity_client \u003d identity_client"},{"line_number":37,"context_line":"        # this is temporary until the v3 project client is"},{"line_number":38,"context_line":"        # separated, then projects_client will become mandatory"},{"line_number":39,"context_line":"        self.projects_client \u003d projects_client or identity_client"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def create_user(self, username, password, project, email):"}],"source_content_type":"text/x-python","patch_set":23,"id":"7a740942_b6485eb4","line":38,"updated":"2015-12-12 14:54:19.000000000","message":"Yes. This it really should be mandatory after the split is complete.","commit_id":"1aa2862c063bc9fb50830ec44f44a7a35ea05745"}],"tempest/common/dynamic_creds.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"cde497853fb9ebcae06afa62578aa41d7e97f979","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                self.credentials_domain)"},{"line_number":72,"context_line":"        self.creds_client \u003d cred_client.get_creds_client("},{"line_number":73,"context_line":"            self.identity_admin_client, "},{"line_number":74,"context_line":"            self.tenant_admin_client, "},{"line_number":75,"context_line":"            self.creds_domain_name)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def _get_admin_clients(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a8ffd7b_e91f026a","line":74,"updated":"2015-11-26 17:22:31.000000000","message":"Please, remove these symbols :)","commit_id":"fb388fa20a0e5a9150b5ad9320c80bff5b016989"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"cde497853fb9ebcae06afa62578aa41d7e97f979","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        \"\"\""},{"line_number":84,"context_line":"        os \u003d clients.Manager(self.default_admin_creds)"},{"line_number":85,"context_line":"        if self.identity_version \u003d\u003d \u0027v2\u0027:"},{"line_number":86,"context_line":"            return (os.identity_client, os.tenant_client, os.network_client, "},{"line_number":87,"context_line":"                    os.networks_client, os.subnets_client, os.ports_client)"},{"line_number":88,"context_line":"        else:"},{"line_number":89,"context_line":"            return (os.identity_v3_client, os.tenant_client,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a8ffd7b_a9157a49","line":86,"updated":"2015-11-26 17:22:31.000000000","message":"ditto","commit_id":"fb388fa20a0e5a9150b5ad9320c80bff5b016989"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"27fc2da1fa9c6351cd1ef3b1dfd678a68a0d3ad8","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            return (os.identity_client, os.tenants_client, os.network_client,"},{"line_number":87,"context_line":"                    os.networks_client, os.subnets_client, os.ports_client)"},{"line_number":88,"context_line":"        else:"},{"line_number":89,"context_line":"            return (os.identity_v3_client, os.tenants_client,"},{"line_number":90,"context_line":"                    os.network_client, os.networks_client, os.subnets_client,"},{"line_number":91,"context_line":"                    os.ports_client)"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_a8ac068d","line":89,"updated":"2015-12-01 06:43:23.000000000","message":"How about passing None here instead of v2 client os.tenants_client till any v3 tenant/project_client is separated .","commit_id":"e9d2b9733bcddde82085732c5cd1e90484ded74e"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"00be96340c8aa6d11fc9135673b0a700c13230ab","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            return (os.identity_client, os.tenants_client, os.network_client,"},{"line_number":87,"context_line":"                    os.networks_client, os.subnets_client, os.ports_client)"},{"line_number":88,"context_line":"        else:"},{"line_number":89,"context_line":"            return (os.identity_v3_client, os.tenants_client,"},{"line_number":90,"context_line":"                    os.network_client, os.networks_client, os.subnets_client,"},{"line_number":91,"context_line":"                    os.ports_client)"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_994ab254","line":89,"in_reply_to":"9a8ffd7b_a8ac068d","updated":"2015-12-01 09:33:41.000000000","message":"Done","commit_id":"e9d2b9733bcddde82085732c5cd1e90484ded74e"}],"tempest/services/identity/v2/json/identity_client.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"984ef9faf9b8ce920df0f1cee715b8bcdb3f690a","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        body \u003d json.loads(body)"},{"line_number":81,"context_line":"        return service_client.ResponseBody(resp, body)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"\u003c\u003c\u003c\u003c\u003c\u003c\u003c HEAD"},{"line_number":84,"context_line":"    def list_tenants(self):"},{"line_number":85,"context_line":"        \"\"\"Returns tenants.\"\"\""},{"line_number":86,"context_line":"        resp, body \u003d self.get(\u0027tenants\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_cd690ac0","line":83,"updated":"2015-11-26 08:51:10.000000000","message":"need to remove","commit_id":"e7a4c4fc779567a59d9e466c8d764bca67c18bf6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"984ef9faf9b8ce920df0f1cee715b8bcdb3f690a","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        return service_client.ResponseBody(resp, body)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":110,"context_line":"\u003e\u003e\u003e\u003e\u003e\u003e\u003e [WIP] Split out keystone tenant client"},{"line_number":111,"context_line":"    def create_user(self, name, password, tenant_id, email, **kwargs):"},{"line_number":112,"context_line":"        \"\"\"Create a user.\"\"\""},{"line_number":113,"context_line":"        post_body \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_8d6302dc","line":110,"updated":"2015-11-26 08:51:10.000000000","message":"ditto","commit_id":"e7a4c4fc779567a59d9e466c8d764bca67c18bf6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"984ef9faf9b8ce920df0f1cee715b8bcdb3f690a","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        self.expected_success(204, resp.status)"},{"line_number":178,"context_line":"        return service_client.ResponseBody(resp, body)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"\u003c\u003c\u003c\u003c\u003c\u003c\u003c HEAD"},{"line_number":181,"context_line":"    def list_tenant_users(self, tenant_id):"},{"line_number":182,"context_line":"        \"\"\"List users for a Tenant.\"\"\""},{"line_number":183,"context_line":"        resp, body \u003d self.get(\u0027/tenants/%s/users\u0027 % tenant_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_ad5e0610","line":180,"updated":"2015-11-26 08:51:10.000000000","message":"ditto","commit_id":"e7a4c4fc779567a59d9e466c8d764bca67c18bf6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"984ef9faf9b8ce920df0f1cee715b8bcdb3f690a","unresolved":false,"context_lines":[{"line_number":191,"context_line":"            if user[\u0027name\u0027] \u003d\u003d username:"},{"line_number":192,"context_line":"                return user"},{"line_number":193,"context_line":"        raise lib_exc.NotFound(\u0027No such user\u0027)"},{"line_number":194,"context_line":"\u003e\u003e\u003e\u003e\u003e\u003e\u003e [WIP] Split out keystone tenant client"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def create_service(self, name, type, **kwargs):"},{"line_number":197,"context_line":"        \"\"\"Create a service.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_4dd19a56","line":194,"updated":"2015-11-26 08:51:10.000000000","message":"this code is migrated to the other place with the commit https://review.openstack.org/#/c/243092/ , so we need to keep removing from here.","commit_id":"e7a4c4fc779567a59d9e466c8d764bca67c18bf6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"0e98980862b4b584a58af659f1ffe8b002eec458","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        for user in users:"},{"line_number":155,"context_line":"            if user[\u0027name\u0027] \u003d\u003d username:"},{"line_number":156,"context_line":"                return user"},{"line_number":157,"context_line":"        raise lib_exc.NotFound(\u0027No such user\u0027)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    def create_service(self, name, type, **kwargs):"},{"line_number":160,"context_line":"        \"\"\"Create a service.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_0d42b210","line":157,"updated":"2015-11-26 08:52:09.000000000","message":"we don\u0027t need to change list_tenant_users, get_user_by_username is already removed from here with https://review.openstack.org/#/c/243092/","commit_id":"c7b2d1b1474548c2da48d1cdbcb894918faee427"}],"tempest/services/identity/v2/json/tenant_client.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"cde497853fb9ebcae06afa62578aa41d7e97f979","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"9a8ffd7b_2447714c","updated":"2015-11-26 17:22:31.000000000","message":"I thought that names of modules and classes should be like \u003cresource\u003es_client.py and \u003cResource\u003esClient. Maybe Ken\u0027ichi could clarify it. I would like to keep some consistency in all clients.","commit_id":"fb388fa20a0e5a9150b5ad9320c80bff5b016989"}],"tempest/services/identity/v2/json/tenants_client.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"a443a927c957fb7684bb54f04dae419d700862ba","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        body \u003d json.loads(body)"},{"line_number":60,"context_line":"        return service_client.ResponseBody(resp, body)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def get_tenant_by_name(self, tenant_name):"},{"line_number":63,"context_line":"        tenants \u003d self.list_tenants()[\u0027tenants\u0027]"},{"line_number":64,"context_line":"        for tenant in tenants:"},{"line_number":65,"context_line":"            if tenant[\u0027name\u0027] \u003d\u003d tenant_name:"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a8ffd7b_f9d2bd5a","line":62,"updated":"2015-12-01 16:57:52.000000000","message":"I thought this method was moved to tempest/common/identity.py https://github.com/openstack/tempest/blob/master/tempest/common/identity.py#L19 by Ken\u0027ichi :) It should be removed.","commit_id":"11f5fbdbf44f0b9c2972ce977a19c2e86e394ddc"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"8ec22d13558e28de3953db2bb7c099e6d3c2fdd4","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        body \u003d json.loads(body)"},{"line_number":60,"context_line":"        return service_client.ResponseBody(resp, body)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def get_tenant_by_name(self, tenant_name):"},{"line_number":63,"context_line":"        tenants \u003d self.list_tenants()[\u0027tenants\u0027]"},{"line_number":64,"context_line":"        for tenant in tenants:"},{"line_number":65,"context_line":"            if tenant[\u0027name\u0027] \u003d\u003d tenant_name:"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a8ffd7b_0d4bbb5a","line":62,"in_reply_to":"9a8ffd7b_f9d2bd5a","updated":"2015-12-03 09:49:00.000000000","message":"Done","commit_id":"11f5fbdbf44f0b9c2972ce977a19c2e86e394ddc"}],"tempest/stress/driver.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"a443a927c957fb7684bb54f04dae419d700862ba","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                    identity_client \u003d admin_manager.identity_v3_client"},{"line_number":152,"context_line":"                credentials_client \u003d cred_client.get_creds_client("},{"line_number":153,"context_line":"                    identity_client, projects_client)"},{"line_number":154,"context_line":"                t_client \u003d credentials_client.projects_client"},{"line_number":155,"context_line":"                project \u003d t_client.create_tenant(name\u003dtenant_name,"},{"line_number":156,"context_line":"                                                 description\u003dtenant_name)"},{"line_number":157,"context_line":"                i_client \u003d credentials_client.identity_client"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a8ffd7b_9cd03fcb","line":154,"updated":"2015-12-01 16:57:52.000000000","message":"It looks like this is something wrong. I think only L153 should have changes. Other lines should be left as it is.","commit_id":"11f5fbdbf44f0b9c2972ce977a19c2e86e394ddc"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"8ec22d13558e28de3953db2bb7c099e6d3c2fdd4","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                    identity_client \u003d admin_manager.identity_v3_client"},{"line_number":152,"context_line":"                credentials_client \u003d cred_client.get_creds_client("},{"line_number":153,"context_line":"                    identity_client, projects_client)"},{"line_number":154,"context_line":"                t_client \u003d credentials_client.projects_client"},{"line_number":155,"context_line":"                project \u003d t_client.create_tenant(name\u003dtenant_name,"},{"line_number":156,"context_line":"                                                 description\u003dtenant_name)"},{"line_number":157,"context_line":"                i_client \u003d credentials_client.identity_client"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a8ffd7b_c5ad23ea","line":154,"in_reply_to":"9a8ffd7b_9cd03fcb","updated":"2015-12-03 09:49:00.000000000","message":"Done","commit_id":"11f5fbdbf44f0b9c2972ce977a19c2e86e394ddc"}],"tempest/stress/etc/server-create-destroy-test.json":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"a443a927c957fb7684bb54f04dae419d700862ba","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[{\"action\": \"tempest.stress.actions.server_create_destroy.ServerCreateDestroyTest\","},{"line_number":2,"context_line":"  \"threads\": 8,"},{"line_number":3,"context_line":"  \"use_admin\": false,"},{"line_number":4,"context_line":"  \"use_isolated_tenants\": true,"},{"line_number":5,"context_line":"  \"kwargs\": {}"},{"line_number":6,"context_line":"  }"},{"line_number":7,"context_line":"]"}],"source_content_type":"application/json","patch_set":13,"id":"9a8ffd7b_f9063d84","line":4,"updated":"2015-12-01 16:57:52.000000000","message":"Do we really need it? It looks like non-related change. Maybe I am missing something.","commit_id":"11f5fbdbf44f0b9c2972ce977a19c2e86e394ddc"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"8ec22d13558e28de3953db2bb7c099e6d3c2fdd4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[{\"action\": \"tempest.stress.actions.server_create_destroy.ServerCreateDestroyTest\","},{"line_number":2,"context_line":"  \"threads\": 8,"},{"line_number":3,"context_line":"  \"use_admin\": false,"},{"line_number":4,"context_line":"  \"use_isolated_tenants\": true,"},{"line_number":5,"context_line":"  \"kwargs\": {}"},{"line_number":6,"context_line":"  }"},{"line_number":7,"context_line":"]"}],"source_content_type":"application/json","patch_set":13,"id":"9a8ffd7b_d7f07493","line":4,"in_reply_to":"9a8ffd7b_cc4922d2","updated":"2015-12-03 09:49:00.000000000","message":"Done","commit_id":"11f5fbdbf44f0b9c2972ce977a19c2e86e394ddc"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"fccdf452e3966d374b41ff5d9321ebabb54d12a1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[{\"action\": \"tempest.stress.actions.server_create_destroy.ServerCreateDestroyTest\","},{"line_number":2,"context_line":"  \"threads\": 8,"},{"line_number":3,"context_line":"  \"use_admin\": false,"},{"line_number":4,"context_line":"  \"use_isolated_tenants\": true,"},{"line_number":5,"context_line":"  \"kwargs\": {}"},{"line_number":6,"context_line":"  }"},{"line_number":7,"context_line":"]"}],"source_content_type":"application/json","patch_set":13,"id":"9a8ffd7b_cc4922d2","line":4,"in_reply_to":"9a8ffd7b_f9063d84","updated":"2015-12-02 00:31:27.000000000","message":"Yea, i think you changed this for testing.","commit_id":"11f5fbdbf44f0b9c2972ce977a19c2e86e394ddc"}],"tempest/test.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"101c066c29a08a766e18d12033e470cd2ea106d5","unresolved":false,"context_lines":[{"line_number":459,"context_line":"        except AttributeError:"},{"line_number":460,"context_line":"            domain \u003d \u0027Default\u0027"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"        if tenant_client:"},{"line_number":463,"context_line":"            return cred_client.get_creds_client(client, tenant_client,"},{"line_number":464,"context_line":"                                                project_domain_name\u003ddomain)"},{"line_number":465,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a740942_c852acdd","line":462,"updated":"2015-12-04 09:09:03.000000000","message":"for v3 it will be unknown variable.  please define tenant_client as None before L450","commit_id":"f7bba531fd15eb388ecd3b56cc331475bbd06dc1"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"0e323cfabddccf205950da35bf243439a3c5c831","unresolved":false,"context_lines":[{"line_number":459,"context_line":"        except AttributeError:"},{"line_number":460,"context_line":"            domain \u003d \u0027Default\u0027"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"        if tenant_client:"},{"line_number":463,"context_line":"            return cred_client.get_creds_client(client, tenant_client,"},{"line_number":464,"context_line":"                                                project_domain_name\u003ddomain)"},{"line_number":465,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a740942_086bd41f","line":462,"in_reply_to":"7a740942_c852acdd","updated":"2015-12-04 09:44:45.000000000","message":"Done","commit_id":"f7bba531fd15eb388ecd3b56cc331475bbd06dc1"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"af0a8eecad3a8f9cec36b2f59d39d06c16c00b31","unresolved":false,"context_lines":[{"line_number":448,"context_line":"        This can be used for creating and tearing down projects in tests. It"},{"line_number":449,"context_line":"        should not be used for testing identity features."},{"line_number":450,"context_line":"        \"\"\""},{"line_number":451,"context_line":"        tenant_client \u003d None"},{"line_number":452,"context_line":"        if CONF.identity.auth_version \u003d\u003d \u0027v2\u0027:"},{"line_number":453,"context_line":"            client \u003d self.os_admin.identity_client"},{"line_number":454,"context_line":"            tenant_client \u003d self.os_admin.tenants_client"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a740942_8e98821d","line":451,"updated":"2015-12-08 18:48:40.000000000","message":"I think it can be written something like this:\n\n    if CONF.identity.auth_version \u003d\u003d \u0027v2\u0027:\n        client \u003d self.os_admin.identity_client\n        projects_client \u003d self.os_admin.tenants_client\n    else:\n        client \u003d self.os_admin.identity_v3_client\n        # projects_client \u003d None until the corresponding client is separated\n        # from identity V3 client\n        projects_client \u003d None\n\n    ...\n\n    return cred_client.get_creds_client(client, projects_client, domain)","commit_id":"0e61085049322b74a425be22ddf4f2e895424519"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"2b02289b1f8d3d87c12c25733fb2447e98df40b0","unresolved":false,"context_lines":[{"line_number":448,"context_line":"        This can be used for creating and tearing down projects in tests. It"},{"line_number":449,"context_line":"        should not be used for testing identity features."},{"line_number":450,"context_line":"        \"\"\""},{"line_number":451,"context_line":"        tenant_client \u003d None"},{"line_number":452,"context_line":"        if CONF.identity.auth_version \u003d\u003d \u0027v2\u0027:"},{"line_number":453,"context_line":"            client \u003d self.os_admin.identity_client"},{"line_number":454,"context_line":"            tenant_client \u003d self.os_admin.tenants_client"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a740942_bc81dfc4","line":451,"in_reply_to":"7a740942_8e98821d","updated":"2015-12-09 07:00:28.000000000","message":"Hi Yaroslav,\n\nIt has been changed for that in the next patch (roles_client) so please disregard the change in this one. Thanks!","commit_id":"0e61085049322b74a425be22ddf4f2e895424519"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"cacc9c647f2c4345adfde9d729f3fb7e39041129","unresolved":false,"context_lines":[{"line_number":448,"context_line":"        This can be used for creating and tearing down projects in tests. It"},{"line_number":449,"context_line":"        should not be used for testing identity features."},{"line_number":450,"context_line":"        \"\"\""},{"line_number":451,"context_line":"        tenant_client \u003d None"},{"line_number":452,"context_line":"        if CONF.identity.auth_version \u003d\u003d \u0027v2\u0027:"},{"line_number":453,"context_line":"            client \u003d self.os_admin.identity_client"},{"line_number":454,"context_line":"            tenant_client \u003d self.os_admin.tenants_client"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a740942_4275702f","line":451,"in_reply_to":"7a740942_bc81dfc4","updated":"2015-12-09 07:44:59.000000000","message":"I think that will be easy and nice way as suggested by Yaroslav.\n\nSo we keep adding the clients in single if else condition. and projects_client is good as that can be used for v3 case too","commit_id":"0e61085049322b74a425be22ddf4f2e895424519"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"c8a02c419e7de0b98fe7417eb44f8a76fe9f0bf7","unresolved":false,"context_lines":[{"line_number":446,"context_line":"        except AttributeError:"},{"line_number":447,"context_line":"            domain \u003d \u0027Default\u0027"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"        if CONF.identity.auth_version \u003d\u003d \u0027v2\u0027:"},{"line_number":450,"context_line":"            return cred_client.get_creds_client(client, project_client,"},{"line_number":451,"context_line":"                                                project_domain_name\u003ddomain)"},{"line_number":452,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":22,"id":"7a740942_d1f1bfce","line":449,"updated":"2015-12-10 22:31:58.000000000","message":"Daniel,\n\n    return cred_client.get_creds_client(client, project_client,\n                                        project_domain_name\u003ddomain)\n\nwill not work here?","commit_id":"7d9d162f5da5b15a577775c33928fb53ae30296d"}]}
