summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Sprygada <privateip@users.noreply.github.com>2016-09-19 22:26:56 -0400
committerGitHub <noreply@github.com>2016-09-19 22:26:56 -0400
commit446c7de2395d0f4872581e163509015cfd3cf660 (patch)
tree61c4fc95db8375cef873b19746c75a1fe37af828
parent6950e79cded5ca33bfb9f6cf9c4663b998adddb5 (diff)
downloadansible-modules-core-446c7de2395d0f4872581e163509015cfd3cf660.tar.gz
bug fixes in junos_netconf module (#4924)
* fixes exception thrown when sending commands to device * fixes exception thrown when retrieving current resource instance * fixes issue where netconf would be configured in some instances when state was set to absent * now returns the command string sent to the remote device * fixes argument name to be netconf_port with alias to listens_on
-rw-r--r--network/junos/junos_netconf.py44
1 files changed, 30 insertions, 14 deletions
diff --git a/network/junos/junos_netconf.py b/network/junos/junos_netconf.py
index fa9ca411..99b918c0 100644
--- a/network/junos/junos_netconf.py
+++ b/network/junos/junos_netconf.py
@@ -30,13 +30,15 @@ description:
resources as defined in RFC 6242.
extends_documentation_fragment: junos
options:
- listens_on:
+ netconf_port:
description:
- This argument specifies the port the netconf service should
listen on for SSH connections. The default port as defined
in RFC 6242 is 830.
required: false
default: 830
+ aliases: ['listens_on']
+ version_added: "2.2"
state:
description:
- Specifies the state of the M(junos_netconf) resource on
@@ -53,29 +55,37 @@ EXAMPLES = """
# Note: examples below use the following provider dict to handle
# transport and authentication to the node.
vars:
- netconf:
+ cli:
host: "{{ inventory_hostname }}"
username: ansible
password: Ansible
- transport: netconf
+ transport: cli
- name: enable netconf service on port 830
junos_netconf:
listens_on: 830
state: present
- provider: "{{ netconf }}"
+ provider: "{{ cli }}"
- name: disable netconf service
junos_netconf:
state: absent
- provider: "{{ netconf }}"
+ provider: "{{ cli }}"
"""
RETURN = """
+commands:
+ description: Returns the command sent to the remote device
+ returned: when changed is True
+ type: str
+ sample: 'set system services netconf ssh port 830'
"""
import re
-from ansible.module_utils.junos import NetworkModule
+import ansible.module_utils.junos
+
+from ansible.module_utils.basic import get_exception
+from ansible.module_utils.network import NetworkModule, NetworkError
def parse_port(config):
match = re.search(r'port (\d+)', config)
@@ -84,7 +94,7 @@ def parse_port(config):
def get_instance(module):
cmd = 'show configuration system services netconf'
- cfg = module.run_commands(cmd)[0]
+ cfg = module.cli(cmd)[0]
result = dict(state='absent')
if cfg:
result = dict(state='present')
@@ -96,7 +106,7 @@ def main():
"""
argument_spec = dict(
- listens_on=dict(type='int', default=830),
+ netconf_port=dict(type='int', default=830, aliases=['listens_on']),
state=dict(default='present', choices=['present', 'absent']),
transport=dict(default='cli', choices=['cli'])
)
@@ -105,25 +115,31 @@ def main():
supports_check_mode=True)
state = module.params['state']
- port = module.params['listens_on']
+ port = module.params['netconf_port']
result = dict(changed=False)
instance = get_instance(module)
- commands = None
if state == 'present' and instance.get('state') == 'absent':
commands = 'set system services netconf ssh port %s' % port
+ elif state == 'present' and port != instance.get('port'):
+ commands = 'set system services netconf ssh port %s' % port
elif state == 'absent' and instance.get('state') == 'present':
commands = 'delete system services netconf'
- elif port != instance.get('port'):
- commands = 'set system services netconf ssh port %s' % port
+ else:
+ commands = None
if commands:
if not module.check_mode:
- comment = 'configuration updated by junos_netconf'
- module.config(commands, comment=comment)
+ try:
+ comment = 'configuration updated by junos_netconf'
+ module.config(commands, comment=comment)
+ except NetworkError:
+ exc = get_exception()
+ module.fail_json(msg=str(exc), **exc.kwargs)
result['changed'] = True
+ result['commands'] = commands
module.exit_json(**result)