Merge "vmware tests: Support different moref backend representations"
This commit is contained in:
commit
46ebfe0b91
29
cinder/tests/unit/volume/drivers/vmware/fake.py
Normal file
29
cinder/tests/unit/volume/drivers/vmware/fake.py
Normal file
@ -0,0 +1,29 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
|
||||
class ManagedObjectReference(object):
|
||||
"""A managed object reference is a remote identifier."""
|
||||
|
||||
def __init__(self, name="ManagedObject", value=None):
|
||||
super(ManagedObjectReference, self)
|
||||
# Managed Object Reference value attributes
|
||||
# typically have values like vm-123 or
|
||||
# host-232 and not UUID.
|
||||
self.value = value
|
||||
self._value_1 = value
|
||||
# Managed Object Reference type
|
||||
# attributes hold the name of the type
|
||||
# of the vCenter object the value
|
||||
# attribute is the identifier for
|
||||
self.type = name
|
||||
self._type = name
|
@ -21,6 +21,7 @@ from unittest import mock
|
||||
from oslo_utils import units
|
||||
|
||||
from cinder.tests.unit import test
|
||||
from cinder.tests.unit.volume.drivers.vmware import fake as vmware_fake
|
||||
from cinder.volume.drivers.vmware import datastore as ds_sel
|
||||
from cinder.volume.drivers.vmware import exceptions as vmdk_exceptions
|
||||
|
||||
@ -68,7 +69,7 @@ class DatastoreTest(test.TestCase):
|
||||
profile_name)
|
||||
|
||||
def _create_datastore(self, value):
|
||||
return mock.Mock(name=value, value=value)
|
||||
return vmware_fake.ManagedObjectReference('Datastore', value)
|
||||
|
||||
def _create_summary(
|
||||
self, ds, free_space=units.Mi, _type=ds_sel.DatastoreType.VMFS,
|
||||
@ -79,10 +80,7 @@ class DatastoreTest(test.TestCase):
|
||||
return summary
|
||||
|
||||
def _create_host(self, value):
|
||||
host = mock.Mock(spec=['_type', 'value'], name=value)
|
||||
host._type = 'HostSystem'
|
||||
host.value = value
|
||||
return host
|
||||
return vmware_fake.ManagedObjectReference('HostSystem', value)
|
||||
|
||||
@mock.patch('cinder.volume.drivers.vmware.datastore.DatastoreSelector.'
|
||||
'_filter_by_profile')
|
||||
|
@ -34,6 +34,7 @@ from cinder.tests.unit import fake_snapshot
|
||||
from cinder.tests.unit import fake_volume
|
||||
from cinder.tests.unit import test
|
||||
from cinder.tests.unit import utils as test_utils
|
||||
from cinder.tests.unit.volume.drivers.vmware import fake as vmware_fake
|
||||
from cinder.volume.drivers.vmware import datastore as hub
|
||||
from cinder.volume.drivers.vmware import exceptions as vmdk_exceptions
|
||||
from cinder.volume.drivers.vmware import vmdk
|
||||
@ -903,7 +904,7 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
||||
self, vops, copy_image, get_vsphere_url, flat_extent_path,
|
||||
generate_uuid, get_temp_image_folder, copy_temp_virtual_disk,
|
||||
vsphere_url=None):
|
||||
dc_ref = mock.Mock(value=mock.sentinel.dc_ref)
|
||||
dc_ref = vmware_fake.ManagedObjectReference(value=mock.sentinel.dc_ref)
|
||||
ds_name = mock.sentinel.ds_name
|
||||
folder_path = mock.sentinel.folder_path
|
||||
get_temp_image_folder.return_value = (dc_ref, ds_name, folder_path)
|
||||
@ -920,7 +921,8 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
||||
image_service = mock.sentinel.image_service
|
||||
image_id = mock.sentinel.image_id
|
||||
image_size_in_bytes = 2 * units.Gi
|
||||
dest_dc_ref = mock.sentinel.dest_dc_ref
|
||||
dest_dc_ref = \
|
||||
vmware_fake.ManagedObjectReference(value=mock.sentinel.dest_dc_ref)
|
||||
dest_ds_name = mock.sentinel.dest_ds_name
|
||||
dest_folder_path = mock.sentinel.dest_folder_path
|
||||
dest_disk_name = mock.sentinel.dest_disk_name
|
||||
@ -968,7 +970,7 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
||||
def test_create_virtual_disk_from_preallocated_image_with_no_disk_copy(
|
||||
self, vops, copy_image, get_vsphere_url, flat_extent_path,
|
||||
get_temp_image_folder, copy_temp_virtual_disk):
|
||||
dc_ref = mock.Mock(value=mock.sentinel.dc_ref)
|
||||
dc_ref = vmware_fake.ManagedObjectReference(value=mock.sentinel.dc_ref)
|
||||
ds_name = mock.sentinel.ds_name
|
||||
folder_path = mock.sentinel.folder_path
|
||||
get_temp_image_folder.return_value = (dc_ref, ds_name, folder_path)
|
||||
@ -980,7 +982,8 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
||||
image_service = mock.sentinel.image_service
|
||||
image_id = mock.sentinel.image_id
|
||||
image_size_in_bytes = 2 * units.Gi
|
||||
dest_dc_ref = mock.Mock(value=mock.sentinel.dc_ref)
|
||||
dc_ref_value = mock.sentinel.dc_ref
|
||||
dest_dc_ref = vmware_fake.ManagedObjectReference(value=dc_ref_value)
|
||||
dest_ds_name = ds_name
|
||||
dest_folder_path = mock.sentinel.dest_folder_path
|
||||
dest_disk_name = mock.sentinel.dest_disk_name
|
||||
@ -1012,7 +1015,7 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
||||
def test_create_virtual_disk_from_preallocated_image_with_copy_error(
|
||||
self, vops, copy_image, get_vsphere_url, flat_extent_path,
|
||||
generate_uuid, get_temp_image_folder, copy_temp_virtual_disk):
|
||||
dc_ref = mock.Mock(value=mock.sentinel.dc_ref)
|
||||
dc_ref = vmware_fake.ManagedObjectReference(value=mock.sentinel.dc_ref)
|
||||
ds_name = mock.sentinel.ds_name
|
||||
folder_path = mock.sentinel.folder_path
|
||||
get_temp_image_folder.return_value = (dc_ref, ds_name, folder_path)
|
||||
@ -1029,7 +1032,8 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
||||
image_service = mock.sentinel.image_service
|
||||
image_id = mock.sentinel.image_id
|
||||
image_size_in_bytes = 2 * units.Gi
|
||||
dest_dc_ref = mock.sentinel.dest_dc_ref
|
||||
dest_dc_ref = \
|
||||
vmware_fake.ManagedObjectReference(value=mock.sentinel.dest_dc_ref)
|
||||
dest_ds_name = mock.sentinel.dest_ds_name
|
||||
dest_folder_path = mock.sentinel.dest_folder_path
|
||||
dest_disk_name = mock.sentinel.dest_disk_name
|
||||
@ -1367,7 +1371,7 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
||||
backing = mock.sentinel.backing
|
||||
vops.get_backing.return_value = backing
|
||||
|
||||
datastore = mock.Mock(value='ds1')
|
||||
datastore = vmware_fake.ManagedObjectReference(value='ds1')
|
||||
vops.get_datastore.return_value = datastore
|
||||
|
||||
disk_type = mock.sentinel.disk_type
|
||||
@ -1415,7 +1419,7 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
||||
backing = mock.sentinel.backing
|
||||
vops.get_backing.return_value = backing
|
||||
|
||||
datastore = mock.Mock(value='ds1')
|
||||
datastore = vmware_fake.ManagedObjectReference(value='ds1')
|
||||
vops.get_datastore.return_value = datastore
|
||||
|
||||
disk_type = mock.sentinel.disk_type
|
||||
@ -1479,7 +1483,7 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
||||
backing = mock.sentinel.backing
|
||||
vops.get_backing.return_value = backing
|
||||
|
||||
datastore = mock.Mock(value='ds1')
|
||||
datastore = vmware_fake.ManagedObjectReference(value='ds1')
|
||||
vops.get_datastore.return_value = datastore
|
||||
|
||||
get_disk_type.return_value = 'thin'
|
||||
@ -1568,7 +1572,7 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
||||
backing = mock.sentinel.backing
|
||||
vops.get_backing.return_value = backing
|
||||
|
||||
datastore = mock.Mock(value='ds1')
|
||||
datastore = vmware_fake.ManagedObjectReference(value='ds1')
|
||||
vops.get_datastore.return_value = datastore
|
||||
|
||||
get_disk_type.return_value = 'thin'
|
||||
@ -1904,8 +1908,8 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
||||
vops.get_dc.side_effect = [dc_1, dc_2]
|
||||
|
||||
# cache miss
|
||||
rp_1 = mock.Mock(value='rp-1')
|
||||
rp_2 = mock.Mock(value='rp-2')
|
||||
rp_1 = vmware_fake.ManagedObjectReference(value='rp-1')
|
||||
rp_2 = vmware_fake.ManagedObjectReference(value='rp-2')
|
||||
self.assertEqual(dc_1, self._driver._get_dc(rp_1))
|
||||
self.assertEqual(dc_2, self._driver._get_dc(rp_2))
|
||||
self.assertDictEqual({'rp-1': dc_1, 'rp-2': dc_2},
|
||||
@ -1961,7 +1965,7 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
||||
def _test_get_connection_info(
|
||||
self, get_storage_profile_id, vops, vmdk_connector=False):
|
||||
volume = self._create_volume_obj()
|
||||
backing = mock.Mock(value='ref-1')
|
||||
backing = vmware_fake.ManagedObjectReference(value='ref-1')
|
||||
|
||||
profile_id = mock.sentinel.profile_id
|
||||
get_storage_profile_id.return_value = profile_id
|
||||
@ -1970,10 +1974,10 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
||||
vmdk_path = mock.sentinel.vmdk_path
|
||||
vops.get_vmdk_path.return_value = vmdk_path
|
||||
|
||||
datastore = mock.Mock(value='ds-1')
|
||||
datastore = vmware_fake.ManagedObjectReference(value='ds-1')
|
||||
vops.get_datastore.return_value = datastore
|
||||
|
||||
datacenter = mock.Mock(value='dc-1')
|
||||
datacenter = vmware_fake.ManagedObjectReference(value='dc-1')
|
||||
vops.get_dc.return_value = datacenter
|
||||
|
||||
connector = {'platform': mock.sentinel.platform,
|
||||
@ -2026,7 +2030,7 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
||||
get_moref, vops, backing_exists=True, instance_exists=True):
|
||||
|
||||
backing_val = mock.sentinel.backing_val
|
||||
backing = mock.Mock(value=backing_val)
|
||||
backing = vmware_fake.ManagedObjectReference(value=backing_val)
|
||||
if backing_exists:
|
||||
vops.get_backing.return_value = backing
|
||||
else:
|
||||
|
@ -23,6 +23,7 @@ from oslo_vmware import exceptions
|
||||
from oslo_vmware import vim_util
|
||||
|
||||
from cinder.tests.unit import test
|
||||
from cinder.tests.unit.volume.drivers.vmware import fake as vmware_fake
|
||||
from cinder.volume.drivers.vmware import exceptions as vmdk_exceptions
|
||||
from cinder.volume.drivers.vmware import volumeops
|
||||
|
||||
@ -286,8 +287,7 @@ class VolumeOpsTestCase(test.TestCase):
|
||||
self.assertEqual([], hosts)
|
||||
|
||||
summary.accessible = True
|
||||
host = mock.Mock(spec=object)
|
||||
host.value = mock.sentinel.host
|
||||
host = vmware_fake.ManagedObjectReference(value=mock.sentinel.host)
|
||||
host_mounts = self._create_host_mounts("readWrite", host)
|
||||
self.session.invoke_api.return_value = host_mounts
|
||||
hosts = self.vops.get_connected_hosts(datastore)
|
||||
@ -311,7 +311,7 @@ class VolumeOpsTestCase(test.TestCase):
|
||||
get_connected_hosts.return_value = [host_1, host_2]
|
||||
|
||||
ds = mock.sentinel.datastore
|
||||
host = mock.Mock(value=mock.sentinel.host_1)
|
||||
host = vmware_fake.ManagedObjectReference(value=mock.sentinel.host_1)
|
||||
self.assertTrue(self.vops.is_datastore_accessible(ds, host))
|
||||
get_connected_hosts.assert_called_once_with(ds)
|
||||
|
||||
@ -323,22 +323,19 @@ class VolumeOpsTestCase(test.TestCase):
|
||||
get_connected_hosts.return_value = [host_1]
|
||||
|
||||
ds = mock.sentinel.datastore
|
||||
host = mock.Mock(value=mock.sentinel.host_2)
|
||||
host = vmware_fake.ManagedObjectReference(value=mock.sentinel.host_2)
|
||||
self.assertFalse(self.vops.is_datastore_accessible(ds, host))
|
||||
get_connected_hosts.assert_called_once_with(ds)
|
||||
|
||||
def test_get_parent(self):
|
||||
# Not recursive
|
||||
child = mock.Mock(spec=object)
|
||||
child._type = 'Parent'
|
||||
child = vmware_fake.ManagedObjectReference('Parent')
|
||||
ret = self.vops._get_parent(child, 'Parent')
|
||||
self.assertEqual(child, ret)
|
||||
|
||||
# Recursive
|
||||
parent = mock.Mock(spec=object)
|
||||
parent._type = 'Parent'
|
||||
child = mock.Mock(spec=object)
|
||||
child._type = 'Child'
|
||||
parent = vmware_fake.ManagedObjectReference('Parent')
|
||||
child = vmware_fake.ManagedObjectReference('Child')
|
||||
self.session.invoke_api.return_value = parent
|
||||
ret = self.vops._get_parent(child, 'Parent')
|
||||
self.assertEqual(parent, ret)
|
||||
@ -349,13 +346,10 @@ class VolumeOpsTestCase(test.TestCase):
|
||||
|
||||
def test_get_dc(self):
|
||||
# set up hierarchy of objects
|
||||
dc = mock.Mock(spec=object)
|
||||
dc._type = 'Datacenter'
|
||||
o1 = mock.Mock(spec=object)
|
||||
o1._type = 'mockType1'
|
||||
dc = vmware_fake.ManagedObjectReference('Datacenter')
|
||||
o1 = vmware_fake.ManagedObjectReference('mockType1')
|
||||
o1.parent = dc
|
||||
o2 = mock.Mock(spec=object)
|
||||
o2._type = 'mockType2'
|
||||
o2 = vmware_fake.ManagedObjectReference('mockType2')
|
||||
o2.parent = o1
|
||||
|
||||
# mock out invoke_api behaviour to fetch parent
|
||||
@ -382,9 +376,9 @@ class VolumeOpsTestCase(test.TestCase):
|
||||
@mock.patch('cinder.volume.drivers.vmware.volumeops.VMwareVolumeOps.'
|
||||
'get_entity_name')
|
||||
def test_get_child_folder(self, get_entity_name):
|
||||
child_entity_1 = mock.Mock(_type='Folder')
|
||||
child_entity_2 = mock.Mock(_type='foo')
|
||||
child_entity_3 = mock.Mock(_type='Folder')
|
||||
child_entity_1 = vmware_fake.ManagedObjectReference('Folder')
|
||||
child_entity_2 = vmware_fake.ManagedObjectReference('foo')
|
||||
child_entity_3 = vmware_fake.ManagedObjectReference('Folder')
|
||||
|
||||
prop_val = mock.Mock(ManagedObjectReference=[child_entity_1,
|
||||
child_entity_2,
|
||||
@ -447,7 +441,7 @@ class VolumeOpsTestCase(test.TestCase):
|
||||
folder_1b = mock.sentinel.folder_1b
|
||||
create_folder.side_effect = [folder_1a, folder_1b]
|
||||
|
||||
datacenter_1 = mock.Mock(value='dc-1')
|
||||
datacenter_1 = vmware_fake.ManagedObjectReference(value='dc-1')
|
||||
path_comp = ['a', 'b']
|
||||
ret = self.vops.create_vm_inventory_folder(datacenter_1, path_comp)
|
||||
|
||||
@ -491,7 +485,7 @@ class VolumeOpsTestCase(test.TestCase):
|
||||
folder_2b = mock.sentinel.folder_2b
|
||||
create_folder.side_effect = [folder_2a, folder_2b]
|
||||
|
||||
datacenter_2 = mock.Mock(value='dc-2')
|
||||
datacenter_2 = vmware_fake.ManagedObjectReference(value='dc-2')
|
||||
path_comp = ['a', 'b']
|
||||
ret = self.vops.create_vm_inventory_folder(datacenter_2, path_comp)
|
||||
|
||||
@ -1947,7 +1941,7 @@ class VolumeOpsTestCase(test.TestCase):
|
||||
name = mock.sentinel.name
|
||||
size_mb = 1024
|
||||
ds_ref_val = mock.sentinel.ds_ref_val
|
||||
ds_ref = mock.Mock(value=ds_ref_val)
|
||||
ds_ref = vmware_fake.ManagedObjectReference(value=ds_ref_val)
|
||||
disk_type = mock.sentinel.disk_type
|
||||
profile_id = mock.sentinel.profile_id
|
||||
ret = self.vops.create_fcd(
|
||||
@ -2020,7 +2014,7 @@ class VolumeOpsTestCase(test.TestCase):
|
||||
|
||||
name = mock.sentinel.name
|
||||
dest_ds_ref_val = mock.sentinel.dest_ds_ref_val
|
||||
dest_ds_ref = mock.Mock(value=dest_ds_ref_val)
|
||||
dest_ds_ref = vmware_fake.ManagedObjectReference(value=dest_ds_ref_val)
|
||||
disk_type = mock.sentinel.disk_type
|
||||
profile_id = mock.sentinel.profile_id
|
||||
ret = self.vops.clone_fcd(
|
||||
@ -2075,7 +2069,7 @@ class VolumeOpsTestCase(test.TestCase):
|
||||
vmdk_url = mock.sentinel.vmdk_url
|
||||
name = mock.sentinel.name
|
||||
ds_ref_val = mock.sentinel.ds_ref_val
|
||||
ds_ref = mock.Mock(value=ds_ref_val)
|
||||
ds_ref = vmware_fake.ManagedObjectReference(value=ds_ref_val)
|
||||
ret = self.vops.register_disk(vmdk_url, name, ds_ref)
|
||||
|
||||
self.assertEqual(fcd_id, ret.fcd_id)
|
||||
@ -2209,7 +2203,7 @@ class VolumeOpsTestCase(test.TestCase):
|
||||
fcd_id = mock.sentinel.fcd_id
|
||||
fcd_location.id.return_value = fcd_id
|
||||
ds_ref_val = mock.sentinel.ds_ref_val
|
||||
ds_ref = mock.Mock(value=ds_ref_val)
|
||||
ds_ref = vmware_fake.ManagedObjectReference(value=ds_ref_val)
|
||||
fcd_location.ds_ref.return_value = ds_ref
|
||||
fcd_snap_id = mock.sentinel.fcd_snap_id
|
||||
fcd_snap_loc = mock.Mock(fcd_loc=fcd_location)
|
||||
@ -2430,7 +2424,7 @@ class FcdLocationTest(test.TestCase):
|
||||
fcd_id = mock.sentinel.fcd_id
|
||||
fcd_id_obj = mock.Mock(id=fcd_id)
|
||||
ds_ref_val = mock.sentinel.ds_ref_val
|
||||
ds_ref = mock.Mock(value=ds_ref_val)
|
||||
ds_ref = vmware_fake.ManagedObjectReference(value=ds_ref_val)
|
||||
fcd_loc = volumeops.FcdLocation.create(fcd_id_obj, ds_ref)
|
||||
self.assertEqual(fcd_id, fcd_loc.fcd_id)
|
||||
self.assertEqual(ds_ref_val, fcd_loc.ds_ref_val)
|
||||
|
Loading…
x
Reference in New Issue
Block a user