)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4832ffeb2f1791912f45b3adaa08bc218e12d924","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- This patch detaches all directmode sriov interfaces before calulateing"},{"line_number":10,"context_line":"  the updated xml for the destination imediately before starting the migration."},{"line_number":11,"context_line":"- This change modeifes post_live_migration_at_destination to check"},{"line_number":12,"context_line":"  if an instance has all interfecs defined in the guest xml and attachs"},{"line_number":13,"context_line":"  the missing sriov interfaces if they are not present."},{"line_number":14,"context_line":"- This change adds a release note for the sriov live migration feature."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"9fdfeff1_1e4f1a35","line":11,"range":{"start_line":11,"start_character":14,"end_line":11,"end_character":22},"updated":"2019-02-19 16:30:21.000000000","message":"modifies","commit_id":"3c032b2f16b9be49bdc4d2195504772cb43370c2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"36d3e7f83d6535795a30c5aec0e298ac66dd0597","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- This patch detaches all directmode sriov interfaces before calulateing"},{"line_number":10,"context_line":"  the updated xml for the destination imediately before starting the migration."},{"line_number":11,"context_line":"- This change modeifes post_live_migration_at_destination to check"},{"line_number":12,"context_line":"  if an instance has all interfecs defined in the guest xml and attachs"},{"line_number":13,"context_line":"  the missing sriov interfaces if they are not present."},{"line_number":14,"context_line":"- This change adds a release note for the sriov live migration feature."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"9fdfeff1_058f662a","line":11,"range":{"start_line":11,"start_character":14,"end_line":11,"end_character":22},"updated":"2019-02-25 11:40:08.000000000","message":"still modifies","commit_id":"8c9c297ec7e03a8e2e2ea844941ddfbe166e8a30"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0bc7a1772f34b3fa4653b92e799700dd3114f530","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- This patch detaches all directmode sriov interfaces before calulateing"},{"line_number":10,"context_line":"  the updated xml for the destination imediately before starting the migration."},{"line_number":11,"context_line":"- This change modeifes post_live_migration_at_destination to check"},{"line_number":12,"context_line":"  if an instance has all interfecs defined in the guest xml and attachs"},{"line_number":13,"context_line":"  the missing sriov interfaces if they are not present."},{"line_number":14,"context_line":"- This change adds a release note for the sriov live migration feature."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"9fdfeff1_3f9b78c9","line":11,"range":{"start_line":11,"start_character":14,"end_line":11,"end_character":22},"in_reply_to":"9fdfeff1_058f662a","updated":"2019-02-26 12:41:16.000000000","message":"Done","commit_id":"8c9c297ec7e03a8e2e2ea844941ddfbe166e8a30"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"52dcf0eb69cb06926414dec406e0ce2183a3ec49","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"libvirt: auto detach/attach sriov ports on migration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- This patch detaches all directmode sriov interfaces before calulateing"},{"line_number":10,"context_line":"  the updated xml for the destination imediately before starting the migration."},{"line_number":11,"context_line":"- This change modifies post_live_migration_at_destination to check"},{"line_number":12,"context_line":"  if an instance has all interfecs defined in the guest xml and attachs"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"5fc1f717_92c41994","line":9,"range":{"start_line":9,"start_character":61,"end_line":9,"end_character":72},"updated":"2019-04-05 12:16:40.000000000","message":"calculating","commit_id":"b6c13a570943d60a27c38372997c0f9dec98c78e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"52dcf0eb69cb06926414dec406e0ce2183a3ec49","unresolved":false,"context_lines":[{"line_number":7,"context_line":"libvirt: auto detach/attach sriov ports on migration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- This patch detaches all directmode sriov interfaces before calulateing"},{"line_number":10,"context_line":"  the updated xml for the destination imediately before starting the migration."},{"line_number":11,"context_line":"- This change modifies post_live_migration_at_destination to check"},{"line_number":12,"context_line":"  if an instance has all interfecs defined in the guest xml and attachs"},{"line_number":13,"context_line":"  the missing sriov interfaces if they are not present."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"5fc1f717_52beb1ff","line":10,"range":{"start_line":10,"start_character":38,"end_line":10,"end_character":48},"updated":"2019-04-05 12:16:40.000000000","message":"immediately","commit_id":"b6c13a570943d60a27c38372997c0f9dec98c78e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"52dcf0eb69cb06926414dec406e0ce2183a3ec49","unresolved":false,"context_lines":[{"line_number":9,"context_line":"- This patch detaches all directmode sriov interfaces before calulateing"},{"line_number":10,"context_line":"  the updated xml for the destination imediately before starting the migration."},{"line_number":11,"context_line":"- This change modifies post_live_migration_at_destination to check"},{"line_number":12,"context_line":"  if an instance has all interfecs defined in the guest xml and attachs"},{"line_number":13,"context_line":"  the missing sriov interfaces if they are not present."},{"line_number":14,"context_line":"- This change adds a release note for the sriov live migration feature."},{"line_number":15,"context_line":"- This change extend the base virt driver interface with a new method"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"5fc1f717_3239a5a2","line":12,"range":{"start_line":12,"start_character":64,"end_line":12,"end_character":71},"updated":"2019-04-05 12:16:40.000000000","message":"attaches","commit_id":"b6c13a570943d60a27c38372997c0f9dec98c78e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"52dcf0eb69cb06926414dec406e0ce2183a3ec49","unresolved":false,"context_lines":[{"line_number":12,"context_line":"  if an instance has all interfecs defined in the guest xml and attachs"},{"line_number":13,"context_line":"  the missing sriov interfaces if they are not present."},{"line_number":14,"context_line":"- This change adds a release note for the sriov live migration feature."},{"line_number":15,"context_line":"- This change extend the base virt driver interface with a new method"},{"line_number":16,"context_line":"  rollback_live_migration_at_source and invokes it from"},{"line_number":17,"context_line":"  rollback_live_migration in the compute manager."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"5fc1f717_d23f0185","line":15,"range":{"start_line":15,"start_character":14,"end_line":15,"end_character":20},"updated":"2019-04-05 12:16:40.000000000","message":"extends","commit_id":"b6c13a570943d60a27c38372997c0f9dec98c78e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"94191e222b79da19c3891e9e80a6b2e4c96f29d4","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- This patch detaches all directmode sriov interfaces before calculating"},{"line_number":10,"context_line":"  the updated xml for the destination immediately before starting the migration."},{"line_number":11,"context_line":"- This change modifies post_live_migration_at_destination to check"},{"line_number":12,"context_line":"  if an instance has all interfecs defined in the guest xml and attaches"},{"line_number":13,"context_line":"  the missing sriov interfaces if they are not present."},{"line_number":14,"context_line":"- This change adds a release note for the sriov live migration feature."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":28,"id":"dfbec78f_c606aa21","line":11,"updated":"2019-05-03 20:01:25.000000000","message":"What if the dest host is stein and doesn\u0027t have this code? I haven\u0027t been following this series, but are we properly managing rolling upgrades in the controller (conductor) to not allow SRIOV live migration if both computes are too old?","commit_id":"d966ffabc373b4549ab47d3d3487f398073ce2bf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8eeded46c37e918d016749a8a3679016a62cf336","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- This patch detaches all directmode sriov interfaces before calculating"},{"line_number":10,"context_line":"  the updated xml for the destination immediately before starting the migration."},{"line_number":11,"context_line":"- This change modifies post_live_migration_at_destination to check"},{"line_number":12,"context_line":"  if an instance has all interfecs defined in the guest xml and attaches"},{"line_number":13,"context_line":"  the missing sriov interfaces if they are not present."},{"line_number":14,"context_line":"- This change adds a release note for the sriov live migration feature."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":28,"id":"dfbec78f_d13426e1","line":11,"in_reply_to":"dfbec78f_c606aa21","updated":"2019-05-03 20:04:06.000000000","message":"I guess: https://review.opendev.org/#/c/620115/35/nova/conductor/tasks/live_migrate.py","commit_id":"d966ffabc373b4549ab47d3d3487f398073ce2bf"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"631257933e62b94156a3ad7afca1c08eebc85955","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- This patch detaches all directmode sriov interfaces before calculating"},{"line_number":10,"context_line":"  the updated xml for the destination immediately before starting the migration."},{"line_number":11,"context_line":"- This change modifies post_live_migration_at_destination to check"},{"line_number":12,"context_line":"  if an instance has all interfecs defined in the guest xml and attaches"},{"line_number":13,"context_line":"  the missing sriov interfaces if they are not present."},{"line_number":14,"context_line":"- This change adds a release note for the sriov live migration feature."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":28,"id":"dfbec78f_b44b9b85","line":11,"in_reply_to":"dfbec78f_d13426e1","updated":"2019-05-04 14:11:19.000000000","message":"yes we have a check in the conductor that was added in a previous patch in that previous patch in the series to ensure that we will fail the migration if both compute services are not knew enough.","commit_id":"d966ffabc373b4549ab47d3d3487f398073ce2bf"}],"nova/compute/manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"94191e222b79da19c3891e9e80a6b2e4c96f29d4","unresolved":false,"context_lines":[{"line_number":7081,"context_line":"        #                  for nova-network)"},{"line_number":7082,"context_line":"        # NOTE(mriedem): This is a no-op for neutron."},{"line_number":7083,"context_line":"        self.network_api.setup_networks_on_host(context, instance, self.host)"},{"line_number":7084,"context_line":"        self.driver.rollback_live_migration_at_source(context, instance,"},{"line_number":7085,"context_line":"                                                      migrate_data)"},{"line_number":7086,"context_line":"        bdms \u003d objects.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":7087,"context_line":"                context, instance.uuid)"}],"source_content_type":"text/x-python","patch_set":28,"id":"dfbec78f_e62ace8e","line":7084,"range":{"start_line":7084,"start_character":20,"end_line":7084,"end_character":53},"updated":"2019-05-03 20:01:25.000000000","message":"Can this raise any weird errors that we should be logging but continue to try and cleanup other stuff below like volume attachments? This rollback method in general is super flaky in how graceful it handles failures but keeps going (it doesn\u0027t really try to keep going, which kind of sucks).","commit_id":"d966ffabc373b4549ab47d3d3487f398073ce2bf"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"631257933e62b94156a3ad7afca1c08eebc85955","unresolved":false,"context_lines":[{"line_number":7081,"context_line":"        #                  for nova-network)"},{"line_number":7082,"context_line":"        # NOTE(mriedem): This is a no-op for neutron."},{"line_number":7083,"context_line":"        self.network_api.setup_networks_on_host(context, instance, self.host)"},{"line_number":7084,"context_line":"        self.driver.rollback_live_migration_at_source(context, instance,"},{"line_number":7085,"context_line":"                                                      migrate_data)"},{"line_number":7086,"context_line":"        bdms \u003d objects.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":7087,"context_line":"                context, instance.uuid)"}],"source_content_type":"text/x-python","patch_set":28,"id":"dfbec78f_0f192e78","line":7084,"range":{"start_line":7084,"start_character":20,"end_line":7084,"end_character":53},"in_reply_to":"dfbec78f_e62ace8e","updated":"2019-05-04 14:11:19.000000000","message":"the default implementation is a noop\nthe libvirt version check if the number of interface in the\nxml is less then should be connected to the vm and call the virt driver attach_interface method to reattach the remaining interfaces. interally attach_interface calls plug \nwhich may raise VirtualInterfacePlugException but it will only do so if the vif_type is unknown. given we are reattaching a vif that we previously detached from the vm on the same host that should never happen.\n\nwith that said i agree that it would be nice if this function in general was more robost.","commit_id":"d966ffabc373b4549ab47d3d3487f398073ce2bf"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c0f2d0c06609b69ec56847f50f7881a1169f065d","unresolved":false,"context_lines":[{"line_number":9890,"context_line":""},{"line_number":9891,"context_line":"        _test_normal()"},{"line_number":9892,"context_line":""},{"line_number":9893,"context_line":"        vif_direct \u003d objects.VIFMigrateData(port_id\u003duuids.port_id,"},{"line_number":9894,"context_line":"                                            source_vif\u003dsource_vif_direct)"},{"line_number":9895,"context_line":"        migrate_data \u003d objects.LibvirtLiveMigrateData("},{"line_number":9896,"context_line":"            serial_listen_addr\u003d\u0027\u0027, target_connect_addr\u003dNone,"},{"line_number":9897,"context_line":"            bdms\u003d[], block_migration\u003dFalse, vifs\u003d[vif_direct])"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_da2287b9","line":9894,"range":{"start_line":9893,"start_character":0,"end_line":9894,"end_character":73},"updated":"2019-02-12 17:43:12.000000000","message":"I don\u0027t think you use it earlier, so could you move the definition for source_vif_direct down here where we first use it. I was skimming trying to figure out why you wanted this before now","commit_id":"9e405dc4fc323c2038ea65279e8f6533b02a86c9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6dfa376a3a63f72e7f8d83a07751704b26a76917","unresolved":false,"context_lines":[{"line_number":9890,"context_line":""},{"line_number":9891,"context_line":"        _test_normal()"},{"line_number":9892,"context_line":""},{"line_number":9893,"context_line":"        vif_direct \u003d objects.VIFMigrateData(port_id\u003duuids.port_id,"},{"line_number":9894,"context_line":"                                            source_vif\u003dsource_vif_direct)"},{"line_number":9895,"context_line":"        migrate_data \u003d objects.LibvirtLiveMigrateData("},{"line_number":9896,"context_line":"            serial_listen_addr\u003d\u0027\u0027, target_connect_addr\u003dNone,"},{"line_number":9897,"context_line":"            bdms\u003d[], block_migration\u003dFalse, vifs\u003d[vif_direct])"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_40530a18","line":9894,"range":{"start_line":9893,"start_character":0,"end_line":9894,"end_character":73},"in_reply_to":"9fdfeff1_da2287b9","updated":"2019-02-12 18:29:57.000000000","message":"from line 9855 ill check but i think so.\nand the reason it is above is i copy pasted the\ndefinition of \nsource_vif_normal to create source_vif_direct and just didnt move it.","commit_id":"9e405dc4fc323c2038ea65279e8f6533b02a86c9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c0f2d0c06609b69ec56847f50f7881a1169f065d","unresolved":false,"context_lines":[{"line_number":9929,"context_line":"            migrate.assert_called()"},{"line_number":9930,"context_line":"            detach.asset_called_once()"},{"line_number":9931,"context_line":""},{"line_number":9932,"context_line":"        _test_mix()"},{"line_number":9933,"context_line":""},{"line_number":9934,"context_line":"    @mock.patch.object(host.Host, \u0027has_min_version\u0027, return_value\u003dTrue)"},{"line_number":9935,"context_line":"    @mock.patch.object(fakelibvirt.virDomain, \"migrateToURI3\")"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_ba0ea338","line":9932,"updated":"2019-02-12 17:43:12.000000000","message":"Again, this _really_ feels like three different tests. I\u0027m not going to block on it but consider splitting this up if you need to rework","commit_id":"9e405dc4fc323c2038ea65279e8f6533b02a86c9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"36d3e7f83d6535795a30c5aec0e298ac66dd0597","unresolved":false,"context_lines":[{"line_number":9807,"context_line":"            id\u003duuids.port_id, type\u003dnetwork_model.VIF_TYPE_OVS,"},{"line_number":9808,"context_line":"            vnic_type\u003dnetwork_model.VNIC_TYPE_NORMAL, details\u003d{\u0027foo\u0027: \u0027bar\u0027},"},{"line_number":9809,"context_line":"            profile\u003d{\u0027binding:host_id\u0027: \u0027fake-source-host\u0027})"},{"line_number":9810,"context_line":"        source_vif_direct \u003d network_model.VIF("},{"line_number":9811,"context_line":"            id\u003duuids.port_id, type\u003dnetwork_model.VIF_TYPE_OVS,"},{"line_number":9812,"context_line":"            vnic_type\u003dnetwork_model.VNIC_TYPE_DIRECT, details\u003d{\u0027foo\u0027: \u0027bar\u0027},"},{"line_number":9813,"context_line":"            profile\u003d{\u0027binding:host_id\u0027: \u0027fake-source-host\u0027})"},{"line_number":9814,"context_line":"        vif \u003d objects.VIFMigrateData(port_id\u003duuids.port_id,"},{"line_number":9815,"context_line":"                                     source_vif\u003dsource_vif_normal)"},{"line_number":9816,"context_line":"        migrate_data \u003d objects.LibvirtLiveMigrateData("}],"source_content_type":"text/x-python","patch_set":16,"id":"9fdfeff1_e58ee225","line":9813,"range":{"start_line":9810,"start_character":0,"end_line":9813,"end_character":60},"updated":"2019-02-25 11:40:08.000000000","message":"You undid the changes of PS14 where you moved this down to where it was used :(","commit_id":"8c9c297ec7e03a8e2e2ea844941ddfbe166e8a30"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0bc7a1772f34b3fa4653b92e799700dd3114f530","unresolved":false,"context_lines":[{"line_number":9807,"context_line":"            id\u003duuids.port_id, type\u003dnetwork_model.VIF_TYPE_OVS,"},{"line_number":9808,"context_line":"            vnic_type\u003dnetwork_model.VNIC_TYPE_NORMAL, details\u003d{\u0027foo\u0027: \u0027bar\u0027},"},{"line_number":9809,"context_line":"            profile\u003d{\u0027binding:host_id\u0027: \u0027fake-source-host\u0027})"},{"line_number":9810,"context_line":"        source_vif_direct \u003d network_model.VIF("},{"line_number":9811,"context_line":"            id\u003duuids.port_id, type\u003dnetwork_model.VIF_TYPE_OVS,"},{"line_number":9812,"context_line":"            vnic_type\u003dnetwork_model.VNIC_TYPE_DIRECT, details\u003d{\u0027foo\u0027: \u0027bar\u0027},"},{"line_number":9813,"context_line":"            profile\u003d{\u0027binding:host_id\u0027: \u0027fake-source-host\u0027})"},{"line_number":9814,"context_line":"        vif \u003d objects.VIFMigrateData(port_id\u003duuids.port_id,"},{"line_number":9815,"context_line":"                                     source_vif\u003dsource_vif_normal)"},{"line_number":9816,"context_line":"        migrate_data \u003d objects.LibvirtLiveMigrateData("}],"source_content_type":"text/x-python","patch_set":16,"id":"9fdfeff1_ffa090f5","line":9813,"range":{"start_line":9810,"start_character":0,"end_line":9813,"end_character":60},"in_reply_to":"9fdfeff1_e58ee225","updated":"2019-02-26 12:41:16.000000000","message":"Done","commit_id":"8c9c297ec7e03a8e2e2ea844941ddfbe166e8a30"}],"nova/virt/driver.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c0f2d0c06609b69ec56847f50f7881a1169f065d","unresolved":false,"context_lines":[{"line_number":1062,"context_line":"        raise NotImplementedError()"},{"line_number":1063,"context_line":""},{"line_number":1064,"context_line":"    def rollback_live_migration_at_source(self, context, instance,"},{"line_number":1065,"context_line":"                                          migrate_data\u003dNone):"},{"line_number":1066,"context_line":"        \"\"\"Clean up destination node after a failed live migration."},{"line_number":1067,"context_line":""},{"line_number":1068,"context_line":"        :param context: security context"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_c5394cd7","line":1065,"range":{"start_line":1065,"start_character":54,"end_line":1065,"end_character":59},"updated":"2019-02-12 17:43:12.000000000","message":"Would this ever be unset? If not, why provide a default?","commit_id":"9e405dc4fc323c2038ea65279e8f6533b02a86c9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6dfa376a3a63f72e7f8d83a07751704b26a76917","unresolved":false,"context_lines":[{"line_number":1062,"context_line":"        raise NotImplementedError()"},{"line_number":1063,"context_line":""},{"line_number":1064,"context_line":"    def rollback_live_migration_at_source(self, context, instance,"},{"line_number":1065,"context_line":"                                          migrate_data\u003dNone):"},{"line_number":1066,"context_line":"        \"\"\"Clean up destination node after a failed live migration."},{"line_number":1067,"context_line":""},{"line_number":1068,"context_line":"        :param context: security context"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_4066aac3","line":1065,"range":{"start_line":1065,"start_character":54,"end_line":1065,"end_character":59},"in_reply_to":"9fdfeff1_c5394cd7","updated":"2019-02-12 18:29:57.000000000","message":"ya good point ill remove the default","commit_id":"9e405dc4fc323c2038ea65279e8f6533b02a86c9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c0f2d0c06609b69ec56847f50f7881a1169f065d","unresolved":false,"context_lines":[{"line_number":1063,"context_line":""},{"line_number":1064,"context_line":"    def rollback_live_migration_at_source(self, context, instance,"},{"line_number":1065,"context_line":"                                          migrate_data\u003dNone):"},{"line_number":1066,"context_line":"        \"\"\"Clean up destination node after a failed live migration."},{"line_number":1067,"context_line":""},{"line_number":1068,"context_line":"        :param context: security context"},{"line_number":1069,"context_line":"        :param instance: instance object that was being migrated"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_e5057011","line":1066,"range":{"start_line":1066,"start_character":20,"end_line":1066,"end_character":31},"updated":"2019-02-12 17:43:12.000000000","message":"source","commit_id":"9e405dc4fc323c2038ea65279e8f6533b02a86c9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c0f2d0c06609b69ec56847f50f7881a1169f065d","unresolved":false,"context_lines":[{"line_number":1068,"context_line":"        :param context: security context"},{"line_number":1069,"context_line":"        :param instance: instance object that was being migrated"},{"line_number":1070,"context_line":"        :param migrate_data: a LiveMigrateData object"},{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"        \"\"\""},{"line_number":1073,"context_line":"        pass"},{"line_number":1074,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_050bd423","line":1071,"updated":"2019-02-12 17:43:12.000000000","message":"(drop)","commit_id":"9e405dc4fc323c2038ea65279e8f6533b02a86c9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b91f2c966ca805306e9074cd2364bb3ce278b853","unresolved":false,"context_lines":[{"line_number":1063,"context_line":""},{"line_number":1064,"context_line":"    def rollback_live_migration_at_source(self, context, instance,"},{"line_number":1065,"context_line":"                                          migrate_data):"},{"line_number":1066,"context_line":"        \"\"\"Clean up destination node after a failed live migration."},{"line_number":1067,"context_line":""},{"line_number":1068,"context_line":"        :param context: security context"},{"line_number":1069,"context_line":"        :param instance: instance object that was being migrated"}],"source_content_type":"text/x-python","patch_set":14,"id":"9fdfeff1_5ed7e250","line":1066,"range":{"start_line":1066,"start_character":20,"end_line":1066,"end_character":31},"updated":"2019-02-19 16:23:48.000000000","message":"source","commit_id":"3c032b2f16b9be49bdc4d2195504772cb43370c2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b91f2c966ca805306e9074cd2364bb3ce278b853","unresolved":false,"context_lines":[{"line_number":1068,"context_line":"        :param context: security context"},{"line_number":1069,"context_line":"        :param instance: instance object that was being migrated"},{"line_number":1070,"context_line":"        :param migrate_data: a LiveMigrateData object"},{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"        \"\"\""},{"line_number":1073,"context_line":"        pass"},{"line_number":1074,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"9fdfeff1_fee33633","line":1071,"updated":"2019-02-19 16:23:48.000000000","message":"nit: Still here","commit_id":"3c032b2f16b9be49bdc4d2195504772cb43370c2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"36d3e7f83d6535795a30c5aec0e298ac66dd0597","unresolved":false,"context_lines":[{"line_number":1063,"context_line":""},{"line_number":1064,"context_line":"    def rollback_live_migration_at_source(self, context, instance,"},{"line_number":1065,"context_line":"                                          migrate_data\u003dNone):"},{"line_number":1066,"context_line":"        \"\"\"Clean up destination node after a failed live migration."},{"line_number":1067,"context_line":""},{"line_number":1068,"context_line":"        :param context: security context"},{"line_number":1069,"context_line":"        :param instance: instance object that was being migrated"}],"source_content_type":"text/x-python","patch_set":16,"id":"9fdfeff1_c5995e6d","line":1066,"range":{"start_line":1066,"start_character":20,"end_line":1066,"end_character":31},"updated":"2019-02-25 11:40:08.000000000","message":"source","commit_id":"8c9c297ec7e03a8e2e2ea844941ddfbe166e8a30"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0bc7a1772f34b3fa4653b92e799700dd3114f530","unresolved":false,"context_lines":[{"line_number":1063,"context_line":""},{"line_number":1064,"context_line":"    def rollback_live_migration_at_source(self, context, instance,"},{"line_number":1065,"context_line":"                                          migrate_data\u003dNone):"},{"line_number":1066,"context_line":"        \"\"\"Clean up destination node after a failed live migration."},{"line_number":1067,"context_line":""},{"line_number":1068,"context_line":"        :param context: security context"},{"line_number":1069,"context_line":"        :param instance: instance object that was being migrated"}],"source_content_type":"text/x-python","patch_set":16,"id":"9fdfeff1_1fa6b410","line":1066,"range":{"start_line":1066,"start_character":20,"end_line":1066,"end_character":31},"in_reply_to":"9fdfeff1_c5995e6d","updated":"2019-02-26 12:41:16.000000000","message":"Done","commit_id":"8c9c297ec7e03a8e2e2ea844941ddfbe166e8a30"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"36d3e7f83d6535795a30c5aec0e298ac66dd0597","unresolved":false,"context_lines":[{"line_number":1068,"context_line":"        :param context: security context"},{"line_number":1069,"context_line":"        :param instance: instance object that was being migrated"},{"line_number":1070,"context_line":"        :param migrate_data: a LiveMigrateData object"},{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"        \"\"\""},{"line_number":1073,"context_line":"        pass"},{"line_number":1074,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"9fdfeff1_65a2f29c","line":1071,"updated":"2019-02-25 11:40:08.000000000","message":"Stilllll here","commit_id":"8c9c297ec7e03a8e2e2ea844941ddfbe166e8a30"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0bc7a1772f34b3fa4653b92e799700dd3114f530","unresolved":false,"context_lines":[{"line_number":1068,"context_line":"        :param context: security context"},{"line_number":1069,"context_line":"        :param instance: instance object that was being migrated"},{"line_number":1070,"context_line":"        :param migrate_data: a LiveMigrateData object"},{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"        \"\"\""},{"line_number":1073,"context_line":"        pass"},{"line_number":1074,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"9fdfeff1_24293136","line":1071,"in_reply_to":"9fdfeff1_65a2f29c","updated":"2019-02-26 12:41:16.000000000","message":"im removing the new line but the function above and directly below both have it.\n\nwe seam to change between adding the new line and not through out the file.","commit_id":"8c9c297ec7e03a8e2e2ea844941ddfbe166e8a30"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"60976b29b52643ece557e3ff69df752479604976","unresolved":false,"context_lines":[{"line_number":7149,"context_line":"                    # NOTE(sean-k-mooeny): if we have vif data aviable we "},{"line_number":7150,"context_line":"                    # loop over each vif and detach all direct passthrough"},{"line_number":7151,"context_line":"                    # vifs to allow sriov live migration."},{"line_number":7152,"context_line":"                    direct_vnics \u003d VNIC_TYPES_DIRECT_PASSTHROUGH"},{"line_number":7153,"context_line":"                    for vif in migrate_data.vifs:"},{"line_number":7154,"context_line":"                        if vif[\u0027vnic_type\u0027] in direct_vnics:"},{"line_number":7155,"context_line":"                            self.detach_interface(context, instance, vif)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfdaf3ff_7fd67b52","line":7152,"range":{"start_line":7152,"start_character":36,"end_line":7152,"end_character":64},"updated":"2019-01-11 00:34:33.000000000","message":"this should be network_model.VNIC_TYPES_DIRECT_PASSTHROUGH ...","commit_id":"4c45000767e524b9d763cf89d11ba7ec2d63c4d6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"60976b29b52643ece557e3ff69df752479604976","unresolved":false,"context_lines":[{"line_number":7150,"context_line":"                    # loop over each vif and detach all direct passthrough"},{"line_number":7151,"context_line":"                    # vifs to allow sriov live migration."},{"line_number":7152,"context_line":"                    direct_vnics \u003d VNIC_TYPES_DIRECT_PASSTHROUGH"},{"line_number":7153,"context_line":"                    for vif in migrate_data.vifs:"},{"line_number":7154,"context_line":"                        if vif[\u0027vnic_type\u0027] in direct_vnics:"},{"line_number":7155,"context_line":"                            self.detach_interface(context, instance, vif)"},{"line_number":7156,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bfdaf3ff_3f88f31d","line":7153,"range":{"start_line":7153,"start_character":31,"end_line":7153,"end_character":49},"updated":"2019-01-11 00:34:33.000000000","message":"these are also the destination vif i need to use\nthe source_vif object sotred in the vif object which is a copy of the source network_model.VIF object.\n\non the plus side when i fixed those two bugs this works.\n\nill push those changes up shortly and ill work on unit test, and a release note next week.","commit_id":"4c45000767e524b9d763cf89d11ba7ec2d63c4d6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"fe6b0a54b1d9da75a89818c48b48e1c21d0be15e","unresolved":false,"context_lines":[{"line_number":7151,"context_line":"                    # vifs to allow sriov live migration."},{"line_number":7152,"context_line":"                    direct_vnics \u003d VNIC_TYPES_DIRECT_PASSTHROUGH"},{"line_number":7153,"context_line":"                    for vif in migrate_data.vifs:"},{"line_number":7154,"context_line":"                        if vif[\u0027vnic_type\u0027] in direct_vnics:"},{"line_number":7155,"context_line":"                            self.detach_interface(context, instance, vif)"},{"line_number":7156,"context_line":""},{"line_number":7157,"context_line":"                new_xml_str \u003d libvirt_migrate.get_updated_guest_xml("}],"source_content_type":"text/x-python","patch_set":1,"id":"dfd5e7cf_e6d5bf44","line":7154,"range":{"start_line":7154,"start_character":47,"end_line":7154,"end_character":59},"updated":"2019-01-09 17:45:58.000000000","message":"nit: just use VNIC_TYPES_DIRECT_PASSTHROUGH here","commit_id":"4c45000767e524b9d763cf89d11ba7ec2d63c4d6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c9728a948d099e7a207b8b3b9d318f8acd943aca","unresolved":false,"context_lines":[{"line_number":7151,"context_line":"                    # vifs to allow sriov live migration."},{"line_number":7152,"context_line":"                    direct_vnics \u003d VNIC_TYPES_DIRECT_PASSTHROUGH"},{"line_number":7153,"context_line":"                    for vif in migrate_data.vifs:"},{"line_number":7154,"context_line":"                        if vif[\u0027vnic_type\u0027] in direct_vnics:"},{"line_number":7155,"context_line":"                            self.detach_interface(context, instance, vif)"},{"line_number":7156,"context_line":""},{"line_number":7157,"context_line":"                new_xml_str \u003d libvirt_migrate.get_updated_guest_xml("}],"source_content_type":"text/x-python","patch_set":1,"id":"dfd5e7cf_a6ea57a9","line":7154,"range":{"start_line":7154,"start_character":47,"end_line":7154,"end_character":59},"in_reply_to":"dfd5e7cf_46e7eb13","updated":"2019-01-09 17:50:48.000000000","message":"Cool. This would do it too though:\n\n  if vif[\u0027vnic_type\u0027] in (\n           VNIC_TYPES_DIRECT_PASSTHROUGH):\n\nBut it\u0027s a nit, obv :)","commit_id":"4c45000767e524b9d763cf89d11ba7ec2d63c4d6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a52854bb3269bca27ff3dc63208a5e6200889b35","unresolved":false,"context_lines":[{"line_number":7151,"context_line":"                    # vifs to allow sriov live migration."},{"line_number":7152,"context_line":"                    direct_vnics \u003d VNIC_TYPES_DIRECT_PASSTHROUGH"},{"line_number":7153,"context_line":"                    for vif in migrate_data.vifs:"},{"line_number":7154,"context_line":"                        if vif[\u0027vnic_type\u0027] in direct_vnics:"},{"line_number":7155,"context_line":"                            self.detach_interface(context, instance, vif)"},{"line_number":7156,"context_line":""},{"line_number":7157,"context_line":"                new_xml_str \u003d libvirt_migrate.get_updated_guest_xml("}],"source_content_type":"text/x-python","patch_set":1,"id":"dfd5e7cf_46e7eb13","line":7154,"range":{"start_line":7154,"start_character":47,"end_line":7154,"end_character":59},"in_reply_to":"dfd5e7cf_e6d5bf44","updated":"2019-01-09 17:49:16.000000000","message":"when i do it violates pep8 as its too long","commit_id":"4c45000767e524b9d763cf89d11ba7ec2d63c4d6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"fe6b0a54b1d9da75a89818c48b48e1c21d0be15e","unresolved":false,"context_lines":[{"line_number":7152,"context_line":"                    direct_vnics \u003d VNIC_TYPES_DIRECT_PASSTHROUGH"},{"line_number":7153,"context_line":"                    for vif in migrate_data.vifs:"},{"line_number":7154,"context_line":"                        if vif[\u0027vnic_type\u0027] in direct_vnics:"},{"line_number":7155,"context_line":"                            self.detach_interface(context, instance, vif)"},{"line_number":7156,"context_line":""},{"line_number":7157,"context_line":"                new_xml_str \u003d libvirt_migrate.get_updated_guest_xml("},{"line_number":7158,"context_line":"                    # TODO(sahid): It\u0027s not a really good idea to pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfd5e7cf_e6313fa4","line":7155,"range":{"start_line":7155,"start_character":0,"end_line":7155,"end_character":73},"updated":"2019-01-09 17:45:58.000000000","message":"Do you want to use _detach_direct_passthrough_ports here?","commit_id":"4c45000767e524b9d763cf89d11ba7ec2d63c4d6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"60976b29b52643ece557e3ff69df752479604976","unresolved":false,"context_lines":[{"line_number":7152,"context_line":"                    direct_vnics \u003d VNIC_TYPES_DIRECT_PASSTHROUGH"},{"line_number":7153,"context_line":"                    for vif in migrate_data.vifs:"},{"line_number":7154,"context_line":"                        if vif[\u0027vnic_type\u0027] in direct_vnics:"},{"line_number":7155,"context_line":"                            self.detach_interface(context, instance, vif)"},{"line_number":7156,"context_line":""},{"line_number":7157,"context_line":"                new_xml_str \u003d libvirt_migrate.get_updated_guest_xml("},{"line_number":7158,"context_line":"                    # TODO(sahid): It\u0027s not a really good idea to pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfdaf3ff_bf73834d","line":7155,"range":{"start_line":7155,"start_character":0,"end_line":7155,"end_character":73},"in_reply_to":"dfd5e7cf_e6313fa4","updated":"2019-01-11 00:34:33.000000000","message":"looking at the code i may be able to use it but i will still have to generate network info object form the migration_data using the source vifs so it will be almost the same code.\n\nill take a look at it next week again.","commit_id":"4c45000767e524b9d763cf89d11ba7ec2d63c4d6"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"1afb025a270799754a74d0efe8b6031a8faf7b50","unresolved":false,"context_lines":[{"line_number":7969,"context_line":"        \"\"\""},{"line_number":7970,"context_line":"        # The source node set the VIR_MIGRATE_PERSIST_DEST flag when live"},{"line_number":7971,"context_line":"        # migrating so the guest xml should already be persisted on the"},{"line_number":7972,"context_line":"        # destination host, so just perform a sanity check to make sure it"},{"line_number":7973,"context_line":"        # made it as expected."},{"line_number":7974,"context_line":"        guest \u003d  self._host.get_guest(instance)"},{"line_number":7975,"context_line":"        # validate that the guest has the expect number of interfaces attahced"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfd5e7cf_a0ca3117","line":7972,"range":{"start_line":7972,"start_character":28,"end_line":7972,"end_character":36},"updated":"2019-01-10 09:37:31.000000000","message":"nit: as we are now doing more than a sanity check maybe remove this","commit_id":"4c45000767e524b9d763cf89d11ba7ec2d63c4d6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ead2340a801f3f67372ee9ff0d25dd19bd02ea92","unresolved":false,"context_lines":[{"line_number":7969,"context_line":"        \"\"\""},{"line_number":7970,"context_line":"        # The source node set the VIR_MIGRATE_PERSIST_DEST flag when live"},{"line_number":7971,"context_line":"        # migrating so the guest xml should already be persisted on the"},{"line_number":7972,"context_line":"        # destination host, so just perform a sanity check to make sure it"},{"line_number":7973,"context_line":"        # made it as expected."},{"line_number":7974,"context_line":"        guest \u003d  self._host.get_guest(instance)"},{"line_number":7975,"context_line":"        # validate that the guest has the expect number of interfaces attahced"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfdaf3ff_1fe64fea","line":7972,"range":{"start_line":7972,"start_character":28,"end_line":7972,"end_character":36},"in_reply_to":"dfd5e7cf_a0ca3117","updated":"2019-01-11 00:49:57.000000000","message":"ah yes i should ill keep it in mind for v3","commit_id":"4c45000767e524b9d763cf89d11ba7ec2d63c4d6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"fe6b0a54b1d9da75a89818c48b48e1c21d0be15e","unresolved":false,"context_lines":[{"line_number":7972,"context_line":"        # destination host, so just perform a sanity check to make sure it"},{"line_number":7973,"context_line":"        # made it as expected."},{"line_number":7974,"context_line":"        guest \u003d  self._host.get_guest(instance)"},{"line_number":7975,"context_line":"        # validate that the guest has the expect number of interfaces attahced"},{"line_number":7976,"context_line":"        guest_interfaces \u003d guest.get_interfaces()"},{"line_number":7977,"context_line":"        if len(guest_interfaces) \u003c len(network_info):"},{"line_number":7978,"context_line":"            # Note(sean-k-mooney): we are doing a post live migration"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfd5e7cf_a6f6d7f8","line":7975,"range":{"start_line":7975,"start_character":0,"end_line":7975,"end_character":78},"updated":"2019-01-09 17:45:58.000000000","message":"Assume this refers to the \u0027if\u0027 below? Should we be doing anything here if this is not the case? Any idea how/if we could get into this situation?","commit_id":"4c45000767e524b9d763cf89d11ba7ec2d63c4d6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"fe6b0a54b1d9da75a89818c48b48e1c21d0be15e","unresolved":false,"context_lines":[{"line_number":7972,"context_line":"        # destination host, so just perform a sanity check to make sure it"},{"line_number":7973,"context_line":"        # made it as expected."},{"line_number":7974,"context_line":"        guest \u003d  self._host.get_guest(instance)"},{"line_number":7975,"context_line":"        # validate that the guest has the expect number of interfaces attahced"},{"line_number":7976,"context_line":"        guest_interfaces \u003d guest.get_interfaces()"},{"line_number":7977,"context_line":"        if len(guest_interfaces) \u003c len(network_info):"},{"line_number":7978,"context_line":"            # Note(sean-k-mooney): we are doing a post live migration"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfd5e7cf_e6ecdf2a","line":7975,"range":{"start_line":7975,"start_character":70,"end_line":7975,"end_character":78},"updated":"2019-01-09 17:45:58.000000000","message":"attached","commit_id":"4c45000767e524b9d763cf89d11ba7ec2d63c4d6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"fe6b0a54b1d9da75a89818c48b48e1c21d0be15e","unresolved":false,"context_lines":[{"line_number":7972,"context_line":"        # destination host, so just perform a sanity check to make sure it"},{"line_number":7973,"context_line":"        # made it as expected."},{"line_number":7974,"context_line":"        guest \u003d  self._host.get_guest(instance)"},{"line_number":7975,"context_line":"        # validate that the guest has the expect number of interfaces attahced"},{"line_number":7976,"context_line":"        guest_interfaces \u003d guest.get_interfaces()"},{"line_number":7977,"context_line":"        if len(guest_interfaces) \u003c len(network_info):"},{"line_number":7978,"context_line":"            # Note(sean-k-mooney): we are doing a post live migration"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfd5e7cf_268d077b","line":7975,"range":{"start_line":7975,"start_character":42,"end_line":7975,"end_character":48},"updated":"2019-01-09 17:45:58.000000000","message":"expected","commit_id":"4c45000767e524b9d763cf89d11ba7ec2d63c4d6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a52854bb3269bca27ff3dc63208a5e6200889b35","unresolved":false,"context_lines":[{"line_number":7972,"context_line":"        # destination host, so just perform a sanity check to make sure it"},{"line_number":7973,"context_line":"        # made it as expected."},{"line_number":7974,"context_line":"        guest \u003d  self._host.get_guest(instance)"},{"line_number":7975,"context_line":"        # validate that the guest has the expect number of interfaces attahced"},{"line_number":7976,"context_line":"        guest_interfaces \u003d guest.get_interfaces()"},{"line_number":7977,"context_line":"        if len(guest_interfaces) \u003c len(network_info):"},{"line_number":7978,"context_line":"            # Note(sean-k-mooney): we are doing a post live migration"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfd5e7cf_26c5075c","line":7975,"range":{"start_line":7975,"start_character":0,"end_line":7975,"end_character":78},"in_reply_to":"dfd5e7cf_a6f6d7f8","updated":"2019-01-09 17:49:16.000000000","message":"yes it is i can move it down a line to make it more obvious","commit_id":"4c45000767e524b9d763cf89d11ba7ec2d63c4d6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"fe6b0a54b1d9da75a89818c48b48e1c21d0be15e","unresolved":false,"context_lines":[{"line_number":7981,"context_line":"            # vif as part of the post live migration phase."},{"line_number":7982,"context_line":"            direct_vnics \u003d VNIC_TYPES_DIRECT_PASSTHROUGH"},{"line_number":7983,"context_line":"            for vif in network_info:"},{"line_number":7984,"context_line":"                if vif[\u0027vnic_type\u0027] in direct_vnics:"},{"line_number":7985,"context_line":"                    self.attach_interface(context, instance,"},{"line_number":7986,"context_line":"                                          instance.image_meta,"},{"line_number":7987,"context_line":"                                          vif)"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfd5e7cf_c6d2fb5c","line":7984,"range":{"start_line":7984,"start_character":39,"end_line":7984,"end_character":51},"updated":"2019-01-09 17:45:58.000000000","message":"nit: just use VNIC_TYPES_DIRECT_PASSTHROUGH here","commit_id":"4c45000767e524b9d763cf89d11ba7ec2d63c4d6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a52854bb3269bca27ff3dc63208a5e6200889b35","unresolved":false,"context_lines":[{"line_number":7981,"context_line":"            # vif as part of the post live migration phase."},{"line_number":7982,"context_line":"            direct_vnics \u003d VNIC_TYPES_DIRECT_PASSTHROUGH"},{"line_number":7983,"context_line":"            for vif in network_info:"},{"line_number":7984,"context_line":"                if vif[\u0027vnic_type\u0027] in direct_vnics:"},{"line_number":7985,"context_line":"                    self.attach_interface(context, instance,"},{"line_number":7986,"context_line":"                                          instance.image_meta,"},{"line_number":7987,"context_line":"                                          vif)"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfd5e7cf_86ab9387","line":7984,"range":{"start_line":7984,"start_character":39,"end_line":7984,"end_character":51},"in_reply_to":"dfd5e7cf_c6d2fb5c","updated":"2019-01-09 17:49:16.000000000","message":"pep8","commit_id":"4c45000767e524b9d763cf89d11ba7ec2d63c4d6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"fe6b0a54b1d9da75a89818c48b48e1c21d0be15e","unresolved":false,"context_lines":[{"line_number":7982,"context_line":"            direct_vnics \u003d VNIC_TYPES_DIRECT_PASSTHROUGH"},{"line_number":7983,"context_line":"            for vif in network_info:"},{"line_number":7984,"context_line":"                if vif[\u0027vnic_type\u0027] in direct_vnics:"},{"line_number":7985,"context_line":"                    self.attach_interface(context, instance,"},{"line_number":7986,"context_line":"                                          instance.image_meta,"},{"line_number":7987,"context_line":"                                          vif)"},{"line_number":7988,"context_line":""},{"line_number":7989,"context_line":"    def _get_instance_disk_info_from_config(self, guest_config,"},{"line_number":7990,"context_line":"                                            block_device_info):"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfd5e7cf_26fe67ae","line":7987,"range":{"start_line":7985,"start_character":0,"end_line":7987,"end_character":46},"updated":"2019-01-09 17:45:58.000000000","message":"Do you want to use _attach_direct_passthrough_ports here?","commit_id":"4c45000767e524b9d763cf89d11ba7ec2d63c4d6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a52854bb3269bca27ff3dc63208a5e6200889b35","unresolved":false,"context_lines":[{"line_number":7982,"context_line":"            direct_vnics \u003d VNIC_TYPES_DIRECT_PASSTHROUGH"},{"line_number":7983,"context_line":"            for vif in network_info:"},{"line_number":7984,"context_line":"                if vif[\u0027vnic_type\u0027] in direct_vnics:"},{"line_number":7985,"context_line":"                    self.attach_interface(context, instance,"},{"line_number":7986,"context_line":"                                          instance.image_meta,"},{"line_number":7987,"context_line":"                                          vif)"},{"line_number":7988,"context_line":""},{"line_number":7989,"context_line":"    def _get_instance_disk_info_from_config(self, guest_config,"},{"line_number":7990,"context_line":"                                            block_device_info):"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfd5e7cf_467e0b1a","line":7987,"range":{"start_line":7985,"start_character":0,"end_line":7987,"end_character":46},"in_reply_to":"dfd5e7cf_26fe67ae","updated":"2019-01-09 17:49:16.000000000","message":"i will check this when i check _detach_direct_passthrough_ports.","commit_id":"4c45000767e524b9d763cf89d11ba7ec2d63c4d6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b6bbe7db58480da519c0f9315df7e72f8fd6a277","unresolved":false,"context_lines":[{"line_number":8010,"context_line":"        :param network_info: instance network information"},{"line_number":8011,"context_line":"        :param block_migration: if true, post operation of block_migration."},{"line_number":8012,"context_line":"        \"\"\""},{"line_number":8013,"context_line":"        # The source node set the VIR_MIGRATE_PERSIST_DEST flag when live"},{"line_number":8014,"context_line":"        # migrating so the guest xml should already be persisted on the"},{"line_number":8015,"context_line":"        # destination host, so just perform a sanity check to make sure it"},{"line_number":8016,"context_line":"        # made it as expected."},{"line_number":8017,"context_line":"        guest \u003d self._host.get_guest(instance)"},{"line_number":8018,"context_line":"        # validate that the guest has the expect number of interfaces attahced"},{"line_number":8019,"context_line":"        guest_interfaces \u003d guest.get_interfaces()"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_3e0d3e3e","line":8016,"range":{"start_line":8013,"start_character":8,"end_line":8016,"end_character":30},"updated":"2019-01-21 17:29:24.000000000","message":"as was mentioned on a previous revision we now do more then a sanity check so ill update this when i add the roleback case.","commit_id":"5a4da380712da230864346cbb302d3965a5938af"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"3990a856cc4709baad1ee824e35b943785d97cd3","unresolved":false,"context_lines":[{"line_number":8020,"context_line":"        :param network_info: instance network information"},{"line_number":8021,"context_line":"        :param block_migration: if true, post operation of block_migration."},{"line_number":8022,"context_line":"        \"\"\""},{"line_number":8023,"context_line":"        # The source node set the VIR_MIGRATE_PERSIST_DEST flag when live"},{"line_number":8024,"context_line":"        # migrating so the guest xml should already be persisted on the"},{"line_number":8025,"context_line":"        # destination host, so just perform a sanity check to make sure it"},{"line_number":8026,"context_line":"        # made it as expected."},{"line_number":8027,"context_line":"        self._host.get_guest(instance)"},{"line_number":8028,"context_line":""},{"line_number":8029,"context_line":"    def _get_instance_disk_info_from_config(self, guest_config,"},{"line_number":8030,"context_line":"                                            block_device_info):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_4b72c113","side":"PARENT","line":8027,"range":{"start_line":8023,"start_character":8,"end_line":8027,"end_character":38},"updated":"2019-02-05 20:01:14.000000000","message":"shouldn\u0027t we keep this sanity check? why it was removed?","commit_id":"76cfd5925192d2bf717d67dd667fc8541398e6af"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"73c84c95ee320b9b6fde7d918611688de3a0c1e3","unresolved":false,"context_lines":[{"line_number":8020,"context_line":"        :param network_info: instance network information"},{"line_number":8021,"context_line":"        :param block_migration: if true, post operation of block_migration."},{"line_number":8022,"context_line":"        \"\"\""},{"line_number":8023,"context_line":"        # The source node set the VIR_MIGRATE_PERSIST_DEST flag when live"},{"line_number":8024,"context_line":"        # migrating so the guest xml should already be persisted on the"},{"line_number":8025,"context_line":"        # destination host, so just perform a sanity check to make sure it"},{"line_number":8026,"context_line":"        # made it as expected."},{"line_number":8027,"context_line":"        self._host.get_guest(instance)"},{"line_number":8028,"context_line":""},{"line_number":8029,"context_line":"    def _get_instance_disk_info_from_config(self, guest_config,"},{"line_number":8030,"context_line":"                                            block_device_info):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_8e467721","side":"PARENT","line":8027,"range":{"start_line":8023,"start_character":8,"end_line":8027,"end_character":38},"in_reply_to":"9fdfeff1_4b72c113","updated":"2019-02-05 20:39:16.000000000","message":"its done internally in \n self._reattach_instance_vifs(context, instance, network_info)\non line 7669\n\ninstead of just checking that the guest exisit by invoking the function we now assign the result to a variable and  use it.\n\ni removed the comment as it was suggested since i am doing\nmore then just a sanity check by validating all interfacs that should be attached are attach that it was missleading\nto contiue to refer to it as a sanity check","commit_id":"76cfd5925192d2bf717d67dd667fc8541398e6af"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"3990a856cc4709baad1ee824e35b943785d97cd3","unresolved":false,"context_lines":[{"line_number":7207,"context_line":"                        inst_type\u003dinstance.flavor,"},{"line_number":7208,"context_line":"                        virt_type\u003dCONF.libvirt.virt_type,"},{"line_number":7209,"context_line":"                        host\u003dself._host)"},{"line_number":7210,"context_line":"                    # NOTE(sean-k-mooeny): if we have vif data aviable we"},{"line_number":7211,"context_line":"                    # loop over each vif and detach all direct passthrough"},{"line_number":7212,"context_line":"                    # vifs to allow sriov live migration."},{"line_number":7213,"context_line":"                    direct_vnics \u003d network_model.VNIC_TYPES_DIRECT_PASSTHROUGH"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_ab332d62","line":7210,"range":{"start_line":7210,"start_character":63,"end_line":7210,"end_character":70},"updated":"2019-02-05 20:01:14.000000000","message":"available","commit_id":"dea94cbac1fe4c6ae6c5e5d471e79ec68ec4717b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"73c84c95ee320b9b6fde7d918611688de3a0c1e3","unresolved":false,"context_lines":[{"line_number":7207,"context_line":"                        inst_type\u003dinstance.flavor,"},{"line_number":7208,"context_line":"                        virt_type\u003dCONF.libvirt.virt_type,"},{"line_number":7209,"context_line":"                        host\u003dself._host)"},{"line_number":7210,"context_line":"                    # NOTE(sean-k-mooeny): if we have vif data aviable we"},{"line_number":7211,"context_line":"                    # loop over each vif and detach all direct passthrough"},{"line_number":7212,"context_line":"                    # vifs to allow sriov live migration."},{"line_number":7213,"context_line":"                    direct_vnics \u003d network_model.VNIC_TYPES_DIRECT_PASSTHROUGH"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_ae581bfa","line":7210,"range":{"start_line":7210,"start_character":63,"end_line":7210,"end_character":70},"in_reply_to":"9fdfeff1_ab332d62","updated":"2019-02-05 20:39:16.000000000","message":"thanks ill fix if i need to respin. if not ill keep it for a follow up patch.","commit_id":"dea94cbac1fe4c6ae6c5e5d471e79ec68ec4717b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c0f2d0c06609b69ec56847f50f7881a1169f065d","unresolved":false,"context_lines":[{"line_number":7207,"context_line":"                        inst_type\u003dinstance.flavor,"},{"line_number":7208,"context_line":"                        virt_type\u003dCONF.libvirt.virt_type,"},{"line_number":7209,"context_line":"                        host\u003dself._host)"},{"line_number":7210,"context_line":"                    # NOTE(sean-k-mooeny): if we have vif data available we"},{"line_number":7211,"context_line":"                    # loop over each vif and detach all direct passthrough"},{"line_number":7212,"context_line":"                    # vifs to allow sriov live migration."},{"line_number":7213,"context_line":"                    direct_vnics \u003d network_model.VNIC_TYPES_DIRECT_PASSTHROUGH"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_452ebc92","line":7210,"range":{"start_line":7210,"start_character":34,"end_line":7210,"end_character":40},"updated":"2019-02-12 17:43:12.000000000","message":"mooney (ah now :D)","commit_id":"9e405dc4fc323c2038ea65279e8f6533b02a86c9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6dfa376a3a63f72e7f8d83a07751704b26a76917","unresolved":false,"context_lines":[{"line_number":7207,"context_line":"                        inst_type\u003dinstance.flavor,"},{"line_number":7208,"context_line":"                        virt_type\u003dCONF.libvirt.virt_type,"},{"line_number":7209,"context_line":"                        host\u003dself._host)"},{"line_number":7210,"context_line":"                    # NOTE(sean-k-mooeny): if we have vif data available we"},{"line_number":7211,"context_line":"                    # loop over each vif and detach all direct passthrough"},{"line_number":7212,"context_line":"                    # vifs to allow sriov live migration."},{"line_number":7213,"context_line":"                    direct_vnics \u003d network_model.VNIC_TYPES_DIRECT_PASSTHROUGH"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_40a1caf7","line":7210,"range":{"start_line":7210,"start_character":34,"end_line":7210,"end_character":40},"in_reply_to":"9fdfeff1_452ebc92","updated":"2019-02-12 18:29:57.000000000","message":":)","commit_id":"9e405dc4fc323c2038ea65279e8f6533b02a86c9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c0f2d0c06609b69ec56847f50f7881a1169f065d","unresolved":false,"context_lines":[{"line_number":7682,"context_line":"                                          vif)"},{"line_number":7683,"context_line":""},{"line_number":7684,"context_line":"    def rollback_live_migration_at_source(self, context, instance,"},{"line_number":7685,"context_line":"                                          migrate_data\u003dNone):"},{"line_number":7686,"context_line":"        network_info \u003d network_model.NetworkInfo("},{"line_number":7687,"context_line":"            [vif.source_vif for vif in migrate_data.vifs"},{"line_number":7688,"context_line":"                            if \"source_vif\" in vif and vif.source_vif])"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_05599433","line":7685,"updated":"2019-02-12 17:43:12.000000000","message":"Docstring like below?","commit_id":"9e405dc4fc323c2038ea65279e8f6533b02a86c9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6dfa376a3a63f72e7f8d83a07751704b26a76917","unresolved":false,"context_lines":[{"line_number":7682,"context_line":"                                          vif)"},{"line_number":7683,"context_line":""},{"line_number":7684,"context_line":"    def rollback_live_migration_at_source(self, context, instance,"},{"line_number":7685,"context_line":"                                          migrate_data\u003dNone):"},{"line_number":7686,"context_line":"        network_info \u003d network_model.NetworkInfo("},{"line_number":7687,"context_line":"            [vif.source_vif for vif in migrate_data.vifs"},{"line_number":7688,"context_line":"                            if \"source_vif\" in vif and vif.source_vif])"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_e03d5e8e","line":7685,"in_reply_to":"9fdfeff1_05599433","updated":"2019-02-12 18:29:57.000000000","message":"with the params and such.\nsure ill add one.","commit_id":"9e405dc4fc323c2038ea65279e8f6533b02a86c9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c0f2d0c06609b69ec56847f50f7881a1169f065d","unresolved":false,"context_lines":[{"line_number":7684,"context_line":"    def rollback_live_migration_at_source(self, context, instance,"},{"line_number":7685,"context_line":"                                          migrate_data\u003dNone):"},{"line_number":7686,"context_line":"        network_info \u003d network_model.NetworkInfo("},{"line_number":7687,"context_line":"            [vif.source_vif for vif in migrate_data.vifs"},{"line_number":7688,"context_line":"                            if \"source_vif\" in vif and vif.source_vif])"},{"line_number":7689,"context_line":"        self._reattach_instance_vifs(context, instance, network_info)"},{"line_number":7690,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_852fc486","line":7687,"range":{"start_line":7687,"start_character":51,"end_line":7687,"end_character":56},"updated":"2019-02-12 17:43:12.000000000","message":"If migrate_data is None (the default) then this will fail. We either need (a) to add a guard or (b) remove the default and ensure it\u0027s always provided","commit_id":"9e405dc4fc323c2038ea65279e8f6533b02a86c9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4832ffeb2f1791912f45b3adaa08bc218e12d924","unresolved":false,"context_lines":[{"line_number":7207,"context_line":"                        inst_type\u003dinstance.flavor,"},{"line_number":7208,"context_line":"                        virt_type\u003dCONF.libvirt.virt_type,"},{"line_number":7209,"context_line":"                        host\u003dself._host)"},{"line_number":7210,"context_line":"                    # NOTE(sean-k-mooney): if we have vif data available we"},{"line_number":7211,"context_line":"                    # loop over each vif and detach all direct passthrough"},{"line_number":7212,"context_line":"                    # vifs to allow sriov live migration."},{"line_number":7213,"context_line":"                    direct_vnics \u003d network_model.VNIC_TYPES_DIRECT_PASSTHROUGH"},{"line_number":7214,"context_line":"                    vifs \u003d [vif.source_vif for vif in migrate_data.vifs"},{"line_number":7215,"context_line":"                            if \"source_vif\" in vif and vif.source_vif]"},{"line_number":7216,"context_line":"                    for vif in vifs:"},{"line_number":7217,"context_line":"                        if vif[\u0027vnic_type\u0027] in direct_vnics:"},{"line_number":7218,"context_line":"                            self.detach_interface(context, instance, vif)"},{"line_number":7219,"context_line":""},{"line_number":7220,"context_line":"                new_xml_str \u003d libvirt_migrate.get_updated_guest_xml("},{"line_number":7221,"context_line":"                    # TODO(sahid): It\u0027s not a really good idea to pass"}],"source_content_type":"text/x-python","patch_set":14,"id":"9fdfeff1_dea3d2b0","line":7218,"range":{"start_line":7210,"start_character":0,"end_line":7218,"end_character":73},"updated":"2019-02-19 16:30:21.000000000","message":"I wonder if this could/should be dragged out into a function, \u0027_detach_instance_vifs\u0027?","commit_id":"3c032b2f16b9be49bdc4d2195504772cb43370c2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2993df758a9c1ae741dd642305613e60e1838de6","unresolved":false,"context_lines":[{"line_number":7207,"context_line":"                        inst_type\u003dinstance.flavor,"},{"line_number":7208,"context_line":"                        virt_type\u003dCONF.libvirt.virt_type,"},{"line_number":7209,"context_line":"                        host\u003dself._host)"},{"line_number":7210,"context_line":"                    # NOTE(sean-k-mooney): if we have vif data available we"},{"line_number":7211,"context_line":"                    # loop over each vif and detach all direct passthrough"},{"line_number":7212,"context_line":"                    # vifs to allow sriov live migration."},{"line_number":7213,"context_line":"                    direct_vnics \u003d network_model.VNIC_TYPES_DIRECT_PASSTHROUGH"},{"line_number":7214,"context_line":"                    vifs \u003d [vif.source_vif for vif in migrate_data.vifs"},{"line_number":7215,"context_line":"                            if \"source_vif\" in vif and vif.source_vif]"},{"line_number":7216,"context_line":"                    for vif in vifs:"},{"line_number":7217,"context_line":"                        if vif[\u0027vnic_type\u0027] in direct_vnics:"},{"line_number":7218,"context_line":"                            self.detach_interface(context, instance, vif)"},{"line_number":7219,"context_line":""},{"line_number":7220,"context_line":"                new_xml_str \u003d libvirt_migrate.get_updated_guest_xml("},{"line_number":7221,"context_line":"                    # TODO(sahid): It\u0027s not a really good idea to pass"}],"source_content_type":"text/x-python","patch_set":14,"id":"9fdfeff1_79c9a0aa","line":7218,"range":{"start_line":7210,"start_character":0,"end_line":7218,"end_character":73},"in_reply_to":"9fdfeff1_dea3d2b0","updated":"2019-02-19 16:53:06.000000000","message":"sure i can if i resping.\n\nthe outer fuction is rather large but i dont think _detach_instance_vifs will be used much.","commit_id":"3c032b2f16b9be49bdc4d2195504772cb43370c2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4832ffeb2f1791912f45b3adaa08bc218e12d924","unresolved":false,"context_lines":[{"line_number":7688,"context_line":"        :param instance:  the instance being migrated"},{"line_number":7689,"context_line":"        :param migrate_date: a LibvirtLiveMigrateData object"},{"line_number":7690,"context_line":"        \"\"\""},{"line_number":7691,"context_line":"        network_info \u003d network_model.NetworkInfo("},{"line_number":7692,"context_line":"            [vif.source_vif for vif in migrate_data.vifs"},{"line_number":7693,"context_line":"                            if \"source_vif\" in vif and vif.source_vif])"},{"line_number":7694,"context_line":"        self._reattach_instance_vifs(context, instance, network_info)"},{"line_number":7695,"context_line":""},{"line_number":7696,"context_line":"    def rollback_live_migration_at_destination(self, context, instance,"}],"source_content_type":"text/x-python","patch_set":14,"id":"9fdfeff1_5eca826e","line":7693,"range":{"start_line":7691,"start_character":0,"end_line":7693,"end_character":71},"updated":"2019-02-19 16:30:21.000000000","message":"any reason this couldn\u0027t be done in \u0027_reattach_instance_vifs\u0027?","commit_id":"3c032b2f16b9be49bdc4d2195504772cb43370c2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2993df758a9c1ae741dd642305613e60e1838de6","unresolved":false,"context_lines":[{"line_number":7688,"context_line":"        :param instance:  the instance being migrated"},{"line_number":7689,"context_line":"        :param migrate_date: a LibvirtLiveMigrateData object"},{"line_number":7690,"context_line":"        \"\"\""},{"line_number":7691,"context_line":"        network_info \u003d network_model.NetworkInfo("},{"line_number":7692,"context_line":"            [vif.source_vif for vif in migrate_data.vifs"},{"line_number":7693,"context_line":"                            if \"source_vif\" in vif and vif.source_vif])"},{"line_number":7694,"context_line":"        self._reattach_instance_vifs(context, instance, network_info)"},{"line_number":7695,"context_line":""},{"line_number":7696,"context_line":"    def rollback_live_migration_at_destination(self, context, instance,"}],"source_content_type":"text/x-python","patch_set":14,"id":"9fdfeff1_59d7fc50","line":7693,"range":{"start_line":7691,"start_character":0,"end_line":7693,"end_character":71},"in_reply_to":"9fdfeff1_5eca826e","updated":"2019-02-19 16:53:06.000000000","message":"in the rollback case i need to reconstruct the souce node\nNetworkInfo object which is incorrect to do in the success case.\n\nwhen its invoked from post_live_migration_at_destination i have the updated network_info object so i can just pass it in so i decided to make it the callers responsibility to pass in the correct object.","commit_id":"3c032b2f16b9be49bdc4d2195504772cb43370c2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"36d3e7f83d6535795a30c5aec0e298ac66dd0597","unresolved":false,"context_lines":[{"line_number":7150,"context_line":"                        inst_type\u003dinstance.flavor,"},{"line_number":7151,"context_line":"                        virt_type\u003dCONF.libvirt.virt_type,"},{"line_number":7152,"context_line":"                        host\u003dself._host)"},{"line_number":7153,"context_line":"                    # NOTE(sean-k-mooeny): if we have vif data available we"},{"line_number":7154,"context_line":"                    # loop over each vif and detach all direct passthrough"},{"line_number":7155,"context_line":"                    # vifs to allow sriov live migration."},{"line_number":7156,"context_line":"                    direct_vnics \u003d network_model.VNIC_TYPES_DIRECT_PASSTHROUGH"}],"source_content_type":"text/x-python","patch_set":16,"id":"9fdfeff1_45a56e9e","line":7153,"range":{"start_line":7153,"start_character":34,"end_line":7153,"end_character":40},"updated":"2019-02-25 11:40:08.000000000","message":"mooney","commit_id":"8c9c297ec7e03a8e2e2ea844941ddfbe166e8a30"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"163039974be5fa3cb79fc7af98e99648273ffd3d","unresolved":false,"context_lines":[{"line_number":7150,"context_line":"                        inst_type\u003dinstance.flavor,"},{"line_number":7151,"context_line":"                        virt_type\u003dCONF.libvirt.virt_type,"},{"line_number":7152,"context_line":"                        host\u003dself._host)"},{"line_number":7153,"context_line":"                    # NOTE(sean-k-mooeny): if we have vif data available we"},{"line_number":7154,"context_line":"                    # loop over each vif and detach all direct passthrough"},{"line_number":7155,"context_line":"                    # vifs to allow sriov live migration."},{"line_number":7156,"context_line":"                    direct_vnics \u003d network_model.VNIC_TYPES_DIRECT_PASSTHROUGH"}],"source_content_type":"text/x-python","patch_set":16,"id":"9fdfeff1_e95c624c","line":7153,"range":{"start_line":7153,"start_character":34,"end_line":7153,"end_character":40},"in_reply_to":"9fdfeff1_45a56e9e","updated":"2019-02-26 11:44:13.000000000","message":"i fixed this and other typos. in patchset 14.\nadrians rebases broke it again because he did not cherry pick the v14 version.","commit_id":"8c9c297ec7e03a8e2e2ea844941ddfbe166e8a30"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"36d3e7f83d6535795a30c5aec0e298ac66dd0597","unresolved":false,"context_lines":[{"line_number":7625,"context_line":"                                          vif)"},{"line_number":7626,"context_line":""},{"line_number":7627,"context_line":"    def rollback_live_migration_at_source(self, context, instance,"},{"line_number":7628,"context_line":"                                          migrate_data\u003dNone):"},{"line_number":7629,"context_line":"        network_info \u003d network_model.NetworkInfo("},{"line_number":7630,"context_line":"            [vif.source_vif for vif in migrate_data.vifs"},{"line_number":7631,"context_line":"                            if \"source_vif\" in vif and vif.source_vif])"}],"source_content_type":"text/x-python","patch_set":16,"id":"9fdfeff1_25c14a30","line":7628,"updated":"2019-02-25 11:40:08.000000000","message":"You\u0027ve lost the docstring here","commit_id":"8c9c297ec7e03a8e2e2ea844941ddfbe166e8a30"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0bc7a1772f34b3fa4653b92e799700dd3114f530","unresolved":false,"context_lines":[{"line_number":7625,"context_line":"                                          vif)"},{"line_number":7626,"context_line":""},{"line_number":7627,"context_line":"    def rollback_live_migration_at_source(self, context, instance,"},{"line_number":7628,"context_line":"                                          migrate_data\u003dNone):"},{"line_number":7629,"context_line":"        network_info \u003d network_model.NetworkInfo("},{"line_number":7630,"context_line":"            [vif.source_vif for vif in migrate_data.vifs"},{"line_number":7631,"context_line":"                            if \"source_vif\" in vif and vif.source_vif])"}],"source_content_type":"text/x-python","patch_set":16,"id":"9fdfeff1_7fb4a036","line":7628,"in_reply_to":"9fdfeff1_25c14a30","updated":"2019-02-26 12:41:16.000000000","message":"Done","commit_id":"8c9c297ec7e03a8e2e2ea844941ddfbe166e8a30"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"52dcf0eb69cb06926414dec406e0ce2183a3ec49","unresolved":false,"context_lines":[{"line_number":7569,"context_line":""},{"line_number":7570,"context_line":"    def _detach_direct_passthrough_vifs(self, context,"},{"line_number":7571,"context_line":"                                        migrate_data, instance):"},{"line_number":7572,"context_line":"        \"\"\"detaches passthough vif to enable live migration"},{"line_number":7573,"context_line":""},{"line_number":7574,"context_line":"        :param context: security context"},{"line_number":7575,"context_line":"        :param migrate_data: a LibvirtLiveMigrateData object"}],"source_content_type":"text/x-python","patch_set":21,"id":"5fc1f717_0f06aa21","line":7572,"range":{"start_line":7572,"start_character":20,"end_line":7572,"end_character":30},"updated":"2019-04-05 12:16:40.000000000","message":"passthrough","commit_id":"b6c13a570943d60a27c38372997c0f9dec98c78e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"52dcf0eb69cb06926414dec406e0ce2183a3ec49","unresolved":false,"context_lines":[{"line_number":7582,"context_line":"        vifs \u003d [vif.source_vif for vif in migrate_data.vifs"},{"line_number":7583,"context_line":"                if \"source_vif\" in vif and vif.source_vif]"},{"line_number":7584,"context_line":"        for vif in vifs:"},{"line_number":7585,"context_line":"            if vif[\u0027vnic_type\u0027] in direct_vnics:"},{"line_number":7586,"context_line":"                self.detach_interface(context, instance, vif)"},{"line_number":7587,"context_line":""},{"line_number":7588,"context_line":"    def _live_migration_operation(self, context, instance, dest,"}],"source_content_type":"text/x-python","patch_set":21,"id":"5fc1f717_aa7f4464","line":7585,"updated":"2019-04-05 12:16:40.000000000","message":"You may want to put a LOG.debug() message here stating that you are detaching the VIF during live migration. I checked and neither detach_interface() nor attach_interface() have any LOG.debug() messages at all :(","commit_id":"b6c13a570943d60a27c38372997c0f9dec98c78e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"52dcf0eb69cb06926414dec406e0ce2183a3ec49","unresolved":false,"context_lines":[{"line_number":8111,"context_line":""},{"line_number":8112,"context_line":"    def _reattach_instance_vifs(self, context, instance, network_info):"},{"line_number":8113,"context_line":"        guest \u003d self._host.get_guest(instance)"},{"line_number":8114,"context_line":"        # validate that the guest has the expect number of interfaces attahced"},{"line_number":8115,"context_line":"        guest_interfaces \u003d guest.get_interfaces()"},{"line_number":8116,"context_line":"        if len(guest_interfaces) \u003c len(network_info):"},{"line_number":8117,"context_line":"            # Note(sean-k-mooney): we are doing a post live migration"}],"source_content_type":"text/x-python","patch_set":21,"id":"5fc1f717_4a3a60cd","line":8114,"range":{"start_line":8114,"start_character":70,"end_line":8114,"end_character":78},"updated":"2019-04-05 12:16:40.000000000","message":"attached","commit_id":"b6c13a570943d60a27c38372997c0f9dec98c78e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"52dcf0eb69cb06926414dec406e0ce2183a3ec49","unresolved":false,"context_lines":[{"line_number":8111,"context_line":""},{"line_number":8112,"context_line":"    def _reattach_instance_vifs(self, context, instance, network_info):"},{"line_number":8113,"context_line":"        guest \u003d self._host.get_guest(instance)"},{"line_number":8114,"context_line":"        # validate that the guest has the expect number of interfaces attahced"},{"line_number":8115,"context_line":"        guest_interfaces \u003d guest.get_interfaces()"},{"line_number":8116,"context_line":"        if len(guest_interfaces) \u003c len(network_info):"},{"line_number":8117,"context_line":"            # Note(sean-k-mooney): we are doing a post live migration"}],"source_content_type":"text/x-python","patch_set":21,"id":"5fc1f717_aa23c4a6","line":8114,"range":{"start_line":8114,"start_character":42,"end_line":8114,"end_character":48},"updated":"2019-04-05 12:16:40.000000000","message":"expected","commit_id":"b6c13a570943d60a27c38372997c0f9dec98c78e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"52dcf0eb69cb06926414dec406e0ce2183a3ec49","unresolved":false,"context_lines":[{"line_number":8120,"context_line":"            # vif as part of the post live migration phase."},{"line_number":8121,"context_line":"            direct_vnics \u003d network_model.VNIC_TYPES_DIRECT_PASSTHROUGH"},{"line_number":8122,"context_line":"            for vif in network_info:"},{"line_number":8123,"context_line":"                if vif[\u0027vnic_type\u0027] in direct_vnics:"},{"line_number":8124,"context_line":"                    self.attach_interface(context, instance,"},{"line_number":8125,"context_line":"                                          instance.image_meta,"},{"line_number":8126,"context_line":"                                          vif)"}],"source_content_type":"text/x-python","patch_set":21,"id":"5fc1f717_4adb407c","line":8123,"updated":"2019-04-05 12:16:40.000000000","message":"same comment about putting a LOG.debug() message here about re-attaching direct passthrough VIFs after a failed live migration.","commit_id":"b6c13a570943d60a27c38372997c0f9dec98c78e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"54cc7d536dc188bfb7d64d82656b7421e613c7e1","unresolved":false,"context_lines":[{"line_number":8158,"context_line":"        # validate that the guest has the expected number of interfaces"},{"line_number":8159,"context_line":"        # attached."},{"line_number":8160,"context_line":"        guest_interfaces \u003d guest.get_interfaces()"},{"line_number":8161,"context_line":"        if len(guest_interfaces) \u003c len(network_info):"},{"line_number":8162,"context_line":"            # Note(sean-k-mooney): we are doing a post live migration"},{"line_number":8163,"context_line":"            # for a guest with sriov vif that were detached as part of"},{"line_number":8164,"context_line":"            # the migration. loop over the vifs and attach the missing"}],"source_content_type":"text/x-python","patch_set":27,"id":"ffb9cba7_b7227651","line":8161,"updated":"2019-04-25 14:09:10.000000000","message":"Do we need to raise a warning of some form here if this isn\u0027t true?","commit_id":"2bad6a9b57faa5cf1e4625f02cebb8025efcfef3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c6bc9ffa7076861098c1e01536fe9fe0470dae30","unresolved":false,"context_lines":[{"line_number":8158,"context_line":"        # validate that the guest has the expected number of interfaces"},{"line_number":8159,"context_line":"        # attached."},{"line_number":8160,"context_line":"        guest_interfaces \u003d guest.get_interfaces()"},{"line_number":8161,"context_line":"        if len(guest_interfaces) \u003c len(network_info):"},{"line_number":8162,"context_line":"            # Note(sean-k-mooney): we are doing a post live migration"},{"line_number":8163,"context_line":"            # for a guest with sriov vif that were detached as part of"},{"line_number":8164,"context_line":"            # the migration. loop over the vifs and attach the missing"}],"source_content_type":"text/x-python","patch_set":27,"id":"ffb9cba7_f060e6a7","line":8161,"in_reply_to":"ffb9cba7_b7227651","updated":"2019-04-26 09:50:02.000000000","message":"No\nif we could raise a waring if \n\nlen(guest_interfaces) \u003e len(network_info)\n\nas that means that the guest xml contains more interfaces then neutron says it should have but that should not happen.\n\nit would require you to detach a networking interface while the vm is live migrating which is arguablly and error.\n\nwe normally expect\n\nlen(guest_interfaces) \u003d\u003d len(network_info)\n\nas this will be the case for all instance that do not have sriov direct mode interfaces.","commit_id":"2bad6a9b57faa5cf1e4625f02cebb8025efcfef3"}],"releasenotes/notes/sriov-live-migration-0311dfb7102a48db.yaml":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4832ffeb2f1791912f45b3adaa08bc218e12d924","unresolved":false,"context_lines":[{"line_number":14,"context_line":"    workflow already in place for suspend and resume. For instance with"},{"line_number":15,"context_line":"    SR-IOV devices, we detach the direct mode interfaces before migration"},{"line_number":16,"context_line":"    and re-attach them after the migration. AS a result, instances"},{"line_number":17,"context_line":"    with direct mode SR-IOV port will loose network connectivity during a"},{"line_number":18,"context_line":"    migration unless a bond with a live migrateable interface is created"},{"line_number":19,"context_line":"    within the guest."},{"line_number":20,"context_line":"upgrade:"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"9fdfeff1_be2b6e31","line":17,"range":{"start_line":17,"start_character":38,"end_line":17,"end_character":43},"updated":"2019-02-19 16:30:21.000000000","message":"lose","commit_id":"3c032b2f16b9be49bdc4d2195504772cb43370c2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4832ffeb2f1791912f45b3adaa08bc218e12d924","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    SR-IOV devices, we detach the direct mode interfaces before migration"},{"line_number":16,"context_line":"    and re-attach them after the migration. AS a result, instances"},{"line_number":17,"context_line":"    with direct mode SR-IOV port will loose network connectivity during a"},{"line_number":18,"context_line":"    migration unless a bond with a live migrateable interface is created"},{"line_number":19,"context_line":"    within the guest."},{"line_number":20,"context_line":"upgrade:"},{"line_number":21,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"9fdfeff1_7e25065c","line":18,"range":{"start_line":18,"start_character":40,"end_line":18,"end_character":51},"updated":"2019-02-19 16:30:21.000000000","message":"migratable","commit_id":"3c032b2f16b9be49bdc4d2195504772cb43370c2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4832ffeb2f1791912f45b3adaa08bc218e12d924","unresolved":false,"context_lines":[{"line_number":21,"context_line":"  - |"},{"line_number":22,"context_line":"    The Libvirt SR-IOV migration feature intoduced in this release requires"},{"line_number":23,"context_line":"    both the source and destination node to support the feature. As a result"},{"line_number":24,"context_line":"    it will be automatically disabled until the conductor, source compute"},{"line_number":25,"context_line":"    node and destination compute nodes have been upgraded."}],"source_content_type":"text/x-yaml","patch_set":14,"id":"9fdfeff1_3e1f7e0a","line":25,"range":{"start_line":24,"start_character":59,"end_line":25,"end_character":58},"updated":"2019-02-19 16:30:21.000000000","message":"and compute nodes have been upgraded.","commit_id":"3c032b2f16b9be49bdc4d2195504772cb43370c2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"36d3e7f83d6535795a30c5aec0e298ac66dd0597","unresolved":false,"context_lines":[{"line_number":14,"context_line":"    workflow already in place for suspend and resume. For instance with"},{"line_number":15,"context_line":"    SR-IOV devices, we detach the direct mode interfaces before migration"},{"line_number":16,"context_line":"    and re-attach them after the migration. AS a result, instances"},{"line_number":17,"context_line":"    with direct mode SR-IOV port will loose network connectivity during a"},{"line_number":18,"context_line":"    migration unless a bond with a live migrateable interface is created"},{"line_number":19,"context_line":"    within the guest."},{"line_number":20,"context_line":"upgrade:"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"9fdfeff1_a5e21ad3","line":17,"range":{"start_line":17,"start_character":38,"end_line":17,"end_character":43},"updated":"2019-02-25 11:40:08.000000000","message":"lose","commit_id":"8c9c297ec7e03a8e2e2ea844941ddfbe166e8a30"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0bc7a1772f34b3fa4653b92e799700dd3114f530","unresolved":false,"context_lines":[{"line_number":14,"context_line":"    workflow already in place for suspend and resume. For instance with"},{"line_number":15,"context_line":"    SR-IOV devices, we detach the direct mode interfaces before migration"},{"line_number":16,"context_line":"    and re-attach them after the migration. AS a result, instances"},{"line_number":17,"context_line":"    with direct mode SR-IOV port will loose network connectivity during a"},{"line_number":18,"context_line":"    migration unless a bond with a live migrateable interface is created"},{"line_number":19,"context_line":"    within the guest."},{"line_number":20,"context_line":"upgrade:"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"9fdfeff1_9fb14447","line":17,"range":{"start_line":17,"start_character":38,"end_line":17,"end_character":43},"in_reply_to":"9fdfeff1_a5e21ad3","updated":"2019-02-26 12:41:16.000000000","message":"Done","commit_id":"8c9c297ec7e03a8e2e2ea844941ddfbe166e8a30"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"36d3e7f83d6535795a30c5aec0e298ac66dd0597","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    SR-IOV devices, we detach the direct mode interfaces before migration"},{"line_number":16,"context_line":"    and re-attach them after the migration. AS a result, instances"},{"line_number":17,"context_line":"    with direct mode SR-IOV port will loose network connectivity during a"},{"line_number":18,"context_line":"    migration unless a bond with a live migrateable interface is created"},{"line_number":19,"context_line":"    within the guest."},{"line_number":20,"context_line":"upgrade:"},{"line_number":21,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"9fdfeff1_e5dca219","line":18,"range":{"start_line":18,"start_character":40,"end_line":18,"end_character":51},"updated":"2019-02-25 11:40:08.000000000","message":"migratable","commit_id":"8c9c297ec7e03a8e2e2ea844941ddfbe166e8a30"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0bc7a1772f34b3fa4653b92e799700dd3114f530","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    SR-IOV devices, we detach the direct mode interfaces before migration"},{"line_number":16,"context_line":"    and re-attach them after the migration. AS a result, instances"},{"line_number":17,"context_line":"    with direct mode SR-IOV port will loose network connectivity during a"},{"line_number":18,"context_line":"    migration unless a bond with a live migrateable interface is created"},{"line_number":19,"context_line":"    within the guest."},{"line_number":20,"context_line":"upgrade:"},{"line_number":21,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"9fdfeff1_3f84d85d","line":18,"range":{"start_line":18,"start_character":40,"end_line":18,"end_character":51},"in_reply_to":"9fdfeff1_e5dca219","updated":"2019-02-26 12:41:16.000000000","message":"Done","commit_id":"8c9c297ec7e03a8e2e2ea844941ddfbe166e8a30"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"36d3e7f83d6535795a30c5aec0e298ac66dd0597","unresolved":false,"context_lines":[{"line_number":21,"context_line":"  - |"},{"line_number":22,"context_line":"    The Libvirt SR-IOV migration feature intoduced in this release requires"},{"line_number":23,"context_line":"    both the source and destination node to support the feature. As a result"},{"line_number":24,"context_line":"    it will be automatically disabled until the conductor, source compute"},{"line_number":25,"context_line":"    node and destination compute nodes have been upgraded."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"9fdfeff1_c5e71ee3","line":25,"range":{"start_line":24,"start_character":59,"end_line":25,"end_character":58},"updated":"2019-02-25 11:40:08.000000000","message":"and compute nodes have been upgraded","commit_id":"8c9c297ec7e03a8e2e2ea844941ddfbe166e8a30"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0bc7a1772f34b3fa4653b92e799700dd3114f530","unresolved":false,"context_lines":[{"line_number":21,"context_line":"  - |"},{"line_number":22,"context_line":"    The Libvirt SR-IOV migration feature intoduced in this release requires"},{"line_number":23,"context_line":"    both the source and destination node to support the feature. As a result"},{"line_number":24,"context_line":"    it will be automatically disabled until the conductor, source compute"},{"line_number":25,"context_line":"    node and destination compute nodes have been upgraded."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"9fdfeff1_5f899c72","line":25,"range":{"start_line":24,"start_character":59,"end_line":25,"end_character":58},"in_reply_to":"9fdfeff1_c5e71ee3","updated":"2019-02-26 12:41:16.000000000","message":"Done","commit_id":"8c9c297ec7e03a8e2e2ea844941ddfbe166e8a30"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"657e52141cc97356a9d21fd89542be4b8986358e","unresolved":false,"context_lines":[{"line_number":21,"context_line":"  - |"},{"line_number":22,"context_line":"    The Libvirt SR-IOV migration feature intoduced in this release requires"},{"line_number":23,"context_line":"    both the source and destination node to support the feature. As a result"},{"line_number":24,"context_line":"    it will be automatically disabled until the conductor, and compute nodes"},{"line_number":25,"context_line":"    have been upgraded."}],"source_content_type":"text/x-yaml","patch_set":18,"id":"9fdfeff1_0a327cf3","line":24,"range":{"start_line":24,"start_character":57,"end_line":24,"end_character":59},"updated":"2019-03-04 11:16:59.000000000","message":"nit: drop ,","commit_id":"6b43c51635e218213458a2c8031cc4a808793cac"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"52dcf0eb69cb06926414dec406e0ce2183a3ec49","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    virt driver for Neutron interfaces. Neutron SR-IOV interfaces can be"},{"line_number":6,"context_line":"    grouped into two categories, direct mode interfaces and indirect."},{"line_number":7,"context_line":"    Direct mode SR-IOV interfaces are directly attached to the guest and"},{"line_number":8,"context_line":"    exposed to the guest os. Indirect mode SR-IOV interfaces have a software"},{"line_number":9,"context_line":"    interface such as a macvtap between the guest and the SR-IOV device."},{"line_number":10,"context_line":"    This feature enables transparent live migration for instances with"},{"line_number":11,"context_line":"    indirect mode SR-IOV devices. As there is no generic way to copy"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"5fc1f717_ca35f0a9","line":8,"range":{"start_line":8,"start_character":25,"end_line":8,"end_character":27},"updated":"2019-04-05 12:16:40.000000000","message":"operating system\n\nor \"OS\"","commit_id":"b6c13a570943d60a27c38372997c0f9dec98c78e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"52dcf0eb69cb06926414dec406e0ce2183a3ec49","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    transparent to the guest. For direct mode interfaces, we mimic the"},{"line_number":14,"context_line":"    workflow already in place for suspend and resume. For instance with"},{"line_number":15,"context_line":"    SR-IOV devices, we detach the direct mode interfaces before migration"},{"line_number":16,"context_line":"    and re-attach them after the migration. AS a result, instances"},{"line_number":17,"context_line":"    with direct mode SR-IOV port will lose network connectivity during a"},{"line_number":18,"context_line":"    migration unless a bond with a live migratable interface is created"},{"line_number":19,"context_line":"    within the guest."}],"source_content_type":"text/x-yaml","patch_set":21,"id":"5fc1f717_aa42e40d","line":16,"range":{"start_line":16,"start_character":44,"end_line":16,"end_character":46},"updated":"2019-04-05 12:16:40.000000000","message":"As","commit_id":"b6c13a570943d60a27c38372997c0f9dec98c78e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"52dcf0eb69cb06926414dec406e0ce2183a3ec49","unresolved":false,"context_lines":[{"line_number":16,"context_line":"    and re-attach them after the migration. AS a result, instances"},{"line_number":17,"context_line":"    with direct mode SR-IOV port will lose network connectivity during a"},{"line_number":18,"context_line":"    migration unless a bond with a live migratable interface is created"},{"line_number":19,"context_line":"    within the guest."},{"line_number":20,"context_line":"upgrade:"},{"line_number":21,"context_line":"  - |"},{"line_number":22,"context_line":"    The Libvirt SR-IOV migration feature intoduced in this release requires"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"5fc1f717_6a44fc19","line":19,"updated":"2019-04-05 12:16:40.000000000","message":"✔ Awesome release note. ++","commit_id":"b6c13a570943d60a27c38372997c0f9dec98c78e"}]}
