ios retry config if section filter fails (#49485)

* Attempt to work around devices that don't understand | section

* Fix case of no flags
pull/46528/head
Nathaniel Case 6 years ago committed by GitHub
parent 625a2d1470
commit 6caed0c38b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -104,7 +104,13 @@ def get_defaults_flag(module):
def get_config(module, flags=None): def get_config(module, flags=None):
flag_str = ' '.join(to_list(flags)) flags = to_list(flags)
section_filter = False
if flags and 'section' in flags[-1]:
section_filter = True
flag_str = ' '.join(flags)
try: try:
return _DEVICE_CONFIGS[flag_str] return _DEVICE_CONFIGS[flag_str]
@ -113,6 +119,10 @@ def get_config(module, flags=None):
try: try:
out = connection.get_config(flags=flags) out = connection.get_config(flags=flags)
except ConnectionError as exc: except ConnectionError as exc:
if section_filter:
# Some ios devices don't understand `| section foo`
out = get_config(module, flags=flags[:-1])
else:
module.fail_json(msg=to_text(exc, errors='surrogate_then_replace')) module.fail_json(msg=to_text(exc, errors='surrogate_then_replace'))
cfg = to_text(out, errors='surrogate_then_replace').strip() cfg = to_text(out, errors='surrogate_then_replace').strip()
_DEVICE_CONFIGS[flag_str] = cfg _DEVICE_CONFIGS[flag_str] = cfg

Loading…
Cancel
Save