VMware: use instance UUID as instance name
The patch set remove the instance_name parameter that was passed to spawn and other methods. This parameter was used for the naming of the rescue and resize VM's. The fact that those are now done on the original instance enables us to drop this 'instance_name' parameter. This simplifies the code and unit tests. Change-Id: I7262d0b69fc08144b5675cfeafb5a40668a472d0
This commit is contained in:
parent
0476a9e60d
commit
86f385b955
|
@ -707,11 +707,10 @@ class VMwareAPIVMTestCase(test.NoDBTestCase):
|
||||||
|
|
||||||
def _fake_spawn(context, instance, image_meta, injected_files,
|
def _fake_spawn(context, instance, image_meta, injected_files,
|
||||||
admin_password, network_info, block_device_info=None,
|
admin_password, network_info, block_device_info=None,
|
||||||
instance_name=None, power_on=True):
|
power_on=True):
|
||||||
return self._spawn(context, instance, image_meta,
|
return self._spawn(context, instance, image_meta,
|
||||||
injected_files, admin_password, network_info,
|
injected_files, admin_password, network_info,
|
||||||
block_device_info=block_device_info,
|
block_device_info=block_device_info,
|
||||||
instance_name=instance_name,
|
|
||||||
power_on=self._power_on)
|
power_on=self._power_on)
|
||||||
|
|
||||||
with (
|
with (
|
||||||
|
|
|
@ -466,7 +466,6 @@ class VMwareVMUtilTestCase(test.NoDBTestCase):
|
||||||
fake_factory = fake.FakeFactory()
|
fake_factory = fake.FakeFactory()
|
||||||
result = vm_util.get_vm_create_spec(fake_factory,
|
result = vm_util.get_vm_create_spec(fake_factory,
|
||||||
self._instance,
|
self._instance,
|
||||||
self._instance.uuid,
|
|
||||||
'fake-datastore', [],
|
'fake-datastore', [],
|
||||||
extra_specs)
|
extra_specs)
|
||||||
|
|
||||||
|
@ -508,7 +507,6 @@ class VMwareVMUtilTestCase(test.NoDBTestCase):
|
||||||
fake_factory = fake.FakeFactory()
|
fake_factory = fake.FakeFactory()
|
||||||
result = vm_util.get_vm_create_spec(fake_factory,
|
result = vm_util.get_vm_create_spec(fake_factory,
|
||||||
self._instance,
|
self._instance,
|
||||||
self._instance.uuid,
|
|
||||||
'fake-datastore', [],
|
'fake-datastore', [],
|
||||||
extra_specs)
|
extra_specs)
|
||||||
expected = fake_factory.create('ns0:VirtualMachineConfigSpec')
|
expected = fake_factory.create('ns0:VirtualMachineConfigSpec')
|
||||||
|
@ -555,7 +553,6 @@ class VMwareVMUtilTestCase(test.NoDBTestCase):
|
||||||
fake_factory = fake.FakeFactory()
|
fake_factory = fake.FakeFactory()
|
||||||
result = vm_util.get_vm_create_spec(fake_factory,
|
result = vm_util.get_vm_create_spec(fake_factory,
|
||||||
self._instance,
|
self._instance,
|
||||||
self._instance.uuid,
|
|
||||||
'fake-datastore', [],
|
'fake-datastore', [],
|
||||||
extra_specs)
|
extra_specs)
|
||||||
expected = fake_factory.create('ns0:VirtualMachineConfigSpec')
|
expected = fake_factory.create('ns0:VirtualMachineConfigSpec')
|
||||||
|
@ -604,7 +601,6 @@ class VMwareVMUtilTestCase(test.NoDBTestCase):
|
||||||
fake_factory = fake.FakeFactory()
|
fake_factory = fake.FakeFactory()
|
||||||
result = vm_util.get_vm_create_spec(fake_factory,
|
result = vm_util.get_vm_create_spec(fake_factory,
|
||||||
self._instance,
|
self._instance,
|
||||||
self._instance.uuid,
|
|
||||||
'fake-datastore', [],
|
'fake-datastore', [],
|
||||||
extra_specs)
|
extra_specs)
|
||||||
expected = fake_factory.create('ns0:VirtualMachineConfigSpec')
|
expected = fake_factory.create('ns0:VirtualMachineConfigSpec')
|
||||||
|
@ -655,7 +651,6 @@ class VMwareVMUtilTestCase(test.NoDBTestCase):
|
||||||
fake_factory = fake.FakeFactory()
|
fake_factory = fake.FakeFactory()
|
||||||
result = vm_util.get_vm_create_spec(fake_factory,
|
result = vm_util.get_vm_create_spec(fake_factory,
|
||||||
self._instance,
|
self._instance,
|
||||||
self._instance.uuid,
|
|
||||||
'fake-datastore', [],
|
'fake-datastore', [],
|
||||||
extra_specs)
|
extra_specs)
|
||||||
expected = fake_factory.create('ns0:VirtualMachineConfigSpec')
|
expected = fake_factory.create('ns0:VirtualMachineConfigSpec')
|
||||||
|
@ -756,7 +751,7 @@ class VMwareVMUtilTestCase(test.NoDBTestCase):
|
||||||
|
|
||||||
config_spec = vm_util.get_vm_create_spec(
|
config_spec = vm_util.get_vm_create_spec(
|
||||||
session.vim.client.factory,
|
session.vim.client.factory,
|
||||||
self._instance, self._instance.uuid, 'fake-datastore', [],
|
self._instance, 'fake-datastore', [],
|
||||||
vm_util.ExtraSpecs(),
|
vm_util.ExtraSpecs(),
|
||||||
os_type='invalid_os_type')
|
os_type='invalid_os_type')
|
||||||
|
|
||||||
|
@ -1096,7 +1091,6 @@ class VMwareVMUtilTestCase(test.NoDBTestCase):
|
||||||
extra_specs = vm_util.ExtraSpecs(hw_version='vmx-08')
|
extra_specs = vm_util.ExtraSpecs(hw_version='vmx-08')
|
||||||
result = vm_util.get_vm_create_spec(fake.FakeFactory(),
|
result = vm_util.get_vm_create_spec(fake.FakeFactory(),
|
||||||
self._instance,
|
self._instance,
|
||||||
self._instance.uuid,
|
|
||||||
'fake-datastore', [],
|
'fake-datastore', [],
|
||||||
extra_specs=extra_specs)
|
extra_specs=extra_specs)
|
||||||
self.assertEqual('vmx-08', result.version)
|
self.assertEqual('vmx-08', result.version)
|
||||||
|
@ -1106,7 +1100,6 @@ class VMwareVMUtilTestCase(test.NoDBTestCase):
|
||||||
extra_specs = vm_util.ExtraSpecs()
|
extra_specs = vm_util.ExtraSpecs()
|
||||||
create_spec = vm_util.get_vm_create_spec(fake.FakeFactory(),
|
create_spec = vm_util.get_vm_create_spec(fake.FakeFactory(),
|
||||||
self._instance,
|
self._instance,
|
||||||
self._instance.uuid,
|
|
||||||
datastore.name, [],
|
datastore.name, [],
|
||||||
extra_specs,
|
extra_specs,
|
||||||
profile_spec='fake_profile_spec')
|
profile_spec='fake_profile_spec')
|
||||||
|
|
|
@ -854,9 +854,9 @@ class VMwareVMOpsTestCase(test.NoDBTestCase):
|
||||||
|
|
||||||
from_image.assert_called_once_with(self._instance.image_ref, {})
|
from_image.assert_called_once_with(self._instance.image_ref, {})
|
||||||
get_vm_config_info.assert_called_once_with(self._instance,
|
get_vm_config_info.assert_called_once_with(self._instance,
|
||||||
image_info, None, extra_specs.storage_policy)
|
image_info, extra_specs.storage_policy)
|
||||||
build_virtual_machine.assert_called_once_with(self._instance,
|
build_virtual_machine.assert_called_once_with(self._instance,
|
||||||
vi.instance_name, image_info, vi.dc_info, vi.datastore, [],
|
image_info, vi.dc_info, vi.datastore, [],
|
||||||
extra_specs)
|
extra_specs)
|
||||||
enlist_image.assert_called_once_with(image_info.image_id,
|
enlist_image.assert_called_once_with(image_info.image_id,
|
||||||
vi.datastore, vi.dc_info.ref)
|
vi.datastore, vi.dc_info.ref)
|
||||||
|
@ -921,9 +921,9 @@ class VMwareVMOpsTestCase(test.NoDBTestCase):
|
||||||
|
|
||||||
from_image.assert_called_once_with(instance.image_ref, {})
|
from_image.assert_called_once_with(instance.image_ref, {})
|
||||||
get_vm_config_info.assert_called_once_with(instance, image_info,
|
get_vm_config_info.assert_called_once_with(instance, image_info,
|
||||||
None, extra_specs.storage_policy)
|
extra_specs.storage_policy)
|
||||||
build_virtual_machine.assert_called_once_with(instance,
|
build_virtual_machine.assert_called_once_with(instance,
|
||||||
vi.instance_name, image_info, vi.dc_info, vi.datastore, [],
|
image_info, vi.dc_info, vi.datastore, [],
|
||||||
extra_specs)
|
extra_specs)
|
||||||
volumeops.attach_root_volume.assert_called_once_with(
|
volumeops.attach_root_volume.assert_called_once_with(
|
||||||
connection_info1, instance, vi.datastore.ref,
|
connection_info1, instance, vi.datastore.ref,
|
||||||
|
@ -979,10 +979,10 @@ class VMwareVMOpsTestCase(test.NoDBTestCase):
|
||||||
block_device_info=bdi)
|
block_device_info=bdi)
|
||||||
|
|
||||||
from_image.assert_called_once_with(instance.image_ref, {})
|
from_image.assert_called_once_with(instance.image_ref, {})
|
||||||
get_vm_config_info.assert_called_once_with(instance, image_info, None,
|
get_vm_config_info.assert_called_once_with(instance, image_info,
|
||||||
extra_specs.storage_policy)
|
extra_specs.storage_policy)
|
||||||
build_virtual_machine.assert_called_once_with(instance,
|
build_virtual_machine.assert_called_once_with(instance,
|
||||||
vi.instance_name, image_info, vi.dc_info, vi.datastore, [],
|
image_info, vi.dc_info, vi.datastore, [],
|
||||||
extra_specs)
|
extra_specs)
|
||||||
|
|
||||||
def test_get_ds_browser(self):
|
def test_get_ds_browser(self):
|
||||||
|
@ -1018,7 +1018,7 @@ class VMwareVMOpsTestCase(test.NoDBTestCase):
|
||||||
mock_imagecache = mock.Mock()
|
mock_imagecache = mock.Mock()
|
||||||
mock_imagecache.get_image_cache_folder.return_value = cache_root_folder
|
mock_imagecache.get_image_cache_folder.return_value = cache_root_folder
|
||||||
vi = vmops.VirtualMachineInstanceConfigInfo(
|
vi = vmops.VirtualMachineInstanceConfigInfo(
|
||||||
self._instance, "fake_uuid", image_info,
|
self._instance, image_info,
|
||||||
self._ds, self._dc_info, mock_imagecache)
|
self._ds, self._dc_info, mock_imagecache)
|
||||||
|
|
||||||
sized_cached_image_ds_loc = cache_root_folder.join(
|
sized_cached_image_ds_loc = cache_root_folder.join(
|
||||||
|
@ -1068,7 +1068,7 @@ class VMwareVMOpsTestCase(test.NoDBTestCase):
|
||||||
mock_imagecache = mock.Mock()
|
mock_imagecache = mock.Mock()
|
||||||
mock_imagecache.get_image_cache_folder.return_value = cache_root_folder
|
mock_imagecache.get_image_cache_folder.return_value = cache_root_folder
|
||||||
vi = vmops.VirtualMachineInstanceConfigInfo(
|
vi = vmops.VirtualMachineInstanceConfigInfo(
|
||||||
self._instance, "fake_uuid", image_info,
|
self._instance, image_info,
|
||||||
self._ds, self._dc_info, mock_imagecache)
|
self._ds, self._dc_info, mock_imagecache)
|
||||||
|
|
||||||
self._vmops._volumeops = mock.Mock()
|
self._vmops._volumeops = mock.Mock()
|
||||||
|
@ -1112,7 +1112,7 @@ class VMwareVMOpsTestCase(test.NoDBTestCase):
|
||||||
mock_imagecache = mock.Mock()
|
mock_imagecache = mock.Mock()
|
||||||
mock_imagecache.get_image_cache_folder.return_value = cache_root_folder
|
mock_imagecache.get_image_cache_folder.return_value = cache_root_folder
|
||||||
vi = vmops.VirtualMachineInstanceConfigInfo(
|
vi = vmops.VirtualMachineInstanceConfigInfo(
|
||||||
self._instance, "fake_uuid", image_info,
|
self._instance, image_info,
|
||||||
self._ds, self._dc_info, mock_imagecache)
|
self._ds, self._dc_info, mock_imagecache)
|
||||||
|
|
||||||
self._vmops._volumeops = mock.Mock()
|
self._vmops._volumeops = mock.Mock()
|
||||||
|
@ -1253,7 +1253,6 @@ class VMwareVMOpsTestCase(test.NoDBTestCase):
|
||||||
mock_get_create_spec.assert_called_once_with(
|
mock_get_create_spec.assert_called_once_with(
|
||||||
self._session.vim.client.factory,
|
self._session.vim.client.factory,
|
||||||
self._instance,
|
self._instance,
|
||||||
'fake_uuid',
|
|
||||||
'fake_ds',
|
'fake_ds',
|
||||||
[],
|
[],
|
||||||
extra_specs,
|
extra_specs,
|
||||||
|
@ -1340,8 +1339,7 @@ class VMwareVMOpsTestCase(test.NoDBTestCase):
|
||||||
def _test_get_spawn_vm_config_info(self,
|
def _test_get_spawn_vm_config_info(self,
|
||||||
mock_get_datacenter_ref_and_name,
|
mock_get_datacenter_ref_and_name,
|
||||||
mock_get_datastore,
|
mock_get_datastore,
|
||||||
image_size_bytes=0,
|
image_size_bytes=0):
|
||||||
instance_name=None):
|
|
||||||
image_info = images.VMwareImage(
|
image_info = images.VMwareImage(
|
||||||
image_id=self._image_id,
|
image_id=self._image_id,
|
||||||
file_size=image_size_bytes,
|
file_size=image_size_bytes,
|
||||||
|
@ -1350,16 +1348,12 @@ class VMwareVMOpsTestCase(test.NoDBTestCase):
|
||||||
mock_get_datastore.return_value = self._ds
|
mock_get_datastore.return_value = self._ds
|
||||||
mock_get_datacenter_ref_and_name.return_value = self._dc_info
|
mock_get_datacenter_ref_and_name.return_value = self._dc_info
|
||||||
|
|
||||||
vi = self._vmops._get_vm_config_info(
|
vi = self._vmops._get_vm_config_info(self._instance, image_info)
|
||||||
self._instance, image_info, instance_name=instance_name)
|
|
||||||
self.assertEqual(image_info, vi.ii)
|
self.assertEqual(image_info, vi.ii)
|
||||||
self.assertEqual(self._ds, vi.datastore)
|
self.assertEqual(self._ds, vi.datastore)
|
||||||
self.assertEqual(self._instance.root_gb, vi.root_gb)
|
self.assertEqual(self._instance.root_gb, vi.root_gb)
|
||||||
self.assertEqual(self._instance, vi.instance)
|
self.assertEqual(self._instance, vi.instance)
|
||||||
if instance_name is not None:
|
self.assertEqual(self._instance.uuid, vi.instance.uuid)
|
||||||
self.assertEqual(instance_name, vi.instance_name)
|
|
||||||
else:
|
|
||||||
self.assertEqual(self._instance.uuid, vi.instance_name)
|
|
||||||
|
|
||||||
cache_image_path = '[%s] vmware_base/%s/%s.vmdk' % (
|
cache_image_path = '[%s] vmware_base/%s/%s.vmdk' % (
|
||||||
self._ds.name, self._image_id, self._image_id)
|
self._ds.name, self._image_id, self._image_id)
|
||||||
|
@ -1379,12 +1373,6 @@ class VMwareVMOpsTestCase(test.NoDBTestCase):
|
||||||
self._test_get_spawn_vm_config_info,
|
self._test_get_spawn_vm_config_info,
|
||||||
image_size_bytes=image_size)
|
image_size_bytes=image_size)
|
||||||
|
|
||||||
def test_get_spawn_vm_config_info_with_instance_name(self):
|
|
||||||
image_size = (self._instance.root_gb) * units.Gi / 2
|
|
||||||
self._test_get_spawn_vm_config_info(
|
|
||||||
image_size_bytes=image_size,
|
|
||||||
instance_name="foo_instance_name")
|
|
||||||
|
|
||||||
def test_spawn(self):
|
def test_spawn(self):
|
||||||
self._test_spawn()
|
self._test_spawn()
|
||||||
|
|
||||||
|
@ -1427,7 +1415,7 @@ class VMwareVMOpsTestCase(test.NoDBTestCase):
|
||||||
file_size=7,
|
file_size=7,
|
||||||
linked_clone=False)
|
linked_clone=False)
|
||||||
vi = vmops.VirtualMachineInstanceConfigInfo(
|
vi = vmops.VirtualMachineInstanceConfigInfo(
|
||||||
self._instance, 'fake_uuid', image_info,
|
self._instance, image_info,
|
||||||
self._ds, self._dc_info, mock.Mock())
|
self._ds, self._dc_info, mock.Mock())
|
||||||
return vi
|
return vi
|
||||||
|
|
||||||
|
@ -1502,7 +1490,6 @@ class VMwareVMOpsTestCase(test.NoDBTestCase):
|
||||||
extra_specs = vm_util.ExtraSpecs()
|
extra_specs = vm_util.ExtraSpecs()
|
||||||
|
|
||||||
vm_ref = self._vmops.build_virtual_machine(self._instance,
|
vm_ref = self._vmops.build_virtual_machine(self._instance,
|
||||||
'fake-instance-name',
|
|
||||||
image, self._dc_info,
|
image, self._dc_info,
|
||||||
self._ds,
|
self._ds,
|
||||||
self.network_info,
|
self.network_info,
|
||||||
|
@ -1511,10 +1498,8 @@ class VMwareVMOpsTestCase(test.NoDBTestCase):
|
||||||
vm = vmwareapi_fake._get_object(vm_ref)
|
vm = vmwareapi_fake._get_object(vm_ref)
|
||||||
|
|
||||||
# Test basic VM parameters
|
# Test basic VM parameters
|
||||||
self.assertEqual('fake-instance-name', vm.name)
|
self.assertEqual(self._instance.uuid, vm.name)
|
||||||
# NOTE(mdbooth): The instanceUuid behaviour below is apparently
|
self.assertEqual(self._instance.uuid,
|
||||||
# deliberate.
|
|
||||||
self.assertEqual('fake-instance-name',
|
|
||||||
vm.get('summary.config.instanceUuid'))
|
vm.get('summary.config.instanceUuid'))
|
||||||
self.assertEqual(self._instance_values['vcpus'],
|
self.assertEqual(self._instance_values['vcpus'],
|
||||||
vm.get('summary.config.numCpu'))
|
vm.get('summary.config.numCpu'))
|
||||||
|
@ -1640,7 +1625,7 @@ class VMwareVMOpsTestCase(test.NoDBTestCase):
|
||||||
mock_imagecache = mock.Mock()
|
mock_imagecache = mock.Mock()
|
||||||
mock_imagecache.get_image_cache_folder.return_value = cache_root_folder
|
mock_imagecache.get_image_cache_folder.return_value = cache_root_folder
|
||||||
vi = vmops.VirtualMachineInstanceConfigInfo(
|
vi = vmops.VirtualMachineInstanceConfigInfo(
|
||||||
self._instance, "fake_uuid", image_info,
|
self._instance, image_info,
|
||||||
self._ds, self._dc_info, mock_imagecache)
|
self._ds, self._dc_info, mock_imagecache)
|
||||||
return vi
|
return vi
|
||||||
|
|
||||||
|
|
|
@ -161,18 +161,16 @@ def _get_allocation_info(client_factory, extra_specs):
|
||||||
return allocation
|
return allocation
|
||||||
|
|
||||||
|
|
||||||
def get_vm_create_spec(client_factory, instance, name, data_store_name,
|
def get_vm_create_spec(client_factory, instance, data_store_name,
|
||||||
vif_infos, extra_specs,
|
vif_infos, extra_specs,
|
||||||
os_type=constants.DEFAULT_OS_TYPE,
|
os_type=constants.DEFAULT_OS_TYPE,
|
||||||
profile_spec=None):
|
profile_spec=None):
|
||||||
"""Builds the VM Create spec."""
|
"""Builds the VM Create spec."""
|
||||||
config_spec = client_factory.create('ns0:VirtualMachineConfigSpec')
|
config_spec = client_factory.create('ns0:VirtualMachineConfigSpec')
|
||||||
config_spec.name = name
|
config_spec.name = instance.uuid
|
||||||
config_spec.guestId = os_type
|
config_spec.guestId = os_type
|
||||||
# The name is the unique identifier for the VM. This will either be the
|
# The name is the unique identifier for the VM.
|
||||||
# instance UUID or the instance UUID with suffix '-rescue' for VM's that
|
config_spec.instanceUuid = instance.uuid
|
||||||
# are in rescue mode
|
|
||||||
config_spec.instanceUuid = name
|
|
||||||
# set the Hardware version
|
# set the Hardware version
|
||||||
config_spec.version = extra_specs.hw_version
|
config_spec.version = extra_specs.hw_version
|
||||||
|
|
||||||
|
|
|
@ -89,18 +89,13 @@ DcInfo = collections.namedtuple('DcInfo',
|
||||||
class VirtualMachineInstanceConfigInfo(object):
|
class VirtualMachineInstanceConfigInfo(object):
|
||||||
"""Parameters needed to create and configure a new instance."""
|
"""Parameters needed to create and configure a new instance."""
|
||||||
|
|
||||||
def __init__(self, instance, instance_name, image_info,
|
def __init__(self, instance, image_info, datastore, dc_info, image_cache):
|
||||||
datastore, dc_info, image_cache):
|
|
||||||
|
|
||||||
# Some methods called during spawn take the instance parameter purely
|
# Some methods called during spawn take the instance parameter purely
|
||||||
# for logging purposes.
|
# for logging purposes.
|
||||||
# TODO(vui) Clean them up, so we no longer need to keep this variable
|
# TODO(vui) Clean them up, so we no longer need to keep this variable
|
||||||
self.instance = instance
|
self.instance = instance
|
||||||
|
|
||||||
# Get the instance name. In some cases this may differ from the 'uuid',
|
|
||||||
# for example when the spawn of a rescue instance takes place.
|
|
||||||
self.instance_name = instance_name or instance.uuid
|
|
||||||
|
|
||||||
self.ii = image_info
|
self.ii = image_info
|
||||||
self.root_gb = instance.root_gb
|
self.root_gb = instance.root_gb
|
||||||
self.datastore = datastore
|
self.datastore = datastore
|
||||||
|
@ -244,8 +239,8 @@ class VMwareVMOps(object):
|
||||||
datastore.ref,
|
datastore.ref,
|
||||||
str(uploaded_iso_path))
|
str(uploaded_iso_path))
|
||||||
|
|
||||||
def build_virtual_machine(self, instance, instance_name, image_info,
|
def build_virtual_machine(self, instance, image_info, dc_info, datastore,
|
||||||
dc_info, datastore, network_info, extra_specs):
|
network_info, extra_specs):
|
||||||
vif_infos = vmwarevif.get_vif_info(self._session,
|
vif_infos = vmwarevif.get_vif_info(self._session,
|
||||||
self._cluster,
|
self._cluster,
|
||||||
utils.is_neutron(),
|
utils.is_neutron(),
|
||||||
|
@ -261,7 +256,6 @@ class VMwareVMOps(object):
|
||||||
client_factory = self._session.vim.client.factory
|
client_factory = self._session.vim.client.factory
|
||||||
config_spec = vm_util.get_vm_create_spec(client_factory,
|
config_spec = vm_util.get_vm_create_spec(client_factory,
|
||||||
instance,
|
instance,
|
||||||
instance_name,
|
|
||||||
datastore.name,
|
datastore.name,
|
||||||
vif_infos,
|
vif_infos,
|
||||||
extra_specs,
|
extra_specs,
|
||||||
|
@ -442,7 +436,7 @@ class VMwareVMOps(object):
|
||||||
tmp_image_ds_loc.parent,
|
tmp_image_ds_loc.parent,
|
||||||
vi.cache_image_folder)
|
vi.cache_image_folder)
|
||||||
|
|
||||||
def _get_vm_config_info(self, instance, image_info, instance_name=None,
|
def _get_vm_config_info(self, instance, image_info,
|
||||||
storage_policy=None):
|
storage_policy=None):
|
||||||
"""Captures all relevant information from the spawn parameters."""
|
"""Captures all relevant information from the spawn parameters."""
|
||||||
|
|
||||||
|
@ -461,7 +455,6 @@ class VMwareVMOps(object):
|
||||||
dc_info = self.get_datacenter_ref_and_name(datastore.ref)
|
dc_info = self.get_datacenter_ref_and_name(datastore.ref)
|
||||||
|
|
||||||
return VirtualMachineInstanceConfigInfo(instance,
|
return VirtualMachineInstanceConfigInfo(instance,
|
||||||
instance_name,
|
|
||||||
image_info,
|
image_info,
|
||||||
datastore,
|
datastore,
|
||||||
dc_info,
|
dc_info,
|
||||||
|
@ -556,20 +549,19 @@ class VMwareVMOps(object):
|
||||||
|
|
||||||
def spawn(self, context, instance, image_meta, injected_files,
|
def spawn(self, context, instance, image_meta, injected_files,
|
||||||
admin_password, network_info, block_device_info=None,
|
admin_password, network_info, block_device_info=None,
|
||||||
instance_name=None, power_on=True):
|
power_on=True):
|
||||||
|
|
||||||
client_factory = self._session.vim.client.factory
|
client_factory = self._session.vim.client.factory
|
||||||
image_info = images.VMwareImage.from_image(instance.image_ref,
|
image_info = images.VMwareImage.from_image(instance.image_ref,
|
||||||
image_meta)
|
image_meta)
|
||||||
extra_specs = self._get_extra_specs(instance.flavor)
|
extra_specs = self._get_extra_specs(instance.flavor)
|
||||||
|
|
||||||
vi = self._get_vm_config_info(instance, image_info, instance_name,
|
vi = self._get_vm_config_info(instance, image_info,
|
||||||
extra_specs.storage_policy)
|
extra_specs.storage_policy)
|
||||||
|
|
||||||
# Creates the virtual machine. The virtual machine reference returned
|
# Creates the virtual machine. The virtual machine reference returned
|
||||||
# is unique within Virtual Center.
|
# is unique within Virtual Center.
|
||||||
vm_ref = self.build_virtual_machine(instance,
|
vm_ref = self.build_virtual_machine(instance,
|
||||||
vi.instance_name,
|
|
||||||
image_info,
|
image_info,
|
||||||
vi.dc_info,
|
vi.dc_info,
|
||||||
vi.datastore,
|
vi.datastore,
|
||||||
|
@ -577,8 +569,8 @@ class VMwareVMOps(object):
|
||||||
extra_specs)
|
extra_specs)
|
||||||
|
|
||||||
# Cache the vm_ref. This saves a remote call to the VC. This uses the
|
# Cache the vm_ref. This saves a remote call to the VC. This uses the
|
||||||
# instance_name. This covers all use cases including rescue and resize.
|
# instance uuid.
|
||||||
vm_util.vm_ref_cache_update(vi.instance_name, vm_ref)
|
vm_util.vm_ref_cache_update(instance.uuid, vm_ref)
|
||||||
|
|
||||||
# Set the machine.id parameter of the instance to inject
|
# Set the machine.id parameter of the instance to inject
|
||||||
# the NIC configuration inside the VM
|
# the NIC configuration inside the VM
|
||||||
|
@ -876,19 +868,10 @@ class VMwareVMOps(object):
|
||||||
self._session._wait_for_task(reset_task)
|
self._session._wait_for_task(reset_task)
|
||||||
LOG.debug("Did hard reboot of VM", instance=instance)
|
LOG.debug("Did hard reboot of VM", instance=instance)
|
||||||
|
|
||||||
def _destroy_instance(self, instance, destroy_disks=True,
|
def _destroy_instance(self, instance, destroy_disks=True):
|
||||||
instance_name=None):
|
|
||||||
# Destroy a VM instance
|
# Destroy a VM instance
|
||||||
# Get the instance name. In some cases this may differ from the 'uuid',
|
|
||||||
# for example when the spawn of a rescue instance takes place.
|
|
||||||
if instance_name is None:
|
|
||||||
instance_name = instance.uuid
|
|
||||||
try:
|
try:
|
||||||
vm_ref = vm_util.get_vm_ref_from_name(self._session, instance_name)
|
vm_ref = vm_util.get_vm_ref(self._session, instance)
|
||||||
if vm_ref is None:
|
|
||||||
LOG.warning(_LW('Instance does not exist on backend'),
|
|
||||||
instance=instance)
|
|
||||||
return
|
|
||||||
lst_properties = ["config.files.vmPathName", "runtime.powerState",
|
lst_properties = ["config.files.vmPathName", "runtime.powerState",
|
||||||
"datastore"]
|
"datastore"]
|
||||||
props = self._session._call_method(vim_util,
|
props = self._session._call_method(vim_util,
|
||||||
|
@ -941,11 +924,14 @@ class VMwareVMOps(object):
|
||||||
LOG.warning(_LW("In vmwareapi:vmops:_destroy_instance, "
|
LOG.warning(_LW("In vmwareapi:vmops:_destroy_instance, "
|
||||||
"exception while deleting the VM contents "
|
"exception while deleting the VM contents "
|
||||||
"from the disk"), exc_info=True)
|
"from the disk"), exc_info=True)
|
||||||
|
except exception.InstanceNotFound:
|
||||||
|
LOG.warning(_LW('Instance does not exist on backend'),
|
||||||
|
instance=instance)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.exception(_LE('Destroy instance failed'),
|
LOG.exception(_LE('Destroy instance failed'),
|
||||||
instance=instance)
|
instance=instance)
|
||||||
finally:
|
finally:
|
||||||
vm_util.vm_ref_cache_delete(instance_name)
|
vm_util.vm_ref_cache_delete(instance.uuid)
|
||||||
|
|
||||||
def destroy(self, instance, destroy_disks=True):
|
def destroy(self, instance, destroy_disks=True):
|
||||||
"""Destroy a VM instance.
|
"""Destroy a VM instance.
|
||||||
|
@ -1034,7 +1020,6 @@ class VMwareVMOps(object):
|
||||||
image_info = images.VMwareImage.from_image(instance.image_ref,
|
image_info = images.VMwareImage.from_image(instance.image_ref,
|
||||||
image_meta)
|
image_meta)
|
||||||
vi = VirtualMachineInstanceConfigInfo(instance,
|
vi = VirtualMachineInstanceConfigInfo(instance,
|
||||||
None,
|
|
||||||
image_info,
|
image_info,
|
||||||
datastore,
|
datastore,
|
||||||
dc_info,
|
dc_info,
|
||||||
|
@ -1636,8 +1621,8 @@ class VMwareVMOps(object):
|
||||||
def _use_disk_image_as_full_clone(self, vm_ref, vi):
|
def _use_disk_image_as_full_clone(self, vm_ref, vi):
|
||||||
"""Uses cached image disk by copying it into the VM directory."""
|
"""Uses cached image disk by copying it into the VM directory."""
|
||||||
|
|
||||||
instance_folder = vi.instance_name
|
instance_folder = vi.instance.uuid
|
||||||
root_disk_name = "%s.vmdk" % vi.instance_name
|
root_disk_name = "%s.vmdk" % vi.instance.uuid
|
||||||
root_disk_ds_loc = vi.datastore.build_path(instance_folder,
|
root_disk_ds_loc = vi.datastore.build_path(instance_folder,
|
||||||
root_disk_name)
|
root_disk_name)
|
||||||
|
|
||||||
|
@ -1737,8 +1722,8 @@ class VMwareVMOps(object):
|
||||||
|
|
||||||
# Optionally create and attach blank disk
|
# Optionally create and attach blank disk
|
||||||
if vi.root_gb > 0:
|
if vi.root_gb > 0:
|
||||||
instance_folder = vi.instance_name
|
instance_folder = vi.instance.uuid
|
||||||
root_disk_name = "%s.vmdk" % vi.instance_name
|
root_disk_name = "%s.vmdk" % vi.instance.uuid
|
||||||
root_disk_ds_loc = vi.datastore.build_path(instance_folder,
|
root_disk_ds_loc = vi.datastore.build_path(instance_folder,
|
||||||
root_disk_name)
|
root_disk_name)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue