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
This commit is contained in:
Deepak Agrawal 2018-03-13 17:13:23 +05:30 committed by GitHub
parent dc61f4c6b1
commit a1026dbce5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 48 additions and 3 deletions

View file

@ -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}

View file

@ -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 }}"