diff options
author | Sumit Jaiswal <sjaiswal@redhat.com> | 2019-05-09 18:03:25 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-09 18:03:25 +0530 |
commit | a4287018ae3c8d34bffdf49efc4e6844d68e7beb (patch) | |
tree | d7b21da807b16b06453370f16b27ecad2855c649 | |
parent | 0bead3672f7a750dd4e8f6a9ea2586dcecfc2125 (diff) | |
download | ansible-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.py | 19 | ||||
-rw-r--r-- | lib/ansible/modules/network/eos/eos_config.py | 4 | ||||
-rw-r--r-- | lib/ansible/plugins/cliconf/eos.py | 17 | ||||
-rw-r--r-- | lib/ansible/plugins/httpapi/eos.py | 9 | ||||
-rw-r--r-- | test/integration/targets/eos_config/tests/cli/check_mode.yaml | 21 | ||||
-rw-r--r-- | test/integration/targets/eos_config/tests/cli/sublevel_strict_mul_parents.yaml | 108 |
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 }}" |