)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0cb1182b6418099bd44b2db915ef4fc05a094b4e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When event \u0027EVENT_LIFECYCLE_STARTED\u0027 is emitted with detail type"},{"line_number":10,"context_line":"1 (VIR_DOMAIN_EVENT_STARTED_MIGRATED), port binding is done there"},{"line_number":11,"context_line":"there to avoid any network outages during migration"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I14b64e6290ef2cdf4a24785d0b6bc38b99b1c5a4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"fa31d9ce_14d9f2f3","line":11,"updated":"2017-02-10 18:25:24.000000000","message":"Lets add some of the context about the event ordering we should expect:\nhttps://github.com/libvirt/libvirt/blob/71bbe65311b17c6f1c2a79f4fe1a1be636bdbfda/src/libvirt-domain.c#L8983","commit_id":"b1968720c5eed133b9b6f407b2bdc040b890e64e"}],"nova/compute/manager.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a945ab2324df697a133f6cd630e4e4bb96ce00f8","unresolved":false,"context_lines":[{"line_number":1089,"context_line":"        # with detail type 1 (VIR_DOMAIN_EVENT_STARTED_MIGRATED), port binding"},{"line_number":1090,"context_line":"        # can be done here to avoid any network outages during migration."},{"line_number":1091,"context_line":"        if (event.detail \u003d\u003d 1 and"},{"line_number":1092,"context_line":"            event.get_transition() \u003d\u003d virtevent.EVENT_LIFECYCLE_STARTED):"},{"line_number":1093,"context_line":"            LOG.debug(\u0027This is an migrated instance, port binding to happen\u0027)"},{"line_number":1094,"context_line":"            self._post_live_migration_network_setup(context, instance,"},{"line_number":1095,"context_line":"                                                    self.host)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_546a8a81","line":1092,"updated":"2017-02-10 18:04:08.000000000","message":"Useful notes about when these events occur:\n\nhttps://github.com/libvirt/libvirt/blob/0857a3bf5ceff01a62593a5e3389246948dd11a4/src/qemu/qemu_process.c#L705\nhttps://github.com/libvirt/libvirt/blob/71bbe65311b17c6f1c2a79f4fe1a1be636bdbfda/src/libvirt-domain.c#L8983","commit_id":"b1968720c5eed133b9b6f407b2bdc040b890e64e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0cb1182b6418099bd44b2db915ef4fc05a094b4e","unresolved":false,"context_lines":[{"line_number":1089,"context_line":"        # with detail type 1 (VIR_DOMAIN_EVENT_STARTED_MIGRATED), port binding"},{"line_number":1090,"context_line":"        # can be done here to avoid any network outages during migration."},{"line_number":1091,"context_line":"        if (event.detail \u003d\u003d 1 and"},{"line_number":1092,"context_line":"            event.get_transition() \u003d\u003d virtevent.EVENT_LIFECYCLE_STARTED):"},{"line_number":1093,"context_line":"            LOG.debug(\u0027This is an migrated instance, port binding to happen\u0027)"},{"line_number":1094,"context_line":"            self._post_live_migration_network_setup(context, instance,"},{"line_number":1095,"context_line":"                                                    self.host)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_f4545e55","line":1092,"in_reply_to":"fa31d9ce_546a8a81","updated":"2017-02-10 18:25:24.000000000","message":"its tempting to do this for post copy and regular live-migrates, so we switch at the best possible time for both.","commit_id":"b1968720c5eed133b9b6f407b2bdc040b890e64e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0cb1182b6418099bd44b2db915ef4fc05a094b4e","unresolved":false,"context_lines":[{"line_number":1091,"context_line":"        if (event.detail \u003d\u003d 1 and"},{"line_number":1092,"context_line":"            event.get_transition() \u003d\u003d virtevent.EVENT_LIFECYCLE_STARTED):"},{"line_number":1093,"context_line":"            LOG.debug(\u0027This is an migrated instance, port binding to happen\u0027)"},{"line_number":1094,"context_line":"            self._post_live_migration_network_setup(context, instance,"},{"line_number":1095,"context_line":"                                                    self.host)"},{"line_number":1096,"context_line":""},{"line_number":1097,"context_line":"    def handle_events(self, event):"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_74794efc","line":1094,"updated":"2017-02-10 18:25:24.000000000","message":"I would call self.network_api directly here (after/part of rebase on master :))","commit_id":"b1968720c5eed133b9b6f407b2bdc040b890e64e"}],"nova/virt/event.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0cb1182b6418099bd44b2db915ef4fc05a094b4e","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    without need for polling."},{"line_number":99,"context_line":"    \"\"\""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def __init__(self, uuid, transition, detail\u003dNone, timestamp\u003dNone):"},{"line_number":102,"context_line":"        super(LifecycleEvent, self).__init__(uuid, timestamp)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        self.transition \u003d transition"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_94308258","line":101,"range":{"start_line":101,"start_character":41,"end_line":101,"end_character":47},"updated":"2017-02-10 18:25:24.000000000","message":"Its safer not to change the argument order, for the folks who pass this in order.","commit_id":"b1968720c5eed133b9b6f407b2bdc040b890e64e"}],"nova/virt/libvirt/host.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0cb1182b6418099bd44b2db915ef4fc05a094b4e","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            transition \u003d virtevent.EVENT_LIFECYCLE_PAUSED"},{"line_number":174,"context_line":"        elif event \u003d\u003d libvirt.VIR_DOMAIN_EVENT_RESUMED:"},{"line_number":175,"context_line":"            transition \u003d virtevent.EVENT_LIFECYCLE_RESUMED"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        if transition is not None:"},{"line_number":178,"context_line":"            self._queue_event(virtevent.LifecycleEvent(uuid, detail,"},{"line_number":179,"context_line":"                              transition))"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_9436c201","line":176,"updated":"2017-02-10 18:25:24.000000000","message":"So here we want to check for either of these:\n\n  reason \u003d VIR_DOMAIN_PAUSED_POSTCOPY;\n  detail \u003d VIR_DOMAIN_EVENT_SUSPENDED_POSTCOPY;\n\n  reason \u003d VIR_DOMAIN_PAUSED_MIGRATION;\n  detail \u003d VIR_DOMAIN_EVENT_SUSPENDED_MIGRATED;\n\nWhy not convert that to something like:\n\n  reason \u003d None, or\n  reason \u003d virtevent.POST_COPY_COMPLETE or\n  reason \u003d virtevent.MIGRATION_COMPLETE\n\nThen we just pass that into LifecycleEvent as normal?","commit_id":"b1968720c5eed133b9b6f407b2bdc040b890e64e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0cb1182b6418099bd44b2db915ef4fc05a094b4e","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        if transition is not None:"},{"line_number":178,"context_line":"            self._queue_event(virtevent.LifecycleEvent(uuid, detail,"},{"line_number":179,"context_line":"                              transition))"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def _close_callback(self, conn, reason, opaque):"},{"line_number":182,"context_line":"        close_info \u003d {\u0027conn\u0027: conn, \u0027reason\u0027: reason}"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_344a76c6","line":179,"updated":"2017-02-10 18:25:24.000000000","message":"is this order correct?","commit_id":"b1968720c5eed133b9b6f407b2bdc040b890e64e"}]}
