)]}'
{"keystone/contrib/ec2/core.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"532eb87b8f2b606093f9edec379310363ad99f6f","unresolved":false,"context_lines":[{"line_number":334,"context_line":"        \"\"\"Ensure a valid tenant id."},{"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":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FVO8%3D","line":337,"updated":"2013-01-28 18:42:52.000000000","message":"parameter is tenant_id","commit_id":"a0a64dbea12f54b9ea2b25dcc51cac4ecb5f0c09"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"532eb87b8f2b606093f9edec379310363ad99f6f","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_tenant("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FVPI%3D","line":338,"updated":"2013-01-28 18:42:52.000000000","message":"raises ProjectNotFound","commit_id":"a0a64dbea12f54b9ea2b25dcc51cac4ecb5f0c09"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"fddd47a7b7627012f835ec51203895a355b2288d","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_tenant("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FVHg%3D","line":338,"in_reply_to":"AAAAM3%2F%2FVPI%3D","updated":"2013-01-28 19:29:55.000000000","message":"Good catch","commit_id":"a0a64dbea12f54b9ea2b25dcc51cac4ecb5f0c09"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"532eb87b8f2b606093f9edec379310363ad99f6f","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":2,"id":"AAAAM3%2F%2FVOE%3D","line":345,"updated":"2013-01-28 18:42:52.000000000","message":"ProjectNotFound expects project_id parameter, not tenant_id.","commit_id":"a0a64dbea12f54b9ea2b25dcc51cac4ecb5f0c09"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"fddd47a7b7627012f835ec51203895a355b2288d","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":2,"id":"AAAAM3%2F%2FVHk%3D","line":345,"in_reply_to":"AAAAM3%2F%2FVOE%3D","updated":"2013-01-28 19:29:55.000000000","message":"Correct.  We are changing over from Tenant to Project, but we cannot break the existing APIs.  Thus, while we accept tenantId, and will do so for a while, the exception is ProjectNotFound.","commit_id":"a0a64dbea12f54b9ea2b25dcc51cac4ecb5f0c09"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5a0eb9f1be82d35222bfb4adf929720f68ad61c6","unresolved":false,"context_lines":[{"line_number":334,"context_line":"        \"\"\"Ensure a valid tenant id."},{"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.ProjectNotFound: on failure"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FVDI%3D","line":337,"updated":"2013-01-28 20:06:04.000000000","message":"The parameter to this function is tenant_id and not user_id, so this line should be tenant_id and not user_id.","commit_id":"2d7d8afb97baaa0c4e0c577e5a52d6f055fc3b07"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5a0eb9f1be82d35222bfb4adf929720f68ad61c6","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":3,"id":"AAAAM3%2F%2FVDQ%3D","line":345,"updated":"2013-01-28 20:06:04.000000000","message":"comment I was trying to make was that the tenant_id named parameter should be project_id.\n\nraise exception.ProjectNotFound(tenant_id\u003dtenant_id)\n-\u003e\nraise exception.ProjectNotFound(project_id\u003dtenant_id)\n\nBecause the ProjectNotFound text has %(project_id)s","commit_id":"2d7d8afb97baaa0c4e0c577e5a52d6f055fc3b07"}],"keystone/exception.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"e80a8568d13bdef6fad68fb733118309a81ca1c8","unresolved":false,"context_lines":[{"line_number":143,"context_line":"    \"\"\"Could not find domain: %(domain_id)s\"\"\""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"class ProjectNotFound(NotFound):"},{"line_number":147,"context_line":"    \"\"\"Could not find project: %(project_id)s\"\"\""},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FUo4%3D","line":146,"updated":"2013-01-29 00:38:38.000000000","message":"TenantNotFound is still relevant in v2 right? Is this error message ever returned to the v2 clients? If so, we may want to keep it around till v2 is deprecated?","commit_id":"31660b119eb3ff3ec637a63813a0f0ca95ba34f9"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"29aa68894c054a09990e5c72a2ca61e23dc9bbd0","unresolved":false,"context_lines":[{"line_number":143,"context_line":"    \"\"\"Could not find domain: %(domain_id)s\"\"\""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"class ProjectNotFound(NotFound):"},{"line_number":147,"context_line":"    \"\"\"Could not find project: %(project_id)s\"\"\""},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FTh0%3D","line":146,"in_reply_to":"AAAAM3%2F%2FUo4%3D","updated":"2013-01-29 17:45:09.000000000","message":"the only difference is the terminology returned in error messages, \u0027tenant\u0027 vs \u0027project\u0027. Considering that it\u0027s an error message that\u0027s not machine readable, I\u0027m fine with changing it for v2.","commit_id":"31660b119eb3ff3ec637a63813a0f0ca95ba34f9"}],"keystone/identity/backends/ldap/core.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5a0eb9f1be82d35222bfb4adf929720f68ad61c6","unresolved":false,"context_lines":[{"line_number":1039,"context_line":"    def delete(self, id):"},{"line_number":1040,"context_line":"        conn \u003d self.get_connection()"},{"line_number":1041,"context_line":"        query \u003d \u0027(\u0026(objectClass\u003d%s)(%s\u003d%s))\u0027 % (self.object_class,"},{"line_number":1042,"context_line":"                                                self.id_attr, id)"},{"line_number":1043,"context_line":"        tenant_dn \u003d self.project_api.tree_dn"},{"line_number":1044,"context_line":"        try:"},{"line_number":1045,"context_line":"            for role_dn, _ in conn.search_s(tenant_dn,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FVC4%3D","line":1042,"updated":"2013-01-28 20:06:04.000000000","message":"this change seems unrelated.","commit_id":"2d7d8afb97baaa0c4e0c577e5a52d6f055fc3b07"}],"keystone/identity/backends/sql.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"e80a8568d13bdef6fad68fb733118309a81ca1c8","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    extra \u003d sql.Column(sql.JsonBlob())"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"# TODO(dolph): rename to Project"},{"line_number":82,"context_line":"class Project(sql.ModelBase, sql.DictBase):"},{"line_number":83,"context_line":"    __tablename__ \u003d \u0027project\u0027"},{"line_number":84,"context_line":"    attributes \u003d [\u0027id\u0027, \u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FUoY%3D","line":81,"updated":"2013-01-29 00:38:38.000000000","message":"May want to remove the TODO comments as it is no longer relevant.","commit_id":"31660b119eb3ff3ec637a63813a0f0ca95ba34f9"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"29aa68894c054a09990e5c72a2ca61e23dc9bbd0","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    extra \u003d sql.Column(sql.JsonBlob())"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"# TODO(dolph): rename to Project"},{"line_number":82,"context_line":"class Project(sql.ModelBase, sql.DictBase):"},{"line_number":83,"context_line":"    __tablename__ \u003d \u0027project\u0027"},{"line_number":84,"context_line":"    attributes \u003d [\u0027id\u0027, \u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FThw%3D","line":81,"in_reply_to":"AAAAM3%2F%2FUoY%3D","updated":"2013-01-29 17:45:09.000000000","message":"+1","commit_id":"31660b119eb3ff3ec637a63813a0f0ca95ba34f9"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"e80a8568d13bdef6fad68fb733118309a81ca1c8","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"# TODO(dolph): ... do we need this table?"},{"line_number":141,"context_line":"class UserProjectMembership(sql.ModelBase, sql.DictBase):"},{"line_number":142,"context_line":"    \"\"\"Project membership join table.\"\"\""},{"line_number":143,"context_line":"    __tablename__ \u003d \u0027user_project_membership\u0027"},{"line_number":144,"context_line":"    user_id \u003d sql.Column(sql.String(64),"},{"line_number":145,"context_line":"                         sql.ForeignKey(\u0027user.id\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FUn4%3D","line":142,"updated":"2013-01-29 00:38:38.000000000","message":"This table is needed for v2 but not v3, no? If only for v2, then no need to rename.","commit_id":"31660b119eb3ff3ec637a63813a0f0ca95ba34f9"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"29aa68894c054a09990e5c72a2ca61e23dc9bbd0","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"# TODO(dolph): ... do we need this table?"},{"line_number":141,"context_line":"class UserProjectMembership(sql.ModelBase, sql.DictBase):"},{"line_number":142,"context_line":"    \"\"\"Project membership join table.\"\"\""},{"line_number":143,"context_line":"    __tablename__ \u003d \u0027user_project_membership\u0027"},{"line_number":144,"context_line":"    user_id \u003d sql.Column(sql.String(64),"},{"line_number":145,"context_line":"                         sql.ForeignKey(\u0027user.id\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FTho%3D","line":142,"in_reply_to":"AAAAM3%2F%2FUn4%3D","updated":"2013-01-29 17:45:09.000000000","message":"actual table name has already changed, and we need to get the data *out* of that table so that we can reflect that data in v3","commit_id":"31660b119eb3ff3ec637a63813a0f0ca95ba34f9"}],"keystone/identity/controllers.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2736500a6d45b732ed1fc2bf70d8f07f27ea7e9a","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        tenant_id \u003d user.get(\u0027tenantId\u0027, None)"},{"line_number":179,"context_line":"        if (tenant_id is not None"},{"line_number":180,"context_line":"                and self.identity_api.get_tenant(context, tenant_id) is None):"},{"line_number":181,"context_line":"            raise exception.ProjectNotFound(tenant_id\u003dtenant_id)"},{"line_number":182,"context_line":"        user_id \u003d uuid.uuid4().hex"},{"line_number":183,"context_line":"        user_ref \u003d user.copy()"},{"line_number":184,"context_line":"        user_ref[\u0027id\u0027] \u003d user_id"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FU90%3D","line":181,"updated":"2013-01-28 21:13:13.000000000","message":"here\u0027s another place where should be project_id\u003dtenant_id rather than tenant_id\u003dtenant_id","commit_id":"4892c5c806177d3d239e50f4126aece8714acf67"}]}
