Merge "VMware: Set backend UUID to volume UUID"
This commit is contained in:
commit
07d2dc0f7c
@ -496,7 +496,8 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
|||||||
create_backing.assert_called_once_with(
|
create_backing.assert_called_once_with(
|
||||||
volume,
|
volume,
|
||||||
create_params={vmdk.CREATE_PARAM_DISK_LESS: True,
|
create_params={vmdk.CREATE_PARAM_DISK_LESS: True,
|
||||||
vmdk.CREATE_PARAM_BACKING_NAME: disk_name})
|
vmdk.CREATE_PARAM_BACKING_NAME: disk_name,
|
||||||
|
vmdk.CREATE_PARAM_TEMP_BACKING: True})
|
||||||
else:
|
else:
|
||||||
create_backing.assert_called_once_with(
|
create_backing.assert_called_once_with(
|
||||||
volume, create_params={vmdk.CREATE_PARAM_DISK_LESS: True})
|
volume, create_params={vmdk.CREATE_PARAM_DISK_LESS: True})
|
||||||
@ -517,10 +518,12 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
|||||||
|
|
||||||
if disk_conversion:
|
if disk_conversion:
|
||||||
select_ds_for_volume.assert_called_once_with(volume)
|
select_ds_for_volume.assert_called_once_with(volume)
|
||||||
|
extra_config = {vmdk.EXTRA_CONFIG_VOLUME_ID_KEY: volume['id'],
|
||||||
|
volumeops.BACKING_UUID_KEY: volume['id']}
|
||||||
vops.clone_backing.assert_called_once_with(
|
vops.clone_backing.assert_called_once_with(
|
||||||
volume['name'], backing, None, volumeops.FULL_CLONE_TYPE,
|
volume['name'], backing, None, volumeops.FULL_CLONE_TYPE,
|
||||||
datastore, disk_type=disk_type, host=host, resource_pool=rp,
|
datastore, disk_type=disk_type, host=host, resource_pool=rp,
|
||||||
folder=folder)
|
extra_config=extra_config, folder=folder)
|
||||||
delete_tmp_backing.assert_called_once_with(backing)
|
delete_tmp_backing.assert_called_once_with(backing)
|
||||||
vops.update_backing_disk_uuid(clone, volume['id'])
|
vops.update_backing_disk_uuid(clone, volume['id'])
|
||||||
else:
|
else:
|
||||||
@ -1211,6 +1214,8 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
|||||||
vops.rename_backing.call_args_list)
|
vops.rename_backing.call_args_list)
|
||||||
else:
|
else:
|
||||||
vops.rename_backing.assert_called_once_with(backing, uuid)
|
vops.rename_backing.assert_called_once_with(backing, uuid)
|
||||||
|
vops.update_backing_uuid.assert_called_once_with(
|
||||||
|
new_backing, volume['id'])
|
||||||
vops.update_backing_disk_uuid.assert_called_once_with(
|
vops.update_backing_disk_uuid.assert_called_once_with(
|
||||||
new_backing, volume['id'])
|
new_backing, volume['id'])
|
||||||
delete_temp_backing.assert_called_once_with(backing)
|
delete_temp_backing.assert_called_once_with(backing)
|
||||||
@ -1520,7 +1525,8 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
|||||||
context, name, volume, tmp_file_path, file_size_bytes)
|
context, name, volume, tmp_file_path, file_size_bytes)
|
||||||
|
|
||||||
self.assertEqual(vm_ref, ret)
|
self.assertEqual(vm_ref, ret)
|
||||||
extra_config = {vmdk.EXTRA_CONFIG_VOLUME_ID_KEY: volume['id']}
|
extra_config = {vmdk.EXTRA_CONFIG_VOLUME_ID_KEY: volume['id'],
|
||||||
|
volumeops.BACKING_UUID_KEY: volume['id']}
|
||||||
vops.get_create_spec.assert_called_once_with(
|
vops.get_create_spec.assert_called_once_with(
|
||||||
name, 0, disk_type, summary.name, profileId=profile_id,
|
name, 0, disk_type, summary.name, profileId=profile_id,
|
||||||
extra_config=extra_config)
|
extra_config=extra_config)
|
||||||
@ -1895,7 +1901,8 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
|||||||
volumeops.LINKED_CLONE_TYPE,
|
volumeops.LINKED_CLONE_TYPE,
|
||||||
fake_snapshot['volume_size'])
|
fake_snapshot['volume_size'])
|
||||||
|
|
||||||
extra_config = {vmdk.EXTRA_CONFIG_VOLUME_ID_KEY: fake_volume['id']}
|
extra_config = {vmdk.EXTRA_CONFIG_VOLUME_ID_KEY: fake_volume['id'],
|
||||||
|
volumeops.BACKING_UUID_KEY: fake_volume['id']}
|
||||||
volume_ops.clone_backing.assert_called_with(fake_volume['name'],
|
volume_ops.clone_backing.assert_called_with(fake_volume['name'],
|
||||||
fake_backing,
|
fake_backing,
|
||||||
fake_snapshot,
|
fake_snapshot,
|
||||||
@ -1933,7 +1940,8 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
|||||||
volume, backing, snapshot_ref, volumeops.LINKED_CLONE_TYPE,
|
volume, backing, snapshot_ref, volumeops.LINKED_CLONE_TYPE,
|
||||||
volume['size'])
|
volume['size'])
|
||||||
|
|
||||||
extra_config = {vmdk.EXTRA_CONFIG_VOLUME_ID_KEY: volume['id']}
|
extra_config = {vmdk.EXTRA_CONFIG_VOLUME_ID_KEY: volume['id'],
|
||||||
|
volumeops.BACKING_UUID_KEY: volume['id']}
|
||||||
vops.clone_backing.assert_called_once_with(
|
vops.clone_backing.assert_called_once_with(
|
||||||
volume['name'], backing, snapshot_ref, volumeops.LINKED_CLONE_TYPE,
|
volume['name'], backing, snapshot_ref, volumeops.LINKED_CLONE_TYPE,
|
||||||
None, host=None, resource_pool=None, extra_config=extra_config,
|
None, host=None, resource_pool=None, extra_config=extra_config,
|
||||||
@ -1971,7 +1979,8 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
|||||||
fake_snapshot['volume_size'])
|
fake_snapshot['volume_size'])
|
||||||
|
|
||||||
_select_ds_for_volume.assert_called_with(fake_volume)
|
_select_ds_for_volume.assert_called_with(fake_volume)
|
||||||
extra_config = {vmdk.EXTRA_CONFIG_VOLUME_ID_KEY: fake_volume['id']}
|
extra_config = {vmdk.EXTRA_CONFIG_VOLUME_ID_KEY: fake_volume['id'],
|
||||||
|
volumeops.BACKING_UUID_KEY: fake_volume['id']}
|
||||||
volume_ops.clone_backing.assert_called_with(
|
volume_ops.clone_backing.assert_called_with(
|
||||||
fake_volume['name'],
|
fake_volume['name'],
|
||||||
fake_backing,
|
fake_backing,
|
||||||
@ -2315,7 +2324,8 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
|||||||
ret = self._driver._create_backing(volume, host, create_params)
|
ret = self._driver._create_backing(volume, host, create_params)
|
||||||
|
|
||||||
self.assertEqual(backing, ret)
|
self.assertEqual(backing, ret)
|
||||||
extra_config = {vmdk.EXTRA_CONFIG_VOLUME_ID_KEY: volume['id']}
|
extra_config = {vmdk.EXTRA_CONFIG_VOLUME_ID_KEY: volume['id'],
|
||||||
|
volumeops.BACKING_UUID_KEY: volume['id']}
|
||||||
vops.create_backing_disk_less.assert_called_once_with(
|
vops.create_backing_disk_less.assert_called_once_with(
|
||||||
'vol-1',
|
'vol-1',
|
||||||
folder,
|
folder,
|
||||||
@ -2736,7 +2746,8 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
|||||||
|
|
||||||
vops.get_backing.assert_called_once_with(volume['name'])
|
vops.get_backing.assert_called_once_with(volume['name'])
|
||||||
vops.update_backing_extra_config.assert_called_once_with(
|
vops.update_backing_extra_config.assert_called_once_with(
|
||||||
backing, {vmdk.EXTRA_CONFIG_VOLUME_ID_KEY: ''})
|
backing, {vmdk.EXTRA_CONFIG_VOLUME_ID_KEY: '',
|
||||||
|
volumeops.BACKING_UUID_KEY: ''})
|
||||||
|
|
||||||
@mock.patch('oslo_vmware.api.VMwareAPISession')
|
@mock.patch('oslo_vmware.api.VMwareAPISession')
|
||||||
def test_session(self, apiSession):
|
def test_session(self, apiSession):
|
||||||
|
@ -576,12 +576,14 @@ class VolumeOpsTestCase(test.TestCase):
|
|||||||
profile_id = mock.sentinel.profile_id
|
profile_id = mock.sentinel.profile_id
|
||||||
option_key = mock.sentinel.key
|
option_key = mock.sentinel.key
|
||||||
option_value = mock.sentinel.value
|
option_value = mock.sentinel.value
|
||||||
extra_config = {option_key: option_value}
|
extra_config = {option_key: option_value,
|
||||||
|
volumeops.BACKING_UUID_KEY: mock.sentinel.uuid}
|
||||||
ret = self.vops._get_create_spec_disk_less(name, ds_name, profile_id,
|
ret = self.vops._get_create_spec_disk_less(name, ds_name, profile_id,
|
||||||
extra_config)
|
extra_config)
|
||||||
|
|
||||||
factory.create.side_effect = None
|
factory.create.side_effect = None
|
||||||
self.assertEqual(name, ret.name)
|
self.assertEqual(name, ret.name)
|
||||||
|
self.assertEqual(mock.sentinel.uuid, ret.instanceUuid)
|
||||||
self.assertEqual('[%s]' % ds_name, ret.files.vmPathName)
|
self.assertEqual('[%s]' % ds_name, ret.files.vmPathName)
|
||||||
self.assertEqual("vmx-08", ret.version)
|
self.assertEqual("vmx-08", ret.version)
|
||||||
self.assertEqual(profile_id, ret.vmProfile[0].profileId)
|
self.assertEqual(profile_id, ret.vmProfile[0].profileId)
|
||||||
@ -959,7 +961,8 @@ class VolumeOpsTestCase(test.TestCase):
|
|||||||
rp = mock.sentinel.rp
|
rp = mock.sentinel.rp
|
||||||
key = mock.sentinel.key
|
key = mock.sentinel.key
|
||||||
value = mock.sentinel.value
|
value = mock.sentinel.value
|
||||||
extra_config = {key: value}
|
extra_config = {key: value,
|
||||||
|
volumeops.BACKING_UUID_KEY: mock.sentinel.uuid}
|
||||||
ret = self.vops._get_clone_spec(datastore, disk_move_type, snapshot,
|
ret = self.vops._get_clone_spec(datastore, disk_move_type, snapshot,
|
||||||
backing, disk_type, host, rp,
|
backing, disk_type, host, rp,
|
||||||
extra_config)
|
extra_config)
|
||||||
@ -968,6 +971,7 @@ class VolumeOpsTestCase(test.TestCase):
|
|||||||
self.assertFalse(ret.powerOn)
|
self.assertFalse(ret.powerOn)
|
||||||
self.assertFalse(ret.template)
|
self.assertFalse(ret.template)
|
||||||
self.assertEqual(snapshot, ret.snapshot)
|
self.assertEqual(snapshot, ret.snapshot)
|
||||||
|
self.assertEqual(mock.sentinel.uuid, ret.config.instanceUuid)
|
||||||
get_relocate_spec.assert_called_once_with(datastore, rp, host,
|
get_relocate_spec.assert_called_once_with(datastore, rp, host,
|
||||||
disk_move_type, disk_type,
|
disk_move_type, disk_type,
|
||||||
None)
|
None)
|
||||||
@ -1172,13 +1176,31 @@ class VolumeOpsTestCase(test.TestCase):
|
|||||||
get_extra_config_option_values.return_value = option_values
|
get_extra_config_option_values.return_value = option_values
|
||||||
|
|
||||||
backing = mock.sentinel.backing
|
backing = mock.sentinel.backing
|
||||||
extra_config = mock.sentinel.extra_config
|
option_key = mock.sentinel.key
|
||||||
|
option_value = mock.sentinel.value
|
||||||
|
extra_config = {option_key: option_value,
|
||||||
|
volumeops.BACKING_UUID_KEY: mock.sentinel.uuid}
|
||||||
self.vops.update_backing_extra_config(backing, extra_config)
|
self.vops.update_backing_extra_config(backing, extra_config)
|
||||||
|
|
||||||
get_extra_config_option_values.assert_called_once_with(extra_config)
|
get_extra_config_option_values.assert_called_once_with(
|
||||||
|
{option_key: option_value})
|
||||||
|
self.assertEqual(mock.sentinel.uuid, reconfig_spec.instanceUuid)
|
||||||
self.assertEqual(option_values, reconfig_spec.extraConfig)
|
self.assertEqual(option_values, reconfig_spec.extraConfig)
|
||||||
reconfigure_backing.assert_called_once_with(backing, reconfig_spec)
|
reconfigure_backing.assert_called_once_with(backing, reconfig_spec)
|
||||||
|
|
||||||
|
@mock.patch('cinder.volume.drivers.vmware.volumeops.VMwareVolumeOps.'
|
||||||
|
'_reconfigure_backing')
|
||||||
|
def test_update_backing_uuid(self, reconfigure_backing):
|
||||||
|
reconfig_spec = mock.Mock()
|
||||||
|
self.session.vim.client.factory.create.return_value = reconfig_spec
|
||||||
|
|
||||||
|
backing = mock.sentinel.backing
|
||||||
|
uuid = mock.sentinel.uuid
|
||||||
|
self.vops.update_backing_uuid(backing, uuid)
|
||||||
|
|
||||||
|
self.assertEqual(mock.sentinel.uuid, reconfig_spec.instanceUuid)
|
||||||
|
reconfigure_backing.assert_called_once_with(backing, reconfig_spec)
|
||||||
|
|
||||||
def test_change_backing_profile(self):
|
def test_change_backing_profile(self):
|
||||||
# Test change to empty profile.
|
# Test change to empty profile.
|
||||||
reconfig_spec = mock.Mock()
|
reconfig_spec = mock.Mock()
|
||||||
|
@ -60,6 +60,7 @@ CREATE_PARAM_ADAPTER_TYPE = 'adapter_type'
|
|||||||
CREATE_PARAM_DISK_LESS = 'disk_less'
|
CREATE_PARAM_DISK_LESS = 'disk_less'
|
||||||
CREATE_PARAM_BACKING_NAME = 'name'
|
CREATE_PARAM_BACKING_NAME = 'name'
|
||||||
CREATE_PARAM_DISK_SIZE = 'disk_size'
|
CREATE_PARAM_DISK_SIZE = 'disk_size'
|
||||||
|
CREATE_PARAM_TEMP_BACKING = 'temp_backing'
|
||||||
|
|
||||||
TMP_IMAGES_DATASTORE_FOLDER_PATH = "cinder_temp/"
|
TMP_IMAGES_DATASTORE_FOLDER_PATH = "cinder_temp/"
|
||||||
|
|
||||||
@ -393,7 +394,8 @@ class VMwareVcVmdkDriver(driver.VolumeDriver):
|
|||||||
return profile_id
|
return profile_id
|
||||||
|
|
||||||
def _get_extra_config(self, volume):
|
def _get_extra_config(self, volume):
|
||||||
return {EXTRA_CONFIG_VOLUME_ID_KEY: volume['id']}
|
return {EXTRA_CONFIG_VOLUME_ID_KEY: volume['id'],
|
||||||
|
volumeops.BACKING_UUID_KEY: volume['id']}
|
||||||
|
|
||||||
def _create_backing(self, volume, host=None, create_params=None):
|
def _create_backing(self, volume, host=None, create_params=None):
|
||||||
"""Create volume backing under the given host.
|
"""Create volume backing under the given host.
|
||||||
@ -418,6 +420,9 @@ class VMwareVcVmdkDriver(driver.VolumeDriver):
|
|||||||
volume['name'])
|
volume['name'])
|
||||||
|
|
||||||
extra_config = self._get_extra_config(volume)
|
extra_config = self._get_extra_config(volume)
|
||||||
|
# We shoudln't set backing UUID to volume UUID for temporary backing.
|
||||||
|
if create_params.get(CREATE_PARAM_TEMP_BACKING):
|
||||||
|
del extra_config[volumeops.BACKING_UUID_KEY]
|
||||||
|
|
||||||
# default is a backing with single disk
|
# default is a backing with single disk
|
||||||
disk_less = create_params.get(CREATE_PARAM_DISK_LESS, False)
|
disk_less = create_params.get(CREATE_PARAM_DISK_LESS, False)
|
||||||
@ -954,6 +959,7 @@ class VMwareVcVmdkDriver(driver.VolumeDriver):
|
|||||||
# for clone operation.
|
# for clone operation.
|
||||||
disk_name = uuidutils.generate_uuid()
|
disk_name = uuidutils.generate_uuid()
|
||||||
create_params[CREATE_PARAM_BACKING_NAME] = disk_name
|
create_params[CREATE_PARAM_BACKING_NAME] = disk_name
|
||||||
|
create_params[CREATE_PARAM_TEMP_BACKING] = True
|
||||||
else:
|
else:
|
||||||
disk_name = volume['name']
|
disk_name = volume['name']
|
||||||
|
|
||||||
@ -1006,6 +1012,7 @@ class VMwareVcVmdkDriver(driver.VolumeDriver):
|
|||||||
datastore = summary.datastore
|
datastore = summary.datastore
|
||||||
LOG.debug("Cloning temporary backing: %s for disk type "
|
LOG.debug("Cloning temporary backing: %s for disk type "
|
||||||
"conversion.", backing)
|
"conversion.", backing)
|
||||||
|
extra_config = self._get_extra_config(volume)
|
||||||
clone = self.volumeops.clone_backing(volume['name'],
|
clone = self.volumeops.clone_backing(volume['name'],
|
||||||
backing,
|
backing,
|
||||||
None,
|
None,
|
||||||
@ -1014,9 +1021,11 @@ class VMwareVcVmdkDriver(driver.VolumeDriver):
|
|||||||
disk_type=disk_type,
|
disk_type=disk_type,
|
||||||
host=host,
|
host=host,
|
||||||
resource_pool=rp,
|
resource_pool=rp,
|
||||||
|
extra_config=extra_config,
|
||||||
folder=folder)
|
folder=folder)
|
||||||
self._delete_temp_backing(backing)
|
self._delete_temp_backing(backing)
|
||||||
backing = clone
|
backing = clone
|
||||||
|
|
||||||
self.volumeops.update_backing_disk_uuid(backing, volume['id'])
|
self.volumeops.update_backing_disk_uuid(backing, volume['id'])
|
||||||
except Exception:
|
except Exception:
|
||||||
# Delete backing and virtual disk created from image.
|
# Delete backing and virtual disk created from image.
|
||||||
@ -1379,17 +1388,18 @@ class VMwareVcVmdkDriver(driver.VolumeDriver):
|
|||||||
volumeops.FULL_CLONE_TYPE, datastore,
|
volumeops.FULL_CLONE_TYPE, datastore,
|
||||||
disk_type=new_disk_type, host=host,
|
disk_type=new_disk_type, host=host,
|
||||||
resource_pool=rp, folder=folder)
|
resource_pool=rp, folder=folder)
|
||||||
self.volumeops.update_backing_disk_uuid(new_backing,
|
|
||||||
volume['id'])
|
|
||||||
self._delete_temp_backing(backing)
|
self._delete_temp_backing(backing)
|
||||||
backing = new_backing
|
backing = new_backing
|
||||||
|
self.volumeops.update_backing_uuid(backing, volume['id'])
|
||||||
|
self.volumeops.update_backing_disk_uuid(backing,
|
||||||
|
volume['id'])
|
||||||
except exceptions.VimException:
|
except exceptions.VimException:
|
||||||
with excutils.save_and_reraise_exception():
|
with excutils.save_and_reraise_exception():
|
||||||
LOG.exception(_LE("Error occurred while cloning "
|
LOG.exception(_LE("Error occurred while cloning "
|
||||||
"backing:"
|
"backing:"
|
||||||
" %s during retype."),
|
" %s during retype."),
|
||||||
backing)
|
backing)
|
||||||
if renamed:
|
if renamed and not new_backing:
|
||||||
LOG.debug("Undo rename of backing: %(backing)s; "
|
LOG.debug("Undo rename of backing: %(backing)s; "
|
||||||
"changing name from %(new_name)s to "
|
"changing name from %(new_name)s to "
|
||||||
"%(old_name)s.",
|
"%(old_name)s.",
|
||||||
|
@ -33,6 +33,8 @@ LOG = logging.getLogger(__name__)
|
|||||||
LINKED_CLONE_TYPE = 'linked'
|
LINKED_CLONE_TYPE = 'linked'
|
||||||
FULL_CLONE_TYPE = 'full'
|
FULL_CLONE_TYPE = 'full'
|
||||||
|
|
||||||
|
BACKING_UUID_KEY = 'instanceUuid'
|
||||||
|
|
||||||
|
|
||||||
def split_datastore_path(datastore_path):
|
def split_datastore_path(datastore_path):
|
||||||
"""Split the datastore path to components.
|
"""Split the datastore path to components.
|
||||||
@ -704,6 +706,8 @@ class VMwareVolumeOps(object):
|
|||||||
create_spec.vmProfile = [vmProfile]
|
create_spec.vmProfile = [vmProfile]
|
||||||
|
|
||||||
if extra_config:
|
if extra_config:
|
||||||
|
if BACKING_UUID_KEY in extra_config:
|
||||||
|
create_spec.instanceUuid = extra_config.pop(BACKING_UUID_KEY)
|
||||||
create_spec.extraConfig = self._get_extra_config_option_values(
|
create_spec.extraConfig = self._get_extra_config_option_values(
|
||||||
extra_config)
|
extra_config)
|
||||||
|
|
||||||
@ -1063,6 +1067,8 @@ class VMwareVolumeOps(object):
|
|||||||
|
|
||||||
if extra_config:
|
if extra_config:
|
||||||
config_spec = cf.create('ns0:VirtualMachineConfigSpec')
|
config_spec = cf.create('ns0:VirtualMachineConfigSpec')
|
||||||
|
if BACKING_UUID_KEY in extra_config:
|
||||||
|
config_spec.instanceUuid = extra_config.pop(BACKING_UUID_KEY)
|
||||||
config_spec.extraConfig = self._get_extra_config_option_values(
|
config_spec.extraConfig = self._get_extra_config_option_values(
|
||||||
extra_config)
|
extra_config)
|
||||||
clone_spec.config = config_spec
|
clone_spec.config = config_spec
|
||||||
@ -1259,6 +1265,8 @@ class VMwareVolumeOps(object):
|
|||||||
def update_backing_extra_config(self, backing, extra_config):
|
def update_backing_extra_config(self, backing, extra_config):
|
||||||
cf = self._session.vim.client.factory
|
cf = self._session.vim.client.factory
|
||||||
reconfig_spec = cf.create('ns0:VirtualMachineConfigSpec')
|
reconfig_spec = cf.create('ns0:VirtualMachineConfigSpec')
|
||||||
|
if BACKING_UUID_KEY in extra_config:
|
||||||
|
reconfig_spec.instanceUuid = extra_config.pop(BACKING_UUID_KEY)
|
||||||
reconfig_spec.extraConfig = self._get_extra_config_option_values(
|
reconfig_spec.extraConfig = self._get_extra_config_option_values(
|
||||||
extra_config)
|
extra_config)
|
||||||
self._reconfigure_backing(backing, reconfig_spec)
|
self._reconfigure_backing(backing, reconfig_spec)
|
||||||
@ -1267,6 +1275,15 @@ class VMwareVolumeOps(object):
|
|||||||
{'backing': backing,
|
{'backing': backing,
|
||||||
'extra_config': extra_config})
|
'extra_config': extra_config})
|
||||||
|
|
||||||
|
def update_backing_uuid(self, backing, uuid):
|
||||||
|
cf = self._session.vim.client.factory
|
||||||
|
reconfig_spec = cf.create('ns0:VirtualMachineConfigSpec')
|
||||||
|
reconfig_spec.instanceUuid = uuid
|
||||||
|
self._reconfigure_backing(backing, reconfig_spec)
|
||||||
|
LOG.debug("Backing: %(backing)s reconfigured with uuid: %(uuid)s.",
|
||||||
|
{'backing': backing,
|
||||||
|
'uuid': uuid})
|
||||||
|
|
||||||
def delete_file(self, file_path, datacenter=None):
|
def delete_file(self, file_path, datacenter=None):
|
||||||
"""Delete file or folder on the datastore.
|
"""Delete file or folder on the datastore.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user