summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Sprygada <psprygada@ansible.com>2016-01-19 11:25:24 -0500
committerPeter Sprygada <psprygada@ansible.com>2016-01-19 14:50:39 -0500
commit7640eca368171a755318f25c9b3f3ef134f141bf (patch)
treed226f7da9495a7c3a0869d9732d0b29363b60e08
parent33d390fb5884af976b72023867051f5e4daf18aa (diff)
downloadansible-7640eca368171a755318f25c9b3f3ef134f141bf.tar.gz
adds provider argument to openswitch shared module
Adds new argument `provider` to the openswitch shared module. The provider argument can pass all openswitch connection arguments as a dict object. This update includes adding the provider argument to the openswitch doc fragment
-rw-r--r--lib/ansible/module_utils/openswitch.py29
-rw-r--r--lib/ansible/utils/module_docs_fragments/openswitch.py16
2 files changed, 31 insertions, 14 deletions
diff --git a/lib/ansible/module_utils/openswitch.py b/lib/ansible/module_utils/openswitch.py
index 9ff7450ee7..ba3eb7b44a 100644
--- a/lib/ansible/module_utils/openswitch.py
+++ b/lib/ansible/module_utils/openswitch.py
@@ -35,7 +35,9 @@ NET_COMMON_ARGS = dict(
port=dict(type='int'),
username=dict(),
password=dict(no_log=True),
+ use_ssl=dict(default=True, type='int'),
transport=dict(default='ssh', choices=['ssh', 'cli', 'rest']),
+ provider=dict()
)
def to_list(val):
@@ -150,10 +152,10 @@ class Cli(object):
def send(self, commands, encoding='text'):
return self.shell.send(commands)
-class OpsModule(AnsibleModule):
+class NetworkModule(AnsibleModule):
def __init__(self, *args, **kwargs):
- super(OpsModule, self).__init__(*args, **kwargs)
+ super(NetworkModule, self).__init__(*args, **kwargs)
self.connection = None
self._config = None
self._runconfig = None
@@ -164,16 +166,21 @@ class OpsModule(AnsibleModule):
self._config = self.get_config()
return self._config
+ def _load_params(self):
+ params = super(NetworkModule, self)._load_params()
+ provider = params.get('provider') or dict()
+ for key, value in provider.items():
+ if key in NET_COMMON_ARGS.keys():
+ params[key] = value
+ return params
+
def connect(self):
if self.params['transport'] == 'rest':
self.connection = Rest(self)
elif self.params['transport'] == 'cli':
self.connection = Cli(self)
- try:
- self.connection.connect()
- except Exception, exc:
- self.fail_json(msg=exc.message)
+ self.connection.connect()
def configure(self, config):
if self.params['transport'] == 'cli':
@@ -217,15 +224,14 @@ class OpsModule(AnsibleModule):
def get_module(**kwargs):
- """Return instance of OpsModule
+ """Return instance of NetworkModule
"""
argument_spec = NET_COMMON_ARGS.copy()
if kwargs.get('argument_spec'):
argument_spec.update(kwargs['argument_spec'])
kwargs['argument_spec'] = argument_spec
- kwargs['check_invalid_arguments'] = False
- module = OpsModule(**kwargs)
+ module = NetworkModule(**kwargs)
if not HAS_OPS and module.params['transport'] == 'ssh':
module.fail_json(msg='could not import ops library')
@@ -234,11 +240,6 @@ def get_module(**kwargs):
if module.params['transport'] == 'cli' and not HAS_PARAMIKO:
module.fail_json(msg='paramiko is required but does not appear to be installed')
- # copy in values from local action.
- params = json_dict_unicode_to_bytes(json.loads(MODULE_COMPLEX_ARGS))
- for key, value in params.iteritems():
- module.params[key] = value
-
if module.params['transport'] in ['cli', 'rest']:
module.connect()
diff --git a/lib/ansible/utils/module_docs_fragments/openswitch.py b/lib/ansible/utils/module_docs_fragments/openswitch.py
index 1427fc7525..3b3dbcaecc 100644
--- a/lib/ansible/utils/module_docs_fragments/openswitch.py
+++ b/lib/ansible/utils/module_docs_fragments/openswitch.py
@@ -62,5 +62,21 @@ options:
required: true
default: ssh
choices: ['ssh', 'cli', 'rest']
+ use_ssl:
+ description:
+ - Configures the I(transport) to use SSL if set to true only when the
+ I(transport) argument is configured as rest. If the transport
+ argument is not rest, this value is ignored
+ required: false
+ default: true
+ choices: BOOLEANS
+ provider:
+ description:
+ - Convience method that allows all M(openswitch) arguments to be passed as
+ a dict object. All constraints (required, choices, etc) must be
+ met either by individual arguments or values in this dict.
+ required: false
+ default: null
+
"""