)]}'
{"keystone/common/sql/legacy.py":[{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"02e1b8acb1914280be58e84ff041bf98b8224bcb","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                        \u0027id\u0027: x.get(\u0027uid\u0027, x.get(\u0027id\u0027)),"},{"line_number":120,"context_line":"                        \u0027enabled\u0027: x.get(\u0027enabled\u0027, True)}"},{"line_number":121,"context_line":"            if x.get(\u0027tenant_id\u0027):"},{"line_number":122,"context_line":"                new_dict[\u0027tenant_id\u0027] \u003d self._project_map.get(x[\u0027tenant_id\u0027])"},{"line_number":123,"context_line":"            new_dict[\u0027name\u0027] \u003d x.get(\u0027name\u0027, new_dict.get(\u0027id\u0027))"},{"line_number":124,"context_line":"            # track internal ids"},{"line_number":125,"context_line":"            self._user_map[x.get(\u0027id\u0027)] \u003d new_dict[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FTH8%3D","line":122,"updated":"2013-01-29 20:28:59.000000000","message":"so the tenant_id key will remain?","commit_id":"4b2b3af2e3346ef7d0ef7dc8e3e314d568779861"},{"author":{"_account_id":6,"name":"Joe Heck","email":"heckj@mac.com","username":"heckj"},"change_message_id":"e8aeb492bb106536a2176a389347f9edd431c998","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                        \u0027id\u0027: x.get(\u0027uid\u0027, x.get(\u0027id\u0027)),"},{"line_number":120,"context_line":"                        \u0027enabled\u0027: x.get(\u0027enabled\u0027, True)}"},{"line_number":121,"context_line":"            if x.get(\u0027tenant_id\u0027):"},{"line_number":122,"context_line":"                new_dict[\u0027tenant_id\u0027] \u003d self._project_map.get(x[\u0027tenant_id\u0027])"},{"line_number":123,"context_line":"            new_dict[\u0027name\u0027] \u003d x.get(\u0027name\u0027, new_dict.get(\u0027id\u0027))"},{"line_number":124,"context_line":"            # track internal ids"},{"line_number":125,"context_line":"            self._user_map[x.get(\u0027id\u0027)] \u003d new_dict[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FTAs%3D","line":122,"in_reply_to":"AAAAM3%2F%2FTBI%3D","updated":"2013-01-29 21:06:14.000000000","message":"it\u0027ll also need to remain in some extent (even if rewritten in) to support V2.0 API responses, which expect that key","commit_id":"4b2b3af2e3346ef7d0ef7dc8e3e314d568779861"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"912e971510fd6f908b2230d6b846587153b5585c","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                        \u0027id\u0027: x.get(\u0027uid\u0027, x.get(\u0027id\u0027)),"},{"line_number":120,"context_line":"                        \u0027enabled\u0027: x.get(\u0027enabled\u0027, True)}"},{"line_number":121,"context_line":"            if x.get(\u0027tenant_id\u0027):"},{"line_number":122,"context_line":"                new_dict[\u0027tenant_id\u0027] \u003d self._project_map.get(x[\u0027tenant_id\u0027])"},{"line_number":123,"context_line":"            new_dict[\u0027name\u0027] \u003d x.get(\u0027name\u0027, new_dict.get(\u0027id\u0027))"},{"line_number":124,"context_line":"            # track internal ids"},{"line_number":125,"context_line":"            self._user_map[x.get(\u0027id\u0027)] \u003d new_dict[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FTBI%3D","line":122,"in_reply_to":"AAAAM3%2F%2FTH8%3D","updated":"2013-01-29 20:59:26.000000000","message":"this migration needs to be rewritten along with removing the user_project_membership table and the add_user_to_project driver calls","commit_id":"4b2b3af2e3346ef7d0ef7dc8e3e314d568779861"}],"keystone/common/sql/nova.py":[{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"02e1b8acb1914280be58e84ff041bf98b8224bcb","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    for assignment in assignments:"},{"line_number":105,"context_line":"        role_id \u003d role_map[assignment[\u0027role\u0027]]"},{"line_number":106,"context_line":"        user_id \u003d user_map[assignment[\u0027user_id\u0027]]"},{"line_number":107,"context_line":"        tenant_id \u003d tenant_map[assignment[\u0027tenant_id\u0027]]"},{"line_number":108,"context_line":"        LOG.debug(_(\u0027Assign role %s to user %s on tenant %s\u0027) %"},{"line_number":109,"context_line":"                  (role_id, user_id, tenant_id))"},{"line_number":110,"context_line":"        api.add_role_to_user_and_project(user_id, tenant_id, role_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FTHo%3D","line":107,"updated":"2013-01-29 20:28:59.000000000","message":"tenant_id will remain?","commit_id":"4b2b3af2e3346ef7d0ef7dc8e3e314d568779861"},{"author":{"_account_id":6,"name":"Joe Heck","email":"heckj@mac.com","username":"heckj"},"change_message_id":"e8aeb492bb106536a2176a389347f9edd431c998","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    for assignment in assignments:"},{"line_number":105,"context_line":"        role_id \u003d role_map[assignment[\u0027role\u0027]]"},{"line_number":106,"context_line":"        user_id \u003d user_map[assignment[\u0027user_id\u0027]]"},{"line_number":107,"context_line":"        tenant_id \u003d tenant_map[assignment[\u0027tenant_id\u0027]]"},{"line_number":108,"context_line":"        LOG.debug(_(\u0027Assign role %s to user %s on tenant %s\u0027) %"},{"line_number":109,"context_line":"                  (role_id, user_id, tenant_id))"},{"line_number":110,"context_line":"        api.add_role_to_user_and_project(user_id, tenant_id, role_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FTAc%3D","line":107,"in_reply_to":"AAAAM3%2F%2FTHo%3D","updated":"2013-01-29 21:06:14.000000000","message":"see earlier in review - basically, yeah - in some form anyway - for V2 API responses","commit_id":"4b2b3af2e3346ef7d0ef7dc8e3e314d568779861"}],"keystone/contrib/ec2/core.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1d809842a5c687ac436962563b1dfc1583a104de","unresolved":false,"context_lines":[{"line_number":335,"context_line":""},{"line_number":336,"context_line":"        :param context: standard context"},{"line_number":337,"context_line":"        :param user_id: expected credential owner"},{"line_number":338,"context_line":"        :raises exception.UserNotFound: on failure"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        \"\"\""},{"line_number":341,"context_line":"        tenant_ref \u003d self.identity_api.get_project("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FVLU%3D","line":338,"updated":"2013-01-28 19:14:15.000000000","message":"raises ProjectNotFound","commit_id":"dde77f1e6b33bf7b1ab30a2dbe38daf1bea1aa30"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1d809842a5c687ac436962563b1dfc1583a104de","unresolved":false,"context_lines":[{"line_number":342,"context_line":"            context\u003dcontext,"},{"line_number":343,"context_line":"            tenant_id\u003dtenant_id)"},{"line_number":344,"context_line":"        if not tenant_ref:"},{"line_number":345,"context_line":"            raise exception.ProjectNotFound(tenant_id\u003dtenant_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FVLE%3D","line":345,"updated":"2013-01-28 19:14:15.000000000","message":"ProjectNotFound expects project_id.","commit_id":"dde77f1e6b33bf7b1ab30a2dbe38daf1bea1aa30"}],"keystone/identity/backends/ldap/core.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1d809842a5c687ac436962563b1dfc1583a104de","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        return self.role.get_all()"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    # These should probably be part of the high-level API"},{"line_number":152,"context_line":"    # When this happens, then change TenantAPI.add_user to not ignore"},{"line_number":153,"context_line":"    # ldap.TYPE_OR_VALUE_EXISTS"},{"line_number":154,"context_line":"    def add_user_to_tenant(self, tenant_id, user_id):"},{"line_number":155,"context_line":"        self.get_tenant(tenant_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FVKc%3D","side":"PARENT","line":152,"updated":"2013-01-28 19:14:15.000000000","message":"TenantAPI -\u003e ProjectApi\n\n(Is this comment still relevant? Maybe it can be removed.)","commit_id":"a0a64dbea12f54b9ea2b25dcc51cac4ecb5f0c09"}],"keystone/identity/backends/sql.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1d809842a5c687ac436962563b1dfc1583a104de","unresolved":false,"context_lines":[{"line_number":630,"context_line":"            session.flush()"},{"line_number":631,"context_line":""},{"line_number":632,"context_line":"    @handle_conflicts(type\u003d\u0027project\u0027)"},{"line_number":633,"context_line":"    def xxupdate_project(self, project_id, project):"},{"line_number":634,"context_line":"        if \u0027name\u0027 in project:"},{"line_number":635,"context_line":"            project[\u0027name\u0027] \u003d clean.project_name(project[\u0027name\u0027])"},{"line_number":636,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FVJw%3D","line":633,"updated":"2013-01-28 19:14:15.000000000","message":"what does the xx prefix mean?","commit_id":"dde77f1e6b33bf7b1ab30a2dbe38daf1bea1aa30"}],"keystone/identity/core.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1d809842a5c687ac436962563b1dfc1583a104de","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                         tenant?"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        :returns: a list of ... FIXME(dolph): user_refs or user_id\u0027s?"},{"line_number":137,"context_line":"        :raises: keystone.exception.UserNotFound"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        \"\"\""},{"line_number":140,"context_line":"        raise exception.NotImplemented()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FVJQ%3D","side":"PARENT","line":137,"updated":"2013-01-28 19:14:15.000000000","message":"I\u0027m guessing this should be ProjectNotFound.","commit_id":"a0a64dbea12f54b9ea2b25dcc51cac4ecb5f0c09"}]}
