Merge "vmware tests: Support different moref backend representations"

This commit is contained in:
Zuul 2021-05-21 17:16:50 +00:00 committed by Gerrit Code Review
commit 46ebfe0b91
4 changed files with 72 additions and 47 deletions

View 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

View File

@ -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')

View File

@ -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:

View File

@ -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)