)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f4d896bc2b4dee7e5326fbfd067e5d22bbf9a17a","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix assignment to not use identity"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The SQL and LDAP assignment backends are using the identity API"},{"line_number":10,"context_line":"when there should be no calls from assignment backend to identity"},{"line_number":11,"context_line":"API."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements: bp no-check-id"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"AAAAUH%2F%2BbV8%3D","line":10,"updated":"2014-01-26 23:46:25.000000000","message":"Maybe we should modify the commit message here since the identity_api is still being used for update user calls? This patch just makes sure that we\u0027re not using identity_api.get_user or identity_api.get_group calls, at least from the KVS backend.\n\nThis are still *some* identity calls, two I believe, that are used from the KVS backend for updating users.","commit_id":"4c00fd49f80541d2653e794e67e28614d7b8dc3d"}],"keystone/assignment/backends/kvs.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"ba54f9b8a0b87e5afa0f41200b586a6318d2411c","unresolved":false,"context_lines":[{"line_number":263,"context_line":"                        tenants.add(tenant_id)"},{"line_number":264,"context_line":"                        user_ref[\u0027tenants\u0027] \u003d list(tenants)"},{"line_number":265,"context_line":"                        self.identity_api.update_user(user_id, user_ref)"},{"line_number":266,"context_line":"                except exception.UserNotFound:"},{"line_number":267,"context_line":"                    # If user doesn\u0027t exist then don\u0027t update them."},{"line_number":268,"context_line":"                    pass"},{"line_number":269,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FObo%3D","line":266,"updated":"2013-11-12 16:18:26.000000000","message":"Might have to update the exception we are checking in the assertRaise here: \n\nhttps://github.com/openstack/tempest/blob/master/tempest/api/identity/admin/test_roles.py#L141\n\nNot entirely sure, but thought that might be a reason why this is failing tempest?","commit_id":"6ee2ceb00b63bfdb4704df5815384b852fe2b74d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"32754c812c3acba4a01f6c978a98c302fd8c22c8","unresolved":false,"context_lines":[{"line_number":263,"context_line":"                        tenants.add(tenant_id)"},{"line_number":264,"context_line":"                        user_ref[\u0027tenants\u0027] \u003d list(tenants)"},{"line_number":265,"context_line":"                        self.identity_api.update_user(user_id, user_ref)"},{"line_number":266,"context_line":"                except exception.UserNotFound:"},{"line_number":267,"context_line":"                    # If user doesn\u0027t exist then don\u0027t update them."},{"line_number":268,"context_line":"                    pass"},{"line_number":269,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FNIo%3D","line":266,"in_reply_to":"AAAATn%2F%2FObo%3D","updated":"2013-11-12 22:49:29.000000000","message":"I submitted a change to tempest: https://review.openstack.org/56106","commit_id":"6ee2ceb00b63bfdb4704df5815384b852fe2b74d"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"fc05200a0aaf4734995a1690f3e7e91c22323526","unresolved":false,"context_lines":[{"line_number":368,"context_line":"                    domain_id\u003dNone, project_id\u003dNone,"},{"line_number":369,"context_line":"                    inherited_to_projects\u003dFalse):"},{"line_number":370,"context_line":"        if user_id:"},{"line_number":371,"context_line":"            self.identity_api.get_user(user_id)"},{"line_number":372,"context_line":"        if group_id:"},{"line_number":373,"context_line":"            self.identity_api.get_group(group_id)"},{"line_number":374,"context_line":"        if domain_id:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2FXMs%3D","line":371,"updated":"2014-01-14 16:38:28.000000000","message":"remove?","commit_id":"ad9e313d3fa44171a24112fb4923dea7d8422c3d"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"fc05200a0aaf4734995a1690f3e7e91c22323526","unresolved":false,"context_lines":[{"line_number":370,"context_line":"        if user_id:"},{"line_number":371,"context_line":"            self.identity_api.get_user(user_id)"},{"line_number":372,"context_line":"        if group_id:"},{"line_number":373,"context_line":"            self.identity_api.get_group(group_id)"},{"line_number":374,"context_line":"        if domain_id:"},{"line_number":375,"context_line":"            self.get_domain(domain_id)"},{"line_number":376,"context_line":"        if project_id:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2FXMo%3D","line":373,"updated":"2014-01-14 16:38:28.000000000","message":"remove?","commit_id":"ad9e313d3fa44171a24112fb4923dea7d8422c3d"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"fc05200a0aaf4734995a1690f3e7e91c22323526","unresolved":false,"context_lines":[{"line_number":391,"context_line":"                  inherited_to_projects\u003dFalse):"},{"line_number":392,"context_line":"        self.get_role(role_id)"},{"line_number":393,"context_line":"        if user_id:"},{"line_number":394,"context_line":"            self.identity_api.get_user(user_id)"},{"line_number":395,"context_line":"        if group_id:"},{"line_number":396,"context_line":"            self.get_group(group_id)"},{"line_number":397,"context_line":"        if domain_id:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2FXMk%3D","line":394,"updated":"2014-01-14 16:38:28.000000000","message":"remove?","commit_id":"ad9e313d3fa44171a24112fb4923dea7d8422c3d"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"fc05200a0aaf4734995a1690f3e7e91c22323526","unresolved":false,"context_lines":[{"line_number":393,"context_line":"        if user_id:"},{"line_number":394,"context_line":"            self.identity_api.get_user(user_id)"},{"line_number":395,"context_line":"        if group_id:"},{"line_number":396,"context_line":"            self.get_group(group_id)"},{"line_number":397,"context_line":"        if domain_id:"},{"line_number":398,"context_line":"            self.get_domain(domain_id)"},{"line_number":399,"context_line":"        if project_id:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2FXMg%3D","line":396,"updated":"2014-01-14 16:38:28.000000000","message":"remove?","commit_id":"ad9e313d3fa44171a24112fb4923dea7d8422c3d"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"fc05200a0aaf4734995a1690f3e7e91c22323526","unresolved":false,"context_lines":[{"line_number":417,"context_line":"                     inherited_to_projects\u003dFalse):"},{"line_number":418,"context_line":"        self.get_role(role_id)"},{"line_number":419,"context_line":"        if user_id:"},{"line_number":420,"context_line":"            self.identity_api.get_user(user_id)"},{"line_number":421,"context_line":"        if group_id:"},{"line_number":422,"context_line":"            self.identity_api.get_group(group_id)"},{"line_number":423,"context_line":"        if domain_id:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2FXMc%3D","line":420,"updated":"2014-01-14 16:38:28.000000000","message":"remove?","commit_id":"ad9e313d3fa44171a24112fb4923dea7d8422c3d"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"fc05200a0aaf4734995a1690f3e7e91c22323526","unresolved":false,"context_lines":[{"line_number":419,"context_line":"        if user_id:"},{"line_number":420,"context_line":"            self.identity_api.get_user(user_id)"},{"line_number":421,"context_line":"        if group_id:"},{"line_number":422,"context_line":"            self.identity_api.get_group(group_id)"},{"line_number":423,"context_line":"        if domain_id:"},{"line_number":424,"context_line":"            self.get_domain(domain_id)"},{"line_number":425,"context_line":"        if project_id:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2FXMY%3D","line":422,"updated":"2014-01-14 16:38:28.000000000","message":"remove?","commit_id":"ad9e313d3fa44171a24112fb4923dea7d8422c3d"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"1e9f85607eed8a8fe48509762a637432cd7ea37a","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from keystone import assignment"},{"line_number":18,"context_line":"from keystone import clean"},{"line_number":19,"context_line":"from keystone.common import dependency"},{"line_number":20,"context_line":"from keystone.common import kvs"},{"line_number":21,"context_line":"from keystone import exception"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2Bce0%3D","side":"PARENT","line":19,"updated":"2014-01-26 08:38:04.000000000","message":"remove this line","commit_id":"49993b295faf8dd01d900a4ef1a17a6ae76820f2"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"1e9f85607eed8a8fe48509762a637432cd7ea37a","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from keystone import exception"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"@dependency.requires(\u0027identity_api\u0027)"},{"line_number":25,"context_line":"class Assignment(kvs.Base, assignment.Driver):"},{"line_number":26,"context_line":"    def __init__(self):"},{"line_number":27,"context_line":"        super(Assignment, self).__init__()"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2Bce4%3D","side":"PARENT","line":24,"updated":"2014-01-26 08:38:04.000000000","message":"remove this line","commit_id":"49993b295faf8dd01d900a4ef1a17a6ae76820f2"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"62a40425a3ed4679740468ce15f66ca2deebc2c2","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from keystone import exception"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"@dependency.requires(\u0027identity_api\u0027)"},{"line_number":25,"context_line":"class Assignment(kvs.Base, assignment.Driver):"},{"line_number":26,"context_line":"    def __init__(self):"},{"line_number":27,"context_line":"        super(Assignment, self).__init__()"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2Bb3Q%3D","side":"PARENT","line":24,"in_reply_to":"AAAAUH%2F%2Bce4%3D","updated":"2014-01-26 17:01:12.000000000","message":"Steve - this class still uses identity_api.","commit_id":"49993b295faf8dd01d900a4ef1a17a6ae76820f2"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f4d896bc2b4dee7e5326fbfd067e5d22bbf9a17a","unresolved":false,"context_lines":[{"line_number":148,"context_line":"            user_ref \u003d self._get_user(user_id)"},{"line_number":149,"context_line":"            tenants \u003d set(user_ref.get(\u0027tenants\u0027, []))"},{"line_number":150,"context_line":"            tenants.remove(tenant_id)"},{"line_number":151,"context_line":"            user_ref[\u0027tenants\u0027] \u003d list(tenants)"},{"line_number":152,"context_line":"            self.identity_api.update_user(user_id, user_ref)"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def list_role_assignments(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2BbWU%3D","line":151,"updated":"2014-01-26 23:46:25.000000000","message":"Only a couple calls left to the identity_api here, and it looks like they are updates. After this patch there shouldn\u0027t be any get_user/get_group calls to the identity_api.","commit_id":"4c00fd49f80541d2653e794e67e28614d7b8dc3d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f4d896bc2b4dee7e5326fbfd067e5d22bbf9a17a","unresolved":false,"context_lines":[{"line_number":267,"context_line":"                    tenants \u003d set(user_ref.get(\u0027tenants\u0027, []))"},{"line_number":268,"context_line":"                    if tenant_id not in tenants:"},{"line_number":269,"context_line":"                        tenants.add(tenant_id)"},{"line_number":270,"context_line":"                        user_ref[\u0027tenants\u0027] \u003d list(tenants)"},{"line_number":271,"context_line":"                        self.identity_api.update_user(user_id, user_ref)"},{"line_number":272,"context_line":"                except exception.UserNotFound:"},{"line_number":273,"context_line":"                    # It\u0027s acceptable for the user to not exist."}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2BbWQ%3D","line":270,"updated":"2014-01-26 23:46:25.000000000","message":"Same as above.","commit_id":"4c00fd49f80541d2653e794e67e28614d7b8dc3d"}]}
