)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ba9a216673899abe878a78e13121d2d8222d9f57","unresolved":false,"context_lines":[{"line_number":22,"context_line":"we can end up calling driver.post_live_migration_at_source() with"},{"line_number":23,"context_line":"information about the unbound source port binding, or the vif type"},{"line_number":24,"context_line":"for the destination host port binding. Because of that, unplug_vifs"},{"line_number":25,"context_line":"on the source can call since it\u0027s not using the proper vif type."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"To resolve that, we use the stashed VIFMigrateData.source_vif"},{"line_number":28,"context_line":"when unplugging vifs on the source host. Those source vifs are"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5f7c97a3_82efe9b0","line":25,"range":{"start_line":25,"start_character":18,"end_line":25,"end_character":22},"updated":"2018-07-27 03:24:27.000000000","message":"fail","commit_id":"028fe066d1c20cc1c92498d47af7f15d2e11d8d9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ba9a216673899abe878a78e13121d2d8222d9f57","unresolved":false,"context_lines":[{"line_number":28,"context_line":"when unplugging vifs on the source host. Those source vifs are"},{"line_number":29,"context_line":"an exact copy of the vifs on the instance before live migration"},{"line_number":30,"context_line":"started on the source host, so they are appropriate for unplugging"},{"line_number":31,"context_line":"on the source during _post_live_migrate."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Change-Id: Ie6439499cc7c6f05eec692dda677caf649dd7c94"},{"line_number":34,"context_line":"Closes-Bug: #1783917"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5f7c97a3_42e9d1a8","line":31,"range":{"start_line":31,"start_character":21,"end_line":31,"end_character":39},"updated":"2018-07-27 03:24:27.000000000","message":"_post_live_migration","commit_id":"028fe066d1c20cc1c92498d47af7f15d2e11d8d9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"890314324adf892cd5ed9ec0d0d513fdb99504ef","unresolved":false,"context_lines":[{"line_number":9,"context_line":"With the changes in blueprint neutron-new-port-binding-api, we now"},{"line_number":10,"context_line":"manage port bindings on both the source and destination host and"},{"line_number":11,"context_line":"those can be different vif types to support live migrating between"},{"line_number":12,"context_line":"different network backends, e.g. linuxbridge-ovs, ovs-\u003eovn, etc."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"The dest host port bindings are created during pre_live_migration"},{"line_number":15,"context_line":"and then activated on the source host during post-copy (for the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5f7c97a3_5d9214a2","line":12,"range":{"start_line":12,"start_character":44,"end_line":12,"end_character":45},"updated":"2018-07-27 04:48:30.000000000","message":"-\u003e","commit_id":"8e17c3784ec2a394f01eb6e6a242a921076cc5dc"}],"nova/compute/manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ba9a216673899abe878a78e13121d2d8222d9f57","unresolved":false,"context_lines":[{"line_number":6579,"context_line":"        destroy_vifs \u003d False"},{"line_number":6580,"context_line":"        try:"},{"line_number":6581,"context_line":"            # It\u0027s possible that the vif type changed on the destination"},{"line_number":6582,"context_line":"            # host and is already bound and active, so we need to temporarily"},{"line_number":6583,"context_line":"            # use the stashed source vifs in migrate_data.vifs (if present)"},{"line_number":6584,"context_line":"            # to unplug on the source host."},{"line_number":6585,"context_line":"            unplug_nw_info \u003d network_info"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_a22f85f3","line":6582,"range":{"start_line":6582,"start_character":66,"end_line":6582,"end_character":77},"updated":"2018-07-27 03:24:27.000000000","message":"remove, it\u0027s not temporary","commit_id":"028fe066d1c20cc1c92498d47af7f15d2e11d8d9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0e530c551afb8f4551db56fac6e39313a797b083","unresolved":false,"context_lines":[{"line_number":6588,"context_line":"                for migrate_vif in migrate_data.vifs:"},{"line_number":6589,"context_line":"                    nw_info.append(migrate_vif.source_vif)"},{"line_number":6590,"context_line":"                unplug_nw_info \u003d network_model.NetworkInfo.hydrate(nw_info)"},{"line_number":6591,"context_line":"                LOG.debug(\u0027Calling driver.post_live_migration_at_source \u0027"},{"line_number":6592,"context_line":"                          \u0027with original source VIFs from migrate_data: %s\u0027,"},{"line_number":6593,"context_line":"                          unplug_nw_info, instance\u003dinstance)"},{"line_number":6594,"context_line":"            self.driver.post_live_migration_at_source(ctxt, instance,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_baaec57d","line":6591,"updated":"2018-07-27 12:44:26.000000000","message":"Seen in CI here:\n\nhttp://logs.openstack.org/02/586402/2/check/nova-live-migration/2db7a54/logs/screen-n-cpu.txt.gz#_Jul_27_04_38_18_264550\n\nJul 27 04:38:18.264550 ubuntu-xenial-inap-mtl01-0001003934 nova-compute[1961]: DEBUG nova.compute.manager [None req-3a9a2d64-4455-4f85-9eff-cb4ba30e9f9a service nova] [instance: 0a90d0d5-fc87-4c0a-8985-6c8019d0c6a7] Calling driver.post_live_migration_at_source with original source VIFs from migrate_data: [{\"profile\": {}, \"ovs_interfaceid\": \"da41e60f-7263-49af-82ba-e8283acf25ab\", \"preserve_on_delete\": false, \"network\": {\"bridge\": \"br-int\", \"subnets\": [{\"ips\": [{\"meta\": {}, \"version\": 4, \"type\": \"fixed\", \"floating_ips\": [], \"address\": \"10.1.0.2\"}], \"version\": 4, \"meta\": {}, \"dns\": [], \"routes\": [], \"cidr\": \"10.1.0.0/28\", \"gateway\": {\"meta\": {}, \"version\": 4, \"type\": \"gateway\", \"address\": \"10.1.0.1\"}}], \"meta\": {\"injected\": false, \"tenant_id\": \"2faeb6d8cc3f4dae936aff10eb9e6917\", \"mtu\": 1400}, \"id\": \"7b775387-ec9a-478f-b73a-c4a7678848fa\", \"label\": \"tempest-LiveMigrationRemoteConsolesV26Test-831021035-network\"}, \"devname\": \"tapda41e60f-72\", \"vnic_type\": \"normal\", \"qbh_params\": null, \"meta\": {}, \"details\": {\"port_filter\": true, \"datapath_type\": \"system\", \"ovs_hybrid_plug\": false}, \"address\": \"fa:16:3e:cc:ff:66\", \"active\": false, \"type\": \"ovs\", \"id\": \"da41e60f-7263-49af-82ba-e8283acf25ab\", \"qbg_params\": null}] {{(pid\u003d1961) _post_live_migration /opt/stack/new/nova/nova/compute/manager.py:6593}}","commit_id":"8e17c3784ec2a394f01eb6e6a242a921076cc5dc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ffaec51cee98b97c7f5fac195504f50522fc40c3","unresolved":false,"context_lines":[{"line_number":6588,"context_line":"                for migrate_vif in migrate_data.vifs:"},{"line_number":6589,"context_line":"                    nw_info.append(migrate_vif.source_vif)"},{"line_number":6590,"context_line":"                unplug_nw_info \u003d network_model.NetworkInfo.hydrate(nw_info)"},{"line_number":6591,"context_line":"                LOG.debug(\u0027Calling driver.post_live_migration_at_source \u0027"},{"line_number":6592,"context_line":"                          \u0027with original source VIFs from migrate_data: %s\u0027,"},{"line_number":6593,"context_line":"                          unplug_nw_info, instance\u003dinstance)"},{"line_number":6594,"context_line":"            self.driver.post_live_migration_at_source(ctxt, instance,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_5a8451b2","line":6591,"in_reply_to":"5f7c97a3_baaec57d","updated":"2018-07-27 12:59:15.000000000","message":"Here we successfully unplug:\n\nhttp://logs.openstack.org/02/586402/2/check/nova-live-migration/2db7a54/logs/screen-n-cpu.txt.gz#_Jul_27_04_38_25_366114\n\nJul 27 04:38:25.366114 ubuntu-xenial-inap-mtl01-0001003934 nova-compute[1961]: INFO os_vif [None req-077b892f-770d-4416-a41f-f48b1b8d066a service nova] Successfully unplugged vif VIFOpenVSwitch(active\u003dFalse,address\u003dfa:16:3e:d9:75:80,bridge_name\u003d\u0027br-int\u0027,has_traffic_filtering\u003dTrue,id\u003d52debc9c-96b6-4cd0-9813-82ba6ee3eb71,network\u003dNetwork(4b0482cd-b972-4375-8183-d2f306e9b871),plugin\u003d\u0027ovs\u0027,port_profile\u003dVIFPortProfileOpenVSwitch,preserve_on_delete\u003dFalse,vif_name\u003d\u0027tap52debc9c-96\u0027)","commit_id":"8e17c3784ec2a394f01eb6e6a242a921076cc5dc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ffaec51cee98b97c7f5fac195504f50522fc40c3","unresolved":false,"context_lines":[{"line_number":6622,"context_line":"                migrate_data)"},{"line_number":6623,"context_line":""},{"line_number":6624,"context_line":"        if do_cleanup:"},{"line_number":6625,"context_line":"            LOG.debug(\u0027Calling driver.cleanup from _post_live_migration\u0027,"},{"line_number":6626,"context_line":"                      instance\u003dinstance)"},{"line_number":6627,"context_line":"            self.driver.cleanup(ctxt, instance, network_info,"},{"line_number":6628,"context_line":"                                destroy_disks\u003ddestroy_disks,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_fa63dd17","line":6625,"updated":"2018-07-27 12:59:15.000000000","message":"Here is this log:\n\nhttp://logs.openstack.org/02/586402/2/check/nova-live-migration/2db7a54/logs/screen-n-cpu.txt.gz#_Jul_27_04_38_26_247846\n\nJul 27 04:38:26.247846 ubuntu-xenial-inap-mtl01-0001003934 nova-compute[1961]: DEBUG nova.compute.manager [None req-077b892f-770d-4416-a41f-f48b1b8d066a service nova] [instance: 57ea28f3-673a-4b48-a94d-2660b3e19133] Calling driver.cleanup from _post_live_migration {{(pid\u003d1961) _post_live_migration /opt/stack/new/nova/nova/compute/manager.py:6626}}\n\nNow for the libvirt driver, that will attempt to unplug again:\n\nhttps://github.com/openstack/nova/blob/6be7f7248fb1c2bbb890a0a48a424e205e173c9c/nova/virt/libvirt/driver.py#L999\n\nBut we must be passing in destroy_vifs\u003dFalse because I don\u0027t see anything about attempting to unplug vifs again in the logs. Or it\u0027s just ignoring errors (not even logged):\n\nhttps://github.com/openstack/nova/blob/6be7f7248fb1c2bbb890a0a48a424e205e173c9c/nova/virt/libvirt/driver.py#L825\n\nBut I should probably write a follow up change that passes in the same unplug_nw_info if destroy_vifs is True.","commit_id":"8e17c3784ec2a394f01eb6e6a242a921076cc5dc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"43e85bb7b14fae7970e3c2eab5d92b1c53e6afce","unresolved":false,"context_lines":[{"line_number":6624,"context_line":"        if do_cleanup:"},{"line_number":6625,"context_line":"            LOG.debug(\u0027Calling driver.cleanup from _post_live_migration\u0027,"},{"line_number":6626,"context_line":"                      instance\u003dinstance)"},{"line_number":6627,"context_line":"            self.driver.cleanup(ctxt, instance, network_info,"},{"line_number":6628,"context_line":"                                destroy_disks\u003ddestroy_disks,"},{"line_number":6629,"context_line":"                                migrate_data\u003dmigrate_data,"},{"line_number":6630,"context_line":"                                destroy_vifs\u003ddestroy_vifs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_ba8005f8","line":6627,"range":{"start_line":6627,"start_character":48,"end_line":6627,"end_character":60},"updated":"2018-07-27 12:43:17.000000000","message":"I thought about this later, but it\u0027s possible we might want to use the source vifs throughout this _post_live_migration method.","commit_id":"8e17c3784ec2a394f01eb6e6a242a921076cc5dc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5fd564fdbe85c882f902e476cdec28ffe4e14f6d","unresolved":false,"context_lines":[{"line_number":6624,"context_line":"        if do_cleanup:"},{"line_number":6625,"context_line":"            LOG.debug(\u0027Calling driver.cleanup from _post_live_migration\u0027,"},{"line_number":6626,"context_line":"                      instance\u003dinstance)"},{"line_number":6627,"context_line":"            self.driver.cleanup(ctxt, instance, network_info,"},{"line_number":6628,"context_line":"                                destroy_disks\u003ddestroy_disks,"},{"line_number":6629,"context_line":"                                migrate_data\u003dmigrate_data,"},{"line_number":6630,"context_line":"                                destroy_vifs\u003ddestroy_vifs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_7cfa5abb","line":6627,"range":{"start_line":6627,"start_character":48,"end_line":6627,"end_character":60},"in_reply_to":"5f7c97a3_36bf2861","updated":"2018-07-28 13:13:17.000000000","message":"We\u0027re on the source here, see the next patch in the series.","commit_id":"8e17c3784ec2a394f01eb6e6a242a921076cc5dc"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b7bba8eba5ae264b69f3c63c6233f2c70fee86df","unresolved":false,"context_lines":[{"line_number":6624,"context_line":"        if do_cleanup:"},{"line_number":6625,"context_line":"            LOG.debug(\u0027Calling driver.cleanup from _post_live_migration\u0027,"},{"line_number":6626,"context_line":"                      instance\u003dinstance)"},{"line_number":6627,"context_line":"            self.driver.cleanup(ctxt, instance, network_info,"},{"line_number":6628,"context_line":"                                destroy_disks\u003ddestroy_disks,"},{"line_number":6629,"context_line":"                                migrate_data\u003dmigrate_data,"},{"line_number":6630,"context_line":"                                destroy_vifs\u003ddestroy_vifs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_36bf2861","line":6627,"range":{"start_line":6627,"start_character":48,"end_line":6627,"end_character":60},"in_reply_to":"5f7c97a3_ba8005f8","updated":"2018-07-27 21:37:08.000000000","message":"this is running on the source or dest?\ni think the destination node so it should be useing the new vif as the source vifs could be of a different.","commit_id":"8e17c3784ec2a394f01eb6e6a242a921076cc5dc"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e35d24b6a822a6781af20ca4ec191a1266a78af8","unresolved":false,"context_lines":[{"line_number":7867,"context_line":"            # exit the test early."},{"line_number":7868,"context_line":"            self.assertEqual(1, len(network_info))"},{"line_number":7869,"context_line":"            self.assertEqual(source_vif, network_info[0])"},{"line_number":7870,"context_line":"            raise test.TestingException(\u0027all done!\u0027)"},{"line_number":7871,"context_line":""},{"line_number":7872,"context_line":"        @mock.patch.object(self.compute, \u0027_get_instance_block_device_info\u0027)"},{"line_number":7873,"context_line":"        @mock.patch.object(self.compute.network_api, \u0027get_instance_nw_info\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_94e1629a","line":7870,"range":{"start_line":7870,"start_character":11,"end_line":7870,"end_character":52},"updated":"2018-07-27 11:03:56.000000000","message":"nit: i dont think you need to raise an excpetion but i guess it will stop the exectuion when self.driver.post_live_migration_at_source is called which is all you need to test so it works","commit_id":"8e17c3784ec2a394f01eb6e6a242a921076cc5dc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"43e85bb7b14fae7970e3c2eab5d92b1c53e6afce","unresolved":false,"context_lines":[{"line_number":7867,"context_line":"            # exit the test early."},{"line_number":7868,"context_line":"            self.assertEqual(1, len(network_info))"},{"line_number":7869,"context_line":"            self.assertEqual(source_vif, network_info[0])"},{"line_number":7870,"context_line":"            raise test.TestingException(\u0027all done!\u0027)"},{"line_number":7871,"context_line":""},{"line_number":7872,"context_line":"        @mock.patch.object(self.compute, \u0027_get_instance_block_device_info\u0027)"},{"line_number":7873,"context_line":"        @mock.patch.object(self.compute.network_api, \u0027get_instance_nw_info\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_3a6cf569","line":7870,"range":{"start_line":7870,"start_character":11,"end_line":7870,"end_character":52},"in_reply_to":"5f7c97a3_94e1629a","updated":"2018-07-27 12:43:17.000000000","message":"Yeah, that\u0027s the intent so I didn\u0027t have to mock the 2nd half of _post_live_migration() for no reason.","commit_id":"8e17c3784ec2a394f01eb6e6a242a921076cc5dc"}]}
