From ebeb78811700bb7dd1b293fd27c98963b2e962ac Mon Sep 17 00:00:00 2001 From: Abhijeet Kasurde Date: Mon, 15 Oct 2018 14:59:48 +0530 Subject: [PATCH] VMware: Provide facility to specify path for template (#38031) When multiple virtual machines or templates are found in environment, module needs folder path. This fix adds facility to specify folder path for template or virtual machine if multiples are found. Fixes: #37087 Signed-off-by: Abhijeet Kasurde --- lib/ansible/module_utils/vmware.py | 11 ++++++++++- lib/ansible/modules/cloud/vmware/vmware_guest.py | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/ansible/module_utils/vmware.py b/lib/ansible/module_utils/vmware.py index 36a9f8b58ba..a7b9a7b0355 100644 --- a/lib/ansible/module_utils/vmware.py +++ b/lib/ansible/module_utils/vmware.py @@ -984,8 +984,16 @@ class PyVmomi(object): """ template_obj = None + if not template_name: + return template_obj - if template_name: + if "/" in template_name: + vm_obj_path = os.path.dirname(template_name) + vm_obj_name = os.path.basename(template_name) + template_obj = find_vm_by_id(self.content, vm_obj_name, vm_id_type="inventory_path", folder=vm_obj_path) + if template_obj: + return template_obj + else: template_obj = find_vm_by_id(self.content, vm_id=template_name, vm_id_type="uuid") if template_obj: return template_obj @@ -1006,6 +1014,7 @@ class PyVmomi(object): self.module.fail_json(msg="Multiple virtual machines or templates with same name [%s] found." % template_name) elif templates: template_obj = templates[0] + return template_obj # Cluster related functions diff --git a/lib/ansible/modules/cloud/vmware/vmware_guest.py b/lib/ansible/modules/cloud/vmware/vmware_guest.py index b4f1b8597e8..8508a124ba0 100644 --- a/lib/ansible/modules/cloud/vmware/vmware_guest.py +++ b/lib/ansible/modules/cloud/vmware/vmware_guest.py @@ -89,6 +89,7 @@ options: - If the virtual machine already exists, this parameter will be ignored. - This parameter is case sensitive. - You can also specify template or VM UUID for identifying source. version_added 2.8. Use C(hw_product_uuid) from M(vmware_guest_facts) as UUID value. + - From version 2.8 onwards, absolute path to virtual machine or template can be used. aliases: [ 'template_src' ] is_template: description: