Backport/2.5/37287 Eos :do not push config to device if check_mode is enabled (#38382)
* Eos :do not push config to device if check_mode is enabled (#37287)
* eos can not check config without config session support
* add testcase for check_mode without config session
* fix eos eapi to read use_session env var
(cherry picked from commit a1026dbce5
)
* Backport/2.5/37287 - Eos do not push config is check_mode is enabled
This commit is contained in:
parent
536dff507d
commit
4aafa90c89
3 changed files with 50 additions and 3 deletions
|
@ -0,0 +1,2 @@
|
|||
bugfixes:
|
||||
- EOS can not check configuration without use of config session (ANSIBLE_EOS_USE_SESSIONS=0). Fix is to throw error when hiting into this exception case. Configs would neither be checked nor be played on the eos device.
|
|
@ -231,7 +231,12 @@ class Cli:
|
|||
pass
|
||||
|
||||
if not all((bool(use_session), self.supports_sessions)):
|
||||
return self.configure(self, commands)
|
||||
if commit:
|
||||
return self.configure(self, commands)
|
||||
else:
|
||||
self._module.warn("EOS can not check config without config session")
|
||||
result = {'changed': True}
|
||||
return result
|
||||
|
||||
conn = self._get_connection()
|
||||
session = 'ansible_%s' % int(time.time())
|
||||
|
@ -407,8 +412,19 @@ class Eapi:
|
|||
fallback to using configure() to load the commands. If that happens,
|
||||
there will be no returned diff or session values
|
||||
"""
|
||||
if not self.supports_sessions:
|
||||
return self.configure(self, config)
|
||||
use_session = os.getenv('ANSIBLE_EOS_USE_SESSIONS', True)
|
||||
try:
|
||||
use_session = int(use_session)
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
if not all((bool(use_session), self.supports_sessions)):
|
||||
if commit:
|
||||
return self.configure(self, config)
|
||||
else:
|
||||
self._module.warn("EOS can not check config without config session")
|
||||
result = {'changed': True}
|
||||
return result
|
||||
|
||||
session = 'ansible_%s' % int(time.time())
|
||||
result = {'session': session}
|
||||
|
|
|
@ -37,4 +37,33 @@
|
|||
that:
|
||||
- "config.session not in result.stdout[0].sessions"
|
||||
|
||||
- name: invalid configuration in check mode + no config session
|
||||
eos_config:
|
||||
lines:
|
||||
- ip address 119.31.1.1 255.255.255.256
|
||||
parents: interface Loopback911
|
||||
check_mode: 1
|
||||
environment:
|
||||
ANSIBLE_EOS_USE_SESSIONS: 0
|
||||
register: result
|
||||
ignore_errors: yes
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.changed == true"
|
||||
|
||||
- name: valid configuration in check mode + no config session
|
||||
eos_config:
|
||||
lines:
|
||||
- ip address 119.31.1.1 255.255.255.255
|
||||
parents: interface Loopback911
|
||||
check_mode: yes
|
||||
register: result
|
||||
environment:
|
||||
ANSIBLE_EOS_USE_SESSIONS: 0
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.changed == true"
|
||||
|
||||
- debug: msg="END cli/check_mode.yaml on connection={{ ansible_connection }}"
|
||||
|
|
Loading…
Reference in a new issue