fixes issue in eos shared module for earlier versions of EOS (#17980)

Earlier versions of EOS that do not support config sessions would
create an exception.  This fix will now check if the device supports
sessions and if it doesn't, it will fall back to not using sessions
(cherry picked from commit 3badb212fb)
This commit is contained in:
Peter Sprygada 2016-10-12 20:16:20 -04:00 committed by Peter Sprygada
parent 7034a34ce4
commit 1acd258931

View file

@ -50,7 +50,7 @@ class EosConfigMixin(object):
cmds = ['configure terminal']
cmds.extend(to_list(commands))
cmds.append('end')
responses = self.execute(commands)
responses = self.execute(cmds)
return responses[1:-1]
def get_config(self, include_defaults=False, **kwargs):
@ -60,6 +60,12 @@ class EosConfigMixin(object):
return self.execute([cmd])[0]
def load_config(self, config, commit=False, replace=False):
if self.supports_sessions():
return self.load_config_session(config, commit, replace)
else:
return self.configure(config)
def load_config_session(self, config, commit=False, replace=False):
""" Loads the configuration into the remote device
"""
session = 'ansible_%s' % int(time.time())
@ -116,6 +122,17 @@ class EosConfigMixin(object):
commands = ['configure session %s' % session, 'abort']
self.execute(commands)
def supports_sessions(self):
try:
if isinstance(self, Eapi):
self.execute('show configuration sessions', output='text')
else:
self.execute('show configuration sessions')
return True
except NetworkError:
return False
class Eapi(EosConfigMixin):