1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

Introspect flag to use on 'show run' when using defaults in ios_config (#22903)

When the ios_config module has 'defaults' param it runs in the device the command
'show running-config all' but 'all' may not be available in older devices.
This change makes introspection by using the help command and run 'full' in case
'all' is not available.

Fixes #22747
This commit is contained in:
Ricardo Carrillo Cruz 2017-03-28 10:20:52 +02:00 committed by GitHub
parent 495a1340a6
commit a5b12ff269
2 changed files with 12 additions and 1 deletions

View file

@ -50,6 +50,16 @@ def check_args(module, warnings):
warnings.append('argument %s has been deprecated and will be ' warnings.append('argument %s has been deprecated and will be '
'removed in a future version' % key) 'removed in a future version' % key)
def get_defaults_flag(module):
rc, out, err = exec_command(module, 'show running-config ?')
commands = set()
for line in out.splitlines():
if line:
commands.add(line.strip().split()[0])
return 'all' if 'all' in commands else 'full'
def get_config(module, flags=[]): def get_config(module, flags=[]):
cmd = 'show running-config ' cmd = 'show running-config '
cmd += ' '.join(flags) cmd += ' '.join(flags)

View file

@ -206,6 +206,7 @@ import re
import time import time
from ansible.module_utils.ios import run_commands, get_config, load_config from ansible.module_utils.ios import run_commands, get_config, load_config
from ansible.module_utils.ios import get_defaults_flag
from ansible.module_utils.ios import ios_argument_spec from ansible.module_utils.ios import ios_argument_spec
from ansible.module_utils.ios import check_args as ios_check_args from ansible.module_utils.ios import check_args as ios_check_args
from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.basic import AnsibleModule
@ -266,7 +267,7 @@ def get_running_config(module):
if not contents: if not contents:
flags = [] flags = []
if module.params['defaults']: if module.params['defaults']:
flags.append('all') flags.append(get_defaults_flag(module))
contents = get_config(module, flags=flags) contents = get_config(module, flags=flags)
contents, banners = extract_banners(contents) contents, banners = extract_banners(contents)
return NetworkConfig(indent=1, contents=contents), banners return NetworkConfig(indent=1, contents=contents), banners