diff options
author | Sumit Jaiswal <sjaiswal@redhat.com> | 2019-08-19 20:41:00 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-19 20:41:00 +0530 |
commit | 04ef376ab2359a301e9b6ba6cffb149093fd2e6a (patch) | |
tree | 546899944108a05bd5915e45b68d07d361a16210 /test/integration | |
parent | 31bfcd4745fdceeb0c29f77f43726abfed044cab (diff) | |
download | ansible-04ef376ab2359a301e9b6ba6cffb149093fd2e6a.tar.gz |
Resource module for ios_lag_interfaces (#60672)
Signed-off-by: Sumit Jaiswal <sjaiswal@redhat.com>
Diffstat (limited to 'test/integration')
11 files changed, 328 insertions, 0 deletions
diff --git a/test/integration/targets/ios_lag_interfaces/defaults/main.yaml b/test/integration/targets/ios_lag_interfaces/defaults/main.yaml new file mode 100644 index 0000000000..164afead28 --- /dev/null +++ b/test/integration/targets/ios_lag_interfaces/defaults/main.yaml @@ -0,0 +1,3 @@ +--- +testcase: "[^_].*" +test_items: [] diff --git a/test/integration/targets/ios_lag_interfaces/meta/main.yaml b/test/integration/targets/ios_lag_interfaces/meta/main.yaml new file mode 100644 index 0000000000..32cf5dda7e --- /dev/null +++ b/test/integration/targets/ios_lag_interfaces/meta/main.yaml @@ -0,0 +1 @@ +dependencies: [] diff --git a/test/integration/targets/ios_lag_interfaces/tasks/cli.yaml b/test/integration/targets/ios_lag_interfaces/tasks/cli.yaml new file mode 100644 index 0000000000..55d0413040 --- /dev/null +++ b/test/integration/targets/ios_lag_interfaces/tasks/cli.yaml @@ -0,0 +1,24 @@ +--- +- name: Collect all cli test cases + find: + paths: "{{ role_path }}/tests/cli" + patterns: "{{ testcase }}.yaml" + use_regex: true + register: test_cases + delegate_to: localhost + +- name: Set test_items + set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + delegate_to: localhost + +- name: Get the IOS version + ios_facts: + gather_subset: all + +- name: Run test case (connection=network_cli) + include: "{{ test_case_to_run }}" + vars: + ansible_connection: network_cli + with_items: "{{ test_items }}" + loop_control: + loop_var: test_case_to_run diff --git a/test/integration/targets/ios_lag_interfaces/tasks/main.yaml b/test/integration/targets/ios_lag_interfaces/tasks/main.yaml new file mode 100644 index 0000000000..415c99d8b1 --- /dev/null +++ b/test/integration/targets/ios_lag_interfaces/tasks/main.yaml @@ -0,0 +1,2 @@ +--- +- { include: cli.yaml, tags: ['cli'] } diff --git a/test/integration/targets/ios_lag_interfaces/tests/cli/_populate_config.yaml b/test/integration/targets/ios_lag_interfaces/tests/cli/_populate_config.yaml new file mode 100644 index 0000000000..6a3f2f8ca1 --- /dev/null +++ b/test/integration/targets/ios_lag_interfaces/tests/cli/_populate_config.yaml @@ -0,0 +1,11 @@ +--- +- name: Populate Config + cli_config: + config: "{{ lines }}" + vars: + lines: | + interface GigabitEthernet 0/1 + channel-group 1 mode active + interface GigabitEthernet 0/2 + channel-group 1 mode passive + when: ansible_net_version != "15.6(2)T" diff --git a/test/integration/targets/ios_lag_interfaces/tests/cli/_remove_config.yaml b/test/integration/targets/ios_lag_interfaces/tests/cli/_remove_config.yaml new file mode 100644 index 0000000000..3a57969291 --- /dev/null +++ b/test/integration/targets/ios_lag_interfaces/tests/cli/_remove_config.yaml @@ -0,0 +1,11 @@ +--- +- name: Remove Config + cli_config: + config: "{{ lines }}" + vars: + lines: | + interface GigabitEthernet 0/1 + no channel-group + interface GigabitEthernet 0/2 + no channel-group + when: ansible_net_version != "15.6(2)T" diff --git a/test/integration/targets/ios_lag_interfaces/tests/cli/deleted.yaml b/test/integration/targets/ios_lag_interfaces/tests/cli/deleted.yaml new file mode 100644 index 0000000000..01429d3d2a --- /dev/null +++ b/test/integration/targets/ios_lag_interfaces/tests/cli/deleted.yaml @@ -0,0 +1,41 @@ +--- +- debug: + msg: "Start Deleted integration state for ios_lag_interfaces ansible_connection={{ ansible_connection }}" + +- include_tasks: _remove_config.yaml + +- include_tasks: _populate_config.yaml + +- block: + - name: Delete attributes of all configured interfaces + ios_lag_interfaces: &deleted + state: deleted + register: result + + - name: Assert that correct set of commands were generated + assert: + that: + - "{{ deleted['commands'] | symmetric_difference(result['commands']) | length == 0 }}" + + - name: Assert that before dicts are correctly generated + assert: + that: + - "{{ deleted['before'] | symmetric_difference(result['before']) | length == 0 }}" + + - name: Assert that after dict is correctly generated + assert: + that: + - "{{ deleted['after'] | symmetric_difference(result['after']) | length == 0 }}" + + - name: Delete attributes of all configured interfaces (IDEMPOTENT) + ios_lag_interfaces: *deleted + register: result + + - name: Assert that the previous task was idempotent + assert: + that: + - "result.changed == false" + when: ansible_net_version != "15.6(2)T" + + always: + - include_tasks: _remove_config.yaml diff --git a/test/integration/targets/ios_lag_interfaces/tests/cli/merged.yaml b/test/integration/targets/ios_lag_interfaces/tests/cli/merged.yaml new file mode 100644 index 0000000000..07ade884b7 --- /dev/null +++ b/test/integration/targets/ios_lag_interfaces/tests/cli/merged.yaml @@ -0,0 +1,46 @@ +--- +- debug: + msg: "START Merged ios_lag_interfaces state for integration tests on connection={{ ansible_connection }}" + +- include_tasks: _remove_config.yaml + +- block: + - name: Merge provided configuration with device configuration + ios_lag_interfaces: &merged + config: + - name: Port-channel1 + members: + - member: GigabitEthernet0/1 + mode: active + - member: GigabitEthernet0/2 + mode: passive + state: merged + register: result + + - name: Assert that correct set of commands were generated + assert: + that: + - "{{ merged['commands'] | symmetric_difference(result['commands']) | length == 0 }}" + + - name: Assert that before dicts are correctly generated + assert: + that: + - "{{ merged['before'] | symmetric_difference(result['before']) | length == 0 }}" + + - name: Assert that after dict is correctly generated + assert: + that: + - "{{ merged['after'] | symmetric_difference(result['after']) | length == 0 }}" + + - name: Merge provided configuration with device configuration (IDEMPOTENT) + ios_lag_interfaces: *merged + register: result + + - name: Assert that the previous task was idempotent + assert: + that: + - "result['changed'] == false" + when: ansible_net_version != "15.6(2)T" + + always: + - include_tasks: _remove_config.yaml diff --git a/test/integration/targets/ios_lag_interfaces/tests/cli/overridden.yaml b/test/integration/targets/ios_lag_interfaces/tests/cli/overridden.yaml new file mode 100644 index 0000000000..03415b97bc --- /dev/null +++ b/test/integration/targets/ios_lag_interfaces/tests/cli/overridden.yaml @@ -0,0 +1,46 @@ +--- +- debug: + msg: "START Overridden ios_lag_interfaces state for integration tests on connection={{ ansible_connection }}" + +- include_tasks: _remove_config.yaml + +- include_tasks: _populate_config.yaml + +- block: + - name: Override device configuration of all interfaces with provided configuration + ios_lag_interfaces: &overridden + config: + - name: Port-channel10 + members: + - member: GigabitEthernet0/2 + mode: passive + state: overridden + register: result + + - name: Assert that correct set of commands were generated + assert: + that: + - "{{ overridden['commands'] | symmetric_difference(result['commands']) | length == 0 }}" + + - name: Assert that before dicts are correctly generated + assert: + that: + - "{{ overridden['before'] | symmetric_difference(result['before']) | length == 0 }}" + + - name: Assert that after dict is correctly generated + assert: + that: + - "{{ overridden['after'] | symmetric_difference(result['after']) | length == 0 }}" + + - name: Override device configuration of all interfaces with provided configuration (IDEMPOTENT) + ios_lag_interfaces: *overridden + register: result + + - name: Assert that task was idempotent + assert: + that: + - "result['changed'] == false" + when: ansible_net_version != "15.6(2)T" + + always: + - include_tasks: _remove_config.yaml diff --git a/test/integration/targets/ios_lag_interfaces/tests/cli/replaced.yaml b/test/integration/targets/ios_lag_interfaces/tests/cli/replaced.yaml new file mode 100644 index 0000000000..26ec314e31 --- /dev/null +++ b/test/integration/targets/ios_lag_interfaces/tests/cli/replaced.yaml @@ -0,0 +1,50 @@ +--- +- debug: + msg: "START Replaced ios_lag_interfaces state for integration tests on connection={{ ansible_connection }}" + +- include_tasks: _remove_config.yaml + +- include_tasks: _populate_config.yaml + +- block: + - name: Replaces device configuration of listed interfaces with provided configuration + ios_lag_interfaces: &replaced + config: + - name: Port-channel2 + members: + - member: GigabitEthernet0/1 + mode: active + - name: Port-channel40 + members: + - member: GigabitEthernet0/2 + mode: active + state: replaced + register: result + + - name: Assert that correct set of commands were generated + assert: + that: + - "{{ replaced['commands'] | symmetric_difference(result['commands']) | length == 0 }}" + + - name: Assert that before dicts are correctly generated + assert: + that: + - "{{ replaced['before'] | symmetric_difference(result['before']) | length == 0 }}" + + - name: Assert that after dict is correctly generated + assert: + that: + - "{{ replaced['after'] | symmetric_difference(result['after']) | length == 0 }}" + + - name: Replaces device configuration of listed interfaces with provided configuration (IDEMPOTENT) + ios_lag_interfaces: *replaced + register: result + + - name: Assert that task was idempotent + assert: + that: + - "result['changed'] == false" + when: ansible_net_version != "15.6(2)T" + + always: + - include_tasks: _remove_config.yaml diff --git a/test/integration/targets/ios_lag_interfaces/vars/main.yaml b/test/integration/targets/ios_lag_interfaces/vars/main.yaml new file mode 100644 index 0000000000..e97107f1dd --- /dev/null +++ b/test/integration/targets/ios_lag_interfaces/vars/main.yaml @@ -0,0 +1,93 @@ +--- +merged: + before: + - name: GigabitEthernet0/0 + - name: GigabitEthernet0/1 + - name: GigabitEthernet0/2 + + commands: + - "interface GigabitEthernet0/1" + - "channel-group 1 mode active" + - "interface GigabitEthernet0/2" + - "channel-group 1 mode passive" + + after: + - name: GigabitEthernet0/0 + - members: + - member: GigabitEthernet0/1 + mode: active + - member: GigabitEthernet0/2 + mode: passive + name: Port-channel1 + +replaced: + before: + - name: GigabitEthernet0/0 + - members: + - member: GigabitEthernet0/1 + mode: active + - member: GigabitEthernet0/2 + mode: passive + name: Port-channel1 + + commands: + - "interface GigabitEthernet0/1" + - "channel-group 2 mode active" + - "interface GigabitEthernet0/2" + - "channel-group 40 mode active" + + after: + - name: GigabitEthernet0/0 + - members: + - member: GigabitEthernet0/1 + mode: active + name: Port-channel2 + - members: + - member: GigabitEthernet0/2 + mode: active + name: Port-channel40 + +overridden: + before: + - name: GigabitEthernet0/0 + - members: + - member: GigabitEthernet0/1 + mode: active + - member: GigabitEthernet0/2 + mode: passive + name: Port-channel1 + + commands: + - "interface GigabitEthernet0/1" + - "no channel-group" + - "interface GigabitEthernet0/2" + - "channel-group 10 mode passive" + + after: + - name: GigabitEthernet0/0 + - name: GigabitEthernet0/1 + - members: + - member: GigabitEthernet0/2 + mode: passive + name: Port-channel10 + +deleted: + before: + - name: GigabitEthernet0/0 + - members: + - member: GigabitEthernet0/1 + mode: active + - member: GigabitEthernet0/2 + mode: passive + name: Port-channel1 + + commands: + - "interface GigabitEthernet0/1" + - "no channel-group" + - "interface GigabitEthernet0/2" + - "no channel-group" + + after: + - name: GigabitEthernet0/0 + - name: GigabitEthernet0/1 + - name: GigabitEthernet0/2 |