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,14 +1460,10 @@ 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')),
username=dict(type='str', default=os.environ.get('VMWARE_USER')),
password=dict(type='str', default=os.environ.get('VMWARE_PASSWORD'), no_log=True),
state=dict(type='str', default='present', state=dict(type='str', default='present',
choices=['absent', 'poweredoff', 'poweredon', 'present', 'rebootguest', 'restarted', 'shutdownguest', 'suspended']), choices=['absent', 'poweredoff', 'poweredon', 'present', 'rebootguest', 'restarted', 'shutdownguest', 'suspended']),
validate_certs=dict(type='bool', default=True),
template=dict(type='str', aliases=['template_src']), template=dict(type='str', aliases=['template_src']),
is_template=dict(type='bool', default=False), is_template=dict(type='bool', default=False),
annotation=dict(type='str', aliases=['notes']), annotation=dict(type='str', aliases=['notes']),
@ -1490,7 +1485,9 @@ def main():
networks=dict(type='list', default=[]), networks=dict(type='list', default=[]),
resource_pool=dict(type='str'), resource_pool=dict(type='str'),
customization=dict(type='dict', default={}, no_log=True), customization=dict(type='dict', default={}, no_log=True),
), )
module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True, supports_check_mode=True,
mutually_exclusive=[ mutually_exclusive=[
['cluster', 'esxi_hostname'], ['cluster', 'esxi_hostname'],

@ -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',
default=os.environ.get('VMWARE_HOST')
),
username=dict(
type='str',
default=os.environ.get('VMWARE_USER')
),
password=dict(
type='str', no_log=True,
default=os.environ.get('VMWARE_PASSWORD')
),
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=dict(required=True, type='str'),
name_match=dict(required=False, type='str', default='first'), name_match=dict(type='str', default='first'),
uuid=dict(required=False, type='str'), uuid=dict(type='str'),
folder=dict(required=False, type='str', default='/vm'), folder=dict(type='str', default='/vm'),
datacenter=dict(required=True, type='str'), datacenter=dict(required=True, type='str'),
snapshot_name=dict(required=False, type='str'), snapshot_name=dict(type='str'),
description=dict(required=False, type='str', default=''), description=dict(type='str', default=''),
quiesce=dict(type='bool', default=False), quiesce=dict(type='bool', default=False),
memory_dump=dict(type='bool', default=False), memory_dump=dict(type='bool', default=False),
remove_children=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