vmware_guest relative paths for folder (#26927)

* Re-introduce relative paths to vmware_guest folder:

Move compile_folder_path_for_object function from vmware_guest_find to
utilities
Allow full path or relative path to be specified for the folder
parameter.  We will build the full path to the new VM.

* Remove duplicate check

* PEP8 Fixes
This commit is contained in:
Jimmy Conner 2017-07-17 21:18:20 -05:00 committed by jctanner
parent 8e2dcaf9f6
commit fbf68b5725
3 changed files with 38 additions and 30 deletions

View file

@ -80,7 +80,7 @@ import os
# import module snippets
from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils._text import to_native
from ansible.module_utils.vmware import connect_to_api, gather_vm_facts, get_all_objs
from ansible.module_utils.vmware import connect_to_api, gather_vm_facts, get_all_objs, compile_folder_path_for_object
HAS_PYVMOMI = False
@ -126,7 +126,7 @@ class PyVmomiHelper(object):
continue
# Match by name or uuid
if vobj.config.name == name or vobj.config.uuid == uuid:
folderpath = self.compile_folder_path_for_object(vobj)
folderpath = compile_folder_path_for_object(vobj)
results.append(folderpath)
return results
@ -200,24 +200,6 @@ class PyVmomiHelper(object):
self.folders = self._build_folder_tree(self.datacenter.vmFolder)
self._build_folder_map(self.folders)
@staticmethod
def compile_folder_path_for_object(vobj):
""" make a /vm/foo/bar/baz like folder path for an object """
paths = []
if isinstance(vobj, vim.Folder):
paths.append(vobj.name)
thisobj = vobj
while hasattr(thisobj, 'parent'):
thisobj = thisobj.parent
if isinstance(thisobj, vim.Folder):
paths.append(thisobj.name)
paths.reverse()
if paths[0] == 'Datacenters':
paths.remove('Datacenters')
return '/' + '/'.join(paths)
def get_datacenter(self):
self.datacenter = get_obj(
self.content,