)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"f407c3b925f6dca1fbd8f9c97864421967284493","unresolved":false,"context_lines":[{"line_number":5571,"context_line":"            # method"},{"line_number":5572,"context_line":"            destroy_vifs \u003d True"},{"line_number":5573,"context_line":""},{"line_number":5574,"context_line":"        if migrate_data.compute_min_version \u003e 15:"},{"line_number":5575,"context_line":"            migration \u003d {\u0027source_compute\u0027: self.host, \u0027dest_compute\u0027: dest}"},{"line_number":5576,"context_line":"            self.network_api.migrate_instance_finish(ctxt, instance, migration)"},{"line_number":5577,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_aa8d432c","side":"PARENT","line":5574,"updated":"2017-01-09 11:49:28.000000000","message":"So you removed this, but without this piece of code how nova updates network configuration in case when this was pre-copy live migration?","commit_id":"3f4dd3b23d15448d47fe62c4915a549ccd16f0be"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"5b92b39585ae882079991a9c6133518d91220134","unresolved":false,"context_lines":[{"line_number":5571,"context_line":"            # method"},{"line_number":5572,"context_line":"            destroy_vifs \u003d True"},{"line_number":5573,"context_line":""},{"line_number":5574,"context_line":"        if migrate_data.compute_min_version \u003e 15:"},{"line_number":5575,"context_line":"            migration \u003d {\u0027source_compute\u0027: self.host, \u0027dest_compute\u0027: dest}"},{"line_number":5576,"context_line":"            self.network_api.migrate_instance_finish(ctxt, instance, migration)"},{"line_number":5577,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5201f7_fd76f3a1","side":"PARENT","line":5574,"updated":"2017-01-10 15:00:46.000000000","message":"My question from PS4 is still valid. How removing this affects pre-copy live migrations? Won\u0027t this break networking?","commit_id":"67ed606c8933008f09732031d90f1da730f0cd41"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"1b5e2bba0b5c8cf9c251f1cec3a9367f6938714f","unresolved":false,"context_lines":[{"line_number":5571,"context_line":"            # method"},{"line_number":5572,"context_line":"            destroy_vifs \u003d True"},{"line_number":5573,"context_line":""},{"line_number":5574,"context_line":"        if migrate_data.compute_min_version \u003e 15:"},{"line_number":5575,"context_line":"            migration \u003d {\u0027source_compute\u0027: self.host, \u0027dest_compute\u0027: dest}"},{"line_number":5576,"context_line":"            self.network_api.migrate_instance_finish(ctxt, instance, migration)"},{"line_number":5577,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5201f7_da682ebd","side":"PARENT","line":5574,"in_reply_to":"ba5201f7_84dbc11a","updated":"2017-01-11 08:59:22.000000000","message":"The condition here can be extended, so if not migrate_data.migration.status \u003d \"running (post-copy)\u0027 then execute this logic.","commit_id":"67ed606c8933008f09732031d90f1da730f0cd41"},{"author":{"_account_id":18339,"name":"Sivasathurappan Radhakrishnan","email":"siva.radhakrishnan@intel.com","username":"sivakrishnan"},"change_message_id":"9a5555170761b9d19694ebe5a3f7c0bd7fad1339","unresolved":false,"context_lines":[{"line_number":5571,"context_line":"            # method"},{"line_number":5572,"context_line":"            destroy_vifs \u003d True"},{"line_number":5573,"context_line":""},{"line_number":5574,"context_line":"        if migrate_data.compute_min_version \u003e 15:"},{"line_number":5575,"context_line":"            migration \u003d {\u0027source_compute\u0027: self.host, \u0027dest_compute\u0027: dest}"},{"line_number":5576,"context_line":"            self.network_api.migrate_instance_finish(ctxt, instance, migration)"},{"line_number":5577,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5201f7_8f37314c","side":"PARENT","line":5574,"in_reply_to":"ba5201f7_da682ebd","updated":"2017-01-11 15:51:33.000000000","message":"Thanks for pointing it out. I was under the impression that migration status would changed from \u0027running\u0027 since migration got completed.","commit_id":"67ed606c8933008f09732031d90f1da730f0cd41"},{"author":{"_account_id":19590,"name":"Sarafraj Singh","email":"Sarafraj.Singh@intel.com","username":"sarafrajsingh"},"change_message_id":"883dcc1950f673ebbdce301807c3776d54c6a3a5","unresolved":false,"context_lines":[{"line_number":5571,"context_line":"            # method"},{"line_number":5572,"context_line":"            destroy_vifs \u003d True"},{"line_number":5573,"context_line":""},{"line_number":5574,"context_line":"        if migrate_data.compute_min_version \u003e 15:"},{"line_number":5575,"context_line":"            migration \u003d {\u0027source_compute\u0027: self.host, \u0027dest_compute\u0027: dest}"},{"line_number":5576,"context_line":"            self.network_api.migrate_instance_finish(ctxt, instance, migration)"},{"line_number":5577,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5201f7_84dbc11a","side":"PARENT","line":5574,"in_reply_to":"ba5201f7_fd76f3a1","updated":"2017-01-10 21:15:37.000000000","message":"yes it will. I left a comment in next file, where I think we can check if network is already setup.","commit_id":"67ed606c8933008f09732031d90f1da730f0cd41"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"5b92b39585ae882079991a9c6133518d91220134","unresolved":false,"context_lines":[{"line_number":5499,"context_line":""},{"line_number":5500,"context_line":"        return (do_cleanup, destroy_disks)"},{"line_number":5501,"context_line":""},{"line_number":5502,"context_line":"    @wrap_exception()"},{"line_number":5503,"context_line":"    def _post_live_migration_network_setup(self, ctxt, instance, dest):"},{"line_number":5504,"context_line":"        migration \u003d {\u0027source_compute\u0027: self.host, \u0027dest_compute\u0027: dest}"},{"line_number":5505,"context_line":"        self.network_api.migrate_instance_finish(ctxt, instance, migration)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5201f7_5dc45f91","line":5502,"updated":"2017-01-10 15:00:46.000000000","message":"I missed this one in previous patch set, but there should be @wrap_instance_fault decorator, I think. If network setup fails for particular VM operator might want to have this logged somewhere.","commit_id":"0dd6f99205c6622a30822aa015a88a0b15f78349"},{"author":{"_account_id":18339,"name":"Sivasathurappan Radhakrishnan","email":"siva.radhakrishnan@intel.com","username":"sivakrishnan"},"change_message_id":"9a5555170761b9d19694ebe5a3f7c0bd7fad1339","unresolved":false,"context_lines":[{"line_number":5499,"context_line":""},{"line_number":5500,"context_line":"        return (do_cleanup, destroy_disks)"},{"line_number":5501,"context_line":""},{"line_number":5502,"context_line":"    @wrap_exception()"},{"line_number":5503,"context_line":"    def _post_live_migration_network_setup(self, ctxt, instance, dest):"},{"line_number":5504,"context_line":"        migration \u003d {\u0027source_compute\u0027: self.host, \u0027dest_compute\u0027: dest}"},{"line_number":5505,"context_line":"        self.network_api.migrate_instance_finish(ctxt, instance, migration)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5201f7_af4075a6","line":5502,"in_reply_to":"ba5201f7_5dc45f91","updated":"2017-01-11 15:51:33.000000000","message":"Done","commit_id":"0dd6f99205c6622a30822aa015a88a0b15f78349"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":19590,"name":"Sarafraj Singh","email":"Sarafraj.Singh@intel.com","username":"sarafrajsingh"},"change_message_id":"883dcc1950f673ebbdce301807c3776d54c6a3a5","unresolved":false,"context_lines":[{"line_number":6415,"context_line":"            elif info.type \u003d\u003d libvirt.VIR_DOMAIN_JOB_COMPLETED:"},{"line_number":6416,"context_line":"                # Migration is all done"},{"line_number":6417,"context_line":"                LOG.info(_LI(\"Migration operation has completed\"),"},{"line_number":6418,"context_line":"                         instance\u003dinstance)"},{"line_number":6419,"context_line":"                post_method(context, instance, dest, block_migration,"},{"line_number":6420,"context_line":"                            migrate_data)"},{"line_number":6421,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5201f7_a4bfe5a8","line":6418,"updated":"2017-01-10 21:15:37.000000000","message":"This seems to be appropriate place to check if we achieve this by switching to post-copy, if no then setup network at destination. If this VM got migrated with post copy then make it nop, as networking has already setup when the post-copy was triggered.\nOr is there a better way to check if network is already setup at destination?","commit_id":"0dd6f99205c6622a30822aa015a88a0b15f78349"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"1b5e2bba0b5c8cf9c251f1cec3a9367f6938714f","unresolved":false,"context_lines":[{"line_number":6415,"context_line":"            elif info.type \u003d\u003d libvirt.VIR_DOMAIN_JOB_COMPLETED:"},{"line_number":6416,"context_line":"                # Migration is all done"},{"line_number":6417,"context_line":"                LOG.info(_LI(\"Migration operation has completed\"),"},{"line_number":6418,"context_line":"                         instance\u003dinstance)"},{"line_number":6419,"context_line":"                post_method(context, instance, dest, block_migration,"},{"line_number":6420,"context_line":"                            migrate_data)"},{"line_number":6421,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5201f7_9f44d874","line":6418,"in_reply_to":"ba5201f7_a4bfe5a8","updated":"2017-01-11 08:59:22.000000000","message":"migrate_data contains migration object which contains information whether this was a post copy live migration or not.","commit_id":"0dd6f99205c6622a30822aa015a88a0b15f78349"}],"nova/virt/libvirt/migration.py":[{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"0f6d6e8df05c49a5a84882a4d5c20e677ab16099","unresolved":false,"context_lines":[{"line_number":412,"context_line":"                 instance\u003dinstance)"},{"line_number":413,"context_line":"        migration.status \u003d \u0027running (post-copy)\u0027"},{"line_number":414,"context_line":"        migration.save()"},{"line_number":415,"context_line":"    network_setup(context, instance, dest)"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"def run_tasks(guest, instance, active_migrations, on_migration_failure,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_56689bba","line":415,"updated":"2016-12-20 10:44:42.000000000","message":"If I remember correctly switch to post copy mode is an asynchronous call, so this might break networking on source node. You probably would need to base on QEMU events there. I will try to confirm that with QEMU folks.","commit_id":"32735c308940469c9e0d364ead49e264bd00412f"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"f407c3b925f6dca1fbd8f9c97864421967284493","unresolved":false,"context_lines":[{"line_number":412,"context_line":"                 instance\u003dinstance)"},{"line_number":413,"context_line":"        migration.status \u003d \u0027running (post-copy)\u0027"},{"line_number":414,"context_line":"        migration.save()"},{"line_number":415,"context_line":"    network_setup(context, instance, dest)"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"def run_tasks(context, guest, instance, network_setup, dest, active_migrations,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_8a9b1f72","line":415,"updated":"2017-01-09 11:49:28.000000000","message":"Shouldn\u0027t this be a part of else block? In case post-copy switch failed this might cause some harm to the network configuration of the instance.","commit_id":"79a033cb9f3292e4b10c5674c83deadfb243dde4"},{"author":{"_account_id":18339,"name":"Sivasathurappan Radhakrishnan","email":"siva.radhakrishnan@intel.com","username":"sivakrishnan"},"change_message_id":"c5a4cba4cd381d1e9ff0e32f8601e7569ae57ff2","unresolved":false,"context_lines":[{"line_number":430,"context_line":"    provided instance object. The active migrations dict"},{"line_number":431,"context_line":"    should use instance UUIDs for keys and a queue of"},{"line_number":432,"context_line":"    tasks as the values."},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"    Currently the valid tasks that can be requested"},{"line_number":435,"context_line":"    are \"pause\" and \"force-complete\". Other tasks will"},{"line_number":436,"context_line":"    be ignored."},{"line_number":437,"context_line":"    \"\"\""},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"    tasks \u003d active_migrations.get(instance.uuid, deque())"},{"line_number":440,"context_line":"    while tasks:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5201f7_2f4ba588","line":437,"range":{"start_line":433,"start_character":0,"end_line":437,"end_character":7},"updated":"2017-01-11 15:56:14.000000000","message":"I don\u0027t think so we are checking for \u0027pause\u0027 task below.","commit_id":"0dd6f99205c6622a30822aa015a88a0b15f78349"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"beda773c3080b89dd68e6a9d8c87bef74b879de4","unresolved":false,"context_lines":[{"line_number":403,"context_line":"    except libvirt.libvirtError as e:"},{"line_number":404,"context_line":"        LOG.warning(_LW(\"Failed to switch to post-copy live \""},{"line_number":405,"context_line":"                        \"migration: %s\"),"},{"line_number":406,"context_line":"                    e, instance\u003dinstance)"},{"line_number":407,"context_line":"    else:"},{"line_number":408,"context_line":"        # NOTE(ltomas): Change the migration status to indicate that"},{"line_number":409,"context_line":"        # it is in post-copy active mode, i.e., the VM at"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a3905b3_95346c4a","line":406,"updated":"2017-01-23 16:42:59.000000000","message":"If we hit here, I think we have a VM with no network because the network_setup method is never called?\n\nIs that true? Or do we update neutron anyway?","commit_id":"aeef9bdfdc2783c2e3da64c2ddc4f4ba55248750"},{"author":{"_account_id":18339,"name":"Sivasathurappan Radhakrishnan","email":"siva.radhakrishnan@intel.com","username":"sivakrishnan"},"change_message_id":"4714d114df58ec6db5f6d0b24e124bec655d6d12","unresolved":false,"context_lines":[{"line_number":403,"context_line":"    except libvirt.libvirtError as e:"},{"line_number":404,"context_line":"        LOG.warning(_LW(\"Failed to switch to post-copy live \""},{"line_number":405,"context_line":"                        \"migration: %s\"),"},{"line_number":406,"context_line":"                    e, instance\u003dinstance)"},{"line_number":407,"context_line":"    else:"},{"line_number":408,"context_line":"        # NOTE(ltomas): Change the migration status to indicate that"},{"line_number":409,"context_line":"        # it is in post-copy active mode, i.e., the VM at"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a430d35_75095c2c","line":406,"in_reply_to":"5a3905b3_95346c4a","updated":"2017-02-03 17:53:36.000000000","message":"If postcopy fails it switches to pre copy mode and does the migration. I feel end user/operator should be notified about it.","commit_id":"aeef9bdfdc2783c2e3da64c2ddc4f4ba55248750"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"05e43657410ffedeed23561eb4a9d7484159db54","unresolved":false,"context_lines":[{"line_number":403,"context_line":"    except libvirt.libvirtError as e:"},{"line_number":404,"context_line":"        LOG.warning(_LW(\"Failed to switch to post-copy live \""},{"line_number":405,"context_line":"                        \"migration: %s\"),"},{"line_number":406,"context_line":"                    e, instance\u003dinstance)"},{"line_number":407,"context_line":"    else:"},{"line_number":408,"context_line":"        # NOTE(ltomas): Change the migration status to indicate that"},{"line_number":409,"context_line":"        # it is in post-copy active mode, i.e., the VM at"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a430d35_03cfeb56","line":406,"in_reply_to":"5a3905b3_95346c4a","updated":"2017-02-04 21:14:52.000000000","message":"We do update neutron anyway during post_live_migration steps - https://review.openstack.org/#/c/413021/9/nova/compute/manager.py@5580","commit_id":"aeef9bdfdc2783c2e3da64c2ddc4f4ba55248750"},{"author":{"_account_id":18339,"name":"Sivasathurappan Radhakrishnan","email":"siva.radhakrishnan@intel.com","username":"sivakrishnan"},"change_message_id":"73c0c3d516f5de1611bd679352a3f7e48db6045c","unresolved":false,"context_lines":[{"line_number":412,"context_line":"                 instance\u003dinstance)"},{"line_number":413,"context_line":"        migration.status \u003d \u0027running (post-copy)\u0027"},{"line_number":414,"context_line":"        migration.save()"},{"line_number":415,"context_line":"        network_setup(context, instance, dest)"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"def run_tasks(context, guest, instance, network_setup, dest, active_migrations,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a3905b3_3b29b5e6","line":415,"range":{"start_line":415,"start_character":7,"end_line":415,"end_character":46},"updated":"2017-01-24 14:32:09.000000000","message":"Pawel\u0027s comment from first patch \"If I remember correctly switch to post copy mode is an asynchronous call, so this might break networking on source node. You probably would need to base on QEMU events there. I will try to confirm that with QEMU folks.\"","commit_id":"aeef9bdfdc2783c2e3da64c2ddc4f4ba55248750"}]}
