Add cli_config module (#42413)

* cli_config module

Signed-off-by: Trishna Guha <trishnaguha17@gmail.com>

* rename diff and replace

Signed-off-by: Trishna Guha <trishnaguha17@gmail.com>

* add nxos changes

Signed-off-by: Trishna Guha <trishnaguha17@gmail.com>

* nxos tests

Signed-off-by: Trishna Guha <trishnaguha17@gmail.com>

* remove severity

* address review comment

Signed-off-by: Trishna Guha <trishnaguha17@gmail.com>

* add module diff

Signed-off-by: Trishna Guha <trishnaguha17@gmail.com>

* add iosxr test

Signed-off-by: Trishna Guha <trishnaguha17@gmail.com>

* address diff review

Signed-off-by: Trishna Guha <trishnaguha17@gmail.com>

* Add junos tests

Signed-off-by: Trishna Guha <trishnaguha17@gmail.com>

* vyos cliconf diff fix

Signed-off-by: Trishna Guha <trishnaguha17@gmail.com>
This commit is contained in:
Trishna Guha 2018-08-14 13:52:15 +05:30 committed by GitHub
commit a8c24a5d5e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
42 changed files with 960 additions and 4 deletions

View file

@ -0,0 +1,16 @@
---
- name: collect all cli_config test cases
find:
paths: "{{ role_path }}/tests/cli_config"
patterns: "{{ testcase }}.yaml"
register: test_cases
delegate_to: localhost
- name: set test_items
set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
- name: run test case (connection=network_cli)
include: "{{ test_case_to_run }} ansible_connection=network_cli"
with_items: "{{ test_items }}"
loop_control:
loop_var: test_case_to_run

View file

@ -1,2 +1,3 @@
---
- { include: cli.yaml, tags: ['cli'] }
- { include: cli_config.yaml, tags: ['cli_config'] }

View file

@ -0,0 +1,5 @@
ip access-list extended test
permit ip host 192.0.2.1 any log
permit ip host 192.0.2.2 any log
permit ip host 192.0.2.3 any log
permit ip host 192.0.2.4 any log

View file

@ -0,0 +1,6 @@
no ip access-list extended test
ip access-list extended test
permit ip host 192.0.2.1 any log
permit ip host 192.0.2.2 any log
permit ip host 192.0.2.3 any log
permit ip host 192.0.2.4 any log

View file

@ -0,0 +1,5 @@
ip access-list extended test
permit ip host 192.0.2.1 any log
permit ip host 192.0.2.2 any log
permit ip host 192.0.2.3 any log
permit ip host 192.0.2.4 any log

View file

@ -0,0 +1,5 @@
ip access-list extended test
permit ip host 192.0.2.1 any log
permit ip host 192.0.2.2 any log
permit ip host 192.0.2.3 any log
permit ip host 192.0.2.4 any log

View file

@ -0,0 +1,5 @@
no ip access-list extended test
ip access-list extended test
permit ip host 192.0.2.1 any log
permit ip host 192.0.2.2 any log
permit ip host 192.0.2.3 any log

View file

@ -0,0 +1,7 @@
no ip access-list extended test
ip access-list extended test
permit ip host 192.0.2.1 any log
permit ip host 192.0.2.2 any log
permit ip host 192.0.2.3 any log
permit ip host 192.0.2.4 any log
permit ip host 192.0.2.5 any log

View file

@ -0,0 +1,7 @@
no ip access-list extended test
ip access-list extended test
permit ip host 192.0.2.1 any log
permit ip host 192.0.2.2 any log
permit ip host 192.0.2.3 any log
permit ip host 192.0.2.4 any log
permit ip host 192.0.2.5 any log

View file

@ -0,0 +1,45 @@
---
- debug: msg="START cli_config/cli_basic.yaml on connection={{ ansible_connection }}"
- name: setup
cli_config: &rm
config: |
interface loopback999
no description
shutdown
diff_match: none
- name: configure device with config
cli_config: &conf
config: "{{ lookup('template', 'basic/config.j2') }}"
register: result
- assert:
that:
- "result.changed == true"
- name: Idempotence
cli_config: *conf
register: result
- assert:
that:
- "result.changed == false"
- name: remove config
cli_config: *rm
- name: configure device with config
cli_config:
config: "{{ lookup('template', 'basic/config.j2') }}"
defaults: yes
register: result
- assert:
that:
- "result.changed == true"
- name: teardown
cli_config: *rm
- debug: msg="END cli_config/cli_basic.yaml on connection={{ ansible_connection }}"

View file

@ -0,0 +1,32 @@
---
- debug: msg="START cli_config/cli_block_replace.yaml on connection={{ ansible_connection }}"
- name: setup - remove configuration
cli_config:
config: "{{ lookup('template', 'basic/setupblock.j2') }}"
diff_match: none
- name: block replace
cli_config: &block
config: "{{ lookup('template', 'basic/configblock.j2') }}"
diff_replace: block
register: result
- assert:
that:
- "result.changed == true"
- name: block replace (Idempotence)
cli_config: *block
register: result
- assert:
that:
- "result.changed == false"
- name: teardown
cli_config:
config: no ip access-list extended test
diff_match: none
- debug: msg="END cli_config/cli_block_replace.yaml on connection={{ ansible_connection }}"

View file

@ -0,0 +1,33 @@
---
- debug: msg="START cli_config/cli_exact_match.yaml on connection={{ ansible_connection }}"
- name: setup - remove configuration
cli_config:
config: "{{ lookup('template', 'basic/setupexact.j2') }}"
diff_match: none
- name: configure using exact match
cli_config:
config: "{{ lookup('template', 'basic/configexact1.j2') }}"
diff_match: exact
register: result
- assert:
that:
- "result.changed == true"
- name: check using exact match
cli_config:
config: "{{ lookup('template', 'basic/configexact2.j2') }}"
register: result
- assert:
that:
- "result.changed == false"
- name: teardown
cli_config:
config: no ip access-list extended test
diff_match: none
- debug: msg="END cli_config/cli_exact_match.yaml on connection={{ ansible_connection }}"

View file

@ -0,0 +1,24 @@
---
- debug: msg="START cli_config/cli_strict_match.yaml on connection={{ ansible_connection }}"
- name: setup - remove configuration
cli_config:
config: "{{ lookup('template', 'basic/setupstrict.j2') }}"
diff_match: none
- name: configure using strict match
cli_config:
config: "{{ lookup('template', 'basic/configstrict1.j2') }}"
diff_match: strict
register: result
- assert:
that:
- "result.changed == true"
- name: teardown
cli_config:
config: no ip access-list extended test
diff_match: none
- debug: msg="END cli_config/cli_strict_match.yaml on connection={{ ansible_connection }}"