)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"fa12218ea9eafb4956734810993b29be581e8620","unresolved":false,"context_lines":[{"line_number":7,"context_line":"db: Add resources column in instance_extra table"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change adds a resources deferred-load column to instance_extra,"},{"line_number":10,"context_line":"which will stores a list of resources for a given instance in the"},{"line_number":11,"context_line":"form of a JSON blob."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I26d1fa8d0dc2fdf066f3a7017a74cda679d3efa1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7faddb67_684650c3","line":10,"range":{"start_line":10,"start_character":11,"end_line":10,"end_character":17},"updated":"2019-08-28 22:43:23.000000000","message":"store","commit_id":"189328088cd1212a908d5575bd624b2560d77bd0"}],"nova/db/sqlalchemy/migrate_repo/versions/398_add_resources.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2656a328281ca5a061e2d044c659f02db08c4cd8","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"BASE_TABLE_NAME \u003d \u0027instance_extra\u0027"},{"line_number":20,"context_line":"NEW_COLUMN_NAME \u003d \u0027resources\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def upgrade(migrate_engine):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_e11e1673","line":20,"updated":"2019-08-26 09:26:49.000000000","message":"I don\u0027t think you can change the existing one, we probably late on delete the vpmem upgrade script. We should use a new number, and remove the vpmem column and add the new one.","commit_id":"13b5a7e503332d124c77abf7d90fffc0f7165dec"},{"author":{"_account_id":23598,"name":"Zhong Luyao","email":"luyao.zhong@intel.com","username":"ZhongLuyao"},"change_message_id":"88ec4b643bd4ade11b6538bc80f2fdf178db7285","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"BASE_TABLE_NAME \u003d \u0027instance_extra\u0027"},{"line_number":20,"context_line":"NEW_COLUMN_NAME \u003d \u0027resources\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def upgrade(migrate_engine):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_4306fc23","line":20,"in_reply_to":"7faddb67_e11e1673","updated":"2019-08-27 09:50:22.000000000","message":"Done","commit_id":"13b5a7e503332d124c77abf7d90fffc0f7165dec"}],"nova/db/sqlalchemy/migrate_repo/versions/401_add_resources.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"218cee1fa2a224d4a8644f17ba45ffbf0ccd36db","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        table \u003d Table(prefix + BASE_TABLE_NAME, meta, autoload\u003dTrue)"},{"line_number":30,"context_line":"        new_column \u003d Column(NEW_COLUMN_NAME, Text, nullable\u003dTrue)"},{"line_number":31,"context_line":"        if hasattr(table.c, OLD_COLUMN_NAME):"},{"line_number":32,"context_line":"            table.drop_column(table.c[OLD_COLUMN_NAME])"},{"line_number":33,"context_line":"        if not hasattr(table.c, NEW_COLUMN_NAME):"},{"line_number":34,"context_line":"            table.create_column(new_column)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_12b0df3f","line":32,"updated":"2019-09-03 18:13:52.000000000","message":"So, I may have led you astray in our earlier discussion about this because I was papering over some of the details.\n\nYou can\u0027t actually drop this because if you apply these schema updates to a cloud before rolling the subsequent code, the old models will generate queries that no longer have valid column names. So, just leave that one there, mark it in the model for deprecation and then you can remove it from our models and exempt it from the synchronization checks.","commit_id":"27bcc47bc765772eca365fbf2f9c6e0877a93fac"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"7f7c032f43038b95dca4a27a667ac1f9afbb4bca","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        table \u003d Table(prefix + BASE_TABLE_NAME, meta, autoload\u003dTrue)"},{"line_number":30,"context_line":"        new_column \u003d Column(NEW_COLUMN_NAME, Text, nullable\u003dTrue)"},{"line_number":31,"context_line":"        if hasattr(table.c, OLD_COLUMN_NAME):"},{"line_number":32,"context_line":"            table.drop_column(table.c[OLD_COLUMN_NAME])"},{"line_number":33,"context_line":"        if not hasattr(table.c, NEW_COLUMN_NAME):"},{"line_number":34,"context_line":"            table.create_column(new_column)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_fecf0925","line":32,"in_reply_to":"7faddb67_12b0df3f","updated":"2019-09-04 04:33:46.000000000","message":"Emm..not sure I understand correctly. So we should just leave that field at here. And remove it from the model.py. And we can drop that column in next release?","commit_id":"27bcc47bc765772eca365fbf2f9c6e0877a93fac"},{"author":{"_account_id":23598,"name":"Zhong Luyao","email":"luyao.zhong@intel.com","username":"ZhongLuyao"},"change_message_id":"6c95d789476eb248fb46e4c55e198d1c9f6996a5","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        table \u003d Table(prefix + BASE_TABLE_NAME, meta, autoload\u003dTrue)"},{"line_number":30,"context_line":"        new_column \u003d Column(NEW_COLUMN_NAME, Text, nullable\u003dTrue)"},{"line_number":31,"context_line":"        if hasattr(table.c, OLD_COLUMN_NAME):"},{"line_number":32,"context_line":"            table.drop_column(table.c[OLD_COLUMN_NAME])"},{"line_number":33,"context_line":"        if not hasattr(table.c, NEW_COLUMN_NAME):"},{"line_number":34,"context_line":"            table.create_column(new_column)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_59a18ca8","line":32,"in_reply_to":"7faddb67_bb275812","updated":"2019-09-04 15:00:15.000000000","message":"Done","commit_id":"27bcc47bc765772eca365fbf2f9c6e0877a93fac"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2983f1ad12d2fb6edc892357cb59893dde3cadaf","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        table \u003d Table(prefix + BASE_TABLE_NAME, meta, autoload\u003dTrue)"},{"line_number":30,"context_line":"        new_column \u003d Column(NEW_COLUMN_NAME, Text, nullable\u003dTrue)"},{"line_number":31,"context_line":"        if hasattr(table.c, OLD_COLUMN_NAME):"},{"line_number":32,"context_line":"            table.drop_column(table.c[OLD_COLUMN_NAME])"},{"line_number":33,"context_line":"        if not hasattr(table.c, NEW_COLUMN_NAME):"},{"line_number":34,"context_line":"            table.create_column(new_column)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_fee8697b","line":32,"in_reply_to":"7faddb67_fecf0925","updated":"2019-09-04 04:36:43.000000000","message":"I got an example here https://review.opendev.org/#/c/377950/","commit_id":"27bcc47bc765772eca365fbf2f9c6e0877a93fac"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f79bef0ddad0612d3200d99789cc6e403f7c0201","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        table \u003d Table(prefix + BASE_TABLE_NAME, meta, autoload\u003dTrue)"},{"line_number":30,"context_line":"        new_column \u003d Column(NEW_COLUMN_NAME, Text, nullable\u003dTrue)"},{"line_number":31,"context_line":"        if hasattr(table.c, OLD_COLUMN_NAME):"},{"line_number":32,"context_line":"            table.drop_column(table.c[OLD_COLUMN_NAME])"},{"line_number":33,"context_line":"        if not hasattr(table.c, NEW_COLUMN_NAME):"},{"line_number":34,"context_line":"            table.create_column(new_column)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_bb275812","line":32,"in_reply_to":"7faddb67_fee8697b","updated":"2019-09-04 13:53:38.000000000","message":"Yep, this is the only example in modern times, AFAIK, so follow that.","commit_id":"27bcc47bc765772eca365fbf2f9c6e0877a93fac"}],"nova/tests/unit/db/test_migrations.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3e80a274c3ffe89c68e0317bd7945cb6c0a4a40c","unresolved":false,"context_lines":[{"line_number":789,"context_line":"            # Define a whitelist of columns that would be removed from the"},{"line_number":790,"context_line":"            # DB at a later release."},{"line_number":791,"context_line":"            column_whitelist \u003d {\u0027instances\u0027: [\u0027internal_id\u0027],"},{"line_number":792,"context_line":"                                \u0027instance_extra\u0027: [\u0027vpmems\u0027]}"},{"line_number":793,"context_line":""},{"line_number":794,"context_line":"            if element[0] !\u003d \u0027remove_column\u0027:"},{"line_number":795,"context_line":"                return False"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_b120be9b","line":792,"updated":"2019-09-05 13:44:23.000000000","message":"I would put a comment here that says something like:\n\n # The vpmems column was added to the schema in train and\n # removed from the model in train.\n\nJust so we have an easier record of when it was removed so that we can schedule a schema deletion.","commit_id":"b1a6d5fc1950d85298abdbd9988c22e4ccc6a376"},{"author":{"_account_id":23598,"name":"Zhong Luyao","email":"luyao.zhong@intel.com","username":"ZhongLuyao"},"change_message_id":"511a09072716cbceceff6a70bf6a0b39cfeef52c","unresolved":false,"context_lines":[{"line_number":789,"context_line":"            # Define a whitelist of columns that would be removed from the"},{"line_number":790,"context_line":"            # DB at a later release."},{"line_number":791,"context_line":"            column_whitelist \u003d {\u0027instances\u0027: [\u0027internal_id\u0027],"},{"line_number":792,"context_line":"                                \u0027instance_extra\u0027: [\u0027vpmems\u0027]}"},{"line_number":793,"context_line":""},{"line_number":794,"context_line":"            if element[0] !\u003d \u0027remove_column\u0027:"},{"line_number":795,"context_line":"                return False"}],"source_content_type":"text/x-python","patch_set":10,"id":"5faad753_6e2fa3f6","line":792,"in_reply_to":"7faddb67_b120be9b","updated":"2019-09-06 10:19:29.000000000","message":"Done","commit_id":"b1a6d5fc1950d85298abdbd9988c22e4ccc6a376"}]}
