Deprecate nxos_ip_interface and Add nxos_l3_interface DI module (#33866)

* Deprecate nxos_ip_interface module

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

* Add nxos_l3_interface DI module

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

* Add integration test

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

* pep8 fixes

* Add nxapi cli test

* Improve complexity

* manage layer3 interface

* fix unit test
This commit is contained in:
Trishna Guha
2017-12-20 11:07:23 +05:30
committed by GitHub
parent 27be2a0f5a
commit 3cce8dfafd
14 changed files with 523 additions and 8 deletions

View File

@@ -554,6 +554,15 @@
failed_modules: "{{ failed_modules }} + [ 'nxos_snmp_host' ]"
test_failed: true
- block:
- include_role:
name: nxos_l3_interface
when: "limit_to in ['*', 'nxos_l3_interface']"
rescue:
- set_fact:
failed_modules: "{{ failed_modules }} + [ 'nxos_l3_interface' ]"
test_failed: true
###########
- debug: var=failed_modules
when: test_failed

View File

@@ -0,0 +1,2 @@
---
testcase: "*"

View File

@@ -0,0 +1,2 @@
dependencies:
- prepare_nxos_tests

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,107 @@
---
- debug: msg="START TRANSPORT:CLI nxos_l3_interface sanity test"
# Select interface for test
- set_fact: testint2="{{ nxos_int2 }}"
- set_fact: testint3="{{ nxos_int3 }}"
- name: Setup - remove address from interface prior to testing(Part1)
nxos_config:
lines:
- no ip address 192.168.22.1/24
parents: no switchport
before: "interface {{ testint2 }}"
provider: "{{ cli }}"
ignore_errors: yes
- name: Setup - remove address from interface prior to testing(Part2)
nxos_config:
lines:
- no ip address 192.168.20.1/24
- no ipv6 address 33:db::2/8
parents: no switchport
before: "interface {{ testint3 }}"
provider: "{{ cli }}"
ignore_errors: yes
- name: Configure ipv4 address to interface
nxos_l3_interface: &conf
name: "{{ testint2 }}"
ipv4: 192.168.22.1/24
provider: "{{ cli }}"
register: result
- assert:
that:
- "result.changed == true"
- name: Configure ipv4 address to interface(Idempotence)
nxos_l3_interface: *conf
register: result
- assert:
that:
- "result.changed == false"
- name: Remove ipv4 address from interface
nxos_l3_interface: &rm
name: "{{ testint2 }}"
ipv4: 192.168.22.1/24
provider: "{{ cli }}"
state: absent
register: result
- assert:
that:
- "result.changed == true"
- name: Remove ipv4 address from interface(Idempotence)
nxos_l3_interface: *rm
register: result
- assert:
that:
- "result.changed == false"
- name: Configure address to interfaces aggregate
nxos_l3_interface: &conf_agg
aggregate:
- { name: "{{ testint2 }}", ipv4: 192.168.22.1/24 }
- { name: "{{ testint3 }}", ipv4: 192.168.20.1/24, ipv6: "33:db::2/8" }
provider: "{{ cli }}"
register: result
- assert:
that:
- "result.changed == true"
- name: Configure address to interfaces aggregate(Idempotence)
nxos_l3_interface: *conf_agg
register: result
- assert:
that:
- "result.changed == false"
- name: Remove address from interfaces aggregate
nxos_l3_interface: &rm_agg
aggregate:
- { name: "{{ testint2 }}", ipv4: 192.168.22.1/24 }
- { name: "{{ testint3 }}", ipv4: 192.168.20.1/24, ipv6: "33:db::2/8" }
provider: "{{ cli }}"
state: absent
register: result
- assert:
that:
- "result.changed == true"
- name: Remove address from interfaces aggregate(Idempotence)
nxos_l3_interface: *rm_agg
register: result
- assert:
that:
- "result.changed == false"
- debug: msg="END TRANSPORT:CLI nxos_l3_interface sanity test"

View File

@@ -0,0 +1,97 @@
---
- debug: msg="START TRANSPORT:NXAPI nxos_l3_interface sanity test"
# Select interface for test
- set_fact: testint2="{{ nxos_int2 }}"
- set_fact: testint3="{{ nxos_int3 }}"
- name: Setup - Remove address from interfaces aggregate
nxos_l3_interface:
aggregate:
- { name: "{{ testint2 }}", ipv4: 192.168.22.1/24 }
- { name: "{{ testint3 }}", ipv4: 192.168.20.1/24, ipv6: "33:db::2/8" }
provider: "{{ nxapi }}"
state: absent
ignore_errors: yes
- name: Configure ipv4 address to interface
nxos_l3_interface: &conf
name: "{{ testint2 }}"
ipv4: 192.168.22.1/24
provider: "{{ nxapi }}"
register: result
- assert:
that:
- "result.changed == true"
- name: Configure ipv4 address to interface(Idempotence)
nxos_l3_interface: *conf
register: result
- assert:
that:
- "result.changed == false"
- name: Remove ipv4 address from interface
nxos_l3_interface: &rm
name: "{{ testint2 }}"
ipv4: 192.168.22.1/24
provider: "{{ nxapi }}"
state: absent
register: result
- assert:
that:
- "result.changed == true"
- name: Remove ipv4 address from interface(Idempotence)
nxos_l3_interface: *rm
register: result
- assert:
that:
- "result.changed == false"
- name: Configure address to interfaces aggregate
nxos_l3_interface: &conf_agg
aggregate:
- { name: "{{ testint2 }}", ipv4: 192.168.22.1/24 }
- { name: "{{ testint3 }}", ipv4: 192.168.20.1/24, ipv6: "33:db::2/8" }
provider: "{{ nxapi }}"
register: result
- assert:
that:
- "result.changed == true"
- name: Configure address to interfaces aggregate(Idempotence)
nxos_l3_interface: *conf_agg
register: result
- assert:
that:
- "result.changed == false"
- name: Remove address from interfaces aggregate
nxos_l3_interface: &rm_agg
aggregate:
- { name: "{{ testint2 }}", ipv4: 192.168.22.1/24 }
- { name: "{{ testint3 }}", ipv4: 192.168.20.1/24, ipv6: "33:db::2/8" }
provider: "{{ nxapi }}"
state: absent
register: result
- assert:
that:
- "result.changed == true"
- name: Remove address from interfaces aggregate(Idempotence)
nxos_l3_interface: *rm_agg
register: result
- assert:
that:
- "result.changed == false"
- debug: msg="END TRANSPORT:NXAPI nxos_l3_interface sanity test"

View File

@@ -20,29 +20,29 @@ from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
from ansible.compat.tests.mock import patch
from ansible.modules.network.nxos import nxos_ip_interface
from ansible.modules.network.nxos import _nxos_ip_interface
from .nxos_module import TestNxosModule, load_fixture, set_module_args
class TestNxosIPInterfaceModule(TestNxosModule):
module = nxos_ip_interface
module = _nxos_ip_interface
def setUp(self):
super(TestNxosIPInterfaceModule, self).setUp()
self.mock_get_interface_mode = patch(
'ansible.modules.network.nxos.nxos_ip_interface.get_interface_mode')
'ansible.modules.network.nxos._nxos_ip_interface.get_interface_mode')
self.get_interface_mode = self.mock_get_interface_mode.start()
self.mock_send_show_command = patch(
'ansible.modules.network.nxos.nxos_ip_interface.send_show_command')
'ansible.modules.network.nxos._nxos_ip_interface.send_show_command')
self.send_show_command = self.mock_send_show_command.start()
self.mock_load_config = patch('ansible.modules.network.nxos.nxos_ip_interface.load_config')
self.mock_load_config = patch('ansible.modules.network.nxos._nxos_ip_interface.load_config')
self.load_config = self.mock_load_config.start()
self.mock_get_capabilities = patch('ansible.modules.network.nxos.nxos_ip_interface.get_capabilities')
self.mock_get_capabilities = patch('ansible.modules.network.nxos._nxos_ip_interface.get_capabilities')
self.get_capabilities = self.mock_get_capabilities.start()
self.get_capabilities.return_value = {'network_api': 'cliconf'}
@@ -55,7 +55,7 @@ class TestNxosIPInterfaceModule(TestNxosModule):
def load_fixtures(self, commands=None, device=''):
self.get_interface_mode.return_value = 'layer3'
self.send_show_command.return_value = [load_fixture('', 'nxos_ip_interface.cfg')]
self.send_show_command.return_value = [load_fixture('', '_nxos_ip_interface.cfg')]
self.load_config.return_value = None
def test_nxos_ip_interface_ip_present(self):