From dc11b1223dee9c83a360ba28e79b144b845ebb0f Mon Sep 17 00:00:00 2001 From: Dag Wieers Date: Sun, 7 Oct 2012 22:06:20 +0200 Subject: [PATCH] Various small fixes to boolean usage, using module.params.get and default values --- debug | 14 +++++++++----- hpilo_boot | 47 +++++++++++++++++++++++++++-------------------- hpilo_facts | 13 +++++++------ vsphere_facts | 8 ++++---- 4 files changed, 47 insertions(+), 35 deletions(-) diff --git a/debug b/debug index 356a0d4e145..20d6dcb334c 100644 --- a/debug +++ b/debug @@ -68,13 +68,17 @@ def main(): ) ) - if module.params['fail'] in BOOLEANS_TRUE and module.params['rc'] == 0: - module.params['rc'] = 1 + fail = module.boolean(module.params.get('fail')) + msg = module.params.get('msg') + rc = module.params.get('rc') - if module.params['fail'] in BOOLEANS_TRUE: - module.fail_json(rc=module.params['rc'], msg=module.params['msg']) + if fail and rc == 0: + rc = 1 + + if fail: + module.fail_json(rc=rc, msg=msg) else: - module.exit_json(msg=module.params['msg']) + module.exit_json(msg=msg) # this is magic, see lib/ansible/module_common.py #<> diff --git a/hpilo_boot b/hpilo_boot index 1828832f529..197ba3a8c82 100755 --- a/hpilo_boot +++ b/hpilo_boot @@ -61,7 +61,7 @@ options: C(protocol://username:password@hostname:port/filename) - protocol is either C(http) or C(https) - username:password is optional -• - port is optional + - port is optional required: false state: description: @@ -111,52 +111,59 @@ def main(): login = dict(default='Administrator'), password = dict(default='admin'), match = dict(default=None), - media = dict(choices=['cdrom', 'floppy', 'hdd', 'network', 'normal', 'usb']), + media = dict(default=None, choices=['cdrom', 'floppy', 'hdd', 'network', 'normal', 'usb']), image = dict(default=None), - state = dict(required=True, default='boot_once', choices=['boot_always', 'boot_once', 'connect', 'disconnect', 'no_boot']), - force = dict(default=True, choices=BOOLEANS), + state = dict(default='boot_once', choices=['boot_always', 'boot_once', 'connect', 'disconnect', 'no_boot']), + force = dict(default='no', choices=BOOLEANS), ) ) - host = module.params['host'] - login = module.params['login'] - password = module.params['password'] - force = module.params['force'] + host = module.params.get('host') + login = module.params.get('login') + password = module.params.get('password') + match = module.params.get('match') + media = module.params.get('media') + image = module.params.get('image') + state = module.params.get('state') + force = module.boolean(module.params.get('force')) ilo = hpilo.Ilo(host, login=login, password=password) # If match=string is provided, only reboot server if iLO name matches 'string' - if module.params['match'] != None: + if match != None: try: server_name = ilo.get_server_name() except Exception, e: module.fail_json(rc=1, msg='Failed to connect to %s: %s' % (host, e.message)) - if not server_name.lower().startswith(module.params['match'].lower()): - module.fail_json(rc=1, msg='The iLO server name \'%s\' does not match \'%s\'' % (server_name, module.params['match'])) + if not server_name.lower().startswith(match.lower()): + module.fail_json(rc=1, msg='The iLO server name \'%s\' does not match \'%s\'' % (server_name, match)) - if module.params['media']: + if media: ### FIXME: In the below case iLO fails for a short period of time due to the server rebooting # File "/usr/lib/python2.6/site-packages/hpilo.py", line 381, in _parse_message # raise IloError("Error communicating with iLO: %s" % child.get('MESSAGE')) #hpilo.IloError: Error communicating with iLO: Problem manipulating EV - ilo.set_one_time_boot(module.params['media']) + ilo.set_one_time_boot(media) # TODO: Verify if image URL exists/works - if module.params['image']: - ilo.insert_virtual_media(module.params['media'], module.params['image']) + if image: + ilo.insert_virtual_media(media, image) - if module.params['media'] == 'cdrom': - ilo.set_vm_status('cdrom', module.params['state'], True) + if media == 'cdrom': + ilo.set_vm_status('cdrom', state, True) status = ilo.get_vm_status() - elif module.params['media'] == 'floppy': - ilo.set_vf_status(module.params['state'], True) + elif media == 'floppy': + ilo.set_vf_status(state, True) + status = ilo.get_vf_status() + elif media == 'usb': + ilo.set_vf_status(state, True) status = ilo.get_vf_status() # Only perform a boot when state is boot_once or boot_always, or in case we want to force a reboot - if module.params['state'] in ('boot_once', 'boot_always') or force: + if state in ('boot_once', 'boot_always') or force: power_status = ilo.get_host_power_status() diff --git a/hpilo_facts b/hpilo_facts index dc6d5d07575..e0b462b42d3 100755 --- a/hpilo_facts +++ b/hpilo_facts @@ -106,21 +106,22 @@ def main(): ) ) - host = module.params['host'] - login = module.params['login'] - password = module.params['password'] + host = module.params('host') + login = module.params('login') + password = module.params('password') + match = module.params.get('match') ilo = hpilo.Ilo(host, login=login, password=password) # If match=string is provided, only reboot server if iLO name matches 'string' - if module.params['match'] != None: + if match != None: try: server_name = ilo.get_server_name() except Exception, e: module.fail_json(rc=1, msg='Failed to connect to %s: %s' % (host, e.message)) - if not server_name.lower().startswith(module.params['match'].lower()): - module.fail_json(rc=1, msg='The iLO server name \'%s\' does not match \'%s\'' % (server_name, module.params['match'])) + if not server_name.lower().startswith(match.lower()): + module.fail_json(rc=1, msg='The iLO server name \'%s\' does not match \'%s\'' % (server_name, match)) # TODO: Count number of CPUs, DIMMs and total memory data = ilo.get_host_data() diff --git a/vsphere_facts b/vsphere_facts index 4fc753b561a..09d57af3c91 100755 --- a/vsphere_facts +++ b/vsphere_facts @@ -88,10 +88,10 @@ def main(): ) ) - host = module.params['host'] - login = module.params['login'] - password = module.params['password'] - guest = module.params['guest'] + host = module.params.get('host') + login = module.params.get('login') + password = module.params.get('password') + guest = module.params.get('guest') server = pysphere.VIServer() try: