Implement vmware_argument_spec for required params (#25731)

Without the fix hostname, username and password params
used to skip required check.

Fixes #25696

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
pull/27150/merge
Abhijeet Kasurde 7 years ago committed by jctanner
parent 007a3b9c9b
commit ede82e2130

@ -311,12 +311,11 @@ instance:
sample: None sample: None
''' '''
import os
import time
import time
from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.pycompat24 import get_exception from ansible.module_utils.pycompat24 import get_exception
from ansible.module_utils.vmware import connect_to_api, find_obj, gather_vm_facts, get_all_objs, compile_folder_path_for_object from ansible.module_utils.vmware import connect_to_api, find_obj, gather_vm_facts, get_all_objs, compile_folder_path_for_object, vmware_argument_spec
from ansible.module_utils.vmware import serialize_spec from ansible.module_utils.vmware import serialize_spec
try: try:
@ -1461,42 +1460,40 @@ class PyVmomiHelper(object):
def main(): def main():
module = AnsibleModule( argument_spec = vmware_argument_spec()
argument_spec=dict( argument_spec.update(
hostname=dict(type='str', default=os.environ.get('VMWARE_HOST')), state=dict(type='str', default='present',
username=dict(type='str', default=os.environ.get('VMWARE_USER')), choices=['absent', 'poweredoff', 'poweredon', 'present', 'rebootguest', 'restarted', 'shutdownguest', 'suspended']),
password=dict(type='str', default=os.environ.get('VMWARE_PASSWORD'), no_log=True), template=dict(type='str', aliases=['template_src']),
state=dict(type='str', default='present', is_template=dict(type='bool', default=False),
choices=['absent', 'poweredoff', 'poweredon', 'present', 'rebootguest', 'restarted', 'shutdownguest', 'suspended']), annotation=dict(type='str', aliases=['notes']),
validate_certs=dict(type='bool', default=True), customvalues=dict(type='list', default=[]),
template=dict(type='str', aliases=['template_src']), name=dict(type='str', required=True),
is_template=dict(type='bool', default=False), name_match=dict(type='str', default='first'),
annotation=dict(type='str', aliases=['notes']), uuid=dict(type='str'),
customvalues=dict(type='list', default=[]), folder=dict(type='str', default='/vm'),
name=dict(type='str', required=True), guest_id=dict(type='str'),
name_match=dict(type='str', default='first'), disk=dict(type='list', default=[]),
uuid=dict(type='str'), hardware=dict(type='dict', default={}),
folder=dict(type='str', default='/vm'), force=dict(type='bool', default=False),
guest_id=dict(type='str'), datacenter=dict(type='str', default='ha-datacenter'),
disk=dict(type='list', default=[]), esxi_hostname=dict(type='str'),
hardware=dict(type='dict', default={}), cluster=dict(type='str'),
force=dict(type='bool', default=False), wait_for_ip_address=dict(type='bool', default=False),
datacenter=dict(type='str', default='ha-datacenter'), snapshot_src=dict(type='str'),
esxi_hostname=dict(type='str'), linked_clone=dict(type='bool', default=False),
cluster=dict(type='str'), networks=dict(type='list', default=[]),
wait_for_ip_address=dict(type='bool', default=False), resource_pool=dict(type='str'),
snapshot_src=dict(type='str'), customization=dict(type='dict', default={}, no_log=True),
linked_clone=dict(type='bool', default=False),
networks=dict(type='list', default=[]),
resource_pool=dict(type='str'),
customization=dict(type='dict', default={}, no_log=True),
),
supports_check_mode=True,
mutually_exclusive=[
['cluster', 'esxi_hostname'],
],
) )
module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True,
mutually_exclusive=[
['cluster', 'esxi_hostname'],
],
)
result = {'failed': False, 'changed': False} result = {'failed': False, 'changed': False}
# FindByInventoryPath() does not require an absolute path # FindByInventoryPath() does not require an absolute path

@ -41,6 +41,7 @@ options:
name: name:
description: description:
- Name of the VM to work with - Name of the VM to work with
- This is required if UUID is not supplied.
name_match: name_match:
description: description:
- If multiple VMs matching the name, use the first or last found - If multiple VMs matching the name, use the first or last found
@ -95,10 +96,9 @@ instance:
sample: None sample: None
""" """
import os
from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.vmware import connect_to_api, find_vm_by_id, gather_vm_facts
from ansible.module_utils._text import to_text from ansible.module_utils._text import to_text
from ansible.module_utils.vmware import connect_to_api, find_vm_by_id, gather_vm_facts, vmware_argument_spec
try: try:
import json import json
@ -152,29 +152,16 @@ class PyVmomiHelper(object):
def main(): def main():
module = AnsibleModule( argument_spec = vmware_argument_spec()
argument_spec=dict( argument_spec.update(
hostname=dict( name=dict(type='str'),
type='str', name_match=dict(type='str', default='first'),
default=os.environ.get('VMWARE_HOST') uuid=dict(type='str'),
), folder=dict(type='str', default='/vm'),
username=dict( datacenter=dict(type='str', required=True),
type='str',
default=os.environ.get('VMWARE_USER')
),
password=dict(
type='str', no_log=True,
default=os.environ.get('VMWARE_PASSWORD')
),
validate_certs=dict(required=False, type='bool', default=True),
name=dict(required=False, type='str'),
name_match=dict(required=False, type='str', default='first'),
uuid=dict(required=False, type='str'),
folder=dict(required=False, type='str', default='/vm'),
datacenter=dict(required=True, type='str'),
),
required_one_of=[['name', 'uuid']],
) )
module = AnsibleModule(argument_spec=argument_spec,
required_one_of=[['name', 'uuid']])
# FindByInventoryPath() does not require an absolute path # FindByInventoryPath() does not require an absolute path
# so we should leave the input folder path unmodified # so we should leave the input folder path unmodified

