)]}'
{"keystone/assignment/controllers.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"3424d74241a93fd99979ec16138a0dbc6f9b1989","unresolved":false,"context_lines":[{"line_number":159,"context_line":"            raise exception.NotImplemented("},{"line_number":160,"context_line":"                message\u003d_(\u0027User roles not supported: tenant_id required\u0027))"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        user_ids \u003d self.assignment_api.list_user_ids_for_project(tenant_id)"},{"line_number":163,"context_line":"        if user_id not in user_ids:"},{"line_number":164,"context_line":"            raise exception.UserNotFound(user_id\u003duser_id)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        self.assignment_api.add_role_to_user_and_project("},{"line_number":167,"context_line":"            user_id, tenant_id, role_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa7ab95a_251edb0b","line":164,"range":{"start_line":162,"start_character":8,"end_line":164,"end_character":57},"updated":"2016-08-30 21:58:30.000000000","message":"you could just call\n\n  self.assignment_api.get_project(tenant_id)\n  self.identity_api.get_user(user_id)\n\neach will raise a 404 if not found","commit_id":"2a952c5fd1e91135b41e38d32f2c68fe084c5df4"},{"author":{"_account_id":15950,"name":"Ukesh Kumar","email":"ukeshkumar@gmail.com","username":"ukeshkumar"},"change_message_id":"87668af20297ae1d956aaf3799a396e5d3d4f283","unresolved":false,"context_lines":[{"line_number":159,"context_line":"            raise exception.NotImplemented("},{"line_number":160,"context_line":"                message\u003d_(\u0027User roles not supported: tenant_id required\u0027))"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        user_ids \u003d self.assignment_api.list_user_ids_for_project(tenant_id)"},{"line_number":163,"context_line":"        if user_id not in user_ids:"},{"line_number":164,"context_line":"            raise exception.UserNotFound(user_id\u003duser_id)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        self.assignment_api.add_role_to_user_and_project("},{"line_number":167,"context_line":"            user_id, tenant_id, role_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa7ab95a_b8684689","line":164,"range":{"start_line":162,"start_character":8,"end_line":164,"end_character":57},"in_reply_to":"fa7ab95a_251edb0b","updated":"2016-08-31 06:21:28.000000000","message":"it seems, self.assignment_api doesn\u0027t have the attribute \u0027get_project\u0027 and self object also doesn\u0027t have the attribute \u0027identity_api\u0027. This maybe because version 2","commit_id":"2a952c5fd1e91135b41e38d32f2c68fe084c5df4"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"983b5155a95303f7a92035a5775ab591fb9adcf7","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        return {\u0027roles\u0027: self.role_api.list_roles()}"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"@dependency.requires(\u0027assignment_api\u0027, \u0027resource_api\u0027, \u0027role_api\u0027)"},{"line_number":126,"context_line":"class RoleAssignmentV2(controller.V2Controller):"},{"line_number":127,"context_line":"    \"\"\"The V2 Role APIs that are processing assignments.\"\"\""},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa7ab95a_c44a6e27","line":125,"updated":"2016-08-31 12:03:31.000000000","message":"to follow Steve\u0027s approach you can add \"identity_api\" here. I also prefer doing like he suggested since it reuses a code that does exactly what you are trying to do here.","commit_id":"07c003fa06db4dba1b11c24af0cecf0d03472098"}],"keystone/tests/unit/test_v2_controller.py":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"983b5155a95303f7a92035a5775ab591fb9adcf7","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.assignment_role_controller \u003d ("},{"line_number":43,"context_line":"            assignment_controllers.RoleAssignmentV2())"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_get_project_users_no_user(self):"},{"line_number":46,"context_line":"        \"\"\"Test the user\u0027s existence for get_project_users."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        When a user that\u0027s not known to `identity` has a role on a project,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa7ab95a_046296d8","line":45,"range":{"start_line":45,"start_character":8,"end_line":45,"end_character":38},"updated":"2016-08-31 12:03:31.000000000","message":"this test name doesn\u0027t make sense anymore, since the test fails prior the \"get_project_users\"","commit_id":"07c003fa06db4dba1b11c24af0cecf0d03472098"}]}
