)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3fd99762e85f85ccd9c49b692785fcde24c8e779","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Now that we can rely on flavor records having been migrated, we can"},{"line_number":36,"context_line":"remove the \u0027db migrate_flavor_data\u0027 nova-manage command. This will be"},{"line_number":37,"context_line":"done separately."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"When testing, the previous base version was 279. It is now 301."},{"line_number":40,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"929a4613_8cfae50c","line":37,"updated":"2021-02-02 16:58:02.000000000","message":"Turns out this was actually done in Ib5baf62b7bbe7e160d18284140c29bd078d53d3b","commit_id":"1da542ff7a9ebf4cb86ec607bb35b4d69d848f73"}],"nova/db/sqlalchemy/migrate_repo/versions/301_add_cpu_and_ram_ratios_for_compute_nodes.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7b2ad6b61d9bffbae04b8804065e1fcb05907b6a","unresolved":true,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    cn \u003d Table(\u0027compute_nodes\u0027, meta, autoload\u003dTrue)"},{"line_number":25,"context_line":"    shadow_cn \u003d Table(\u0027shadow_compute_nodes\u0027, meta, autoload\u003dTrue)"},{"line_number":26,"context_line":"    cn.create_column(Column(\u0027ram_allocation_ratio\u0027, Float, nullable\u003dTrue))"},{"line_number":27,"context_line":"    cn.create_column(Column(\u0027cpu_allocation_ratio\u0027, Float, nullable\u003dTrue))"},{"line_number":28,"context_line":"    shadow_cn.create_column(Column(\u0027ram_allocation_ratio\u0027, Float))"},{"line_number":29,"context_line":"    shadow_cn.create_column(Column(\u0027cpu_allocation_ratio\u0027, Float))"}],"source_content_type":"text/x-python","patch_set":6,"id":"58534b56_d5fd2b12","side":"PARENT","line":29,"range":{"start_line":26,"start_character":0,"end_line":29,"end_character":66},"updated":"2021-01-05 17:05:23.000000000","message":"interesting that we does not make the shadow columns nullable. Is this a bug? how can we archive a row from the compute_nodes table where these are nulls?","commit_id":"93b95201efdc26a26128d6f8fc4cb4b098780fcd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5da4540fc0ad66ee102412ebe662e8e17b7cfad3","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    cn \u003d Table(\u0027compute_nodes\u0027, meta, autoload\u003dTrue)"},{"line_number":25,"context_line":"    shadow_cn \u003d Table(\u0027shadow_compute_nodes\u0027, meta, autoload\u003dTrue)"},{"line_number":26,"context_line":"    cn.create_column(Column(\u0027ram_allocation_ratio\u0027, Float, nullable\u003dTrue))"},{"line_number":27,"context_line":"    cn.create_column(Column(\u0027cpu_allocation_ratio\u0027, Float, nullable\u003dTrue))"},{"line_number":28,"context_line":"    shadow_cn.create_column(Column(\u0027ram_allocation_ratio\u0027, Float))"},{"line_number":29,"context_line":"    shadow_cn.create_column(Column(\u0027cpu_allocation_ratio\u0027, Float))"}],"source_content_type":"text/x-python","patch_set":6,"id":"da91d501_93eeea02","side":"PARENT","line":29,"range":{"start_line":26,"start_character":0,"end_line":29,"end_character":66},"in_reply_to":"58534b56_d5fd2b12","updated":"2021-01-06 17:47:10.000000000","message":"Weirdly, the SQL dumps I\u0027m seeing for master are showing this field and nullable. I\u0027m going to guess that this datatype is nullable by default in MySQL, SQLite and PostgreSQL?","commit_id":"93b95201efdc26a26128d6f8fc4cb4b098780fcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"768569b335d06ac8db4cb899dcf98dea5c41aa70","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    cn \u003d Table(\u0027compute_nodes\u0027, meta, autoload\u003dTrue)"},{"line_number":25,"context_line":"    shadow_cn \u003d Table(\u0027shadow_compute_nodes\u0027, meta, autoload\u003dTrue)"},{"line_number":26,"context_line":"    cn.create_column(Column(\u0027ram_allocation_ratio\u0027, Float, nullable\u003dTrue))"},{"line_number":27,"context_line":"    cn.create_column(Column(\u0027cpu_allocation_ratio\u0027, Float, nullable\u003dTrue))"},{"line_number":28,"context_line":"    shadow_cn.create_column(Column(\u0027ram_allocation_ratio\u0027, Float))"},{"line_number":29,"context_line":"    shadow_cn.create_column(Column(\u0027cpu_allocation_ratio\u0027, Float))"}],"source_content_type":"text/x-python","patch_set":6,"id":"8aff51bb_75688096","side":"PARENT","line":29,"range":{"start_line":26,"start_character":0,"end_line":29,"end_character":66},"in_reply_to":"da91d501_93eeea02","updated":"2021-01-08 16:30:23.000000000","message":"fair, if the dump shows it is nullable then I guess we just made a non serious mistake originally here. The compacted migration make the implicit behavior explicit so that is even better.","commit_id":"93b95201efdc26a26128d6f8fc4cb4b098780fcd"}],"nova/db/sqlalchemy/migrate_repo/versions/302_liberty.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7b2ad6b61d9bffbae04b8804065e1fcb05907b6a","unresolved":true,"context_lines":[{"line_number":86,"context_line":"            ):"},{"line_number":87,"context_line":"                enum \u003d Enum("},{"line_number":88,"context_line":"                    \u0027migration\u0027, \u0027resize\u0027, \u0027live-migration\u0027, \u0027evacuation\u0027,"},{"line_number":89,"context_line":"                    name\u003d\u0027shadow_migration_type\u0027)"},{"line_number":90,"context_line":"                column_copy \u003d Column(column.name, enum)"},{"line_number":91,"context_line":"            else:"},{"line_number":92,"context_line":"                column_copy \u003d column.copy()"}],"source_content_type":"text/x-python","patch_set":6,"id":"db8408f6_632e73aa","line":89,"range":{"start_line":89,"start_character":26,"end_line":89,"end_character":47},"updated":"2021-01-05 17:05:23.000000000","message":"Is it intentional to have two different enum type one for the normal table and another for the shadow table? Are the values still compatible between the tables?","commit_id":"ec52f9428668873f1ae4d1dddec09339d95b2ab2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5da4540fc0ad66ee102412ebe662e8e17b7cfad3","unresolved":true,"context_lines":[{"line_number":86,"context_line":"            ):"},{"line_number":87,"context_line":"                enum \u003d Enum("},{"line_number":88,"context_line":"                    \u0027migration\u0027, \u0027resize\u0027, \u0027live-migration\u0027, \u0027evacuation\u0027,"},{"line_number":89,"context_line":"                    name\u003d\u0027shadow_migration_type\u0027)"},{"line_number":90,"context_line":"                column_copy \u003d Column(column.name, enum)"},{"line_number":91,"context_line":"            else:"},{"line_number":92,"context_line":"                column_copy \u003d column.copy()"}],"source_content_type":"text/x-python","patch_set":6,"id":"d66ef7b6_e1987300","line":89,"range":{"start_line":89,"start_character":26,"end_line":89,"end_character":47},"in_reply_to":"db8408f6_632e73aa","updated":"2021-01-06 17:47:10.000000000","message":"This is needed for the same reason as [1]. However, as noted at [1], this results in a different output:\n\n    --- 279-postgres.sql    2021-01-06 15:17:23.849881339 +0000\n    +++ 301-postgres.sql    2021-01-06 15:18:38.278655642 +0000\n    @@ -78,6 +78,20 @@\n\n     ALTER TYPE public.shadow_keypair_types OWNER TO nova;\n\n    +--\n    +-- Name: shadow_migration_type; Type: TYPE; Schema: public; Owner: nova\n    +--\n    +\n    +CREATE TYPE public.shadow_migration_type AS ENUM (\n    +    \u0027migration\u0027,\n    +    \u0027resize\u0027,\n    +    \u0027live-migration\u0027,\n    +    \u0027evacuation\u0027\n    +);\n    +\n    +\n    +ALTER TYPE public.shadow_migration_type OWNER TO nova;\n    +\n     SET default_tablespace \u003d \u0027\u0027;\n\n     SET default_table_access_method \u003d heap;\n    @@ -3597,7 +3611,7 @@\n         source_node character varying(255),\n         dest_node character varying(255),\n         deleted integer,\n    -    migration_type public.migration_type,\n    +    migration_type public.shadow_migration_type,\n         hidden boolean,\n         memory_total bigint,\n         memory_processed bigint,\n\nWhatever fix I come up with there will work here too.\n\n[1] https://review.opendev.org/c/openstack/nova/+/758396/6/nova/db/sqlalchemy/migrate_repo/versions/280_kilo.py#83","commit_id":"ec52f9428668873f1ae4d1dddec09339d95b2ab2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7b2ad6b61d9bffbae04b8804065e1fcb05907b6a","unresolved":true,"context_lines":[{"line_number":87,"context_line":"                enum \u003d Enum("},{"line_number":88,"context_line":"                    \u0027migration\u0027, \u0027resize\u0027, \u0027live-migration\u0027, \u0027evacuation\u0027,"},{"line_number":89,"context_line":"                    name\u003d\u0027shadow_migration_type\u0027)"},{"line_number":90,"context_line":"                column_copy \u003d Column(column.name, enum)"},{"line_number":91,"context_line":"            else:"},{"line_number":92,"context_line":"                column_copy \u003d column.copy()"},{"line_number":93,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"2418559f_2cc0f06b","line":90,"updated":"2021-01-05 17:05:23.000000000","message":"It is now not nullable while it was nullable in 293","commit_id":"ec52f9428668873f1ae4d1dddec09339d95b2ab2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7b2ad6b61d9bffbae04b8804065e1fcb05907b6a","unresolved":true,"context_lines":[{"line_number":279,"context_line":"        Column(\u0027stats\u0027, Text, default\u003d\u0027{}\u0027),"},{"line_number":280,"context_line":"        Column(\u0027numa_topology\u0027, Text, nullable\u003dTrue),"},{"line_number":281,"context_line":"        Column(\u0027host\u0027, String(255), nullable\u003dTrue),"},{"line_number":282,"context_line":"        Column(\u0027ram_allocation_ratio\u0027, Float, nullable\u003dTrue),"},{"line_number":283,"context_line":"        Column(\u0027cpu_allocation_ratio\u0027, Float, nullable\u003dTrue),"},{"line_number":284,"context_line":"        UniqueConstraint("},{"line_number":285,"context_line":"            \u0027host\u0027, \u0027hypervisor_hostname\u0027, \u0027deleted\u0027,"},{"line_number":286,"context_line":"            name\u003d\u0027uniq_compute_nodes0host0hypervisor_hostname0deleted\u0027,"},{"line_number":287,"context_line":"        ),"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f9e1929_3544e493","line":284,"range":{"start_line":282,"start_character":0,"end_line":284,"end_character":1},"updated":"2021-01-05 17:05:23.000000000","message":"now these are nullable both in normal and in shadow table but 301 only made the normal column nullable. are we fixing a bug here?","commit_id":"ec52f9428668873f1ae4d1dddec09339d95b2ab2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"768569b335d06ac8db4cb899dcf98dea5c41aa70","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        Column(\u0027stats\u0027, Text, default\u003d\u0027{}\u0027),"},{"line_number":280,"context_line":"        Column(\u0027numa_topology\u0027, Text, nullable\u003dTrue),"},{"line_number":281,"context_line":"        Column(\u0027host\u0027, String(255), nullable\u003dTrue),"},{"line_number":282,"context_line":"        Column(\u0027ram_allocation_ratio\u0027, Float, nullable\u003dTrue),"},{"line_number":283,"context_line":"        Column(\u0027cpu_allocation_ratio\u0027, Float, nullable\u003dTrue),"},{"line_number":284,"context_line":"        UniqueConstraint("},{"line_number":285,"context_line":"            \u0027host\u0027, \u0027hypervisor_hostname\u0027, \u0027deleted\u0027,"},{"line_number":286,"context_line":"            name\u003d\u0027uniq_compute_nodes0host0hypervisor_hostname0deleted\u0027,"},{"line_number":287,"context_line":"        ),"}],"source_content_type":"text/x-python","patch_set":6,"id":"159ff557_0a534441","line":284,"range":{"start_line":282,"start_character":0,"end_line":284,"end_character":1},"in_reply_to":"025310ea_6c5553ef","updated":"2021-01-08 16:30:23.000000000","message":"ack, I\u0027m OK making this behavior explict","commit_id":"ec52f9428668873f1ae4d1dddec09339d95b2ab2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5da4540fc0ad66ee102412ebe662e8e17b7cfad3","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        Column(\u0027stats\u0027, Text, default\u003d\u0027{}\u0027),"},{"line_number":280,"context_line":"        Column(\u0027numa_topology\u0027, Text, nullable\u003dTrue),"},{"line_number":281,"context_line":"        Column(\u0027host\u0027, String(255), nullable\u003dTrue),"},{"line_number":282,"context_line":"        Column(\u0027ram_allocation_ratio\u0027, Float, nullable\u003dTrue),"},{"line_number":283,"context_line":"        Column(\u0027cpu_allocation_ratio\u0027, Float, nullable\u003dTrue),"},{"line_number":284,"context_line":"        UniqueConstraint("},{"line_number":285,"context_line":"            \u0027host\u0027, \u0027hypervisor_hostname\u0027, \u0027deleted\u0027,"},{"line_number":286,"context_line":"            name\u003d\u0027uniq_compute_nodes0host0hypervisor_hostname0deleted\u0027,"},{"line_number":287,"context_line":"        ),"}],"source_content_type":"text/x-python","patch_set":6,"id":"025310ea_6c5553ef","line":284,"range":{"start_line":282,"start_character":0,"end_line":284,"end_character":1},"in_reply_to":"5f9e1929_3544e493","updated":"2021-01-06 17:47:10.000000000","message":"See [1]\n\n[1] https://review.opendev.org/c/openstack/nova/+/758397/6/nova/db/sqlalchemy/migrate_repo/versions/301_add_cpu_and_ram_ratios_for_compute_nodes.py#b29","commit_id":"ec52f9428668873f1ae4d1dddec09339d95b2ab2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7b2ad6b61d9bffbae04b8804065e1fcb05907b6a","unresolved":true,"context_lines":[{"line_number":1226,"context_line":"              instance_metadata.c.instance_uuid),"},{"line_number":1227,"context_line":""},{"line_number":1228,"context_line":"        # instance_system_metadata"},{"line_number":1229,"context_line":"        Index(\u0027instance_uuid\u0027, instance_system_metadata.c.instance_uuid),"},{"line_number":1230,"context_line":""},{"line_number":1231,"context_line":"        # instance_type_extra_specs"},{"line_number":1232,"context_line":"        Index(\u0027instance_type_extra_specs_instance_type_id_key_idx\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"bdf02b9a_2590b95e","line":1229,"updated":"2021-01-05 17:05:23.000000000","message":"not to the future reader this is coming from old 302 migration that is _after_ the new 302 in the gerrit file list. (I lost couple of minutes trying to find the source of it in the review)","commit_id":"ec52f9428668873f1ae4d1dddec09339d95b2ab2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5da4540fc0ad66ee102412ebe662e8e17b7cfad3","unresolved":false,"context_lines":[{"line_number":1226,"context_line":"              instance_metadata.c.instance_uuid),"},{"line_number":1227,"context_line":""},{"line_number":1228,"context_line":"        # instance_system_metadata"},{"line_number":1229,"context_line":"        Index(\u0027instance_uuid\u0027, instance_system_metadata.c.instance_uuid),"},{"line_number":1230,"context_line":""},{"line_number":1231,"context_line":"        # instance_type_extra_specs"},{"line_number":1232,"context_line":"        Index(\u0027instance_type_extra_specs_instance_type_id_key_idx\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7ee4185d_c1c6122d","line":1229,"in_reply_to":"bdf02b9a_2590b95e","updated":"2021-01-06 17:47:10.000000000","message":"Ack","commit_id":"ec52f9428668873f1ae4d1dddec09339d95b2ab2"}],"nova/tests/unit/db/test_migrations.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7b2ad6b61d9bffbae04b8804065e1fcb05907b6a","unresolved":true,"context_lines":[{"line_number":226,"context_line":"            # DB at a later release."},{"line_number":227,"context_line":"            # NOTE(Luyao) The vpmems column was added to the schema in train,"},{"line_number":228,"context_line":"            # and removed from the model in train."},{"line_number":229,"context_line":"            column_whitelist \u003d {"},{"line_number":230,"context_line":"                \u0027instances\u0027: [\u0027internal_id\u0027],"},{"line_number":231,"context_line":"                \u0027instance_extra\u0027: [\u0027vpmems\u0027],"},{"line_number":232,"context_line":"            }"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"            if element[0] !\u003d \u0027remove_column\u0027:"},{"line_number":235,"context_line":"                return False"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"            table_name, column \u003d element[2], element[3]"},{"line_number":238,"context_line":"            return ("},{"line_number":239,"context_line":"                table_name in column_whitelist and"},{"line_number":240,"context_line":"                column.name in column_whitelist[table_name]"},{"line_number":241,"context_line":"            )"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        return [element for element in diff if not removed_column(element)]"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    def test_walk_versions(self):"},{"line_number":246,"context_line":"        self.walk_versions(snake_walk\u003dFalse, downgrade\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":6,"id":"4e547f8d_a0fa31b0","line":243,"range":{"start_line":229,"start_character":2,"end_line":243,"end_character":75},"updated":"2021-01-05 17:05:23.000000000","message":"as far as I see it is pure reformatting","commit_id":"ec52f9428668873f1ae4d1dddec09339d95b2ab2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5da4540fc0ad66ee102412ebe662e8e17b7cfad3","unresolved":false,"context_lines":[{"line_number":226,"context_line":"            # DB at a later release."},{"line_number":227,"context_line":"            # NOTE(Luyao) The vpmems column was added to the schema in train,"},{"line_number":228,"context_line":"            # and removed from the model in train."},{"line_number":229,"context_line":"            column_whitelist \u003d {"},{"line_number":230,"context_line":"                \u0027instances\u0027: [\u0027internal_id\u0027],"},{"line_number":231,"context_line":"                \u0027instance_extra\u0027: [\u0027vpmems\u0027],"},{"line_number":232,"context_line":"            }"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"            if element[0] !\u003d \u0027remove_column\u0027:"},{"line_number":235,"context_line":"                return False"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"            table_name, column \u003d element[2], element[3]"},{"line_number":238,"context_line":"            return ("},{"line_number":239,"context_line":"                table_name in column_whitelist and"},{"line_number":240,"context_line":"                column.name in column_whitelist[table_name]"},{"line_number":241,"context_line":"            )"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        return [element for element in diff if not removed_column(element)]"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    def test_walk_versions(self):"},{"line_number":246,"context_line":"        self.walk_versions(snake_walk\u003dFalse, downgrade\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":6,"id":"adfcf293_76477b79","line":243,"range":{"start_line":229,"start_character":2,"end_line":243,"end_character":75},"in_reply_to":"4e547f8d_a0fa31b0","updated":"2021-01-06 17:47:10.000000000","message":"Hmm, not sure why this got stuck in here...","commit_id":"ec52f9428668873f1ae4d1dddec09339d95b2ab2"}]}
