Пример #1
0
    def migrate_volume(self, volume, host):
        """Leverage the Unity move session functionality.

        This method is invoked at the source backend.
        """
        log_params = {
            'name': volume.name,
            'src_host': volume.host,
            'dest_host': host['host']
        }
        LOG.info(
            'Migrate Volume: %(name)s, host: %(src_host)s, destination: '
            '%(dest_host)s', log_params)

        src_backend = utils.get_backend_name_from_volume(volume)
        dest_backend = utils.get_backend_name_from_host(host)

        if src_backend != dest_backend:
            LOG.debug('Cross-backends migration not supported by Unity '
                      'driver. Falling back to host-assisted migration.')
            return False, None

        lun_id = self.get_lun_id(volume)
        dest_pool_name = utils.get_pool_name_from_host(host)
        dest_pool_id = self.get_pool_id_by_name(dest_pool_name)

        if self.client.migrate_lun(lun_id, dest_pool_id):
            LOG.debug('Volume migrated successfully.')
            model_update = {}
            return True, model_update

        LOG.debug('Volume migrated failed. Falling back to '
                  'host-assisted migration.')
        return False, None
Пример #2
0
 def get_backend_name_from_host(self):
     host = {'host': 'host@backend#pool_name'}
     ret = utils.get_backend_name_from_volume(host)
     self.assertEqual('host@backend', ret)
Пример #3
0
 def get_backend_name_from_volume(self):
     volume = test_adapter.MockOSResource(host='host@backend#pool_name')
     ret = utils.get_backend_name_from_volume(volume)
     self.assertEqual('host@backend', ret)
Пример #4
0
 def get_backend_name_from_host(self):
     host = {'host': 'host@backend#pool_name'}
     ret = utils.get_backend_name_from_volume(host)
     self.assertEqual('host@backend', ret)
Пример #5
0
 def get_backend_name_from_volume(self):
     volume = test_adapter.MockOSResource(host='host@backend#pool_name')
     ret = utils.get_backend_name_from_volume(volume)
     self.assertEqual('host@backend', ret)