)]}'
{"keystone/assignment/core.py":[{"author":{"_account_id":6456,"name":"Sahdev Zala","email":"spzala@us.ibm.com","username":"spzala"},"change_message_id":"247d736e7e2576012494e1df1a725400562524a4","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        \"\"\""},{"line_number":184,"context_line":"        try:"},{"line_number":185,"context_line":"            (self.driver.add_role_to_user_and_project"},{"line_number":186,"context_line":"             (user_id, tenant_id, config.CONF.member_role_id))"},{"line_number":187,"context_line":"        except exception.RoleNotFound:"},{"line_number":188,"context_line":"            role \u003d {\u0027id\u0027: CONF.member_role_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2FUGM%3D","line":185,"updated":"2013-08-02 03:08:27.000000000","message":"Minor - why extra parentheses? :-) .. suggest to remove it.","commit_id":"3ef5d873b24f42682d08457dce103d53fe0bb046"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"9c5868106375a48f064fb39f1359348494331bb9","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        \"\"\""},{"line_number":184,"context_line":"        try:"},{"line_number":185,"context_line":"            (self.driver.add_role_to_user_and_project"},{"line_number":186,"context_line":"             (user_id, tenant_id, config.CONF.member_role_id))"},{"line_number":187,"context_line":"        except exception.RoleNotFound:"},{"line_number":188,"context_line":"            role \u003d {\u0027id\u0027: CONF.member_role_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2FR4k%3D","line":185,"in_reply_to":"AAAAQn%2F%2FUGM%3D","updated":"2013-08-02 16:54:43.000000000","message":"pep8 wrapping","commit_id":"3ef5d873b24f42682d08457dce103d53fe0bb046"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"1cd22285a8ccc65768ff080e33f96709f1fcf273","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            (self.driver.add_role_to_user_and_project"},{"line_number":186,"context_line":"             (user_id, tenant_id, config.CONF.member_role_id))"},{"line_number":187,"context_line":"        except exception.RoleNotFound:"},{"line_number":188,"context_line":"            role \u003d {\u0027id\u0027: CONF.member_role_id,"},{"line_number":189,"context_line":"                    \u0027name\u0027: CONF.member_role_name}"},{"line_number":190,"context_line":"            self.driver.create_role(config.CONF.member_role_id, role)"},{"line_number":191,"context_line":"            (self.driver.add_role_to_user_and_project"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2FSQ4%3D","line":188,"updated":"2013-08-02 15:16:35.000000000","message":"Shouldn\u0027t this default role be available in the system by default.  I believe this is bootstrap data something similar to  ADMIN token, and Default Domain. We should not be creating this in code","commit_id":"3ef5d873b24f42682d08457dce103d53fe0bb046"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"9c5868106375a48f064fb39f1359348494331bb9","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            (self.driver.add_role_to_user_and_project"},{"line_number":186,"context_line":"             (user_id, tenant_id, config.CONF.member_role_id))"},{"line_number":187,"context_line":"        except exception.RoleNotFound:"},{"line_number":188,"context_line":"            role \u003d {\u0027id\u0027: CONF.member_role_id,"},{"line_number":189,"context_line":"                    \u0027name\u0027: CONF.member_role_name}"},{"line_number":190,"context_line":"            self.driver.create_role(config.CONF.member_role_id, role)"},{"line_number":191,"context_line":"            (self.driver.add_role_to_user_and_project"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2FR4g%3D","line":188,"in_reply_to":"AAAAQn%2F%2FSQ4%3D","updated":"2013-08-02 16:54:43.000000000","message":"Not for KVS or LDAP, only in SQL.","commit_id":"3ef5d873b24f42682d08457dce103d53fe0bb046"},{"author":{"_account_id":6456,"name":"Sahdev Zala","email":"spzala@us.ibm.com","username":"spzala"},"change_message_id":"247d736e7e2576012494e1df1a725400562524a4","unresolved":false,"context_lines":[{"line_number":188,"context_line":"            role \u003d {\u0027id\u0027: CONF.member_role_id,"},{"line_number":189,"context_line":"                    \u0027name\u0027: CONF.member_role_name}"},{"line_number":190,"context_line":"            self.driver.create_role(config.CONF.member_role_id, role)"},{"line_number":191,"context_line":"            (self.driver.add_role_to_user_and_project"},{"line_number":192,"context_line":"             (user_id, tenant_id, config.CONF.member_role_id))"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def remove_user_from_project(self, tenant_id, user_id):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2FUFw%3D","line":191,"updated":"2013-08-02 03:08:27.000000000","message":"Suggest remove extra parentheses.","commit_id":"3ef5d873b24f42682d08457dce103d53fe0bb046"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ea0feacb1a84d7c1ff146c964e702f9822647beb","unresolved":false,"context_lines":[{"line_number":188,"context_line":"            role \u003d {\u0027id\u0027: CONF.member_role_id,"},{"line_number":189,"context_line":"                    \u0027name\u0027: CONF.member_role_name}"},{"line_number":190,"context_line":"            self.driver.create_role(config.CONF.member_role_id, role)"},{"line_number":191,"context_line":"            (self.driver.add_role_to_user_and_project"},{"line_number":192,"context_line":"             (user_id, tenant_id, config.CONF.member_role_id))"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def remove_user_from_project(self, tenant_id, user_id):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2FRdE%3D","line":191,"in_reply_to":"AAAAQn%2F%2FR4Y%3D","updated":"2013-08-02 19:17:20.000000000","message":"the extra parens are not necessary, are unconventional and make these function calls nearly unreadable. please remove them","commit_id":"3ef5d873b24f42682d08457dce103d53fe0bb046"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"9c5868106375a48f064fb39f1359348494331bb9","unresolved":false,"context_lines":[{"line_number":188,"context_line":"            role \u003d {\u0027id\u0027: CONF.member_role_id,"},{"line_number":189,"context_line":"                    \u0027name\u0027: CONF.member_role_name}"},{"line_number":190,"context_line":"            self.driver.create_role(config.CONF.member_role_id, role)"},{"line_number":191,"context_line":"            (self.driver.add_role_to_user_and_project"},{"line_number":192,"context_line":"             (user_id, tenant_id, config.CONF.member_role_id))"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def remove_user_from_project(self, tenant_id, user_id):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2FR4Y%3D","line":191,"in_reply_to":"AAAAQn%2F%2FUFw%3D","updated":"2013-08-02 16:54:43.000000000","message":"pep8 line wrapping","commit_id":"3ef5d873b24f42682d08457dce103d53fe0bb046"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"4d999df902a5d5f26e14aaea088df48fc3ff1fc0","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                user_id,"},{"line_number":187,"context_line":"                tenant_id,"},{"line_number":188,"context_line":"                config.CONF.member_role_id)"},{"line_number":189,"context_line":"        except exception.RoleNotFound:"},{"line_number":190,"context_line":"            role \u003d {\u0027id\u0027: CONF.member_role_id,"},{"line_number":191,"context_line":"                    \u0027name\u0027: CONF.member_role_name}"},{"line_number":192,"context_line":"            self.driver.create_role(config.CONF.member_role_id, role)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAQn%2F%2FLPY%3D","line":189,"updated":"2013-08-05 23:03:00.000000000","message":"suggest log what happened here...\n\n LOG.info(_(\"Creating the default role %s because it does not exist.\") %\n  config.CONF.member_role_id)\n\nBecause if somebody is using read-only LDAP this is going to fail and we should try to make it obvious why this is happening... maybe they\u0027ll be able to figure out that they need to create the role themselves or change the default.\n\nAlso, they might have some other errors and warnings in their logs from the failure so they might be interested to know what happened.","commit_id":"3ee1e8fea7d4e536116babc4914da4ed68174a45"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"4d999df902a5d5f26e14aaea088df48fc3ff1fc0","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                    \u0027name\u0027: CONF.member_role_name}"},{"line_number":192,"context_line":"            self.driver.create_role(config.CONF.member_role_id, role)"},{"line_number":193,"context_line":"            self.driver.add_role_to_user_and_project("},{"line_number":194,"context_line":"                user_id, tenant_id, config.CONF.member_role_id)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def remove_user_from_project(self, tenant_id, user_id):"},{"line_number":197,"context_line":"        \"\"\"Remove user from a tenant"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAQn%2F%2FLOo%3D","line":194,"updated":"2013-08-05 23:03:00.000000000","message":"suggest format these lines so they\u0027re the same as the call at 185-188 so that it\u0027s obvious that it\u0027s the same thing again.","commit_id":"3ee1e8fea7d4e536116babc4914da4ed68174a45"}],"tests/test_backend.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"4d999df902a5d5f26e14aaea088df48fc3ff1fc0","unresolved":false,"context_lines":[{"line_number":1460,"context_line":"        self.identity_api.add_user_to_project(self.tenant_baz[\u0027id\u0027],"},{"line_number":1461,"context_line":"                                              self.user_foo[\u0027id\u0027])"},{"line_number":1462,"context_line":"        tenants \u003d self.identity_api.get_projects_for_user(self.user_foo[\u0027id\u0027])"},{"line_number":1463,"context_line":"        self.assertIn(self.tenant_baz[\u0027id\u0027], tenants)"},{"line_number":1464,"context_line":""},{"line_number":1465,"context_line":"    def test_add_user_to_project_404(self):"},{"line_number":1466,"context_line":"        self.assertRaises(exception.ProjectNotFound,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAQn%2F%2FLOc%3D","line":1463,"updated":"2013-08-05 23:03:00.000000000","message":"suggest check that the role now exists.","commit_id":"3ee1e8fea7d4e536116babc4914da4ed68174a45"}]}
