nxos_config and nxos_facts - fixes for N35 platform. (#32762)

* update nxos_facts to handle errors in n35 platform

* switch show commands to output text

* replace basestring which is not supported in python3

* do it like the other modules: use string_types

* incorporate PR review
This commit is contained in:
rahushen 2017-11-14 00:03:37 -05:00 committed by Trishna Guha
parent f891e92581
commit 1360ae6518
2 changed files with 17 additions and 5 deletions

View file

@ -273,6 +273,7 @@ from ansible.module_utils.netcfg import NetworkConfig, dumps
from ansible.module_utils.nxos import get_config, load_config, run_commands from ansible.module_utils.nxos import get_config, load_config, run_commands
from ansible.module_utils.nxos import nxos_argument_spec from ansible.module_utils.nxos import nxos_argument_spec
from ansible.module_utils.nxos import check_args as nxos_check_args from ansible.module_utils.nxos import check_args as nxos_check_args
from ansible.module_utils.network_common import to_list
def get_running_config(module, config=None): def get_running_config(module, config=None):
@ -296,6 +297,17 @@ def get_candidate(module):
return candidate return candidate
def execute_show_commands(module, commands, output='text'):
cmds = []
for command in to_list(commands):
cmd = { 'command': command,
'output': output,
}
cmds.append(cmd)
body = run_commands(module, cmds)
return body
def main(): def main():
""" main entry point for module execution """ main entry point for module execution
""" """
@ -396,7 +408,7 @@ def main():
module.params['save_when'] = 'always' module.params['save_when'] = 'always'
if module.params['save_when'] != 'never': if module.params['save_when'] != 'never':
output = run_commands(module, ['show running-config', 'show startup-config']) output = execute_show_commands(module, ['show running-config', 'show startup-config'])
running_config = NetworkConfig(indent=1, contents=output[0], ignore_lines=diff_ignore_lines) running_config = NetworkConfig(indent=1, contents=output[0], ignore_lines=diff_ignore_lines)
startup_config = NetworkConfig(indent=1, contents=output[1], ignore_lines=diff_ignore_lines) startup_config = NetworkConfig(indent=1, contents=output[1], ignore_lines=diff_ignore_lines)
@ -413,7 +425,7 @@ def main():
if module._diff: if module._diff:
if not running_config: if not running_config:
output = run_commands(module, 'show running-config') output = execute_show_commands(module, 'show running-config')
contents = output[0] contents = output[0]
else: else:
contents = running_config.config_text contents = running_config.config_text
@ -430,7 +442,7 @@ def main():
elif module.params['diff_against'] == 'startup': elif module.params['diff_against'] == 'startup':
if not startup_config: if not startup_config:
output = run_commands(module, 'show startup-config') output = execute_show_commands(module, 'show startup-config')
contents = output[0] contents = output[0]
else: else:
contents = output[0] contents = output[0]

View file

@ -171,7 +171,7 @@ import re
from ansible.module_utils.nxos import run_commands, get_config from ansible.module_utils.nxos import run_commands, get_config
from ansible.module_utils.nxos import nxos_argument_spec, check_args from ansible.module_utils.nxos import nxos_argument_spec, check_args
from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.six import iteritems from ansible.module_utils.six import string_types, iteritems
class FactsBase(object): class FactsBase(object):
@ -290,7 +290,7 @@ class Interfaces(FactsBase):
self.facts['interfaces'] = self.populate_interfaces(data) self.facts['interfaces'] = self.populate_interfaces(data)
data = self.run('show ipv6 interface', 'json') data = self.run('show ipv6 interface', 'json')
if data: if data and not isinstance(data, string_types):
self.parse_ipv6_interfaces(data) self.parse_ipv6_interfaces(data)
data = self.run('show lldp neighbors') data = self.run('show lldp neighbors')