summaryrefslogtreecommitdiffstats
path: root/deployment/playbooks/library/vmware_folder.py
diff options
context:
space:
mode:
Diffstat (limited to 'deployment/playbooks/library/vmware_folder.py')
-rw-r--r--deployment/playbooks/library/vmware_folder.py107
1 files changed, 58 insertions, 49 deletions
diff --git a/deployment/playbooks/library/vmware_folder.py b/deployment/playbooks/library/vmware_folder.py
index 399f1d04..d223768e 100644
--- a/deployment/playbooks/library/vmware_folder.py
+++ b/deployment/playbooks/library/vmware_folder.py
@@ -18,11 +18,13 @@
# You should have received a copy of the GNU General Public License
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-ANSIBLE_METADATA = {'status': ['preview'],
- 'supported_by': 'community',
- 'version': '1.0'}
+ANSIBLE_METADATA = {
+ 'status': ['preview'],
+ 'supported_by': 'community',
+ 'version': '1.0',
+}
-DOCUMENTATION = '''
+DOCUMENTATION = """
---
module: vmware_folder
short_description: Add/remove folders to/from vCenter
@@ -68,9 +70,9 @@ options:
- 'present'
- 'absent'
extends_documentation_fragment: vmware.documentation
-'''
-EXAMPLES = '''
+
+EXAMPLES =
# Create a folder
- name: Add a folder to vCenter
vmware_folder:
@@ -81,9 +83,9 @@ EXAMPLES = '''
cluster: cluster
folder: folder
state: present
-'''
-RETURN = """
+
+RETURN =
instance:
descripton: metadata about the new folder
returned: always
@@ -97,9 +99,9 @@ try:
except ImportError:
HAS_PYVMOMI = False
-from ansible.module_utils.vmware import get_all_objs, connect_to_api, vmware_argument_spec, find_datacenter_by_name, \
- find_cluster_by_name_datacenter, wait_for_task
-from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils import basic # noqa
+from ansible.module_utils import vmware # noqa
+
class VMwareFolder(object):
def __init__(self, module):
@@ -118,11 +120,13 @@ class VMwareFolder(object):
self.folder_name = None
self.folder_expanded = None
self.folder_full_path = []
- self.content = connect_to_api(module)
+ self.content = vmware.connect_to_api(module)
def find_host_by_cluster_datacenter(self):
- self.dc_obj = find_datacenter_by_name(self.content, self.datacenter)
- self.cluster_obj = find_cluster_by_name_datacenter(self.dc_obj, self.cluster)
+ self.dc_obj = vmware.find_datacenter_by_name(
+ self.content, self.datacenter)
+ self.cluster_obj = vmware.find_cluster_by_name_datacenter(
+ self.dc_obj, self.cluster)
for host in self.cluster_obj.host:
if host.name == self.hostname:
@@ -134,13 +138,13 @@ class VMwareFolder(object):
fold_obj = None
self.folder_expanded = self.folder.split("/")
last_e = self.folder_expanded.pop()
- fold_obj = self.get_obj([vim.Folder],last_e)
+ fold_obj = self.get_obj([vim.Folder], last_e)
if fold_obj:
return fold_obj
if fold_obj is None:
return fold_obj
- def get_obj(self, vimtype, name, return_all = False):
+ def get_obj(self, vimtype, name, return_all=False):
obj = list()
container = self.content.viewManager.CreateContainerView(
self.content.rootFolder, vimtype, True)
@@ -171,57 +175,58 @@ class VMwareFolder(object):
'absent': self.state_add_folder,
}
}
-
folder_states[self.state][self.check_folder_state()]()
-
except vmodl.RuntimeFault as runtime_fault:
- self.module.fail_json(msg = runtime_fault.msg)
+ self.module.fail_json(msg=runtime_fault.msg)
except vmodl.MethodFault as method_fault:
- self.module.fail_json(msg = method_fault.msg)
+ self.module.fail_json(msg=method_fault.msg)
except Exception as e:
- self.module.fail_json(msg = str(e))
+ self.module.fail_json(msg=str(e))
def state_exit_unchanged(self):
- self.module.exit_json(changed = False)
+ self.module.exit_json(changed=False)
def state_remove_folder(self):
changed = True
result = None
self.folder_expanded = self.folder.split("/")
f = self.folder_expanded.pop()
- task = self.get_obj([vim.Folder],f).Destroy()
+ task = self.get_obj([vim.Folder], f).Destroy()
try:
- success, result = wait_for_task(task)
-
- except:
- self.module.fail_json(msg = "Failed to remove folder '%s' '%s'" % (self.folder,folder))
+ success, result = vmware.wait_for_task(task)
+ except Exception:
+ self.module.fail_json(
+ msg="Failed to remove folder '%s'" % self.folder)
- self.module.exit_json(changed = changed, result = str(result))
+ self.module.exit_json(changed=changed, result=str(result))
def state_add_folder(self):
changed = True
- result = None
- self.dc_obj = find_datacenter_by_name(self.content, self.datacenter)
- self.cluster_obj = find_cluster_by_name_datacenter(self.dc_obj, self.cluster)
+ self.dc_obj = vmware.find_datacenter_by_name(
+ self.content, self.datacenter)
+ self.cluster_obj = vmware.find_cluster_by_name_datacenter(
+ self.dc_obj, self.cluster)
self.folder_expanded = self.folder.split("/")
index = 0
for f in self.folder_expanded:
- if not self.get_obj([vim.Folder],f):
+ if not self.get_obj([vim.Folder], f):
if index == 0:
- #First object gets created on the datacenter
- task = self.dc_obj.vmFolder.CreateFolder(name=f)
+ # First object gets created on the datacenter
+ self.dc_obj.vmFolder.CreateFolder(name=f)
else:
- parent_f = self.get_obj([vim.Folder],self.folder_expanded[index - 1])
- task = parent_f.CreateFolder(name=f)
+ parent_f = self.get_obj(
+ [vim.Folder], self.folder_expanded[index - 1])
+ parent_f.CreateFolder(name=f)
index = index + 1
- self.module.exit_json(changed = changed)
+ self.module.exit_json(changed=changed)
def check_folder_state(self):
- self.host_obj, self.cluster_obj = self.find_host_by_cluster_datacenter()
+ self.host_obj, self.cluster_obj = (
+ self.find_host_by_cluster_datacenter())
self.folder_obj = self.select_folder(self.host_obj)
if self.folder_obj is None:
@@ -231,19 +236,23 @@ class VMwareFolder(object):
def main():
- argument_spec = vmware_argument_spec()
- argument_spec.update(dict(datacenter = dict(required = True, type = 'str'),
- cluster = dict(required = True, type = 'str'),
- folder = dict(required=True, type='str'),
- hostname = dict(required = True, type = 'str'),
- username = dict(required = True, type = 'str'),
- password = dict(required = True, type = 'str', no_log = True),
- state = dict(default = 'present', choices = ['present', 'absent'], type = 'str')))
-
- module = AnsibleModule(argument_spec = argument_spec, supports_check_mode = True)
+ argument_spec = vmware.vmware_argument_spec()
+ argument_spec.update(dict(datacenter=dict(required=True, type='str'),
+ cluster=dict(required=True, type='str'),
+ folder=dict(required=True, type='str'),
+ hostname=dict(required=True, type='str'),
+ username=dict(required=True, type='str'),
+ password=dict(
+ required=True, type='str', no_log=True),
+ state=dict(
+ default='present',
+ choices=['present', 'absent'], type='str')))
+
+ module = basic.AnsibleModule(
+ argument_spec=argument_spec, supports_check_mode=True)
if not HAS_PYVMOMI:
- module.fail_json(msg = 'pyvmomi is required for this module')
+ module.fail_json(msg='pyvmomi is required for this module')
vmware_folder = VMwareFolder(module)
vmware_folder.process_state()