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
pull/37331/merge
Deepak Agrawal 7 years ago committed by GitHub
parent dc61f4c6b1
commit a1026dbce5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -231,7 +231,12 @@ class Cli:
pass pass
if not all((bool(use_session), self.supports_sessions)): 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() conn = self._get_connection()
session = 'ansible_%s' % int(time.time()) session = 'ansible_%s' % int(time.time())
@ -407,8 +412,19 @@ class Eapi:
fallback to using configure() to load the commands. If that happens, fallback to using configure() to load the commands. If that happens,
there will be no returned diff or session values there will be no returned diff or session values
""" """
if not self.supports_sessions: use_session = os.getenv('ANSIBLE_EOS_USE_SESSIONS', True)
return self.configure(self, config) 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()) session = 'ansible_%s' % int(time.time())
result = {'session': session} result = {'session': session}

@ -37,4 +37,33 @@
that: that:
- "config.session not in result.stdout[0].sessions" - "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 }}" - debug: msg="END cli/check_mode.yaml on connection={{ ansible_connection }}"

Loading…
Cancel
Save