)]}'
{"tempest/clients.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"4d534945dcbf6c0a87bbd808bd0ed1644a4c69bf","unresolved":false,"context_lines":[{"line_number":535,"context_line":"        # Clients below use the endpoint type of Keystone API v3"},{"line_number":536,"context_line":"        params_v3 \u003d params.copy()"},{"line_number":537,"context_line":"        params_v3[\u0027endpoint_type\u0027] \u003d CONF.identity.v3_endpoint_type"},{"line_number":538,"context_line":"        self.domains_v3_client \u003d DomainsV3Client(self.auth_provider,"},{"line_number":539,"context_line":"                                                 **params_v3)"},{"line_number":540,"context_line":"        self.identity_v3_client \u003d IdentityV3Client(self.auth_provider,"},{"line_number":541,"context_line":"                                                   **params_v3)"}],"source_content_type":"text/x-python","patch_set":6,"id":"dae33548_a35b7486","line":538,"range":{"start_line":538,"start_character":13,"end_line":538,"end_character":30},"updated":"2016-02-16 19:05:51.000000000","message":"I don\u0027t understand why you add \u0027v3\u0027 prefix? It is a little confusing for me. I see it as follows: If we have domains_v3_client \u003d\u003e we have domains_client (domains client for Keystone API v2.0), but we don\u0027t have such client. I think everyone knows if we deal with domains, we deal with Keystone v3. IMHO \u0027v3\u0027 is redundant.","commit_id":"5887df9896824ac313d34317e571ff971c9e960d"}],"tempest/services/identity/v3/json/domains_client.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"899f9d08ef3e92402233ca619ac055a6237abffe","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from tempest.common import service_client"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class DomainsV3Client(service_client.ServiceClient):"},{"line_number":22,"context_line":"    api_version \u003d \"v3\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def create_domain(self, name, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"dae33548_037ea0ad","line":21,"updated":"2016-02-16 19:10:39.000000000","message":"It should be named \u0027DomainsClient\u0027. Name of classes should be \u003cURL\u003eClient. In this case URL \u003d domains.","commit_id":"5887df9896824ac313d34317e571ff971c9e960d"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"49d63979ba7eb3fd154e8711d02a8c042616e5bf","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from tempest.common import service_client"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class DomainsV3Client(service_client.ServiceClient):"},{"line_number":22,"context_line":"    api_version \u003d \"v3\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def create_domain(self, name, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"dae33548_ae55fefa","line":21,"in_reply_to":"dae33548_037ea0ad","updated":"2016-02-17 08:38:03.000000000","message":"After a second thought, I think that the proper way to handle this would be to add V3 to every client that has a V2 counterpart and remove that for the ones that don\u0027t. In this case I\u0027ll remove this for domains and trusts, and keep it for roles, what would you think about it?","commit_id":"5887df9896824ac313d34317e571ff971c9e960d"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"476e5d3347c53d23e419f3c816dbfb71ef9f7a39","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from tempest.common import service_client"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class DomainsV3Client(service_client.ServiceClient):"},{"line_number":22,"context_line":"    api_version \u003d \"v3\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def create_domain(self, name, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"dae33548_f02a498f","line":21,"in_reply_to":"dae33548_037ea0ad","updated":"2016-02-17 08:16:08.000000000","message":"Check the original identity client in https://github.com/openstack/tempest/blob/master/tempest/services/identity/v3/json/identity_client.py#L22 , AFAIK we should be consistent with the original name pattern.\n\nSame logic applies for different splits in the same patch series.","commit_id":"5887df9896824ac313d34317e571ff971c9e960d"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"53f2ffd2c6ebe0c3b5bb334c60d3ec37cd003279","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from tempest.common import service_client"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class DomainsV3Client(service_client.ServiceClient):"},{"line_number":22,"context_line":"    api_version \u003d \"v3\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def create_domain(self, name, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"dae33548_0244a418","line":21,"in_reply_to":"dae33548_ae55fefa","updated":"2016-02-17 15:45:52.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":"5887df9896824ac313d34317e571ff971c9e960d"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"77b9f2d8d4d0193b2fd4f3ece633829d63a6a2b5","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        return service_client.ResponseBody(resp, body)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def delete_domain(self, domain_id):"},{"line_number":40,"context_line":"        \"\"\"Delete a domain.\"\"\""},{"line_number":41,"context_line":"        resp, body \u003d self.delete(\u0027domains/%s\u0027 % str(domain_id))"},{"line_number":42,"context_line":"        self.expected_success(204, resp.status)"},{"line_number":43,"context_line":"        return service_client.ResponseBody(resp, body)"}],"source_content_type":"text/x-python","patch_set":6,"id":"dae33548_fd9b5570","line":40,"range":{"start_line":40,"start_character":11,"end_line":40,"end_character":17},"updated":"2016-02-16 21:11:52.000000000","message":"Minor typo, should be \"deletes\" instead of \"delete\" :)","commit_id":"5887df9896824ac313d34317e571ff971c9e960d"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"476e5d3347c53d23e419f3c816dbfb71ef9f7a39","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        return service_client.ResponseBody(resp, body)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def delete_domain(self, domain_id):"},{"line_number":40,"context_line":"        \"\"\"Delete a domain.\"\"\""},{"line_number":41,"context_line":"        resp, body \u003d self.delete(\u0027domains/%s\u0027 % str(domain_id))"},{"line_number":42,"context_line":"        self.expected_success(204, resp.status)"},{"line_number":43,"context_line":"        return service_client.ResponseBody(resp, body)"}],"source_content_type":"text/x-python","patch_set":6,"id":"dae33548_301f916d","line":40,"range":{"start_line":40,"start_character":11,"end_line":40,"end_character":17},"in_reply_to":"dae33548_fd9b5570","updated":"2016-02-17 08:16:08.000000000","message":"Done","commit_id":"5887df9896824ac313d34317e571ff971c9e960d"}],"tempest/services/identity/v3/json/identity_client.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"5c90691ad49c54ac3643c019274f34047b43078d","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        self.expected_success(204, resp.status)"},{"line_number":103,"context_line":"        return service_client.ResponseBody(resp, body)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def assign_user_role_on_domain(self, domain_id, user_id, role_id):"},{"line_number":106,"context_line":"        \"\"\"Add roles to a user on a domain.\"\"\""},{"line_number":107,"context_line":"        resp, body \u003d self.put(\u0027domains/%s/users/%s/roles/%s\u0027 %"},{"line_number":108,"context_line":"                              (domain_id, user_id, role_id), None)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_0a40da55","line":105,"range":{"start_line":105,"start_character":4,"end_line":105,"end_character":70},"updated":"2016-02-14 12:29:23.000000000","message":"Will you separate this kind of methods to roles_client for its purpose?\n\nOr will we need to migrate these methods also for domains_client based on its resource(\"/domains\")?","commit_id":"56416a429101969b4352c5af4cb69d5222f302d3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"8b404b98d6083e26db4edcf928f457f52cd45e2b","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        self.expected_success(204, resp.status)"},{"line_number":103,"context_line":"        return service_client.ResponseBody(resp, body)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def assign_user_role_on_domain(self, domain_id, user_id, role_id):"},{"line_number":106,"context_line":"        \"\"\"Add roles to a user on a domain.\"\"\""},{"line_number":107,"context_line":"        resp, body \u003d self.put(\u0027domains/%s/users/%s/roles/%s\u0027 %"},{"line_number":108,"context_line":"                              (domain_id, user_id, role_id), None)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_6d68a0bb","line":105,"range":{"start_line":105,"start_character":4,"end_line":105,"end_character":70},"in_reply_to":"dae33548_0a40da55","updated":"2016-02-14 12:40:22.000000000","message":"I got your thinking from the other patch which separates methods into roles_client. and I agree with your implementation.","commit_id":"56416a429101969b4352c5af4cb69d5222f302d3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"5c90691ad49c54ac3643c019274f34047b43078d","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        self.expected_success(204, resp.status)"},{"line_number":133,"context_line":"        return service_client.ResponseBody(resp, body)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def delete_role_from_user_on_domain(self, domain_id, user_id, role_id):"},{"line_number":136,"context_line":"        \"\"\"Delete role of a user on a domain.\"\"\""},{"line_number":137,"context_line":"        resp, body \u003d self.delete(\u0027domains/%s/users/%s/roles/%s\u0027 %"},{"line_number":138,"context_line":"                                 (domain_id, user_id, role_id))"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_aa58ce57","line":135,"range":{"start_line":135,"start_character":4,"end_line":135,"end_character":75},"updated":"2016-02-14 12:29:23.000000000","message":"ditto","commit_id":"56416a429101969b4352c5af4cb69d5222f302d3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"5c90691ad49c54ac3643c019274f34047b43078d","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        self.expected_success(204, resp.status)"},{"line_number":148,"context_line":"        return service_client.ResponseBody(resp)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def check_user_role_existence_on_domain(self, domain_id,"},{"line_number":151,"context_line":"                                            user_id, role_id):"},{"line_number":152,"context_line":"        \"\"\"Check role of a user on a domain.\"\"\""},{"line_number":153,"context_line":"        resp, body \u003d self.head(\u0027domains/%s/users/%s/roles/%s\u0027 %"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_4a5b0255","line":150,"range":{"start_line":150,"start_character":4,"end_line":150,"end_character":60},"updated":"2016-02-14 12:29:23.000000000","message":"ditto","commit_id":"56416a429101969b4352c5af4cb69d5222f302d3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"5c90691ad49c54ac3643c019274f34047b43078d","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        self.expected_success(204, resp.status)"},{"line_number":163,"context_line":"        return service_client.ResponseBody(resp, body)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def assign_group_role_on_domain(self, domain_id, group_id, role_id):"},{"line_number":166,"context_line":"        \"\"\"Add roles to a user on a domain.\"\"\""},{"line_number":167,"context_line":"        resp, body \u003d self.put(\u0027domains/%s/groups/%s/roles/%s\u0027 %"},{"line_number":168,"context_line":"                              (domain_id, group_id, role_id), None)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_6a5ec646","line":165,"range":{"start_line":165,"start_character":4,"end_line":165,"end_character":72},"updated":"2016-02-14 12:29:23.000000000","message":"ditto","commit_id":"56416a429101969b4352c5af4cb69d5222f302d3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"5c90691ad49c54ac3643c019274f34047b43078d","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        body \u003d json.loads(body)"},{"line_number":178,"context_line":"        return service_client.ResponseBody(resp, body)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def list_group_roles_on_domain(self, domain_id, group_id):"},{"line_number":181,"context_line":"        \"\"\"list roles of a user on a domain.\"\"\""},{"line_number":182,"context_line":"        resp, body \u003d self.get(\u0027domains/%s/groups/%s/roles\u0027 %"},{"line_number":183,"context_line":"                              (domain_id, group_id))"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_0a49fa8b","line":180,"range":{"start_line":180,"start_character":4,"end_line":180,"end_character":62},"updated":"2016-02-14 12:29:23.000000000","message":"ditto","commit_id":"56416a429101969b4352c5af4cb69d5222f302d3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"5c90691ad49c54ac3643c019274f34047b43078d","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        self.expected_success(204, resp.status)"},{"line_number":193,"context_line":"        return service_client.ResponseBody(resp, body)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def delete_role_from_group_on_domain(self, domain_id, group_id, role_id):"},{"line_number":196,"context_line":"        \"\"\"Delete role of a user on a domain.\"\"\""},{"line_number":197,"context_line":"        resp, body \u003d self.delete(\u0027domains/%s/groups/%s/roles/%s\u0027 %"},{"line_number":198,"context_line":"                                 (domain_id, group_id, role_id))"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_2a44be72","line":195,"range":{"start_line":195,"start_character":4,"end_line":195,"end_character":77},"updated":"2016-02-14 12:29:23.000000000","message":"ditto","commit_id":"56416a429101969b4352c5af4cb69d5222f302d3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"5c90691ad49c54ac3643c019274f34047b43078d","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        self.expected_success(204, resp.status)"},{"line_number":208,"context_line":"        return service_client.ResponseBody(resp)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    def check_role_from_group_on_domain_existence(self, domain_id,"},{"line_number":211,"context_line":"                                                  group_id, role_id):"},{"line_number":212,"context_line":"        \"\"\"Check role of a user on a domain.\"\"\""},{"line_number":213,"context_line":"        resp, body \u003d self.head(\u0027domains/%s/groups/%s/roles/%s\u0027 %"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_ca4ef295","line":210,"range":{"start_line":210,"start_character":4,"end_line":210,"end_character":66},"updated":"2016-02-14 12:29:23.000000000","message":"ditto","commit_id":"56416a429101969b4352c5af4cb69d5222f302d3"}]}
