)]}'
{"keystone/common/sql/migrate_repo/versions/087_drop_project_domain_id_fk.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"7298542ba89e1fc7ebf36eac8132cce496db27bf","unresolved":false,"context_lines":[{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from keystone.common.sql import migration_helpers"},{"line_number":14,"context_line":"import sqlalchemy as sql"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"_PROJECT_TABLE_NAME \u003d \u0027project\u0027"},{"line_number":17,"context_line":"_DOMAIN_TABLE_NAME \u003d \u0027domain\u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a740942_311b711d","line":14,"updated":"2015-12-05 06:29:08.000000000","message":"change to:\n\n import sqlalchemy as sql\n\n from keystone.common.sql import migration_helpers","commit_id":"4eead62b8ac5ab9106b137112f2afe15d6b06990"}],"keystone/common/sql/migrate_repo/versions/089_drop_project_domain_id_fk.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"e345c57444e0a2b54817dcf25a934c1ec70cf2bf","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    meta \u003d sql.MetaData()"},{"line_number":36,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    migration_helpers.remove_constraints(old_constraint(migrate_engine))"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a68dd71_5ecd6c83","line":38,"updated":"2016-01-25 07:36:27.000000000","message":"the FK should remain and be remapped to project.id.\n\nLikely the easiest way to manage this is to insert a known id row \"__keystone_root_domain__\" and have that refer to itself as the domain_id. the driver can then just strip out/add in the special id for id\u003dNone as appropriate/on returns.\n\nThis comment is based on the convo i had with henrynash in IRC.","commit_id":"1c7ecfbae27cf3f64fcd3d3817f53cfdf71b277e"}],"keystone/resource/backends/sql.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"7298542ba89e1fc7ebf36eac8132cce496db27bf","unresolved":false,"context_lines":[{"line_number":250,"context_line":"                  \u0027parent_id\u0027, \u0027is_domain\u0027]"},{"line_number":251,"context_line":"    id \u003d sql.Column(sql.String(64), primary_key\u003dTrue)"},{"line_number":252,"context_line":"    name \u003d sql.Column(sql.String(64), nullable\u003dFalse)"},{"line_number":253,"context_line":"    domain_id \u003d sql.Column(sql.String(64), nullable\u003dTrue)"},{"line_number":254,"context_line":"    description \u003d sql.Column(sql.Text())"},{"line_number":255,"context_line":"    enabled \u003d sql.Column(sql.Boolean)"},{"line_number":256,"context_line":"    extra \u003d sql.Column(sql.JsonBlob())"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a740942_f1a169aa","line":253,"updated":"2015-12-05 06:29:08.000000000","message":"now that the domain table will be dropped, what is the point of keeping domain_id? where this field comes from?","commit_id":"4eead62b8ac5ab9106b137112f2afe15d6b06990"}],"keystone/tests/unit/test_sql_upgrade.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"7298542ba89e1fc7ebf36eac8132cce496db27bf","unresolved":false,"context_lines":[{"line_number":502,"context_line":"                return True"},{"line_number":503,"context_line":"        return False"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"    def does_reference_fk_exist(self, table, fk_column,"},{"line_number":506,"context_line":"                                referred_table, referred_columns):"},{"line_number":507,"context_line":"        inspector \u003d reflection.Inspector.from_engine(self.engine)"},{"line_number":508,"context_line":"        for fk in inspector.get_foreign_keys(table):"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a740942_519b9d72","line":505,"updated":"2015-12-05 06:29:08.000000000","message":"where this method used?","commit_id":"4eead62b8ac5ab9106b137112f2afe15d6b06990"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"7298542ba89e1fc7ebf36eac8132cce496db27bf","unresolved":false,"context_lines":[{"line_number":847,"context_line":"        other_project[\u0027id\u0027] \u003d uuid.uuid4().hex"},{"line_number":848,"context_line":"        self.insert_dict(session, \u0027project\u0027, other_project)"},{"line_number":849,"context_line":""},{"line_number":850,"context_line":"    def test_drop_domain_id_FK_project_table(self):"},{"line_number":851,"context_line":"        self.upgrade(87)"},{"line_number":852,"context_line":"        self.assertFalse(self.does_fk_exist(\u0027project\u0027, \u0027domain_id\u0027))"},{"line_number":853,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7a740942_717d791b","line":850,"updated":"2015-12-05 06:29:08.000000000","message":"assert that before upgrade that fk does exist.","commit_id":"4eead62b8ac5ab9106b137112f2afe15d6b06990"}]}
