summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Sprygada <psprygada@ansible.com>2016-08-20 07:57:39 -0400
committerPeter Sprygada <psprygada@ansible.com>2016-08-20 07:57:39 -0400
commitf53dbec55a5a07afc9b0c0627874939c7c322023 (patch)
treea6e21054f6b08aaad7a9e26cec21e295949874cb
parent7cd682cc1a7e88be3948f10fed2f273f9b737b52 (diff)
downloadansible-f53dbec55a5a07afc9b0c0627874939c7c322023.tar.gz
removes Cli and Config objects from network into separate modules
This completes the refactor of Cli and Config moving them into separate modules netcmd and netcfg respectively.
-rw-r--r--lib/ansible/module_utils/network.py91
1 files changed, 9 insertions, 82 deletions
diff --git a/lib/ansible/module_utils/network.py b/lib/ansible/module_utils/network.py
index 27acbb7f8e..efebd0a3f6 100644
--- a/lib/ansible/module_utils/network.py
+++ b/lib/ansible/module_utils/network.py
@@ -30,18 +30,24 @@ import itertools
from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.basic import env_fallback, get_exception
+from ansible.module_utils.netcmd import Cli, Command
+from ansible.module_utils.netcfg import Config
from ansible.module_utils.shell import Shell, ShellError, HAS_PARAMIKO
NET_TRANSPORT_ARGS = dict(
host=dict(required=True),
port=dict(type='int'),
+
username=dict(fallback=(env_fallback, ['ANSIBLE_NET_USERNAME'])),
password=dict(no_log=True, fallback=(env_fallback, ['ANSIBLE_NET_PASSWORD'])),
ssh_keyfile=dict(fallback=(env_fallback, ['ANSIBLE_NET_SSH_KEYFILE']), type='path'),
+
authorize=dict(default=False, fallback=(env_fallback, ['ANSIBLE_NET_AUTHORIZE']), type='bool'),
auth_pass=dict(no_log=True, fallback=(env_fallback, ['ANSIBLE_NET_AUTH_PASS'])),
+
provider=dict(type='dict'),
transport=dict(choices=list()),
+
timeout=dict(default=10, type='int')
)
@@ -66,86 +72,6 @@ class ModuleStub(object):
self.params[key] = value.get('default')
self.fail_json = fail_json
-class Command(object):
-
- def __init__(self, command, output=None, prompt=None, response=None,
- is_reboot=False, delay=0):
-
- self.command = command
- self.output = output
- self.prompt = prompt
- self.response = response
- self.is_reboot = is_reboot
- self.delay = delay
-
- def __str__(self):
- return self.command
-
-class Cli(object):
-
- def __init__(self, connection):
- self.connection = connection
- self.default_output = connection.default_output or 'text'
- self.commands = list()
-
- def __call__(self, commands, output=None):
- commands = self.to_command(commands, output)
- return self.connection.run_commands(commands)
-
- def to_command(self, commands, output=None):
- output = output or self.default_output
- objects = list()
- for cmd in to_list(commands):
- if not isinstance(cmd, Command):
- cmd = Command(cmd, output)
- objects.append(cmd)
- return objects
-
- def add_commands(self, commands, output=None):
- commands = self.to_command(commands, output)
- self.commands.extend(commands)
-
- def run_commands(self):
- responses = self.connection.run_commands(self.commands)
- for resp, cmd in itertools.izip(responses, self.commands):
- cmd.response = resp
- return responses
-
-class Config(object):
-
- def __init__(self, connection):
- self.connection = connection
-
- def invoke(self, method, *args, **kwargs):
- try:
- return method(*args, **kwargs)
- except AttributeError:
- exc = get_exception()
- raise NetworkError('undefined method "%s"' % method.__name__, exc=str(exc))
- except NotImplementedError:
- raise NetworkError('method not supported "%s"' % method.__name__)
-
- def __call__(self, commands):
- lines = to_list(commands)
- return self.invoke(self.connection.configure, commands)
-
- def load_config(self, commands, **kwargs):
- commands = to_list(commands)
- return self.invoke(self.connection.load_config, commands, **kwargs)
-
- def get_config(self, **kwargs):
- return self.invoke(self.connection.get_config, **kwargs)
-
- def commit_config(self, **kwargs):
- return self.invoke(self.connection.commit_config, **kwargs)
-
- def abort_config(self, **kwargs):
- return self.invoke(self.connection.abort_config, **kwargs)
-
- def save_config(self):
- return self.invoke(self.connection.save_config)
-
-
class NetworkError(Exception):
def __init__(self, msg, **kwargs):
@@ -234,7 +160,6 @@ class NetworkModule(AnsibleModule):
exc = get_exception()
self.fail_json(msg=exc.message)
-
class NetCli(object):
"""Basic paramiko-based ssh transport any NetworkModule can use."""
@@ -274,9 +199,11 @@ class NetCli(object):
msg='failed to connect to %s:%s' % (host, port), exc=str(exc)
)
+ self._connected = True
+
def disconnect(self, **kwargs):
- self._connected = False
self.shell.close()
+ self._connected = False
def authorize(self, params, **kwargs):
passwd = params['auth_pass']