)]}'
{"nova/tests/unit/virt/libvirt/test_vif.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"f9d8a72f362434bac34d1284650aecf1fc15c800","unresolved":false,"context_lines":[{"line_number":934,"context_line":"        device_exists.return_value \u003d True"},{"line_number":935,"context_line":"        d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":936,"context_line":"        with mock.patch.object(utils, \u0027execute\u0027) as execute:"},{"line_number":937,"context_line":"            execute.side_effect \u003d processutils.ProcessExecutionError"},{"line_number":938,"context_line":"            d.plug(self.instance, self.vif_iovisor)"},{"line_number":939,"context_line":"            execute.assert_called_once_with(\u0027ifc_ctl\u0027,"},{"line_number":940,"context_line":"                \u0027gateway\u0027, \u0027add_port\u0027, \u0027tap-xxx-yyy-zzz\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_f791ae9b","line":937,"range":{"start_line":937,"start_character":12,"end_line":937,"end_character":68},"updated":"2016-06-28 23:23:00.000000000","message":"Now this test case seems positive, why do we need still this side_effect?","commit_id":"3f547de5aa732272023dc0800c57d5ee20df5248"},{"author":{"_account_id":15307,"name":"Muawia Khan","email":"amuawiakhan@gmail.com","username":"muawiakhan"},"change_message_id":"f74a7a206910f3d65f5f45eafbcc5e804955258b","unresolved":false,"context_lines":[{"line_number":934,"context_line":"        device_exists.return_value \u003d True"},{"line_number":935,"context_line":"        d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":936,"context_line":"        with mock.patch.object(utils, \u0027execute\u0027) as execute:"},{"line_number":937,"context_line":"            execute.side_effect \u003d processutils.ProcessExecutionError"},{"line_number":938,"context_line":"            d.plug(self.instance, self.vif_iovisor)"},{"line_number":939,"context_line":"            execute.assert_called_once_with(\u0027ifc_ctl\u0027,"},{"line_number":940,"context_line":"                \u0027gateway\u0027, \u0027add_port\u0027, \u0027tap-xxx-yyy-zzz\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_9a9fa702","line":937,"range":{"start_line":937,"start_character":12,"end_line":937,"end_character":68},"in_reply_to":"3aaa91ec_f791ae9b","updated":"2016-06-29 07:23:51.000000000","message":"Done","commit_id":"3f547de5aa732272023dc0800c57d5ee20df5248"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"f9d8a72f362434bac34d1284650aecf1fc15c800","unresolved":false,"context_lines":[{"line_number":939,"context_line":"            execute.assert_called_once_with(\u0027ifc_ctl\u0027,"},{"line_number":940,"context_line":"                \u0027gateway\u0027, \u0027add_port\u0027, \u0027tap-xxx-yyy-zzz\u0027,"},{"line_number":941,"context_line":"                run_as_root\u003dTrue)"},{"line_number":942,"context_line":""},{"line_number":943,"context_line":"    def test_unplug_vrouter_with_details(self):"},{"line_number":944,"context_line":"        d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":945,"context_line":"        with mock.patch.object(utils, \u0027execute\u0027) as execute:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_17b0ba42","line":942,"updated":"2016-06-28 23:23:00.000000000","message":"This unit test doesn\u0027t run the changed operation like\n\n \u0027ifc_ctl\u0027, \u0027gateway\u0027, \u0027ifup\u0027, ...","commit_id":"3f547de5aa732272023dc0800c57d5ee20df5248"},{"author":{"_account_id":15307,"name":"Muawia Khan","email":"amuawiakhan@gmail.com","username":"muawiakhan"},"change_message_id":"f74a7a206910f3d65f5f45eafbcc5e804955258b","unresolved":false,"context_lines":[{"line_number":939,"context_line":"            execute.assert_called_once_with(\u0027ifc_ctl\u0027,"},{"line_number":940,"context_line":"                \u0027gateway\u0027, \u0027add_port\u0027, \u0027tap-xxx-yyy-zzz\u0027,"},{"line_number":941,"context_line":"                run_as_root\u003dTrue)"},{"line_number":942,"context_line":""},{"line_number":943,"context_line":"    def test_unplug_vrouter_with_details(self):"},{"line_number":944,"context_line":"        d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":945,"context_line":"        with mock.patch.object(utils, \u0027execute\u0027) as execute:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_7aa2bb4c","line":942,"in_reply_to":"3aaa91ec_17b0ba42","updated":"2016-06-29 07:23:51.000000000","message":"Done","commit_id":"3f547de5aa732272023dc0800c57d5ee20df5248"}],"nova/virt/libvirt/vif.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"bef1309ceba9f0d0b7e2d910873d8695c9eebb41","unresolved":false,"context_lines":[{"line_number":902,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":903,"context_line":"        try:"},{"line_number":904,"context_line":"            utils.execute(\u0027ifc_ctl\u0027, \u0027gateway\u0027, \u0027ifdown\u0027,"},{"line_number":905,"context_line":"                          dev, \u0027access_vm\u0027, iface_id,"},{"line_number":906,"context_line":"                          vif[\u0027address\u0027], run_as_root\u003dTrue)"},{"line_number":907,"context_line":"            utils.execute(\u0027ifc_ctl\u0027, \u0027gateway\u0027, \u0027del_port\u0027, dev,"},{"line_number":908,"context_line":"                          run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_4b00c5aa","line":905,"range":{"start_line":905,"start_character":52,"end_line":905,"end_character":53},"updated":"2016-03-30 10:01:46.000000000","message":"If we have an existing running VM and Nova is upgraded to this version of code, we\u0027re going to fail to unplug the VIF because the name it now looks for is different to the one we created it with. You need to deal with upgrade path issues","commit_id":"6a33466e1411bf105e5159997a4127e89db25acc"},{"author":{"_account_id":15307,"name":"Muawia Khan","email":"amuawiakhan@gmail.com","username":"muawiakhan"},"change_message_id":"2404d35504481265bcd3e38aada9a650db48b6b8","unresolved":false,"context_lines":[{"line_number":902,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":903,"context_line":"        try:"},{"line_number":904,"context_line":"            utils.execute(\u0027ifc_ctl\u0027, \u0027gateway\u0027, \u0027ifdown\u0027,"},{"line_number":905,"context_line":"                          dev, \u0027access_vm\u0027, iface_id,"},{"line_number":906,"context_line":"                          vif[\u0027address\u0027], run_as_root\u003dTrue)"},{"line_number":907,"context_line":"            utils.execute(\u0027ifc_ctl\u0027, \u0027gateway\u0027, \u0027del_port\u0027, dev,"},{"line_number":908,"context_line":"                          run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_66bdc5b6","line":905,"range":{"start_line":905,"start_character":52,"end_line":905,"end_character":53},"in_reply_to":"ba0121b8_4b00c5aa","updated":"2016-03-31 05:16:43.000000000","message":"Thanks daniel for pointing this out. I have tested the upgrade path and the tap/interface name has precedence over the vm name, even if the VM name is changed ifc_ctl is able to offboard/unplug the vif.","commit_id":"6a33466e1411bf105e5159997a4127e89db25acc"}]}
