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:
parent
495a1340a6
commit
a5b12ff269
2 changed files with 12 additions and 1 deletions
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue