From 5fbb0de36fa14a464b7eb5fd9fcd547f96b746e8 Mon Sep 17 00:00:00 2001 From: Shinichi TAMURA Date: Wed, 17 Aug 2016 23:32:49 +0900 Subject: [PATCH] Allow value to be bool where 'yes'/'no' are in choices (#2593) * Changed type of 'details' argument to bool on ecs_service_facts module. * Changed type of 'autostart' argument to bool on virt_* modules. * Changed types of 'autoconnect' and 'stp' argument to bool on nmcli module. ('create_connection_bridge(self)' and 'modify_connection_bridge(self)' are not implemented yet?) * Added conversion of 'value' argument when 'vtype' is boolean on debconf module. --- cloud/amazon/ecs_service_facts.py | 8 +++----- cloud/misc/virt_net.py | 8 ++++---- cloud/misc/virt_pool.py | 8 ++++---- network/nmcli.py | 22 ++++++++++++++-------- system/debconf.py | 5 +++++ 5 files changed, 30 insertions(+), 21 deletions(-) diff --git a/cloud/amazon/ecs_service_facts.py b/cloud/amazon/ecs_service_facts.py index e6629ab08f0..f363c56a872 100644 --- a/cloud/amazon/ecs_service_facts.py +++ b/cloud/amazon/ecs_service_facts.py @@ -55,7 +55,7 @@ EXAMPLES = ''' - ecs_service_facts: cluster: test-cluster service: console-test-service - details: "true" + details: true # Basic listing example - ecs_service_facts: @@ -201,7 +201,7 @@ def main(): argument_spec = ec2_argument_spec() argument_spec.update(dict( - details=dict(required=False, choices=['true', 'false'] ), + details=dict(required=False, type='bool', default=False ), cluster=dict(required=False, type='str' ), service=dict(required=False, type='str' ) )) @@ -214,9 +214,7 @@ def main(): if not HAS_BOTO3: module.fail_json(msg='boto3 is required.') - show_details = False - if 'details' in module.params and module.params['details'] == 'true': - show_details = True + show_details = module.params.get('details', False) task_mgr = EcsServiceManager(module) if show_details: diff --git a/cloud/misc/virt_net.py b/cloud/misc/virt_net.py index 055a7e6b3b0..e2dd88f4d4a 100755 --- a/cloud/misc/virt_net.py +++ b/cloud/misc/virt_net.py @@ -534,16 +534,16 @@ def core(module): else: module.fail_json(msg="Command %s not recognized" % basecmd) - if autostart: + if autostart is not None: if not name: module.fail_json(msg = "state change requires a specified name") res['changed'] = False - if autostart == 'yes': + if autostart: if not v.get_autostart(name): res['changed'] = True res['msg'] = v.set_autostart(name, True) - elif autostart == 'no': + else: if v.get_autostart(name): res['changed'] = True res['msg'] = v.set_autostart(name, False) @@ -562,7 +562,7 @@ def main(): command = dict(choices=ALL_COMMANDS), uri = dict(default='qemu:///system'), xml = dict(), - autostart = dict(choices=['yes', 'no']) + autostart = dict(type='bool') ), supports_check_mode = True ) diff --git a/cloud/misc/virt_pool.py b/cloud/misc/virt_pool.py index 1089269fc84..b104ef548dc 100755 --- a/cloud/misc/virt_pool.py +++ b/cloud/misc/virt_pool.py @@ -629,16 +629,16 @@ def core(module): else: module.fail_json(msg="Command %s not recognized" % basecmd) - if autostart: + if autostart is not None: if not name: module.fail_json(msg = "state change requires a specified name") res['changed'] = False - if autostart == 'yes': + if autostart: if not v.get_autostart(name): res['changed'] = True res['msg'] = v.set_autostart(name, True) - elif autostart == 'no': + else: if v.get_autostart(name): res['changed'] = True res['msg'] = v.set_autostart(name, False) @@ -657,7 +657,7 @@ def main(): command = dict(choices=ALL_COMMANDS), uri = dict(default='qemu:///system'), xml = dict(), - autostart = dict(choices=['yes', 'no']), + autostart = dict(type='bool'), mode = dict(choices=ALL_MODES), ), supports_check_mode = True diff --git a/network/nmcli.py b/network/nmcli.py index 2c553425e94..a7746051099 100644 --- a/network/nmcli.py +++ b/network/nmcli.py @@ -514,6 +514,12 @@ class Nmcli(object): return setting_list # print "" + def bool_to_string(self, boolean): + if boolean: + return "yes" + else: + return "no" + def list_connection_info(self): # Ask the settings service for the list of connections it provides bus=dbus.SystemBus() @@ -602,7 +608,7 @@ class Nmcli(object): cmd.append(self.gw6) if self.autoconnect is not None: cmd.append('autoconnect') - cmd.append(self.autoconnect) + cmd.append(self.bool_to_string(self.autoconnect)) return cmd def modify_connection_team(self): @@ -631,7 +637,7 @@ class Nmcli(object): cmd.append(self.dns6) if self.autoconnect is not None: cmd.append('autoconnect') - cmd.append(self.autoconnect) + cmd.append(self.bool_to_string(self.autoconnect)) # Can't use MTU with team return cmd @@ -704,7 +710,7 @@ class Nmcli(object): cmd.append(self.gw6) if self.autoconnect is not None: cmd.append('autoconnect') - cmd.append(self.autoconnect) + cmd.append(self.bool_to_string(self.autoconnect)) if self.mode is not None: cmd.append('mode') cmd.append(self.mode) @@ -751,7 +757,7 @@ class Nmcli(object): cmd.append(self.dns6) if self.autoconnect is not None: cmd.append('autoconnect') - cmd.append(self.autoconnect) + cmd.append(self.bool_to_string(self.autoconnect)) return cmd def create_connection_bond_slave(self): @@ -820,7 +826,7 @@ class Nmcli(object): cmd.append(self.gw6) if self.autoconnect is not None: cmd.append('autoconnect') - cmd.append(self.autoconnect) + cmd.append(self.bool_to_string(self.autoconnect)) return cmd def modify_connection_ethernet(self): @@ -855,7 +861,7 @@ class Nmcli(object): cmd.append(self.mtu) if self.autoconnect is not None: cmd.append('autoconnect') - cmd.append(self.autoconnect) + cmd.append(self.bool_to_string(self.autoconnect)) return cmd def create_connection_bridge(self): @@ -964,7 +970,7 @@ def main(): # Parsing argument file module=AnsibleModule( argument_spec=dict( - autoconnect=dict(required=False, default=None, choices=['yes', 'no'], type='str'), + autoconnect=dict(required=False, default=None, type='bool'), state=dict(required=True, choices=['present', 'absent'], type='str'), conn_name=dict(required=True, type='str'), master=dict(required=False, default=None, type='str'), @@ -987,7 +993,7 @@ def main(): mtu=dict(required=False, default=None, type='str'), mac=dict(required=False, default=None, type='str'), # bridge specific vars - stp=dict(required=False, default='yes', choices=['yes', 'no'], type='str'), + stp=dict(required=False, default=True, type='bool'), priority=dict(required=False, default="128", type='str'), slavepriority=dict(required=False, default="32", type='str'), forwarddelay=dict(required=False, default="15", type='str'), diff --git a/system/debconf.py b/system/debconf.py index 22f4cb3fc3d..74818e908f4 100644 --- a/system/debconf.py +++ b/system/debconf.py @@ -108,6 +108,11 @@ def set_selection(module, pkg, question, vtype, value, unseen): if unseen: cmd.append('-u') + if vtype == 'boolean': + if value == 'True': + value = 'true' + elif value == 'False': + value = 'false' data = ' '.join([pkg, question, vtype, value]) return module.run_command(cmd, data=data)