@ -76,11 +76,9 @@ RETURN = """
""" """
import os import os
# import module snippets
from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils._text import to_native from ansible.module_utils._text import to_native
from ansible.module_utils.vmware import connect_to_api, gather_vm_facts, get_all_objs, compile_folder_path_for_object from ansible.module_utils.vmware import connect_to_api, gather_vm_facts, get_all_objs, compile_folder_path_for_object, vmware_argument_spec
HAS_PYVMOMI = False HAS_PYVMOMI = False
@ -230,27 +228,15 @@ def get_obj(content, vimtype, name):
def main(): def main():
module = AnsibleModule( argument_spec = vmware_argument_spec()
argument_spec=dict( argument_spec.update(
hostname=dict( name=dict(type='str'),
type='str', uuid=dict(type='str'),
default=os.environ.get('VMWARE_HOST') datacenter=dict(type='str', required=True)
),
username=dict(
type='str',
default=os.environ.get('VMWARE_USER')
),
password=dict(
type='str', no_log=True,
default=os.environ.get('VMWARE_PASSWORD')
),
validate_certs=dict(required=False, type='bool', default=True),
name=dict(required=False, type='str'),
uuid=dict(required=False, type='str'),
datacenter=dict(required=True, type='str'),
),
) )
module = AnsibleModule(argument_spec=argument_spec,
required_one_of=[['name', 'uuid']])
pyv = PyVmomiHelper(module) pyv = PyVmomiHelper(module)
# Check if the VM exists before continuing # Check if the VM exists before continuing
folders = pyv.getvm_folder_paths( folders = pyv.getvm_folder_paths(

@ -172,13 +172,11 @@ instance:
sample: None sample: None
""" """
import os
import time
# import module snippets import time
from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.vmware import connect_to_api
from ansible.module_utils._text import to_native from ansible.module_utils._text import to_native
from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.vmware import connect_to_api, vmware_argument_spec
try: try:
import json import json
@ -321,37 +319,21 @@ class PyVmomiHelper(object):
def main(): def main():
module = AnsibleModule( argument_spec = vmware_argument_spec()
argument_spec=dict( argument_spec.update(
hostname=dict( state=dict(default='present', choices=['present', 'absent', 'revert', 'remove_all']),
type='str', name=dict(required=True, type='str'),
default=os.environ.get('VMWARE_HOST') name_match=dict(type='str', default='first'),
), uuid=dict(type='str'),
username=dict( folder=dict(type='str', default='/vm'),
type='str', datacenter=dict(required=True, type='str'),
default=os.environ.get('VMWARE_USER') snapshot_name=dict(type='str'),
), description=dict(type='str', default=''),
password=dict( quiesce=dict(type='bool', default=False),
type='str', no_log=True, memory_dump=dict(type='bool', default=False),
default=os.environ.get('VMWARE_PASSWORD') remove_children=dict(type='bool', default=False),
),
state=dict(
required=False,
choices=['present', 'absent', 'revert', 'remove_all'],
default='present'),
validate_certs=dict(required=False, type='bool', default=True),
name=dict(required=True, type='str'),
name_match=dict(required=False, type='str', default='first'),
uuid=dict(required=False, type='str'),
folder=dict(required=False, type='str', default='/vm'),
datacenter=dict(required=True, type='str'),
snapshot_name=dict(required=False, type='str'),
description=dict(required=False, type='str', default=''),
quiesce=dict(type='bool', default=False),
memory_dump=dict(type='bool', default=False),
remove_children=dict(type='bool', default=False),
),
) )
module = AnsibleModule(argument_spec=argument_spec)
# Prepend /vm if it was missing from the folder path, also strip trailing slashes # Prepend /vm if it was missing from the folder path, also strip trailing slashes
if not module.params['folder'].startswith('/vm') and module.params['folder'].startswith('/'): if not module.params['folder'].startswith('/vm') and module.params['folder'].startswith('/'):

@ -8,14 +8,27 @@
vcsim: "{{ lookup('env', 'vcenter_host') }}" vcsim: "{{ lookup('env', 'vcenter_host') }}"
- debug: var=vcsim - debug: var=vcsim
- name: wait for flask server
wait_for:
host: "{{ vcsim }}"
port: 5000
state: started
- name: kill vcsim - name: kill vcsim
uri: uri:
url: "{{ 'http://' + vcsim + ':5000/killall' }}" url: "{{ 'http://' + vcsim + ':5000/killall' }}"
- name: start vcsim - name: start vcsim
uri: uri:
url: "{{ 'http://' + vcsim + ':5000/spawn?cluster=2' }}" url: "{{ 'http://' + vcsim + ':5000/spawn?cluster=2' }}"
register: vcsim_instance register: vcsim_instance
- name: wait for vcsim server
wait_for:
host: "{{ vcsim }}"
port: 443
state: started
- name: get a list of VMS from vcsim - name: get a list of VMS from vcsim
uri: uri:
url: "{{ 'http://' + vcsim + ':5000/govc_find?filter=VM' }}" url: "{{ 'http://' + vcsim + ':5000/govc_find?filter=VM' }}"

Loading…
Cancel
Save