'Migrate directly if source and dest are managed by same storage.
We create a new vdisk copy in the desired pool, and add the original
vdisk copy to the admin_metadata of the volume to be deleted. The
deletion will occur using a periodic task once the new copy is synced.
:param ctxt: Context
:param volume: A dictionary describing the volume to migrate
:param host: A dictionary describing the host to migrate to, where
host[\'host\'] is its name, and host[\'capabilities\'] is a
dictionary of its reported capabilities.'

def migrate_volume(self, ctxt, volume, host):

    LOG.debug('enter:    migrate_volume:    id=%(id)s,    host=%(host)s', {'id': volume['id'], 'host': host['host']})
    false_ret = (False, None)
    dest_pool = self._helpers.can_migrate_to_host(host, self._state)
    if (dest_pool is None):
        return false_ret
    ctxt = context.get_admin_context()
    volume_type_id = volume['volume_type_id']
    if (volume_type_id is not None):
        vol_type = volume_types.get_volume_type(ctxt, volume_type_id)
    else:
        vol_type = None
    resp = self._helpers.lsvdiskcopy(volume.name)
    if (len(resp) > 1):
        copies = self._helpers.get_vdisk_copies(volume.name)
        self._helpers.migratevdisk(volume.name, dest_pool, copies['primary']['copy_id'])
    else:
        self.add_vdisk_copy(volume.name, dest_pool, vol_type, auto_delete=True)
    LOG.debug('leave:    migrate_volume:    id=%(id)s,    host=%(host)s', {'id': volume.id, 'host': host['host']})
    return (True, None)
