)]}'
{".tags":[{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"f442fed67bccfe3d86cded213a3b28bbb285e978","unresolved":false,"context_lines":[{"line_number":1,"context_line":"CONF\t/home/acruz/Projetos/tempest/tempest/api/identity/base.py\t/^CONF \u003d config.CONF$/;\"\tvariable\tline:23"},{"line_number":2,"context_line":"LOG\t/home/acruz/Projetos/tempest/tempest/api/identity/base.py\t/^LOG \u003d logging.getLogger(__name__)$/;\"\tvariable\tline:24"},{"line_number":3,"context_line":"BaseIdentityTest\t/home/acruz/Projetos/tempest/tempest/api/identity/base.py\t/^class BaseIdentityTest(tempest.test.BaseTestCase):$/;\"\tclass\tline:27"},{"line_number":4,"context_line":"disable_user\t/home/acruz/Projetos/tempest/tempest/api/identity/base.py\t/^    def disable_user(cls, user_name):$/;\"\tmember\tline:30\tclass:BaseIdentityTest"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"3a57f1b5_7a17a851","line":1,"updated":"2016-02-10 16:27:25.000000000","message":"I assume this was added by mistake","commit_id":"986175bba79e07223a563ab6d208f3d580fda496"}],".tags1":[{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"f442fed67bccfe3d86cded213a3b28bbb285e978","unresolved":false,"context_lines":[{"line_number":1,"context_line":"!_TAG_FILE_FORMAT\t2\t/extended format; --format\u003d1 will not append ;\" to lines/"},{"line_number":2,"context_line":"!_TAG_FILE_SORTED\t0\t/0\u003dunsorted, 1\u003dsorted, 2\u003dfoldcase/"},{"line_number":3,"context_line":"!_TAG_PROGRAM_AUTHOR\tDarren Hiebert\t/dhiebert@users.sourceforge.net/"},{"line_number":4,"context_line":"!_TAG_PROGRAM_NAME\tExuberant Ctags\t//"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"3a57f1b5_da06dc1f","line":1,"updated":"2016-02-10 16:27:25.000000000","message":"ditto","commit_id":"986175bba79e07223a563ab6d208f3d580fda496"}],"tempest/api/identity/admin/v3/test_default_project_id.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"f7131a024385a43027fde2309120416a2c1fb494","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        admin_role_id \u003d admin_role[\u0027id\u0027]"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        # grant the admin role to the user on his project"},{"line_number":75,"context_line":"        self.roles_client.assign_user_role(proj_id, user_id,"},{"line_number":76,"context_line":"                                           admin_role_id)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        # create a new client with user\u0027s credentials (NOTE: unscoped token!)"}],"source_content_type":"text/x-python","patch_set":19,"id":"bae84128_9a571d26","line":75,"updated":"2016-02-24 19:17:16.000000000","message":"Why did you rename  the assign_user_role_on_project method into assign_user_role. Ghanshyam removed the assign_user_role method in https://review.openstack.org/#/c/281036/ .","commit_id":"d5a6c644a699762755905b3174c5a790570b96aa"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"070048d74910600da92d925a8b76a770b2e7d5ae","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        admin_role_id \u003d admin_role[\u0027id\u0027]"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        # grant the admin role to the user on his project"},{"line_number":75,"context_line":"        self.roles_client.assign_user_role(proj_id, user_id,"},{"line_number":76,"context_line":"                                           admin_role_id)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        # create a new client with user\u0027s credentials (NOTE: unscoped token!)"}],"source_content_type":"text/x-python","patch_set":19,"id":"bae84128_3730839e","line":75,"in_reply_to":"bae84128_9a571d26","updated":"2016-02-25 10:33:47.000000000","message":"Done","commit_id":"d5a6c644a699762755905b3174c5a790570b96aa"}],"tempest/api/identity/admin/v3/test_roles.py":[{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"5eba75045717476ba5cb8d92120980ae014e7b38","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":69,"context_line":"    @test.idempotent_id(\u002718afc6c0-46cf-4911-824e-9989cc056c3a\u0027)"},{"line_number":70,"context_line":"    def test_role_create_update_get_list(self):"},{"line_number":71,"context_line":"        r_name \u003d data_utils.rand_name(\u0027Role\u0027)"},{"line_number":72,"context_line":"        role \u003d self.roles_client.create_role(name\u003dr_name)[\u0027role\u0027]"},{"line_number":73,"context_line":"        self.addCleanup(self.roles_client.delete_role, role[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a57f1b5_bbc2b832","line":70,"range":{"start_line":70,"start_character":32,"end_line":70,"end_character":35},"updated":"2016-02-11 19:32:26.000000000","message":"Maybe the name of the test should also be updated to test_role_create_update_show_list to be consistent with the methods naming convention in the spec","commit_id":"b6f9d6adc793435f6c94fd2c561c8c6c92ea0b43"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"2a234f5ba21bf39a74ee58582b5fed7d2439658b","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":69,"context_line":"    @test.idempotent_id(\u002718afc6c0-46cf-4911-824e-9989cc056c3a\u0027)"},{"line_number":70,"context_line":"    def test_role_create_update_get_list(self):"},{"line_number":71,"context_line":"        r_name \u003d data_utils.rand_name(\u0027Role\u0027)"},{"line_number":72,"context_line":"        role \u003d self.roles_client.create_role(name\u003dr_name)[\u0027role\u0027]"},{"line_number":73,"context_line":"        self.addCleanup(self.roles_client.delete_role, role[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a57f1b5_00a6f3ad","line":70,"range":{"start_line":70,"start_character":32,"end_line":70,"end_character":35},"in_reply_to":"3a57f1b5_bbc2b832","updated":"2016-02-11 22:18:10.000000000","message":"Done","commit_id":"b6f9d6adc793435f6c94fd2c561c8c6c92ea0b43"}],"tempest/api/identity/admin/v3/test_tokens.py":[{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"5eba75045717476ba5cb8d92120980ae014e7b38","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        self.addCleanup(self.roles_client.delete_role, role[\u0027id\u0027])"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        # Grant the user the role on both projects."},{"line_number":85,"context_line":"        self.roles_client.assign_user_role(project1[\u0027id\u0027], user[\u0027id\u0027],"},{"line_number":86,"context_line":"                                           role[\u0027id\u0027])"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        self.roles_client.assign_user_role(project2[\u0027id\u0027], user[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a57f1b5_1eddfa6e","line":85,"range":{"start_line":85,"start_character":26,"end_line":85,"end_character":42},"updated":"2016-02-11 19:32:26.000000000","message":"I added a comment in the roles_client.py module, probably better to use assign_user_role_on_project here","commit_id":"b6f9d6adc793435f6c94fd2c561c8c6c92ea0b43"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"2a234f5ba21bf39a74ee58582b5fed7d2439658b","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        self.addCleanup(self.roles_client.delete_role, role[\u0027id\u0027])"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        # Grant the user the role on both projects."},{"line_number":85,"context_line":"        self.roles_client.assign_user_role(project1[\u0027id\u0027], user[\u0027id\u0027],"},{"line_number":86,"context_line":"                                           role[\u0027id\u0027])"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        self.roles_client.assign_user_role(project2[\u0027id\u0027], user[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a57f1b5_00d4b3e9","line":85,"range":{"start_line":85,"start_character":26,"end_line":85,"end_character":42},"in_reply_to":"3a57f1b5_1eddfa6e","updated":"2016-02-11 22:18:10.000000000","message":"Done","commit_id":"b6f9d6adc793435f6c94fd2c561c8c6c92ea0b43"}],"tempest/api/identity/base.py":[{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"dd6bb67f3e8e045f5bca0652c6c25ee88d5e4056","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        super(BaseIdentityV3Test, cls).setup_clients()"},{"line_number":132,"context_line":"        cls.non_admin_client \u003d cls.os.identity_v3_client"},{"line_number":133,"context_line":"        cls.non_admin_users_client \u003d cls.os.users_v3_client"},{"line_number":134,"context_line":"        cls.non_admin_roles_client \u003d cls.os.roles_v3_client"},{"line_number":135,"context_line":"        cls.non_admin_projects_client \u003d cls.os.projects_v3_client"},{"line_number":136,"context_line":"        cls.non_admin_token \u003d cls.os.token_v3_client"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a57f1b5_49523369","line":134,"updated":"2016-02-10 15:13:45.000000000","message":"Is the non_admin client ever used? If not, please remove it as we\u0027re already too overloaded of clients.","commit_id":"dd2a301f0ece3a1ecf06190ccac452a2ea861ced"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"dd6bb67f3e8e045f5bca0652c6c25ee88d5e4056","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        self.client \u003d client"},{"line_number":211,"context_line":"        self.users_client \u003d users_client"},{"line_number":212,"context_line":"        self.projects_client \u003d projects_client or client"},{"line_number":213,"context_line":"        self.roles_client \u003d roles_client or client"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        self.user_password \u003d None"},{"line_number":216,"context_line":"        self.user \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a57f1b5_097f5bab","line":213,"updated":"2016-02-10 15:13:45.000000000","message":"Please remove the \u0027or client\u0027, as now we have both V2 and V3 roles_client and it doesn\u0027t make sense to keep that reference.","commit_id":"dd2a301f0ece3a1ecf06190ccac452a2ea861ced"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"49d73510776602af11f418ffbd819044cdc9e9cf","unresolved":false,"context_lines":[{"line_number":205,"context_line":"class BaseDataGenerator(object):"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    def __init__(self, client, users_client, roles_client,"},{"line_number":208,"context_line":"                 projects_client\u003dNone):"},{"line_number":209,"context_line":"        self.client \u003d client"},{"line_number":210,"context_line":"        self.users_client \u003d users_client"},{"line_number":211,"context_line":"        self.projects_client \u003d projects_client or client"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a57f1b5_01c2cf33","line":208,"updated":"2016-02-10 15:40:16.000000000","message":"Please check here http://docs.openstack.org/infra/manual/developers.html#adding-a-dependency on how to get the latest patchset for the dependent commit.","commit_id":"a400cb875587e90309835e12de2fe155f12de88b"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"57ba7e79a66e1d6769ff533ebdf69958e7e311a4","unresolved":false,"context_lines":[{"line_number":184,"context_line":"            return tenant[0]"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    @classmethod"},{"line_number":187,"context_line":"    def get_role_by_name(cls, name):"},{"line_number":188,"context_line":"        roles \u003d cls.roles_client.list_roles()[\u0027roles\u0027]"},{"line_number":189,"context_line":"        role \u003d [r for r in roles if r[\u0027name\u0027] \u003d\u003d name]"},{"line_number":190,"context_line":"        if len(role) \u003e 0:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a57f1b5_db47a275","line":187,"updated":"2016-02-11 04:05:43.000000000","message":"This method can be deleted because we have the same in the BaseIdentityTest class.","commit_id":"1da264a4a730d68a65e027de44bd97d71746991d"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"562743b1f2fd5bc60d3e7a6b43833b0845ed7a77","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":"class BaseDataGenerator(object):"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    def __init__(self, client, projects_client, users_client, roles_client,"},{"line_number":189,"context_line":"                 domains_client\u003dNone):"},{"line_number":190,"context_line":"        self.client \u003d client"},{"line_number":191,"context_line":"        self.projects_client \u003d projects_client"}],"source_content_type":"text/x-python","patch_set":16,"id":"dae33548_24fad875","line":188,"range":{"start_line":188,"start_character":23,"end_line":188,"end_character":29},"updated":"2016-02-16 16:00:08.000000000","message":"It looks like now we can remove this arg.","commit_id":"c8eb12b347058a13e9931cee07b94ca5b6d8cf32"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"d9ba73a7be4e99bad68225b0932f774b6b737a04","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":"class BaseDataGenerator(object):"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    def __init__(self, client, projects_client, users_client, roles_client,"},{"line_number":189,"context_line":"                 domains_client\u003dNone):"},{"line_number":190,"context_line":"        self.client \u003d client"},{"line_number":191,"context_line":"        self.projects_client \u003d projects_client"}],"source_content_type":"text/x-python","patch_set":16,"id":"dae33548_ea5b9785","line":188,"range":{"start_line":188,"start_character":23,"end_line":188,"end_character":29},"in_reply_to":"dae33548_24fad875","updated":"2016-02-16 16:24:09.000000000","message":"ditto as from the other file comment.","commit_id":"c8eb12b347058a13e9931cee07b94ca5b6d8cf32"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"40377274051e099cf6de11f9baad96efea3a5ce3","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    def __init__(self, client, projects_client, users_client, roles_client,"},{"line_number":189,"context_line":"                 domains_client\u003dNone):"},{"line_number":190,"context_line":"        self.client \u003d client"},{"line_number":191,"context_line":"        self.projects_client \u003d projects_client"},{"line_number":192,"context_line":"        self.users_client \u003d users_client"},{"line_number":193,"context_line":"        self.roles_client \u003d roles_client"}],"source_content_type":"text/x-python","patch_set":20,"id":"9aed3d3a_b1c4885f","line":190,"updated":"2016-02-26 15:55:12.000000000","message":"It looks like now we can remove this client because it is not used anywhere. But I think we can do this in a separate patch. I will create the patch once it is merged.","commit_id":"d751e7cff982c0772677fc8d5c40fb9bb9cda326"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"00c78e6664ad1b1726fd5dc0bf209dcd3c29d911","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    def __init__(self, client, projects_client, users_client, roles_client,"},{"line_number":189,"context_line":"                 domains_client\u003dNone):"},{"line_number":190,"context_line":"        self.client \u003d client"},{"line_number":191,"context_line":"        self.projects_client \u003d projects_client"},{"line_number":192,"context_line":"        self.users_client \u003d users_client"},{"line_number":193,"context_line":"        self.roles_client \u003d roles_client"}],"source_content_type":"text/x-python","patch_set":20,"id":"9aed3d3a_7b29fa36","line":190,"in_reply_to":"9aed3d3a_b1c4885f","updated":"2016-02-29 07:57:44.000000000","message":"Done","commit_id":"d751e7cff982c0772677fc8d5c40fb9bb9cda326"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"a9a7658a522f36951863b5006e377efd42c43452","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        super(BaseIdentityV3AdminTest, cls).resource_cleanup()"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    @classmethod"},{"line_number":178,"context_line":"    def get_role_by_name(cls, name):"},{"line_number":179,"context_line":"        roles \u003d cls.roles_client.list_roles()[\u0027roles\u0027]"},{"line_number":180,"context_line":"        role \u003d [r for r in roles if r[\u0027name\u0027] \u003d\u003d name]"},{"line_number":181,"context_line":"        if len(role) \u003e 0:"}],"source_content_type":"text/x-python","patch_set":21,"id":"9aed3d3a_bf887372","line":178,"updated":"2016-02-29 16:01:10.000000000","message":"This can be removed. I remember that you removed it in the previous patch sets, but it is present again :)","commit_id":"f8cfac6c2136dab7521c46602a40bf14c92e3c0f"}],"tempest/common/cred_client.py":[{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"dd6bb67f3e8e045f5bca0652c6c25ee88d5e4056","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    \"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def __init__(self, identity_client, users_client, projects_client,"},{"line_number":35,"context_line":"                 roles_client\u003dNone):"},{"line_number":36,"context_line":"        # The client implies version and credentials"},{"line_number":37,"context_line":"        self.identity_client \u003d identity_client"},{"line_number":38,"context_line":"        # this is temporary until the v3 clients are"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a57f1b5_945cbe26","line":35,"updated":"2016-02-10 15:13:45.000000000","message":"Same here, the reference to roles_client\u003dNone was only meant to be temporary until the proper client was implemented in both V2 and V3 clients.","commit_id":"dd2a301f0ece3a1ecf06190ccac452a2ea861ced"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"dd6bb67f3e8e045f5bca0652c6c25ee88d5e4056","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        # separated, then using *only* each client will become mandatory"},{"line_number":40,"context_line":"        self.users_client \u003d users_client"},{"line_number":41,"context_line":"        self.projects_client \u003d projects_client"},{"line_number":42,"context_line":"        self.roles_client \u003d roles_client or identity_client"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def create_user(self, username, password, project, email):"},{"line_number":45,"context_line":"        user \u003d self.users_client.create_user("}],"source_content_type":"text/x-python","patch_set":2,"id":"3a57f1b5_1449ae5f","line":42,"updated":"2016-02-10 15:13:45.000000000","message":"ditto","commit_id":"dd2a301f0ece3a1ecf06190ccac452a2ea861ced"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"dd6bb67f3e8e045f5bca0652c6c25ee88d5e4056","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    def __init__(self, identity_client, users_client, projects_client,"},{"line_number":130,"context_line":"                 roles_client, domain_name):"},{"line_number":131,"context_line":"        super(V3CredsClient, self).__init__(identity_client, users_client,"},{"line_number":132,"context_line":"                                            projects_client)"},{"line_number":133,"context_line":"        try:"},{"line_number":134,"context_line":"            # Domain names must be unique, in any case a list is returned,"},{"line_number":135,"context_line":"            # selecting the first (and only) element"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a57f1b5_d4a0f6f6","line":132,"updated":"2016-02-10 15:13:45.000000000","message":"Please pass roles client to the base client as well.","commit_id":"dd2a301f0ece3a1ecf06190ccac452a2ea861ced"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"dd6bb67f3e8e045f5bca0652c6c25ee88d5e4056","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        self.projects_client.delete_project(project_id)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def _list_roles(self):"},{"line_number":166,"context_line":"        roles \u003d self.identity_client.list_roles()[\u0027roles\u0027]"},{"line_number":167,"context_line":"        return roles"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a57f1b5_14c68e67","line":166,"updated":"2016-02-10 15:13:45.000000000","message":"Please change this to the proper client","commit_id":"dd2a301f0ece3a1ecf06190ccac452a2ea861ced"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"57ba7e79a66e1d6769ff533ebdf69958e7e311a4","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                 roles_client):"},{"line_number":36,"context_line":"        # The client implies version and credentials"},{"line_number":37,"context_line":"        self.identity_client \u003d identity_client"},{"line_number":38,"context_line":"        # this is temporary until the v3 clients are"},{"line_number":39,"context_line":"        # separated, then using *only* each client will become mandatory"},{"line_number":40,"context_line":"        self.users_client \u003d users_client"},{"line_number":41,"context_line":"        self.projects_client \u003d projects_client"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a57f1b5_3b303601","line":38,"updated":"2016-02-11 04:05:43.000000000","message":"This comment should be deleted.","commit_id":"1da264a4a730d68a65e027de44bd97d71746991d"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"57ba7e79a66e1d6769ff533ebdf69958e7e311a4","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    def delete_project(self, project_id):"},{"line_number":163,"context_line":"        self.projects_client.delete_project(project_id)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def _list_roles(self):"},{"line_number":166,"context_line":"        roles \u003d self.roles_client.list_roles()[\u0027roles\u0027]"},{"line_number":167,"context_line":"        return roles"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a57f1b5_db156249","line":165,"updated":"2016-02-11 04:05:43.000000000","message":"It can be deleted.","commit_id":"1da264a4a730d68a65e027de44bd97d71746991d"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"377cf7008bffd7144f1aae46ddcbf59de0a2ae2c","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        self.identity_client \u003d identity_client"},{"line_number":38,"context_line":"        self.users_client \u003d users_client"},{"line_number":39,"context_line":"        self.projects_client \u003d projects_client"},{"line_number":40,"context_line":"        self.users_client \u003d users_client"},{"line_number":41,"context_line":"        self.projects_client \u003d projects_client"},{"line_number":42,"context_line":"        self.roles_client \u003d roles_client"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a57f1b5_85b77c85","line":40,"updated":"2016-02-11 10:16:24.000000000","message":"There\u0027s a duplicated entry","commit_id":"17ed46cbdc2a07b269a63a71f01ba9767b431ff7"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"377cf7008bffd7144f1aae46ddcbf59de0a2ae2c","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        self.users_client \u003d users_client"},{"line_number":39,"context_line":"        self.projects_client \u003d projects_client"},{"line_number":40,"context_line":"        self.users_client \u003d users_client"},{"line_number":41,"context_line":"        self.projects_client \u003d projects_client"},{"line_number":42,"context_line":"        self.roles_client \u003d roles_client"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def create_user(self, username, password, project, email):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a57f1b5_45b2e495","line":41,"updated":"2016-02-11 10:16:24.000000000","message":"ditto","commit_id":"17ed46cbdc2a07b269a63a71f01ba9767b431ff7"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"377cf7008bffd7144f1aae46ddcbf59de0a2ae2c","unresolved":false,"context_lines":[{"line_number":166,"context_line":"def get_creds_client(identity_client,"},{"line_number":167,"context_line":"                     users_client,"},{"line_number":168,"context_line":"                     projects_client,"},{"line_number":169,"context_line":"                     roles_client\u003dNone,"},{"line_number":170,"context_line":"                     project_domain_name\u003dNone):"},{"line_number":171,"context_line":"    if isinstance(identity_client, v2_identity.IdentityClient):"},{"line_number":172,"context_line":"        return V2CredsClient(identity_client, users_client, projects_client,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a57f1b5_055aac4f","line":169,"updated":"2016-02-11 10:16:24.000000000","message":"If roles_client has been correctly updated, this shouldn\u0027t be allowed to be None","commit_id":"17ed46cbdc2a07b269a63a71f01ba9767b431ff7"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"562743b1f2fd5bc60d3e7a6b43833b0845ed7a77","unresolved":false,"context_lines":[{"line_number":31,"context_line":"     admin credentials used for generating credentials."},{"line_number":32,"context_line":"    \"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def __init__(self, identity_client, projects_client, users_client,"},{"line_number":35,"context_line":"                 roles_client):"},{"line_number":36,"context_line":"        # The client implies version and credentials"},{"line_number":37,"context_line":"        self.identity_client \u003d identity_client"}],"source_content_type":"text/x-python","patch_set":16,"id":"dae33548_0486b4b8","line":34,"range":{"start_line":34,"start_character":23,"end_line":34,"end_character":38},"updated":"2016-02-16 16:00:08.000000000","message":"It looks like now we can remove this arg.","commit_id":"c8eb12b347058a13e9931cee07b94ca5b6d8cf32"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"d9ba73a7be4e99bad68225b0932f774b6b737a04","unresolved":false,"context_lines":[{"line_number":31,"context_line":"     admin credentials used for generating credentials."},{"line_number":32,"context_line":"    \"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def __init__(self, identity_client, projects_client, users_client,"},{"line_number":35,"context_line":"                 roles_client):"},{"line_number":36,"context_line":"        # The client implies version and credentials"},{"line_number":37,"context_line":"        self.identity_client \u003d identity_client"}],"source_content_type":"text/x-python","patch_set":16,"id":"dae33548_6addc70d","line":34,"range":{"start_line":34,"start_character":23,"end_line":34,"end_character":38},"in_reply_to":"dae33548_0486b4b8","updated":"2016-02-16 16:24:09.000000000","message":"I\u0027d rather keep that there, as the identity_client still holds some methods:\nIn v3:\n\n- show_token\n- delete_token\n- show_api\n\nIn v2:\n\n- show_token\n- delete_token\n- show_api_description\n- list_extensions\n\nIf we remove the identity_client call from there the calls from /tempest/api/identity/admin/v3/test_tokens.py would fail.\n\nEven if we go and create a v2+v3 token_client, we should discuss on how to treat the remaining methods, as of now identity_client acts as \u0027wrap-up\u0027 method.","commit_id":"c8eb12b347058a13e9931cee07b94ca5b6d8cf32"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"4da3ae5173dc5fe78a7704cad76021177d90aac5","unresolved":false,"context_lines":[{"line_number":31,"context_line":"     admin credentials used for generating credentials."},{"line_number":32,"context_line":"    \"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def __init__(self, identity_client, projects_client, users_client,"},{"line_number":35,"context_line":"                 roles_client):"},{"line_number":36,"context_line":"        # The client implies version and credentials"},{"line_number":37,"context_line":"        self.identity_client \u003d identity_client"}],"source_content_type":"text/x-python","patch_set":16,"id":"dae33548_b2a905e2","line":34,"range":{"start_line":34,"start_character":23,"end_line":34,"end_character":38},"in_reply_to":"dae33548_6addc70d","updated":"2016-02-16 17:33:46.000000000","message":"Oops, I missed this part. Sorry.","commit_id":"c8eb12b347058a13e9931cee07b94ca5b6d8cf32"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"562743b1f2fd5bc60d3e7a6b43833b0845ed7a77","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"class V2CredsClient(CredsClient):"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def __init__(self, identity_client, projects_client, users_client,"},{"line_number":99,"context_line":"                 roles_client):"},{"line_number":100,"context_line":"        super(V2CredsClient, self).__init__(identity_client,"},{"line_number":101,"context_line":"                                            projects_client,"}],"source_content_type":"text/x-python","patch_set":16,"id":"dae33548_84676424","line":98,"range":{"start_line":98,"start_character":23,"end_line":98,"end_character":38},"updated":"2016-02-16 16:00:08.000000000","message":"ditto","commit_id":"c8eb12b347058a13e9931cee07b94ca5b6d8cf32"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"d9ba73a7be4e99bad68225b0932f774b6b737a04","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"class V2CredsClient(CredsClient):"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def __init__(self, identity_client, projects_client, users_client,"},{"line_number":99,"context_line":"                 roles_client):"},{"line_number":100,"context_line":"        super(V2CredsClient, self).__init__(identity_client,"},{"line_number":101,"context_line":"                                            projects_client,"}],"source_content_type":"text/x-python","patch_set":16,"id":"dae33548_4aef23b0","line":98,"range":{"start_line":98,"start_character":23,"end_line":98,"end_character":38},"in_reply_to":"dae33548_84676424","updated":"2016-02-16 16:24:09.000000000","message":"ditto","commit_id":"c8eb12b347058a13e9931cee07b94ca5b6d8cf32"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"562743b1f2fd5bc60d3e7a6b43833b0845ed7a77","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"class V3CredsClient(CredsClient):"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def __init__(self, identity_client, projects_client, users_client,"},{"line_number":128,"context_line":"                 roles_client, domains_client, domain_name):"},{"line_number":129,"context_line":"        super(V3CredsClient, self).__init__(identity_client, projects_client,"},{"line_number":130,"context_line":"                                            users_client, roles_client)"}],"source_content_type":"text/x-python","patch_set":16,"id":"dae33548_c4484c8a","line":127,"range":{"start_line":127,"start_character":23,"end_line":127,"end_character":38},"updated":"2016-02-16 16:00:08.000000000","message":"ditto","commit_id":"c8eb12b347058a13e9931cee07b94ca5b6d8cf32"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"d9ba73a7be4e99bad68225b0932f774b6b737a04","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"class V3CredsClient(CredsClient):"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def __init__(self, identity_client, projects_client, users_client,"},{"line_number":128,"context_line":"                 roles_client, domains_client, domain_name):"},{"line_number":129,"context_line":"        super(V3CredsClient, self).__init__(identity_client, projects_client,"},{"line_number":130,"context_line":"                                            users_client, roles_client)"}],"source_content_type":"text/x-python","patch_set":16,"id":"dae33548_0a3cfb2d","line":127,"range":{"start_line":127,"start_character":23,"end_line":127,"end_character":38},"in_reply_to":"dae33548_c4484c8a","updated":"2016-02-16 16:24:09.000000000","message":"ditto","commit_id":"c8eb12b347058a13e9931cee07b94ca5b6d8cf32"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"562743b1f2fd5bc60d3e7a6b43833b0845ed7a77","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            project_domain_name\u003dself.creds_domain[\u0027name\u0027])"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"def get_creds_client(identity_client,"},{"line_number":167,"context_line":"                     projects_client,"},{"line_number":168,"context_line":"                     users_client,"},{"line_number":169,"context_line":"                     roles_client,"}],"source_content_type":"text/x-python","patch_set":16,"id":"dae33548_2f43d143","line":166,"range":{"start_line":166,"start_character":21,"end_line":166,"end_character":36},"updated":"2016-02-16 16:00:08.000000000","message":"It looks like we can remove this arg and use projects_client for check instead.","commit_id":"c8eb12b347058a13e9931cee07b94ca5b6d8cf32"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"4da3ae5173dc5fe78a7704cad76021177d90aac5","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            project_domain_name\u003dself.creds_domain[\u0027name\u0027])"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"def get_creds_client(identity_client,"},{"line_number":167,"context_line":"                     projects_client,"},{"line_number":168,"context_line":"                     users_client,"},{"line_number":169,"context_line":"                     roles_client,"}],"source_content_type":"text/x-python","patch_set":16,"id":"dae33548_92d1615a","line":166,"range":{"start_line":166,"start_character":21,"end_line":166,"end_character":36},"in_reply_to":"dae33548_0a235b06","updated":"2016-02-16 17:33:46.000000000","message":"Ok. Let\u0027s wait full separation of clients from identity client.","commit_id":"c8eb12b347058a13e9931cee07b94ca5b6d8cf32"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"d9ba73a7be4e99bad68225b0932f774b6b737a04","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            project_domain_name\u003dself.creds_domain[\u0027name\u0027])"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"def get_creds_client(identity_client,"},{"line_number":167,"context_line":"                     projects_client,"},{"line_number":168,"context_line":"                     users_client,"},{"line_number":169,"context_line":"                     roles_client,"}],"source_content_type":"text/x-python","patch_set":16,"id":"dae33548_0a235b06","line":166,"range":{"start_line":166,"start_character":21,"end_line":166,"end_character":36},"in_reply_to":"dae33548_2f43d143","updated":"2016-02-16 16:24:09.000000000","message":"In this case we\u0027re using the type of the identity_client method to select between v2 or v3, we could just switch to one client, i.e. projects, but I\u0027d keep identity_client for now for the same reasons as I stated before.","commit_id":"c8eb12b347058a13e9931cee07b94ca5b6d8cf32"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"78e5655fee47e34638a1a26705c3c4bfd981e0f3","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            project_domain_id\u003dself.creds_domain[\u0027id\u0027],"},{"line_number":163,"context_line":"            project_domain_name\u003dself.creds_domain[\u0027name\u0027])"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def _list_roles(self):"},{"line_number":166,"context_line":"        roles \u003d self.roles_client.list_roles()[\u0027roles\u0027]"},{"line_number":167,"context_line":"        return roles"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"bae84128_759b4a73","line":165,"updated":"2016-02-24 19:28:44.000000000","message":"It looks like we can remove this method because we have the same in L91.","commit_id":"d5a6c644a699762755905b3174c5a790570b96aa"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"070048d74910600da92d925a8b76a770b2e7d5ae","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            project_domain_id\u003dself.creds_domain[\u0027id\u0027],"},{"line_number":163,"context_line":"            project_domain_name\u003dself.creds_domain[\u0027name\u0027])"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def _list_roles(self):"},{"line_number":166,"context_line":"        roles \u003d self.roles_client.list_roles()[\u0027roles\u0027]"},{"line_number":167,"context_line":"        return roles"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"bae84128_171a9f17","line":165,"in_reply_to":"bae84128_759b4a73","updated":"2016-02-25 10:33:47.000000000","message":"Done","commit_id":"d5a6c644a699762755905b3174c5a790570b96aa"}],"tempest/common/dynamic_creds.py":[{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"377cf7008bffd7144f1aae46ddcbf59de0a2ae2c","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                    os.security_groups_client)"},{"line_number":96,"context_line":"        else:"},{"line_number":97,"context_line":"            return (os.identity_v3_client, os.users_v3_client,"},{"line_number":98,"context_line":"                    os.projects_v3_client, os.roles_v3_client,"},{"line_number":99,"context_line":"                    os.network_client, os.networks_client, os.subnets_client,"},{"line_number":100,"context_line":"                    os.ports_client, os.security_groups_client)"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a57f1b5_85a0dc44","line":98,"updated":"2016-02-11 10:16:24.000000000","message":"Please look at the naming, after the rebase from https://review.openstack.org/#/c/277863/3/tempest/common/dynamic_creds.py this should be os.projects_client. Please update this accordingly","commit_id":"17ed46cbdc2a07b269a63a71f01ba9767b431ff7"}],"tempest/services/identity/v3/json/roles_client.py":[{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"5eba75045717476ba5cb8d92120980ae014e7b38","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self.expected_success(204, resp.status)"},{"line_number":65,"context_line":"        return service_client.ResponseBody(resp, body)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def assign_user_role(self, project_id, user_id, role_id):"},{"line_number":68,"context_line":"        \"\"\"Add roles to a user on a project.\"\"\""},{"line_number":69,"context_line":"        resp, body \u003d self.put(\u0027projects/%s/users/%s/roles/%s\u0027 %"},{"line_number":70,"context_line":"                              (project_id, user_id, role_id), None)"},{"line_number":71,"context_line":"        self.expected_success(204, resp.status)"},{"line_number":72,"context_line":"        return service_client.ResponseBody(resp, body)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def assign_user_role_on_project(self, project_id, user_id, role_id):"},{"line_number":75,"context_line":"        \"\"\"Add roles to a user on a project.\"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"3a57f1b5_de6762b5","line":72,"range":{"start_line":67,"start_character":4,"end_line":72,"end_character":54},"updated":"2016-02-11 19:32:26.000000000","message":"Isn\u0027t this a duplicate of assign_user_role_on_project?\nI don\u0027t see a reason to keep this function.","commit_id":"b6f9d6adc793435f6c94fd2c561c8c6c92ea0b43"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"2a234f5ba21bf39a74ee58582b5fed7d2439658b","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self.expected_success(204, resp.status)"},{"line_number":65,"context_line":"        return service_client.ResponseBody(resp, body)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def assign_user_role(self, project_id, user_id, role_id):"},{"line_number":68,"context_line":"        \"\"\"Add roles to a user on a project.\"\"\""},{"line_number":69,"context_line":"        resp, body \u003d self.put(\u0027projects/%s/users/%s/roles/%s\u0027 %"},{"line_number":70,"context_line":"                              (project_id, user_id, role_id), None)"},{"line_number":71,"context_line":"        self.expected_success(204, resp.status)"},{"line_number":72,"context_line":"        return service_client.ResponseBody(resp, body)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def assign_user_role_on_project(self, project_id, user_id, role_id):"},{"line_number":75,"context_line":"        \"\"\"Add roles to a user on a project.\"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"3a57f1b5_20268f15","line":72,"range":{"start_line":67,"start_character":4,"end_line":72,"end_character":54},"in_reply_to":"3a57f1b5_de6762b5","updated":"2016-02-11 22:18:10.000000000","message":"Done","commit_id":"b6f9d6adc793435f6c94fd2c561c8c6c92ea0b43"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"e03619cb6b3bfa628d0530d926b072de69ac406f","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from tempest.common import service_client"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class RolesV3Client(service_client.ServiceClient):"},{"line_number":21,"context_line":"    api_version \u003d \"v3\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def create_role(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":16,"id":"dae33548_06698e8b","line":20,"updated":"2016-02-16 19:23:16.000000000","message":"It should be named \u0027RolesClient\u0027.","commit_id":"c8eb12b347058a13e9931cee07b94ca5b6d8cf32"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"d8ea5f509416966d81b972a1ca0a3e3271df2019","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from tempest.common import service_client"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class RolesV3Client(service_client.ServiceClient):"},{"line_number":21,"context_line":"    api_version \u003d \"v3\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def create_role(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":16,"id":"dae33548_534cdf9d","line":20,"in_reply_to":"dae33548_06698e8b","updated":"2016-02-17 08:35:44.000000000","message":"As per Identity and Users, there\u0027s a V2 counterpart, so I\u0027d keep the V3 for every service client that is both in V3 and V2","commit_id":"c8eb12b347058a13e9931cee07b94ca5b6d8cf32"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"a5adb817242e1711795f51c75dd0dbce5c5f930b","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from tempest.common import service_client"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class RolesV3Client(service_client.ServiceClient):"},{"line_number":21,"context_line":"    api_version \u003d \"v3\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def create_role(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":17,"id":"dae33548_a72d0aaa","line":20,"updated":"2016-02-17 15:43:51.000000000","message":"As far as I remember we shouldn\u0027t use any prefixes in names of these classes. Anyway, let\u0027s wait for Ken\u0027ichi\u0027s review :)","commit_id":"2c6c36e39fb6f9ff0c2b292b814fe127e2360928"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f7fedabd5a12360557f84739e4eaa884401a103e","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from tempest.common import service_client"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class RolesV3Client(service_client.ServiceClient):"},{"line_number":21,"context_line":"    api_version \u003d \"v3\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def create_role(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":17,"id":"dae33548_61fc693e","line":20,"range":{"start_line":20,"start_character":20,"end_line":20,"end_character":48},"updated":"2016-02-18 08:16:29.000000000","message":"Use rest client from lib here.","commit_id":"2c6c36e39fb6f9ff0c2b292b814fe127e2360928"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f7fedabd5a12360557f84739e4eaa884401a103e","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from tempest.common import service_client"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class RolesV3Client(service_client.ServiceClient):"},{"line_number":21,"context_line":"    api_version \u003d \"v3\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def create_role(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":17,"id":"dae33548_61e589a6","line":20,"in_reply_to":"dae33548_a72d0aaa","updated":"2016-02-18 08:16:29.000000000","message":"Yea let it be RolesClient as it is under v3 folder and consistent to other classes.","commit_id":"2c6c36e39fb6f9ff0c2b292b814fe127e2360928"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f7fedabd5a12360557f84739e4eaa884401a103e","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self.expected_success(204, resp.status)"},{"line_number":65,"context_line":"        return service_client.ResponseBody(resp, body)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def assign_user_role(self, project_id, user_id, role_id):"},{"line_number":68,"context_line":"        \"\"\"Add roles to a user on a project.\"\"\""},{"line_number":69,"context_line":"        resp, body \u003d self.put(\u0027projects/%s/users/%s/roles/%s\u0027 %"},{"line_number":70,"context_line":"                              (project_id, user_id, role_id), None)"},{"line_number":71,"context_line":"        self.expected_success(204, resp.status)"},{"line_number":72,"context_line":"        return service_client.ResponseBody(resp, body)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def assign_user_role_on_domain(self, domain_id, user_id, role_id):"},{"line_number":75,"context_line":"        \"\"\"Add roles to a user on a domain.\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"dae33548_e1b5197e","line":72,"range":{"start_line":67,"start_character":0,"end_line":72,"end_character":54},"updated":"2016-02-18 08:16:29.000000000","message":"this is duplicate, please check https://review.openstack.org/#/c/281036/\n\ninstead add assign_user_role_on_project","commit_id":"2c6c36e39fb6f9ff0c2b292b814fe127e2360928"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f497f220453f96ffd7b028e5d6070a35a9c7475f","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from tempest.common import service_client"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class RolesV3Client(service_client.ServiceClient):"},{"line_number":21,"context_line":"    api_version \u003d \"v3\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def create_role(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":18,"id":"bae84128_f5736c13","line":20,"range":{"start_line":20,"start_character":6,"end_line":20,"end_character":19},"updated":"2016-02-22 15:58:05.000000000","message":"Please rename it to RolesClient as it is under v3 folder.\n\nI will make other clients consistent on this.","commit_id":"7ed8b5194f9912b28b27203a1158fe2c7c815072"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"3e24b1ceb5fb3744c4374a3c9dd8f82860d29ae3","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from tempest.common import service_client"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class RolesV3Client(service_client.ServiceClient):"},{"line_number":21,"context_line":"    api_version \u003d \"v3\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def create_role(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":18,"id":"bae84128_f54a4cab","line":20,"range":{"start_line":20,"start_character":11,"end_line":20,"end_character":13},"updated":"2016-02-22 15:58:10.000000000","message":"This \"V3\" is unnecessary for the consistency.\nPlease check most other client modules.","commit_id":"7ed8b5194f9912b28b27203a1158fe2c7c815072"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"24fe5a743af0a54303154820e3e6f6337f31553b","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from tempest.common import service_client"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class RolesV3Client(service_client.ServiceClient):"},{"line_number":21,"context_line":"    api_version \u003d \"v3\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def create_role(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":18,"id":"bae84128_b5d6d64c","line":20,"range":{"start_line":20,"start_character":11,"end_line":20,"end_character":13},"in_reply_to":"bae84128_f54a4cab","updated":"2016-02-23 11:49:48.000000000","message":"Done","commit_id":"7ed8b5194f9912b28b27203a1158fe2c7c815072"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"24fe5a743af0a54303154820e3e6f6337f31553b","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from tempest.common import service_client"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class RolesV3Client(service_client.ServiceClient):"},{"line_number":21,"context_line":"    api_version \u003d \"v3\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def create_role(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":18,"id":"bae84128_d5d1da58","line":20,"range":{"start_line":20,"start_character":6,"end_line":20,"end_character":19},"in_reply_to":"bae84128_f5736c13","updated":"2016-02-23 11:49:48.000000000","message":"Done","commit_id":"7ed8b5194f9912b28b27203a1158fe2c7c815072"}]}
