)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"c573e3a532bb8547187f7a2a3fa683698f672f86","unresolved":false,"context_lines":[{"line_number":13,"context_line":"\"role_assignments\" are a different API than the \"roles\" API, but the"},{"line_number":14,"context_line":"client method was placed to roles_client for now. When adding new"},{"line_number":15,"context_line":"methods that handles the \"role_assignments\" API, they can be placed in"},{"line_number":16,"context_line":"its own client."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I0f5a54d85a28c8c011fd3489cf55629b9caa1dcf"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3a98d1f4_c3b0ac8e","line":16,"updated":"2016-09-28 21:48:54.000000000","message":"If we do split this functionality out into a separate module since the roles client already exists in tempest/lib we\u0027ll need to maintain backwards compat with a full cycle for deprecation. It might be better to just to create and put it in the role_assignments class to begin with. Also how does this differ from:\n\nhttps://github.com/openstack/tempest/blob/master/tempest/lib/services/identity/v3/inherited_roles_client.py","commit_id":"35db0bd6ac49466c1995beb843019a87fbde50c4"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"a1ec44a27ab0e89cd62b6ef0134fb4feb72c368f","unresolved":false,"context_lines":[{"line_number":13,"context_line":"\"role_assignments\" are a different API than the \"roles\" API, but the"},{"line_number":14,"context_line":"client method was placed to roles_client for now. When adding new"},{"line_number":15,"context_line":"methods that handles the \"role_assignments\" API, they can be placed in"},{"line_number":16,"context_line":"its own client."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I0f5a54d85a28c8c011fd3489cf55629b9caa1dcf"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3a98d1f4_09f2b5d2","line":16,"in_reply_to":"3a98d1f4_c3b0ac8e","updated":"2016-09-28 22:44:14.000000000","message":"the inherited roles API is a bit different from the role_assignments, the first is intended to create inherited roles and the second is to handle list queries (that might include or not roles that were inherited somehow)\n\nI quite didn\u0027t get from your comment if you are suggesting or not to create a new file/class for the new method","commit_id":"35db0bd6ac49466c1995beb843019a87fbde50c4"}],"tempest/api/identity/admin/v3/test_inherits.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"53a73623778f2df60ebfea8b0ec2adfc43b8522c","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        assignments \u003d ("},{"line_number":170,"context_line":"            self.roles_client.list_user_project_effective_role_assignments("},{"line_number":171,"context_line":"                self.project[\u0027id\u0027], self.user[\u0027id\u0027]))[\u0027role_assignments\u0027]"},{"line_number":172,"context_line":"        self.assertNotEmpty(assignments)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        # List \"effective\" role assignments from user on the leaf project"},{"line_number":175,"context_line":"        assignments \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_dec26984","line":172,"updated":"2016-08-23 15:05:35.000000000","message":"Cant you make a stronger assertion ?","commit_id":"0878eff7f3347dcaa06faab783ec341afc253ee4"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"dbd0ca37e5f66d208efe185bb5a53a1bed814970","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        assignments \u003d ("},{"line_number":170,"context_line":"            self.roles_client.list_user_project_effective_role_assignments("},{"line_number":171,"context_line":"                self.project[\u0027id\u0027], self.user[\u0027id\u0027]))[\u0027role_assignments\u0027]"},{"line_number":172,"context_line":"        self.assertNotEmpty(assignments)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        # List \"effective\" role assignments from user on the leaf project"},{"line_number":175,"context_line":"        assignments \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"9a89bdaa_b93d0691","line":172,"in_reply_to":"1ac06dbe_dec26984","updated":"2016-09-07 14:59:17.000000000","message":"don\u0027t think it is necessary, since after we revoke the role assignment in line 181 we check that both lists are empty -\u003e meaning that revoke action worked.","commit_id":"0878eff7f3347dcaa06faab783ec341afc253ee4"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"53a73623778f2df60ebfea8b0ec2adfc43b8522c","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        assignments \u003d ("},{"line_number":176,"context_line":"            self.roles_client.list_user_project_effective_role_assignments("},{"line_number":177,"context_line":"                leaf_project[\u0027id\u0027], self.user[\u0027id\u0027]))[\u0027role_assignments\u0027]"},{"line_number":178,"context_line":"        self.assertNotEmpty(assignments)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        # Revoke role from domain"},{"line_number":181,"context_line":"        self.roles_client.revoke_inherited_role_from_user_on_domain("}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_5e64b9b7","line":178,"updated":"2016-08-23 15:05:35.000000000","message":"Cant you make a stronger assertion ?","commit_id":"0878eff7f3347dcaa06faab783ec341afc253ee4"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"dbd0ca37e5f66d208efe185bb5a53a1bed814970","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        assignments \u003d ("},{"line_number":176,"context_line":"            self.roles_client.list_user_project_effective_role_assignments("},{"line_number":177,"context_line":"                leaf_project[\u0027id\u0027], self.user[\u0027id\u0027]))[\u0027role_assignments\u0027]"},{"line_number":178,"context_line":"        self.assertNotEmpty(assignments)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        # Revoke role from domain"},{"line_number":181,"context_line":"        self.roles_client.revoke_inherited_role_from_user_on_domain("}],"source_content_type":"text/x-python","patch_set":3,"id":"9a89bdaa_394ad626","line":178,"in_reply_to":"1ac06dbe_5e64b9b7","updated":"2016-09-07 14:59:17.000000000","message":"see comment above","commit_id":"0878eff7f3347dcaa06faab783ec341afc253ee4"}],"tempest/services/identity/v3/json/roles_client.py":[{"author":{"_account_id":13463,"name":"Amaury Medeiros","email":"amaurymedeiros@gmail.com","username":"amaurymedeiros"},"change_message_id":"185f9b54cb07f7155da8b881a56094bf571df75c","unresolved":false,"context_lines":[{"line_number":314,"context_line":"        self.expected_success(204, resp.status)"},{"line_number":315,"context_line":"        return rest_client.ResponseBody(resp)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    def list_user_project_effective_role_assignments("},{"line_number":318,"context_line":"            self, project_id, user_id):"},{"line_number":319,"context_line":"        resp, body \u003d self.get("},{"line_number":320,"context_line":"            \"role_assignments?scope.project.id\u003d%s\u0026user.id\u003d%s\u0026effective\" %"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ac06dbe_0f897f75","line":317,"updated":"2016-08-23 12:25:14.000000000","message":"Let\u0027s add doc for this method.","commit_id":"210646970d563cd9c6299a7527c39c720c4e0ffd"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"0ccd6544e37802070f54a8fa460a40a98ada9b8c","unresolved":false,"context_lines":[{"line_number":314,"context_line":"        self.expected_success(204, resp.status)"},{"line_number":315,"context_line":"        return rest_client.ResponseBody(resp)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    def list_user_project_effective_role_assignments("},{"line_number":318,"context_line":"            self, project_id, user_id):"},{"line_number":319,"context_line":"        resp, body \u003d self.get("},{"line_number":320,"context_line":"            \"role_assignments?scope.project.id\u003d%s\u0026user.id\u003d%s\u0026effective\" %"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ac06dbe_ef47c3b9","line":317,"in_reply_to":"1ac06dbe_0f897f75","updated":"2016-08-23 12:30:35.000000000","message":"Done","commit_id":"210646970d563cd9c6299a7527c39c720c4e0ffd"}]}
