summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSumit Jaiswal <sjaiswal@redhat.com>2019-05-09 18:03:25 +0530
committerGitHub <noreply@github.com>2019-05-09 18:03:25 +0530
commita4287018ae3c8d34bffdf49efc4e6844d68e7beb (patch)
treed7b21da807b16b06453370f16b27ecad2855c649
parent0bead3672f7a750dd4e8f6a9ea2586dcecfc2125 (diff)
downloadansible-revert-56180-eos_config_tests.tar.gz
Revert "eos_config: Fix test issues (#56180)"revert-56180-eos_config_tests
This reverts commit 0bead3672f7a750dd4e8f6a9ea2586dcecfc2125.
-rw-r--r--lib/ansible/module_utils/network/eos/eos.py19
-rw-r--r--lib/ansible/modules/network/eos/eos_config.py4
-rw-r--r--lib/ansible/plugins/cliconf/eos.py17
-rw-r--r--lib/ansible/plugins/httpapi/eos.py9
-rw-r--r--test/integration/targets/eos_config/tests/cli/check_mode.yaml21
-rw-r--r--test/integration/targets/eos_config/tests/cli/sublevel_strict_mul_parents.yaml108
6 files changed, 69 insertions, 109 deletions
diff --git a/lib/ansible/module_utils/network/eos/eos.py b/lib/ansible/module_utils/network/eos/eos.py
index 77a09045cb..6a2640f3e3 100644
--- a/lib/ansible/module_utils/network/eos/eos.py
+++ b/lib/ansible/module_utils/network/eos/eos.py
@@ -121,12 +121,6 @@ class Cli:
self._session_support = None
self._connection = None
- @property
- def supports_sessions(self):
- if self._session_support is None:
- self._session_support = self._get_connection().supports_sessions()
- return self._session_support
-
def _get_connection(self):
if self._connection:
return self._connection
@@ -236,9 +230,10 @@ class LocalEapi:
@property
def supports_sessions(self):
- if self._session_support is None:
- response = self.send_request(['show configuration sessions'])
- self._session_support = 'error' not in response
+ if self._session_support:
+ return self._session_support
+ response = self.send_request(['show configuration sessions'])
+ self._session_support = 'error' not in response
return self._session_support
def _request_builder(self, commands, output, reqid=None):
@@ -433,12 +428,6 @@ class HttpApi:
return self._connection_obj
- @property
- def supports_sessions(self):
- if self._session_support is None:
- self._session_support = self._connection.supports_sessions()
- return self._session_support
-
def run_commands(self, commands, check_rc=True):
"""Runs list of commands on remote device and returns results
"""
diff --git a/lib/ansible/modules/network/eos/eos_config.py b/lib/ansible/modules/network/eos/eos_config.py
index 52479a9dbe..1bbd5d1e39 100644
--- a/lib/ansible/modules/network/eos/eos_config.py
+++ b/lib/ansible/modules/network/eos/eos_config.py
@@ -396,10 +396,6 @@ def main():
flags = ['all'] if module.params['defaults'] else []
connection = get_connection(module)
- # Refuse to diff_against: session if essions are disabled
- if module.params['diff_against'] == 'session' and not connection.supports_sessions:
- module.fail_json(msg="Cannot diff against sessions when sessions are disabled. Please change diff_against to another value")
-
if module.params['backup'] or (module._diff and module.params['diff_against'] == 'running'):
contents = get_config(module, flags=flags)
config = NetworkConfig(indent=1, contents=contents)
diff --git a/lib/ansible/plugins/cliconf/eos.py b/lib/ansible/plugins/cliconf/eos.py
index 8fca11254f..4662f45491 100644
--- a/lib/ansible/plugins/cliconf/eos.py
+++ b/lib/ansible/plugins/cliconf/eos.py
@@ -83,12 +83,12 @@ class Cliconf(CliconfBase):
operations = self.get_device_operations()
self.check_edit_config_capability(operations, candidate, commit, replace, comment)
- if (commit is False) and (not self.supports_sessions()):
+ if (commit is False) and (not self.supports_sessions):
raise ValueError('check mode is not supported without configuration session')
resp = {}
session = None
- if self.supports_sessions():
+ if self.supports_sessions:
session = 'ansible_%s' % int(time.time())
resp.update({'session': session})
self.send_command('configure session %s' % session)
@@ -125,7 +125,7 @@ class Cliconf(CliconfBase):
resp['request'] = requests
resp['response'] = results
- if self.supports_sessions():
+ if self.supports_sessions:
out = self.send_command('show session-config diffs')
if out:
resp['diff'] = out.strip()
@@ -148,7 +148,7 @@ class Cliconf(CliconfBase):
def discard_changes(self, session=None):
commands = ['end']
- if self.supports_sessions():
+ if self.supports_sessions:
# to close session gracefully execute abort in top level session prompt.
commands.extend(['configure session %s' % session, 'abort'])
@@ -213,6 +213,7 @@ class Cliconf(CliconfBase):
diff['config_diff'] = dumps(configdiffobjs, 'commands') if configdiffobjs else ''
return diff
+ @property
def supports_sessions(self):
use_session = self.get_option('eos_use_sessions')
try:
@@ -261,16 +262,16 @@ class Cliconf(CliconfBase):
def get_device_operations(self):
return {
'supports_diff_replace': True,
- 'supports_commit': bool(self.supports_sessions()),
+ 'supports_commit': True if self.supports_sessions else False,
'supports_rollback': False,
'supports_defaults': False,
- 'supports_onbox_diff': bool(self.supports_sessions()),
+ 'supports_onbox_diff': True if self.supports_sessions else False,
'supports_commit_comment': False,
'supports_multiline_delimiter': False,
'supports_diff_match': True,
'supports_diff_ignore_lines': True,
- 'supports_generate_diff': not bool(self.supports_sessions()),
- 'supports_replace': bool(self.supports_sessions()),
+ 'supports_generate_diff': False if self.supports_sessions else True,
+ 'supports_replace': True if self.supports_sessions else False
}
def get_option_values(self):
diff --git a/lib/ansible/plugins/httpapi/eos.py b/lib/ansible/plugins/httpapi/eos.py
index 2221eb8c85..72306d19f9 100644
--- a/lib/ansible/plugins/httpapi/eos.py
+++ b/lib/ansible/plugins/httpapi/eos.py
@@ -48,6 +48,7 @@ class HttpApi(HttpApiBase):
self._device_info = None
self._session_support = None
+ @property
def supports_sessions(self):
use_session = self.get_option('eos_use_sessions')
try:
@@ -118,16 +119,16 @@ class HttpApi(HttpApiBase):
def get_device_operations(self):
return {
'supports_diff_replace': True,
- 'supports_commit': bool(self.supports_sessions()),
+ 'supports_commit': bool(self.supports_sessions),
'supports_rollback': False,
'supports_defaults': False,
- 'supports_onbox_diff': bool(self.supports_sessions()),
+ 'supports_onbox_diff': bool(self.supports_sessions),
'supports_commit_comment': False,
'supports_multiline_delimiter': False,
'supports_diff_match': True,
'supports_diff_ignore_lines': True,
- 'supports_generate_diff': not bool(self.supports_sessions()),
- 'supports_replace': bool(self.supports_sessions()),
+ 'supports_generate_diff': not bool(self.supports_sessions),
+ 'supports_replace': bool(self.supports_sessions),
}
def get_capabilities(self):
diff --git a/test/integration/targets/eos_config/tests/cli/check_mode.yaml b/test/integration/targets/eos_config/tests/cli/check_mode.yaml
index 3961239547..424b8bd15e 100644
--- a/test/integration/targets/eos_config/tests/cli/check_mode.yaml
+++ b/test/integration/targets/eos_config/tests/cli/check_mode.yaml
@@ -1,6 +1,5 @@
---
-- debug:
- msg: "START cli/check_mode.yaml on connection={{ ansible_connection }}"
+- debug: msg="START cli/check_mode.yaml on connection={{ ansible_connection }}"
- name: invalid configuration in check mode
eos_config:
@@ -40,28 +39,11 @@
that:
- "config.session not in result.stdout[0].sessions"
-- name: configuration in check mode + no config session
- eos_config:
- lines:
- - ip address 119.31.1.1 255.255.255.254
- parents: interface Loopback911
- become: yes
- check_mode: 1
- vars:
- ansible_eos_use_sessions: 0
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - "result.failed == true"
-
- 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
- diff_against: running
become: yes
check_mode: 1
vars:
@@ -78,7 +60,6 @@
lines:
- ip address 119.31.1.1 255.255.255.255
parents: interface Loopback911
- diff_against: running
become: yes
check_mode: yes
register: result
diff --git a/test/integration/targets/eos_config/tests/cli/sublevel_strict_mul_parents.yaml b/test/integration/targets/eos_config/tests/cli/sublevel_strict_mul_parents.yaml
index 4db54724cf..36204438fc 100644
--- a/test/integration/targets/eos_config/tests/cli/sublevel_strict_mul_parents.yaml
+++ b/test/integration/targets/eos_config/tests/cli/sublevel_strict_mul_parents.yaml
@@ -1,6 +1,5 @@
---
-- debug:
- msg: "START cli/sublevel_strict_mul_parents.yaml on connection={{ ansible_connection }}"
+- debug: msg="START cli/sublevel_strict_mul_parents.yaml on connection={{ ansible_connection }}"
- name: setup
eos_config:
@@ -13,67 +12,60 @@
match: none
become: yes
-- block:
- - name: configure sub level command using strict match
- eos_config:
- lines:
- - set cos 1
- - set dscp 62
- parents: ['policy-map type qos p1', 'class c1']
- match: strict
- # session-config diffs does not produce a diff here for some reason.
- # check against running-config instead.
- diff_against: running
- register: result
- become: yes
+- name: configure sub level command using strict match
+ eos_config:
+ lines:
+ - set cos 1
+ - set dscp 62
+ parents: ['policy-map type qos p1', 'class c1']
+ match: strict
+ register: result
+ become: yes
- - assert:
- that:
- - "result.changed == true"
- - "'set cos 1' in result.updates"
- - "'set dscp 62' in result.updates"
+- assert:
+ that:
+ - "result.changed == true"
+ - "'set cos 1' in result.updates"
+ - "'set dscp 62' in result.updates"
- - name: change sub level command order and config with strict match
- eos_config:
- lines:
- - set dscp 62
- - set cos 1
- parents: ['policy-map type qos p1', 'class c1']
- match: strict
- diff_against: running
- register: result
- become: yes
+- name: change sub level command order and config with strict match
+ eos_config:
+ lines:
+ - set dscp 62
+ - set cos 1
+ parents: ['policy-map type qos p1', 'class c1']
+ match: strict
+ register: result
+ become: yes
- - assert:
- that:
- - "result.changed == true"
- - "'set cos 1' in result.updates"
- - "'set dscp 62' in result.updates"
+- assert:
+ that:
+ - "result.changed == true"
+ - "'set cos 1' in result.updates"
+ - "'set dscp 62' in result.updates"
- - name: Config sub level command with strict match (Idempotency)
- eos_config:
- lines:
- #EOS does not change order of class action if reconfigured
- #so we have to use old order for Idempotency
- - set cos 1
- - set dscp 62
- parents: ['policy-map type qos p1', 'class c1']
- match: strict
- diff_against: running
- register: result
- become: yes
+- name: Config sub level command with strict match (Idempotency)
+ eos_config:
+ lines:
+#EOS does not change order of class action if reconfigured
+#so we have to use old order for Idempotency
+ - set cos 1
+ - set dscp 62
+ parents: ['policy-map type qos p1', 'class c1']
+ match: strict
+ register: result
+ become: yes
- - assert:
- that:
- - "result.changed == false"
+- assert:
+ that:
+ - "result.changed == false"
- always:
- - name: teardown
- eos_config:
- lines:
- - no policy-map type qos p1
- - no class-map type qos match-any c1
- match: none
- become: yes
+- name: teardown
+ eos_config:
+ lines:
+ - no policy-map type qos p1
+ - no class-map type qos match-any c1
+ match: none
+ become: yes
- debug: msg="END cli/sublevel_strict_mul_parents.yaml on connection={{ ansible_connection }}"