ios retry config if section filter fails (#49485)

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

* Fix case of no flags
This commit is contained in:
Nathaniel Case 2018-12-18 10:34:32 -05:00 committed by GitHub
parent 625a2d1470
commit 6caed0c38b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -104,7 +104,13 @@ def get_defaults_flag(module):
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:
return _DEVICE_CONFIGS[flag_str]
@ -113,6 +119,10 @@ def get_config(module, flags=None):
try:
out = connection.get_config(flags=flags)
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'))
cfg = to_text(out, errors='surrogate_then_replace').strip()
_DEVICE_CONFIGS[flag_str] = cfg