)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"acd04667f349a1fbd2d0458ef2a48ac0f9e60100","unresolved":false,"context_lines":[{"line_number":7,"context_line":"VMware: Live migration of instances"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch implements live migration of instances across compute nodes."},{"line_number":10,"context_line":"We assume that each compute node is managing a cluster in the same"},{"line_number":11,"context_line":"vCenter. If the instance is located on a datastore shared between source"},{"line_number":12,"context_line":"and destination cluster, then only the host is changed. Otherwise, we"},{"line_number":13,"context_line":"select the most suitable datastore on the destination cluster and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"3f79a3b5_5b429411","line":10,"range":{"start_line":10,"start_character":3,"end_line":10,"end_character":9},"updated":"2018-09-10 15:16:53.000000000","message":"It would be better to actually perform pre-live migration checks to assert this or fail so that the scheduler picks a different host/node.","commit_id":"4a61019da31859de5140509434cd836d1989b320"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"261f93861012463bb44f9cc82ee0f4ff746350db","unresolved":false,"context_lines":[{"line_number":7,"context_line":"VMware: Live migration of instances"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch implements live migration of instances across compute nodes."},{"line_number":10,"context_line":"We assume that each compute node is managing a cluster in the same"},{"line_number":11,"context_line":"vCenter. If the instance is located on a datastore shared between source"},{"line_number":12,"context_line":"and destination cluster, then only the host is changed. Otherwise, we"},{"line_number":13,"context_line":"select the most suitable datastore on the destination cluster and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"3f79a3b5_c3bafd6f","line":10,"range":{"start_line":10,"start_character":3,"end_line":10,"end_character":9},"in_reply_to":"3f79a3b5_5b429411","updated":"2018-09-26 11:08:22.000000000","message":"Done","commit_id":"4a61019da31859de5140509434cd836d1989b320"}],"doc/source/admin/configuring-migrations.rst":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ae03794dd6f66a19c61d3125ee6e03689eb72368","unresolved":false,"context_lines":[{"line_number":392,"context_line":""},{"line_number":393,"context_line":"vSphere configuration"},{"line_number":394,"context_line":"---------------------"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"Enable vMotion on all ESX hosts which are managed by Nova by following the"},{"line_number":397,"context_line":"instructions in `this \u003chttps://kb.vmware.com/s/article/2054994\u003e`_ KB article."}],"source_content_type":"text/x-rst","patch_set":17,"id":"3f79a3b5_b5610cd7","line":395,"updated":"2018-09-27 20:03:12.000000000","message":"Are there any other limitations like for volume-backed server live migration? Is that supported? I don\u0027t see those tests run in the 3rd party CI results, only block migration.","commit_id":"e5c3dcd4813caa9db4d8e2777341277ab9123a85"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"faf07615c8080d766dfb52c70ae510bef139145f","unresolved":false,"context_lines":[{"line_number":392,"context_line":""},{"line_number":393,"context_line":"vSphere configuration"},{"line_number":394,"context_line":"---------------------"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"Enable vMotion on all ESX hosts which are managed by Nova by following the"},{"line_number":397,"context_line":"instructions in `this \u003chttps://kb.vmware.com/s/article/2054994\u003e`_ KB article."}],"source_content_type":"text/x-rst","patch_set":17,"id":"3f79a3b5_22226e02","line":395,"in_reply_to":"3f79a3b5_b1ac95ee","updated":"2018-10-01 07:40:43.000000000","message":"If there is a volume attached to the instance and the instance is live migrated, the VMDK which is backing the volume could be moved to another datastore along with the instance root disk. This is handled by the RelocateVM API and no extra work is needed on the Nova side. However, when the volume is detached we need to check if the volume backing has been moved and take appropriate actions in _consolidate_vmdk_volume():\n\nhttps://github.com/openstack/nova/blob/master/nova/virt/vmwareapi/volumeops.py#L413\n\nThis is already implemented to handle volume migrations caused by storage DRS.","commit_id":"e5c3dcd4813caa9db4d8e2777341277ab9123a85"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"868996a788eae075866c18acd99020ec3c917bf2","unresolved":false,"context_lines":[{"line_number":392,"context_line":""},{"line_number":393,"context_line":"vSphere configuration"},{"line_number":394,"context_line":"---------------------"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"Enable vMotion on all ESX hosts which are managed by Nova by following the"},{"line_number":397,"context_line":"instructions in `this \u003chttps://kb.vmware.com/s/article/2054994\u003e`_ KB article."}],"source_content_type":"text/x-rst","patch_set":17,"id":"3f79a3b5_e35fc34a","line":395,"in_reply_to":"3f79a3b5_b5610cd7","updated":"2018-09-28 10:49:27.000000000","message":"volume-backed server live migration is supported, I will work with the CI team to enable this test","commit_id":"e5c3dcd4813caa9db4d8e2777341277ab9123a85"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4b85b6ea8f4726be42f17697bc4d8d1637a7985e","unresolved":false,"context_lines":[{"line_number":392,"context_line":""},{"line_number":393,"context_line":"vSphere configuration"},{"line_number":394,"context_line":"---------------------"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"Enable vMotion on all ESX hosts which are managed by Nova by following the"},{"line_number":397,"context_line":"instructions in `this \u003chttps://kb.vmware.com/s/article/2054994\u003e`_ KB article."}],"source_content_type":"text/x-rst","patch_set":17,"id":"3f79a3b5_b1ac95ee","line":395,"in_reply_to":"3f79a3b5_e35fc34a","updated":"2018-09-29 19:54:09.000000000","message":"OK but the change doesn\u0027t do anything with the attached block devices. Do we not need to create new connections or is that all assumed to be restricted to the same block storage data store? I\u0027m not sure how this works with vcenter.","commit_id":"e5c3dcd4813caa9db4d8e2777341277ab9123a85"}],"nova/objects/migrate_data.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"acd04667f349a1fbd2d0458ef2a48ac0f9e60100","unresolved":false,"context_lines":[{"line_number":508,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"    fields \u003d {"},{"line_number":511,"context_line":"        \u0027cluster_name\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":512,"context_line":"        \u0027datastore_regex\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":513,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_1b6dfc98","line":511,"range":{"start_line":511,"start_character":43,"end_line":511,"end_character":56},"updated":"2018-09-10 15:16:53.000000000","message":"Looking at how this object is used, these should not be nullable - setting them to None would result in weird errors.","commit_id":"4a61019da31859de5140509434cd836d1989b320"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"261f93861012463bb44f9cc82ee0f4ff746350db","unresolved":false,"context_lines":[{"line_number":508,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"    fields \u003d {"},{"line_number":511,"context_line":"        \u0027cluster_name\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":512,"context_line":"        \u0027datastore_regex\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":513,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_8b0e61e2","line":511,"range":{"start_line":511,"start_character":43,"end_line":511,"end_character":56},"in_reply_to":"3f79a3b5_1b6dfc98","updated":"2018-09-26 11:08:22.000000000","message":"Correct, it shouldn\u0027t be nullable","commit_id":"4a61019da31859de5140509434cd836d1989b320"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e6cbc60ce4ea17ad3a9acaf4331b08d9008a994d","unresolved":false,"context_lines":[{"line_number":507,"context_line":"class VMwareLiveMigrateData(LiveMigrateData):"},{"line_number":508,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"    fields \u003d {"},{"line_number":511,"context_line":"        \u0027cluster_name\u0027: fields.StringField(nullable\u003dFalse),"},{"line_number":512,"context_line":"        \u0027datastore_regex\u0027: fields.StringField(nullable\u003dFalse),"},{"line_number":513,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":19,"id":"3f79a3b5_f6cb3fa1","line":510,"updated":"2018-10-08 16:22:05.000000000","message":"some comments would be good to describe what these fields are. For instance, I am presuming \"cluster\" refers to the vCenter cluster? And does datastore_regex refer to a specific datastore for the *destination*?","commit_id":"2fe92e91625222afcc01765437ba47c5374b7a76"}],"nova/virt/vmwareapi/driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"28e475b21ca5788e187e5e2f0fdb7e8fcd54dd6a","unresolved":false,"context_lines":[{"line_number":339,"context_line":"                                           disk_over_commit\u003dFalse):"},{"line_number":340,"context_line":"        # the information that we need for the destination compute node"},{"line_number":341,"context_line":"        # is the name of its cluster and datastore regex"},{"line_number":342,"context_line":"        return {\u0027cluster_name\u0027: CONF.vmware.cluster_name,"},{"line_number":343,"context_line":"                \u0027datastore_regex\u0027: CONF.vmware.datastore_regex}"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"    def check_can_live_migrate_destination_cleanup(self, context,"},{"line_number":346,"context_line":"                                                   dest_check_data):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da0c15f0_8135d947","line":343,"range":{"start_line":342,"start_character":15,"end_line":343,"end_character":63},"updated":"2016-03-25 13:43:51.000000000","message":"This would need to be a migration data object now, see nova.objects.migrate_data.","commit_id":"818a7509e5e6421cc6fe7c0cffb362e03ca33c19"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"6e2343df0f07f90a3df0533fca6cb4c1d6260eb1","unresolved":false,"context_lines":[{"line_number":339,"context_line":"                                           disk_over_commit\u003dFalse):"},{"line_number":340,"context_line":"        # the information that we need for the destination compute node"},{"line_number":341,"context_line":"        # is the name of its cluster and datastore regex"},{"line_number":342,"context_line":"        return {\u0027cluster_name\u0027: CONF.vmware.cluster_name,"},{"line_number":343,"context_line":"                \u0027datastore_regex\u0027: CONF.vmware.datastore_regex}"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"    def check_can_live_migrate_destination_cleanup(self, context,"},{"line_number":346,"context_line":"                                                   dest_check_data):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_20a683c1","line":343,"range":{"start_line":342,"start_character":15,"end_line":343,"end_character":63},"in_reply_to":"da0c15f0_8135d947","updated":"2016-03-29 12:36:04.000000000","message":"Done","commit_id":"818a7509e5e6421cc6fe7c0cffb362e03ca33c19"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"1d8fb469b15b787b7d6124388d226ed902c13a50","unresolved":false,"context_lines":[{"line_number":320,"context_line":"                                           network_info,"},{"line_number":321,"context_line":"                                           block_migration\u003dFalse,"},{"line_number":322,"context_line":"                                           block_device_info\u003dNone):"},{"line_number":323,"context_line":"        pass"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"    def live_migration(self, context, instance, dest,"},{"line_number":326,"context_line":"                       post_method, recover_method, block_migration\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":5,"id":"df140735_6ea573b5","line":323,"updated":"2017-05-28 08:43:15.000000000","message":"i think that here we need to make sure that the detsination networking is wired correctly","commit_id":"554b757af223722b78166891712dc7e0cc4bf041"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"acd04667f349a1fbd2d0458ef2a48ac0f9e60100","unresolved":false,"context_lines":[{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def pre_live_migration(self, context, instance, block_device_info,"},{"line_number":277,"context_line":"                           network_info, disk_info, migrate_data):"},{"line_number":278,"context_line":"        return migrate_data"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    def post_live_migration_at_source(self, context, instance, network_info):"},{"line_number":281,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_9bd34c60","line":278,"updated":"2018-09-10 15:16:53.000000000","message":"Comments would be nice about why nothing needs to be setup on the destination node prior to initiating the live migration. For example, is volume-backed live migration supported or not because I don\u0027t see the tempest run for it.\n\nSimilarly, the tempest runs are only using block migration, but I don\u0027t see the code checking for that, so is block migration not a thing with vmware, or at least in this implementation? i.e. everything is on a shared datastore and if not, we fail?","commit_id":"4a61019da31859de5140509434cd836d1989b320"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"261f93861012463bb44f9cc82ee0f4ff746350db","unresolved":false,"context_lines":[{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def pre_live_migration(self, context, instance, block_device_info,"},{"line_number":277,"context_line":"                           network_info, disk_info, migrate_data):"},{"line_number":278,"context_line":"        return migrate_data"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    def post_live_migration_at_source(self, context, instance, network_info):"},{"line_number":281,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_c6fbeb12","line":278,"in_reply_to":"3f79a3b5_9bd34c60","updated":"2018-09-26 11:08:22.000000000","message":"In the VMware case it doesn\u0027t matter if the instance is volume backed or not. The only prerequisite is that clusters must be in the same vCenter and ESX hosts must have vMotion enabled. Unfortunately, there is no easy way to perform checks for vMotion here. I have implemented check_can_live_migrate_source to verify that the target cluster is accessible.","commit_id":"4a61019da31859de5140509434cd836d1989b320"}],"nova/virt/vmwareapi/vm_util.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ae03794dd6f66a19c61d3125ee6e03689eb72368","unresolved":false,"context_lines":[{"line_number":519,"context_line":"    return config_spec"},{"line_number":520,"context_line":""},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"def update_vif_spec(client_factory, vif_info, device):"},{"line_number":523,"context_line":"    \"\"\"Updates the backing for the VIF spec.\"\"\""},{"line_number":524,"context_line":"    network_spec \u003d client_factory.create(\u0027ns0:VirtualDeviceConfigSpec\u0027)"},{"line_number":525,"context_line":"    network_spec.operation \u003d \u0027edit\u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_d58048fa","line":522,"updated":"2018-09-27 20:03:12.000000000","message":"There is 0 test coverage for this.","commit_id":"e5c3dcd4813caa9db4d8e2777341277ab9123a85"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"868996a788eae075866c18acd99020ec3c917bf2","unresolved":false,"context_lines":[{"line_number":519,"context_line":"    return config_spec"},{"line_number":520,"context_line":""},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"def update_vif_spec(client_factory, vif_info, device):"},{"line_number":523,"context_line":"    \"\"\"Updates the backing for the VIF spec.\"\"\""},{"line_number":524,"context_line":"    network_spec \u003d client_factory.create(\u0027ns0:VirtualDeviceConfigSpec\u0027)"},{"line_number":525,"context_line":"    network_spec.operation \u003d \u0027edit\u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_a37f8bdd","line":522,"in_reply_to":"3f79a3b5_d58048fa","updated":"2018-09-28 10:49:27.000000000","message":"Done","commit_id":"e5c3dcd4813caa9db4d8e2777341277ab9123a85"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"df3c1675b348adee6454d4b0d14a975fc36f538d","unresolved":false,"context_lines":[{"line_number":550,"context_line":"        backing.port \u003d portgroup"},{"line_number":551,"context_line":"    else:"},{"line_number":552,"context_line":"        backing \u003d client_factory.create("},{"line_number":553,"context_line":"                  \u0027ns0:VirtualEthernetCardNetworkBackingInfo\u0027)"},{"line_number":554,"context_line":"        backing.deviceName \u003d network_name"},{"line_number":555,"context_line":"    device.backing \u003d backing"},{"line_number":556,"context_line":"    network_spec.device \u003d device"}],"source_content_type":"text/x-python","patch_set":18,"id":"3f79a3b5_3ace0b5b","line":553,"updated":"2018-10-01 16:16:04.000000000","message":"nit: don\u0027t see a unit test for the else case here.","commit_id":"997def6061cb71e1b12868cb2568c4b1766e0539"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"531f67b802df86ab5b607c7642ae810ddda27f50","unresolved":false,"context_lines":[{"line_number":550,"context_line":"        backing.port \u003d portgroup"},{"line_number":551,"context_line":"    else:"},{"line_number":552,"context_line":"        backing \u003d client_factory.create("},{"line_number":553,"context_line":"                  \u0027ns0:VirtualEthernetCardNetworkBackingInfo\u0027)"},{"line_number":554,"context_line":"        backing.deviceName \u003d network_name"},{"line_number":555,"context_line":"    device.backing \u003d backing"},{"line_number":556,"context_line":"    network_spec.device \u003d device"}],"source_content_type":"text/x-python","patch_set":18,"id":"3f79a3b5_70125763","line":553,"in_reply_to":"3f79a3b5_3ace0b5b","updated":"2018-10-02 07:10:07.000000000","message":"Done","commit_id":"997def6061cb71e1b12868cb2568c4b1766e0539"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e6cbc60ce4ea17ad3a9acaf4331b08d9008a994d","unresolved":false,"context_lines":[{"line_number":554,"context_line":"        backing.deviceName \u003d network_name"},{"line_number":555,"context_line":"    device.backing \u003d backing"},{"line_number":556,"context_line":"    network_spec.device \u003d device"},{"line_number":557,"context_line":"    return network_spec"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"def get_storage_profile_spec(session, storage_policy):"}],"source_content_type":"text/x-python","patch_set":19,"id":"3f79a3b5_96f3ebe8","line":557,"updated":"2018-10-08 16:22:05.000000000","message":"checked all above conditionals have unit tests. ✓","commit_id":"2fe92e91625222afcc01765437ba47c5374b7a76"}],"nova/virt/vmwareapi/vmops.py":[{"author":{"_account_id":16443,"name":"Wenwu","email":"pengwenwu2008@163.com","username":"Wenwu"},"change_message_id":"6596b4cc19809875ce37fa2c53061042b30afbce","unresolved":false,"context_lines":[{"line_number":1523,"context_line":"            LOG.error(_LE(\"Cannot find ESX host\"), instance\u003dinstance)"},{"line_number":1524,"context_line":"            raise exception.HostNotFound(host\u003ddest)"},{"line_number":1525,"context_line":"        try:"},{"line_number":1526,"context_line":"            vm_util.relocate_vm(self._session, vm_ref, res_pool_ref,"},{"line_number":1527,"context_line":"                                ds.ref, esx_host)"},{"line_number":1528,"context_line":"            LOG.info(_LI(\"Migrated instance to host %s\"), dest,"},{"line_number":1529,"context_line":"                     instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_ca216db6","line":1526,"range":{"start_line":1526,"start_character":20,"end_line":1526,"end_character":31},"updated":"2016-03-09 01:48:52.000000000","message":"is missing method relocate_vm in vm_util.py?\nhttps://github.com/openstack/nova/blob/master/nova/virt/vmwareapi/vm_util.py","commit_id":"efbf94f5dcca772a3357577adc648e2c71924aa1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"28e475b21ca5788e187e5e2f0fdb7e8fcd54dd6a","unresolved":false,"context_lines":[{"line_number":1502,"context_line":"                       migrate_data):"},{"line_number":1503,"context_line":"        LOG.debug(\"Live migration data %s\", migrate_data, instance\u003dinstance)"},{"line_number":1504,"context_line":"        vm_ref \u003d vm_util.get_vm_ref(self._session, instance)"},{"line_number":1505,"context_line":"        cluster_name \u003d migrate_data[\u0027cluster_name\u0027]"},{"line_number":1506,"context_line":"        cluster_ref \u003d vm_util.get_cluster_ref_by_name(self._session,"},{"line_number":1507,"context_line":"                                                      cluster_name)"},{"line_number":1508,"context_line":"        if cluster_ref is None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"da0c15f0_2117ada4","line":1505,"range":{"start_line":1505,"start_character":23,"end_line":1505,"end_character":35},"updated":"2016-03-25 13:43:51.000000000","message":"This should be an object now, not a dict.","commit_id":"818a7509e5e6421cc6fe7c0cffb362e03ca33c19"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"6e2343df0f07f90a3df0533fca6cb4c1d6260eb1","unresolved":false,"context_lines":[{"line_number":1502,"context_line":"                       migrate_data):"},{"line_number":1503,"context_line":"        LOG.debug(\"Live migration data %s\", migrate_data, instance\u003dinstance)"},{"line_number":1504,"context_line":"        vm_ref \u003d vm_util.get_vm_ref(self._session, instance)"},{"line_number":1505,"context_line":"        cluster_name \u003d migrate_data[\u0027cluster_name\u0027]"},{"line_number":1506,"context_line":"        cluster_ref \u003d vm_util.get_cluster_ref_by_name(self._session,"},{"line_number":1507,"context_line":"                                                      cluster_name)"},{"line_number":1508,"context_line":"        if cluster_ref is None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_c0950741","line":1505,"range":{"start_line":1505,"start_character":23,"end_line":1505,"end_character":35},"in_reply_to":"da0c15f0_2117ada4","updated":"2016-03-29 12:36:04.000000000","message":"Done","commit_id":"818a7509e5e6421cc6fe7c0cffb362e03ca33c19"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"acd04667f349a1fbd2d0458ef2a48ac0f9e60100","unresolved":false,"context_lines":[{"line_number":1604,"context_line":"        cluster_name \u003d migrate_data.cluster_name"},{"line_number":1605,"context_line":"        cluster_ref \u003d vm_util.get_cluster_ref_by_name(self._session,"},{"line_number":1606,"context_line":"                                                      cluster_name)"},{"line_number":1607,"context_line":"        if cluster_ref is None:"},{"line_number":1608,"context_line":"            LOG.error(\"Cannot find cluster %s\", cluster_name,"},{"line_number":1609,"context_line":"                      instance\u003dinstance)"},{"line_number":1610,"context_line":"            raise exception.HostNotFound(host\u003ddest)"},{"line_number":1611,"context_line":"        datastore_regex \u003d migrate_data.datastore_regex"},{"line_number":1612,"context_line":"        if datastore_regex is not None:"},{"line_number":1613,"context_line":"            datastore_regex \u003d re.compile(datastore_regex)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_3b0b18d6","line":1610,"range":{"start_line":1607,"start_character":8,"end_line":1610,"end_character":51},"updated":"2018-09-10 15:16:53.000000000","message":"This should be part of the pre-live migration checks that fail so we can pick another host/node.","commit_id":"4a61019da31859de5140509434cd836d1989b320"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"261f93861012463bb44f9cc82ee0f4ff746350db","unresolved":false,"context_lines":[{"line_number":1604,"context_line":"        cluster_name \u003d migrate_data.cluster_name"},{"line_number":1605,"context_line":"        cluster_ref \u003d vm_util.get_cluster_ref_by_name(self._session,"},{"line_number":1606,"context_line":"                                                      cluster_name)"},{"line_number":1607,"context_line":"        if cluster_ref is None:"},{"line_number":1608,"context_line":"            LOG.error(\"Cannot find cluster %s\", cluster_name,"},{"line_number":1609,"context_line":"                      instance\u003dinstance)"},{"line_number":1610,"context_line":"            raise exception.HostNotFound(host\u003ddest)"},{"line_number":1611,"context_line":"        datastore_regex \u003d migrate_data.datastore_regex"},{"line_number":1612,"context_line":"        if datastore_regex is not None:"},{"line_number":1613,"context_line":"            datastore_regex \u003d re.compile(datastore_regex)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_b1fb8a13","line":1610,"range":{"start_line":1607,"start_character":8,"end_line":1610,"end_character":51},"in_reply_to":"3f79a3b5_3b0b18d6","updated":"2018-09-26 11:08:22.000000000","message":"Done","commit_id":"4a61019da31859de5140509434cd836d1989b320"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"acd04667f349a1fbd2d0458ef2a48ac0f9e60100","unresolved":false,"context_lines":[{"line_number":1609,"context_line":"                      instance\u003dinstance)"},{"line_number":1610,"context_line":"            raise exception.HostNotFound(host\u003ddest)"},{"line_number":1611,"context_line":"        datastore_regex \u003d migrate_data.datastore_regex"},{"line_number":1612,"context_line":"        if datastore_regex is not None:"},{"line_number":1613,"context_line":"            datastore_regex \u003d re.compile(datastore_regex)"},{"line_number":1614,"context_line":"        res_pool_ref \u003d vm_util.get_res_pool_ref(self._session, cluster_ref)"},{"line_number":1615,"context_line":"        if res_pool_ref is None:"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_fbf4c0d2","line":1612,"range":{"start_line":1612,"start_character":8,"end_line":1612,"end_character":39},"updated":"2018-09-10 15:16:53.000000000","message":"Isn\u0027t datastore required?","commit_id":"4a61019da31859de5140509434cd836d1989b320"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"261f93861012463bb44f9cc82ee0f4ff746350db","unresolved":false,"context_lines":[{"line_number":1609,"context_line":"                      instance\u003dinstance)"},{"line_number":1610,"context_line":"            raise exception.HostNotFound(host\u003ddest)"},{"line_number":1611,"context_line":"        datastore_regex \u003d migrate_data.datastore_regex"},{"line_number":1612,"context_line":"        if datastore_regex is not None:"},{"line_number":1613,"context_line":"            datastore_regex \u003d re.compile(datastore_regex)"},{"line_number":1614,"context_line":"        res_pool_ref \u003d vm_util.get_res_pool_ref(self._session, cluster_ref)"},{"line_number":1615,"context_line":"        if res_pool_ref is None:"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_8bdc2146","line":1612,"range":{"start_line":1612,"start_character":8,"end_line":1612,"end_character":39},"in_reply_to":"3f79a3b5_fbf4c0d2","updated":"2018-09-26 11:08:22.000000000","message":"yes, will remove this check","commit_id":"4a61019da31859de5140509434cd836d1989b320"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"acd04667f349a1fbd2d0458ef2a48ac0f9e60100","unresolved":false,"context_lines":[{"line_number":1612,"context_line":"        if datastore_regex is not None:"},{"line_number":1613,"context_line":"            datastore_regex \u003d re.compile(datastore_regex)"},{"line_number":1614,"context_line":"        res_pool_ref \u003d vm_util.get_res_pool_ref(self._session, cluster_ref)"},{"line_number":1615,"context_line":"        if res_pool_ref is None:"},{"line_number":1616,"context_line":"            LOG.error(\"Cannot find resource pool\", instance\u003dinstance)"},{"line_number":1617,"context_line":"            raise exception.HostNotFound(host\u003ddest)"},{"line_number":1618,"context_line":"        # find a datastore where the instance will be migrated to"},{"line_number":1619,"context_line":"        ds \u003d self._find_datastore_for_migration(instance, vm_ref, cluster_ref,"},{"line_number":1620,"context_line":"                                                datastore_regex)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_dbfb04bc","line":1617,"range":{"start_line":1615,"start_character":8,"end_line":1617,"end_character":51},"updated":"2018-09-10 15:16:53.000000000","message":"Is this something we can check in pre-live migration?","commit_id":"4a61019da31859de5140509434cd836d1989b320"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"261f93861012463bb44f9cc82ee0f4ff746350db","unresolved":false,"context_lines":[{"line_number":1612,"context_line":"        if datastore_regex is not None:"},{"line_number":1613,"context_line":"            datastore_regex \u003d re.compile(datastore_regex)"},{"line_number":1614,"context_line":"        res_pool_ref \u003d vm_util.get_res_pool_ref(self._session, cluster_ref)"},{"line_number":1615,"context_line":"        if res_pool_ref is None:"},{"line_number":1616,"context_line":"            LOG.error(\"Cannot find resource pool\", instance\u003dinstance)"},{"line_number":1617,"context_line":"            raise exception.HostNotFound(host\u003ddest)"},{"line_number":1618,"context_line":"        # find a datastore where the instance will be migrated to"},{"line_number":1619,"context_line":"        ds \u003d self._find_datastore_for_migration(instance, vm_ref, cluster_ref,"},{"line_number":1620,"context_line":"                                                datastore_regex)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_310f7a30","line":1617,"range":{"start_line":1615,"start_character":8,"end_line":1617,"end_character":51},"in_reply_to":"3f79a3b5_dbfb04bc","updated":"2018-09-26 11:08:22.000000000","message":"yes, will move it there","commit_id":"4a61019da31859de5140509434cd836d1989b320"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"acd04667f349a1fbd2d0458ef2a48ac0f9e60100","unresolved":false,"context_lines":[{"line_number":1627,"context_line":"        # target datastore"},{"line_number":1628,"context_line":"        esx_host \u003d self._find_esx_host(cluster_ref, ds.ref)"},{"line_number":1629,"context_line":"        if esx_host is None:"},{"line_number":1630,"context_line":"            LOG.error(\"Cannot find ESX host\", instance\u003dinstance)"},{"line_number":1631,"context_line":"            raise exception.HostNotFound(host\u003ddest)"},{"line_number":1632,"context_line":"        try:"},{"line_number":1633,"context_line":"            vm_util.relocate_vm(self._session, vm_ref, res_pool_ref,"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_dbe9c4e3","line":1630,"range":{"start_line":1630,"start_character":23,"end_line":1630,"end_character":43},"updated":"2018-09-10 15:16:53.000000000","message":"Include some information about the cluster and ds reference for context in this error.","commit_id":"4a61019da31859de5140509434cd836d1989b320"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"261f93861012463bb44f9cc82ee0f4ff746350db","unresolved":false,"context_lines":[{"line_number":1627,"context_line":"        # target datastore"},{"line_number":1628,"context_line":"        esx_host \u003d self._find_esx_host(cluster_ref, ds.ref)"},{"line_number":1629,"context_line":"        if esx_host is None:"},{"line_number":1630,"context_line":"            LOG.error(\"Cannot find ESX host\", instance\u003dinstance)"},{"line_number":1631,"context_line":"            raise exception.HostNotFound(host\u003ddest)"},{"line_number":1632,"context_line":"        try:"},{"line_number":1633,"context_line":"            vm_util.relocate_vm(self._session, vm_ref, res_pool_ref,"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_71241261","line":1630,"range":{"start_line":1630,"start_character":23,"end_line":1630,"end_character":43},"in_reply_to":"3f79a3b5_dbe9c4e3","updated":"2018-09-26 11:08:22.000000000","message":"Done","commit_id":"4a61019da31859de5140509434cd836d1989b320"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"acd04667f349a1fbd2d0458ef2a48ac0f9e60100","unresolved":false,"context_lines":[{"line_number":1635,"context_line":"            LOG.info(\"Migrated instance to host %s\", dest, instance\u003dinstance)"},{"line_number":1636,"context_line":"        except Exception:"},{"line_number":1637,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1638,"context_line":"                recover_method(context, instance, dest, block_migration)"},{"line_number":1639,"context_line":"        post_method(context, instance, dest, block_migration, migrate_data)"},{"line_number":1640,"context_line":""},{"line_number":1641,"context_line":"    def poll_rebooting_instances(self, timeout, instances):"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_1bc97c78","line":1638,"updated":"2018-09-10 15:16:53.000000000","message":"Need to pass the migrate_data object to this method as well, otherwise compute manager isn\u0027t very smart:\n\nhttps://github.com/openstack/nova/blob/aa9f9448c9cf77bb1e55aa0cde5e7f9c4e0157c4/nova/compute/manager.py#L6858","commit_id":"4a61019da31859de5140509434cd836d1989b320"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"261f93861012463bb44f9cc82ee0f4ff746350db","unresolved":false,"context_lines":[{"line_number":1635,"context_line":"            LOG.info(\"Migrated instance to host %s\", dest, instance\u003dinstance)"},{"line_number":1636,"context_line":"        except Exception:"},{"line_number":1637,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1638,"context_line":"                recover_method(context, instance, dest, block_migration)"},{"line_number":1639,"context_line":"        post_method(context, instance, dest, block_migration, migrate_data)"},{"line_number":1640,"context_line":""},{"line_number":1641,"context_line":"    def poll_rebooting_instances(self, timeout, instances):"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_abb8fde7","line":1638,"in_reply_to":"3f79a3b5_1bc97c78","updated":"2018-09-26 11:08:22.000000000","message":"Done","commit_id":"4a61019da31859de5140509434cd836d1989b320"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ae03794dd6f66a19c61d3125ee6e03689eb72368","unresolved":false,"context_lines":[{"line_number":1619,"context_line":"        esx_host \u003d self._find_esx_host(cluster_ref, ds.ref)"},{"line_number":1620,"context_line":"        if esx_host is None:"},{"line_number":1621,"context_line":"            LOG.error(\"Cannot find ESX host for live migration, cluster: %s, \""},{"line_number":1622,"context_line":"                      \"datastore_regex: %s\", migrate_data.cluster_name,"},{"line_number":1623,"context_line":"                      migrate_data.datastore_regex, instance\u003dinstance)"},{"line_number":1624,"context_line":"            raise exception.HostNotFound(host\u003ddest)"},{"line_number":1625,"context_line":"        # Update networking backings"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_95cc108b","line":1622,"range":{"start_line":1622,"start_character":23,"end_line":1622,"end_character":38},"updated":"2018-09-27 20:03:12.000000000","message":"s/datastore_regex/datastore/ ?","commit_id":"e5c3dcd4813caa9db4d8e2777341277ab9123a85"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"868996a788eae075866c18acd99020ec3c917bf2","unresolved":false,"context_lines":[{"line_number":1619,"context_line":"        esx_host \u003d self._find_esx_host(cluster_ref, ds.ref)"},{"line_number":1620,"context_line":"        if esx_host is None:"},{"line_number":1621,"context_line":"            LOG.error(\"Cannot find ESX host for live migration, cluster: %s, \""},{"line_number":1622,"context_line":"                      \"datastore_regex: %s\", migrate_data.cluster_name,"},{"line_number":1623,"context_line":"                      migrate_data.datastore_regex, instance\u003dinstance)"},{"line_number":1624,"context_line":"            raise exception.HostNotFound(host\u003ddest)"},{"line_number":1625,"context_line":"        # Update networking backings"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_43dc77e0","line":1622,"range":{"start_line":1622,"start_character":23,"end_line":1622,"end_character":38},"in_reply_to":"3f79a3b5_95cc108b","updated":"2018-09-28 10:49:27.000000000","message":"Done","commit_id":"e5c3dcd4813caa9db4d8e2777341277ab9123a85"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ae03794dd6f66a19c61d3125ee6e03689eb72368","unresolved":false,"context_lines":[{"line_number":1620,"context_line":"        if esx_host is None:"},{"line_number":1621,"context_line":"            LOG.error(\"Cannot find ESX host for live migration, cluster: %s, \""},{"line_number":1622,"context_line":"                      \"datastore_regex: %s\", migrate_data.cluster_name,"},{"line_number":1623,"context_line":"                      migrate_data.datastore_regex, instance\u003dinstance)"},{"line_number":1624,"context_line":"            raise exception.HostNotFound(host\u003ddest)"},{"line_number":1625,"context_line":"        # Update networking backings"},{"line_number":1626,"context_line":"        network_info \u003d instance.get_network_info()"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_556af880","line":1623,"range":{"start_line":1623,"start_character":22,"end_line":1623,"end_character":50},"updated":"2018-09-27 20:03:12.000000000","message":"Use the ds.name here?","commit_id":"e5c3dcd4813caa9db4d8e2777341277ab9123a85"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"868996a788eae075866c18acd99020ec3c917bf2","unresolved":false,"context_lines":[{"line_number":1620,"context_line":"        if esx_host is None:"},{"line_number":1621,"context_line":"            LOG.error(\"Cannot find ESX host for live migration, cluster: %s, \""},{"line_number":1622,"context_line":"                      \"datastore_regex: %s\", migrate_data.cluster_name,"},{"line_number":1623,"context_line":"                      migrate_data.datastore_regex, instance\u003dinstance)"},{"line_number":1624,"context_line":"            raise exception.HostNotFound(host\u003ddest)"},{"line_number":1625,"context_line":"        # Update networking backings"},{"line_number":1626,"context_line":"        network_info \u003d instance.get_network_info()"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_e3eca393","line":1623,"range":{"start_line":1623,"start_character":22,"end_line":1623,"end_character":50},"in_reply_to":"3f79a3b5_556af880","updated":"2018-09-28 10:49:27.000000000","message":"Done","commit_id":"e5c3dcd4813caa9db4d8e2777341277ab9123a85"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ae03794dd6f66a19c61d3125ee6e03689eb72368","unresolved":false,"context_lines":[{"line_number":1628,"context_line":"        devices \u003d []"},{"line_number":1629,"context_line":"        hardware_devices \u003d self._session._call_method("},{"line_number":1630,"context_line":"            vutil, \"get_object_property\", vm_ref, \"config.hardware.device\")"},{"line_number":1631,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict("},{"line_number":1632,"context_line":"            utils.get_image_from_system_metadata("},{"line_number":1633,"context_line":"                instance.system_metadata))"},{"line_number":1634,"context_line":"        vif_model \u003d image_meta.properties.get(\u0027hw_vif_model\u0027,"},{"line_number":1635,"context_line":"                                              constants.DEFAULT_VIF_MODEL)"},{"line_number":1636,"context_line":"        for vif in network_info:"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_5518b81c","line":1633,"range":{"start_line":1631,"start_character":21,"end_line":1633,"end_character":42},"updated":"2018-09-27 20:03:12.000000000","message":"You can just use \"instance.image_meta\" here, it does the same thing.","commit_id":"e5c3dcd4813caa9db4d8e2777341277ab9123a85"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"868996a788eae075866c18acd99020ec3c917bf2","unresolved":false,"context_lines":[{"line_number":1628,"context_line":"        devices \u003d []"},{"line_number":1629,"context_line":"        hardware_devices \u003d self._session._call_method("},{"line_number":1630,"context_line":"            vutil, \"get_object_property\", vm_ref, \"config.hardware.device\")"},{"line_number":1631,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict("},{"line_number":1632,"context_line":"            utils.get_image_from_system_metadata("},{"line_number":1633,"context_line":"                instance.system_metadata))"},{"line_number":1634,"context_line":"        vif_model \u003d image_meta.properties.get(\u0027hw_vif_model\u0027,"},{"line_number":1635,"context_line":"                                              constants.DEFAULT_VIF_MODEL)"},{"line_number":1636,"context_line":"        for vif in network_info:"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_438a37bc","line":1633,"range":{"start_line":1631,"start_character":21,"end_line":1633,"end_character":42},"in_reply_to":"3f79a3b5_5518b81c","updated":"2018-09-28 10:49:27.000000000","message":"Done","commit_id":"e5c3dcd4813caa9db4d8e2777341277ab9123a85"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"df3c1675b348adee6454d4b0d14a975fc36f538d","unresolved":false,"context_lines":[{"line_number":1629,"context_line":"        hardware_devices \u003d self._session._call_method("},{"line_number":1630,"context_line":"            vutil, \"get_object_property\", vm_ref, \"config.hardware.device\")"},{"line_number":1631,"context_line":"        vif_model \u003d instance.image_meta.properties.get(\u0027hw_vif_model\u0027,"},{"line_number":1632,"context_line":"                                              constants.DEFAULT_VIF_MODEL)"},{"line_number":1633,"context_line":"        for vif in network_info:"},{"line_number":1634,"context_line":"            vif_info \u003d vmwarevif.get_vif_dict("},{"line_number":1635,"context_line":"                self._session, cluster_ref, vif_model, utils.is_neutron(), vif)"}],"source_content_type":"text/x-python","patch_set":18,"id":"3f79a3b5_7ae003cc","line":1632,"updated":"2018-10-01 16:16:04.000000000","message":"nit: alignment is a bit off here","commit_id":"997def6061cb71e1b12868cb2568c4b1766e0539"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"531f67b802df86ab5b607c7642ae810ddda27f50","unresolved":false,"context_lines":[{"line_number":1629,"context_line":"        hardware_devices \u003d self._session._call_method("},{"line_number":1630,"context_line":"            vutil, \"get_object_property\", vm_ref, \"config.hardware.device\")"},{"line_number":1631,"context_line":"        vif_model \u003d instance.image_meta.properties.get(\u0027hw_vif_model\u0027,"},{"line_number":1632,"context_line":"                                              constants.DEFAULT_VIF_MODEL)"},{"line_number":1633,"context_line":"        for vif in network_info:"},{"line_number":1634,"context_line":"            vif_info \u003d vmwarevif.get_vif_dict("},{"line_number":1635,"context_line":"                self._session, cluster_ref, vif_model, utils.is_neutron(), vif)"}],"source_content_type":"text/x-python","patch_set":18,"id":"3f79a3b5_500ddb3d","line":1632,"in_reply_to":"3f79a3b5_7ae003cc","updated":"2018-10-02 07:10:07.000000000","message":"Done","commit_id":"997def6061cb71e1b12868cb2568c4b1766e0539"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e6cbc60ce4ea17ad3a9acaf4331b08d9008a994d","unresolved":false,"context_lines":[{"line_number":1605,"context_line":"        cluster_ref \u003d vm_util.get_cluster_ref_by_name(self._session,"},{"line_number":1606,"context_line":"                                                      cluster_name)"},{"line_number":1607,"context_line":"        datastore_regex \u003d re.compile(migrate_data.datastore_regex)"},{"line_number":1608,"context_line":"        res_pool_ref \u003d vm_util.get_res_pool_ref(self._session, cluster_ref)"},{"line_number":1609,"context_line":"        # find a datastore where the instance will be migrated to"},{"line_number":1610,"context_line":"        ds \u003d self._find_datastore_for_migration(instance, vm_ref, cluster_ref,"},{"line_number":1611,"context_line":"                                                datastore_regex)"}],"source_content_type":"text/x-python","patch_set":19,"id":"3f79a3b5_36bc57da","line":1608,"range":{"start_line":1608,"start_character":8,"end_line":1608,"end_character":75},"updated":"2018-10-08 16:22:05.000000000","message":"You can move this call down to line 1643 since you don\u0027t use this variable until after all the checks and network info fetching is done. So, you would needlessly call this even if some of the checks failed and you raised an exception.","commit_id":"2fe92e91625222afcc01765437ba47c5374b7a76"}]}
