removes functions from ios module

This removes top level functions from the ios module and moves them
into the specific modules.  This update also includes some clean up
of the Cli transport
This commit is contained in:
Peter Sprygada 2016-08-20 07:27:47 -04:00
parent 90747e6d2f
commit 24c6443557

View file

@ -20,60 +20,18 @@
import re
from ansible.module_utils.basic import json
from ansible.module_utils.network import NetCli, NetworkError, ModuleStub
from ansible.module_utils.network import NetworkModule, NetworkError, ModuleStub
from ansible.module_utils.network import add_argument, register_transport, to_list
from ansible.module_utils.netcfg import NetworkConfig
from ansible.module_utils.netcli import NetCli
from ansible.module_utils.netcmd import Command
from ansible.module_utils.urls import fetch_url, url_argument_spec, urlparse
add_argument('use_ssl', dict(default=True, type='bool'))
add_argument('validate_certs', dict(default=True, type='bool'))
def argument_spec():
return dict(
running_config=dict(aliases=['config']),
save_config=dict(default=False, aliases=['save']),
force=dict(type='bool', default=False)
)
ios_argument_spec = argument_spec()
def get_config(module, include_defaults=False):
contents = module.params['running_config']
if not contents:
if not include_defaults:
contents = module.config.get_config()
else:
contents = module.cli('show running-config all')[0]
module.params['running_config'] = contents
return NetworkConfig(indent=1, contents=contents)
def load_candidate(module, candidate, nodiff=False):
if nodiff:
updates = str(candidate)
else:
config = get_config(module)
updates = candidate.difference(config)
result = dict(changed=False, saved=False)
if updates:
if not module.check_mode:
module.config(updates)
result['changed'] = True
if not module.check_mode and module.params['save_config'] is True:
module.config.save_config()
result['saved'] = True
result['updates'] = updates
return result
def load_config(module, commands, nodiff=False):
contents = '\n'.join(to_list(commands))
candidate = NetworkConfig(contents=contents, indent=1)
return load_candidate(module, candidate, nodiff)
class Cli(NetCli):
NET_PASSWD_RE = re.compile(r"[\r\n]?password: $", re.I)
CLI_PROMPTS_RE = [
@ -96,21 +54,26 @@ class Cli(NetCli):
self.shell.send('terminal length 0')
self._connected = True
### Cli methods ###
def authorize(self, params, **kwargs):
passwd = params['auth_pass']
self.run_commands(
Command('enable', prompt=self.NET_PASSWD_RE, response=passwd)
)
### implementation of netcmd.Cli ###
def run_commands(self, commands, **kwargs):
commands = to_list(commands)
return self.execute([str(c) for c in commands])
return self.execute(to_list(commands))
### Config methods ###
### implementation of netcfg.Config ###
def configure(self, commands, **kwargs):
cmds = ['configure terminal']
cmds.extend(to_list(commands))
cmds.append('end')
if cmds[-1] != 'end':
cmds.append('end')
responses = self.execute(cmds)
return responses[1:-1]
return responses[1:]
def get_config(self, include_defaults=False, **kwargs):
cmd = 'show running-config'
@ -118,20 +81,12 @@ class Cli(NetCli):
cmd += ' all'
return self.run_commands(cmd)[0]
def load_config(self, commands, commit=False, **kwargs):
raise NotImplementedError
def replace_config(self, commands, **kwargs):
raise NotImplementedError
def commit_config(self, **kwargs):
raise NotImplementedError
def abort_config(self, **kwargs):
raise NotImplementedError
def load_config(self, commands, **kwargs):
return self.configure(commands)
def save_config(self):
self.execute(['copy running-config startup-config'])
Cli = register_transport('cli', default=True)(Cli)
@ -224,7 +179,7 @@ class Restconf(object):
return self.request('DELETE', path, data, headers)
### implementation of Cli ###
### implementation of netcmd.Cli ###
def run_commands(self, commands):
responses = list()
@ -240,7 +195,7 @@ class Restconf(object):
return response['results']
### implementation of Config ###
### implementation of netcfg.Config ###
def configure(self, commands):
config = list()
@ -250,18 +205,13 @@ class Restconf(object):
self.put('global/cli', data=data)
def load_config(self, commands, **kwargs):
raise NotImplementedError
return self.configure(commands)
def get_config(self, **kwargs):
hdrs = {'Content-type': 'text/plain', 'Accept': 'text/plain'}
return self.get('global/running-config', headers=hdrs)
def commit_config(self, **kwargs):
raise NotImplementedError
def abort_config(self, **kwargs):
raise NotImplementedError
def save_config(self):
self.put('/api/v1/global/save-config')
Restconf = register_transport('restconf')(Restconf)