)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e903797a006da82334cd6b34fd8ae13078d43065","unresolved":false,"context_lines":[{"line_number":10,"context_line":"constants to reference. Do just that."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Note that this results in a change in the object hash. However, there"},{"line_number":13,"context_line":"are no actual changes in the output object so that\u0027s okay."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: If02567ce0a3431dda5b2bf6d398bbf7cc954eed0"},{"line_number":16,"context_line":"Signed-off-by: Stephen Finucane \u003csfinucan@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"bf51134e_c8616607","line":13,"updated":"2020-06-29 14:52:47.000000000","message":"Yup, the serialized object wouldn\u0027t change","commit_id":"f203da383871aea195fd5a03ac3b5544176344cb"}],"nova/api/openstack/compute/migrations.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e903797a006da82334cd6b34fd8ae13078d43065","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            # live-migration."},{"line_number":76,"context_line":"            if (add_link and"},{"line_number":77,"context_line":"                    obj[\u0027migration_type\u0027] \u003d\u003d"},{"line_number":78,"context_line":"                        fields.MigrationType.LIVE_MIGRATION and"},{"line_number":79,"context_line":"                    obj[\"status\"] in live_migration_in_progress):"},{"line_number":80,"context_line":"                obj[\"links\"] \u003d self._view_builder._get_links("},{"line_number":81,"context_line":"                    req, obj[\"id\"],"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf51134e_28510237","line":78,"updated":"2020-06-29 14:52:47.000000000","message":"way better here indeed","commit_id":"f203da383871aea195fd5a03ac3b5544176344cb"}],"nova/compute/claims.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e903797a006da82334cd6b34fd8ae13078d43065","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        \"\"\""},{"line_number":197,"context_line":"        if not self.migration.is_live_migration:"},{"line_number":198,"context_line":"            return super(MoveClaim, self)._test_pci()"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        if self._pci_requests.requests:"},{"line_number":201,"context_line":"            for pci_request in self._pci_requests.requests:"},{"line_number":202,"context_line":"                if (pci_request.source !\u003d"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf51134e_a85cf24a","line":199,"updated":"2020-06-29 14:52:47.000000000","message":"unnecessary change but I like it.","commit_id":"f203da383871aea195fd5a03ac3b5544176344cb"}],"nova/compute/manager.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0558fb9afdd03df186fd8cbb9f7583b722389f3d","unresolved":false,"context_lines":[{"line_number":730,"context_line":"            # the user can rebuild the instance (in ERROR state) on the source"},{"line_number":731,"context_line":"            # host."},{"line_number":732,"context_line":"            \u0027status\u0027: [\u0027accepted\u0027, \u0027pre-migrating\u0027, \u0027done\u0027],"},{"line_number":733,"context_line":"            \u0027migration_type\u0027: \u0027evacuation\u0027,"},{"line_number":734,"context_line":"        }"},{"line_number":735,"context_line":"        with utils.temporary_mutation(context, read_deleted\u003d\u0027yes\u0027):"},{"line_number":736,"context_line":"            evacuations \u003d objects.MigrationList.get_by_filters(context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_34e0c3cb","line":733,"updated":"2020-02-05 17:49:27.000000000","message":"Presumably this should use the constant? What about all the places where evacuation is used? Seems like you only hit up live-migration and resize...","commit_id":"6991575cacdd0c272fefc8d6905a00d1df993ced"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"345c6a63375abf45ce8d713e48d272ccc4b5b345","unresolved":false,"context_lines":[{"line_number":730,"context_line":"            # the user can rebuild the instance (in ERROR state) on the source"},{"line_number":731,"context_line":"            # host."},{"line_number":732,"context_line":"            \u0027status\u0027: [\u0027accepted\u0027, \u0027pre-migrating\u0027, \u0027done\u0027],"},{"line_number":733,"context_line":"            \u0027migration_type\u0027: \u0027evacuation\u0027,"},{"line_number":734,"context_line":"        }"},{"line_number":735,"context_line":"        with utils.temporary_mutation(context, read_deleted\u003d\u0027yes\u0027):"},{"line_number":736,"context_line":"            evacuations \u003d objects.MigrationList.get_by_filters(context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_a25ea411","line":733,"in_reply_to":"3fa7e38b_34e0c3cb","updated":"2020-02-06 16:23:48.000000000","message":"Good point. Wanted to make sure the idea was sound before I went full throttle. Done now.","commit_id":"6991575cacdd0c272fefc8d6905a00d1df993ced"}],"nova/conductor/manager.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e903797a006da82334cd6b34fd8ae13078d43065","unresolved":false,"context_lines":[{"line_number":456,"context_line":"        migration.status \u003d \u0027accepted\u0027"},{"line_number":457,"context_line":"        migration.instance_uuid \u003d instance.uuid"},{"line_number":458,"context_line":"        migration.source_compute \u003d instance.host"},{"line_number":459,"context_line":"        migration.migration_type \u003d fields.MigrationType.LIVE_MIGRATION"},{"line_number":460,"context_line":"        if instance.obj_attr_is_set(\u0027flavor\u0027):"},{"line_number":461,"context_line":"            migration.old_instance_type_id \u003d instance.flavor.id"},{"line_number":462,"context_line":"            migration.new_instance_type_id \u003d instance.flavor.id"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf51134e_a8aeb22a","line":459,"updated":"2020-06-29 14:52:47.000000000","message":"++","commit_id":"f203da383871aea195fd5a03ac3b5544176344cb"}],"nova/objects/fields.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e903797a006da82334cd6b34fd8ae13078d43065","unresolved":false,"context_lines":[{"line_number":469,"context_line":"    MIGRATION \u003d \u0027migration\u0027  # cold migration"},{"line_number":470,"context_line":"    RESIZE \u003d \u0027resize\u0027"},{"line_number":471,"context_line":"    LIVE_MIGRATION \u003d \u0027live-migration\u0027"},{"line_number":472,"context_line":"    EVACUATION \u003d \u0027evacuation\u0027"},{"line_number":473,"context_line":""},{"line_number":474,"context_line":"    ALL \u003d (MIGRATION, RESIZE, LIVE_MIGRATION, EVACUATION)"},{"line_number":475,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bf51134e_68b93a77","line":472,"updated":"2020-06-29 14:52:47.000000000","message":"given the existing types are identical, this won\u0027t change.\n\nThat being said, if people want to add a new migration type here later, they should think about not creating upgrade issues (given the object version wouldn\u0027t change) - but this doesn\u0027t change with the current behaviour","commit_id":"f203da383871aea195fd5a03ac3b5544176344cb"}],"nova/objects/migration.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7e3d3a26b25fb2f85a84f7ca7ef07c5993293d2c","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        \u0027new_instance_type_id\u0027: fields.IntegerField(nullable\u003dTrue),"},{"line_number":58,"context_line":"        \u0027instance_uuid\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":59,"context_line":"        \u0027status\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":60,"context_line":"        \u0027migration_type\u0027: fields.MigrationTypeField(nullable\u003dFalse),"},{"line_number":61,"context_line":"        \u0027hidden\u0027: fields.BooleanField(nullable\u003dFalse, default\u003dFalse),"},{"line_number":62,"context_line":"        \u0027memory_total\u0027: fields.IntegerField(nullable\u003dTrue),"},{"line_number":63,"context_line":"        \u0027memory_processed\u0027: fields.IntegerField(nullable\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_846600ed","line":60,"range":{"start_line":60,"start_character":27,"end_line":60,"end_character":68},"updated":"2020-05-12 12:07:56.000000000","message":"ok so you are just changing form one represnetion of a enum to another.\n\nso yes the hash will change but the values and encodeing(string) will not change so it should be safe.\n\nin general we are not allowed to change types and keep the old name but in this case since hte value was  a restrited stirng and it still is with the same values it should be fine.","commit_id":"f203da383871aea195fd5a03ac3b5544176344cb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e903797a006da82334cd6b34fd8ae13078d43065","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        \u0027new_instance_type_id\u0027: fields.IntegerField(nullable\u003dTrue),"},{"line_number":58,"context_line":"        \u0027instance_uuid\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":59,"context_line":"        \u0027status\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":60,"context_line":"        \u0027migration_type\u0027: fields.MigrationTypeField(nullable\u003dFalse),"},{"line_number":61,"context_line":"        \u0027hidden\u0027: fields.BooleanField(nullable\u003dFalse, default\u003dFalse),"},{"line_number":62,"context_line":"        \u0027memory_total\u0027: fields.IntegerField(nullable\u003dTrue),"},{"line_number":63,"context_line":"        \u0027memory_processed\u0027: fields.IntegerField(nullable\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf51134e_c805e647","line":60,"range":{"start_line":60,"start_character":27,"end_line":60,"end_character":68},"in_reply_to":"ff570b3c_846600ed","updated":"2020-06-29 14:52:47.000000000","message":"As Sean said, in general, you can\u0027t just change a field type like this, but fortunately for you the serialized 1.7 Migration object won\u0027t change here.\n\nSo, for example when an old compute will lookup the serialized object, it will see the 1.7 version and will then create a new Migration object that will have a migration_type field be a custom EnumField, which will still work.","commit_id":"f203da383871aea195fd5a03ac3b5544176344cb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7e3d3a26b25fb2f85a84f7ca7ef07c5993293d2c","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    def is_same_host(self):"},{"line_number":204,"context_line":"        return self.source_compute \u003d\u003d self.dest_compute"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    @property"},{"line_number":207,"context_line":"    def is_live_migration(self):"},{"line_number":208,"context_line":"        return self.migration_type \u003d\u003d fields.MigrationType.LIVE_MIGRATION"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    @property"},{"line_number":211,"context_line":"    def is_resize(self):"},{"line_number":212,"context_line":"        return self.migration_type \u003d\u003d fields.MigrationType.RESIZE"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"@base.NovaObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_c460f8d1","line":212,"range":{"start_line":206,"start_character":2,"end_line":212,"end_character":65},"updated":"2020-05-12 12:07:56.000000000","message":"i kind of feel like if you are adding this you might as well complete the set and add is evacuation and is cold_migration","commit_id":"f203da383871aea195fd5a03ac3b5544176344cb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e903797a006da82334cd6b34fd8ae13078d43065","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    def is_same_host(self):"},{"line_number":204,"context_line":"        return self.source_compute \u003d\u003d self.dest_compute"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    @property"},{"line_number":207,"context_line":"    def is_live_migration(self):"},{"line_number":208,"context_line":"        return self.migration_type \u003d\u003d fields.MigrationType.LIVE_MIGRATION"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    @property"},{"line_number":211,"context_line":"    def is_resize(self):"},{"line_number":212,"context_line":"        return self.migration_type \u003d\u003d fields.MigrationType.RESIZE"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"@base.NovaObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf51134e_e8f6ea5c","line":212,"range":{"start_line":206,"start_character":2,"end_line":212,"end_character":65},"in_reply_to":"bf51134e_e8c26a52","updated":"2020-06-29 14:52:47.000000000","message":"Agreed with Stephen here, we should only add properties if there are callers.","commit_id":"f203da383871aea195fd5a03ac3b5544176344cb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a906842bad9ac76ef660709b3eedbf6c1e1889a3","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    def is_same_host(self):"},{"line_number":204,"context_line":"        return self.source_compute \u003d\u003d self.dest_compute"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    @property"},{"line_number":207,"context_line":"    def is_live_migration(self):"},{"line_number":208,"context_line":"        return self.migration_type \u003d\u003d fields.MigrationType.LIVE_MIGRATION"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    @property"},{"line_number":211,"context_line":"    def is_resize(self):"},{"line_number":212,"context_line":"        return self.migration_type \u003d\u003d fields.MigrationType.RESIZE"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"@base.NovaObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf51134e_e8c26a52","line":212,"range":{"start_line":206,"start_character":2,"end_line":212,"end_character":65},"in_reply_to":"ff570b3c_c460f8d1","updated":"2020-06-29 14:24:31.000000000","message":"Considered it, but there weren\u0027t any callers so it would be dead code. Easy to add should we ever need it","commit_id":"f203da383871aea195fd5a03ac3b5544176344cb"}],"nova/tests/unit/network/test_neutron.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7e3d3a26b25fb2f85a84f7ca7ef07c5993293d2c","unresolved":false,"context_lines":[{"line_number":4596,"context_line":"                  \u0027physical_network\u0027: \u0027phys_net\u0027,"},{"line_number":4597,"context_line":"                  \u0027pci_vendor_info\u0027: \u0027vendor_info\u0027}}]}"},{"line_number":4598,"context_line":"        migration \u003d objects.Migration("},{"line_number":4599,"context_line":"            status\u003d\u0027confirmed\u0027, migration_type\u003d\u0027live-migration\u0027)"},{"line_number":4600,"context_line":"        list_ports_mock \u003d mock.Mock(return_value\u003dfake_ports)"},{"line_number":4601,"context_line":"        get_client_mock.return_value.list_ports \u003d list_ports_mock"},{"line_number":4602,"context_line":"        update_port_mock \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_84aba0d4","line":4599,"range":{"start_line":4599,"start_character":47,"end_line":4599,"end_character":63},"updated":"2020-05-12 12:07:56.000000000","message":"you could use the filed constants here instead of the raw strings. same for teh other changes in this file.","commit_id":"f203da383871aea195fd5a03ac3b5544176344cb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a9b8026f9f85548226b2894254da66c96fe0e357","unresolved":false,"context_lines":[{"line_number":4596,"context_line":"                  \u0027physical_network\u0027: \u0027phys_net\u0027,"},{"line_number":4597,"context_line":"                  \u0027pci_vendor_info\u0027: \u0027vendor_info\u0027}}]}"},{"line_number":4598,"context_line":"        migration \u003d objects.Migration("},{"line_number":4599,"context_line":"            status\u003d\u0027confirmed\u0027, migration_type\u003d\u0027live-migration\u0027)"},{"line_number":4600,"context_line":"        list_ports_mock \u003d mock.Mock(return_value\u003dfake_ports)"},{"line_number":4601,"context_line":"        get_client_mock.return_value.list_ports \u003d list_ports_mock"},{"line_number":4602,"context_line":"        update_port_mock \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf51134e_db3f8384","line":4599,"range":{"start_line":4599,"start_character":47,"end_line":4599,"end_character":63},"in_reply_to":"ff570b3c_84aba0d4","updated":"2020-06-26 16:33:43.000000000","message":"I purposefully didn\u0027t want to use them here, for fear of propagating typos","commit_id":"f203da383871aea195fd5a03ac3b5544176344cb"}],"nova/tests/unit/objects/test_objects.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e903797a006da82334cd6b34fd8ae13078d43065","unresolved":false,"context_lines":[{"line_number":1103,"context_line":"    \u0027LibvirtLiveMigrateData\u0027: \u00271.10-348cf70ea44d3b985f45f64725d6f6a7\u0027,"},{"line_number":1104,"context_line":"    \u0027LibvirtLiveMigrateNUMAInfo\u0027: \u00271.0-0e777677f3459d0ed1634eabbdb6c22f\u0027,"},{"line_number":1105,"context_line":"    \u0027MemoryDiagnostics\u0027: \u00271.0-2c995ae0f2223bb0f8e523c5cc0b83da\u0027,"},{"line_number":1106,"context_line":"    \u0027Migration\u0027: \u00271.7-bd45b232fd7c95cd79ae9187e10ef582\u0027,"},{"line_number":1107,"context_line":"    \u0027MigrationContext\u0027: \u00271.2-89f10a83999f852a489962ae37d8a026\u0027,"},{"line_number":1108,"context_line":"    \u0027MigrationList\u0027: \u00271.4-983a9c29d4f1e747ce719dc9063b729b\u0027,"},{"line_number":1109,"context_line":"    \u0027MonitorMetric\u0027: \u00271.1-53b1db7c4ae2c531db79761e7acc52ba\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf51134e_a82192b6","line":1106,"updated":"2020-06-29 14:52:47.000000000","message":"maybe a better commit msg explaining why this isn\u0027t a problem would have been better but meh.","commit_id":"f203da383871aea195fd5a03ac3b5544176344cb"}]}
