From 28019233db0d9ac820edeec327b8b66257098ed5 Mon Sep 17 00:00:00 2001 From: Jiri Tyr Date: Mon, 9 Dec 2019 16:06:31 +0000 Subject: [PATCH] Don't search for VMDK if filename is defined (#63741) --- ...t_search_for_vmdk_if_filename_defined.yaml | 4 +++ .../modules/cloud/vmware/vmware_guest.py | 25 +++---------------- 2 files changed, 8 insertions(+), 21 deletions(-) create mode 100644 changelogs/fragments/63741-do_not_search_for_vmdk_if_filename_defined.yaml diff --git a/changelogs/fragments/63741-do_not_search_for_vmdk_if_filename_defined.yaml b/changelogs/fragments/63741-do_not_search_for_vmdk_if_filename_defined.yaml new file mode 100644 index 00000000000..241e19387cf --- /dev/null +++ b/changelogs/fragments/63741-do_not_search_for_vmdk_if_filename_defined.yaml @@ -0,0 +1,4 @@ +--- + +minor_changes: + - vmware_guest - Don't search for VMDK if filename is defined. diff --git a/lib/ansible/modules/cloud/vmware/vmware_guest.py b/lib/ansible/modules/cloud/vmware/vmware_guest.py index 6bef2aadeed..9439f49971f 100644 --- a/lib/ansible/modules/cloud/vmware/vmware_guest.py +++ b/lib/ansible/modules/cloud/vmware/vmware_guest.py @@ -453,6 +453,8 @@ EXAMPLES = r''' - size_gb: 10 type: thin datastore: g73_datastore + # Add another disk from an existing VMDK + - filename: "[datastore1] testvms/testvm_2_1/testvm_2_1.vmdk" hardware: memory_mb: 512 num_cpus: 6 @@ -1962,34 +1964,15 @@ class PyVmomiHelper(PyVmomi): self.module.fail_json( msg="No size, size_kb, size_mb, size_gb or size_tb attribute found into disk configuration") - def find_vmdk(self, vmdk_path): - """ - Takes a vsphere datastore path in the format - - [datastore_name] path/to/file.vmdk - - Returns vsphere file object or raises RuntimeError - """ - datastore_name, vmdk_fullpath, vmdk_filename, vmdk_folder = self.vmdk_disk_path_split(vmdk_path) - - datastore = self.cache.find_obj(self.content, [vim.Datastore], datastore_name) - - if datastore is None: - self.module.fail_json(msg="Failed to find the datastore %s" % datastore_name) - - return self.find_vmdk_file(datastore, vmdk_fullpath, vmdk_filename, vmdk_folder) - def add_existing_vmdk(self, vm_obj, expected_disk_spec, diskspec, scsi_ctl): """ Adds vmdk file described by expected_disk_spec['filename'], retrieves the file information and adds the correct spec to self.configspec.deviceChange. """ filename = expected_disk_spec['filename'] - # if this is a new disk, or the disk file names are different + # If this is a new disk, or the disk file names are different if (vm_obj and diskspec.device.backing.fileName != filename) or vm_obj is None: - vmdk_file = self.find_vmdk(expected_disk_spec['filename']) - diskspec.device.backing.fileName = expected_disk_spec['filename'] - diskspec.device.capacityInKB = VmomiSupport.vmodlTypes['long'](vmdk_file.fileSize / 1024) + diskspec.device.backing.fileName = filename diskspec.device.key = -1 self.change_detected = True self.configspec.deviceChange.append(diskspec)