diff options
Diffstat (limited to 'test/units/modules')
652 files changed, 0 insertions, 82404 deletions
diff --git a/test/units/modules/cloud/cloudstack/test_cs_traffic_type.py b/test/units/modules/cloud/cloudstack/test_cs_traffic_type.py deleted file mode 100644 index d164b59661..0000000000 --- a/test/units/modules/cloud/cloudstack/test_cs_traffic_type.py +++ /dev/null @@ -1,137 +0,0 @@ -from __future__ import absolute_import, division, print_function -__metaclass__ = type - -import sys - -import pytest - -import units.compat.unittest as unittest -from units.compat.mock import MagicMock -from units.compat.unittest import TestCase -from units.modules.utils import set_module_args - - -# Exoscale's cs doesn't support Python 2.6 -pytestmark = [] -if sys.version_info[:2] != (2, 6): - from ansible.modules.cloud.cloudstack.cs_traffic_type import AnsibleCloudStackTrafficType, setup_module_object - from ansible.module_utils.cloudstack import HAS_LIB_CS - if not HAS_LIB_CS: - pytestmark.append(pytest.mark.skip('The cloudstack library, "cs", is needed to test cs_traffic_type')) -else: - pytestmark.append(pytest.mark.skip('Exoscale\'s cs doesn\'t support Python 2.6')) - - -EXISTING_TRAFFIC_TYPES_RESPONSE = { - "count": 3, - "traffictype": [ - { - "id": "9801cf73-5a73-4883-97e4-fa20c129226f", - "kvmnetworklabel": "cloudbr0", - "physicalnetworkid": "659c1840-9374-440d-a412-55ca360c9d3c", - "traffictype": "Management" - }, - { - "id": "28ed70b7-9a1f-41bf-94c3-53a9f22da8b6", - "kvmnetworklabel": "cloudbr0", - "physicalnetworkid": "659c1840-9374-440d-a412-55ca360c9d3c", - "traffictype": "Guest" - }, - { - "id": "9c05c802-84c0-4eda-8f0a-f681364ffb46", - "kvmnetworklabel": "cloudbr0", - "physicalnetworkid": "659c1840-9374-440d-a412-55ca360c9d3c", - "traffictype": "Storage" - } - ] -} - -VALID_LIST_NETWORKS_RESPONSE = { - "count": 1, - "physicalnetwork": [ - { - "broadcastdomainrange": "ZONE", - "id": "659c1840-9374-440d-a412-55ca360c9d3c", - "name": "eth1", - "state": "Enabled", - "vlan": "3900-4000", - "zoneid": "49acf813-a8dd-4da0-aa53-1d826d6003e7" - } - ] -} - -VALID_LIST_ZONES_RESPONSE = { - "count": 1, - "zone": [ - { - "allocationstate": "Enabled", - "dhcpprovider": "VirtualRouter", - "dns1": "8.8.8.8", - "dns2": "8.8.4.4", - "guestcidraddress": "10.10.0.0/16", - "id": "49acf813-a8dd-4da0-aa53-1d826d6003e7", - "internaldns1": "192.168.56.1", - "localstorageenabled": True, - "name": "DevCloud-01", - "networktype": "Advanced", - "securitygroupsenabled": False, - "tags": [], - "zonetoken": "df20d65a-c6c8-3880-9064-4f77de2291ef" - } - ] -} - - -base_module_args = { - "api_key": "api_key", - "api_secret": "very_secret_content", - "api_url": "http://localhost:8888/api/client", - "kvm_networklabel": "cloudbr0", - "physical_network": "eth1", - "poll_async": True, - "state": "present", - "traffic_type": "Guest", - "zone": "DevCloud-01" -} - - -class TestAnsibleCloudstackTraffiType(TestCase): - - def test_module_is_created_sensibly(self): - set_module_args(base_module_args) - module = setup_module_object() - assert module.params['traffic_type'] == 'Guest' - - def test_update_called_when_traffic_type_exists(self): - set_module_args(base_module_args) - module = setup_module_object() - actt = AnsibleCloudStackTrafficType(module) - actt.get_traffic_type = MagicMock(return_value=EXISTING_TRAFFIC_TYPES_RESPONSE['traffictype'][0]) - actt.update_traffic_type = MagicMock() - actt.present_traffic_type() - self.assertTrue(actt.update_traffic_type.called) - - def test_update_not_called_when_traffic_type_doesnt_exist(self): - set_module_args(base_module_args) - module = setup_module_object() - actt = AnsibleCloudStackTrafficType(module) - actt.get_traffic_type = MagicMock(return_value=None) - actt.update_traffic_type = MagicMock() - actt.add_traffic_type = MagicMock() - actt.present_traffic_type() - self.assertFalse(actt.update_traffic_type.called) - self.assertTrue(actt.add_traffic_type.called) - - def test_traffic_type_returned_if_exists(self): - set_module_args(base_module_args) - module = setup_module_object() - actt = AnsibleCloudStackTrafficType(module) - actt.get_physical_network = MagicMock(return_value=VALID_LIST_NETWORKS_RESPONSE['physicalnetwork'][0]) - actt.get_traffic_types = MagicMock(return_value=EXISTING_TRAFFIC_TYPES_RESPONSE) - tt = actt.present_traffic_type() - self.assertTrue(tt.get('kvmnetworklabel') == base_module_args['kvm_networklabel']) - self.assertTrue(tt.get('traffictype') == base_module_args['traffic_type']) - - -if __name__ == '__main__': - unittest.main() diff --git a/test/units/modules/cloud/docker/test_docker_container.py b/test/units/modules/cloud/docker/test_docker_container.py deleted file mode 100644 index a648ae8042..0000000000 --- a/test/units/modules/cloud/docker/test_docker_container.py +++ /dev/null @@ -1,22 +0,0 @@ -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import unittest - -from ansible.modules.cloud.docker.docker_container import TaskParameters - - -class TestTaskParameters(unittest.TestCase): - """Unit tests for TaskParameters.""" - - def test_parse_exposed_ports_tcp_udp(self): - """ - Ensure _parse_exposed_ports does not cancel ports with the same - number but different protocol. - """ - task_params = TaskParameters.__new__(TaskParameters) - task_params.exposed_ports = None - result = task_params._parse_exposed_ports([80, '443', '443/udp']) - self.assertTrue((80, 'tcp') in result) - self.assertTrue((443, 'tcp') in result) - self.assertTrue((443, 'udp') in result) diff --git a/test/units/modules/cloud/docker/test_docker_network.py b/test/units/modules/cloud/docker/test_docker_network.py deleted file mode 100644 index 5306506c11..0000000000 --- a/test/units/modules/cloud/docker/test_docker_network.py +++ /dev/null @@ -1,31 +0,0 @@ -"""Unit tests for docker_network.""" - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import pytest - -from ansible.modules.cloud.docker.docker_network import validate_cidr - - -@pytest.mark.parametrize("cidr,expected", [ - ('192.168.0.1/16', 'ipv4'), - ('192.168.0.1/24', 'ipv4'), - ('192.168.0.1/32', 'ipv4'), - ('fdd1:ac8c:0557:7ce2::/64', 'ipv6'), - ('fdd1:ac8c:0557:7ce2::/128', 'ipv6'), -]) -def test_validate_cidr_positives(cidr, expected): - assert validate_cidr(cidr) == expected - - -@pytest.mark.parametrize("cidr", [ - '192.168.0.1', - '192.168.0.1/34', - '192.168.0.1/asd', - 'fdd1:ac8c:0557:7ce2::', -]) -def test_validate_cidr_negatives(cidr): - with pytest.raises(ValueError) as e: - validate_cidr(cidr) - assert '"{0}" is not a valid CIDR'.format(cidr) == str(e.value) diff --git a/test/units/modules/cloud/docker/test_docker_swarm_service.py b/test/units/modules/cloud/docker/test_docker_swarm_service.py deleted file mode 100644 index 1f2eddac77..0000000000 --- a/test/units/modules/cloud/docker/test_docker_swarm_service.py +++ /dev/null @@ -1,510 +0,0 @@ -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import pytest - - -class APIErrorMock(Exception): - def __init__(self, message, response=None, explanation=None): - self.message = message - self.response = response - self.explanation = explanation - - -@pytest.fixture(autouse=True) -def docker_module_mock(mocker): - docker_module_mock = mocker.MagicMock() - docker_utils_module_mock = mocker.MagicMock() - docker_errors_module_mock = mocker.MagicMock() - docker_errors_module_mock.APIError = APIErrorMock - mock_modules = { - 'docker': docker_module_mock, - 'docker.utils': docker_utils_module_mock, - 'docker.errors': docker_errors_module_mock, - } - return mocker.patch.dict('sys.modules', **mock_modules) - - -@pytest.fixture(autouse=True) -def docker_swarm_service(): - from ansible.modules.cloud.docker import docker_swarm_service - - return docker_swarm_service - - -def test_retry_on_out_of_sequence_error(mocker, docker_swarm_service): - run_mock = mocker.MagicMock( - side_effect=APIErrorMock( - message='', - response=None, - explanation='rpc error: code = Unknown desc = update out of sequence', - ) - ) - manager = docker_swarm_service.DockerServiceManager(client=None) - manager.run = run_mock - with pytest.raises(APIErrorMock): - manager.run_safe() - assert run_mock.call_count == 3 - - -def test_no_retry_on_general_api_error(mocker, docker_swarm_service): - run_mock = mocker.MagicMock( - side_effect=APIErrorMock(message='', response=None, explanation='some error') - ) - manager = docker_swarm_service.DockerServiceManager(client=None) - manager.run = run_mock - with pytest.raises(APIErrorMock): - manager.run_safe() - assert run_mock.call_count == 1 - - -def test_get_docker_environment(mocker, docker_swarm_service): - env_file_result = {'TEST1': 'A', 'TEST2': 'B', 'TEST3': 'C'} - env_dict = {'TEST3': 'CC', 'TEST4': 'D'} - env_string = "TEST3=CC,TEST4=D" - - env_list = ['TEST3=CC', 'TEST4=D'] - expected_result = sorted(['TEST1=A', 'TEST2=B', 'TEST3=CC', 'TEST4=D']) - mocker.patch.object( - docker_swarm_service, 'parse_env_file', return_value=env_file_result - ) - mocker.patch.object( - docker_swarm_service, - 'format_environment', - side_effect=lambda d: ['{0}={1}'.format(key, value) for key, value in d.items()], - ) - # Test with env dict and file - result = docker_swarm_service.get_docker_environment( - env_dict, env_files=['dummypath'] - ) - assert result == expected_result - # Test with env list and file - result = docker_swarm_service.get_docker_environment( - env_list, - env_files=['dummypath'] - ) - assert result == expected_result - # Test with env string and file - result = docker_swarm_service.get_docker_environment( - env_string, env_files=['dummypath'] - ) - assert result == expected_result - - assert result == expected_result - # Test with empty env - result = docker_swarm_service.get_docker_environment( - [], env_files=None - ) - assert result == [] - # Test with empty env_files - result = docker_swarm_service.get_docker_environment( - None, env_files=[] - ) - assert result == [] - - -def test_get_nanoseconds_from_raw_option(docker_swarm_service): - value = docker_swarm_service.get_nanoseconds_from_raw_option('test', None) - assert value is None - - value = docker_swarm_service.get_nanoseconds_from_raw_option('test', '1m30s535ms') - assert value == 90535000000 - - value = docker_swarm_service.get_nanoseconds_from_raw_option('test', 10000000000) - assert value == 10000000000 - - with pytest.raises(ValueError): - docker_swarm_service.get_nanoseconds_from_raw_option('test', []) - - -def test_has_dict_changed(docker_swarm_service): - assert not docker_swarm_service.has_dict_changed( - {"a": 1}, - {"a": 1}, - ) - assert not docker_swarm_service.has_dict_changed( - {"a": 1}, - {"a": 1, "b": 2} - ) - assert docker_swarm_service.has_dict_changed( - {"a": 1}, - {"a": 2, "b": 2} - ) - assert docker_swarm_service.has_dict_changed( - {"a": 1, "b": 1}, - {"a": 1} - ) - assert not docker_swarm_service.has_dict_changed( - None, - {"a": 2, "b": 2} - ) - assert docker_swarm_service.has_dict_changed( - {}, - {"a": 2, "b": 2} - ) - assert docker_swarm_service.has_dict_changed( - {"a": 1}, - {} - ) - assert docker_swarm_service.has_dict_changed( - {"a": 1}, - None - ) - assert not docker_swarm_service.has_dict_changed( - {}, - {} - ) - assert not docker_swarm_service.has_dict_changed( - None, - None - ) - assert not docker_swarm_service.has_dict_changed( - {}, - None - ) - assert not docker_swarm_service.has_dict_changed( - None, - {} - ) - - -def test_has_list_changed(docker_swarm_service): - - # List comparisons without dictionaries - # I could improve the indenting, but pycodestyle wants this instead - assert not docker_swarm_service.has_list_changed(None, None) - assert not docker_swarm_service.has_list_changed(None, []) - assert not docker_swarm_service.has_list_changed(None, [1, 2]) - - assert not docker_swarm_service.has_list_changed([], None) - assert not docker_swarm_service.has_list_changed([], []) - assert docker_swarm_service.has_list_changed([], [1, 2]) - - assert docker_swarm_service.has_list_changed([1, 2], None) - assert docker_swarm_service.has_list_changed([1, 2], []) - - assert docker_swarm_service.has_list_changed([1, 2, 3], [1, 2]) - assert docker_swarm_service.has_list_changed([1, 2], [1, 2, 3]) - - # Check list sorting - assert not docker_swarm_service.has_list_changed([1, 2], [2, 1]) - assert docker_swarm_service.has_list_changed( - [1, 2], - [2, 1], - sort_lists=False - ) - - # Check type matching - assert docker_swarm_service.has_list_changed([None, 1], [2, 1]) - assert docker_swarm_service.has_list_changed([2, 1], [None, 1]) - assert docker_swarm_service.has_list_changed( - "command --with args", - ['command', '--with', 'args'] - ) - assert docker_swarm_service.has_list_changed( - ['sleep', '3400'], - [u'sleep', u'3600'], - sort_lists=False - ) - - # List comparisons with dictionaries - assert not docker_swarm_service.has_list_changed( - [{'a': 1}], - [{'a': 1}], - sort_key='a' - ) - - assert not docker_swarm_service.has_list_changed( - [{'a': 1}, {'a': 2}], - [{'a': 1}, {'a': 2}], - sort_key='a' - ) - - with pytest.raises(Exception): - docker_swarm_service.has_list_changed( - [{'a': 1}, {'a': 2}], - [{'a': 1}, {'a': 2}] - ) - - # List sort checking with sort key - assert not docker_swarm_service.has_list_changed( - [{'a': 1}, {'a': 2}], - [{'a': 2}, {'a': 1}], - sort_key='a' - ) - assert docker_swarm_service.has_list_changed( - [{'a': 1}, {'a': 2}], - [{'a': 2}, {'a': 1}], - sort_lists=False - ) - - assert docker_swarm_service.has_list_changed( - [{'a': 1}, {'a': 2}, {'a': 3}], - [{'a': 2}, {'a': 1}], - sort_key='a' - ) - assert docker_swarm_service.has_list_changed( - [{'a': 1}, {'a': 2}], - [{'a': 1}, {'a': 2}, {'a': 3}], - sort_lists=False - ) - - # Additional dictionary elements - assert not docker_swarm_service.has_list_changed( - [ - {"src": 1, "dst": 2}, - {"src": 1, "dst": 2, "protocol": "udp"}, - ], - [ - {"src": 1, "dst": 2, "protocol": "tcp"}, - {"src": 1, "dst": 2, "protocol": "udp"}, - ], - sort_key='dst' - ) - assert not docker_swarm_service.has_list_changed( - [ - {"src": 1, "dst": 2, "protocol": "udp"}, - {"src": 1, "dst": 3, "protocol": "tcp"}, - ], - [ - {"src": 1, "dst": 2, "protocol": "udp"}, - {"src": 1, "dst": 3, "protocol": "tcp"}, - ], - sort_key='dst' - ) - assert docker_swarm_service.has_list_changed( - [ - {"src": 1, "dst": 2, "protocol": "udp"}, - {"src": 1, "dst": 2}, - {"src": 3, "dst": 4}, - ], - [ - {"src": 1, "dst": 3, "protocol": "udp"}, - {"src": 1, "dst": 2, "protocol": "tcp"}, - {"src": 3, "dst": 4, "protocol": "tcp"}, - ], - sort_key='dst' - ) - assert docker_swarm_service.has_list_changed( - [ - {"src": 1, "dst": 3, "protocol": "tcp"}, - {"src": 1, "dst": 2, "protocol": "udp"}, - ], - [ - {"src": 1, "dst": 2, "protocol": "tcp"}, - {"src": 1, "dst": 2, "protocol": "udp"}, - ], - sort_key='dst' - ) - assert docker_swarm_service.has_list_changed( - [ - {"src": 1, "dst": 2, "protocol": "udp"}, - {"src": 1, "dst": 2, "protocol": "tcp", "extra": {"test": "foo"}}, - ], - [ - {"src": 1, "dst": 2, "protocol": "udp"}, - {"src": 1, "dst": 2, "protocol": "tcp"}, - ], - sort_key='dst' - ) - assert not docker_swarm_service.has_list_changed( - [{'id': '123', 'aliases': []}], - [{'id': '123'}], - sort_key='id' - ) - - -def test_have_networks_changed(docker_swarm_service): - assert not docker_swarm_service.have_networks_changed( - None, - None - ) - - assert not docker_swarm_service.have_networks_changed( - [], - None - ) - - assert not docker_swarm_service.have_networks_changed( - [{'id': 1}], - [{'id': 1}] - ) - - assert docker_swarm_service.have_networks_changed( - [{'id': 1}], - [{'id': 1}, {'id': 2}] - ) - - assert not docker_swarm_service.have_networks_changed( - [{'id': 1}, {'id': 2}], - [{'id': 1}, {'id': 2}] - ) - - assert not docker_swarm_service.have_networks_changed( - [{'id': 1}, {'id': 2}], - [{'id': 2}, {'id': 1}] - ) - - assert not docker_swarm_service.have_networks_changed( - [ - {'id': 1}, - {'id': 2, 'aliases': []} - ], - [ - {'id': 1}, - {'id': 2} - ] - ) - - assert docker_swarm_service.have_networks_changed( - [ - {'id': 1}, - {'id': 2, 'aliases': ['alias1']} - ], - [ - {'id': 1}, - {'id': 2} - ] - ) - - assert docker_swarm_service.have_networks_changed( - [ - {'id': 1}, - {'id': 2, 'aliases': ['alias1', 'alias2']} - ], - [ - {'id': 1}, - {'id': 2, 'aliases': ['alias1']} - ] - ) - - assert not docker_swarm_service.have_networks_changed( - [ - {'id': 1}, - {'id': 2, 'aliases': ['alias1', 'alias2']} - ], - [ - {'id': 1}, - {'id': 2, 'aliases': ['alias1', 'alias2']} - ] - ) - - assert not docker_swarm_service.have_networks_changed( - [ - {'id': 1}, - {'id': 2, 'aliases': ['alias1', 'alias2']} - ], - [ - {'id': 1}, - {'id': 2, 'aliases': ['alias2', 'alias1']} - ] - ) - - assert not docker_swarm_service.have_networks_changed( - [ - {'id': 1, 'options': {}}, - {'id': 2, 'aliases': ['alias1', 'alias2']}], - [ - {'id': 1}, - {'id': 2, 'aliases': ['alias2', 'alias1']} - ] - ) - - assert not docker_swarm_service.have_networks_changed( - [ - {'id': 1, 'options': {'option1': 'value1'}}, - {'id': 2, 'aliases': ['alias1', 'alias2']}], - [ - {'id': 1, 'options': {'option1': 'value1'}}, - {'id': 2, 'aliases': ['alias2', 'alias1']} - ] - ) - - assert docker_swarm_service.have_networks_changed( - [ - {'id': 1, 'options': {'option1': 'value1'}}, - {'id': 2, 'aliases': ['alias1', 'alias2']}], - [ - {'id': 1, 'options': {'option1': 'value2'}}, - {'id': 2, 'aliases': ['alias2', 'alias1']} - ] - ) - - -def test_get_docker_networks(docker_swarm_service): - network_names = [ - 'network_1', - 'network_2', - 'network_3', - 'network_4', - ] - networks = [ - network_names[0], - {'name': network_names[1]}, - {'name': network_names[2], 'aliases': ['networkalias1']}, - {'name': network_names[3], 'aliases': ['networkalias2'], 'options': {'foo': 'bar'}}, - ] - network_ids = { - network_names[0]: '1', - network_names[1]: '2', - network_names[2]: '3', - network_names[3]: '4', - } - parsed_networks = docker_swarm_service.get_docker_networks( - networks, - network_ids - ) - assert len(parsed_networks) == 4 - for i, network in enumerate(parsed_networks): - assert 'name' not in network - assert 'id' in network - expected_name = network_names[i] - assert network['id'] == network_ids[expected_name] - if i == 2: - assert network['aliases'] == ['networkalias1'] - if i == 3: - assert network['aliases'] == ['networkalias2'] - if i == 3: - assert 'foo' in network['options'] - # Test missing name - with pytest.raises(TypeError): - docker_swarm_service.get_docker_networks([{'invalid': 'err'}], {'err': 1}) - # test for invalid aliases type - with pytest.raises(TypeError): - docker_swarm_service.get_docker_networks( - [{'name': 'test', 'aliases': 1}], - {'test': 1} - ) - # Test invalid aliases elements - with pytest.raises(TypeError): - docker_swarm_service.get_docker_networks( - [{'name': 'test', 'aliases': [1]}], - {'test': 1} - ) - # Test for invalid options type - with pytest.raises(TypeError): - docker_swarm_service.get_docker_networks( - [{'name': 'test', 'options': 1}], - {'test': 1} - ) - # Test for invalid networks type - with pytest.raises(TypeError): - docker_swarm_service.get_docker_networks( - 1, - {'test': 1} - ) - # Test for non existing networks - with pytest.raises(ValueError): - docker_swarm_service.get_docker_networks( - [{'name': 'idontexist'}], - {'test': 1} - ) - # Test empty values - assert docker_swarm_service.get_docker_networks([], {}) == [] - assert docker_swarm_service.get_docker_networks(None, {}) is None - # Test invalid options - with pytest.raises(TypeError): - docker_swarm_service.get_docker_networks( - [{'name': 'test', 'nonexisting_option': 'foo'}], - {'test': '1'} - ) diff --git a/test/units/modules/cloud/docker/test_docker_volume.py b/test/units/modules/cloud/docker/test_docker_volume.py deleted file mode 100644 index e291da1237..0000000000 --- a/test/units/modules/cloud/docker/test_docker_volume.py +++ /dev/null @@ -1,36 +0,0 @@ -# Copyright (c) 2018 Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json - -import pytest - -from ansible.modules.cloud.docker import docker_volume -from ansible.module_utils.docker import common - -pytestmark = pytest.mark.usefixtures('patch_ansible_module') - -TESTCASE_DOCKER_VOLUME = [ - { - 'name': 'daemon_config', - 'state': 'present' - } -] - - -@pytest.mark.parametrize('patch_ansible_module', TESTCASE_DOCKER_VOLUME, indirect=['patch_ansible_module']) -def test_create_volume_on_invalid_docker_version(mocker, capfd): - mocker.patch.object(common, 'HAS_DOCKER_PY', True) - mocker.patch.object(common, 'docker_version', '1.8.0') - - with pytest.raises(SystemExit): - docker_volume.main() - - out, dummy = capfd.readouterr() - results = json.loads(out) - assert results['failed'] - assert 'Error: Docker SDK for Python version is 1.8.0 ' in results['msg'] - assert 'Minimum version required is 1.10.0.' in results['msg'] diff --git a/test/units/modules/cloud/google/test_gce_tag.py b/test/units/modules/cloud/google/test_gce_tag.py deleted file mode 100644 index fd0bfd5674..0000000000 --- a/test/units/modules/cloud/google/test_gce_tag.py +++ /dev/null @@ -1,61 +0,0 @@ -import unittest - -from ansible.modules.cloud.google.gce_tag import _get_changed_items, _intersect_items, _union_items - - -class TestGCETag(unittest.TestCase): - """Unit tests for gce_tag module.""" - - def test_union_items(self): - """ - Combine items in both lists - removing duplicates. - """ - listA = [1, 2, 3, 4, 5, 8, 9] - listB = [1, 2, 3, 4, 5, 6, 7] - want = [1, 2, 3, 4, 5, 6, 7, 8, 9] - got = _union_items(listA, listB) - self.assertEqual(want, got) - - def test_intersect_items(self): - """ - All unique items from either list. - """ - listA = [1, 2, 3, 4, 5, 8, 9] - listB = [1, 2, 3, 4, 5, 6, 7] - want = [1, 2, 3, 4, 5] - got = _intersect_items(listA, listB) - self.assertEqual(want, got) - - # tags removed - new_tags = ['one', 'two'] - existing_tags = ['two'] - want = ['two'] # only remove the tag that was present - got = _intersect_items(existing_tags, new_tags) - self.assertEqual(want, got) - - def test_get_changed_items(self): - """ - All the items from left list that don't match - any item from the right list. - """ - listA = [1, 2, 3, 4, 5, 8, 9] - listB = [1, 2, 3, 4, 5, 6, 7] - want = [8, 9] - got = _get_changed_items(listA, listB) - self.assertEqual(want, got) - - # simulate new tags added - tags_to_add = ['one', 'two'] - existing_tags = ['two'] - want = ['one'] - got = _get_changed_items(tags_to_add, existing_tags) - self.assertEqual(want, got) - - # simulate removing tags - # specifying one tag on right that doesn't exist - tags_to_remove = ['one', 'two'] - existing_tags = ['two', 'three'] - want = ['three'] - got = _get_changed_items(existing_tags, tags_to_remove) - self.assertEqual(want, got) diff --git a/test/units/modules/cloud/google/test_gcp_forwarding_rule.py b/test/units/modules/cloud/google/test_gcp_forwarding_rule.py deleted file mode 100644 index 9d7408b83d..0000000000 --- a/test/units/modules/cloud/google/test_gcp_forwarding_rule.py +++ /dev/null @@ -1,30 +0,0 @@ -import unittest - -from ansible.modules.cloud.google._gcp_forwarding_rule import _build_global_forwarding_rule_dict - - -class TestGCPFowardingRule(unittest.TestCase): - """Unit tests for gcp_fowarding_rule module.""" - params_dict = { - 'forwarding_rule_name': 'foo_fowarding_rule_name', - 'address': 'foo_external_address', - 'target': 'foo_targetproxy', - 'region': 'global', - 'port_range': 80, - 'protocol': 'TCP', - 'state': 'present', - } - - def test__build_global_forwarding_rule_dict(self): - - expected = { - 'name': 'foo_fowarding_rule_name', - 'IPAddress': 'https://www.googleapis.com/compute/v1/projects/my-project/global/addresses/foo_external_address', - 'target': 'https://www.googleapis.com/compute/v1/projects/my-project/global/targetHttpProxies/foo_targetproxy', - 'region': 'global', - 'portRange': 80, - 'IPProtocol': 'TCP', - } - actual = _build_global_forwarding_rule_dict( - self.params_dict, 'my-project') - self.assertEqual(expected, actual) diff --git a/test/units/modules/cloud/google/test_gcp_url_map.py b/test/units/modules/cloud/google/test_gcp_url_map.py deleted file mode 100644 index 3d0774e3f6..0000000000 --- a/test/units/modules/cloud/google/test_gcp_url_map.py +++ /dev/null @@ -1,164 +0,0 @@ -import unittest - -from ansible.modules.cloud.google._gcp_url_map import _build_path_matchers, _build_url_map_dict - - -class TestGCPUrlMap(unittest.TestCase): - """Unit tests for gcp_url_map module.""" - params_dict = { - 'url_map_name': 'foo_url_map_name', - 'description': 'foo_url_map description', - 'host_rules': [ - { - 'description': 'host rules description', - 'hosts': [ - 'www.example.com', - 'www2.example.com' - ], - 'path_matcher': 'host_rules_path_matcher' - } - ], - 'path_matchers': [ - { - 'name': 'path_matcher_one', - 'description': 'path matcher one', - 'defaultService': 'bes-pathmatcher-one-default', - 'pathRules': [ - { - 'service': 'my-one-bes', - 'paths': [ - '/', - '/aboutus' - ] - } - ] - }, - { - 'name': 'path_matcher_two', - 'description': 'path matcher two', - 'defaultService': 'bes-pathmatcher-two-default', - 'pathRules': [ - { - 'service': 'my-two-bes', - 'paths': [ - '/webapp', - '/graphs' - ] - } - ] - } - ] - } - - def test__build_path_matchers(self): - input_list = [ - { - 'defaultService': 'bes-pathmatcher-one-default', - 'description': 'path matcher one', - 'name': 'path_matcher_one', - 'pathRules': [ - { - 'paths': [ - '/', - '/aboutus' - ], - 'service': 'my-one-bes' - } - ] - }, - { - 'defaultService': 'bes-pathmatcher-two-default', - 'description': 'path matcher two', - 'name': 'path_matcher_two', - 'pathRules': [ - { - 'paths': [ - '/webapp', - '/graphs' - ], - 'service': 'my-two-bes' - } - ] - } - ] - expected = [ - { - 'defaultService': 'https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/bes-pathmatcher-one-default', - 'description': 'path matcher one', - 'name': 'path_matcher_one', - 'pathRules': [ - { - 'paths': [ - '/', - '/aboutus' - ], - 'service': 'https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/my-one-bes' - } - ] - }, - { - 'defaultService': 'https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/bes-pathmatcher-two-default', - 'description': 'path matcher two', - 'name': 'path_matcher_two', - 'pathRules': [ - { - 'paths': [ - '/webapp', - '/graphs' - ], - 'service': 'https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/my-two-bes' - } - ] - } - ] - actual = _build_path_matchers(input_list, 'my-project') - self.assertEqual(expected, actual) - - def test__build_url_map_dict(self): - - expected = { - 'description': 'foo_url_map description', - 'hostRules': [ - { - 'description': 'host rules description', - 'hosts': [ - 'www.example.com', - 'www2.example.com' - ], - 'pathMatcher': 'host_rules_path_matcher' - } - ], - 'name': 'foo_url_map_name', - 'pathMatchers': [ - { - 'defaultService': 'https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/bes-pathmatcher-one-default', - 'description': 'path matcher one', - 'name': 'path_matcher_one', - 'pathRules': [ - { - 'paths': [ - '/', - '/aboutus' - ], - 'service': 'https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/my-one-bes' - } - ] - }, - { - 'defaultService': 'https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/bes-pathmatcher-two-default', - 'description': 'path matcher two', - 'name': 'path_matcher_two', - 'pathRules': [ - { - 'paths': [ - '/webapp', - '/graphs' - ], - 'service': 'https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/my-two-bes' - } - ] - } - ] - } - actual = _build_url_map_dict(self.params_dict, 'my-project') - self.assertEqual(expected, actual) diff --git a/test/units/modules/cloud/kubevirt/test_kubevirt_rs.py b/test/units/modules/cloud/kubevirt/test_kubevirt_rs.py deleted file mode 100644 index 1806b7bad9..0000000000 --- a/test/units/modules/cloud/kubevirt/test_kubevirt_rs.py +++ /dev/null @@ -1,75 +0,0 @@ -import pytest - -openshiftdynamic = pytest.importorskip("openshift.dynamic") - -from units.modules.utils import set_module_args -from units.utils.kubevirt_fixtures import base_fixture, RESOURCE_DEFAULT_ARGS, AnsibleExitJson - -from ansible.module_utils.k8s.raw import KubernetesRawModule -from ansible.modules.cloud.kubevirt import kubevirt_rs as mymodule - -KIND = 'VirtualMachineInstanceReplicaSet' - - -@pytest.mark.usefixtures("base_fixture") -@pytest.mark.parametrize("_replicas, _changed", ((1, True), - (3, True), - (2, False), - (5, True),)) -def test_scale_rs_nowait(_replicas, _changed): - _name = 'test-rs' - # Desired state: - args = dict(name=_name, namespace='vms', replicas=_replicas, wait=False) - set_module_args(args) - - # Mock pre-change state: - resource_args = dict(kind=KIND, **RESOURCE_DEFAULT_ARGS) - mymodule.KubeVirtVMIRS.find_supported_resource.return_value = openshiftdynamic.Resource(**resource_args) - res_inst = openshiftdynamic.ResourceInstance('', dict(kind=KIND, metadata={'name': _name}, spec={'replicas': 2})) - openshiftdynamic.Resource.get.return_value = res_inst - openshiftdynamic.Resource.search.return_value = [res_inst] - - # Final state, after patching the object - KubernetesRawModule.patch_resource.return_value = dict(kind=KIND, metadata={'name': _name}, - spec={'replicas': _replicas}), None - - # Run code: - with pytest.raises(AnsibleExitJson) as result: - mymodule.KubeVirtVMIRS().execute_module() - - # Verify result: - assert result.value['changed'] == _changed - - -@pytest.mark.usefixtures("base_fixture") -@pytest.mark.parametrize("_replicas, _success", ((1, False), - (2, False), - (5, True),)) -def test_scale_rs_wait(_replicas, _success): - _name = 'test-rs' - # Desired state: - args = dict(name=_name, namespace='vms', replicas=5, wait=True) - set_module_args(args) - - # Mock pre-change state: - resource_args = dict(kind=KIND, **RESOURCE_DEFAULT_ARGS) - mymodule.KubeVirtVMIRS.find_supported_resource.return_value = openshiftdynamic.Resource(**resource_args) - res_inst = openshiftdynamic.ResourceInstance('', dict(kind=KIND, metadata={'name': _name}, spec={'replicas': 2})) - openshiftdynamic.Resource.get.return_value = res_inst - openshiftdynamic.Resource.search.return_value = [res_inst] - - # ~Final state, after patching the object (`replicas` match desired state) - KubernetesRawModule.patch_resource.return_value = dict(kind=KIND, name=_name, metadata={'name': _name}, - spec={'replicas': 5}), None - - # Final final state, as returned by resource.watch() - final_obj = dict(metadata=dict(name=_name), status=dict(readyReplicas=_replicas), **resource_args) - event = openshiftdynamic.ResourceInstance(None, final_obj) - openshiftdynamic.Resource.watch.return_value = [dict(object=event)] - - # Run code: - with pytest.raises(Exception) as result: - mymodule.KubeVirtVMIRS().execute_module() - - # Verify result: - assert result.value['success'] == _success diff --git a/test/units/modules/cloud/kubevirt/test_kubevirt_vm.py b/test/units/modules/cloud/kubevirt/test_kubevirt_vm.py deleted file mode 100644 index 0a2a14c7b8..0000000000 --- a/test/units/modules/cloud/kubevirt/test_kubevirt_vm.py +++ /dev/null @@ -1,110 +0,0 @@ -import pytest - -openshiftdynamic = pytest.importorskip("openshift.dynamic") - -from units.modules.utils import set_module_args -from units.utils.kubevirt_fixtures import base_fixture, RESOURCE_DEFAULT_ARGS, AnsibleExitJson - -from ansible.module_utils.kubevirt import KubeVirtRawModule -from ansible.modules.cloud.kubevirt import kubevirt_vm as mymodule - -KIND = 'VirtulMachine' - - -@pytest.mark.usefixtures("base_fixture") -def test_create_vm_with_multus_nowait(): - # Desired state: - args = dict( - state='present', name='testvm', - namespace='vms', - interfaces=[ - {'bridge': {}, 'name': 'default', 'network': {'pod': {}}}, - {'bridge': {}, 'name': 'mynet', 'network': {'multus': {'networkName': 'mynet'}}}, - ], - wait=False, - ) - set_module_args(args) - - # State as "returned" by the "k8s cluster": - resource_args = dict(kind=KIND, **RESOURCE_DEFAULT_ARGS) - KubeVirtRawModule.find_supported_resource.return_value = openshiftdynamic.Resource(**resource_args) - openshiftdynamic.Resource.get.return_value = None # Object doesn't exist in the cluster - - # Run code: - with pytest.raises(AnsibleExitJson) as result: - mymodule.KubeVirtVM().execute_module() - - # Verify result: - assert result.value['changed'] - assert result.value['method'] == 'create' - - -@pytest.mark.usefixtures("base_fixture") -@pytest.mark.parametrize("_wait", (False, True)) -def test_vm_is_absent(_wait): - # Desired state: - args = dict( - state='absent', name='testvmi', - namespace='vms', - wait=_wait, - ) - set_module_args(args) - - # State as "returned" by the "k8s cluster": - resource_args = dict(kind=KIND, **RESOURCE_DEFAULT_ARGS) - KubeVirtRawModule.find_supported_resource.return_value = openshiftdynamic.Resource(**resource_args) - openshiftdynamic.Resource.get.return_value = None # Object doesn't exist in the cluster - - # Run code: - with pytest.raises(AnsibleExitJson) as result: - mymodule.KubeVirtVM().execute_module() - - # Verify result: - assert not result.value['kubevirt_vm'] - assert result.value['method'] == 'delete' - # Note: nothing actually gets deleted, as we mock that there's not object in the cluster present, - # so if the method changes to something other than 'delete' at some point, that's fine - - -@pytest.mark.usefixtures("base_fixture") -def test_vmpreset_create(): - KIND = 'VirtulMachineInstancePreset' - # Desired state: - args = dict(state='present', name='testvmipreset', namespace='vms', memory='1024Mi', wait=False) - set_module_args(args) - - # State as "returned" by the "k8s cluster": - resource_args = dict(kind=KIND, **RESOURCE_DEFAULT_ARGS) - KubeVirtRawModule.find_supported_resource.return_value = openshiftdynamic.Resource(**resource_args) - openshiftdynamic.Resource.get.return_value = None # Object doesn't exist in the cluster - - # Run code: - with pytest.raises(AnsibleExitJson) as result: - mymodule.KubeVirtVM().execute_module() - - # Verify result: - assert result.value['changed'] - assert result.value['method'] == 'create' - - -@pytest.mark.usefixtures("base_fixture") -def test_vmpreset_is_absent(): - KIND = 'VirtulMachineInstancePreset' - # Desired state: - args = dict(state='absent', name='testvmipreset', namespace='vms') - set_module_args(args) - - # State as "returned" by the "k8s cluster": - resource_args = dict(kind=KIND, **RESOURCE_DEFAULT_ARGS) - KubeVirtRawModule.find_supported_resource.return_value = openshiftdynamic.Resource(**resource_args) - openshiftdynamic.Resource.get.return_value = None # Object doesn't exist in the cluster - - # Run code: - with pytest.raises(AnsibleExitJson) as result: - mymodule.KubeVirtVM().execute_module() - - # Verify result: - assert not result.value['kubevirt_vm'] - assert result.value['method'] == 'delete' - # Note: nothing actually gets deleted, as we mock that there's not object in the cluster present, - # so if the method changes to something other than 'delete' at some point, that's fine diff --git a/test/units/modules/cloud/linode/test_linode.py b/test/units/modules/cloud/linode/test_linode.py deleted file mode 100644 index 70e2dd90dc..0000000000 --- a/test/units/modules/cloud/linode/test_linode.py +++ /dev/null @@ -1,15 +0,0 @@ -from __future__ import (absolute_import, division, print_function) - -import pytest - -from ansible.modules.cloud.linode import linode -from units.modules.utils import set_module_args - -if not linode.HAS_LINODE: - pytestmark = pytest.mark.skip('test_linode.py requires the `linode-python` module') - - -def test_name_is_a_required_parameter(api_key, auth): - with pytest.raises(SystemExit): - set_module_args({}) - linode.main() diff --git a/test/units/modules/cloud/linode/test_linode_v4.py b/test/units/modules/cloud/linode/test_linode_v4.py deleted file mode 100644 index a85ff85169..0000000000 --- a/test/units/modules/cloud/linode/test_linode_v4.py +++ /dev/null @@ -1,323 +0,0 @@ -from __future__ import (absolute_import, division, print_function) - -import json -import os -import sys - -import pytest - -linode_apiv4 = pytest.importorskip('linode_api4') -mandatory_py_version = pytest.mark.skipif( - sys.version_info < (2, 7), - reason='The linode_api4 dependency requires python2.7 or higher' -) - -from linode_api4.errors import ApiError as LinodeApiError -from linode_api4 import LinodeClient - -from ansible.modules.cloud.linode import linode_v4 -from ansible.module_utils.linode import get_user_agent -from units.modules.utils import set_module_args -from units.compat import mock - - -def test_mandatory_state_is_validated(capfd): - with pytest.raises(SystemExit): - set_module_args({'label': 'foo'}) - linode_v4.initialise_module() - - out, err = capfd.readouterr() - results = json.loads(out) - - assert all(txt in results['msg'] for txt in ('state', 'required')) - assert results['failed'] is True - - -def test_mandatory_label_is_validated(capfd): - with pytest.raises(SystemExit): - set_module_args({'state': 'present'}) - linode_v4.initialise_module() - - out, err = capfd.readouterr() - results = json.loads(out) - - assert all(txt in results['msg'] for txt in ('label', 'required')) - assert results['failed'] is True - - -def test_mandatory_access_token_is_validated(default_args, - no_access_token_in_env, - capfd): - with pytest.raises(SystemExit): - set_module_args(default_args) - linode_v4.initialise_module() - - out, err = capfd.readouterr() - results = json.loads(out) - - assert results['failed'] is True - assert all(txt in results['msg'] for txt in ( - 'missing', - 'required', - 'access_token', - )) - - -def test_mandatory_access_token_passed_in_env(default_args, - access_token): - set_module_args(default_args) - - try: - module = linode_v4.initialise_module() - except SystemExit: - pytest.fail("'access_token' is passed in environment") - - now_set_token = module.params['access_token'] - assert now_set_token == os.environ['LINODE_ACCESS_TOKEN'] - - -def test_mandatory_access_token_passed_in_as_parameter(default_args, - no_access_token_in_env): - default_args.update({'access_token': 'foo'}) - set_module_args(default_args) - - try: - module = linode_v4.initialise_module() - except SystemExit: - pytest.fail("'access_token' is passed in as parameter") - - assert module.params['access_token'] == 'foo' - - -def test_instance_by_label_cannot_authenticate(capfd, access_token, - default_args): - set_module_args(default_args) - module = linode_v4.initialise_module() - client = LinodeClient(module.params['access_token']) - - target = 'linode_api4.linode_client.LinodeGroup.instances' - with mock.patch(target, side_effect=LinodeApiError('foo')): - with pytest.raises(SystemExit): - linode_v4.maybe_instance_from_label(module, client) - - out, err = capfd.readouterr() - results = json.loads(out) - - assert results['failed'] is True - assert 'Unable to query the Linode API' in results['msg'] - - -def test_no_instances_found_with_label_gives_none(default_args, - access_token): - set_module_args(default_args) - module = linode_v4.initialise_module() - client = LinodeClient(module.params['access_token']) - - target = 'linode_api4.linode_client.LinodeGroup.instances' - with mock.patch(target, return_value=[]): - result = linode_v4.maybe_instance_from_label(module, client) - - assert result is None - - -def test_optional_region_is_validated(default_args, capfd, access_token): - default_args.update({'type': 'foo', 'image': 'bar'}) - set_module_args(default_args) - - with pytest.raises(SystemExit): - linode_v4.initialise_module() - - out, err = capfd.readouterr() - results = json.loads(out) - - assert results['failed'] is True - assert all(txt in results['msg'] for txt in ( - 'required', - 'together', - 'region' - )) - - -def test_optional_type_is_validated(default_args, capfd, access_token): - default_args.update({'region': 'foo', 'image': 'bar'}) - set_module_args(default_args) - - with pytest.raises(SystemExit): - linode_v4.initialise_module() - - out, err = capfd.readouterr() - results = json.loads(out) - - assert results['failed'] is True - assert all(txt in results['msg'] for txt in ( - 'required', - 'together', - 'type' - )) - - -def test_optional_image_is_validated(default_args, capfd, access_token): - default_args.update({'type': 'foo', 'region': 'bar'}) - set_module_args(default_args) - - with pytest.raises(SystemExit): - linode_v4.initialise_module() - - out, err = capfd.readouterr() - results = json.loads(out) - - assert results['failed'] is True - assert all(txt in results['msg'] for txt in ( - 'required', - 'together', - 'image' - )) - - -def test_instance_already_created(default_args, - mock_linode, - capfd, - access_token): - default_args.update({ - 'type': 'foo', - 'region': 'bar', - 'image': 'baz' - }) - set_module_args(default_args) - - target = 'linode_api4.linode_client.LinodeGroup.instances' - with mock.patch(target, return_value=[mock_linode]): - with pytest.raises(SystemExit) as sys_exit_exc: - linode_v4.main() - - assert sys_exit_exc.value.code == 0 - - out, err = capfd.readouterr() - results = json.loads(out) - - assert results['changed'] is False - assert 'root_password' not in results['instance'] - assert ( - results['instance']['label'] == - mock_linode._raw_json['label'] - ) - - -def test_instance_to_be_created_without_root_pass(default_args, - mock_linode, - capfd, - access_token): - default_args.update({ - 'type': 'foo', - 'region': 'bar', - 'image': 'baz' - }) - set_module_args(default_args) - - target = 'linode_api4.linode_client.LinodeGroup.instances' - with mock.patch(target, return_value=[]): - with pytest.raises(SystemExit) as sys_exit_exc: - target = 'linode_api4.linode_client.LinodeGroup.instance_create' - with mock.patch(target, return_value=(mock_linode, 'passw0rd')): - linode_v4.main() - - assert sys_exit_exc.value.code == 0 - - out, err = capfd.readouterr() - results = json.loads(out) - - assert results['changed'] is True - assert ( - results['instance']['label'] == - mock_linode._raw_json['label'] - ) - assert results['instance']['root_pass'] == 'passw0rd' - - -def test_instance_to_be_created_with_root_pass(default_args, - mock_linode, - capfd, - access_token): - default_args.update({ - 'type': 'foo', - 'region': 'bar', - 'image': 'baz', - 'root_pass': 'passw0rd', - }) - set_module_args(default_args) - - target = 'linode_api4.linode_client.LinodeGroup.instances' - with mock.patch(target, return_value=[]): - with pytest.raises(SystemExit) as sys_exit_exc: - target = 'linode_api4.linode_client.LinodeGroup.instance_create' - with mock.patch(target, return_value=mock_linode): - linode_v4.main() - - assert sys_exit_exc.value.code == 0 - - out, err = capfd.readouterr() - results = json.loads(out) - - assert results['changed'] is True - assert ( - results['instance']['label'] == - mock_linode._raw_json['label'] - ) - assert 'root_pass' not in results['instance'] - - -def test_instance_to_be_deleted(default_args, - mock_linode, - capfd, - access_token): - default_args.update({'state': 'absent'}) - set_module_args(default_args) - - target = 'linode_api4.linode_client.LinodeGroup.instances' - with mock.patch(target, return_value=[mock_linode]): - with pytest.raises(SystemExit) as sys_exit_exc: - linode_v4.main() - - assert sys_exit_exc.value.code == 0 - - out, err = capfd.readouterr() - results = json.loads(out) - - assert results['changed'] is True - assert ( - results['instance']['label'] == - mock_linode._raw_json['label'] - ) - - -def test_instance_already_deleted_no_change(default_args, - mock_linode, - capfd, - access_token): - default_args.update({'state': 'absent'}) - set_module_args(default_args) - - target = 'linode_api4.linode_client.LinodeGroup.instances' - with mock.patch(target, return_value=[]): - with pytest.raises(SystemExit) as sys_exit_exc: - linode_v4.main() - - assert sys_exit_exc.value.code == 0 - - out, err = capfd.readouterr() - results = json.loads(out) - - assert results['changed'] is False - assert results['instance'] == {} - - -def test_user_agent_created_properly(): - try: - from ansible.module_utils.ansible_release import ( - __version__ as ansible_version - ) - except ImportError: - ansible_version = 'unknown' - - expected_user_agent = 'Ansible-linode_v4_module/%s' % ansible_version - assert expected_user_agent == get_user_agent('linode_v4_module') diff --git a/test/units/modules/cloud/misc/test_terraform.py b/test/units/modules/cloud/misc/test_terraform.py deleted file mode 100644 index 77c1a5375e..0000000000 --- a/test/units/modules/cloud/misc/test_terraform.py +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright: (c) 2019, Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -import json - -import pytest - -from ansible.modules.cloud.misc import terraform -from units.modules.utils import set_module_args - - -def test_terraform_without_argument(capfd): - set_module_args({}) - with pytest.raises(SystemExit) as results: - terraform.main() - - out, err = capfd.readouterr() - assert not err - assert json.loads(out)['failed'] - assert 'project_path' in json.loads(out)['msg'] diff --git a/test/units/modules/cloud/misc/virt_net/conftest.py b/test/units/modules/cloud/misc/virt_net/conftest.py deleted file mode 100644 index 71335f6639..0000000000 --- a/test/units/modules/cloud/misc/virt_net/conftest.py +++ /dev/null @@ -1,69 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright: (c) 2019, Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -import pytest - -from ansible.modules.cloud.misc import virt_net - -from units.compat import mock - - -virt_net.libvirt = None -virt_net.HAS_VIRT = True - - -class DummyNetwork(): - def __init__(self, name, isActive=True): - self._name = name - self._isActive = isActive - - def name(self): - return self._name - - def isActive(self): - return self._isActive - - -class DummyLibvirtConn(): - def __init__(self): - self._network = [ - DummyNetwork("inactive_net", isActive=False), - DummyNetwork("active_net", isActive=True)] - - def listNetworks(self): - return [i.name() for i in self._network] - - def networkLookupByName(self, name): - for i in self._network: - if i.name() == name: - return i - - def listDefinedNetworks(self): - return [] - - -class DummyLibvirt(): - VIR_ERR_NETWORK_EXIST = 'VIR_ERR_NETWORK_EXIST' - - @classmethod - def open(cls, uri): - return DummyLibvirtConn() - - class libvirtError(Exception): - def __init__(self): - self.error_code - - def get_error_code(self): - return self.error_code - - -@pytest.fixture -def dummy_libvirt(monkeypatch): - monkeypatch.setattr(virt_net, 'libvirt', DummyLibvirt) - return DummyLibvirt - - -@pytest.fixture -def virt_net_obj(dummy_libvirt): - return virt_net.VirtNetwork('qemu:///nowhere', mock.MagicMock()) diff --git a/test/units/modules/cloud/misc/virt_net/test_virt_net.py b/test/units/modules/cloud/misc/virt_net/test_virt_net.py deleted file mode 100644 index 6a0c174abe..0000000000 --- a/test/units/modules/cloud/misc/virt_net/test_virt_net.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright: (c) 2019, Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -from units.compat import mock - - -def test_virt_net_create_already_active(virt_net_obj, dummy_libvirt): - virt_net_obj.conn.create = mock.Mock() - assert virt_net_obj.create("active_net") is None - virt_net_obj.conn.create.assert_not_called() - - -def test_virt_net_recreate(virt_net_obj, dummy_libvirt): - virt_net_obj.conn.create = mock.Mock() - dummy_libvirt.libvirtError.error_code = 'VIR_ERR_NETWORK_EXIST' - virt_net_obj.conn.create.side_effect = dummy_libvirt.libvirtError - assert virt_net_obj.create("active_net") is None - - -def test_virt_stop_ignore_inactive(virt_net_obj): - virt_net_obj.conn.destroy = mock.Mock() - virt_net_obj.stop('inactive_net') - virt_net_obj.conn.destroy.assert_not_called() - - -def test_virt_stop_active(virt_net_obj, monkeypatch): - virt_net_obj.conn.destroy = mock.Mock() - virt_net_obj.stop('active_net') - virt_net_obj.conn.destroy.assert_called_with('active_net') diff --git a/test/units/modules/cloud/xenserver/FakeAnsibleModule.py b/test/units/modules/cloud/xenserver/FakeAnsibleModule.py deleted file mode 100644 index b02ad4a136..0000000000 --- a/test/units/modules/cloud/xenserver/FakeAnsibleModule.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright: (c) 2019, Bojan Vitnik <bvitnik@mainstream.rs> -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - - -class AnsibleModuleException(Exception): - def __init__(self, *args, **kwargs): - self.args = args - self.kwargs = kwargs - - -class ExitJsonException(AnsibleModuleException): - pass - - -class FailJsonException(AnsibleModuleException): - pass - - -class FakeAnsibleModule: - def __init__(self, params=None, check_mode=False): - self.params = params - self.check_mode = check_mode - - def exit_json(self, *args, **kwargs): - raise ExitJsonException(*args, **kwargs) - - def fail_json(self, *args, **kwargs): - raise FailJsonException(*args, **kwargs) diff --git a/test/units/modules/cloud/xenserver/FakeXenAPI.py b/test/units/modules/cloud/xenserver/FakeXenAPI.py deleted file mode 100644 index dc657a6a09..0000000000 --- a/test/units/modules/cloud/xenserver/FakeXenAPI.py +++ /dev/null @@ -1,66 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright: (c) 2019, Bojan Vitnik <bvitnik@mainstream.rs> -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -FAKE_API_VERSION = "1.1" - - -class Failure(Exception): - def __init__(self, details): - self.details = details - - def __str__(self): - return str(self.details) - - -class Session(object): - def __init__(self, uri, transport=None, encoding=None, verbose=0, - allow_none=1, ignore_ssl=False): - - self.transport = transport - self._session = None - self.last_login_method = None - self.last_login_params = None - self.API_version = FAKE_API_VERSION - - def _get_api_version(self): - return FAKE_API_VERSION - - def _login(self, method, params): - self._session = "OpaqueRef:fake-xenapi-session-ref" - self.last_login_method = method - self.last_login_params = params - self.API_version = self._get_api_version() - - def _logout(self): - self._session = None - self.last_login_method = None - self.last_login_params = None - self.API_version = FAKE_API_VERSION - - def xenapi_request(self, methodname, params): - if methodname.startswith('login'): - self._login(methodname, params) - return None - elif methodname == 'logout' or methodname == 'session.logout': - self._logout() - return None - else: - # Should be patched with mocker.patch(). - return None - - def __getattr__(self, name): - if name == 'handle': - return self._session - elif name == 'xenapi': - # Should be patched with mocker.patch(). - return None - elif name.startswith('login') or name.startswith('slave_local'): - return lambda *params: self._login(name, params) - elif name == 'logout': - return self._logout - - -def xapi_local(): - return Session("http://_var_lib_xcp_xapi/") diff --git a/test/units/modules/cloud/xenserver/common.py b/test/units/modules/cloud/xenserver/common.py deleted file mode 100644 index 6e652a5d71..0000000000 --- a/test/units/modules/cloud/xenserver/common.py +++ /dev/null @@ -1,11 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright: (c) 2019, Bojan Vitnik <bvitnik@mainstream.rs> -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function -__metaclass__ = type - - -def fake_xenapi_ref(xenapi_class): - return "OpaqueRef:fake-xenapi-%s-ref" % xenapi_class diff --git a/test/units/modules/cloud/xenserver/test_xenserver_guest_info.py b/test/units/modules/cloud/xenserver/test_xenserver_guest_info.py deleted file mode 100644 index b0db19673d..0000000000 --- a/test/units/modules/cloud/xenserver/test_xenserver_guest_info.py +++ /dev/null @@ -1,77 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright: (c) 2019, Bojan Vitnik <bvitnik@mainstream.rs> -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function -__metaclass__ = type - - -import json -import pytest - -from .common import fake_xenapi_ref - -pytestmark = pytest.mark.usefixtures('patch_ansible_module') - - -testcase_module_params = { - "params": [ - { - "hostname": "somehost", - "username": "someuser", - "password": "somepwd", - "name": "somevmname", - }, - { - "hostname": "somehost", - "username": "someuser", - "password": "somepwd", - "uuid": "somevmuuid", - }, - { - "hostname": "somehost", - "username": "someuser", - "password": "somepwd", - "name": "somevmname", - "uuid": "somevmuuid", - }, - ], - "ids": [ - "name", - "uuid", - "name+uuid", - ], -} - - -@pytest.mark.parametrize('patch_ansible_module', testcase_module_params['params'], ids=testcase_module_params['ids'], indirect=True) -def test_xenserver_guest_info(mocker, capfd, XenAPI, xenserver_guest_info): - """ - Tests regular module invocation including parsing and propagation of - module params and module output. - """ - fake_vm_facts = {"fake-vm-fact": True} - - mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_info.get_object_ref', return_value=None) - mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_info.gather_vm_params', return_value=None) - mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_info.gather_vm_facts', return_value=fake_vm_facts) - - mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi', create=True) - - mocked_returns = { - "pool.get_all.return_value": [fake_xenapi_ref('pool')], - "pool.get_default_SR.return_value": fake_xenapi_ref('SR'), - } - - mocked_xenapi.configure_mock(**mocked_returns) - - mocker.patch('ansible.module_utils.xenserver.get_xenserver_version', return_value=[7, 2, 0]) - - with pytest.raises(SystemExit): - xenserver_guest_info.main() - - out, err = capfd.readouterr() - result = json.loads(out) - - assert result['instance'] == fake_vm_facts diff --git a/test/units/modules/cloud/xenserver/test_xenserver_guest_powerstate.py b/test/units/modules/cloud/xenserver/test_xenserver_guest_powerstate.py deleted file mode 100644 index f346ee61f1..0000000000 --- a/test/units/modules/cloud/xenserver/test_xenserver_guest_powerstate.py +++ /dev/null @@ -1,289 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright: (c) 2019, Bojan Vitnik <bvitnik@mainstream.rs> -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function -__metaclass__ = type - - -import json -import pytest - -from .common import fake_xenapi_ref - - -testcase_set_powerstate = { - "params": [ - (False, "someoldstate"), - (True, "somenewstate"), - ], - "ids": [ - "state-same", - "state-changed", - ], -} - -testcase_module_params_state_present = { - "params": [ - { - "hostname": "somehost", - "username": "someuser", - "password": "somepwd", - "name": "somevmname", - }, - { - "hostname": "somehost", - "username": "someuser", - "password": "somepwd", - "name": "somevmname", - "state": "present", - }, - ], - "ids": [ - "present-implicit", - "present-explicit", - ], -} - -testcase_module_params_state_other = { - "params": [ - { - "hostname": "somehost", - "username": "someuser", - "password": "somepwd", - "name": "somevmname", - "state": "powered-on", - }, - { - "hostname": "somehost", - "username": "someuser", - "password": "somepwd", - "name": "somevmname", - "state": "powered-off", - }, - { - "hostname": "somehost", - "username": "someuser", - "password": "somepwd", - "name": "somevmname", - "state": "restarted", - }, - { - "hostname": "somehost", - "username": "someuser", - "password": "somepwd", - "name": "somevmname", - "state": "shutdown-guest", - }, - { - "hostname": "somehost", - "username": "someuser", - "password": "somepwd", - "name": "somevmname", - "state": "reboot-guest", - }, - { - "hostname": "somehost", - "username": "someuser", - "password": "somepwd", - "name": "somevmname", - "state": "suspended", - }, - ], - "ids": [ - "powered-on", - "powered-off", - "restarted", - "shutdown-guest", - "reboot-guest", - "suspended", - ], -} - -testcase_module_params_wait = { - "params": [ - { - "hostname": "somehost", - "username": "someuser", - "password": "somepwd", - "name": "somevmname", - "state": "present", - "wait_for_ip_address": "yes", - }, - { - "hostname": "somehost", - "username": "someuser", - "password": "somepwd", - "name": "somevmname", - "state": "powered-on", - "wait_for_ip_address": "yes", - }, - ], - "ids": [ - "wait-present", - "wait-other", - ], -} - - -@pytest.mark.parametrize('power_state', testcase_set_powerstate['params'], ids=testcase_set_powerstate['ids']) -def test_xenserver_guest_powerstate_set_power_state(mocker, fake_ansible_module, XenAPI, xenserver_guest_powerstate, power_state): - """Tests power state change handling.""" - mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.get_object_ref', return_value=fake_xenapi_ref('VM')) - mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.gather_vm_params', return_value={"power_state": "Someoldstate"}) - mocked_set_vm_power_state = mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.set_vm_power_state', - return_value=power_state) - - mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi', create=True) - - mocked_returns = { - "pool.get_all.return_value": [fake_xenapi_ref('pool')], - "pool.get_default_SR.return_value": fake_xenapi_ref('SR'), - } - - mocked_xenapi.configure_mock(**mocked_returns) - - mocker.patch('ansible.module_utils.xenserver.get_xenserver_version', return_value=[7, 2, 0]) - - fake_ansible_module.params.update({ - "name": "somename", - "uuid": "someuuid", - "state_change_timeout": 1, - }) - - vm = xenserver_guest_powerstate.XenServerVM(fake_ansible_module) - state_changed = vm.set_power_state(None) - - mocked_set_vm_power_state.assert_called_once_with(fake_ansible_module, fake_xenapi_ref('VM'), None, 1) - assert state_changed == power_state[0] - assert vm.vm_params['power_state'] == power_state[1].capitalize() - - -@pytest.mark.parametrize('patch_ansible_module', - testcase_module_params_state_present['params'], - ids=testcase_module_params_state_present['ids'], - indirect=True) -def test_xenserver_guest_powerstate_present(mocker, patch_ansible_module, capfd, XenAPI, xenserver_guest_powerstate): - """ - Tests regular module invocation including parsing and propagation of - module params and module output when state is set to present. - """ - fake_vm_facts = {"fake-vm-fact": True} - - mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.get_object_ref', return_value=fake_xenapi_ref('VM')) - mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.gather_vm_params', return_value={}) - mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.gather_vm_facts', return_value=fake_vm_facts) - mocked_set_vm_power_state = mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.set_vm_power_state', - return_value=(True, "somenewstate")) - mocked_wait_for_vm_ip_address = mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.wait_for_vm_ip_address', - return_value={}) - - mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi', create=True) - - mocked_returns = { - "pool.get_all.return_value": [fake_xenapi_ref('pool')], - "pool.get_default_SR.return_value": fake_xenapi_ref('SR'), - } - - mocked_xenapi.configure_mock(**mocked_returns) - - mocker.patch('ansible.module_utils.xenserver.get_xenserver_version', return_value=[7, 2, 0]) - - with pytest.raises(SystemExit): - xenserver_guest_powerstate.main() - - out, err = capfd.readouterr() - result = json.loads(out) - - mocked_set_vm_power_state.assert_not_called() - mocked_wait_for_vm_ip_address.assert_not_called() - assert result['changed'] is False - assert result['instance'] == fake_vm_facts - - -@pytest.mark.parametrize('patch_ansible_module', - testcase_module_params_state_other['params'], - ids=testcase_module_params_state_other['ids'], - indirect=True) -def test_xenserver_guest_powerstate_other(mocker, patch_ansible_module, capfd, XenAPI, xenserver_guest_powerstate): - """ - Tests regular module invocation including parsing and propagation of - module params and module output when state is set to other value than - present. - """ - fake_vm_facts = {"fake-vm-fact": True} - - mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.get_object_ref', return_value=fake_xenapi_ref('VM')) - mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.gather_vm_params', return_value={}) - mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.gather_vm_facts', return_value=fake_vm_facts) - mocked_set_vm_power_state = mocker.patch( - 'ansible.modules.cloud.xenserver.xenserver_guest_powerstate.set_vm_power_state', - return_value=(True, "somenewstate")) - mocked_wait_for_vm_ip_address = mocker.patch( - 'ansible.modules.cloud.xenserver.xenserver_guest_powerstate.wait_for_vm_ip_address', - return_value={}) - - mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi', create=True) - - mocked_returns = { - "pool.get_all.return_value": [fake_xenapi_ref('pool')], - "pool.get_default_SR.return_value": fake_xenapi_ref('SR'), - } - - mocked_xenapi.configure_mock(**mocked_returns) - - mocker.patch('ansible.module_utils.xenserver.get_xenserver_version', return_value=[7, 2, 0]) - - with pytest.raises(SystemExit): - xenserver_guest_powerstate.main() - - out, err = capfd.readouterr() - result = json.loads(out) - - mocked_set_vm_power_state.assert_called_once() - mocked_wait_for_vm_ip_address.assert_not_called() - assert result['changed'] is True - assert result['instance'] == fake_vm_facts - - -@pytest.mark.parametrize('patch_ansible_module', - testcase_module_params_wait['params'], - ids=testcase_module_params_wait['ids'], - indirect=True) -def test_xenserver_guest_powerstate_wait(mocker, patch_ansible_module, capfd, XenAPI, xenserver_guest_powerstate): - """ - Tests regular module invocation including parsing and propagation of - module params and module output when wait_for_ip_address option is used. - """ - fake_vm_facts = {"fake-vm-fact": True} - - mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.get_object_ref', return_value=fake_xenapi_ref('VM')) - mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.gather_vm_params', return_value={}) - mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.gather_vm_facts', return_value=fake_vm_facts) - mocked_set_vm_power_state = mocker.patch( - 'ansible.modules.cloud.xenserver.xenserver_guest_powerstate.set_vm_power_state', - return_value=(True, "somenewstate")) - mocked_wait_for_vm_ip_address = mocker.patch( - 'ansible.modules.cloud.xenserver.xenserver_guest_powerstate.wait_for_vm_ip_address', - return_value={}) - - mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi', create=True) - - mocked_returns = { - "pool.get_all.return_value": [fake_xenapi_ref('pool')], - "pool.get_default_SR.return_value": fake_xenapi_ref('SR'), - } - - mocked_xenapi.configure_mock(**mocked_returns) - - mocker.patch('ansible.module_utils.xenserver.get_xenserver_version', return_value=[7, 2, 0]) - - with pytest.raises(SystemExit): - xenserver_guest_powerstate.main() - - out, err = capfd.readouterr() - result = json.loads(out) - - mocked_wait_for_vm_ip_address.assert_called_once() - assert result['instance'] == fake_vm_facts diff --git a/test/units/modules/messaging/rabbitmq/test_rabbitmq_user.py b/test/units/modules/messaging/rabbitmq/test_rabbitmq_user.py deleted file mode 100644 index 269ffef6fc..0000000000 --- a/test/units/modules/messaging/rabbitmq/test_rabbitmq_user.py +++ /dev/null @@ -1,134 +0,0 @@ -# -*- coding: utf-8 -*- - -from ansible.modules.messaging.rabbitmq import rabbitmq_user -from units.compat.mock import patch -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args - - -class TestRabbitMQUserModule(ModuleTestCase): - def setUp(self): - super(TestRabbitMQUserModule, self).setUp() - self.module = rabbitmq_user - - def tearDown(self): - super(TestRabbitMQUserModule, self).tearDown() - - def _assert(self, exc, attribute, expected_value, msg=""): - value = exc.message[attribute] if hasattr(exc, attribute) else exc.args[0][attribute] - assert value == expected_value, msg - - def test_without_required_parameters(self): - """Failure must occurs when all parameters are missing""" - with self.assertRaises(AnsibleFailJson): - set_module_args({}) - self.module.main() - - def test_permissions_with_same_vhost(self): - set_module_args({ - 'user': 'someuser', - 'password': 'somepassword', - 'state': 'present', - 'permissions': [{'vhost': '/'}, {'vhost': '/'}], - }) - with patch('ansible.module_utils.basic.AnsibleModule.get_bin_path') as get_bin_path: - get_bin_path.return_value = '/rabbitmqctl' - try: - self.module.main() - except AnsibleFailJson as e: - self._assert(e, 'failed', True) - self._assert(e, 'msg', - "Error parsing permissions: You can't have two permission dicts for the same vhost") - - @patch('ansible.module_utils.basic.AnsibleModule.get_bin_path') - @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser.get') - @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser.check_password') - @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser.has_tags_modifications') - @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser.has_permissions_modifications') - def test_password_changes_only_when_needed(self, has_permissions_modifications, has_tags_modifications, - check_password, get, get_bin_path): - set_module_args({ - 'user': 'someuser', - 'password': 'somepassword', - 'state': 'present', - 'update_password': 'always', - }) - get.return_value = True - get_bin_path.return_value = '/rabbitmqctl' - check_password.return_value = True - has_tags_modifications.return_value = False - has_permissions_modifications.return_value = False - try: - self.module.main() - except AnsibleExitJson as e: - self._assert(e, 'changed', False) - self._assert(e, 'state', 'present') - - @patch('ansible.module_utils.basic.AnsibleModule.get_bin_path') - @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser._exec') - @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser._get_permissions') - @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser.has_tags_modifications') - def test_same_permissions_not_changing(self, has_tags_modifications, _get_permissions, _exec, get_bin_path): - set_module_args({ - 'user': 'someuser', - 'password': 'somepassword', - 'state': 'present', - 'permissions': [{'vhost': '/', 'configure_priv': '.*', 'write_priv': '.*', 'read_priv': '.*'}], - }) - _get_permissions.return_value = [{'vhost': '/', 'configure_priv': '.*', 'write_priv': '.*', 'read_priv': '.*'}] - _exec.return_value = ['someuser\t[]'] - get_bin_path.return_value = '/rabbitmqctl' - has_tags_modifications.return_value = False - try: - self.module.main() - except AnsibleExitJson as e: - self._assert(e, 'changed', False) - self._assert(e, 'state', 'present') - - @patch('ansible.module_utils.basic.AnsibleModule.get_bin_path') - @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser._exec') - @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser._get_permissions') - @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser.set_permissions') - @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser.has_tags_modifications') - def test_permissions_are_fixed(self, has_tags_modifications, set_permissions, _get_permissions, _exec, get_bin_path): - set_module_args({ - 'user': 'someuser', - 'password': 'somepassword', - 'state': 'present', - 'permissions': [{'vhost': '/', 'configure_priv': '.*', 'write_priv': '.*', 'read_priv': '.*'}], - }) - set_permissions.return_value = None - _get_permissions.return_value = [] - _exec.return_value = ['someuser\t[]'] - get_bin_path.return_value = '/rabbitmqctl' - has_tags_modifications.return_value = False - try: - self.module.main() - except AnsibleExitJson as e: - self._assert(e, 'changed', True) - self._assert(e, 'state', 'present') - assert set_permissions.call_count == 1 - - @patch('ansible.module_utils.basic.AnsibleModule.get_bin_path') - @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser._exec') - @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser._get_permissions') - @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser.set_permissions') - @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser.has_tags_modifications') - def test_permissions_are_fixed_with_different_host(self, has_tags_modifications, set_permissions, _get_permissions, - _exec, get_bin_path): - set_module_args({ - 'user': 'someuser', - 'password': 'somepassword', - 'state': 'present', - 'permissions': [{'vhost': '/', 'configure_priv': '.*', 'write_priv': '.*', 'read_priv': '.*'}], - }) - set_permissions.return_value = None - _get_permissions.return_value = [{'vhost': 'monitoring', 'configure_priv': '.*', 'write_priv': '.*', 'read_priv': '.*'}] - _exec.return_value = ['someuser\t[]'] - get_bin_path.return_value = '/rabbitmqctl' - has_tags_modifications.return_value = False - try: - self.module.main() - except AnsibleExitJson as e: - self._assert(e, 'changed', True) - self._assert(e, 'state', 'present') - assert set_permissions.call_count == 1 diff --git a/test/units/modules/monitoring/test_circonus_annotation.py b/test/units/modules/monitoring/test_circonus_annotation.py deleted file mode 100644 index 63494c0ebd..0000000000 --- a/test/units/modules/monitoring/test_circonus_annotation.py +++ /dev/null @@ -1,147 +0,0 @@ -# -*- coding: utf-8 -*- - -import io -import json -import re -import uuid -from urllib3.response import HTTPResponse - -from units.compat.mock import patch -from ansible.module_utils._text import to_bytes -from ansible.modules.monitoring import circonus_annotation -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args - - -class TestCirconusAnnotation(ModuleTestCase): - - def setUp(self): - super(TestCirconusAnnotation, self).setUp() - self.module = circonus_annotation - - def tearDown(self): - super(TestCirconusAnnotation, self).tearDown() - - def test_without_required_parameters(self): - """Failure must occurs when all parameters are missing""" - with self.assertRaises(AnsibleFailJson): - set_module_args({}) - self.module.main() - - def test_add_annotation(self): - """Check that result is changed""" - set_module_args({ - 'category': 'test category', - 'description': 'test description', - 'title': 'test title', - 'api_key': str(uuid.uuid4()), - }) - - cid = '/annotation/100000' - - def send(self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None): - data = { - '_cid': cid, - '_created': 1502146995, - '_last_modified': 1502146995, - '_last_modified_by': '/user/1000', - 'category': 'test category', - 'description': 'test description', - 'rel_metrics': [], - 'start': 1502145480, - 'stop': None, - 'title': 'test title', - } - raw = to_bytes(json.dumps(data)) - resp = HTTPResponse(body=io.BytesIO(raw), preload_content=False) - resp.status = 200 - resp.reason = 'OK' - resp.headers = {'X-Circonus-API-Version': '2.00'} - return self.build_response(request, resp) - - with patch('requests.adapters.HTTPAdapter.send', autospec=True, side_effect=send) as send: - with self.assertRaises(AnsibleExitJson) as result: - self.module.main() - self.assertTrue(result.exception.args[0]['changed']) - self.assertEqual(result.exception.args[0]['annotation']['_cid'], cid) - self.assertEqual(send.call_count, 1) - - def test_add_annotation_unicode(self): - """Check that result is changed. - Note: it seems there is a bug which prevent to create an annotation - with a non-ASCII category if this category already exists, in such - case an Internal Server Error (500) occurs.""" - set_module_args({ - 'category': 'new catégorÿ', - 'description': 'test description', - 'title': 'test title', - 'api_key': str(uuid.uuid4()), - }) - - cid = '/annotation/100000' - - def send(self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None): - data = { - '_cid': '/annotation/100000', - '_created': 1502236928, - '_last_modified': 1502236928, - '_last_modified_by': '/user/1000', - # use res['annotation']['category'].encode('latin1').decode('utf8') - 'category': u'new cat\xc3\xa9gor\xc3\xbf', - 'description': 'test description', - 'rel_metrics': [], - 'start': 1502236927, - 'stop': 1502236927, - 'title': 'test title', - } - - raw = to_bytes(json.dumps(data), encoding='latin1') - resp = HTTPResponse(body=io.BytesIO(raw), preload_content=False) - resp.status = 200 - resp.reason = 'OK' - resp.headers = {'X-Circonus-API-Version': '2.00'} - return self.build_response(request, resp) - - with patch('requests.adapters.HTTPAdapter.send', autospec=True, side_effect=send) as send: - with self.assertRaises(AnsibleExitJson) as result: - self.module.main() - self.assertTrue(result.exception.args[0]['changed']) - self.assertEqual(result.exception.args[0]['annotation']['_cid'], cid) - self.assertEqual(send.call_count, 1) - - def test_auth_failure(self): - """Check that an error is raised when authentication failed""" - set_module_args({ - 'category': 'test category', - 'description': 'test description', - 'title': 'test title', - 'api_key': str(uuid.uuid4()), - }) - - cid = '/annotation/100000' - - def send(self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None): - data = { - '_cid': cid, - '_created': 1502146995, - '_last_modified': 1502146995, - '_last_modified_by': '/user/1000', - 'category': 'test category', - 'description': 'test description', - 'rel_metrics': [], - 'start': 1502145480, - 'stop': None, - 'title': 'test title', - } - raw = to_bytes(json.dumps(data)) - resp = HTTPResponse(body=io.BytesIO(raw), preload_content=False) - resp.status = 403 - resp.reason = 'Forbidden' - resp.headers = {'X-Circonus-API-Version': '2.00'} - return self.build_response(request, resp) - - with patch('requests.adapters.HTTPAdapter.send', autospec=True, side_effect=send) as send: - with self.assertRaises(AnsibleFailJson) as result: - self.module.main() - self.assertTrue(result.exception.args[0]['failed']) - self.assertTrue(re.match(r'\b403\b', result.exception.args[0]['reason'])) - self.assertEqual(send.call_count, 1) diff --git a/test/units/modules/monitoring/test_icinga2_feature.py b/test/units/modules/monitoring/test_icinga2_feature.py deleted file mode 100644 index 2e221faabe..0000000000 --- a/test/units/modules/monitoring/test_icinga2_feature.py +++ /dev/null @@ -1,96 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2018, Ansible Project -# Copyright (c) 2018, Abhijeet Kasurde <akasurde@redhat.com> -# -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from ansible.modules.monitoring import icinga2_feature -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args -from units.compat.mock import patch -from ansible.module_utils import basic - - -def get_bin_path(*args, **kwargs): - """Function to return path of icinga2 binary.""" - return "/bin/icinga2" - - -class TestIcinga2Feature(ModuleTestCase): - """Main class for testing icinga2_feature module.""" - - def setUp(self): - """Setup.""" - super(TestIcinga2Feature, self).setUp() - self.module = icinga2_feature - self.mock_get_bin_path = patch.object(basic.AnsibleModule, 'get_bin_path', get_bin_path) - self.mock_get_bin_path.start() - self.addCleanup(self.mock_get_bin_path.stop) # ensure that the patching is 'undone' - - def tearDown(self): - """Teardown.""" - super(TestIcinga2Feature, self).tearDown() - - def test_without_required_parameters(self): - """Failure must occurs when all parameters are missing.""" - with self.assertRaises(AnsibleFailJson): - set_module_args({}) - self.module.main() - - def test_enable_feature(self): - """Check that result is changed.""" - set_module_args({ - 'name': 'api', - }) - with patch.object(basic.AnsibleModule, 'run_command') as run_command: - run_command.return_value = 0, '', '' # successful execution, no output - with self.assertRaises(AnsibleExitJson) as result: - icinga2_feature.main() - self.assertTrue(result.exception.args[0]['changed']) - - self.assertEqual(run_command.call_count, 2) - self.assertEqual(run_command.call_args[0][0][-1], 'api') - - def test_enable_feature_with_check_mode(self): - """Check that result is changed in check mode.""" - set_module_args({ - 'name': 'api', - '_ansible_check_mode': True, - }) - with patch.object(basic.AnsibleModule, 'run_command') as run_command: - run_command.return_value = 0, '', '' # successful execution, no output - with self.assertRaises(AnsibleExitJson) as result: - icinga2_feature.main() - self.assertTrue(result.exception.args[0]['changed']) - - self.assertEqual(run_command.call_count, 1) - - def test_disable_feature(self): - """Check that result is changed.""" - set_module_args({ - 'name': 'api', - 'state': 'absent' - }) - with patch.object(basic.AnsibleModule, 'run_command') as run_command: - run_command.return_value = 0, '', '' # successful execution, no output - with self.assertRaises(AnsibleExitJson) as result: - icinga2_feature.main() - self.assertTrue(result.exception.args[0]['changed']) - - self.assertEqual(run_command.call_count, 2) - self.assertEqual(run_command.call_args[0][0][-1], 'api') - - def test_disable_feature_with_check_mode(self): - """Check that result is changed in check mode.""" - set_module_args({ - 'name': 'api', - 'state': 'absent', - '_ansible_check_mode': True, - }) - with patch.object(basic.AnsibleModule, 'run_command') as run_command: - run_command.return_value = 0, '', '' # successful execution, no output - with self.assertRaises(AnsibleExitJson) as result: - icinga2_feature.main() - self.assertTrue(result.exception.args[0]['changed']) - - self.assertEqual(run_command.call_count, 1) diff --git a/test/units/modules/monitoring/test_pagerduty.py b/test/units/modules/monitoring/test_pagerduty.py deleted file mode 100644 index 126ccd0571..0000000000 --- a/test/units/modules/monitoring/test_pagerduty.py +++ /dev/null @@ -1,123 +0,0 @@ -from units.compat import unittest -from ansible.modules.monitoring import pagerduty - -import json - - -class PagerDutyTest(unittest.TestCase): - def setUp(self): - self.pd = pagerduty.PagerDutyRequest(module=pagerduty, name='name', user='user', token='token') - - def _assert_ongoing_maintenance_windows(self, module, url, headers): - self.assertEqual('https://api.pagerduty.com/maintenance_windows?filter=ongoing', url) - return object(), {'status': 200} - - def _assert_ongoing_window_with_v1_compatible_header(self, module, url, headers, data=None, method=None): - self.assertDictContainsSubset( - {'Accept': 'application/vnd.pagerduty+json;version=2'}, - headers, - 'Accept:application/vnd.pagerduty+json;version=2 HTTP header not found' - ) - return object(), {'status': 200} - - def _assert_create_a_maintenance_window_url(self, module, url, headers, data=None, method=None): - self.assertEqual('https://api.pagerduty.com/maintenance_windows', url) - return object(), {'status': 201} - - def _assert_create_a_maintenance_window_http_method(self, module, url, headers, data=None, method=None): - self.assertEqual('POST', method) - return object(), {'status': 201} - - def _assert_create_a_maintenance_window_from_header(self, module, url, headers, data=None, method=None): - self.assertDictContainsSubset( - {'From': 'requester_id'}, - headers, - 'From:requester_id HTTP header not found' - ) - return object(), {'status': 201} - - def _assert_create_window_with_v1_compatible_header(self, module, url, headers, data=None, method=None): - self.assertDictContainsSubset( - {'Accept': 'application/vnd.pagerduty+json;version=2'}, - headers, - 'Accept:application/vnd.pagerduty+json;version=2 HTTP header not found' - ) - return object(), {'status': 201} - - def _assert_create_window_payload(self, module, url, headers, data=None, method=None): - payload = json.loads(data) - window_data = payload['maintenance_window'] - self.assertTrue('start_time' in window_data, '"start_time" is requiered attribute') - self.assertTrue('end_time' in window_data, '"end_time" is requiered attribute') - self.assertTrue('services' in window_data, '"services" is requiered attribute') - return object(), {'status': 201} - - def _assert_create_window_single_service(self, module, url, headers, data=None, method=None): - payload = json.loads(data) - window_data = payload['maintenance_window'] - services = window_data['services'] - self.assertEqual( - [{'id': 'service_id', 'type': 'service_reference'}], - services - ) - return object(), {'status': 201} - - def _assert_create_window_multiple_service(self, module, url, headers, data=None, method=None): - payload = json.loads(data) - window_data = payload['maintenance_window'] - services = window_data['services'] - print(services) - self.assertEqual( - [ - {'id': 'service_id_1', 'type': 'service_reference'}, - {'id': 'service_id_2', 'type': 'service_reference'}, - {'id': 'service_id_3', 'type': 'service_reference'}, - ], - services - ) - return object(), {'status': 201} - - def _assert_absent_maintenance_window_url(self, module, url, headers, method=None): - self.assertEqual('https://api.pagerduty.com/maintenance_windows/window_id', url) - return object(), {'status': 204} - - def _assert_absent_window_with_v1_compatible_header(self, module, url, headers, method=None): - self.assertDictContainsSubset( - {'Accept': 'application/vnd.pagerduty+json;version=2'}, - headers, - 'Accept:application/vnd.pagerduty+json;version=2 HTTP header not found' - ) - return object(), {'status': 204} - - def test_ongoing_maintenance_windos_url(self): - self.pd.ongoing(http_call=self._assert_ongoing_maintenance_windows) - - def test_ongoing_maintenance_windos_compatibility_header(self): - self.pd.ongoing(http_call=self._assert_ongoing_window_with_v1_compatible_header) - - def test_create_maintenance_window_url(self): - self.pd.create('requester_id', 'service', 1, 0, 'desc', http_call=self._assert_create_a_maintenance_window_url) - - def test_create_maintenance_window_http_method(self): - self.pd.create('requester_id', 'service', 1, 0, 'desc', http_call=self._assert_create_a_maintenance_window_http_method) - - def test_create_maintenance_from_header(self): - self.pd.create('requester_id', 'service', 1, 0, 'desc', http_call=self._assert_create_a_maintenance_window_from_header) - - def test_create_maintenance_compatibility_header(self): - self.pd.create('requester_id', 'service', 1, 0, 'desc', http_call=self._assert_create_window_with_v1_compatible_header) - - def test_create_maintenance_request_payload(self): - self.pd.create('requester_id', 'service', 1, 0, 'desc', http_call=self._assert_create_window_payload) - - def test_create_maintenance_for_single_service(self): - self.pd.create('requester_id', 'service_id', 1, 0, 'desc', http_call=self._assert_create_window_single_service) - - def test_create_maintenance_for_multiple_services(self): - self.pd.create('requester_id', ['service_id_1', 'service_id_2', 'service_id_3'], 1, 0, 'desc', http_call=self._assert_create_window_multiple_service) - - def test_absent_maintenance_window_url(self): - self.pd.absent('window_id', http_call=self._assert_absent_maintenance_window_url) - - def test_absent_maintenance_compatibility_header(self): - self.pd.absent('window_id', http_call=self._assert_absent_window_with_v1_compatible_header) diff --git a/test/units/modules/monitoring/test_pagerduty_alert.py b/test/units/modules/monitoring/test_pagerduty_alert.py deleted file mode 100644 index cc177bd6d5..0000000000 --- a/test/units/modules/monitoring/test_pagerduty_alert.py +++ /dev/null @@ -1,39 +0,0 @@ -from units.compat import unittest -from ansible.modules.monitoring import pagerduty_alert - - -class PagerDutyAlertsTest(unittest.TestCase): - def _assert_incident_api(self, module, url, method, headers): - self.assertTrue('https://api.pagerduty.com/incidents' in url, 'url must contain REST API v2 network path') - self.assertTrue('service_ids%5B%5D=service_id' in url, 'url must contain service id to filter incidents') - self.assertTrue('sort_by=incident_number%3Adesc' in url, 'url should contain sorting parameter') - self.assertTrue('time_zone=UTC' in url, 'url should contain time zone parameter') - return Response(), {'status': 200} - - def _assert_compatibility_header(self, module, url, method, headers): - self.assertDictContainsSubset( - {'Accept': 'application/vnd.pagerduty+json;version=2'}, - headers, - 'Accept:application/vnd.pagerduty+json;version=2 HTTP header not found' - ) - return Response(), {'status': 200} - - def _assert_incident_key(self, module, url, method, headers): - self.assertTrue('incident_key=incident_key_value' in url, 'url must contain incident key') - return Response(), {'status': 200} - - def test_incident_url(self): - pagerduty_alert.check(None, 'name', 'state', 'service_id', 'integration_key', 'api_key', http_call=self._assert_incident_api) - - def test_compatibility_header(self): - pagerduty_alert.check(None, 'name', 'state', 'service_id', 'integration_key', 'api_key', http_call=self._assert_compatibility_header) - - def test_incident_key_in_url_when_it_is_given(self): - pagerduty_alert.check( - None, 'name', 'state', 'service_id', 'integration_key', 'api_key', incident_key='incident_key_value', http_call=self._assert_incident_key - ) - - -class Response(object): - def read(self): - return '{"incidents":[{"id": "incident_id", "status": "triggered"}]}' diff --git a/test/units/modules/net_tools/nios/fixtures/nios_result.txt b/test/units/modules/net_tools/nios/fixtures/nios_result.txt deleted file mode 100644 index e69de29bb2..0000000000 --- a/test/units/modules/net_tools/nios/fixtures/nios_result.txt +++ /dev/null diff --git a/test/units/modules/net_tools/nios/test_nios_a_record.py b/test/units/modules/net_tools/nios/test_nios_a_record.py deleted file mode 100644 index 72101da7df..0000000000 --- a/test/units/modules/net_tools/nios/test_nios_a_record.py +++ /dev/null @@ -1,159 +0,0 @@ -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish - - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible.modules.net_tools.nios import nios_a_record -from ansible.module_utils.net_tools.nios import api -from units.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosARecordModule(TestNiosModule): - - module = nios_a_record - - def setUp(self): - super(TestNiosARecordModule, self).setUp() - self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_a_record.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_a_record.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_a_record.WapiModule.run') - self.mock_wapi_run.start() - self.load_config = self.mock_wapi_run.start() - - def tearDown(self): - super(TestNiosARecordModule, self).tearDown() - self.mock_wapi.stop() - self.mock_wapi_run.stop() - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_nios_a_record_create(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'a.ansible.com', - 'ipv4': '192.168.10.1', 'comment': None, 'extattrs': None} - - test_object = None - - test_spec = { - "name": {"ib_req": True}, - "ipv4": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi.__dict__) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'name': self.module._check_type_dict().__getitem__(), - 'ipv4': '192.168.10.1'}) - - def test_nios_a_record_update_comment(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'a.ansible.com', 'ipv4': '192.168.10.1', - 'comment': 'updated comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "arecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "a.ansible.com", - "ipv4": "192.168.10.1", - "extattrs": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "ipv4": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - - def test_nios_a_record_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'name': 'a.ansible.com', 'ipv4': '192.168.10.1', - 'comment': None, 'extattrs': None} - - ref = "arecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "name": "a.ansible.com", - "ipv4": "192.168.10.1", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "name": {"ib_req": True}, - "ipv4": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) - - def test_nios_a_record_update_record_name(self): - self.module.params = {'provider': None, 'state': 'present', 'name': {'new_name': 'a_new.ansible.com', 'old_name': 'a.ansible.com'}, - 'comment': 'comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "arecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "a_new.ansible.com", - "old_name": "a.ansible.com", - "extattrs": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.update_object.called_once_with(test_object) diff --git a/test/units/modules/net_tools/nios/test_nios_aaaa_record.py b/test/units/modules/net_tools/nios/test_nios_aaaa_record.py deleted file mode 100644 index dc5dedb80b..0000000000 --- a/test/units/modules/net_tools/nios/test_nios_aaaa_record.py +++ /dev/null @@ -1,159 +0,0 @@ -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish - - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible.modules.net_tools.nios import nios_aaaa_record -from ansible.module_utils.net_tools.nios import api -from units.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosAAAARecordModule(TestNiosModule): - - module = nios_aaaa_record - - def setUp(self): - super(TestNiosAAAARecordModule, self).setUp() - self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_aaaa_record.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_aaaa_record.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_aaaa_record.WapiModule.run') - self.mock_wapi_run.start() - self.load_config = self.mock_wapi_run.start() - - def tearDown(self): - super(TestNiosAAAARecordModule, self).tearDown() - self.mock_wapi.stop() - self.mock_wapi_run.stop() - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_nios_aaaa_record_create(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'aaaa.ansible.com', - 'ipv6': '2001:0db8:85a3:0000:0000:8a2e:0370:7334', 'comment': None, 'extattrs': None} - - test_object = None - - test_spec = { - "name": {"ib_req": True}, - "ipv6": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi.__dict__) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'name': self.module._check_type_dict().__getitem__(), - 'ipv6': '2001:0db8:85a3:0000:0000:8a2e:0370:7334'}) - - def test_nios_aaaa_record_update_comment(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'aaaa.ansible.com', - 'ipv6': '2001:0db8:85a3:0000:0000:8a2e:0370:7334', 'comment': 'updated comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "aaaarecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "aaaa.ansible.com", - "ipv6": "2001:0db8:85a3:0000:0000:8a2e:0370:7334", - "extattrs": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "ipv6": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - - def test_nios_aaaa_record_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'name': 'aaaa.ansible.com', - 'ipv6': '2001:0db8:85a3:0000:0000:8a2e:0370:7334', 'comment': None, 'extattrs': None} - - ref = "aaaarecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "name": "aaaa.ansible.com", - "ipv6": "2001:0db8:85a3:0000:0000:8a2e:0370:7334", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "name": {"ib_req": True}, - "ipv6": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) - - def test_nios_aaaa_record_update_record_name(self): - self.module.params = {'provider': None, 'state': 'present', 'name': {'new_name': 'aaaa_new.ansible.com', 'old_name': 'aaaa.ansible.com'}, - 'comment': 'comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "aaaarecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "aaaa_new.ansible.com", - "old_name": "aaaa.ansible.com", - "extattrs": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.update_object.called_once_with(test_object) diff --git a/test/units/modules/net_tools/nios/test_nios_cname_record.py b/test/units/modules/net_tools/nios/test_nios_cname_record.py deleted file mode 100644 index ecf8dfcba0..0000000000 --- a/test/units/modules/net_tools/nios/test_nios_cname_record.py +++ /dev/null @@ -1,133 +0,0 @@ -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish - - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible.modules.net_tools.nios import nios_cname_record -from ansible.module_utils.net_tools.nios import api -from units.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosCNameRecordModule(TestNiosModule): - - module = nios_cname_record - - def setUp(self): - super(TestNiosCNameRecordModule, self).setUp() - self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_cname_record.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_cname_record.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_cname_record.WapiModule.run') - self.mock_wapi_run.start() - self.load_config = self.mock_wapi_run.start() - - def tearDown(self): - super(TestNiosCNameRecordModule, self).tearDown() - self.mock_wapi.stop() - self.mock_wapi_run.stop() - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_nios_a_record_create(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'cname.ansible.com', - 'canonical': 'realhost.ansible.com', 'comment': None, 'extattrs': None} - - test_object = None - - test_spec = { - "name": {"ib_req": True}, - "canonical": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi.__dict__) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'name': self.module._check_type_dict().__getitem__(), - 'canonical': 'realhost.ansible.com'}) - - def test_nios_a_record_update_comment(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'cname.ansible.com', - 'canonical': 'realhost.ansible.com', 'comment': 'updated comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "cnamerecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "cname.ansible.com", - "canonical": "realhost.ansible.com", - "extattrs": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "canonical": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - - def test_nios_a_record_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'name': 'cname.ansible.com', - 'canonical': 'realhost.ansible.com', 'comment': None, 'extattrs': None} - - ref = "cnamerecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "name": "cname.ansible.com", - "canonical": "realhost.ansible.com", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "name": {"ib_req": True}, - "canonical": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) diff --git a/test/units/modules/net_tools/nios/test_nios_dns_view.py b/test/units/modules/net_tools/nios/test_nios_dns_view.py deleted file mode 100644 index d5e7656cb2..0000000000 --- a/test/units/modules/net_tools/nios/test_nios_dns_view.py +++ /dev/null @@ -1,127 +0,0 @@ -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish - - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible.modules.net_tools.nios import nios_dns_view -from ansible.module_utils.net_tools.nios import api -from units.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosDnsViewModule(TestNiosModule): - - module = nios_dns_view - - def setUp(self): - super(TestNiosDnsViewModule, self).setUp() - self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_dns_view.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_dns_view.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_dns_view.WapiModule.run') - self.mock_wapi_run.start() - self.load_config = self.mock_wapi_run.start() - - def tearDown(self): - super(TestNiosDnsViewModule, self).tearDown() - self.mock_wapi.stop() - self.mock_wapi_run.stop() - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_nios_dns_view_create(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'ansible-dns', - 'comment': None, 'extattrs': None} - - test_object = None - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'name': self.module._check_type_dict().__getitem__()}) - - def test_nios_dns_view_update_comment(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'ansible-dns', - 'comment': 'updated comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "dnsview/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "ansible-dns", - "extattrs": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - - def test_nios_dns_view_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'name': 'ansible-dns', - 'comment': None, 'extattrs': None} - - ref = "dnsview/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "name": "ansible-dns", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) diff --git a/test/units/modules/net_tools/nios/test_nios_fixed_address.py b/test/units/modules/net_tools/nios/test_nios_fixed_address.py deleted file mode 100644 index 9b21c2d320..0000000000 --- a/test/units/modules/net_tools/nios/test_nios_fixed_address.py +++ /dev/null @@ -1,201 +0,0 @@ -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible.module_utils.net_tools.nios import api -from ansible.modules.net_tools.nios import nios_fixed_address -from units.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosFixedAddressModule(TestNiosModule): - - module = nios_fixed_address - - def setUp(self): - super(TestNiosFixedAddressModule, self).setUp() - self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_fixed_address.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_fixed_address.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_fixed_address.WapiModule.run') - self.mock_wapi_run.start() - self.load_config = self.mock_wapi_run.start() - - def tearDown(self): - super(TestNiosFixedAddressModule, self).tearDown() - self.mock_wapi.stop() - self.mock_wapi_run.stop() - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def test_nios_fixed_address_ipv4_create(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'test_fa', 'ipaddr': '192.168.10.1', 'mac': '08:6d:41:e8:fd:e8', - 'network': '192.168.10.0/24', 'network_view': 'default', 'comment': None, 'extattrs': None} - - test_object = None - test_spec = { - "name": {}, - "ipaddr": {"ib_req": True}, - "mac": {"ib_req": True}, - "network": {"ib_req": True}, - "network_view": {}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'name': 'test_fa', 'ipaddr': '192.168.10.1', 'mac': '08:6d:41:e8:fd:e8', - 'network': '192.168.10.0/24', 'network_view': 'default'}) - - def test_nios_fixed_address_ipv4_dhcp_update(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'test_fa', 'ipaddr': '192.168.10.1', 'mac': '08:6d:41:e8:fd:e8', - 'network': '192.168.10.0/24', 'network_view': 'default', 'comment': 'updated comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "name": "test_fa", - "_ref": "network/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "ipaddr": "192.168.10.1", - "mac": "08:6d:41:e8:fd:e8", - "network": "192.168.10.0/24", - "network_view": "default", - "extattrs": {'options': {'name': 'test', 'value': 'ansible.com'}} - } - ] - - test_spec = { - "name": {}, - "ipaddr": {"ib_req": True}, - "mac": {"ib_req": True}, - "network": {"ib_req": True}, - "network_view": {}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - - def test_nios_fixed_address_ipv4_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'name': 'test_fa', 'ipaddr': '192.168.10.1', 'mac': '08:6d:41:e8:fd:e8', - 'network': '192.168.10.0/24', 'network_view': 'default', 'comment': None, 'extattrs': None} - - ref = "fixedaddress/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "name": "test_fa", - "_ref": ref, - "ipaddr": "192.168.10.1", - "mac": "08:6d:41:e8:fd:e8", - "network": "192.168.10.0/24", - "network_view": "default", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "name": {}, - "ipaddr": {"ib_req": True}, - "mac": {"ib_req": True}, - "network": {"ib_req": True}, - "network_view": {}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) - - def test_nios_fixed_address_ipv6_create(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'test_fa', 'ipaddr': 'fe80::1/10', 'mac': '08:6d:41:e8:fd:e8', - 'network': 'fe80::/64', 'network_view': 'default', 'comment': None, 'extattrs': None} - - test_object = None - - test_spec = { - "name": {}, - "ipaddr": {"ib_req": True}, - "mac": {"ib_req": True}, - "network": {"ib_req": True}, - "network_view": {}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'name': 'test_fa', 'ipaddr': 'fe80::1/10', 'mac': '08:6d:41:e8:fd:e8', - 'network': 'fe80::/64', 'network_view': 'default'}) - - def test_nios_fixed_address_ipv6_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'name': 'test_fa', 'ipaddr': 'fe80::1/10', 'mac': '08:6d:41:e8:fd:e8', - 'network': 'fe80::/64', 'network_view': 'default', 'comment': None, 'extattrs': None} - - ref = "ipv6fixedaddress/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "name": "test_fa", - "_ref": ref, - "ipaddr": "fe80::1/10", - "mac": "08:6d:41:e8:fd:e8", - "network": "fe80::/64", - "network_view": "default", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "name": {}, - "ipaddr": {"ib_req": True}, - "mac": {"ib_req": True}, - "network": {"ib_req": True}, - "network_view": {}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) diff --git a/test/units/modules/net_tools/nios/test_nios_host_record.py b/test/units/modules/net_tools/nios/test_nios_host_record.py deleted file mode 100644 index 0a317288d1..0000000000 --- a/test/units/modules/net_tools/nios/test_nios_host_record.py +++ /dev/null @@ -1,152 +0,0 @@ -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible.modules.net_tools.nios import nios_host_record -from ansible.module_utils.net_tools.nios import api -from units.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosHostRecordModule(TestNiosModule): - - module = nios_host_record - - def setUp(self): - - super(TestNiosHostRecordModule, self).setUp() - self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_host_record.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - - self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_host_record.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_host_record.WapiModule.run') - self.mock_wapi_run.start() - - self.load_config = self.mock_wapi_run.start() - - def tearDown(self): - super(TestNiosHostRecordModule, self).tearDown() - self.mock_wapi.stop() - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_nios_host_record_create(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'ansible', - 'comment': None, 'extattrs': None} - - test_object = None - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'name': self.module._check_type_dict().__getitem__()}) - - def test_nios_host_record_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'name': 'ansible', - 'comment': None, 'extattrs': None} - - ref = "record:host/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "name": "ansible", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) - - def test_nios_host_record_update_comment(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'default', - 'comment': 'updated comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "record:host/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "default", - "extattrs": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.update_object.called_once_with(test_object) - - def test_nios_host_record_update_record_name(self): - self.module.params = {'provider': None, 'state': 'present', 'name': {'new_name': 'default', 'old_name': 'old_default'}, - 'comment': 'comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "record:host/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "default", - "old_name": "old_default", - "extattrs": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.update_object.called_once_with(test_object) diff --git a/test/units/modules/net_tools/nios/test_nios_member.py b/test/units/modules/net_tools/nios/test_nios_member.py deleted file mode 100644 index f81263cdc0..0000000000 --- a/test/units/modules/net_tools/nios/test_nios_member.py +++ /dev/null @@ -1,162 +0,0 @@ -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible.module_utils.net_tools.nios import api -from ansible.modules.net_tools.nios import nios_member -from units.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosMemberModule(TestNiosModule): - - module = nios_member - - def setUp(self): - super(TestNiosMemberModule, self).setUp() - self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_member.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_member.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_member.WapiModule.run') - self.mock_wapi_run.start() - self.load_config = self.mock_wapi_run.start() - - def tearDown(self): - super(TestNiosMemberModule, self).tearDown() - self.mock_wapi.stop() - self.mock_wapi_run.stop() - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def test_nios_member_create(self): - self.module.params = {'provider': None, 'state': 'present', 'host_name': 'test_member', - 'vip_setting': {'address': '192.168.1.110', 'subnet_mask': '255.255.255.0', 'gateway': '192.168.1.1'}, - 'config_addr_type': 'IPV4', 'platform': 'VNIOS', 'comment': None, 'extattrs': None} - - test_object = None - test_spec = { - "host_name": {"ib_req": True}, - "vip_setting": {}, - "config_addr_type": {}, - "platform": {}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'host_name': 'test_member', - 'vip_setting': {'address': '192.168.1.110', 'subnet_mask': '255.255.255.0', - 'gateway': '192.168.1.1'}, - 'config_addr_type': 'IPV4', 'platform': 'VNIOS'}) - - def test_nios_member_update(self): - self.module.params = {'provider': None, 'state': 'present', 'host_name': 'test_member', - 'vip_setting': {'address': '192.168.1.110', 'subnet_mask': '255.255.255.0', 'gateway': '192.168.1.1'}, - 'config_addr_type': 'IPV4', 'platform': 'VNIOS', 'comment': 'updated comment', 'extattrs': None} - - test_object = [ - { - "comment": "Created with Ansible", - "_ref": "member/b25lLnZpcnR1YWxfbm9kZSQ3:member01.ansible-dev.com", - "config_addr_type": "IPV4", - "host_name": "member01.ansible-dev.com", - "platform": "VNIOS", - "service_type_configuration": "ALL_V4", - "vip_setting": - { - "address": "192.168.1.100", - "dscp": 0, - "gateway": "192.168.1.1", - "primary": True, - "subnet_mask": "255.255.255.0", - "use_dscp": False - } - } - ] - - test_spec = { - "host_name": {"ib_req": True}, - "vip_setting": {}, - "config_addr_type": {}, - "platform": {}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - - def test_nios_member_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'host_name': 'test_member', - 'vip_setting': {'address': '192.168.1.110', 'subnet_mask': '255.255.255.0', 'gateway': '192.168.1.1'}, - 'config_addr_type': 'IPV4', 'platform': 'VNIOS', 'comment': 'updated comment', 'extattrs': None} - - ref = "member/b25lLnZpcnR1YWxfbm9kZSQ3:member01.ansible-dev.com" - - test_object = [ - { - "comment": "Created with Ansible", - "_ref": "member/b25lLnZpcnR1YWxfbm9kZSQ3:member01.ansible-dev.com", - "config_addr_type": "IPV4", - "host_name": "member01.ansible-dev.com", - "platform": "VNIOS", - "service_type_configuration": "ALL_V4", - "vip_setting": - { - "address": "192.168.1.100", - "dscp": 0, - "gateway": "192.168.1.1", - "primary": True, - "subnet_mask": "255.255.255.0", - "use_dscp": False - } - } - ] - - test_spec = { - "host_name": {"ib_req": True}, - "vip_setting": {}, - "config_addr_type": {}, - "platform": {}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) diff --git a/test/units/modules/net_tools/nios/test_nios_module.py b/test/units/modules/net_tools/nios/test_nios_module.py deleted file mode 100644 index dbf5885173..0000000000 --- a/test/units/modules/net_tools/nios/test_nios_module.py +++ /dev/null @@ -1,88 +0,0 @@ -# (c) 2018 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json - -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase - - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(name): - path = os.path.join(fixture_path, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as f: - data = f.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class TestNiosModule(ModuleTestCase): - - def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False): - - self.load_fixtures(commands) - - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - if commands is not None: - if sort: - self.assertEqual(sorted(commands), sorted(result['commands']), result['commands']) - else: - self.assertEqual(commands, result['commands'], result['commands']) - - return result - - def failed(self): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def changed(self, changed=False): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertEqual(result['changed'], changed, result) - return result - - def load_fixtures(self, commands=None): - pass diff --git a/test/units/modules/net_tools/nios/test_nios_mx_record.py b/test/units/modules/net_tools/nios/test_nios_mx_record.py deleted file mode 100644 index 21ac7b2b9f..0000000000 --- a/test/units/modules/net_tools/nios/test_nios_mx_record.py +++ /dev/null @@ -1,137 +0,0 @@ -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish - - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible.modules.net_tools.nios import nios_mx_record -from ansible.module_utils.net_tools.nios import api -from units.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosMXRecordModule(TestNiosModule): - - module = nios_mx_record - - def setUp(self): - super(TestNiosMXRecordModule, self).setUp() - self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_mx_record.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_mx_record.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_mx_record.WapiModule.run') - self.mock_wapi_run.start() - self.load_config = self.mock_wapi_run.start() - - def tearDown(self): - super(TestNiosMXRecordModule, self).tearDown() - self.mock_wapi.stop() - self.mock_wapi_run.stop() - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_nios_mx_record_create(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'ansible.com', - 'mx': 'mailhost.ansible.com', 'preference': 0, 'comment': None, 'extattrs': None} - - test_object = None - - test_spec = { - "name": {"ib_req": True}, - "mx": {"ib_req": True}, - "preference": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'name': self.module._check_type_dict().__getitem__(), - 'mx': 'mailhost.ansible.com', 'preference': 0}) - - def test_nios_mx_record_update_comment(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'ansible.com', 'mx': 'mailhost.ansible.com', - 'preference': 0, 'comment': 'updated comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "mxrecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "ansible.com", - "mx": "mailhost.ansible.com", - "preference": 0, - "extattrs": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "mx": {"ib_req": True}, - "preference": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - - def test_nios_mx_record_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'name': 'ansible.com', 'mx': 'mailhost.ansible.com', - 'preference': 0, 'comment': None, 'extattrs': None} - - ref = "mxrecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "name": "ansible.com", - "mx": "mailhost.ansible.com", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "name": {"ib_req": True}, - "mx": {"ib_req": True}, - "preference": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) diff --git a/test/units/modules/net_tools/nios/test_nios_naptr_record.py b/test/units/modules/net_tools/nios/test_nios_naptr_record.py deleted file mode 100644 index 2f1547c29f..0000000000 --- a/test/units/modules/net_tools/nios/test_nios_naptr_record.py +++ /dev/null @@ -1,147 +0,0 @@ -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish - - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible.modules.net_tools.nios import nios_naptr_record -from ansible.module_utils.net_tools.nios import api -from units.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosNAPTRRecordModule(TestNiosModule): - - module = nios_naptr_record - - def setUp(self): - super(TestNiosNAPTRRecordModule, self).setUp() - self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_naptr_record.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_naptr_record.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_naptr_record.WapiModule.run') - self.mock_wapi_run.start() - self.load_config = self.mock_wapi_run.start() - - def tearDown(self): - super(TestNiosNAPTRRecordModule, self).tearDown() - self.mock_wapi.stop() - self.mock_wapi_run.stop() - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_nios_naptr_record_create(self): - self.module.params = {'provider': None, 'state': 'present', 'name': '*.subscriber-100.ansiblezone.com', - 'order': '1000', 'preference': '10', 'replacement': 'replacement1.network.ansiblezone.com', - 'comment': None, 'extattrs': None} - - test_object = None - - test_spec = { - "name": {"ib_req": True}, - "order": {"ib_req": True}, - "preference": {"ib_req": True}, - "replacement": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi.__dict__) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'name': self.module._check_type_dict().__getitem__(), - 'order': '1000', 'preference': '10', - 'replacement': 'replacement1.network.ansiblezone.com'}) - - def test_nios_naptr_record_update_comment(self): - self.module.params = {'provider': None, 'state': 'present', 'name': '*.subscriber-100.ansiblezone.com', - 'order': '1000', 'preference': '10', 'replacement': 'replacement1.network.ansiblezone.com', - 'comment': 'updated comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "naptrrecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "*.subscriber-100.ansiblezone.com", - "order": "1000", - "preference": "10", - "replacement": "replacement1.network.ansiblezone.com", - "extattrs": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "order": {"ib_req": True}, - "preference": {"ib_req": True}, - "replacement": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - - def test_nios_naptr_record_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'name': '*.subscriber-100.ansiblezone.com', - 'order': '1000', 'preference': '10', 'replacement': 'replacement1.network.ansiblezone.com', - 'comment': None, 'extattrs': None} - - ref = "naptrrecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "name": "*.subscriber-100.ansiblezone.com", - "order": "1000", - "preference": "10", - "replacement": "replacement1.network.ansiblezone.com", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "name": {"ib_req": True}, - "order": {"ib_req": True}, - "preference": {"ib_req": True}, - "replacement": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) diff --git a/test/units/modules/net_tools/nios/test_nios_network.py b/test/units/modules/net_tools/nios/test_nios_network.py deleted file mode 100644 index 859e24d0a6..0000000000 --- a/test/units/modules/net_tools/nios/test_nios_network.py +++ /dev/null @@ -1,248 +0,0 @@ -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible.module_utils.net_tools.nios import api -from ansible.modules.net_tools.nios import nios_network -from units.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosNetworkModule(TestNiosModule): - - module = nios_network - - def setUp(self): - super(TestNiosNetworkModule, self).setUp() - self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_network.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_network.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_network.WapiModule.run') - self.mock_wapi_run.start() - self.load_config = self.mock_wapi_run.start() - - def tearDown(self): - super(TestNiosNetworkModule, self).tearDown() - self.mock_wapi.stop() - self.mock_wapi_run.stop() - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def test_nios_network_ipv4_create(self): - self.module.params = {'provider': None, 'state': 'present', 'network': '192.168.10.0/24', - 'comment': None, 'extattrs': None} - - test_object = None - test_spec = { - "network": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'network': '192.168.10.0/24'}) - - def test_nios_network_ipv4_dhcp_update(self): - self.module.params = {'provider': None, 'state': 'present', 'network': '192.168.10.0/24', - 'comment': 'updated comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "network/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "network": "192.168.10.0/24", - "extattrs": {'options': {'name': 'test', 'value': 'ansible.com'}} - } - ] - - test_spec = { - "network": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - - def test_nios_network_ipv6_dhcp_update(self): - self.module.params = {'provider': None, 'state': 'present', 'ipv6network': 'fe80::/64', - 'comment': 'updated comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "ipv6network/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "ipv6network": "fe80::/64", - "extattrs": {'options': {'name': 'test', 'value': 'ansible.com'}} - } - ] - - test_spec = { - "ipv6network": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - self.assertTrue(res['changed']) - - def test_nios_network_ipv4_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'network': '192.168.10.0/24', - 'comment': None, 'extattrs': None} - - ref = "network/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "network": "192.168.10.0/24", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "network": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) - - def test_nios_network_ipv6_create(self): - self.module.params = {'provider': None, 'state': 'present', 'ipv6network': 'fe80::/64', - 'comment': None, 'extattrs': None} - - test_object = None - - test_spec = { - "ipv6network": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'ipv6network': 'fe80::/64'}) - - def test_nios_network_ipv6_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'ipv6network': 'fe80::/64', - 'comment': None, 'extattrs': None} - - ref = "ipv6network/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "ipv6network": "fe80::/64", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "ipv6network": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) - - def test_nios_networkcontainer_ipv4_create(self): - self.module.params = {'provider': None, 'state': 'present', 'networkcontainer': '192.168.10.0/24', - 'comment': None, 'extattrs': None} - - test_object = None - test_spec = { - "networkcontainer": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'networkcontainer': '192.168.10.0/24'}) - - def test_nios_networkcontainer_ipv4_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'networkcontainer': '192.168.10.0/24', - 'comment': None, 'extattrs': None} - - ref = "networkcontainer/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "networkcontainer": "192.168.10.0/24" - }] - - test_spec = { - "networkcontainer": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) - - def test_nios_networkcontainer_ipv6_create(self): - self.module.params = {'provider': None, 'state': 'present', 'ipv6networkcontainer': 'fe80::/64', - 'comment': None, 'extattrs': None} - - test_object = None - test_spec = { - "ipv6networkcontainer": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'ipv6networkcontainer': 'fe80::/64'}) diff --git a/test/units/modules/net_tools/nios/test_nios_network_view.py b/test/units/modules/net_tools/nios/test_nios_network_view.py deleted file mode 100644 index 4a4be1244b..0000000000 --- a/test/units/modules/net_tools/nios/test_nios_network_view.py +++ /dev/null @@ -1,156 +0,0 @@ -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish - - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible.modules.net_tools.nios import nios_network_view -from ansible.module_utils.net_tools.nios import api -from units.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosNetworkViewModule(TestNiosModule): - - module = nios_network_view - - def setUp(self): - super(TestNiosNetworkViewModule, self).setUp() - self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_network_view.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_network_view.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_network_view.WapiModule.run') - self.mock_wapi_run.start() - self.load_config = self.mock_wapi_run.start() - - def tearDown(self): - super(TestNiosNetworkViewModule, self).tearDown() - self.mock_wapi.stop() - self.mock_wapi_run.stop() - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_nios_network_view_create(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'ansible', - 'comment': None, 'extattrs': None} - - test_object = None - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {}, - - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'name': self.module._check_type_dict().__getitem__()}) - - def test_nios_network_view_update_comment(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'default', - 'comment': 'updated comment', 'extattrs': None, 'network_view': 'default'} - - test_object = [ - { - "comment": "test comment", - "_ref": "networkview/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "default", - "extattrs": {}, - "network_view": "default" - } - ] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.update_object.called_once_with(test_object) - - def test_nios_network_view_update_name(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'default', 'old_name': 'old_default', - 'comment': 'updated comment', 'extattrs': None, 'network_view': 'default'} - - test_object = [ - { - "comment": "test comment", - "_ref": "networkview/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "default", - "old_name": "old_default", - "extattrs": {}, - "network_view": "default" - } - ] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.update_object.called_once_with(test_object) - - def test_nios_network_view_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'name': 'ansible', - 'comment': None, 'extattrs': None} - - ref = "networkview/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "name": "ansible", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) diff --git a/test/units/modules/net_tools/nios/test_nios_nsgroup.py b/test/units/modules/net_tools/nios/test_nios_nsgroup.py deleted file mode 100644 index 463fc24687..0000000000 --- a/test/units/modules/net_tools/nios/test_nios_nsgroup.py +++ /dev/null @@ -1,125 +0,0 @@ -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible.modules.net_tools.nios import nios_nsgroup -from ansible.module_utils.net_tools.nios import api -from units.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosNSGroupModule(TestNiosModule): - - module = nios_nsgroup - - def setUp(self): - - super(TestNiosNSGroupModule, self).setUp() - self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_nsgroup.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - - self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_nsgroup.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_nsgroup.WapiModule.run') - self.mock_wapi_run.start() - - self.load_config = self.mock_wapi_run.start() - - def tearDown(self): - super(TestNiosNSGroupModule, self).tearDown() - self.mock_wapi.stop() - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_nios_nsgroup_create(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'my-simple-group', - 'comment': None, 'grid_primary': None} - - test_object = None - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "grid_primary": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'name': self.module._check_type_dict().__getitem__()}) - - def test_nios_nsgroup_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'name': 'my-simple-group', - 'comment': None, 'grid_primary': None} - - ref = "nsgroup/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "name": "my-simple-group", - "grid_primary": {'name': 'infoblox-test.example.com'} - }] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "grid_primary": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) - - def test_nios_nsgroup_update_comment(self): - self.module.params = {'provider': None, 'state': 'present', 'name': 'default', - 'comment': 'updated comment', 'grid_primary': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "nsgroup/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "default", - "grid_primary": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "comment": {}, - "grid_primary": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.update_object.called_once_with(test_object) diff --git a/test/units/modules/net_tools/nios/test_nios_ptr_record.py b/test/units/modules/net_tools/nios/test_nios_ptr_record.py deleted file mode 100644 index f41132d292..0000000000 --- a/test/units/modules/net_tools/nios/test_nios_ptr_record.py +++ /dev/null @@ -1,184 +0,0 @@ -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible.modules.net_tools.nios import nios_ptr_record -from ansible.module_utils.net_tools.nios import api -from units.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosPTRRecordModule(TestNiosModule): - - module = nios_ptr_record - - def setUp(self): - - super(TestNiosPTRRecordModule, self).setUp() - self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_ptr_record.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - - self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_ptr_record.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_ptr_record.WapiModule.run') - self.mock_wapi_run.start() - - self.load_config = self.mock_wapi_run.start() - - def tearDown(self): - super(TestNiosPTRRecordModule, self).tearDown() - self.mock_wapi.stop() - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_nios_ptr_record_create(self): - self.module.params = {'provider': None, 'state': 'present', 'ptrdname': 'ansible.test.com', - 'ipv4addr': '10.36.241.14', 'comment': None, 'extattrs': None, 'view': 'default'} - - test_object = None - test_spec = { - "ipv4addr": {"ib_req": True}, - "ptrdname": {"ib_req": True}, - "comment": {}, - "extattrs": {}, - "view": {"ib_req": True} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'ipv4addr': '10.36.241.14', 'ptrdname': 'ansible.test.com', 'view': 'default'}) - - def test_nios_ptr_record_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'ptrdname': 'ansible.test.com', - 'ipv4addr': '10.36.241.14', 'comment': None, 'extattrs': None, 'view': 'default'} - - ref = "record:ptr/ZG5zLm5ldHdvcmtfdmlldyQw:14.241.36.10.in-addr.arpa/default" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "ptrdname": "ansible.test.com", - "ipv4addr": "10.36.241.14", - "view": "default", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "ipv4addr": {"ib_req": True}, - "ptrdname": {"ib_req": True}, - "comment": {}, - "extattrs": {}, - "view": {"ib_req": True} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) - - def test_nios_ptr_record_update_comment(self): - self.module.params = {'provider': None, 'state': 'present', 'ptrdname': 'ansible.test.com', - 'ipv4addr': '10.36.241.14', 'comment': 'updated comment', 'extattrs': None, 'view': 'default'} - - test_object = [ - { - "comment": "test comment", - "_ref": "record:ptr/ZG5zLm5ldHdvcmtfdmlldyQw:14.241.36.10.in-addr.arpa/default", - "ptrdname": "ansible.test.com", - "ipv4addr": "10.36.241.14", - "extattrs": {}, - "view": "default" - } - ] - - test_spec = { - "ipv4addr": {"ib_req": True}, - "ptrdname": {"ib_req": True}, - "comment": {}, - "extattrs": {}, - "view": {"ib_req": True} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.update_object.called_once_with(test_object) - - def test_nios_ptr_record_update_record_ptrdname(self): - self.module.params = {'provider': None, 'state': 'present', 'ptrdname': 'ansible.test.org', - 'ipv4addr': '10.36.241.14', 'comment': 'comment', 'extattrs': None, 'view': 'default'} - - test_object = [ - { - "comment": "test comment", - "_ref": "record:ptr/ZG5zLm5ldHdvcmtfdmlldyQw:14.241.36.10.in-addr.arpa/default", - "ptrdname": "ansible.test.com", - "ipv4addr": "10.36.241.14", - "extattrs": {}, - "view": "default" - } - ] - - test_spec = { - "ipv4addr": {"ib_req": True}, - "ptrdname": {"ib_req": True}, - "comment": {}, - "extattrs": {}, - "view": {"ib_req": True} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.update_object.called_once_with(test_object) - - def test_nios_ptr6_record_create(self): - self.module.params = {'provider': None, 'state': 'present', 'ptrdname': 'ansible6.test.com', - 'ipv6addr': '2002:8ac3:802d:1242:20d:60ff:fe38:6d16', 'comment': None, 'extattrs': None, 'view': 'default'} - - test_object = None - test_spec = {"ipv6addr": {"ib_req": True}, - "ptrdname": {"ib_req": True}, - "comment": {}, - "extattrs": {}, - "view": {"ib_req": True}} - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'ipv6addr': '2002:8ac3:802d:1242:20d:60ff:fe38:6d16', - 'ptrdname': 'ansible6.test.com', 'view': 'default'}) diff --git a/test/units/modules/net_tools/nios/test_nios_srv_record.py b/test/units/modules/net_tools/nios/test_nios_srv_record.py deleted file mode 100644 index 2c0b27388c..0000000000 --- a/test/units/modules/net_tools/nios/test_nios_srv_record.py +++ /dev/null @@ -1,153 +0,0 @@ -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish - - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible.modules.net_tools.nios import nios_srv_record -from ansible.module_utils.net_tools.nios import api -from units.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosSRVRecordModule(TestNiosModule): - - module = nios_srv_record - - def setUp(self): - super(TestNiosSRVRecordModule, self).setUp() - self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_srv_record.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_srv_record.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_srv_record.WapiModule.run') - self.mock_wapi_run.start() - self.load_config = self.mock_wapi_run.start() - - def tearDown(self): - super(TestNiosSRVRecordModule, self).tearDown() - self.mock_wapi.stop() - self.mock_wapi_run.stop() - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_nios_srv_record_create(self): - self.module.params = {'provider': None, 'state': 'present', 'name': '_sip._tcp.service.ansible.com', - 'port': 5080, 'target': 'service1.ansible.com', 'priority': 10, 'weight': 10, - 'comment': None, 'extattrs': None} - - test_object = None - - test_spec = { - "name": {"ib_req": True}, - "port": {"ib_req": True}, - "target": {"ib_req": True}, - "priority": {"ib_req": True}, - "weight": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'name': self.module._check_type_dict().__getitem__(), - 'port': 5080, 'target': 'service1.ansible.com', 'priority': 10, 'weight': 10}) - - def test_nios_srv_record_update_comment(self): - self.module.params = {'provider': None, 'state': 'present', 'name': '_sip._tcp.service.ansible.com', - 'port': 5080, 'target': 'service1.ansible.com', 'priority': 10, 'weight': 10, - 'comment': None, 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "srvrecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "name": "_sip._tcp.service.ansible.com", - 'port': 5080, - "target": "mailhost.ansible.com", - "priority": 10, - 'weight': 10, - "extattrs": {} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "port": {"ib_req": True}, - "target": {"ib_req": True}, - "priority": {"ib_req": True}, - "weight": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - - def test_nios_srv_record_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'name': '_sip._tcp.service.ansible.com', - 'port': 5080, 'target': 'service1.ansible.com', 'priority': 10, 'weight': 10, - 'comment': None, 'extattrs': None} - - ref = "srvrecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/false" - - test_object = [ - { - "comment": "test comment", - "_ref": ref, - "name": "_sip._tcp.service.ansible.com", - "port": 5080, - "target": "mailhost.ansible.com", - "priority": 10, - "weight": 10, - "extattrs": {'Site': {'value': 'test'}} - } - ] - - test_spec = { - "name": {"ib_req": True}, - "port": {"ib_req": True}, - "target": {"ib_req": True}, - "priority": {"ib_req": True}, - "weight": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) diff --git a/test/units/modules/net_tools/nios/test_nios_zone.py b/test/units/modules/net_tools/nios/test_nios_zone.py deleted file mode 100644 index 39cd09dbda..0000000000 --- a/test/units/modules/net_tools/nios/test_nios_zone.py +++ /dev/null @@ -1,287 +0,0 @@ -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish - - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from ansible.modules.net_tools.nios import nios_zone -from ansible.module_utils.net_tools.nios import api -from units.compat.mock import patch, MagicMock, Mock -from .test_nios_module import TestNiosModule, load_fixture - - -class TestNiosZoneModule(TestNiosModule): - - module = nios_zone - - def setUp(self): - super(TestNiosZoneModule, self).setUp() - self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_zone.WapiModule') - self.module.check_mode = False - self.module.params = {'provider': None} - self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_zone.WapiModule') - self.exec_command = self.mock_wapi.start() - self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_zone.WapiModule.run') - self.mock_wapi_run.start() - self.load_config = self.mock_wapi_run.start() - - def tearDown(self): - super(TestNiosZoneModule, self).tearDown() - self.mock_wapi.stop() - self.mock_wapi_run.stop() - - def _get_wapi(self, test_object): - wapi = api.WapiModule(self.module) - wapi.get_object = Mock(name='get_object', return_value=test_object) - wapi.create_object = Mock(name='create_object') - wapi.update_object = Mock(name='update_object') - wapi.delete_object = Mock(name='delete_object') - return wapi - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_nios_zone_create(self): - self.module.params = {'provider': None, 'state': 'present', 'fqdn': 'ansible.com', - 'comment': None, 'extattrs': None} - - test_object = None - - test_spec = { - "fqdn": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'fqdn': 'ansible.com'}) - - def test_nios_zone_remove(self): - self.module.params = {'provider': None, 'state': 'absent', 'fqdn': 'ansible.com', - 'comment': None, 'extattrs': None} - - ref = "zone/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "fqdn": "ansible.com", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "fqdn": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) - - def test_nios_zone_update_comment(self): - self.module.params = {'provider': None, 'state': 'present', 'fqdn': 'ansible.com', - 'comment': 'updated comment', 'extattrs': None} - - test_object = [ - { - "comment": "test comment", - "_ref": "zone/ZG5zLm5ldHdvcmtfdmlldyQw:default/true", - "fqdn": "ansible.com", - "extattrs": {'Site': {'value': 'test'}} - } - ] - - test_spec = { - "fqdn": {"ib_req": True}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - - def test_nios_zone_create_using_grid_primary_secondaries(self): - self.module.params = {'provider': None, 'state': 'present', 'fqdn': 'ansible.com', - 'grid_primary': [{"name": "gridprimary.grid.com"}], - 'grid_secondaries': [{"name": "gridsecondary1.grid.com"}, - {"name": "gridsecondary2.grid.com"}], - 'restart_if_needed': True, - 'comment': None, 'extattrs': None} - - test_object = None - grid_spec = dict( - name=dict(required=True), - ) - test_spec = { - "fqdn": {"ib_req": True}, - "grid_primary": {}, - "grid_secondaries": {}, - "restart_if_needed": {}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'fqdn': 'ansible.com', - "grid_primary": [{"name": "gridprimary.grid.com"}], - "grid_secondaries": [{"name": "gridsecondary1.grid.com"}, - {"name": "gridsecondary2.grid.com"}], - "restart_if_needed": True - }) - - def test_nios_zone_remove_using_grid_primary_secondaries(self): - self.module.params = {'provider': None, 'state': 'absent', 'fqdn': 'ansible.com', - 'grid_primary': [{"name": "gridprimary.grid.com"}], - 'grid_secondaries': [{"name": "gridsecondary1.grid.com"}, - {"name": "gridsecondary2.grid.com"}], - 'restart_if_needed': True, - 'comment': None, 'extattrs': None} - - ref = "zone/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "fqdn": "ansible.com", - "grid_primary": [{"name": "gridprimary.grid.com"}], - "grid_secondaries": [{"name": "gridsecondary1.grid.com"}, {"name": "gridsecondary2.grid.com"}], - "restart_if_needed": True, - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "fqdn": {"ib_req": True}, - "grid_primary": {}, - "grid_secondaries": {}, - "restart_if_needed": {}, - "comment": {}, - "extattrs": {} - } - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) - - def test_nios_zone_create_using_name_server_group(self): - self.module.params = {'provider': None, 'state': 'present', 'fqdn': 'ansible.com', - 'ns_group': 'examplensg', 'comment': None, 'extattrs': None} - - test_object = None - - test_spec = { - "fqdn": {"ib_req": True}, - "ns_group": {}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'fqdn': 'ansible.com', - 'ns_group': 'examplensg'}) - - def test_nios_zone_remove_using_name_server_group(self): - self.module.params = {'provider': None, 'state': 'absent', 'fqdn': 'ansible.com', - 'ns_group': 'examplensg', 'comment': None, 'extattrs': None} - - ref = "zone/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "fqdn": "ansible.com", - "ns_group": "examplensg", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "fqdn": {"ib_req": True}, - "ns_group": {}, - "comment": {}, - "extattrs": {} - } - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) - - def test_nios_zone_create_using_zone_format(self): - self.module.params = {'provider': None, 'state': 'present', 'fqdn': '10.10.10.in-addr.arpa', - 'zone_format': 'IPV4', 'comment': None, 'extattrs': None} - - test_object = None - - test_spec = { - "fqdn": {"ib_req": True}, - "zone_format": {}, - "comment": {}, - "extattrs": {} - } - - wapi = self._get_wapi(test_object) - print("WAPI: ", wapi) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.create_object.assert_called_once_with('testobject', {'fqdn': '10.10.10.in-addr.arpa', - 'zone_format': 'IPV4'}) - - def test_nios_zone_remove_using_using_zone_format(self): - self.module.params = {'provider': None, 'state': 'absent', 'fqdn': 'ansible.com', - 'zone_format': 'IPV4', 'comment': None, 'extattrs': None} - - ref = "zone/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false" - - test_object = [{ - "comment": "test comment", - "_ref": ref, - "fqdn": "ansible.com", - "zone_format": "IPV4", - "extattrs": {'Site': {'value': 'test'}} - }] - - test_spec = { - "fqdn": {"ib_req": True}, - "zone_format": {}, - "comment": {}, - "extattrs": {} - } - wapi = self._get_wapi(test_object) - res = wapi.run('testobject', test_spec) - - self.assertTrue(res['changed']) - wapi.delete_object.assert_called_once_with(ref) diff --git a/test/units/modules/net_tools/test_hetzner_firewall.py b/test/units/modules/net_tools/test_hetzner_firewall.py deleted file mode 100644 index 870d8e3967..0000000000 --- a/test/units/modules/net_tools/test_hetzner_firewall.py +++ /dev/null @@ -1,1405 +0,0 @@ -# (c) 2019 Felix Fontein <felix@fontein.de> -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -import pytest - -from ansible.module_utils.hetzner import BASE_URL -from ansible.modules.net_tools import hetzner_firewall - - -# ########################################################## -# ## General test framework - -import json - -from mock import MagicMock -from units.modules.utils import set_module_args -from ansible.module_utils.six.moves.urllib.parse import parse_qs - - -class FetchUrlCall: - def __init__(self, method, status): - assert method == method.upper(), \ - 'HTTP method names are case-sensitive and should be upper-case (RFCs 7230 and 7231)' - self.method = method - self.status = status - self.body = None - self.headers = {} - self.error_data = {} - self.expected_url = None - self.expected_headers = {} - self.form_parse = False - self.form_present = set() - self.form_values = {} - self.form_values_one = {} - - def result(self, body): - self.body = body - assert self.error_data.get('body') is None, 'Error body must not be given' - return self - - def result_str(self, str_body): - return self.result(str_body.encode('utf-8')) - - def result_json(self, json_body): - return self.result(json.dumps(json_body).encode('utf-8')) - - def result_error(self, msg, body=None): - self.error_data['msg'] = msg - if body is not None: - self.error_data['body'] = body - assert self.body is None, 'Result must not be given if error body is provided' - return self - - def expect_url(self, url): - self.expected_url = url - return self - - def return_header(self, name, value): - assert value is not None - self.headers[name] = value - return self - - def expect_header(self, name, value): - self.expected_headers[name] = value - return self - - def expect_header_unset(self, name): - self.expected_headers[name] = None - return self - - def expect_form_present(self, key): - self.form_parse = True - self.form_present.append(key) - return self - - def expect_form_value(self, key, value): - self.form_parse = True - self.form_values[key] = [value] - return self - - def expect_form_value_absent(self, key): - self.form_parse = True - self.form_values[key] = [] - return self - - def expect_form_value_one_of(self, key, value): - self.form_parse = True - if key not in self.form_values_subset: - self.form_values_subset[key] = set() - self.form_values_subset[key].add(value) - return self - - -class FetchUrlProxy: - def __init__(self, calls): - self.calls = calls - self.index = 0 - - def _validate_form(self, call, data): - form = {} - if data is not None: - form = parse_qs(data, keep_blank_values=True) - for k in call.form_present: - assert k in form - for k, v in call.form_values.items(): - if len(v) == 0: - assert k not in form - else: - assert form[k] == v - for k, v in call.form_values_one.items(): - assert v <= set(form[k]) - - def _validate_headers(self, call, headers): - given_headers = {} - if headers is not None: - for k, v in headers.items(): - given_headers[k.lower()] = v - for k, v in call.expected_headers: - if v is None: - assert k.lower() not in given_headers, \ - 'Header "{0}" specified for fetch_url call, but should not be'.format(k) - else: - assert given_headers.get(k.lower()) == v, \ - 'Header "{0}" specified for fetch_url call, but with wrong value'.format(k) - - def __call__(self, module, url, data=None, headers=None, method=None, - use_proxy=True, force=False, last_mod_time=None, timeout=10, - use_gssapi=False, unix_socket=None, ca_path=None, cookies=None): - assert self.index < len(self.calls), 'Got more fetch_url calls than expected' - call = self.calls[self.index] - self.index += 1 - - # Validate call - assert method == call.method - if call.expected_url is not None: - assert url == call.expected_url, \ - 'Exepected URL does not match for fetch_url call' - if call.expected_headers: - self._validate_headers(call, headers) - if call.form_parse: - self._validate_form(call, data) - - # Compose result - info = dict(status=call.status) - for k, v in call.headers.items(): - info[k.lower()] = v - info.update(call.error_data) - res = object() - if call.body is not None: - res = MagicMock() - res.read = MagicMock(return_value=call.body) - return (res, info) - - def assert_is_done(self): - assert self.index == len(self.calls), 'Got less fetch_url calls than expected' - - -class ModuleExitException(Exception): - def __init__(self, kwargs): - self.kwargs = kwargs - - -class ModuleFailException(Exception): - def __init__(self, kwargs): - self.kwargs = kwargs - - -def run_module(mocker, module, arguments, fetch_url): - def exit_json(module, **kwargs): - module._return_formatted(kwargs) - raise ModuleExitException(kwargs) - - def fail_json(module, **kwargs): - module._return_formatted(kwargs) - raise ModuleFailException(kwargs) - - mocker.patch('ansible.module_utils.hetzner.fetch_url', fetch_url) - mocker.patch('ansible.module_utils.hetzner.time.sleep', lambda duration: None) - mocker.patch('ansible.modules.net_tools.hetzner_firewall.AnsibleModule.exit_json', exit_json) - mocker.patch('ansible.modules.net_tools.hetzner_firewall.AnsibleModule.fail_json', fail_json) - set_module_args(arguments) - module.main() - - -def run_module_success(mocker, module, arguments, fetch_url_calls): - fetch_url = FetchUrlProxy(fetch_url_calls or []) - with pytest.raises(ModuleExitException) as e: - run_module(mocker, module, arguments, fetch_url) - fetch_url.assert_is_done() - return e.value.kwargs - - -def run_module_failed(mocker, module, arguments, fetch_url_calls): - fetch_url = FetchUrlProxy(fetch_url_calls or []) - with pytest.raises(ModuleFailException) as e: - run_module(mocker, module, arguments, fetch_url) - fetch_url.assert_is_done() - return e.value.kwargs - - -# ########################################################## -# ## Hetzner firewall tests - - -# Tests for state (absent and present) - - -def test_absent_idempotency(mocker): - result = run_module_success(mocker, hetzner_firewall, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'state': 'absent', - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'disabled', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - ]) - assert result['changed'] is False - assert result['diff']['before']['status'] == 'disabled' - assert result['diff']['after']['status'] == 'disabled' - assert result['firewall']['status'] == 'disabled' - assert result['firewall']['server_ip'] == '1.2.3.4' - assert result['firewall']['server_number'] == 1 - - -def test_absent_changed(mocker): - result = run_module_success(mocker, hetzner_firewall, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'state': 'absent', - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'active', - 'whitelist_hos': True, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - FetchUrlCall('POST', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'disabled', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)) - .expect_form_value('status', 'disabled'), - ]) - assert result['changed'] is True - assert result['diff']['before']['status'] == 'active' - assert result['diff']['after']['status'] == 'disabled' - assert result['firewall']['status'] == 'disabled' - assert result['firewall']['server_ip'] == '1.2.3.4' - assert result['firewall']['server_number'] == 1 - - -def test_present_idempotency(mocker): - result = run_module_success(mocker, hetzner_firewall, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'state': 'present', - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'active', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - ]) - assert result['changed'] is False - assert result['diff']['before']['status'] == 'active' - assert result['diff']['after']['status'] == 'active' - assert result['firewall']['status'] == 'active' - assert result['firewall']['server_ip'] == '1.2.3.4' - assert result['firewall']['server_number'] == 1 - - -def test_present_changed(mocker): - result = run_module_success(mocker, hetzner_firewall, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'state': 'present', - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'disabled', - 'whitelist_hos': True, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - FetchUrlCall('POST', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'active', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)) - .expect_form_value('status', 'active'), - ]) - assert result['changed'] is True - assert result['diff']['before']['status'] == 'disabled' - assert result['diff']['after']['status'] == 'active' - assert result['firewall']['status'] == 'active' - assert result['firewall']['server_ip'] == '1.2.3.4' - assert result['firewall']['server_number'] == 1 - - -# Tests for state (absent and present) with check mode - - -def test_absent_idempotency_check(mocker): - result = run_module_success(mocker, hetzner_firewall, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'state': 'absent', - '_ansible_check_mode': True, - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'disabled', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - ]) - assert result['changed'] is False - assert result['diff']['before']['status'] == 'disabled' - assert result['diff']['after']['status'] == 'disabled' - assert result['firewall']['status'] == 'disabled' - assert result['firewall']['server_ip'] == '1.2.3.4' - assert result['firewall']['server_number'] == 1 - - -def test_absent_changed_check(mocker): - result = run_module_success(mocker, hetzner_firewall, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'state': 'absent', - '_ansible_check_mode': True, - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'active', - 'whitelist_hos': True, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - ]) - assert result['changed'] is True - assert result['diff']['before']['status'] == 'active' - assert result['diff']['after']['status'] == 'disabled' - assert result['firewall']['status'] == 'disabled' - assert result['firewall']['server_ip'] == '1.2.3.4' - assert result['firewall']['server_number'] == 1 - - -def test_present_idempotency_check(mocker): - result = run_module_success(mocker, hetzner_firewall, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'state': 'present', - '_ansible_check_mode': True, - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'active', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - ]) - assert result['changed'] is False - assert result['diff']['before']['status'] == 'active' - assert result['diff']['after']['status'] == 'active' - assert result['firewall']['status'] == 'active' - assert result['firewall']['server_ip'] == '1.2.3.4' - assert result['firewall']['server_number'] == 1 - - -def test_present_changed_check(mocker): - result = run_module_success(mocker, hetzner_firewall, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'state': 'present', - '_ansible_check_mode': True, - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'disabled', - 'whitelist_hos': True, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - ]) - assert result['changed'] is True - assert result['diff']['before']['status'] == 'disabled' - assert result['diff']['after']['status'] == 'active' - assert result['firewall']['status'] == 'active' - assert result['firewall']['server_ip'] == '1.2.3.4' - assert result['firewall']['server_number'] == 1 - - -# Tests for port - - -def test_port_idempotency(mocker): - result = run_module_success(mocker, hetzner_firewall, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'state': 'present', - 'port': 'main', - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'active', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - ]) - assert result['changed'] is False - assert result['diff']['before']['port'] == 'main' - assert result['diff']['after']['port'] == 'main' - assert result['firewall']['status'] == 'active' - assert result['firewall']['server_ip'] == '1.2.3.4' - assert result['firewall']['server_number'] == 1 - assert result['firewall']['port'] == 'main' - - -def test_port_changed(mocker): - result = run_module_success(mocker, hetzner_firewall, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'state': 'present', - 'port': 'main', - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'disabled', - 'whitelist_hos': True, - 'port': 'kvm', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - FetchUrlCall('POST', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'active', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)) - .expect_form_value('port', 'main'), - ]) - assert result['changed'] is True - assert result['diff']['before']['port'] == 'kvm' - assert result['diff']['after']['port'] == 'main' - assert result['firewall']['status'] == 'active' - assert result['firewall']['server_ip'] == '1.2.3.4' - assert result['firewall']['server_number'] == 1 - assert result['firewall']['port'] == 'main' - - -# Tests for whitelist_hos - - -def test_whitelist_hos_idempotency(mocker): - result = run_module_success(mocker, hetzner_firewall, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'state': 'present', - 'whitelist_hos': True, - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'active', - 'whitelist_hos': True, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - ]) - assert result['changed'] is False - assert result['diff']['before']['whitelist_hos'] is True - assert result['diff']['after']['whitelist_hos'] is True - assert result['firewall']['status'] == 'active' - assert result['firewall']['server_ip'] == '1.2.3.4' - assert result['firewall']['server_number'] == 1 - assert result['firewall']['whitelist_hos'] is True - - -def test_whitelist_hos_changed(mocker): - result = run_module_success(mocker, hetzner_firewall, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'state': 'present', - 'whitelist_hos': True, - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'disabled', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - FetchUrlCall('POST', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'active', - 'whitelist_hos': True, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)) - .expect_form_value('whitelist_hos', 'true'), - ]) - assert result['changed'] is True - assert result['diff']['before']['whitelist_hos'] is False - assert result['diff']['after']['whitelist_hos'] is True - assert result['firewall']['status'] == 'active' - assert result['firewall']['server_ip'] == '1.2.3.4' - assert result['firewall']['server_number'] == 1 - assert result['firewall']['whitelist_hos'] is True - - -# Tests for wait_for_configured in getting status - - -def test_wait_get(mocker): - result = run_module_success(mocker, hetzner_firewall, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'state': 'present', - 'wait_for_configured': True, - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'in process', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'active', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - ]) - assert result['changed'] is False - assert result['diff']['before']['status'] == 'active' - assert result['diff']['after']['status'] == 'active' - assert result['firewall']['status'] == 'active' - assert result['firewall']['server_ip'] == '1.2.3.4' - assert result['firewall']['server_number'] == 1 - - -def test_wait_get_timeout(mocker): - result = run_module_failed(mocker, hetzner_firewall, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'state': 'present', - 'wait_for_configured': True, - 'timeout': 0, - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'in process', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'in process', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - ]) - assert result['msg'] == 'Timeout while waiting for firewall to be configured.' - - -def test_nowait_get(mocker): - result = run_module_failed(mocker, hetzner_firewall, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'state': 'present', - 'wait_for_configured': False, - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'in process', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - ]) - assert result['msg'] == 'Firewall configuration cannot be read as it is not configured.' - - -# Tests for wait_for_configured in setting status - - -def test_wait_update(mocker): - result = run_module_success(mocker, hetzner_firewall, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'wait_for_configured': True, - 'state': 'present', - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'disabled', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - FetchUrlCall('POST', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'in process', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'active', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - ]) - assert result['changed'] is True - assert result['diff']['before']['status'] == 'disabled' - assert result['diff']['after']['status'] == 'active' - assert result['firewall']['status'] == 'active' - assert result['firewall']['server_ip'] == '1.2.3.4' - assert result['firewall']['server_number'] == 1 - - -def test_wait_update_timeout(mocker): - result = run_module_success(mocker, hetzner_firewall, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'state': 'present', - 'wait_for_configured': True, - 'timeout': 0, - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'disabled', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - FetchUrlCall('POST', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'in process', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'in process', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - ]) - assert result['changed'] is True - assert result['diff']['before']['status'] == 'disabled' - assert result['diff']['after']['status'] == 'active' - assert result['firewall']['status'] == 'in process' - assert result['firewall']['server_ip'] == '1.2.3.4' - assert result['firewall']['server_number'] == 1 - assert 'Timeout while waiting for firewall to be configured.' in result['warnings'] - - -def test_nowait_update(mocker): - result = run_module_success(mocker, hetzner_firewall, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'state': 'present', - 'wait_for_configured': False, - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'disabled', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - FetchUrlCall('POST', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'in process', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - ]) - assert result['changed'] is True - assert result['diff']['before']['status'] == 'disabled' - assert result['diff']['after']['status'] == 'active' - assert result['firewall']['status'] == 'in process' - assert result['firewall']['server_ip'] == '1.2.3.4' - assert result['firewall']['server_number'] == 1 - - -# Idempotency checks: different amount of input rules - -def test_input_rule_len_change_0_1(mocker): - result = run_module_success(mocker, hetzner_firewall, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'state': 'present', - 'rules': { - 'input': [ - { - 'ip_version': 'ipv4', - 'action': 'discard', - }, - ], - }, - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'active', - 'whitelist_hos': True, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - FetchUrlCall('POST', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'active', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [ - { - 'name': None, - 'ip_version': 'ipv4', - 'dst_ip': None, - 'dst_port': None, - 'src_ip': None, - 'src_port': None, - 'protocol': None, - 'tcp_flags': None, - 'action': 'discard', - }, - ], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)) - .expect_form_value('status', 'active') - .expect_form_value_absent('rules[input][0][name]') - .expect_form_value('rules[input][0][ip_version]', 'ipv4') - .expect_form_value_absent('rules[input][0][dst_ip]') - .expect_form_value_absent('rules[input][0][dst_port]') - .expect_form_value_absent('rules[input][0][src_ip]') - .expect_form_value_absent('rules[input][0][src_port]') - .expect_form_value_absent('rules[input][0][protocol]') - .expect_form_value_absent('rules[input][0][tcp_flags]') - .expect_form_value('rules[input][0][action]', 'discard') - .expect_form_value_absent('rules[input][1][action]'), - ]) - assert result['changed'] is True - assert result['diff']['before']['status'] == 'active' - assert result['diff']['after']['status'] == 'active' - assert len(result['diff']['before']['rules']['input']) == 0 - assert len(result['diff']['after']['rules']['input']) == 1 - assert result['firewall']['status'] == 'active' - assert len(result['firewall']['rules']['input']) == 1 - - -def test_input_rule_len_change_1_0(mocker): - result = run_module_success(mocker, hetzner_firewall, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'state': 'present', - 'rules': { - }, - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'active', - 'whitelist_hos': True, - 'port': 'main', - 'rules': { - 'input': [ - { - 'name': None, - 'ip_version': 'ipv4', - 'dst_ip': None, - 'dst_port': None, - 'src_ip': None, - 'src_port': None, - 'protocol': None, - 'tcp_flags': None, - 'action': 'discard', - }, - ], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - FetchUrlCall('POST', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'active', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)) - .expect_form_value('status', 'active') - .expect_form_value_absent('rules[input][0][action]'), - ]) - assert result['changed'] is True - assert result['diff']['before']['status'] == 'active' - assert result['diff']['after']['status'] == 'active' - assert len(result['diff']['before']['rules']['input']) == 1 - assert len(result['diff']['after']['rules']['input']) == 0 - assert result['firewall']['status'] == 'active' - assert len(result['firewall']['rules']['input']) == 0 - - -def test_input_rule_len_change_1_2(mocker): - result = run_module_success(mocker, hetzner_firewall, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'state': 'present', - 'rules': { - 'input': [ - { - 'ip_version': 'ipv4', - 'dst_port': 80, - 'protocol': 'tcp', - 'action': 'accept', - }, - { - 'ip_version': 'ipv4', - 'action': 'discard', - }, - ], - }, - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'active', - 'whitelist_hos': True, - 'port': 'main', - 'rules': { - 'input': [ - { - 'name': None, - 'ip_version': 'ipv4', - 'dst_ip': None, - 'dst_port': None, - 'src_ip': None, - 'src_port': None, - 'protocol': None, - 'tcp_flags': None, - 'action': 'discard', - }, - ], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - FetchUrlCall('POST', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'active', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [ - { - 'name': None, - 'ip_version': 'ipv4', - 'dst_ip': None, - 'dst_port': '80', - 'src_ip': None, - 'src_port': None, - 'protocol': 'tcp', - 'tcp_flags': None, - 'action': 'accept', - }, - { - 'name': None, - 'ip_version': 'ipv4', - 'dst_ip': None, - 'dst_port': None, - 'src_ip': None, - 'src_port': None, - 'protocol': None, - 'tcp_flags': None, - 'action': 'discard', - }, - ], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)) - .expect_form_value('status', 'active') - .expect_form_value('rules[input][0][action]', 'accept') - .expect_form_value('rules[input][1][action]', 'discard') - .expect_form_value_absent('rules[input][2][action]'), - ]) - assert result['changed'] is True - assert result['diff']['before']['status'] == 'active' - assert result['diff']['after']['status'] == 'active' - assert len(result['diff']['before']['rules']['input']) == 1 - assert len(result['diff']['after']['rules']['input']) == 2 - assert result['firewall']['status'] == 'active' - assert len(result['firewall']['rules']['input']) == 2 - - -# Idempotency checks: change one value - - -def create_params(parameter, *values): - assert len(values) > 1 - result = [] - for i in range(1, len(values)): - result.append((parameter, values[i - 1], values[i])) - return result - - -def flatten(list_of_lists): - result = [] - for l in list_of_lists: - result.extend(l) - return result - - -@pytest.mark.parametrize("parameter, before, after", flatten([ - create_params('name', None, '', 'Test', 'Test', 'foo', '', None), - create_params('ip_version', 'ipv4', 'ipv4', 'ipv6', 'ipv6'), - create_params('dst_ip', None, '1.2.3.4/24', '1.2.3.4/32', '1.2.3.4/32', None), - create_params('dst_port', None, '80', '80-443', '80-443', None), - create_params('src_ip', None, '1.2.3.4/24', '1.2.3.4/32', '1.2.3.4/32', None), - create_params('src_port', None, '80', '80-443', '80-443', None), - create_params('protocol', None, 'tcp', 'tcp', 'udp', 'udp', None), - create_params('tcp_flags', None, 'syn', 'syn|fin', 'syn|fin', 'syn&fin', '', None), - create_params('action', 'accept', 'accept', 'discard', 'discard'), -])) -def test_input_rule_value_change(mocker, parameter, before, after): - input_call = { - 'ip_version': 'ipv4', - 'action': 'discard', - } - input_before = { - 'name': None, - 'ip_version': 'ipv4', - 'dst_ip': None, - 'dst_port': None, - 'src_ip': None, - 'src_port': None, - 'protocol': None, - 'tcp_flags': None, - 'action': 'discard', - } - input_after = { - 'name': None, - 'ip_version': 'ipv4', - 'dst_ip': None, - 'dst_port': None, - 'src_ip': None, - 'src_port': None, - 'protocol': None, - 'tcp_flags': None, - 'action': 'discard', - } - if after is not None: - input_call[parameter] = after - input_before[parameter] = before - input_after[parameter] = after - - calls = [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'active', - 'whitelist_hos': True, - 'port': 'main', - 'rules': { - 'input': [input_before], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - ] - - changed = (before != after) - if changed: - after_call = ( - FetchUrlCall('POST', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'active', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [input_after], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)) - .expect_form_value('status', 'active') - .expect_form_value_absent('rules[input][1][action]') - ) - if parameter != 'ip_version': - after_call.expect_form_value('rules[input][0][ip_version]', 'ipv4') - if parameter != 'action': - after_call.expect_form_value('rules[input][0][action]', 'discard') - if after is not None: - after_call.expect_form_value('rules[input][0][{0}]'.format(parameter), after) - else: - after_call.expect_form_value_absent('rules[input][0][{0}]'.format(parameter)) - calls.append(after_call) - - result = run_module_success(mocker, hetzner_firewall, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'state': 'present', - 'rules': { - 'input': [input_call], - }, - }, calls) - assert result['changed'] == changed - assert result['diff']['before']['status'] == 'active' - assert result['diff']['after']['status'] == 'active' - assert len(result['diff']['before']['rules']['input']) == 1 - assert len(result['diff']['after']['rules']['input']) == 1 - assert result['diff']['before']['rules']['input'][0][parameter] == before - assert result['diff']['after']['rules']['input'][0][parameter] == after - assert result['firewall']['status'] == 'active' - assert len(result['firewall']['rules']['input']) == 1 - assert result['firewall']['rules']['input'][0][parameter] == after - - -# Idempotency checks: IP address normalization - - -@pytest.mark.parametrize("ip_version, parameter, before_normalized, after_normalized, after", [ - ('ipv4', 'src_ip', '1.2.3.4/32', '1.2.3.4/32', '1.2.3.4'), - ('ipv6', 'src_ip', '1:2:3::4/128', '1:2:3::4/128', '1:2:3::4'), - ('ipv6', 'dst_ip', '1:2:3::4/128', '1:2:3::4/128', '1:2:3:0::4'), - ('ipv6', 'dst_ip', '::/0', '::/0', '0:0::0/0'), -]) -def test_input_rule_ip_normalization(mocker, ip_version, parameter, before_normalized, after_normalized, after): - assert ip_version in ('ipv4', 'ipv6') - assert parameter in ('src_ip', 'dst_ip') - input_call = { - 'ip_version': ip_version, - 'action': 'discard', - } - input_before = { - 'name': None, - 'ip_version': ip_version, - 'dst_ip': None, - 'dst_port': None, - 'src_ip': None, - 'src_port': None, - 'protocol': None, - 'tcp_flags': None, - 'action': 'discard', - } - input_after = { - 'name': None, - 'ip_version': ip_version, - 'dst_ip': None, - 'dst_port': None, - 'src_ip': None, - 'src_port': None, - 'protocol': None, - 'tcp_flags': None, - 'action': 'discard', - } - if after is not None: - input_call[parameter] = after - input_before[parameter] = before_normalized - input_after[parameter] = after_normalized - - calls = [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'active', - 'whitelist_hos': True, - 'port': 'main', - 'rules': { - 'input': [input_before], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - ] - - changed = (before_normalized != after_normalized) - if changed: - after_call = ( - FetchUrlCall('POST', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'active', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [input_after], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)) - .expect_form_value('status', 'active') - .expect_form_value_absent('rules[input][1][action]') - ) - after_call.expect_form_value('rules[input][0][ip_version]', ip_version) - after_call.expect_form_value('rules[input][0][action]', 'discard') - after_call.expect_form_value('rules[input][0][{0}]'.format(parameter), after_normalized) - calls.append(after_call) - - result = run_module_success(mocker, hetzner_firewall, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'state': 'present', - 'rules': { - 'input': [input_call], - }, - }, calls) - assert result['changed'] == changed - assert result['diff']['before']['status'] == 'active' - assert result['diff']['after']['status'] == 'active' - assert len(result['diff']['before']['rules']['input']) == 1 - assert len(result['diff']['after']['rules']['input']) == 1 - assert result['diff']['before']['rules']['input'][0][parameter] == before_normalized - assert result['diff']['after']['rules']['input'][0][parameter] == after_normalized - assert result['firewall']['status'] == 'active' - assert len(result['firewall']['rules']['input']) == 1 - assert result['firewall']['rules']['input'][0][parameter] == after_normalized diff --git a/test/units/modules/net_tools/test_hetzner_firewall_info.py b/test/units/modules/net_tools/test_hetzner_firewall_info.py deleted file mode 100644 index a21d2d8056..0000000000 --- a/test/units/modules/net_tools/test_hetzner_firewall_info.py +++ /dev/null @@ -1,239 +0,0 @@ -# (c) 2019 Felix Fontein <felix@fontein.de> -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -import pytest - -from ansible.module_utils.hetzner import BASE_URL -from ansible.modules.net_tools import hetzner_firewall_info -from .test_hetzner_firewall import FetchUrlCall, run_module_success, run_module_failed - - -# Tests for state (absent and present) - - -def test_absent(mocker): - result = run_module_success(mocker, hetzner_firewall_info, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'disabled', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - ]) - assert result['changed'] is False - assert result['firewall']['status'] == 'disabled' - assert result['firewall']['server_ip'] == '1.2.3.4' - assert result['firewall']['server_number'] == 1 - - -def test_present(mocker): - result = run_module_success(mocker, hetzner_firewall_info, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'active', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - ]) - assert result['changed'] is False - assert result['firewall']['status'] == 'active' - assert result['firewall']['server_ip'] == '1.2.3.4' - assert result['firewall']['server_number'] == 1 - assert len(result['firewall']['rules']['input']) == 0 - - -def test_present_w_rules(mocker): - result = run_module_success(mocker, hetzner_firewall_info, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'active', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [ - { - 'name': 'Accept HTTPS traffic', - 'ip_version': 'ipv4', - 'dst_ip': None, - 'dst_port': '443', - 'src_ip': None, - 'src_port': None, - 'protocol': 'tcp', - 'tcp_flags': None, - 'action': 'accept', - }, - { - 'name': None, - 'ip_version': 'ipv4', - 'dst_ip': None, - 'dst_port': None, - 'src_ip': None, - 'src_port': None, - 'protocol': None, - 'tcp_flags': None, - 'action': 'discard', - } - ], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - ]) - assert result['changed'] is False - assert result['firewall']['status'] == 'active' - assert result['firewall']['server_ip'] == '1.2.3.4' - assert result['firewall']['server_number'] == 1 - assert len(result['firewall']['rules']['input']) == 2 - assert result['firewall']['rules']['input'][0]['name'] == 'Accept HTTPS traffic' - assert result['firewall']['rules']['input'][0]['dst_port'] == '443' - assert result['firewall']['rules']['input'][0]['action'] == 'accept' - assert result['firewall']['rules']['input'][1]['dst_port'] is None - assert result['firewall']['rules']['input'][1]['action'] == 'discard' - - -# Tests for wait_for_configured in getting status - - -def test_wait_get(mocker): - result = run_module_success(mocker, hetzner_firewall_info, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'wait_for_configured': True, - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'in process', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'active', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - ]) - assert result['changed'] is False - assert result['firewall']['status'] == 'active' - assert result['firewall']['server_ip'] == '1.2.3.4' - assert result['firewall']['server_number'] == 1 - - -def test_wait_get_timeout(mocker): - result = run_module_failed(mocker, hetzner_firewall_info, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'wait_for_configured': True, - 'timeout': 0, - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'in process', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'in process', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - ]) - assert result['msg'] == 'Timeout while waiting for firewall to be configured.' - - -def test_nowait_get(mocker): - result = run_module_success(mocker, hetzner_firewall_info, { - 'hetzner_user': '', - 'hetzner_password': '', - 'server_ip': '1.2.3.4', - 'wait_for_configured': False, - }, [ - FetchUrlCall('GET', 200) - .result_json({ - 'firewall': { - 'server_ip': '1.2.3.4', - 'server_number': 1, - 'status': 'in process', - 'whitelist_hos': False, - 'port': 'main', - 'rules': { - 'input': [], - }, - }, - }) - .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)), - ]) - assert result['changed'] is False - assert result['firewall']['status'] == 'in process' - assert result['firewall']['server_ip'] == '1.2.3.4' - assert result['firewall']['server_number'] == 1 diff --git a/test/units/modules/net_tools/test_nmcli.py b/test/units/modules/net_tools/test_nmcli.py deleted file mode 100644 index 94ee5f2a82..0000000000 --- a/test/units/modules/net_tools/test_nmcli.py +++ /dev/null @@ -1,656 +0,0 @@ -# Copyright: (c) 2017 Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -import json - -import pytest - -from ansible.modules.net_tools import nmcli - -pytestmark = pytest.mark.usefixtures('patch_ansible_module') - -TESTCASE_CONNECTION = [ - { - 'type': 'ethernet', - 'conn_name': 'non_existent_nw_device', - 'state': 'absent', - '_ansible_check_mode': True, - }, - { - 'type': 'generic', - 'conn_name': 'non_existent_nw_device', - 'state': 'absent', - '_ansible_check_mode': True, - }, - { - 'type': 'team', - 'conn_name': 'non_existent_nw_device', - 'state': 'absent', - '_ansible_check_mode': True, - }, - { - 'type': 'bond', - 'conn_name': 'non_existent_nw_device', - 'state': 'absent', - '_ansible_check_mode': True, - }, - { - 'type': 'bond-slave', - 'conn_name': 'non_existent_nw_device', - 'state': 'absent', - '_ansible_check_mode': True, - }, - { - 'type': 'bridge', - 'conn_name': 'non_existent_nw_device', - 'state': 'absent', - '_ansible_check_mode': True, - }, - { - 'type': 'vlan', - 'conn_name': 'non_existent_nw_device', - 'state': 'absent', - '_ansible_check_mode': True, - }, - { - 'type': 'vxlan', - 'conn_name': 'non_existent_nw_device', - 'state': 'absent', - '_ansible_check_mode': True, - }, - { - 'type': 'ipip', - 'conn_name': 'non_existent_nw_device', - 'state': 'absent', - '_ansible_check_mode': True, - }, - { - 'type': 'sit', - 'conn_name': 'non_existent_nw_device', - 'state': 'absent', - '_ansible_check_mode': True, - }, -] - -TESTCASE_GENERIC = [ - { - 'type': 'generic', - 'conn_name': 'non_existent_nw_device', - 'ifname': 'generic_non_existant', - 'ip4': '10.10.10.10', - 'gw4': '10.10.10.1', - 'state': 'present', - '_ansible_check_mode': False, - }, -] - -TESTCASE_GENERIC_DNS4_SEARCH = [ - { - 'type': 'generic', - 'conn_name': 'non_existent_nw_device', - 'ifname': 'generic_non_existant', - 'ip4': '10.10.10.10', - 'gw4': '10.10.10.1', - 'state': 'present', - 'dns4_search': 'search.redhat.com', - 'dns6_search': 'search6.redhat.com', - '_ansible_check_mode': False, - } -] - -TESTCASE_BOND = [ - { - 'type': 'bond', - 'conn_name': 'non_existent_nw_device', - 'ifname': 'bond_non_existant', - 'mode': 'active-backup', - 'ip4': '10.10.10.10', - 'gw4': '10.10.10.1', - 'state': 'present', - 'primary': 'non_existent_primary', - '_ansible_check_mode': False, - } -] - -TESTCASE_BRIDGE = [ - { - 'type': 'bridge', - 'conn_name': 'non_existent_nw_device', - 'ifname': 'br0_non_existant', - 'ip4': '10.10.10.10', - 'gw4': '10.10.10.1', - 'maxage': 100, - 'stp': True, - 'state': 'present', - '_ansible_check_mode': False, - } -] - -TESTCASE_BRIDGE_SLAVE = [ - { - 'type': 'bridge-slave', - 'conn_name': 'non_existent_nw_device', - 'ifname': 'br0_non_existant', - 'path_cost': 100, - 'state': 'present', - '_ansible_check_mode': False, - } -] - -TESTCASE_VLAN = [ - { - 'type': 'vlan', - 'conn_name': 'non_existent_nw_device', - 'ifname': 'vlan_not_exists', - 'ip4': '10.10.10.10', - 'gw4': '10.10.10.1', - 'vlanid': 10, - 'state': 'present', - '_ansible_check_mode': False, - } -] - -TESTCASE_VXLAN = [ - { - 'type': 'vxlan', - 'conn_name': 'non_existent_nw_device', - 'ifname': 'vxlan-existent_nw_device', - 'vxlan_id': 11, - 'vxlan_local': '192.168.225.5', - 'vxlan_remote': '192.168.225.6', - 'state': 'present', - '_ansible_check_mode': False, - } -] - -TESTCASE_IPIP = [ - { - 'type': 'ipip', - 'conn_name': 'non_existent_nw_device', - 'ifname': 'ipip-existent_nw_device', - 'ip_tunnel_dev': 'non_existent_ipip_device', - 'ip_tunnel_local': '192.168.225.5', - 'ip_tunnel_remote': '192.168.225.6', - 'state': 'present', - '_ansible_check_mode': False, - } -] - -TESTCASE_SIT = [ - { - 'type': 'sit', - 'conn_name': 'non_existent_nw_device', - 'ifname': 'sit-existent_nw_device', - 'ip_tunnel_dev': 'non_existent_sit_device', - 'ip_tunnel_local': '192.168.225.5', - 'ip_tunnel_remote': '192.168.225.6', - 'state': 'present', - '_ansible_check_mode': False, - } -] - -TESTCASE_ETHERNET_DHCP = [ - { - 'type': 'ethernet', - 'conn_name': 'non_existent_nw_device', - 'ifname': 'ethernet_non_existant', - 'ip4': '10.10.10.10', - 'gw4': '10.10.10.1', - 'state': 'present', - '_ansible_check_mode': False, - 'dhcp_client_id': '00:11:22:AA:BB:CC:DD', - } -] - - -def mocker_set(mocker, connection_exists=False): - """ - Common mocker object - """ - mocker.patch('ansible.modules.net_tools.nmcli.HAVE_DBUS', True) - mocker.patch('ansible.modules.net_tools.nmcli.HAVE_NM_CLIENT', True) - get_bin_path = mocker.patch('ansible.module_utils.basic.AnsibleModule.get_bin_path') - get_bin_path.return_value = '/usr/bin/nmcli' - connection = mocker.patch.object(nmcli.Nmcli, 'connection_exists') - connection.return_value = connection_exists - return connection - - -@pytest.fixture -def mocked_generic_connection_create(mocker): - mocker_set(mocker) - command_result = mocker.patch.object(nmcli.Nmcli, 'execute_command') - command_result.return_value = {"rc": 100, "out": "aaa", "err": "none"} - return command_result - - -@pytest.fixture -def mocked_generic_connection_modify(mocker): - mocker_set(mocker, connection_exists=True) - command_result = mocker.patch.object(nmcli.Nmcli, 'execute_command') - command_result.return_value = {"rc": 100, "out": "aaa", "err": "none"} - return command_result - - -@pytest.fixture -def mocked_connection_exists(mocker): - connection = mocker_set(mocker, connection_exists=True) - return connection - - -@pytest.mark.parametrize('patch_ansible_module', TESTCASE_BOND, indirect=['patch_ansible_module']) -def test_bond_connection_create(mocked_generic_connection_create): - """ - Test : Bond connection created - """ - with pytest.raises(SystemExit): - nmcli.main() - - assert nmcli.Nmcli.execute_command.call_count == 1 - arg_list = nmcli.Nmcli.execute_command.call_args_list - args, kwargs = arg_list[0] - - assert args[0][0] == '/usr/bin/nmcli' - assert args[0][1] == 'con' - assert args[0][2] == 'add' - assert args[0][3] == 'type' - assert args[0][4] == 'bond' - assert args[0][5] == 'con-name' - assert args[0][6] == 'non_existent_nw_device' - assert args[0][7] == 'ifname' - assert args[0][8] == 'bond_non_existant' - - for param in ['gw4', 'primary', 'autoconnect', 'mode', 'active-backup', 'ip4']: - assert param in args[0] - - -@pytest.mark.parametrize('patch_ansible_module', TESTCASE_GENERIC, indirect=['patch_ansible_module']) -def test_generic_connection_create(mocked_generic_connection_create): - """ - Test : Generic connection created - """ - with pytest.raises(SystemExit): - nmcli.main() - - assert nmcli.Nmcli.execute_command.call_count == 1 - arg_list = nmcli.Nmcli.execute_command.call_args_list - args, kwargs = arg_list[0] - - assert args[0][0] == '/usr/bin/nmcli' - assert args[0][1] == 'con' - assert args[0][2] == 'add' - assert args[0][3] == 'type' - assert args[0][4] == 'generic' - assert args[0][5] == 'con-name' - assert args[0][6] == 'non_existent_nw_device' - - for param in ['autoconnect', 'gw4', 'ip4']: - assert param in args[0] - - -@pytest.mark.parametrize('patch_ansible_module', TESTCASE_GENERIC, indirect=['patch_ansible_module']) -def test_generic_connection_modify(mocked_generic_connection_modify): - """ - Test : Generic connection modify - """ - with pytest.raises(SystemExit): - nmcli.main() - - assert nmcli.Nmcli.execute_command.call_count == 1 - arg_list = nmcli.Nmcli.execute_command.call_args_list - args, kwargs = arg_list[0] - - assert args[0][0] == '/usr/bin/nmcli' - assert args[0][1] == 'con' - assert args[0][2] == 'mod' - assert args[0][3] == 'non_existent_nw_device' - - for param in ['ipv4.gateway', 'ipv4.address']: - assert param in args[0] - - -@pytest.mark.parametrize('patch_ansible_module', TESTCASE_GENERIC_DNS4_SEARCH, indirect=['patch_ansible_module']) -def test_generic_connection_create_dns_search(mocked_generic_connection_create): - """ - Test : Generic connection created with dns search - """ - with pytest.raises(SystemExit): - nmcli.main() - - assert nmcli.Nmcli.execute_command.call_count == 1 - arg_list = nmcli.Nmcli.execute_command.call_args_list - args, kwargs = arg_list[0] - - assert 'ipv4.dns-search' in args[0] - assert 'ipv6.dns-search' in args[0] - - -@pytest.mark.parametrize('patch_ansible_module', TESTCASE_GENERIC_DNS4_SEARCH, indirect=['patch_ansible_module']) -def test_generic_connection_modify_dns_search(mocked_generic_connection_create): - """ - Test : Generic connection modified with dns search - """ - with pytest.raises(SystemExit): - nmcli.main() - - assert nmcli.Nmcli.execute_command.call_count == 1 - arg_list = nmcli.Nmcli.execute_command.call_args_list - args, kwargs = arg_list[0] - - assert 'ipv4.dns-search' in args[0] - assert 'ipv6.dns-search' in args[0] - - -@pytest.mark.parametrize('patch_ansible_module', TESTCASE_CONNECTION, indirect=['patch_ansible_module']) -def test_dns4_none(mocked_connection_exists, capfd): - """ - Test if DNS4 param is None - """ - with pytest.raises(SystemExit): - nmcli.main() - - out, err = capfd.readouterr() - results = json.loads(out) - assert results['changed'] - - -@pytest.mark.parametrize('patch_ansible_module', TESTCASE_BRIDGE, indirect=['patch_ansible_module']) -def test_create_bridge(mocked_generic_connection_create): - """ - Test if Bridge created - """ - with pytest.raises(SystemExit): - nmcli.main() - - assert nmcli.Nmcli.execute_command.call_count == 1 - arg_list = nmcli.Nmcli.execute_command.call_args_list - args, kwargs = arg_list[0] - - assert args[0][0] == '/usr/bin/nmcli' - assert args[0][1] == 'con' - assert args[0][2] == 'add' - assert args[0][3] == 'type' - assert args[0][4] == 'bridge' - assert args[0][5] == 'con-name' - assert args[0][6] == 'non_existent_nw_device' - - for param in ['ip4', '10.10.10.10', 'gw4', '10.10.10.1', 'bridge.max-age', 100, 'bridge.stp', 'yes']: - assert param in args[0] - - -@pytest.mark.parametrize('patch_ansible_module', TESTCASE_BRIDGE, indirect=['patch_ansible_module']) -def test_mod_bridge(mocked_generic_connection_modify): - """ - Test if Bridge modified - """ - with pytest.raises(SystemExit): - nmcli.main() - - assert nmcli.Nmcli.execute_command.call_count == 1 - - arg_list = nmcli.Nmcli.execute_command.call_args_list - args, kwargs = arg_list[0] - - assert args[0][0] == '/usr/bin/nmcli' - assert args[0][1] == 'con' - assert args[0][2] == 'mod' - assert args[0][3] == 'non_existent_nw_device' - for param in ['ipv4.address', '10.10.10.10', 'ipv4.gateway', '10.10.10.1', 'bridge.max-age', 100, 'bridge.stp', 'yes']: - assert param in args[0] - - -@pytest.mark.parametrize('patch_ansible_module', TESTCASE_BRIDGE_SLAVE, indirect=['patch_ansible_module']) -def test_create_bridge_slave(mocked_generic_connection_create): - """ - Test if Bridge_slave created - """ - - with pytest.raises(SystemExit): - nmcli.main() - - assert nmcli.Nmcli.execute_command.call_count == 1 - arg_list = nmcli.Nmcli.execute_command.call_args_list - args, kwargs = arg_list[0] - - assert args[0][0] == '/usr/bin/nmcli' - assert args[0][1] == 'con' - assert args[0][2] == 'add' - assert args[0][3] == 'type' - assert args[0][4] == 'bridge-slave' - assert args[0][5] == 'con-name' - assert args[0][6] == 'non_existent_nw_device' - - for param in ['bridge-port.path-cost', 100]: - assert param in args[0] - - -@pytest.mark.parametrize('patch_ansible_module', TESTCASE_BRIDGE_SLAVE, indirect=['patch_ansible_module']) -def test_mod_bridge_slave(mocked_generic_connection_modify): - """ - Test if Bridge_slave modified - """ - - with pytest.raises(SystemExit): - nmcli.main() - - assert nmcli.Nmcli.execute_command.call_count == 1 - arg_list = nmcli.Nmcli.execute_command.call_args_list - args, kwargs = arg_list[0] - - assert args[0][0] == '/usr/bin/nmcli' - assert args[0][1] == 'con' - assert args[0][2] == 'mod' - assert args[0][3] == 'non_existent_nw_device' - - for param in ['bridge-port.path-cost', 100]: - assert param in args[0] - - -@pytest.mark.parametrize('patch_ansible_module', TESTCASE_VLAN, indirect=['patch_ansible_module']) -def test_create_vlan_con(mocked_generic_connection_create): - """ - Test if VLAN created - """ - - with pytest.raises(SystemExit): - nmcli.main() - - assert nmcli.Nmcli.execute_command.call_count == 1 - arg_list = nmcli.Nmcli.execute_command.call_args_list - args, kwargs = arg_list[0] - - assert args[0][0] == '/usr/bin/nmcli' - assert args[0][1] == 'con' - assert args[0][2] == 'add' - assert args[0][3] == 'type' - assert args[0][4] == 'vlan' - assert args[0][5] == 'con-name' - assert args[0][6] == 'non_existent_nw_device' - - for param in ['ip4', '10.10.10.10', 'gw4', '10.10.10.1', 'id', '10']: - assert param in args[0] - - -@pytest.mark.parametrize('patch_ansible_module', TESTCASE_VLAN, indirect=['patch_ansible_module']) -def test_mod_vlan_conn(mocked_generic_connection_modify): - """ - Test if VLAN modified - """ - - with pytest.raises(SystemExit): - nmcli.main() - - assert nmcli.Nmcli.execute_command.call_count == 1 - arg_list = nmcli.Nmcli.execute_command.call_args_list - args, kwargs = arg_list[0] - - assert args[0][0] == '/usr/bin/nmcli' - assert args[0][1] == 'con' - assert args[0][2] == 'mod' - assert args[0][3] == 'non_existent_nw_device' - - for param in ['ipv4.address', '10.10.10.10', 'ipv4.gateway', '10.10.10.1', 'vlan.id', '10']: - assert param in args[0] - - -@pytest.mark.parametrize('patch_ansible_module', TESTCASE_VXLAN, indirect=['patch_ansible_module']) -def test_create_vxlan(mocked_generic_connection_create): - """ - Test if vxlan created - """ - with pytest.raises(SystemExit): - nmcli.main() - - assert nmcli.Nmcli.execute_command.call_count == 1 - arg_list = nmcli.Nmcli.execute_command.call_args_list - args, kwargs = arg_list[0] - - assert args[0][0] == '/usr/bin/nmcli' - assert args[0][1] == 'con' - assert args[0][2] == 'add' - assert args[0][3] == 'type' - assert args[0][4] == 'vxlan' - assert args[0][5] == 'con-name' - assert args[0][6] == 'non_existent_nw_device' - assert args[0][7] == 'ifname' - - for param in ['vxlan.local', '192.168.225.5', 'vxlan.remote', '192.168.225.6', 'vxlan.id', 11]: - assert param in args[0] - - -@pytest.mark.parametrize('patch_ansible_module', TESTCASE_VXLAN, indirect=['patch_ansible_module']) -def test_vxlan_mod(mocked_generic_connection_modify): - """ - Test if vxlan modified - """ - with pytest.raises(SystemExit): - nmcli.main() - - assert nmcli.Nmcli.execute_command.call_count == 1 - arg_list = nmcli.Nmcli.execute_command.call_args_list - args, kwargs = arg_list[0] - - assert args[0][0] == '/usr/bin/nmcli' - assert args[0][1] == 'con' - assert args[0][2] == 'mod' - assert args[0][3] == 'non_existent_nw_device' - - for param in ['vxlan.local', '192.168.225.5', 'vxlan.remote', '192.168.225.6', 'vxlan.id', 11]: - assert param in args[0] - - -@pytest.mark.parametrize('patch_ansible_module', TESTCASE_IPIP, indirect=['patch_ansible_module']) -def test_create_ipip(mocked_generic_connection_create): - """ - Test if ipip created - """ - with pytest.raises(SystemExit): - nmcli.main() - - assert nmcli.Nmcli.execute_command.call_count == 1 - arg_list = nmcli.Nmcli.execute_command.call_args_list - args, kwargs = arg_list[0] - - assert args[0][0] == '/usr/bin/nmcli' - assert args[0][1] == 'con' - assert args[0][2] == 'add' - assert args[0][3] == 'type' - assert args[0][4] == 'ip-tunnel' - assert args[0][5] == 'mode' - assert args[0][6] == 'ipip' - assert args[0][7] == 'con-name' - assert args[0][8] == 'non_existent_nw_device' - assert args[0][9] == 'ifname' - assert args[0][10] == 'ipip-existent_nw_device' - assert args[0][11] == 'dev' - assert args[0][12] == 'non_existent_ipip_device' - - for param in ['ip-tunnel.local', '192.168.225.5', 'ip-tunnel.remote', '192.168.225.6']: - assert param in args[0] - - -@pytest.mark.parametrize('patch_ansible_module', TESTCASE_IPIP, indirect=['patch_ansible_module']) -def test_ipip_mod(mocked_generic_connection_modify): - """ - Test if ipip modified - """ - with pytest.raises(SystemExit): - nmcli.main() - - assert nmcli.Nmcli.execute_command.call_count == 1 - arg_list = nmcli.Nmcli.execute_command.call_args_list - args, kwargs = arg_list[0] - - assert args[0][0] == '/usr/bin/nmcli' - assert args[0][1] == 'con' - assert args[0][2] == 'mod' - assert args[0][3] == 'non_existent_nw_device' - - for param in ['ip-tunnel.local', '192.168.225.5', 'ip-tunnel.remote', '192.168.225.6']: - assert param in args[0] - - -@pytest.mark.parametrize('patch_ansible_module', TESTCASE_SIT, indirect=['patch_ansible_module']) -def test_create_sit(mocked_generic_connection_create): - """ - Test if sit created - """ - with pytest.raises(SystemExit): - nmcli.main() - - assert nmcli.Nmcli.execute_command.call_count == 1 - arg_list = nmcli.Nmcli.execute_command.call_args_list - args, kwargs = arg_list[0] - - assert args[0][0] == '/usr/bin/nmcli' - assert args[0][1] == 'con' - assert args[0][2] == 'add' - assert args[0][3] == 'type' - assert args[0][4] == 'ip-tunnel' - assert args[0][5] == 'mode' - assert args[0][6] == 'sit' - assert args[0][7] == 'con-name' - assert args[0][8] == 'non_existent_nw_device' - assert args[0][9] == 'ifname' - assert args[0][10] == 'sit-existent_nw_device' - assert args[0][11] == 'dev' - assert args[0][12] == 'non_existent_sit_device' - - for param in ['ip-tunnel.local', '192.168.225.5', 'ip-tunnel.remote', '192.168.225.6']: - assert param in args[0] - - -@pytest.mark.parametrize('patch_ansible_module', TESTCASE_SIT, indirect=['patch_ansible_module']) -def test_sit_mod(mocked_generic_connection_modify): - """ - Test if sit modified - """ - with pytest.raises(SystemExit): - nmcli.main() - - assert nmcli.Nmcli.execute_command.call_count == 1 - arg_list = nmcli.Nmcli.execute_command.call_args_list - args, kwargs = arg_list[0] - - assert args[0][0] == '/usr/bin/nmcli' - assert args[0][1] == 'con' - assert args[0][2] == 'mod' - assert args[0][3] == 'non_existent_nw_device' - - for param in ['ip-tunnel.local', '192.168.225.5', 'ip-tunnel.remote', '192.168.225.6']: - assert param in args[0] - - -@pytest.mark.parametrize('patch_ansible_module', TESTCASE_ETHERNET_DHCP, indirect=['patch_ansible_module']) -def test_eth_dhcp_client_id_con_create(mocked_generic_connection_create): - """ - Test : Ethernet connection created with DHCP_CLIENT_ID - """ - with pytest.raises(SystemExit): - nmcli.main() - - assert nmcli.Nmcli.execute_command.call_count == 1 - arg_list = nmcli.Nmcli.execute_command.call_args_list - args, kwargs = arg_list[0] - - assert 'ipv4.dhcp-client-id' in args[0] diff --git a/test/units/modules/network/aireos/aireos_module.py b/test/units/modules/network/aireos/aireos_module.py deleted file mode 100644 index 1ac1b5275c..0000000000 --- a/test/units/modules/network/aireos/aireos_module.py +++ /dev/null @@ -1,87 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json - -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(name): - path = os.path.join(fixture_path, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as f: - data = f.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class TestCiscoWlcModule(ModuleTestCase): - - def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False): - - self.load_fixtures(commands) - - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - if commands is not None: - if sort: - self.assertEqual(sorted(commands), sorted(result['commands']), result['commands']) - else: - self.assertEqual(commands, result['commands'], result['commands']) - - return result - - def failed(self): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def changed(self, changed=False): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertEqual(result['changed'], changed, result) - return result - - def load_fixtures(self, commands=None): - pass diff --git a/test/units/modules/network/aireos/fixtures/aireos_config_config.cfg b/test/units/modules/network/aireos/fixtures/aireos_config_config.cfg deleted file mode 100644 index 883f36cf05..0000000000 --- a/test/units/modules/network/aireos/fixtures/aireos_config_config.cfg +++ /dev/null @@ -1,9 +0,0 @@ -sysname router - -interface create mtc-1 1 -interface address dynamic-interface mtc-1 10.33.20.4 255.255.255.0 10.33.20.1 -interface vlan mtc-1 1 - -interface create mtc-2 2 -interface address dynamic-interface mtc-2 10.33.26.4 255.255.255.0 10.33.26.1 -interface vlan mtc-2 2
\ No newline at end of file diff --git a/test/units/modules/network/aireos/fixtures/aireos_config_src.cfg b/test/units/modules/network/aireos/fixtures/aireos_config_src.cfg deleted file mode 100644 index 69db36b252..0000000000 --- a/test/units/modules/network/aireos/fixtures/aireos_config_src.cfg +++ /dev/null @@ -1,9 +0,0 @@ -sysname foo - -interface create mtc-1 1 -interface address dynamic-interface mtc-1 10.33.20.4 255.255.255.0 10.33.20.2 -interface vlan mtc-1 1 - -interface create mtc-2 2 -interface address dynamic-interface mtc-2 10.33.26.4 255.255.255.0 10.33.26.1 -interface vlan mtc-2 2
\ No newline at end of file diff --git a/test/units/modules/network/aireos/fixtures/show_sysinfo b/test/units/modules/network/aireos/fixtures/show_sysinfo deleted file mode 100644 index c30d8e5342..0000000000 --- a/test/units/modules/network/aireos/fixtures/show_sysinfo +++ /dev/null @@ -1,43 +0,0 @@ -Manufacturer's Name.............................. Cisco Systems Inc. -Product Name..................................... Cisco Controller -Product Version.................................. 8.2.110.0 -RTOS Version..................................... 8.2.110.0 -Bootloader Version............................... 8.0.100.0 -Emergency Image Version.......................... 8.0.100.0 - -Build Type....................................... DATA + WPS - -System Name...................................... SOMEHOST -System Location.................................. USA -System Contact................................... SN:E228240;ASSET:LSMTCc1 -System ObjectID.................................. 1.3.6.1.4.1.9.1.1615 -Redundancy Mode.................................. Disabled -IP Address....................................... 10.10.10.10 -IPv6 Address..................................... :: -System Up Time................................... 328 days 7 hrs 54 mins 49 secs -System Timezone Location......................... (GMT) London, Lisbon, Dublin, Edinburgh -System Stats Realtime Interval................... 5 -System Stats Normal Interval..................... 180 - -Configured Country............................... US - United States -Operating Environment............................ Commercial (10 to 35 C) -Internal Temp Alarm Limits....................... 10 to 38 C -Internal Temperature............................. +18 C -Fan Status....................................... OK - - RAID Volume Status -Drive 0.......................................... Good -Drive 1.......................................... Good - -State of 802.11b Network......................... Enabled -State of 802.11a Network......................... Enabled -Number of WLANs.................................. 1 -Number of Active Clients......................... 0 - -Burned-in MAC Address............................ AA:AA:AA:AA:AA:AA -Power Supply 1................................... Present, OK -Power Supply 2................................... Present, OK -Maximum number of APs supported.................. 6000 -System Nas-Id.................................... -WLC MIC Certificate Types........................ SHA1/SHA2 -Licensing Type................................... RTU diff --git a/test/units/modules/network/aireos/test_aireos_command.py b/test/units/modules/network/aireos/test_aireos_command.py deleted file mode 100644 index 247d66492d..0000000000 --- a/test/units/modules/network/aireos/test_aireos_command.py +++ /dev/null @@ -1,122 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json - -from units.compat.mock import patch -from ansible.modules.network.aireos import aireos_command -from units.modules.utils import set_module_args -from .aireos_module import TestCiscoWlcModule, load_fixture -from ansible.module_utils import six - - -class TestCiscoWlcCommandModule(TestCiscoWlcModule): - - module = aireos_command - - def setUp(self): - super(TestCiscoWlcCommandModule, self).setUp() - self.mock_run_commands = patch('ansible.modules.network.aireos.aireos_command.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestCiscoWlcCommandModule, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for item in commands: - try: - obj = json.loads(item['command']) - command = obj['command'] - except ValueError: - command = item['command'] - filename = str(command).replace(' ', '_') - output.append(load_fixture(filename)) - return output - - self.run_commands.side_effect = load_from_file - - def test_aireos_command_simple(self): - set_module_args(dict(commands=['show sysinfo'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 1) - self.assertTrue(result['stdout'][0].startswith('Manufacturer\'s Name')) - - def test_aireos_command_multiple(self): - set_module_args(dict(commands=['show sysinfo', 'show sysinfo'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 2) - self.assertTrue(result['stdout'][0].startswith('Manufacturer\'s Name')) - - def test_aireos_command_wait_for(self): - wait_for = 'result[0] contains "Cisco Systems Inc"' - set_module_args(dict(commands=['show sysinfo'], wait_for=wait_for)) - self.execute_module() - - def test_aireos_command_wait_for_fails(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show sysinfo'], wait_for=wait_for)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 10) - - def test_aireos_command_retries(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show sysinfo'], wait_for=wait_for, retries=2)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 2) - - def test_aireos_command_match_any(self): - wait_for = ['result[0] contains "Cisco Systems Inc"', - 'result[0] contains "test string"'] - set_module_args(dict(commands=['show sysinfo'], wait_for=wait_for, match='any')) - self.execute_module() - - def test_aireos_command_match_all(self): - wait_for = ['result[0] contains "Cisco Systems Inc"', - 'result[0] contains "Cisco Controller"'] - set_module_args(dict(commands=['show sysinfo'], wait_for=wait_for, match='all')) - self.execute_module() - - def test_aireos_command_match_all_failure(self): - wait_for = ['result[0] contains "Cisco Systems Inc"', - 'result[0] contains "test string"'] - commands = ['show sysinfo', 'show sysinfo'] - set_module_args(dict(commands=commands, wait_for=wait_for, match='all')) - self.execute_module(failed=True) - - def test_aireos_command_to_lines_non_ascii(self): - ''' Test data is one variation of the result of a `show run-config commands` - command on Cisco WLC version 8.8.120.0 ''' - test_data = ''' - wlan flexconnect learn-ipaddr 101 enable - `\xc8\x92\xef\xbf\xbdR\x7f`\xc8\x92\xef\xbf\xbdR\x7f` - wlan wgb broadcast-tagging disable 1 - '''.strip() - test_string = six.u(test_data) - test_stdout = [test_string, ] - result = list(aireos_command.to_lines(test_stdout)) - print(result[0]) - self.assertEqual(len(result[0]), 3) diff --git a/test/units/modules/network/aireos/test_aireos_config.py b/test/units/modules/network/aireos/test_aireos_config.py deleted file mode 100644 index bfc9c0760d..0000000000 --- a/test/units/modules/network/aireos/test_aireos_config.py +++ /dev/null @@ -1,131 +0,0 @@ -# -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.aireos import aireos_config -from units.modules.utils import set_module_args -from .aireos_module import TestCiscoWlcModule, load_fixture - - -class TestCiscoWlcConfigModule(TestCiscoWlcModule): - - module = aireos_config - - def setUp(self): - super(TestCiscoWlcConfigModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.aireos.aireos_config.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch('ansible.modules.network.aireos.aireos_config.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_run_commands = patch('ansible.modules.network.aireos.aireos_config.run_commands') - self.run_commands = self.mock_run_commands.start() - - self.mock_save_config = patch('ansible.modules.network.aireos.aireos_config.save_config') - self.save_config = self.mock_save_config.start() - - def tearDown(self): - super(TestCiscoWlcConfigModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - config_file = 'aireos_config_config.cfg' - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - - def test_aireos_config_unchanged(self): - src = load_fixture('aireos_config_config.cfg') - set_module_args(dict(src=src)) - self.execute_module() - - def test_aireos_config_src(self): - src = load_fixture('aireos_config_src.cfg') - set_module_args(dict(src=src)) - commands = ['sysname foo', 'interface address dynamic-interface mtc-1 10.33.20.4 255.255.255.0 10.33.20.2'] - self.execute_module(changed=True, commands=commands) - - def test_aireos_config_backup(self): - set_module_args(dict(backup=True)) - result = self.execute_module() - self.assertIn('__backup__', result) - - def test_aireos_config_save(self): - set_module_args(dict(save=True)) - self.execute_module() - self.assertEqual(self.save_config.call_count, 1) - self.assertEqual(self.get_config.call_count, 0) - self.assertEqual(self.load_config.call_count, 0) - - def test_aireos_config_before(self): - set_module_args(dict(lines=['sysname foo'], before=['test1', 'test2'])) - commands = ['test1', 'test2', 'sysname foo'] - self.execute_module(changed=True, commands=commands, sort=False) - - def test_aireos_config_after(self): - set_module_args(dict(lines=['sysname foo'], after=['test1', 'test2'])) - commands = ['sysname foo', 'test1', 'test2'] - self.execute_module(changed=True, commands=commands, sort=False) - - def test_aireos_config_before_after_no_change(self): - set_module_args(dict(lines=['sysname router'], - before=['test1', 'test2'], - after=['test3', 'test4'])) - self.execute_module() - - def test_aireos_config_config(self): - config = 'sysname localhost' - set_module_args(dict(lines=['sysname router'], config=config)) - commands = ['sysname router'] - self.execute_module(changed=True, commands=commands) - - def test_aireos_config_match_none(self): - lines = ['sysname router', 'interface create mtc-1 1'] - set_module_args(dict(lines=lines, match='none')) - self.execute_module(changed=True, commands=lines, sort=False) - - def test_nxos_config_save_always(self): - args = dict(save_when='always') - set_module_args(args) - self.execute_module() - self.assertEqual(self.save_config.call_count, 1) - self.assertEqual(self.get_config.call_count, 0) - self.assertEqual(self.load_config.call_count, 0) - - def test_nxos_config_save_changed_true(self): - args = dict(save_when='changed', lines=['sysname foo', 'interface create mtc-3 3']) - set_module_args(args) - self.execute_module(changed=True) - self.assertEqual(self.save_config.call_count, 1) - self.assertEqual(self.get_config.call_count, 1) - self.assertEqual(self.load_config.call_count, 1) - - def test_nxos_config_save_changed_false(self): - args = dict(save_when='changed') - set_module_args(args) - self.execute_module() - self.assertEqual(self.save_config.call_count, 0) - self.assertEqual(self.get_config.call_count, 0) - self.assertEqual(self.load_config.call_count, 0) diff --git a/test/units/modules/network/apconos/apconos_module.py b/test/units/modules/network/apconos/apconos_module.py deleted file mode 100644 index 6d1857d376..0000000000 --- a/test/units/modules/network/apconos/apconos_module.py +++ /dev/null @@ -1,88 +0,0 @@ -# (c) 2019 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json - -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase - - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(name): - path = os.path.join(fixture_path, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as f: - data = f.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class TestApconosModule(ModuleTestCase): - - def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False): - - self.load_fixtures(commands) - - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - if commands is not None: - if sort: - self.assertEqual(sorted(commands), sorted(result['commands']), result['commands']) - else: - self.assertEqual(commands, result['commands'], result['commands']) - - return result - - def failed(self): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def changed(self, changed=False): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertEqual(result['changed'], changed, result) - return result - - def load_fixtures(self, commands=None): - pass diff --git a/test/units/modules/network/apconos/fixtures/enable_ssh b/test/units/modules/network/apconos/fixtures/enable_ssh deleted file mode 100644 index e69de29bb2..0000000000 --- a/test/units/modules/network/apconos/fixtures/enable_ssh +++ /dev/null diff --git a/test/units/modules/network/apconos/fixtures/show_version b/test/units/modules/network/apconos/fixtures/show_version deleted file mode 100644 index a541d9e97d..0000000000 --- a/test/units/modules/network/apconos/fixtures/show_version +++ /dev/null @@ -1,2 +0,0 @@ -APCON -COMPONENT MODEL VERSION diff --git a/test/units/modules/network/apconos/test_apconos_command.py b/test/units/modules/network/apconos/test_apconos_command.py deleted file mode 100644 index 3ec0ccd5e4..0000000000 --- a/test/units/modules/network/apconos/test_apconos_command.py +++ /dev/null @@ -1,110 +0,0 @@ -# (c) 2019 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json - -from units.compat.mock import patch -from ansible.modules.network.apconos import apconos_command -from units.modules.utils import set_module_args -from .apconos_module import TestApconosModule, load_fixture - - -class TestApconosCommandModule(TestApconosModule): - - module = apconos_command - - def setUp(self): - super(TestApconosCommandModule, self).setUp() - - self.mock_run_commands = patch('ansible.modules.network.apconos.apconos_command.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestApconosCommandModule, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - for item in commands: - filename = str(item).replace(' ', '_') - output.append(load_fixture(filename)) - return output - - self.run_commands.side_effect = load_from_file - - def test_apcon_command_simple(self): - set_module_args(dict(commands=['show version'])) - result = self.execute_module() - self.assertEqual(len(result['stdout_lines']), 1) - self.assertEqual(result['stdout_lines'][0][0], 'APCON') - - def test_apcon_command_multiple(self): - set_module_args(dict(commands=['show version', 'show version'])) - result = self.execute_module() - self.assertEqual(len(result['stdout_lines']), 2) - self.assertEqual(result['stdout_lines'][0][0], 'APCON') - self.assertEqual(result['stdout_lines'][1][0], 'APCON') - - def test_apcon_command_wait_for(self): - wait_for = 'result[0] contains "APCON"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module() - - def test_apcon_command_wait_for_fails(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 10) - - def test_apcon_command_retries(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show version'], wait_for=wait_for, retries=2)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 2) - - def test_apcon_command_match_any(self): - wait_for = ['result[0] contains "test string"', - 'result[0] contains "VERSION"'] - set_module_args(dict(commands=['show version'], wait_for=wait_for, match='any')) - self.execute_module() - - def test_apcon_command_match_all(self): - wait_for = ['result[0] contains "COMPONENT"', - 'result[0] contains "MODEL"', - 'result[0] contains "VERSION"'] - set_module_args(dict(commands=['show version'], wait_for=wait_for, match='all')) - self.execute_module() - - def test_apcon_command_match_all_failure(self): - wait_for = ['result[0] contains "APCON OS"', - 'result[0] contains "test string"'] - commands = ['show version', 'show version'] - set_module_args(dict(commands=commands, wait_for=wait_for, match='all')) - self.execute_module(failed=True) - - def test_apcon_command_checkmode_not_warning(self): - commands = ['enable ssh'] - set_module_args(dict(commands=commands, _ansible_check_mode=False)) - result = self.execute_module(changed=True) - self.assertEqual(result['warnings'], []) diff --git a/test/units/modules/network/aruba/aruba_module.py b/test/units/modules/network/aruba/aruba_module.py deleted file mode 100644 index 9d305b6b41..0000000000 --- a/test/units/modules/network/aruba/aruba_module.py +++ /dev/null @@ -1,88 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json - -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase - - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(name): - path = os.path.join(fixture_path, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as f: - data = f.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class TestArubaModule(ModuleTestCase): - - def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False): - - self.load_fixtures(commands) - - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - if commands is not None: - if sort: - self.assertEqual(sorted(commands), sorted(result['commands']), result['commands']) - else: - self.assertEqual(commands, result['commands'], result['commands']) - - return result - - def failed(self): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def changed(self, changed=False): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertEqual(result['changed'], changed, result) - return result - - def load_fixtures(self, commands=None): - pass diff --git a/test/units/modules/network/aruba/fixtures/aruba_config_config.cfg b/test/units/modules/network/aruba/fixtures/aruba_config_config.cfg deleted file mode 100644 index 48cc6018d7..0000000000 --- a/test/units/modules/network/aruba/fixtures/aruba_config_config.cfg +++ /dev/null @@ -1,17 +0,0 @@ -! -hostname router -! -interface GigabitEthernet0/0 - ip address 1.2.3.4 255.255.255.0 - description test string -! -interface GigabitEthernet0/1 - ip address 6.7.8.9 255.255.255.0 - description test string - shutdown -! -wlan ssid-profile "blah" - essid "blah" -! -ip access-list session blah - any any any permit diff --git a/test/units/modules/network/aruba/fixtures/aruba_config_defaults.cfg b/test/units/modules/network/aruba/fixtures/aruba_config_defaults.cfg deleted file mode 100644 index e54645ab14..0000000000 --- a/test/units/modules/network/aruba/fixtures/aruba_config_defaults.cfg +++ /dev/null @@ -1,13 +0,0 @@ -! -hostname router -! -interface GigabitEthernet0/0 - ip address 1.2.3.4 255.255.255.0 - description test string - no shutdown -! -interface GigabitEthernet0/1 - ip address 6.7.8.9 255.255.255.0 - description test string - shutdown -! diff --git a/test/units/modules/network/aruba/fixtures/aruba_config_src.cfg b/test/units/modules/network/aruba/fixtures/aruba_config_src.cfg deleted file mode 100644 index b3d8961a99..0000000000 --- a/test/units/modules/network/aruba/fixtures/aruba_config_src.cfg +++ /dev/null @@ -1,11 +0,0 @@ -! -hostname foo -! -interface GigabitEthernet0/0 - no ip address -! -interface GigabitEthernet0/1 - ip address 6.7.8.9 255.255.255.0 - description test string - shutdown -! diff --git a/test/units/modules/network/aruba/fixtures/show_version b/test/units/modules/network/aruba/fixtures/show_version deleted file mode 100644 index b75059c918..0000000000 --- a/test/units/modules/network/aruba/fixtures/show_version +++ /dev/null @@ -1,17 +0,0 @@ -Aruba Operating System Software. -ArubaOS (MODEL: Aruba7220-US), Version 6.4.3.10 -Website: http://www.arubanetworks.com -Copyright (c) 2002-2016, Aruba Networks, Inc. -Compiled on 2016-08-31 at 18:31:30 PDT (build 56305) by p4build - -ROM: System Bootstrap, Version CPBoot 1.2.1.0 (build 39183) -Built: 2013-07-26 04:57:47 -Built by: p4build@re_client_39183 - - -Switch uptime is 15 days 20 hours 51 minutes 51 seconds -Reboot Cause: User reboot (Intent:cause:register 78:86:50:2) -Supervisor Card -Processor (XLP432 Rev B1 (Secure Boot) , 1000 MHz) with 7370M bytes of memory. -32K bytes of non-volatile configuration memory. -7920M bytes of Supervisor Card system flash. diff --git a/test/units/modules/network/aruba/test_aruba_command.py b/test/units/modules/network/aruba/test_aruba_command.py deleted file mode 100644 index 75129a9f4f..0000000000 --- a/test/units/modules/network/aruba/test_aruba_command.py +++ /dev/null @@ -1,109 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json - -from units.compat.mock import patch -from ansible.modules.network.aruba import aruba_command -from units.modules.utils import set_module_args -from .aruba_module import TestArubaModule, load_fixture - - -class TestArubaCommandModule(TestArubaModule): - - module = aruba_command - - def setUp(self): - super(TestArubaCommandModule, self).setUp() - - self.mock_run_commands = patch('ansible.modules.network.aruba.aruba_command.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestArubaCommandModule, self).tearDown() - - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for item in commands: - try: - obj = json.loads(item['command']) - command = obj['command'] - except ValueError: - command = item['command'] - filename = str(command).replace(' ', '_') - output.append(load_fixture(filename)) - return output - - self.run_commands.side_effect = load_from_file - - def test_aruba_command_simple(self): - set_module_args(dict(commands=['show version'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 1) - self.assertTrue(result['stdout'][0].startswith('Aruba Operating System Software')) - - def test_aruba_command_multiple(self): - set_module_args(dict(commands=['show version', 'show version'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 2) - self.assertTrue(result['stdout'][0].startswith('Aruba Operating System Software')) - - def test_aruba_command_wait_for(self): - wait_for = 'result[0] contains "Aruba Operating System Software"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module() - - def test_aruba_command_wait_for_fails(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 10) - - def test_aruba_command_retries(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show version'], wait_for=wait_for, retries=2)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 2) - - def test_aruba_command_match_any(self): - wait_for = ['result[0] contains "Aruba Operating System Software"', - 'result[0] contains "test string"'] - set_module_args(dict(commands=['show version'], wait_for=wait_for, match='any')) - self.execute_module() - - def test_aruba_command_match_all(self): - wait_for = ['result[0] contains "Aruba Operating System Software"', - 'result[0] contains "Aruba Networks"'] - set_module_args(dict(commands=['show version'], wait_for=wait_for, match='all')) - self.execute_module() - - def test_aruba_command_match_all_failure(self): - wait_for = ['result[0] contains "Aruba Operating System Software"', - 'result[0] contains "test string"'] - commands = ['show version', 'show version'] - set_module_args(dict(commands=commands, wait_for=wait_for, match='all')) - self.execute_module(failed=True) diff --git a/test/units/modules/network/aruba/test_aruba_config.py b/test/units/modules/network/aruba/test_aruba_config.py deleted file mode 100644 index 0112ae408d..0000000000 --- a/test/units/modules/network/aruba/test_aruba_config.py +++ /dev/null @@ -1,189 +0,0 @@ -# -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.aruba import aruba_config -from units.modules.utils import set_module_args -from .aruba_module import TestArubaModule, load_fixture - - -class TestArubaConfigModule(TestArubaModule): - - module = aruba_config - - def setUp(self): - super(TestArubaConfigModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.aruba.aruba_config.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch('ansible.modules.network.aruba.aruba_config.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_run_commands = patch('ansible.modules.network.aruba.aruba_config.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestArubaConfigModule, self).tearDown() - - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - config_file = 'aruba_config_config.cfg' - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - - def test_aruba_config_unchanged(self): - src = load_fixture('aruba_config_config.cfg') - set_module_args(dict(src=src)) - self.execute_module() - - def test_aruba_config_unchanged_different_spacing(self): - # Tab indented - set_module_args(dict(lines=['description test string'], parents=['interface GigabitEthernet0/0'])) - self.execute_module(changed=False) - # 3 spaces indented - set_module_args(dict(lines=['essid "blah"'], parents=['wlan ssid-profile "blah"'])) - self.execute_module(changed=False) - - def test_aruba_config_src(self): - src = load_fixture('aruba_config_src.cfg') - set_module_args(dict(src=src)) - commands = ['hostname foo', 'interface GigabitEthernet0/0', - 'no ip address'] - self.execute_module(changed=True, commands=commands) - - def test_aruba_config_backup(self): - set_module_args(dict(backup=True)) - result = self.execute_module() - self.assertIn('__backup__', result) - - def test_aruba_config_save_always(self): - self.run_commands.return_value = "Hostname foo" - set_module_args(dict(save_when='always')) - self.execute_module(changed=True) - self.assertEqual(self.run_commands.call_count, 1) - self.assertEqual(self.get_config.call_count, 0) - self.assertEqual(self.load_config.call_count, 0) - args = self.run_commands.call_args[0][1] - self.assertIn('write memory', args) - - def test_aruba_config_save_changed_true(self): - src = load_fixture('aruba_config_src.cfg') - set_module_args(dict(src=src, save_when='changed')) - commands = ['hostname foo', 'interface GigabitEthernet0/0', - 'no ip address'] - self.execute_module(changed=True, commands=commands) - # src = load_fixture('aruba_config_src.cfg') - - # set_module_args(dict(save_when='changed')) - # commands = ['hostname changed'] - # self.execute_module(changed=False, commands=commands) - self.assertEqual(self.run_commands.call_count, 1) - self.assertEqual(self.get_config.call_count, 1) - self.assertEqual(self.load_config.call_count, 1) - args = self.run_commands.call_args[0][1] - self.assertIn('write memory', args) - - def test_aruba_config_save_changed_false(self): - set_module_args(dict(save_when='changed')) - self.execute_module(changed=False) - self.assertEqual(self.run_commands.call_count, 0) - self.assertEqual(self.get_config.call_count, 0) - self.assertEqual(self.load_config.call_count, 0) - - def test_aruba_config_lines_wo_parents(self): - set_module_args(dict(lines=['hostname foo'])) - commands = ['hostname foo'] - self.execute_module(changed=True, commands=commands) - - def test_aruba_config_lines_w_parents(self): - set_module_args(dict(lines=['shutdown'], parents=['interface GigabitEthernet0/0'])) - commands = ['interface GigabitEthernet0/0', 'shutdown'] - self.execute_module(changed=True, commands=commands) - - def test_aruba_config_before(self): - set_module_args(dict(lines=['hostname foo'], before=['test1', 'test2'])) - commands = ['test1', 'test2', 'hostname foo'] - self.execute_module(changed=True, commands=commands, sort=False) - - def test_aruba_config_after(self): - set_module_args(dict(lines=['hostname foo'], after=['test1', 'test2'])) - commands = ['hostname foo', 'test1', 'test2'] - self.execute_module(changed=True, commands=commands, sort=False) - - def test_aruba_config_before_after_no_change(self): - set_module_args(dict(lines=['hostname router'], - before=['test1', 'test2'], - after=['test3', 'test4'])) - self.execute_module() - - def test_aruba_config_config(self): - config = 'hostname localhost' - set_module_args(dict(lines=['hostname router'], config=config)) - commands = ['hostname router'] - self.execute_module(changed=True, commands=commands) - - def test_aruba_config_replace_block(self): - lines = ['description test string', 'test string'] - parents = ['interface GigabitEthernet0/0'] - set_module_args(dict(lines=lines, replace='block', parents=parents)) - commands = parents + lines - self.execute_module(changed=True, commands=commands) - - def test_aruba_config_force(self): - lines = ['hostname router'] - set_module_args(dict(lines=lines, match='none')) - self.execute_module(changed=True, commands=lines) - - def test_aruba_config_match_none(self): - lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string'] - parents = ['interface GigabitEthernet0/0'] - set_module_args(dict(lines=lines, parents=parents, match='none')) - commands = parents + lines - self.execute_module(changed=True, commands=commands, sort=False) - - def test_aruba_config_match_strict(self): - lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string', - 'shutdown'] - parents = ['interface GigabitEthernet0/0'] - set_module_args(dict(lines=lines, parents=parents, match='strict')) - commands = parents + ['shutdown'] - self.execute_module(changed=True, commands=commands, sort=False) - - def test_aruba_config_match_exact(self): - lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string', - 'shutdown'] - parents = ['interface GigabitEthernet0/0'] - set_module_args(dict(lines=lines, parents=parents, match='exact')) - commands = parents + lines - self.execute_module(changed=True, commands=commands, sort=False) - - def test_aruba_encrypt_false(self): - set_module_args(dict(encrypt=False)) - self.execute_module() - self.assertEqual(self.run_commands.call_count, 2) - args = self.run_commands.call_args_list - self.assertIn('encrypt disable', args[0][0]) - self.assertIn('encrypt enable', args[1][0]) diff --git a/test/units/modules/network/avi/fixtures/avi_user.json b/test/units/modules/network/avi/fixtures/avi_user.json deleted file mode 100644 index 85522c324a..0000000000 --- a/test/units/modules/network/avi/fixtures/avi_user.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "mock_create_res": { - "ansible_facts": { - "avi_api_context": { - "192.0.2.97:admin:None": { - "csrftoken": "qG23CCARDL3rh1KZ66XXPIeUYCUCOZ4q", - "session_id": "h5nynf9u9nompp5byai7vii2v8bbn9kd" - } - } - }, - "api_context": null, - "changed": true, - "invocation": { - "module_args": { - "access": [{ - "role_ref": "/api/role?name=Tenant-Admin", - "tenant_ref": "/api/tenant/********#********", - "all_tenants": false - }], - "api_context": null, - "api_version": "18.2.5", - "avi_api_update_method": "put", - "avi_credentials": null, - "avi_disable_session_cache_as_fact": false, - "avi_login_info": null, - "controller": "192.0.2.97", - "default_tenant_ref": "/api/tenant?name=********", - "email": "test@abc.com", - "is_active": true, - "is_superuser": true, - "name": "testuser", - "obj_password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", - "obj_username": "testuser", - "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", - "state": "present", - "tenant": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", - "tenant_uuid": "", - "user_profile_ref": "/api/useraccountprofile?name=Default-User-Account-Profile", - "username": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER" - } - }, - "obj": { - "_last_modified": "1559736767460818", - "access": [{ - "all_tenants": false, - "role_ref": "https://192.0.2.97/api/tenant/********/role/role-ff851004-bd75-485b-87ec-2fe1d6a03fb9#Tenant-Admin", - "tenant_ref": "https://192.0.2.97/api/tenant/********#********" - }], - "default_tenant_ref": "https://192.0.2.97/api/tenant/********#********", - "email": "test@abc.com", - "full_name": "testuser", - "is_active": true, - "is_superuser": true, - "local": true, - "name": "testuser", - "obj_password": "<sensitive>", - "obj_username": "testuser", - "password": "<sensitive>", - "uid": 2004, - "url": "https://192.0.2.97/api/user/user-7087578f-4dfe-4e06-a153-495a91824a1d#testuser", - "user_profile_ref": "https://192.0.2.97/api/useraccountprofile/useraccountprofile-78063e7c-b443-48d6-b34c-5253ae1fcd2a#Default-User-Account-Profile", - "username": "testuser", - "uuid": "user-7087578f-4dfe-4e06-a153-495a91824a1d" - }, - "old_obj": null - }, - "mock_put_res": { - "obj": { - "username": "testuser", - "user_profile_ref": "https://192.0.2.97/api/useraccountprofile/useraccountprofile-546c5e88-6270-4ba1-9cfd-d0c755e68f47#Default-User-Account-Profile", - "name": "testuser", - "url": "https://192.0.2.97/api/user/user-ed10f328-bd92-4db2-bacd-0cf795fcbf8a#testuser", - "is_active": true, - "uuid": "user-ed10f328-bd92-4db2-bacd-0cf795fcbf8a", - "email": "newemail@abc.com", - "access": [{ - "tenant_ref": "https://192.0.2.97/api/tenant/tenant-57af0f3f-6f14-4657-8f32-9b289407752b#Test-Admin", - "all_tenants": false, - "role_ref": "https://192.0.2.97/api/tenant/********/role/role-b073ab0d-e1d0-4800-95ef-6ecf2c5ed7d1#Tenant-Admin" - }], - "is_superuser": true, - "obj_username": "testuser", - "full_name": "testuser", - "_last_modified": "1559802772203285", - "password": "<sensitive>", - "local": true, - "obj_password": "<sensitive>", - "default_tenant_ref": "https://192.0.2.97/api/tenant/********#********", - "uid": 2002 - }, - "changed": true, - "api_context": null, - "invocation": { - "module_args": { - "username": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", - "user_profile_ref": "/api/useraccountprofile?name=Default-User-Account-Profile", - "api_version": "18.2.5", - "name": "testuser", - "state": "present", - "is_active": true, - "api_context": null, - "avi_disable_session_cache_as_fact": false, - "controller": "192.0.2.97", - "avi_api_patch_op": null, - "access": [{ - "tenant_ref": "/api/tenant?name=Test-Admin", - "all_tenants": false, - "role_ref": "/api/role?name=Tenant-Admin" - }], - "is_superuser": true, - "avi_credentials": null, - "email": "newemail@abc.com", - "default_tenant_ref": "/api/tenant?name=********", - "obj_username": "testuser", - "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", - "tenant_uuid": "", - "obj_password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", - "avi_api_update_method": "put", - "tenant": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER" - } - }, - "ansible_facts": { - "avi_api_context": { - "192.0.2.97:admin:None": { - "csrftoken": "Y7CET6zaIC9VZAzBqEW4cWo1N26jPg55", - "session_id": "364n7o0p3o5so63b9rzd47v6ehya6xg7" - } - } - }, - "old_obj": { - "username": "testuser", - "user_profile_ref": "https://192.0.2.97/api/useraccountprofile/useraccountprofile-546c5e88-6270-4ba1-9cfd-d0c755e68f47#Default-User-Account-Profile", - "name": "testuser", - "url": "https://192.0.2.97/api/user/user-ed10f328-bd92-4db2-bacd-0cf795fcbf8a#testuser", - "is_active": true, - "uuid": "user-ed10f328-bd92-4db2-bacd-0cf795fcbf8a", - "access": [{ - "tenant_ref": "https://192.0.2.97/api/tenant/tenant-57af0f3f-6f14-4657-8f32-9b289407752b#Test-Admin", - "all_tenants": false, - "role_ref": "https://192.0.2.97/api/tenant/********/role/role-b073ab0d-e1d0-4800-95ef-6ecf2c5ed7d1#Tenant-Admin" - }], - "is_superuser": true, - "full_name": "testuser", - "ui_property": "", - "password": "<sensitive>", - "local": true, - "email": "test@abc.com", - "default_tenant_ref": "https://192.0.2.97/api/tenant/********#********", - "uid": 2002 - } - }, - "mock_del_res": { - "ansible_facts": { - "avi_api_context": { - "192.0.2.97:admin:None": { - "csrftoken": "Vtkx9GeS2lsrld5yX83cmJqbZO3MAimb", - "session_id": "ix3t1dja8yzwb155de59viyn96hibn6b" - } - } - }, - "api_context": null, - "changed": true, - "invocation": { - "module_args": { - "access": [{ - "role_ref": "/api/role?name=Tenant-Admin", - "tenant_ref": "/api/tenant/********#********" - }], - "api_context": null, - "api_version": "18.2.5", - "avi_api_update_method": "put", - "avi_credentials": null, - "avi_disable_session_cache_as_fact": false, - "avi_login_info": null, - "controller": "192.0.2.97", - "default_tenant_ref": "/api/tenant?name=********", - "email": "test@abc.com", - "is_active": true, - "is_superuser": true, - "name": "testuser", - "obj_password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", - "obj_username": "testuser", - "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", - "state": "absent", - "tenant": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", - "tenant_uuid": "", - "user_profile_ref": "/api/useraccountprofile?name=Default-User-Account-Profile", - "username": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER" - } - }, - "obj": null, - "old_obj": { - "_last_modified": "1559803346264869", - "access": [{ - "all_tenants": false, - "role_ref": "https://192.0.2.97/api/tenant/********/role/role-b073ab0d-e1d0-4800-95ef-6ecf2c5ed7d1#Tenant-Admin", - "tenant_ref": "https://192.0.2.97/api/tenant/tenant-57af0f3f-6f14-4657-8f32-9b289407752b#Test-Admin" - }], - "default_tenant_ref": "https://192.0.2.97/api/tenant/********#********", - "email": "newemail@abc.com", - "full_name": "testuser", - "is_active": true, - "is_superuser": true, - "local": true, - "name": "testuser", - "password": "<sensitive>", - "ui_property": "", - "uid": 2002, - "url": "https://192.0.2.97/api/user/user-ed10f328-bd92-4db2-bacd-0cf795fcbf8a#testuser", - "user_profile_ref": "https://192.0.2.97/api/useraccountprofile/useraccountprofile-546c5e88-6270-4ba1-9cfd-d0c755e68f47#Default-User-Account-Profile", - "username": "testuser", - "uuid": "user-ed10f328-bd92-4db2-bacd-0cf795fcbf8a" - } - } -} diff --git a/test/units/modules/network/avi/test_avi_user.py b/test/units/modules/network/avi/test_avi_user.py deleted file mode 100644 index c4efb87cea..0000000000 --- a/test/units/modules/network/avi/test_avi_user.py +++ /dev/null @@ -1,101 +0,0 @@ -import os -import json -from units.compat import unittest -from units.compat.mock import Mock -from units.modules.utils import set_module_args -from ansible.modules.network.avi import avi_user - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -with open(fixture_path + '/avi_user.json') as json_file: - data = json.load(json_file) - - -class TestAviUser(unittest.TestCase): - - def test_create_user(self): - set_module_args({ - "avi_credentials": { - "controller": "192.0.2.13", - "username": "username", - "password": "fakepassword", - "api_version": "18.2.5" - }, - "state": "present", - "name": "testuser", - "obj_username": "testuser", - "obj_password": "test123", - "email": "test@abc.com", - "access": [ - { - "role_ref": "/api/role?name=Tenant-Admin", - "tenant_ref": "/api/tenant?name=Test-Admin", - "all_tenants": False - } - ], - "user_profile_ref": "/api/useraccountprofile?name=Default-User-Account-Profile", - "is_active": True, - "is_superuser": True, - "default_tenant_ref": "/api/tenant?name=admin" - }) - avi_user.avi_ansible_api = Mock(return_value=data['mock_create_res']) - response = avi_user.main() - assert response['changed'] - - def test_put_on_user(self): - set_module_args({ - "avi_credentials": { - "controller": "192.0.2.13", - "username": "username", - "password": "fakepassword", - "api_version": "18.2.5" - }, - "state": "present", - "avi_api_update_method": "put", - "name": "testuser", - "obj_username": "testuser", - "obj_password": "test123", - "email": "newemail@abc.com", - "access": [{ - "role_ref": "/api/role?name=Tenant-Admin", - "tenant_ref": "/api/tenant?name=Test-Admin", - "all_tenants": False - }], - "user_profile_ref": "/api/useraccountprofile?name=Default-User-Account-Profile", - "is_active": True, - "is_superuser": True, - "default_tenant_ref": "/api/tenant?name=admin" - }) - avi_user.avi_ansible_api = Mock(return_value=data['mock_put_res']) - response = avi_user.main() - assert response['changed'] - assert response['obj'] - assert response['old_obj'] - - def test_delete_user(self): - set_module_args({ - "avi_credentials": { - "controller": "192.0.2.13", - "username": "username", - "password": "fakepassword", - "api_version": "18.2.5" - - }, - "name": "testuser", - "obj_username": "testuser", - "obj_password": "test123", - "email": "test@abc.com", - "access": [{ - "role_ref": "/api/role?name=Tenant-Admin", - "tenant_ref": "/api/tenant?name=Test-Admin", - "all_tenants": False - }], - "user_profile_ref": "/api/useraccountprofile?name=Default-User-Account-Profile", - "is_active": True, - "is_superuser": True, - "default_tenant_ref": "/api/tenant?name=admin" - }) - avi_user.avi_ansible_api = Mock(return_value=data['mock_del_res']) - response = avi_user.main() - assert response['changed'] - assert not response['obj'] - assert response['old_obj'] diff --git a/test/units/modules/network/check_point/test_checkpoint_access_rule.py b/test/units/modules/network/check_point/test_checkpoint_access_rule.py deleted file mode 100644 index 3506ffbe6f..0000000000 --- a/test/units/modules/network/check_point/test_checkpoint_access_rule.py +++ /dev/null @@ -1,105 +0,0 @@ -# Copyright (c) 2018 Red Hat -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# - -from __future__ import absolute_import - -import pytest -from units.modules.utils import set_module_args, exit_json, fail_json, AnsibleFailJson, AnsibleExitJson - -from ansible.module_utils import basic -from ansible.modules.network.check_point import checkpoint_access_rule - -OBJECT = {'layer': 'foo', 'position': 'bar', 'name': 'baz', - 'source': [{'name': 'lol'}], 'destination': [{'name': 'Any'}], - 'action': {'name': 'drop'}, 'enabled': True} -PAYLOAD = {'layer': 'foo', 'position': 'bar', 'name': 'baz'} - - -class TestCheckpointAccessRule(object): - module = checkpoint_access_rule - - @pytest.fixture(autouse=True) - def module_mock(self, mocker): - return mocker.patch.multiple(basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json) - - @pytest.fixture - def connection_mock(self, mocker): - connection_class_mock = mocker.patch('ansible.modules.network.check_point.checkpoint_access_rule.Connection') - return connection_class_mock.return_value - - @pytest.fixture - def get_access_rule_200(self, mocker): - mock_function = mocker.patch('ansible.modules.network.check_point.checkpoint_access_rule.get_access_rule') - mock_function.return_value = (200, OBJECT) - return mock_function.return_value - - @pytest.fixture - def get_access_rule_404(self, mocker): - mock_function = mocker.patch('ansible.modules.network.check_point.checkpoint_access_rule.get_access_rule') - mock_function.return_value = (404, 'Object not found') - return mock_function.return_value - - def test_create(self, get_access_rule_404, connection_mock): - connection_mock.send_request.return_value = (200, OBJECT) - result = self._run_module(PAYLOAD) - - assert result['changed'] - assert 'checkpoint_access_rules' in result - - def test_create_idempotent(self, get_access_rule_200, connection_mock): - connection_mock.send_request.return_value = (200, PAYLOAD) - result = self._run_module(PAYLOAD) - - assert not result['changed'] - - def test_update(self, get_access_rule_200, connection_mock): - payload_for_update = {'enabled': False} - payload_for_update.update(PAYLOAD) - connection_mock.send_request.return_value = (200, payload_for_update) - result = self._run_module(payload_for_update) - - assert result['changed'] - assert not result['checkpoint_access_rules']['enabled'] - - def test_delete(self, get_access_rule_200, connection_mock): - connection_mock.send_request.return_value = (200, OBJECT) - payload_for_delete = {'state': 'absent'} - payload_for_delete.update(PAYLOAD) - result = self._run_module(payload_for_delete) - - assert result['changed'] - - def test_delete_idempotent(self, get_access_rule_404, connection_mock): - payload = {'name': 'baz', 'state': 'absent'} - connection_mock.send_request.return_value = (200, OBJECT) - result = self._run_module(payload) - - assert not result['changed'] - - def _run_module(self, module_args): - set_module_args(module_args) - with pytest.raises(AnsibleExitJson) as ex: - self.module.main() - return ex.value.args[0] - - def _run_module_with_fail_json(self, module_args): - set_module_args(module_args) - with pytest.raises(AnsibleFailJson) as exc: - self.module.main() - result = exc.value.args[0] - return result diff --git a/test/units/modules/network/check_point/test_checkpoint_host.py b/test/units/modules/network/check_point/test_checkpoint_host.py deleted file mode 100644 index 803c6e8232..0000000000 --- a/test/units/modules/network/check_point/test_checkpoint_host.py +++ /dev/null @@ -1,99 +0,0 @@ -# Copyright (c) 2018 Red Hat -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# - -from __future__ import absolute_import - -import pytest -from units.modules.utils import set_module_args, exit_json, fail_json, AnsibleFailJson, AnsibleExitJson - -from ansible.module_utils import basic -from ansible.modules.network.check_point import checkpoint_host - -OBJECT = {'name': 'foo', 'ipv4-address': '192.168.0.15'} -CREATE_PAYLOAD = {'name': 'foo', 'ip_address': '192.168.0.15'} -UPDATE_PAYLOAD = {'name': 'foo', 'ip_address': '192.168.0.16'} -DELETE_PAYLOAD = {'name': 'foo', 'state': 'absent'} - - -class TestCheckpointHost(object): - module = checkpoint_host - - @pytest.fixture(autouse=True) - def module_mock(self, mocker): - return mocker.patch.multiple(basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json) - - @pytest.fixture - def connection_mock(self, mocker): - connection_class_mock = mocker.patch('ansible.modules.network.check_point.checkpoint_host.Connection') - return connection_class_mock.return_value - - @pytest.fixture - def get_host_200(self, mocker): - mock_function = mocker.patch('ansible.modules.network.check_point.checkpoint_host.get_host') - mock_function.return_value = (200, OBJECT) - return mock_function.return_value - - @pytest.fixture - def get_host_404(self, mocker): - mock_function = mocker.patch('ansible.modules.network.check_point.checkpoint_host.get_host') - mock_function.return_value = (404, 'Object not found') - return mock_function.return_value - - def test_create(self, get_host_404, connection_mock): - connection_mock.send_request.return_value = (200, OBJECT) - result = self._run_module(CREATE_PAYLOAD) - - assert result['changed'] - assert 'checkpoint_hosts' in result - - def test_create_idempotent(self, get_host_200, connection_mock): - connection_mock.send_request.return_value = (200, OBJECT) - result = self._run_module(CREATE_PAYLOAD) - - assert not result['changed'] - - def test_update(self, get_host_200, connection_mock): - connection_mock.send_request.return_value = (200, OBJECT) - result = self._run_module(UPDATE_PAYLOAD) - - assert result['changed'] - - def test_delete(self, get_host_200, connection_mock): - connection_mock.send_request.return_value = (200, OBJECT) - result = self._run_module(DELETE_PAYLOAD) - - assert result['changed'] - - def test_delete_idempotent(self, get_host_404, connection_mock): - connection_mock.send_request.return_value = (200, OBJECT) - result = self._run_module(DELETE_PAYLOAD) - - assert not result['changed'] - - def _run_module(self, module_args): - set_module_args(module_args) - with pytest.raises(AnsibleExitJson) as ex: - self.module.main() - return ex.value.args[0] - - def _run_module_with_fail_json(self, module_args): - set_module_args(module_args) - with pytest.raises(AnsibleFailJson) as exc: - self.module.main() - result = exc.value.args[0] - return result diff --git a/test/units/modules/network/check_point/test_checkpoint_session.py b/test/units/modules/network/check_point/test_checkpoint_session.py deleted file mode 100644 index 407794acaf..0000000000 --- a/test/units/modules/network/check_point/test_checkpoint_session.py +++ /dev/null @@ -1,67 +0,0 @@ -# Copyright (c) 2018 Red Hat -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# - -from __future__ import absolute_import - -import pytest -from units.modules.utils import set_module_args, exit_json, fail_json, AnsibleFailJson, AnsibleExitJson - -from ansible.module_utils import basic -from ansible.modules.network.check_point import checkpoint_session - -OBJECT = {'uid': '1234'} -PAYLOAD = {} - - -class TestCheckpointAccessRule(object): - module = checkpoint_session - - @pytest.fixture(autouse=True) - def module_mock(self, mocker): - return mocker.patch.multiple(basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json) - - @pytest.fixture - def connection_mock(self, mocker): - connection_class_mock = mocker.patch('ansible.modules.network.check_point.checkpoint_session.Connection') - return connection_class_mock.return_value - - @pytest.fixture - def get_session_200(self, mocker): - mock_function = mocker.patch('ansible.modules.network.check_point.checkpoint_session.get_session') - mock_function.return_value = (200, OBJECT) - return mock_function.return_value - - def test_publish(self, get_session_200, connection_mock): - connection_mock.send_request.return_value = (200, OBJECT) - result = self._run_module(PAYLOAD) - - assert result['changed'] - assert 'checkpoint_session' in result - - def _run_module(self, module_args): - set_module_args(module_args) - with pytest.raises(AnsibleExitJson) as ex: - self.module.main() - return ex.value.args[0] - - def _run_module_with_fail_json(self, module_args): - set_module_args(module_args) - with pytest.raises(AnsibleFailJson) as exc: - self.module.main() - result = exc.value.args[0] - return result diff --git a/test/units/modules/network/check_point/test_checkpoint_task_facts.py b/test/units/modules/network/check_point/test_checkpoint_task_facts.py deleted file mode 100644 index 803c6e8232..0000000000 --- a/test/units/modules/network/check_point/test_checkpoint_task_facts.py +++ /dev/null @@ -1,99 +0,0 @@ -# Copyright (c) 2018 Red Hat -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# - -from __future__ import absolute_import - -import pytest -from units.modules.utils import set_module_args, exit_json, fail_json, AnsibleFailJson, AnsibleExitJson - -from ansible.module_utils import basic -from ansible.modules.network.check_point import checkpoint_host - -OBJECT = {'name': 'foo', 'ipv4-address': '192.168.0.15'} -CREATE_PAYLOAD = {'name': 'foo', 'ip_address': '192.168.0.15'} -UPDATE_PAYLOAD = {'name': 'foo', 'ip_address': '192.168.0.16'} -DELETE_PAYLOAD = {'name': 'foo', 'state': 'absent'} - - -class TestCheckpointHost(object): - module = checkpoint_host - - @pytest.fixture(autouse=True) - def module_mock(self, mocker): - return mocker.patch.multiple(basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json) - - @pytest.fixture - def connection_mock(self, mocker): - connection_class_mock = mocker.patch('ansible.modules.network.check_point.checkpoint_host.Connection') - return connection_class_mock.return_value - - @pytest.fixture - def get_host_200(self, mocker): - mock_function = mocker.patch('ansible.modules.network.check_point.checkpoint_host.get_host') - mock_function.return_value = (200, OBJECT) - return mock_function.return_value - - @pytest.fixture - def get_host_404(self, mocker): - mock_function = mocker.patch('ansible.modules.network.check_point.checkpoint_host.get_host') - mock_function.return_value = (404, 'Object not found') - return mock_function.return_value - - def test_create(self, get_host_404, connection_mock): - connection_mock.send_request.return_value = (200, OBJECT) - result = self._run_module(CREATE_PAYLOAD) - - assert result['changed'] - assert 'checkpoint_hosts' in result - - def test_create_idempotent(self, get_host_200, connection_mock): - connection_mock.send_request.return_value = (200, OBJECT) - result = self._run_module(CREATE_PAYLOAD) - - assert not result['changed'] - - def test_update(self, get_host_200, connection_mock): - connection_mock.send_request.return_value = (200, OBJECT) - result = self._run_module(UPDATE_PAYLOAD) - - assert result['changed'] - - def test_delete(self, get_host_200, connection_mock): - connection_mock.send_request.return_value = (200, OBJECT) - result = self._run_module(DELETE_PAYLOAD) - - assert result['changed'] - - def test_delete_idempotent(self, get_host_404, connection_mock): - connection_mock.send_request.return_value = (200, OBJECT) - result = self._run_module(DELETE_PAYLOAD) - - assert not result['changed'] - - def _run_module(self, module_args): - set_module_args(module_args) - with pytest.raises(AnsibleExitJson) as ex: - self.module.main() - return ex.value.args[0] - - def _run_module_with_fail_json(self, module_args): - set_module_args(module_args) - with pytest.raises(AnsibleFailJson) as exc: - self.module.main() - result = exc.value.args[0] - return result diff --git a/test/units/modules/network/cloudengine/ce_module.py b/test/units/modules/network/cloudengine/ce_module.py deleted file mode 100644 index d7990d4138..0000000000 --- a/test/units/modules/network/cloudengine/ce_module.py +++ /dev/null @@ -1,90 +0,0 @@ -# Copyright (c) 2019 Red Hat -# -# This file is a part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase - - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(module_name, name, device=''): - path = os.path.join(fixture_path, module_name, device, name) - if not os.path.exists(path): - path = os.path.join(fixture_path, module_name, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as f: - data = f.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class TestCloudEngineModule(ModuleTestCase): - - def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False): - - self.load_fixtures(commands) - - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - if commands is not None: - if sort: - self.assertEqual(sorted(commands), sorted(result['commands']), result['commands']) - else: - self.assertEqual(commands, result['commands'], result['commands']) - - return result - - def failed(self): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def changed(self, changed=False): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertEqual(result['changed'], changed, result) - return result - - def load_fixtures(self, commands=None): - pass diff --git a/test/units/modules/network/cloudengine/fixtures/ce_is_is_instance/after.txt b/test/units/modules/network/cloudengine/fixtures/ce_is_is_instance/after.txt deleted file mode 100644 index b8ff89b615..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_is_is_instance/after.txt +++ /dev/null @@ -1,11 +0,0 @@ -<data> - <isiscomm xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0"> - <isSites> - <isSite> - <instanceId>100</instanceId> - <vpnName>_public_</vpnName> - <description>ISIS</description> - </isSite> - </isSites> - </isiscomm> - </data> diff --git a/test/units/modules/network/cloudengine/fixtures/ce_is_is_instance/before.txt b/test/units/modules/network/cloudengine/fixtures/ce_is_is_instance/before.txt deleted file mode 100644 index 618bbf05f4..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_is_is_instance/before.txt +++ /dev/null @@ -1,11 +0,0 @@ -<data> - <isiscomm xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0"> - <isSites> - <isSite> - <instanceId></instanceId> - <vpnName></vpnName> - <description></description> - </isSite> - </isSites> - </isiscomm> - </data> diff --git a/test/units/modules/network/cloudengine/fixtures/ce_is_is_interface/after_interface.txt b/test/units/modules/network/cloudengine/fixtures/ce_is_is_interface/after_interface.txt deleted file mode 100644 index f7aee10da0..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_is_is_interface/after_interface.txt +++ /dev/null @@ -1,26 +0,0 @@ -<data> -<isiscomm> - <isSites> - <isSite> - <instanceId>100</instanceId> - <isCircuits> - <isCircuit> - <ifName></ifName> - <circuitLevelType>level_1</circuitLevelType> - <level1DisPriority>10</level1DisPriority> - <level2DisPriority>10</level2DisPriority> - <silentEnable>true</silentEnable> - <silentCost>true</silentCost> - <typeP2pEnable>true</typeP2pEnable> - <snpaCheck>true</snpaCheck> - <p2pNegotiationMode>2_way</p2pNegotiationMode> - <p2pPeerIPIgnore>true</p2pPeerIPIgnore> - <pPPOsicpCheckEnable>true</pPPOsicpCheckEnable> - <level1Cost>10</level1Cost> - <level2Cost>10</level2Cost> - </isCircuit> - </isCircuits> - </isSite> - </isSites> - </isiscomm> -</data>
\ No newline at end of file diff --git a/test/units/modules/network/cloudengine/fixtures/ce_is_is_interface/before_interface.txt b/test/units/modules/network/cloudengine/fixtures/ce_is_is_interface/before_interface.txt deleted file mode 100644 index 0a07d5e7e1..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_is_is_interface/before_interface.txt +++ /dev/null @@ -1,26 +0,0 @@ -<data> -<isiscomm> - <isSites> - <isSite> - <instanceId>100</instanceId> - <isCircuits> - <isCircuit> - <ifName></ifName> - <circuitLevelType></circuitLevelType> - <level1DisPriority></level1DisPriority> - <level2DisPriority></level2DisPriority> - <silentEnable></silentEnable> - <silentCost></silentCost> - <typeP2pEnable></typeP2pEnable> - <snpaCheck></snpaCheck> - <p2pNegotiationMode></p2pNegotiationMode> - <p2pPeerIPIgnore></p2pPeerIPIgnore> - <pPPOsicpCheckEnable></pPPOsicpCheckEnable> - <level1Cost></level1Cost> - <level2Cost></level2Cost> - </isCircuit> - </isCircuits> - </isSite> - </isSites> - </isiscomm> -</data> diff --git a/test/units/modules/network/cloudengine/fixtures/ce_is_is_view/after.txt b/test/units/modules/network/cloudengine/fixtures/ce_is_is_view/after.txt deleted file mode 100644 index 8da6a62e94..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_is_is_view/after.txt +++ /dev/null @@ -1,104 +0,0 @@ -<data> - <isiscomm> - <isSites> - <isSite> - <instanceId>100</instanceId> - <vpnName>_public_</vpnName> - <description>ISIS</description> - <isLevel>level_1</isLevel> - <costStyle>narrow</costStyle> - <relaxSpfLimit>true</relaxSpfLimit> - <stdLevel1Cost>60</stdLevel1Cost> - <stdLevel2Cost>60</stdLevel2Cost> - <stdbandwidth>100</stdbandwidth> - <stdAutoCostEnable>true</stdAutoCostEnable> - <stdAutoCostEnableCompatible>true</stdAutoCostEnableCompatible> - <isNetEntitys> - <isNetEntity> - <netEntity>netentity</netEntity> - </isNetEntity> - </isNetEntitys> - <isSiteMTs> - <isSiteMT> - <addressFamily>afIpv4</addressFamily> - <mtId>0</mtId> - <bfdMinRx>100</bfdMinRx> - <bfdMinTx>100</bfdMinTx> - <bfdMultNum>10</bfdMultNum> - <maxLoadBalancing>32</maxLoadBalancing> - <isPreferences> - <isPreference> - <preferenceValue>100</preferenceValue> - <routePolicyName>route</routePolicyName> - </isPreference> - </isPreferences> - <isNextHopWeights> - <isNextHopWeight> - <ipAddress>1.1.1.1</ipAddress> - <weight>100</weight> - </isNextHopWeight> - </isNextHopWeights> - <isFilterImports> - <isFilterImport> - <aclNumOrName>3001</aclNumOrName> - <ipPrefix>ip</ipPrefix> - <routePolicyName>route</routePolicyName> - <policyType>level_1</policyType> - </isFilterImport> - </isFilterImports> - <isFilterExports> - <isFilterExport> - <protocol>ospf</protocol> - <processId>100</processId> - <policyType>level_1</policyType> - </isFilterExport> - </isFilterExports> - <isDefaultRoutes> - <isDefaultRoute> - <defaultMode>always</defaultMode> - <routePolicyName>mode</routePolicyName> - <cost>100</cost> - <tag>100</tag> - <levelType>level_1</levelType> - <avoidLearning>true</avoidLearning> - </isDefaultRoute> - </isDefaultRoutes> - <isImportRoutes> - <isImportRoute> - <protocol>import</protocol> - <processId>100</processId> - <costType>level_1</costType> - <cost>100</cost> - <tag>100</tag> - <policyType>level_1</policyType> - <routePolicyName>import</routePolicyName> - <levelType>level_1</levelType> - <inheritCost>100</inheritCost> - <permitIbgp>true</permitIbgp> - </isImportRoute> - </isImportRoutes> - <isLeakRouteLevel1ToLevel2s> - <isLeakRouteLevel1ToLevel2> - <tag>100</tag> - <routePolicyName>route</routePolicyName> - <aclNumOrName>3001</aclNumOrName> - <ipPrefix>ip</ipPrefix> - <leakEnableFlag>true</leakEnableFlag> - <allowFilter>true</allowFilter> - </isLeakRouteLevel1ToLevel2> - </isLeakRouteLevel1ToLevel2s> - <isLeakRouteLevel2ToLevel1s> - <isLeakRouteLevel2ToLevel1> - <tag>100</tag> - <routePolicyName>route</routePolicyName> - <aclNumOrName>3001</aclNumOrName> - <ipPrefix>ip</ipPrefix> - <allowFilter>true</allowFilter> - </isLeakRouteLevel2ToLevel1> - </isLeakRouteLevel2ToLevel1s> - </isSiteMT> - </isSiteMTs> - </isSite> - </isSites> - </isiscomm> -</data> diff --git a/test/units/modules/network/cloudengine/fixtures/ce_is_is_view/before.txt b/test/units/modules/network/cloudengine/fixtures/ce_is_is_view/before.txt deleted file mode 100644 index abdb8e790f..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_is_is_view/before.txt +++ /dev/null @@ -1,10 +0,0 @@ -<data> - <isiscomm> - <isSites> - <isSite> - <instanceId>100</instanceId> - <vpnName>_public_</vpnName> - </isSite> - </isSites> - </isiscomm> -</data> diff --git a/test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_00.txt b/test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_00.txt deleted file mode 100644 index 974c52c764..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_00.txt +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1024"> - <data> - <ifmtrunk xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0"> - <TrunkIfs> - <TrunkIf> - <ifName>Eth-Trunk10</ifName> - <lacpTrunk> - <isSupportPrmpt>false</isSupportPrmpt> - <rcvTimeoutType>Fast</rcvTimeoutType> - <fastTimeoutUserDefinedValue>3</fastTimeoutUserDefinedValue> - <selectPortStd>Speed</selectPortStd> - <promptDelay>30</promptDelay> - <maxActiveNum>1</maxActiveNum> - <collectMaxDelay>0</collectMaxDelay> - <mixRateEnable>false</mixRateEnable> - <dampStaFlapEn>false</dampStaFlapEn> - <dampUnexpMacEn>false</dampUnexpMacEn> - <trunkSysMac>11-22-33</trunkSysMac> - <trunkPortIdExt>false</trunkPortIdExt> - </lacpTrunk> - </TrunkIf> - </TrunkIfs> - </ifmtrunk> - </data> -</rpc-reply>
\ No newline at end of file diff --git a/test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_01.txt b/test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_01.txt deleted file mode 100644 index 03b3f31e34..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_01.txt +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1024"> - <data> - <ifmtrunk xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0"> - <TrunkIfs> - <TrunkIf> - <ifName>Eth-Trunk10</ifName> - <lacpTrunk> - <isSupportPrmpt>true</isSupportPrmpt> - <rcvTimeoutType>Fast</rcvTimeoutType> - <fastTimeoutUserDefinedValue>10</fastTimeoutUserDefinedValue> - <selectPortStd>Speed</selectPortStd> - <promptDelay>130</promptDelay> - <maxActiveNum>13</maxActiveNum> - <collectMaxDelay>12</collectMaxDelay> - <mixRateEnable>true</mixRateEnable> - <dampStaFlapEn>true</dampStaFlapEn> - <dampUnexpMacEn>true</dampUnexpMacEn> - <trunkSysMac>0000-1111-2222</trunkSysMac> - <trunkPortIdExt>true</trunkPortIdExt> - </lacpTrunk> - </TrunkIf> - </TrunkIfs> - </ifmtrunk> - </data> -</rpc-reply>
\ No newline at end of file diff --git a/test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_10.txt b/test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_10.txt deleted file mode 100644 index 6abbbbfbe4..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_10.txt +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1024"> - <data> - <ifmtrunk xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0"> - <lacpSysInfo> - <priority>32768</priority> - </lacpSysInfo> - </ifmtrunk> - </data> -</rpc-reply>
\ No newline at end of file diff --git a/test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_11.txt b/test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_11.txt deleted file mode 100644 index 22260aa1e7..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_11.txt +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1024"> - <data> - <ifmtrunk xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0"> - <lacpSysInfo> - <priority>32769</priority> - </lacpSysInfo> - </ifmtrunk> - </data> -</rpc-reply>
\ No newline at end of file diff --git a/test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldpSysParameter_00.txt b/test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldpSysParameter_00.txt deleted file mode 100644 index 051d71e457..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldpSysParameter_00.txt +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1024"> - <data> - <lldp xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0"> - <lldpSys> - <lldpSysParameter> - <messageTxInterval>30</messageTxInterval> - <messageTxHoldMultiplier>4</messageTxHoldMultiplier> - <reinitDelay>2</reinitDelay> - <txDelay>2</txDelay> - <notificationInterval>5</notificationInterval> - <fastMessageCount>4</fastMessageCount> - <mdnNotificationInterval>5</mdnNotificationInterval> - <mdnNotificationEnable>disabled</mdnNotificationEnable> - <configManAddr></configManAddr> - <bindifName></bindifName> - </lldpSysParameter> - </lldpSys> - </lldp> - </data> -</rpc-reply>
\ No newline at end of file diff --git a/test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldpSysParameter_01.txt b/test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldpSysParameter_01.txt deleted file mode 100644 index 4fde2b5d0b..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldpSysParameter_01.txt +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1024"> - <data> - <lldp xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0"> - <lldpSys> - <lldpSysParameter> - <messageTxInterval>8</messageTxInterval> - <messageTxHoldMultiplier>8</messageTxHoldMultiplier> - <reinitDelay>8</reinitDelay> - <txDelay>8</txDelay> - <notificationInterval>8</notificationInterval> - <fastMessageCount>8</fastMessageCount> - <mdnNotificationInterval>8</mdnNotificationInterval> - <mdnNotificationEnable>enabled</mdnNotificationEnable> - <configManAddr>1.1.1.1</configManAddr> - <bindifName>bind-name</bindifName> - </lldpSysParameter> - </lldpSys> - </lldp> - </data> -</rpc-reply>
\ No newline at end of file diff --git a/test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldp_global_00.txt b/test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldp_global_00.txt deleted file mode 100644 index b540a21027..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldp_global_00.txt +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1024"> - <data> - <lldp xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0"> - <lldpSys> - <lldpEnable>disabled</lldpEnable> - <mdnStatus>disabled</mdnStatus> - </lldpSys> - </lldp> - </data> -</rpc-reply>
\ No newline at end of file diff --git a/test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldp_global_01.txt b/test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldp_global_01.txt deleted file mode 100644 index 62d1228225..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldp_global_01.txt +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1024"> - <data> - <lldp xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0"> - <lldpSys> - <lldpEnable>enabled</lldpEnable> - <mdnStatus>rxOnly</mdnStatus> - </lldpSys> - </lldp> - </data> -</rpc-reply>
\ No newline at end of file diff --git a/test/units/modules/network/cloudengine/fixtures/ce_lldp/result_ok.txt b/test/units/modules/network/cloudengine/fixtures/ce_lldp/result_ok.txt deleted file mode 100644 index 5e245cf5b6..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_lldp/result_ok.txt +++ /dev/null @@ -1,3 +0,0 @@ -<rpc-reply message-id="801" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" flow-id="98"> - <ok/> -</rpc-reply> diff --git a/test/units/modules/network/cloudengine/fixtures/ce_lldp_interface/lldp_interface_changed.txt b/test/units/modules/network/cloudengine/fixtures/ce_lldp_interface/lldp_interface_changed.txt deleted file mode 100644 index 61052802fa..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_lldp_interface/lldp_interface_changed.txt +++ /dev/null @@ -1,29 +0,0 @@ -<data> - <lldp xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0"> - <lldpInterfaces> - <lldpInterface> - <ifName>10GE1/0/1</ifName> - <lldpAdminStatus>txAndRx</lldpAdminStatus> - <msgInterval operation="merge"> - <txInterval>8</txInterval> - </msgInterval> - <tlvTxEnable> - <manAddrTxEnable>true</manAddrTxEnable> - <portDescTxEnable>true</portDescTxEnable> - <sysCapTxEnable>true</sysCapTxEnable> - <sysDescTxEnable>true</sysDescTxEnable> - <sysNameTxEnable>true</sysNameTxEnable> - <portVlanTxEnable>true</portVlanTxEnable> - <protoVlanTxEnable>true</protoVlanTxEnable> - <txProtocolVlanId>112</txProtocolVlanId> - <vlanNameTxEnable>true</vlanNameTxEnable> - <txVlanNameId>32</txVlanNameId> - <linkAggreTxEnable>true</linkAggreTxEnable> - <macPhyTxEnable>true</macPhyTxEnable> - <maxFrameTxEnable>true</maxFrameTxEnable> - <eee>true</eee> - </tlvTxEnable> - </lldpInterface> - </lldpInterfaces> - </lldp> -</data> diff --git a/test/units/modules/network/cloudengine/fixtures/ce_lldp_interface/lldp_interface_existing.txt b/test/units/modules/network/cloudengine/fixtures/ce_lldp_interface/lldp_interface_existing.txt deleted file mode 100644 index 3b6155fbde..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_lldp_interface/lldp_interface_existing.txt +++ /dev/null @@ -1,29 +0,0 @@ -<data> - <lldp xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0"> - <lldpInterfaces> - <lldpInterface> - <ifName>10GE1/0/1</ifName> - <lldpAdminStatus>txOnly</lldpAdminStatus> - <msgInterval operation="merge"> - <txInterval>1</txInterval> - </msgInterval> - <tlvTxEnable> - <manAddrTxEnable>false</manAddrTxEnable> - <portDescTxEnable>false</portDescTxEnable> - <sysCapTxEnable>false</sysCapTxEnable> - <sysDescTxEnable>false</sysDescTxEnable> - <sysNameTxEnable>false</sysNameTxEnable> - <portVlanTxEnable>false</portVlanTxEnable> - <protoVlanTxEnable>false</protoVlanTxEnable> - <txProtocolVlanId></txProtocolVlanId> - <vlanNameTxEnable>false</vlanNameTxEnable> - <txVlanNameId></txVlanNameId> - <linkAggreTxEnable>false</linkAggreTxEnable> - <macPhyTxEnable>false</macPhyTxEnable> - <maxFrameTxEnable>false</maxFrameTxEnable> - <eee></eee> - </tlvTxEnable> - </lldpInterface> - </lldpInterfaces> - </lldp> -</data>
\ No newline at end of file diff --git a/test/units/modules/network/cloudengine/fixtures/ce_lldp_interface/result_ok.txt b/test/units/modules/network/cloudengine/fixtures/ce_lldp_interface/result_ok.txt deleted file mode 100644 index 5e245cf5b6..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_lldp_interface/result_ok.txt +++ /dev/null @@ -1,3 +0,0 @@ -<rpc-reply message-id="801" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" flow-id="98"> - <ok/> -</rpc-reply> diff --git a/test/units/modules/network/cloudengine/fixtures/ce_mdn_interface/after.txt b/test/units/modules/network/cloudengine/fixtures/ce_mdn_interface/after.txt deleted file mode 100644 index 7cbc500df9..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_mdn_interface/after.txt +++ /dev/null @@ -1,14 +0,0 @@ - <data> - <lldp> - <lldpSys> - <lldpEnable>enabled</lldpEnable> - <mdnStatus>enabled</mdnStatus> - </lldpSys> - <mdnInterfaces> - <mdnInterface> - <ifName>10GE1/0/1</ifName> - <mdnStatus>rxOnly</mdnStatus> - </mdnInterface> - </mdnInterfaces> - </lldp> -</data> diff --git a/test/units/modules/network/cloudengine/fixtures/ce_mdn_interface/before.txt b/test/units/modules/network/cloudengine/fixtures/ce_mdn_interface/before.txt deleted file mode 100644 index 885dc9027b..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_mdn_interface/before.txt +++ /dev/null @@ -1,14 +0,0 @@ - <data> - <lldp> - <lldpSys> - <lldpEnable>disabled</lldpEnable> - <mdnStatus>disabled</mdnStatus> - </lldpSys> - <mdnInterfaces> - <mdnInterface> - <ifName>10GE1/0/1</ifName> - <mdnStatus>disabled</mdnStatus> - </mdnInterface> - </mdnInterfaces> - </lldp> -</data> diff --git a/test/units/modules/network/cloudengine/fixtures/ce_multicast_global/after.txt b/test/units/modules/network/cloudengine/fixtures/ce_multicast_global/after.txt deleted file mode 100644 index b196031e7b..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_multicast_global/after.txt +++ /dev/null @@ -1,10 +0,0 @@ - <data> - <mcastbase> - <mcastAfsEnables> - <mcastAfsEnable> - <vrfName>vpna</vrfName> - <addressFamily>ipv4unicast</addressFamily> - </mcastAfsEnable> - </mcastAfsEnables> - </mcastbase> - </data> diff --git a/test/units/modules/network/cloudengine/fixtures/ce_multicast_global/before.txt b/test/units/modules/network/cloudengine/fixtures/ce_multicast_global/before.txt deleted file mode 100644 index fe6c839571..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_multicast_global/before.txt +++ /dev/null @@ -1 +0,0 @@ - <data/>
\ No newline at end of file diff --git a/test/units/modules/network/cloudengine/fixtures/ce_multicast_igmp_enable/after.txt b/test/units/modules/network/cloudengine/fixtures/ce_multicast_igmp_enable/after.txt deleted file mode 100644 index 3af30dedab..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_multicast_igmp_enable/after.txt +++ /dev/null @@ -1,22 +0,0 @@ -<data> - <l2mc > - <l2McSnpgEnables> - <l2McSnpgEnable> - <addrFamily>ipv4unicast</addrFamily> - <sendQueryEnable>false</sendQueryEnable> - <sendQuerySrcIpAddr>192.168.0.1</sendQuerySrcIpAddr> - </l2McSnpgEnable> - </l2McSnpgEnables> - <vlan> - <l2McVlanCfgs> - <l2McVlanCfg> - <addrFamily>ipv4unicast</addrFamily> - <vlanId>1</vlanId> - <version>2</version> - <snoopingEnable>true</snoopingEnable> - <proxyEnable>true</proxyEnable> - </l2McVlanCfg> - </l2McVlanCfgs> - </vlan> - </l2mc> - </data> diff --git a/test/units/modules/network/cloudengine/fixtures/ce_multicast_igmp_enable/before.txt b/test/units/modules/network/cloudengine/fixtures/ce_multicast_igmp_enable/before.txt deleted file mode 100644 index fe6c839571..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_multicast_igmp_enable/before.txt +++ /dev/null @@ -1 +0,0 @@ - <data/>
\ No newline at end of file diff --git a/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/result_ok.txt b/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/result_ok.txt deleted file mode 100644 index 5e245cf5b6..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/result_ok.txt +++ /dev/null @@ -1,3 +0,0 @@ -<rpc-reply message-id="801" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" flow-id="98"> - <ok/> -</rpc-reply> diff --git a/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/srBfdPara_1.txt b/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/srBfdPara_1.txt deleted file mode 100644 index 6e5e930093..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/srBfdPara_1.txt +++ /dev/null @@ -1,18 +0,0 @@ -<data> - <staticrt xmlns="http://www.huawei.com/netconf/vrp" format-version="1.0" content-version="1.0"> - <staticrtbase> - <srBfdParas> - <srBfdPara> - <afType>ipv4unicast</afType> - <ifName>Ethernet3/0/0</ifName> - <destVrfName>_public_</destVrfName> - <nexthop>192.168.2.2</nexthop> - <localAddress>192.168.2.1</localAddress> - <minRxInterval>50</minRxInterval> - <minTxInterval>50</minTxInterval> - <multiplier>3</multiplier> - </srBfdPara> - </srBfdParas> - </staticrtbase> - </staticrt> - </data> diff --git a/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/srBfdPara_2.txt b/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/srBfdPara_2.txt deleted file mode 100644 index 6e5e930093..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/srBfdPara_2.txt +++ /dev/null @@ -1,18 +0,0 @@ -<data> - <staticrt xmlns="http://www.huawei.com/netconf/vrp" format-version="1.0" content-version="1.0"> - <staticrtbase> - <srBfdParas> - <srBfdPara> - <afType>ipv4unicast</afType> - <ifName>Ethernet3/0/0</ifName> - <destVrfName>_public_</destVrfName> - <nexthop>192.168.2.2</nexthop> - <localAddress>192.168.2.1</localAddress> - <minRxInterval>50</minRxInterval> - <minTxInterval>50</minTxInterval> - <multiplier>3</multiplier> - </srBfdPara> - </srBfdParas> - </staticrtbase> - </staticrt> - </data> diff --git a/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/staticrtbase_1.txt b/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/staticrtbase_1.txt deleted file mode 100644 index 62800c80a8..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/staticrtbase_1.txt +++ /dev/null @@ -1,18 +0,0 @@ - <data> - <staticrt xmlns="http://www.huawei.com/netconf/vrp" format-version="1.0" content-version="1.0"> - <staticrtbase> - <srRoutes> - <srRoute> - <vrfName>_public_</vrfName> - <afType>ipv4unicast</afType> - <topologyName>base</topologyName> - <prefix>192.168.20.0</prefix> - <maskLength>24</maskLength> - <ifName/> - <destVrfName>_public_</destVrfName> - <nexthop>189.88.252.1</nexthop> - </srRoute> - </srRoutes> - </staticrtbase> - </staticrt> - </data> diff --git a/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/staticrtbase_2.txt b/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/staticrtbase_2.txt deleted file mode 100644 index 62800c80a8..0000000000 --- a/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/staticrtbase_2.txt +++ /dev/null @@ -1,18 +0,0 @@ - <data> - <staticrt xmlns="http://www.huawei.com/netconf/vrp" format-version="1.0" content-version="1.0"> - <staticrtbase> - <srRoutes> - <srRoute> - <vrfName>_public_</vrfName> - <afType>ipv4unicast</afType> - <topologyName>base</topologyName> - <prefix>192.168.20.0</prefix> - <maskLength>24</maskLength> - <ifName/> - <destVrfName>_public_</destVrfName> - <nexthop>189.88.252.1</nexthop> - </srRoute> - </srRoutes> - </staticrtbase> - </staticrt> - </data> diff --git a/test/units/modules/network/cloudengine/test_ce_is_is_instance.py b/test/units/modules/network/cloudengine/test_ce_is_is_instance.py deleted file mode 100644 index cf3438c6cf..0000000000 --- a/test/units/modules/network/cloudengine/test_ce_is_is_instance.py +++ /dev/null @@ -1,71 +0,0 @@ -# (c) 2019 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) - -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cloudengine import ce_is_is_instance -from units.modules.network.cloudengine.ce_module import TestCloudEngineModule, load_fixture -from units.modules.utils import set_module_args - - -class TestCloudEngineLacpModule(TestCloudEngineModule): - module = ce_is_is_instance - - def setUp(self): - super(TestCloudEngineLacpModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.cloudengine.ce_is_is_instance.get_nc_config') - self.get_nc_config = self.mock_get_config.start() - - self.mock_set_config = patch('ansible.modules.network.cloudengine.ce_is_is_instance.set_nc_config') - self.set_nc_config = self.mock_set_config.start() - self.set_nc_config.return_value = None - - def tearDown(self): - super(TestCloudEngineLacpModule, self).tearDown() - self.mock_set_config.stop() - self.mock_get_config.stop() - - def test_isis_instance_present(self): - xml_existing = load_fixture('ce_is_is_instance', 'before.txt') - xml_end_state = load_fixture('ce_is_is_instance', 'after.txt') - update = ['isis 100', 'vpn-instance __public__'] - self.get_nc_config.side_effect = (xml_existing, xml_end_state) - config = dict( - instance_id=100, - vpn_name='__public__', - state='present') - set_module_args(config) - result = self.execute_module(changed=True) - self.assertEquals(sorted(result['updates']), sorted(update)) - - def test_isis_instance_present(self): - xml_existing = load_fixture('ce_is_is_instance', 'after.txt') - xml_end_state = load_fixture('ce_is_is_instance', 'before.txt') - update = ['undo isis 100'] - self.get_nc_config.side_effect = (xml_existing, xml_end_state) - config = dict( - instance_id=100, - vpn_name='__public__', - state='absent') - set_module_args(config) - result = self.execute_module(changed=True) - self.assertEquals(sorted(result['updates']), sorted(update)) diff --git a/test/units/modules/network/cloudengine/test_ce_is_is_interface.py b/test/units/modules/network/cloudengine/test_ce_is_is_interface.py deleted file mode 100644 index 32896ad56f..0000000000 --- a/test/units/modules/network/cloudengine/test_ce_is_is_interface.py +++ /dev/null @@ -1,100 +0,0 @@ -# (c) 2019 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) - -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cloudengine import ce_is_is_interface -from units.modules.network.cloudengine.ce_module import TestCloudEngineModule, load_fixture -from units.modules.utils import set_module_args - - -class TestCloudEngineLacpModule(TestCloudEngineModule): - module = ce_is_is_interface - - def setUp(self): - super(TestCloudEngineLacpModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.cloudengine.ce_is_is_interface.get_nc_config') - self.get_nc_config = self.mock_get_config.start() - - self.mock_set_config = patch('ansible.modules.network.cloudengine.ce_is_is_interface.set_nc_config') - self.set_nc_config = self.mock_set_config.start() - self.set_nc_config.return_value = None - - self.before = load_fixture('ce_is_is_interface', 'before_interface.txt') - self.after = load_fixture('ce_is_is_interface', 'after_interface.txt') - - def tearDown(self): - super(TestCloudEngineLacpModule, self).tearDown() - self.mock_set_config.stop() - self.mock_get_config.stop() - - def test_isis_interface_present(self): - update = ['interface 10GE1/0/1', - 'isis enable 100', - 'isis circuit-level level-1', - 'isis dis-priority 10 level-1', - 'isis ppp-negotiation 2-way', - 'isis cost 10 level-2'] - self.get_nc_config.side_effect = (self.before, self.after) - config = dict( - instance_id=100, - ifname='10GE1/0/1', - leveltype='level_1', - level1dispriority=10, - silentenable=True, - silentcost=True, - typep2penable=True, - snpacheck=True, - p2pnegotiationmode='2_way', - p2ppeeripignore=True, - ppposicpcheckenable=True, - level2cost=10 - ) - set_module_args(config) - result = self.execute_module(changed=True) - print(result['updates']) - self.assertEquals(sorted(result['updates']), sorted(update)) - - def test_isis_interface_absent(self): - update = ['interface 10GE1/0/1', - 'undo isis enable', - 'undo isis circuit-level', - 'undo isis ppp-negotiation'] - self.get_nc_config.side_effect = (self.after, self.before) - config = dict( - instance_id=100, - ifname='10GE1/0/1', - leveltype='level_1', - level1dispriority=10, - silentenable=True, - silentcost=True, - typep2penable=True, - snpacheck=True, - p2pnegotiationmode='2_way', - p2ppeeripignore=True, - ppposicpcheckenable=True, - level2cost=10, - state='absent' - ) - set_module_args(config) - result = self.execute_module(changed=True) - self.assertEquals(sorted(result['updates']), sorted(update)) diff --git a/test/units/modules/network/cloudengine/test_ce_is_is_view.py b/test/units/modules/network/cloudengine/test_ce_is_is_view.py deleted file mode 100644 index ec2cda74d2..0000000000 --- a/test/units/modules/network/cloudengine/test_ce_is_is_view.py +++ /dev/null @@ -1,248 +0,0 @@ -# (c) 2019 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) - -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cloudengine import ce_is_is_view -from units.modules.network.cloudengine.ce_module import TestCloudEngineModule, load_fixture -from units.modules.utils import set_module_args - - -class TestCloudEngineLacpModule(TestCloudEngineModule): - module = ce_is_is_view - - def setUp(self): - super(TestCloudEngineLacpModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.cloudengine.ce_is_is_view.get_nc_config') - self.get_nc_config = self.mock_get_config.start() - - self.mock_set_config = patch('ansible.modules.network.cloudengine.ce_is_is_view.set_nc_config') - self.set_nc_config = self.mock_set_config.start() - self.set_nc_config.return_value = None - - self.before = load_fixture('ce_is_is_view', 'before.txt') - self.after = load_fixture('ce_is_is_view', 'after.txt') - - def tearDown(self): - super(TestCloudEngineLacpModule, self).tearDown() - self.mock_set_config.stop() - self.mock_get_config.stop() - - def test_ce_is_is_view_absent(self): - self.get_nc_config.side_effect = (self.after, self.before) - config = dict( - instance_id=100, - description='ISIS', - islevel='level_1', - coststyle='narrow', - stdlevel2cost=60, - stdbandwidth=100, - autocostenable=True, - autocostenablecompatible=True, - netentity='netentity', - preference_value=100, - route_policy_name='route', - max_load=32, - ip_address='1.1.1.1', - weight=100, - penetration_direct='level2-level1', - import_routepolicy_name='import', - tag=100, - allow_filter=True, - allow_up_down=True, - enablelevel1tolevel2=True, - defaultmode='always', - mode_routepolicyname='mode', - cost=100, - mode_tag=100, - level_type='level_1', - avoid_learning=True, - protocol='ospf', - processid=100, - cost_type='external', - import_cost=100, - import_tag=100, - import_route_policy='import', - impotr_leveltype='level_1', - inheritcost=True, - permitibgp=True, - export_protocol='ospf', - export_policytype='aclNumOrName', - export_processid=100, - export_ipprefix='export', - export_routepolicyname='export', - import_aclnumorname='acl', - import_routepolicyname='import', - bfd_min_rx=100, - bfd_min_tx=100, - bfd_multiplier_num=10, - state='absent' - ) - set_module_args(config) - self.execute_module(changed=True) - - def test_ce_is_is_view_present(self): - self.get_nc_config.side_effect = (self.before, self.after) - update = ['isis 100', - 'description ISIS', - 'is-level level_1', - 'cost-style narrow', - 'circuit-cost 60 level-2', - 'bandwidth-reference 100', - 'network-entity netentity', - 'preference 100 route-policy route', - 'maximum load-balancing 32', - 'nexthop 1.1.1.1 weight 100', - 'import-route isis level-2 into level-1 filter-policy route-policy import tag 100 direct allow-filter-policy allow-up-down-bit', - 'preference 100 route-policy route', - 'undo import-route isis level-1 into level-2 disable', - 'default-route-advertise always cost 100 tag 100 level-1 avoid-learning', - 'import-route isis level-2 into level-1 filter-policy route-policy import tag 100 direct allow-filter-policy allow-up-down-bit', - 'preference 100 route-policy route', - 'import-route ospf 100 inherit-cost cost-type external cost 100 tag 100 route-policy import level-1', - 'default-route-advertise always cost 100 tag 100 level-1 avoid-learning', - 'import-route isis level-2 into level-1 filter-policy route-policy import tag 100 direct allow-filter-policy allow-up-down-bit', - 'preference 100 route-policy route', - 'bfd all-interfaces enable', - 'bfd all-interfaces min-rx-interval 100 min-tx-interval 100 detect-multiplier 10', - 'import-route ospf 100 inherit-cost cost-type external cost 100 tag 100 route-policy import level-1', - 'default-route-advertise always cost 100 tag 100 level-1 avoid-learning', - 'import-route isis level-2 into level-1 filter-policy route-policy import tag 100 direct allow-filter-policy allow-up-down-bit', - 'preference 100 route-policy route', - 'filter-policy ip-prefix export route-policy export export ospf 100', - 'bfd all-interfaces min-rx-interval 100 min-tx-interval 100 detect-multiplier 10', - 'import-route ospf 100 inherit-cost cost-type external cost 100 tag 100 route-policy import level-1', - 'default-route-advertise always cost 100 tag 100 level-1 avoid-learning', - 'import-route isis level-2 into level-1 filter-policy route-policy import tag 100 direct allow-filter-policy allow-up-down-bit', - 'preference 100 route-policy route', - 'filter-policy acl-name acl route-policy importimport', - 'filter-policy ip-prefix export route-policy export export ospf 100', - 'bfd all-interfaces min-rx-interval 100 min-tx-interval 100 detect-multiplier 10', - 'import-route ospf 100 inherit-cost cost-type external cost 100 tag 100 route-policy import level-1', - 'default-route-advertise always cost 100 tag 100 level-1 avoid-learning', - 'import-route isis level-2 into level-1 filter-policy route-policy import tag 100 direct allow-filter-policy allow-up-down-bit', - 'preference 100 route-policy route', - 'auto-cost enable', - 'auto-cost enable compatible'] - - config = dict( - instance_id=100, - description='ISIS', - islevel='level_1', - coststyle='narrow', - stdlevel2cost=60, - stdbandwidth=100, - autocostenable=True, - autocostenablecompatible=True, - netentity='netentity', - preference_value=100, - route_policy_name='route', - max_load=32, - ip_address='1.1.1.1', - weight=100, - penetration_direct='level2-level1', - import_routepolicy_name='import', - tag=100, - allow_filter=True, - allow_up_down=True, - enablelevel1tolevel2=True, - defaultmode='always', - mode_routepolicyname='mode', - cost=100, - mode_tag=100, - level_type='level_1', - avoid_learning=True, - protocol='ospf', - processid=100, - cost_type='external', - import_cost=100, - import_tag=100, - import_route_policy='import', - impotr_leveltype='level_1', - inheritcost=True, - permitibgp=True, - export_protocol='ospf', - export_policytype='aclNumOrName', - export_processid=100, - export_ipprefix='export', - export_routepolicyname='export', - import_aclnumorname='acl', - import_routepolicyname='import', - bfd_min_rx=100, - bfd_min_tx=100, - bfd_multiplier_num=10 - ) - set_module_args(config) - result = self.execute_module(changed=True) - self.assertEquals(sorted(result['updates']), sorted(update)) - - def test_ce_is_is_view_no_changed(self): - self.get_nc_config.side_effect = (self.after, self.after) - config = dict( - instance_id=100, - description='ISIS', - islevel='level_1', - coststyle='narrow', - stdlevel2cost=60, - stdbandwidth=100, - autocostenable=True, - autocostenablecompatible=True, - netentity='netentity', - preference_value=100, - route_policy_name='route', - max_load=32, - ip_address='1.1.1.1', - weight=100, - penetration_direct='level2-level1', - import_routepolicy_name='import', - tag=100, - allow_filter=True, - allow_up_down=True, - enablelevel1tolevel2=True, - defaultmode='always', - mode_routepolicyname='mode', - cost=100, - mode_tag=100, - level_type='level_1', - avoid_learning=True, - protocol='ospf', - processid=100, - cost_type='external', - import_cost=100, - import_tag=100, - import_route_policy='import', - impotr_leveltype='level_1', - inheritcost=True, - permitibgp=True, - export_protocol='ospf', - export_policytype='aclNumOrName', - export_processid=100, - export_ipprefix='export', - export_routepolicyname='export', - import_aclnumorname='acl', - import_routepolicyname='import', - bfd_min_rx=100, - bfd_min_tx=100, - bfd_multiplier_num=10 - ) - set_module_args(config) - self.execute_module(changed=False) diff --git a/test/units/modules/network/cloudengine/test_ce_lacp.py b/test/units/modules/network/cloudengine/test_ce_lacp.py deleted file mode 100644 index 598488e7b6..0000000000 --- a/test/units/modules/network/cloudengine/test_ce_lacp.py +++ /dev/null @@ -1,134 +0,0 @@ -# (c) 2019 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) - -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cloudengine import ce_lacp -from units.modules.utils import set_module_args -from .ce_module import TestCloudEngineModule, load_fixture - - -class TestCloudEngineLacpModule(TestCloudEngineModule): - module = ce_lacp - - def setUp(self): - super(TestCloudEngineLacpModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.cloudengine.ce_lacp.get_nc_config') - self.get_nc_config = self.mock_get_config.start() - - self.mock_set_config = patch('ansible.modules.network.cloudengine.ce_lacp.set_nc_config') - self.set_nc_config = self.mock_set_config.start() - self.set_nc_config.return_value = None - - def tearDown(self): - super(TestCloudEngineLacpModule, self).tearDown() - self.mock_set_config.stop() - self.mock_get_config.stop() - - def test_lacp_eturnk_present(self): - xml_existing = load_fixture('ce_lacp', 'ce_lacp_00.txt') - xml_end_state = load_fixture('ce_lacp', 'ce_lacp_01.txt') - update = ['lacp max active-linknumber 13', - 'lacp dampening state-flapping', - 'lacp port-id-extension enable', - 'lacp collector delay 12', - 'lacp preempt enable', - 'lacp system-id 0000-1111-2222', - 'lacp mixed-rate link enable', - 'lacp preempt delay 130', - 'lacp timeout user-defined 10', - 'lacp dampening unexpected-mac disable'] - self.get_nc_config.side_effect = (xml_existing, xml_end_state) - set_module_args(dict( - mode='Dynamic', - trunk_id='10', - preempt_enable='true', - state_flapping='true', - port_id_extension_enable='true', - unexpected_mac_disable='true', - system_id='0000-1111-2222', - timeout_type='Fast', - fast_timeout='10', - mixed_rate_link_enable='true', - preempt_delay=11, - collector_delay=12, - max_active_linknumber=13, - select='Speed', - state='present')) - result = self.execute_module(changed=True) - self.assertEqual(sorted(result['updates']), sorted(update)) - - def test_lacp_eturnk_absent(self): - xml_existing = load_fixture('ce_lacp', 'ce_lacp_10.txt') - xml_end_state = load_fixture('ce_lacp', 'ce_lacp_00.txt') - default_values = ['undo lacp priority', - 'lacp timeout Fast', - 'lacp max active-linknumber 1', - 'lacp collector delay 0', - 'lacp preempt enable false', - 'lacp dampening state-flapping false', - 'lacp dampening unexpected-mac disable false', - 'lacp mixed-rate link enable false', - 'lacp port-id-extension enable false', - 'lacp preempt delay 30', - 'lacp select Speed', - 'lacp system-id 11-22-33', - 'lacp timeout user-defined 3'] - self.get_nc_config.side_effect = (xml_existing, xml_end_state) - set_module_args(dict( - mode='Dynamic', - trunk_id='10', - preempt_enable='true', - state_flapping='true', - port_id_extension_enable='true', - unexpected_mac_disable='true', - system_id='0000-1111-2222', - timeout_type='Fast', - fast_timeout='10', - mixed_rate_link_enable='true', - preempt_delay=11, - collector_delay=12, - max_active_linknumber=13, - select='Speed', - state='absent' - )) - result = self.execute_module(changed=True) - self.assertEqual(sorted(result['updates']), sorted(default_values)) - - def test_lacp_global_present(self): - xml_existing = load_fixture('ce_lacp', 'ce_lacp_10.txt') - xml_end_state = load_fixture('ce_lacp', 'ce_lacp_11.txt') - self.get_nc_config.side_effect = (xml_existing, xml_end_state) - set_module_args(dict(global_priority=32769, - state='present')) - result = self.execute_module(changed=True) - self.assertEqual(result['updates'], ['lacp priority 32769']) - - def test_lacp_global_absent(self): - xml_existing = load_fixture('ce_lacp', 'ce_lacp_11.txt') - xml_end_state = load_fixture('ce_lacp', 'ce_lacp_10.txt') - self.get_nc_config.side_effect = (xml_existing, xml_end_state) - set_module_args(dict(global_priority=32769, - state='absent')) - result = self.execute_module(changed=True) - # excpect: lacp priority is set to default value(32768) - self.assertEqual(result['updates'], ['lacp priority 32768']) diff --git a/test/units/modules/network/cloudengine/test_ce_lldp.py b/test/units/modules/network/cloudengine/test_ce_lldp.py deleted file mode 100644 index 743e4bcad5..0000000000 --- a/test/units/modules/network/cloudengine/test_ce_lldp.py +++ /dev/null @@ -1,113 +0,0 @@ -# (c) 2019 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) - -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cloudengine import ce_lldp -from units.modules.network.cloudengine.ce_module import TestCloudEngineModule, load_fixture -from units.modules.utils import set_module_args - - -class TestCloudEngineLacpModule(TestCloudEngineModule): - module = ce_lldp - - def setUp(self): - super(TestCloudEngineLacpModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.cloudengine.ce_lldp.get_nc_config') - self.get_nc_config = self.mock_get_config.start() - - self.mock_set_config = patch('ansible.modules.network.cloudengine.ce_lldp.set_nc_config') - self.set_nc_config = self.mock_set_config.start() - self.set_nc_config.return_value = None - xml_existing_1 = load_fixture('ce_lldp', 'ce_lldp_global_00.txt') - xml_existing_2 = load_fixture('ce_lldp', 'ce_lldp_global_01.txt') - xml_end_state_1 = load_fixture('ce_lldp', 'ce_lldpSysParameter_00.txt') - xml_end_state_2 = load_fixture('ce_lldp', 'ce_lldpSysParameter_01.txt') - self.get_side_effect = (xml_existing_1, xml_existing_2, xml_end_state_1, xml_end_state_2) - self.result_ok = load_fixture('ce_lldp', 'result_ok.txt') - - def tearDown(self): - super(TestCloudEngineLacpModule, self).tearDown() - self.mock_set_config.stop() - self.mock_get_config.stop() - - def test_lldp_global_present(self): - update = ['lldp enable', - 'lldp mdn enable', - 'lldp mdn enable', - 'lldp transmit interval 8', - 'lldp transmit multiplier 8', - 'lldp restart 8', - 'lldp transmit delay 8', - 'lldp trap-interval 8', - 'lldp fast-count 8', - 'lldp mdn trap-interval 8', - 'lldp management-address 1.1.1.1', - 'lldp management-address bind interface bind-name'] - self.get_nc_config.side_effect = self.get_side_effect - self.set_nc_config.side_effect = [self.result_ok] * 11 - set_module_args(dict( - lldpenable='enabled', - mdnstatus='rxOnly', - interval=8, - hold_multiplier=8, - restart_delay=8, - transmit_delay=8, - notification_interval=8, - fast_count=8, - mdn_notification_interval=8, - management_address='1.1.1.1', - bind_name='bind-name') - ) - result = self.execute_module(changed=True) - self.assertEqual(sorted(result['updates']), sorted(update)) - - def test_lacp_sys_parameter_present(self): - update = ['lldp enable', - 'lldp mdn enable', - 'lldp mdn enable', - 'lldp transmit interval 8', - 'lldp transmit multiplier 8', - 'lldp restart 8', - 'lldp transmit delay 8', - 'lldp trap-interval 8', - 'lldp fast-count 8', - 'lldp mdn trap-interval 8', - 'lldp management-address 1.1.1.1', - 'lldp management-address bind interface bind-name'] - self.get_nc_config.side_effect = self.get_side_effect - self.set_nc_config.side_effect = [self.result_ok] * 11 - set_module_args(dict( - lldpenable='enabled', - mdnstatus='rxOnly', - interval=8, - hold_multiplier=8, - restart_delay=8, - transmit_delay=8, - notification_interval=8, - fast_count=8, - mdn_notification_interval=8, - management_address='1.1.1.1', - bind_name='bind-name') - ) - result = self.execute_module(changed=True) - self.assertEqual(sorted(result['updates']), sorted(update)) diff --git a/test/units/modules/network/cloudengine/test_ce_lldp_interface.py b/test/units/modules/network/cloudengine/test_ce_lldp_interface.py deleted file mode 100644 index deec0cd7ba..0000000000 --- a/test/units/modules/network/cloudengine/test_ce_lldp_interface.py +++ /dev/null @@ -1,111 +0,0 @@ -# (c) 2019 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) - -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cloudengine import ce_lldp_interface -from units.modules.network.cloudengine.ce_module import TestCloudEngineModule, load_fixture -from units.modules.utils import set_module_args - - -class TestCloudEngineLacpModule(TestCloudEngineModule): - module = ce_lldp_interface - - def setUp(self): - super(TestCloudEngineLacpModule, self).setUp() - - # self.mock_get_config = patch('ansible.modules.network.cloudengine.ce_lldp.get_nc_config') - self.mock_get_config = patch('ansible.modules.network.cloudengine.ce_lldp_interface.get_nc_config') - self.get_nc_config = self.mock_get_config.start() - - self.mock_set_nc_config = patch('ansible.modules.network.cloudengine.ce_lldp_interface.set_nc_config') - self.set_nc_config = self.mock_set_nc_config.start() - self.xml_absent = load_fixture('ce_lldp_interface', 'lldp_interface_existing.txt') - self.xml_present = load_fixture('ce_lldp_interface', 'lldp_interface_changed.txt') - self.result_ok = load_fixture('ce_lldp_interface', 'result_ok.txt') - - def tearDown(self): - super(TestCloudEngineLacpModule, self).tearDown() - self.mock_set_nc_config.stop() - self.mock_get_config.stop() - - def test_lldp_present(self): - self.get_nc_config.side_effect = (self.xml_absent, self.xml_present) * 5 - self.set_nc_config.return_value = self.result_ok - config = dict( - lldpenable='enabled', - function_lldp_interface_flag='disableINTERFACE', - type_tlv_disable='basic_tlv', - type_tlv_enable='dot1_tlv', - ifname='10GE1/0/1', - lldpadminstatus='txOnly', - manaddrtxenable=True, - portdesctxenable=True, - syscaptxenable=True, - sysdesctxenable=True, - sysnametxenable=True, - portvlantxenable=True, - protovlantxenable=True, - txprotocolvlanid=True, - vlannametxenable=True, - txvlannameid=8, - txinterval=8, - protoidtxenable=True, - macphytxenable=True, - linkaggretxenable=True, - maxframetxenable=True, - eee=True, - dcbx=True - ) - set_module_args(config) - result = self.execute_module(changed=True) - - def test_lldp_absent(self): - self.get_nc_config.side_effect = (self.xml_present, self.xml_present, self.xml_absent, self.xml_absent) - self.set_nc_config.return_value = self.result_ok - config = dict( - lldpenable='enabled', - function_lldp_interface_flag='disableINTERFACE', - type_tlv_disable='basic_tlv', - type_tlv_enable='dot1_tlv', - ifname='10GE1/0/1', - lldpadminstatus='txOnly', - manaddrtxenable=False, - portdesctxenable=False, - syscaptxenable=False, - sysdesctxenable=False, - sysnametxenable=False, - portvlantxenable=False, - protovlantxenable=False, - txprotocolvlanid=False, - vlannametxenable=False, - txvlannameid=18, - txinterval=18, - protoidtxenable=False, - macphytxenable=False, - linkaggretxenable=False, - maxframetxenable=False, - eee=False, - dcbx=False, - state='absent' - ) - set_module_args(config) - result = self.execute_module(changed=False) diff --git a/test/units/modules/network/cloudengine/test_ce_mdn_interface.py b/test/units/modules/network/cloudengine/test_ce_mdn_interface.py deleted file mode 100644 index 10e5e535da..0000000000 --- a/test/units/modules/network/cloudengine/test_ce_mdn_interface.py +++ /dev/null @@ -1,67 +0,0 @@ -# (c) 2019 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) - -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cloudengine import ce_mdn_interface -from units.modules.network.cloudengine.ce_module import TestCloudEngineModule, load_fixture -from units.modules.utils import set_module_args - - -class TestCloudEngineLacpModule(TestCloudEngineModule): - module = ce_mdn_interface - - def setUp(self): - super(TestCloudEngineLacpModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.cloudengine.ce_mdn_interface.get_nc_config') - self.get_nc_config = self.mock_get_config.start() - - self.mock_set_config = patch('ansible.modules.network.cloudengine.ce_mdn_interface.set_nc_config') - self.set_nc_config = self.mock_set_config.start() - self.set_nc_config.return_value = "<ok/>" - self.before = load_fixture('ce_mdn_interface', 'before.txt') - self.after = load_fixture('ce_mdn_interface', 'after.txt') - - def tearDown(self): - super(TestCloudEngineLacpModule, self).tearDown() - self.mock_set_config.stop() - self.mock_get_config.stop() - - def test_mdn_enable(self): - update = [['lldp enable', 'interface 10GE1/0/1', 'lldp mdn enable']] - self.get_nc_config.side_effect = (self.before, self.before, self.after, self.after) - set_module_args(dict( - lldpenable='enabled', - mdnstatus='rxOnly', - ifname='10GE1/0/1') - ) - result = self.execute_module(changed=True) - self.assertEquals(sorted(result['updates']), sorted(update)) - - def test_repeat_enable(self): - self.get_nc_config.side_effect = (self.after, self.after, self.after, self.after, ) - set_module_args(dict( - lldpenable='enabled', - mdnstatus='rxOnly', - ifname='10GE1/0/1') - ) - self.execute_module(changed=False) diff --git a/test/units/modules/network/cloudengine/test_ce_multicast_global.py b/test/units/modules/network/cloudengine/test_ce_multicast_global.py deleted file mode 100644 index 5cc9f5ead3..0000000000 --- a/test/units/modules/network/cloudengine/test_ce_multicast_global.py +++ /dev/null @@ -1,69 +0,0 @@ -# (c) 2019 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) - -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cloudengine import ce_multicast_global -from units.modules.network.cloudengine.ce_module import TestCloudEngineModule, load_fixture -from units.modules.utils import set_module_args - - -class TestCloudEngineLacpModule(TestCloudEngineModule): - module = ce_multicast_global - - def setUp(self): - super(TestCloudEngineLacpModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.cloudengine.ce_multicast_global.get_nc_config') - self.get_nc_config = self.mock_get_config.start() - - self.mock_set_config = patch('ansible.modules.network.cloudengine.ce_multicast_global.set_nc_config') - self.set_nc_config = self.mock_set_config.start() - self.set_nc_config.return_value = "<ok/>" - self.before = load_fixture('ce_multicast_global', 'before.txt') - self.after = load_fixture('ce_multicast_global', 'after.txt') - - def tearDown(self): - super(TestCloudEngineLacpModule, self).tearDown() - self.mock_set_config.stop() - self.mock_get_config.stop() - - def test_multicast_enable(self): - update = ['multicast routing-enable'] - self.get_nc_config.side_effect = (self.before, self.after) - set_module_args(dict( - aftype='v4', - vrf='vpna', - state='present') - ) - result = self.execute_module(changed=True) - self.assertEquals(sorted(result['updates']), sorted(update)) - - def test_multicast_undo_enable(self): - update = ['undo multicast routing-enable'] - self.get_nc_config.side_effect = (self.after, self.before) - set_module_args(dict( - aftype='v4', - vrf='vpna', - state='absent') - ) - result = self.execute_module(changed=True) - self.assertEquals(sorted(result['updates']), sorted(update)) diff --git a/test/units/modules/network/cloudengine/test_ce_multicast_igmp_enable.py b/test/units/modules/network/cloudengine/test_ce_multicast_igmp_enable.py deleted file mode 100644 index 8149e2a474..0000000000 --- a/test/units/modules/network/cloudengine/test_ce_multicast_igmp_enable.py +++ /dev/null @@ -1,80 +0,0 @@ -# (c) 2019 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) - -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cloudengine import ce_multicast_igmp_enable -from units.modules.network.cloudengine.ce_module import TestCloudEngineModule, load_fixture -from units.modules.utils import set_module_args - - -class TestCloudEngineLacpModule(TestCloudEngineModule): - module = ce_multicast_igmp_enable - - def setUp(self): - super(TestCloudEngineLacpModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.cloudengine.ce_multicast_igmp_enable.get_nc_config') - self.get_nc_config = self.mock_get_config.start() - - self.mock_set_config = patch('ansible.modules.network.cloudengine.ce_multicast_igmp_enable.set_nc_config') - self.set_nc_config = self.mock_set_config.start() - self.set_nc_config.return_value = "<ok/>" - self.before = load_fixture('ce_multicast_igmp_enable', 'before.txt') - self.after = load_fixture('ce_multicast_igmp_enable', 'after.txt') - - def tearDown(self): - super(TestCloudEngineLacpModule, self).tearDown() - self.mock_set_config.stop() - self.mock_get_config.stop() - - def test_igmp_enable(self): - update = ['igmp snooping enable', - 'igmp snooping version 2', - 'igmp snooping proxy'] - self.get_nc_config.side_effect = (self.before, self.after) - set_module_args(dict( - aftype='v4', - features='vlan', - vlan_id=1, - igmp=True, - version=2, - proxy=True) - ) - result = self.execute_module(changed=True) - self.assertEquals(sorted(result['updates']), sorted(update)) - - def test_igmp_undo_enable(self): - update = ['undo igmp snooping enable', - 'undo igmp snooping version', - 'undo igmp snooping proxy'] - self.get_nc_config.side_effect = (self.after, self.before) - set_module_args(dict( - aftype='v4', - features='vlan', - vlan_id=1, - igmp=True, - version=2, - proxy=True, - state='absent') - ) - result = self.execute_module(changed=True) - self.assertEquals(sorted(result['updates']), sorted(update)) diff --git a/test/units/modules/network/cloudengine/test_ce_static_route_bfd.py b/test/units/modules/network/cloudengine/test_ce_static_route_bfd.py deleted file mode 100644 index a8953d4897..0000000000 --- a/test/units/modules/network/cloudengine/test_ce_static_route_bfd.py +++ /dev/null @@ -1,102 +0,0 @@ -# (c) 2019 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) - -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cloudengine import ce_static_route_bfd -from units.modules.network.cloudengine.ce_module import TestCloudEngineModule, load_fixture -from units.modules.utils import set_module_args - - -class TestCloudEngineLacpModule(TestCloudEngineModule): - module = ce_static_route_bfd - - def setUp(self): - super(TestCloudEngineLacpModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.cloudengine.ce_static_route_bfd.get_nc_config') - self.get_nc_config = self.mock_get_config.start() - - self.mock_set_config = patch('ansible.modules.network.cloudengine.ce_static_route_bfd.set_nc_config') - self.set_nc_config = self.mock_set_config.start() - self.set_nc_config.return_value = load_fixture('ce_lldp', 'result_ok.txt') - - def tearDown(self): - super(TestCloudEngineLacpModule, self).tearDown() - self.mock_set_config.stop() - self.mock_get_config.stop() - - def test_ce_static_route_bfd_changed_false(self): - srBfdPara_1 = load_fixture('ce_static_route_bfd', 'srBfdPara_1.txt') - staticrtbase_1 = load_fixture('ce_static_route_bfd', 'staticrtbase_1.txt') - self.get_nc_config.side_effect = (srBfdPara_1, srBfdPara_1, staticrtbase_1, staticrtbase_1) - - config = dict( - prefix='255.255.0.0', - mask=22, - aftype='v4', - next_hop='10.10.1.1', - nhp_interface='10GE1/0/1', - vrf='mgnt', - destvrf='_public_', - tag=23, - description='for a test', - pref='22', - function_flag='dynamicBFD', - min_tx_interval='32', - min_rx_interval='23', - detect_multiplier='24', - bfd_session_name='43' - ) - set_module_args(config) - self.execute_module(changed=False) - - def test_ce_static_route_bfd_changed_true(self): - srBfdPara_1 = load_fixture('ce_static_route_bfd', 'srBfdPara_1.txt') - srBfdPara_2 = load_fixture('ce_static_route_bfd', 'srBfdPara_2.txt') - staticrtbase_1 = load_fixture('ce_static_route_bfd', 'staticrtbase_1.txt') - staticrtbase_2 = load_fixture('ce_static_route_bfd', 'staticrtbase_2.txt') - self.get_nc_config.side_effect = (srBfdPara_1, staticrtbase_1, srBfdPara_2, staticrtbase_2) - updates = ['ip route-static vpn-instance mgnt 255.255.0.0 255.255.252.0 10GE1/0/1 10.10.1.1', - ' preference 22', - ' tag 23', - ' track bfd-session 43', - ' description for a test'] - config = dict( - prefix='255.255.0.0', - mask=22, - aftype='v4', - next_hop='10.10.1.1', - nhp_interface='10GE1/0/1', - vrf='mgnt', - destvrf='_public_', - tag=23, - description='for a test', - pref='22', - function_flag='dynamicBFD', - min_tx_interval='32', - min_rx_interval='23', - detect_multiplier='24', - bfd_session_name='43' - ) - set_module_args(config) - result = self.execute_module(changed=True) - self.assertEqual(sorted(result['updates']), sorted(updates)) diff --git a/test/units/modules/network/cloudvision/test_cv_server_provision.py b/test/units/modules/network/cloudvision/test_cv_server_provision.py deleted file mode 100644 index f9017f1458..0000000000 --- a/test/units/modules/network/cloudvision/test_cv_server_provision.py +++ /dev/null @@ -1,886 +0,0 @@ -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# - -from units.compat import unittest -from units.compat.mock import patch, Mock -import sys -sys.modules['cvprac'] = Mock() -sys.modules['cvprac.cvp_client'] = Mock() -sys.modules['cvprac.cvp_client_errors'] = Mock() -from ansible.modules.network.cloudvision import cv_server_provision - - -class MockException(Exception): - pass - - -class TestCvServerProvision(unittest.TestCase): - @patch('ansible.modules.network.cloudvision.cv_server_provision.CvpApiError', - new_callable=lambda: MockException) - @patch('ansible.modules.network.cloudvision.cv_server_provision.server_configurable_configlet') - @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_in_compliance') - @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_info') - @patch('ansible.modules.network.cloudvision.cv_server_provision.connect') - @patch('ansible.modules.network.cloudvision.cv_server_provision.AnsibleModule') - def test_main_module_args(self, mock_module, mock_connect, mock_info, - mock_comp, mock_server_conf, mock_exception): - ''' Test main module args. - ''' - mock_module_object = Mock() - mock_module_object.params = dict(action='show', switch_name='eos') - mock_module_object.fail_json.side_effect = SystemExit('Exiting') - mock_module.return_value = mock_module_object - mock_connect.return_value = 'Client' - mock_info.side_effect = mock_exception('Error Getting Info') - argument_spec = dict( - host=dict(required=True), - port=dict(required=False, default=None), - protocol=dict(default='https', choices=['http', 'https']), - username=dict(required=True), - password=dict(required=True, no_log=True), - server_name=dict(required=True), - switch_name=dict(required=True), - switch_port=dict(required=True), - port_vlan=dict(required=False, default=None), - template=dict(require=True), - action=dict(default='show', choices=['show', 'add', 'remove']), - auto_run=dict(type='bool', default=False), - ) - self.assertRaises(SystemExit, cv_server_provision.main) - mock_module.assert_called_with(argument_spec=argument_spec, - supports_check_mode=False) - self.assertEqual(mock_connect.call_count, 1) - self.assertEqual(mock_info.call_count, 1) - mock_comp.assert_not_called() - mock_server_conf.assert_not_called() - mock_module_object.fail_json.assert_called_with(msg='Error Getting Info') - - @patch('ansible.modules.network.cloudvision.cv_server_provision.CvpApiError', - new_callable=lambda: MockException) - @patch('ansible.modules.network.cloudvision.cv_server_provision.server_configurable_configlet') - @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_in_compliance') - @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_info') - @patch('ansible.modules.network.cloudvision.cv_server_provision.connect') - @patch('ansible.modules.network.cloudvision.cv_server_provision.AnsibleModule') - def test_main_no_switch_configlet(self, mock_module, mock_connect, - mock_info, mock_comp, mock_server_conf, - mock_exception): - ''' Test main fails if switch has no configlet for Ansible to edit. - ''' - mock_module_object = Mock() - mock_module_object.params = dict(action='add', switch_name='eos') - mock_module_object.fail_json.side_effect = SystemExit('Exiting') - mock_module.return_value = mock_module_object - mock_connect.return_value = 'Client' - mock_info.return_value = 'Info' - mock_server_conf.return_value = None - self.assertRaises(SystemExit, cv_server_provision.main) - self.assertEqual(mock_connect.call_count, 1) - self.assertEqual(mock_info.call_count, 1) - self.assertEqual(mock_comp.call_count, 1) - self.assertEqual(mock_server_conf.call_count, 1) - mock_module_object.fail_json.assert_called_with( - msg='Switch eos has no configurable server ports.') - - @patch('ansible.modules.network.cloudvision.cv_server_provision.CvpApiError', - new_callable=lambda: MockException) - @patch('ansible.modules.network.cloudvision.cv_server_provision.port_configurable') - @patch('ansible.modules.network.cloudvision.cv_server_provision.server_configurable_configlet') - @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_in_compliance') - @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_info') - @patch('ansible.modules.network.cloudvision.cv_server_provision.connect') - @patch('ansible.modules.network.cloudvision.cv_server_provision.AnsibleModule') - def test_main_port_not_in_config(self, mock_module, mock_connect, mock_info, - mock_comp, mock_server_conf, - mock_port_conf, mock_exception): - ''' Test main fails if user specified port not in configlet. - ''' - mock_module_object = Mock() - mock_module_object.params = dict(action='add', switch_name='eos', - switch_port='3') - mock_module_object.fail_json.side_effect = SystemExit('Exiting') - mock_module.return_value = mock_module_object - mock_connect.return_value = 'Client' - mock_info.return_value = 'Info' - mock_server_conf.return_value = 'Configlet' - mock_port_conf.return_value = None - self.assertRaises(SystemExit, cv_server_provision.main) - self.assertEqual(mock_connect.call_count, 1) - self.assertEqual(mock_info.call_count, 1) - self.assertEqual(mock_comp.call_count, 1) - self.assertEqual(mock_server_conf.call_count, 1) - self.assertEqual(mock_port_conf.call_count, 1) - mock_module_object.fail_json.assert_called_with( - msg='Port 3 is not configurable as a server port on switch eos.') - - @patch('ansible.modules.network.cloudvision.cv_server_provision.configlet_action') - @patch('ansible.modules.network.cloudvision.cv_server_provision.port_configurable') - @patch('ansible.modules.network.cloudvision.cv_server_provision.server_configurable_configlet') - @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_in_compliance') - @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_info') - @patch('ansible.modules.network.cloudvision.cv_server_provision.connect') - @patch('ansible.modules.network.cloudvision.cv_server_provision.AnsibleModule') - def test_main_show(self, mock_module, mock_connect, mock_info, mock_comp, - mock_server_conf, mock_port_conf, mock_conf_action): - ''' Test main good with show action. - ''' - mock_module_object = Mock() - mock_module_object.params = dict(action='show', switch_name='eos', - switch_port='3', auto_run=False) - mock_module.return_value = mock_module_object - mock_connect.return_value = 'Client' - mock_info.return_value = 'Info' - mock_server_conf.return_value = 'Configlet' - mock_port_conf.return_value = 'Port' - mock_conf_action.return_value = dict() - cv_server_provision.main() - self.assertEqual(mock_connect.call_count, 1) - self.assertEqual(mock_info.call_count, 1) - mock_comp.assert_not_called() - self.assertEqual(mock_server_conf.call_count, 1) - self.assertEqual(mock_port_conf.call_count, 1) - self.assertEqual(mock_conf_action.call_count, 1) - mock_module_object.fail_json.assert_not_called() - return_dict = dict(changed=False, switchInfo='Info', - switchConfigurable=True, portConfigurable=True, - taskCreated=False, taskExecuted=False, - taskCompleted=False) - mock_module_object.exit_json.assert_called_with(**return_dict) - - @patch('ansible.modules.network.cloudvision.cv_server_provision.configlet_action') - @patch('ansible.modules.network.cloudvision.cv_server_provision.port_configurable') - @patch('ansible.modules.network.cloudvision.cv_server_provision.server_configurable_configlet') - @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_in_compliance') - @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_info') - @patch('ansible.modules.network.cloudvision.cv_server_provision.connect') - @patch('ansible.modules.network.cloudvision.cv_server_provision.AnsibleModule') - def test_main_add_no_auto_run(self, mock_module, mock_connect, mock_info, - mock_comp, mock_server_conf, mock_port_conf, - mock_conf_action): - ''' Test main good with add action and no auto_run. - ''' - mock_module_object = Mock() - mock_module_object.params = dict(action='add', switch_name='eos', - switch_port='3', auto_run=False) - mock_module.return_value = mock_module_object - mock_connect.return_value = 'Client' - mock_info.return_value = 'Info' - mock_server_conf.return_value = 'Configlet' - mock_port_conf.return_value = 'Port' - mock_conf_action.return_value = dict(taskCreated=True) - cv_server_provision.main() - self.assertEqual(mock_connect.call_count, 1) - self.assertEqual(mock_info.call_count, 1) - self.assertEqual(mock_comp.call_count, 1) - self.assertEqual(mock_server_conf.call_count, 1) - self.assertEqual(mock_port_conf.call_count, 1) - self.assertEqual(mock_conf_action.call_count, 1) - mock_module_object.fail_json.assert_not_called() - return_dict = dict(changed=False, switchInfo='Info', - switchConfigurable=True, portConfigurable=True, - taskCreated=True, taskExecuted=False, - taskCompleted=False) - mock_module_object.exit_json.assert_called_with(**return_dict) - - @patch('ansible.modules.network.cloudvision.cv_server_provision.wait_for_task_completion') - @patch('ansible.modules.network.cloudvision.cv_server_provision.configlet_update_task') - @patch('ansible.modules.network.cloudvision.cv_server_provision.configlet_action') - @patch('ansible.modules.network.cloudvision.cv_server_provision.port_configurable') - @patch('ansible.modules.network.cloudvision.cv_server_provision.server_configurable_configlet') - @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_in_compliance') - @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_info') - @patch('ansible.modules.network.cloudvision.cv_server_provision.connect') - @patch('ansible.modules.network.cloudvision.cv_server_provision.AnsibleModule') - def test_main_add_auto_run(self, mock_module, mock_connect, mock_info, - mock_comp, mock_server_conf, mock_port_conf, - mock_conf_action, mock_conf_task, mock_wait): - ''' Test main good with add and auto_run. Config updated, task created. - ''' - mock_module_object = Mock() - mock_module_object.params = dict(action='add', switch_name='eos', - switch_port='3', auto_run=True) - mock_module.return_value = mock_module_object - mock_client_object = Mock() - mock_connect.return_value = mock_client_object - mock_info.return_value = 'Info' - mock_server_conf.return_value = 'Configlet' - mock_port_conf.return_value = 'Port' - mock_conf_action.return_value = dict(taskCreated=True, changed=True) - mock_conf_task.return_value = '7' - mock_wait.return_value = True - cv_server_provision.main() - self.assertEqual(mock_connect.call_count, 1) - self.assertEqual(mock_info.call_count, 1) - self.assertEqual(mock_comp.call_count, 1) - self.assertEqual(mock_server_conf.call_count, 1) - self.assertEqual(mock_port_conf.call_count, 1) - self.assertEqual(mock_conf_action.call_count, 1) - self.assertEqual(mock_conf_task.call_count, 1) - self.assertEqual(mock_wait.call_count, 1) - mock_module_object.fail_json.assert_not_called() - return_dict = dict(changed=True, switchInfo='Info', taskId='7', - switchConfigurable=True, portConfigurable=True, - taskCreated=True, taskExecuted=True, - taskCompleted=True) - mock_module_object.exit_json.assert_called_with(**return_dict) - - @patch('ansible.modules.network.cloudvision.cv_server_provision.wait_for_task_completion') - @patch('ansible.modules.network.cloudvision.cv_server_provision.configlet_update_task') - @patch('ansible.modules.network.cloudvision.cv_server_provision.configlet_action') - @patch('ansible.modules.network.cloudvision.cv_server_provision.port_configurable') - @patch('ansible.modules.network.cloudvision.cv_server_provision.server_configurable_configlet') - @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_in_compliance') - @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_info') - @patch('ansible.modules.network.cloudvision.cv_server_provision.connect') - @patch('ansible.modules.network.cloudvision.cv_server_provision.AnsibleModule') - def test_main_add_auto_run_no_task(self, mock_module, mock_connect, - mock_info, mock_comp, mock_server_conf, - mock_port_conf, mock_conf_action, mock_conf_task, - mock_wait): - ''' Test main good with add and auto_run. Config not updated, no task. - ''' - mock_module_object = Mock() - mock_module_object.params = dict(action='add', switch_name='eos', - switch_port='3', auto_run=True) - mock_module.return_value = mock_module_object - mock_client_object = Mock() - mock_connect.return_value = mock_client_object - mock_info.return_value = 'Info' - mock_server_conf.return_value = 'Configlet' - mock_port_conf.return_value = 'Port' - mock_conf_action.return_value = dict(taskCreated=True, changed=False) - mock_conf_task.return_value = None - cv_server_provision.main() - self.assertEqual(mock_connect.call_count, 1) - self.assertEqual(mock_info.call_count, 1) - self.assertEqual(mock_comp.call_count, 1) - self.assertEqual(mock_server_conf.call_count, 1) - self.assertEqual(mock_port_conf.call_count, 1) - self.assertEqual(mock_conf_action.call_count, 1) - self.assertEqual(mock_conf_task.call_count, 1) - mock_wait.assert_not_called() - mock_module_object.fail_json.assert_not_called() - return_dict = dict(changed=False, switchInfo='Info', - switchConfigurable=True, portConfigurable=True, - taskCreated=False, taskExecuted=False, - taskCompleted=False) - mock_module_object.exit_json.assert_called_with(**return_dict) - - @patch('ansible.modules.network.cloudvision.cv_server_provision.CvpClient') - def test_connect_good(self, mock_client): - ''' Test connect success. - ''' - module = Mock() - module.params = dict(host='host', username='username', - password='password', protocol='https', port='10') - connect_mock = Mock() - mock_client.return_value = connect_mock - client = cv_server_provision.connect(module) - self.assertIsInstance(client, Mock) - self.assertEqual(mock_client.call_count, 1) - connect_mock.connect.assert_called_once_with(['host'], 'username', - 'password', port='10', - protocol='https') - module.fail_json.assert_not_called() - - @patch('ansible.modules.network.cloudvision.cv_server_provision.CvpLoginError', - new_callable=lambda: MockException) - @patch('ansible.modules.network.cloudvision.cv_server_provision.CvpClient') - def test_connect_fail(self, mock_client, mock_exception): - ''' Test connect failure with login error. - ''' - module = Mock() - module.params = dict(host='host', username='username', - password='password', protocol='https', port='10') - module.fail_json.side_effect = SystemExit - connect_mock = Mock() - connect_mock.connect.side_effect = mock_exception('Login Error') - mock_client.return_value = connect_mock - self.assertRaises(SystemExit, cv_server_provision.connect, module) - self.assertEqual(connect_mock.connect.call_count, 1) - module.fail_json.assert_called_once_with(msg='Login Error') - - def test_switch_info_good(self): - ''' Test switch_info success. - ''' - module = Mock() - module.params = dict(switch_name='eos') - module.client.api.get_device_by_name.return_value = dict(fqdn='eos') - info = cv_server_provision.switch_info(module) - self.assertEqual(module.client.api.get_device_by_name.call_count, 1) - self.assertEqual(info['fqdn'], 'eos') - module.fail_json.assert_not_called() - - def test_switch_info_no_switch(self): - ''' Test switch_info fails. - ''' - module = Mock() - module.params = dict(switch_name='eos') - module.client.api.get_device_by_name.return_value = None - info = cv_server_provision.switch_info(module) - self.assertEqual(module.client.api.get_device_by_name.call_count, 1) - self.assertEqual(info, None) - module.fail_json.assert_called_once_with( - msg="Device with name 'eos' does not exist.") - - def test_switch_in_compliance_good(self): - ''' Test switch_in_compliance good. - ''' - module = Mock() - module.client.api.check_compliance.return_value = dict( - complianceCode='0000') - sw_info = dict(key='key', type='type', fqdn='eos') - cv_server_provision.switch_in_compliance(module, sw_info) - self.assertEqual(module.client.api.check_compliance.call_count, 1) - module.fail_json.assert_not_called() - - def test_switch_in_compliance_fail(self): - ''' Test switch_in_compliance fail. - ''' - module = Mock() - module.client.api.check_compliance.return_value = dict( - complianceCode='0001') - sw_info = dict(key='key', type='type', fqdn='eos') - cv_server_provision.switch_in_compliance(module, sw_info) - self.assertEqual(module.client.api.check_compliance.call_count, 1) - module.fail_json.assert_called_with( - msg='Switch eos is not in compliance.' - ' Returned compliance code 0001.') - - def test_server_configurable_configlet_good(self): - ''' Test server_configurable_configlet good. - ''' - module = Mock() - module.params = dict(switch_name='eos') - configlets = [dict(name='configlet1', info='line'), - dict(name='eos-server', info='info')] - module.client.api.get_configlets_by_device_id.return_value = configlets - sw_info = dict(key='key', type='type', fqdn='eos') - result = cv_server_provision.server_configurable_configlet(module, - sw_info) - self.assertEqual(module.client.api.get_configlets_by_device_id.call_count, 1) - self.assertIsNotNone(result) - self.assertEqual(result['name'], 'eos-server') - self.assertEqual(result['info'], 'info') - - def test_server_configurable_configlet_not_configurable(self): - ''' Test server_configurable_configlet fail. No server configlet. - ''' - module = Mock() - module.params = dict(switch_name='eos') - configlets = [dict(name='configlet1', info='line'), - dict(name='configlet2', info='info')] - module.client.api.get_configlets_by_device_id.return_value = configlets - sw_info = dict(key='key', type='type', fqdn='eos') - result = cv_server_provision.server_configurable_configlet(module, sw_info) - self.assertEqual(module.client.api.get_configlets_by_device_id.call_count, 1) - self.assertIsNone(result) - - def test_server_configurable_configlet_no_configlets(self): - ''' Test server_configurable_configlet fail. No switch configlets. - ''' - module = Mock() - module.params = dict(switch_name='eos') - module.client.api.get_configlets_by_device_id.return_value = [] - sw_info = dict(key='key', type='type', fqdn='eos') - result = cv_server_provision.server_configurable_configlet(module, - sw_info) - self.assertEqual(module.client.api.get_configlets_by_device_id.call_count, 1) - self.assertIsNone(result) - - def test_port_configurable_good(self): - ''' Test port_configurable user provided switch port in configlet. - ''' - module = Mock() - module.params = dict(switch_name='eos', switch_port='3') - config = '!\ninterface Ethernet3\n!\ninterface Ethernet4\n!' - configlet = dict(name='eos-server', config=config) - result = cv_server_provision.port_configurable(module, configlet) - self.assertTrue(result) - - def test_port_configurable_fail(self): - ''' Test port_configurable user provided switch port not in configlet. - ''' - module = Mock() - module.params = dict(switch_name='eos', switch_port='2') - config = '!\ninterface Ethernet3\n!\ninterface Ethernet4\n!' - configlet = dict(name='eos-server', config=config) - result = cv_server_provision.port_configurable(module, configlet) - self.assertFalse(result) - - def test_port_configurable_fail_no_config(self): - ''' Test port_configurable configlet empty. - ''' - module = Mock() - module.params = dict(switch_name='eos', switch_port='2') - config = '' - configlet = dict(name='eos-server', config=config) - result = cv_server_provision.port_configurable(module, configlet) - self.assertFalse(result) - - def test_configlet_action_show_blank_config(self): - ''' Test configlet_action show returns current port configuration. - ''' - module = Mock() - module.params = dict(action='show', switch_name='eos', switch_port='3') - config = '!\ninterface Ethernet3\n!\ninterface Ethernet4\n!' - configlet = dict(name='eos-server', key='key', config=config) - result = cv_server_provision.configlet_action(module, configlet) - self.assertIsNotNone(result) - self.assertEqual(result['currentConfigBlock'], 'interface Ethernet3\n!') - module.client.api.update_configlet.assert_not_called() - - @patch('ansible.modules.network.cloudvision.cv_server_provision.config_from_template') - def test_configlet_action_add_with_task(self, mock_template): - ''' Test configlet_action add with change updates configlet and adds - proper info to return data. Including task spawned info. - ''' - module = Mock() - module.params = dict(action='add', switch_name='eos', switch_port='3') - config = '!\ninterface Ethernet3\n!\ninterface Ethernet4\n!' - configlet = dict(name='eos-server', key='key', config=config) - template_config = ('interface Ethernet3\n description Host eos' - ' managed by Ansible and Jinja template\n' - ' load-interval 30\n' - ' switchport\n' - ' switchport mode trunk\n' - ' no shutdown\n!') - mock_template.return_value = template_config - update_return = dict(data='Configlet eos-server successfully updated' - ' and task initiated.') - module.client.api.update_configlet.return_value = update_return - result = cv_server_provision.configlet_action(module, configlet) - self.assertIsNotNone(result) - self.assertEqual(result['oldConfigBlock'], 'interface Ethernet3\n!') - full_config = '!\n' + template_config + '\ninterface Ethernet4\n!' - self.assertEqual(result['fullConfig'], full_config) - self.assertEqual(result['updateConfigletResponse'], - update_return['data']) - self.assertTrue(result['changed']) - self.assertTrue(result['taskCreated']) - self.assertEqual(module.client.api.update_configlet.call_count, 1) - - @patch('ansible.modules.network.cloudvision.cv_server_provision.config_from_template') - def test_configlet_action_add_no_task(self, mock_template): - ''' Test configlet_action add that doesn't change configlet adds proper - info to return data. Does not including any task info. - ''' - module = Mock() - module.params = dict(action='add', switch_name='eos', switch_port='3') - config = ('!\ninterface Ethernet3\n description test\n' - '!\ninterface Ethernet4\n!') - configlet = dict(name='eos-server', key='key', config=config) - template_config = 'interface Ethernet3\n description test\n!' - mock_template.return_value = template_config - update_return = dict(data='Configlet eos-server successfully updated.') - module.client.api.update_configlet.return_value = update_return - result = cv_server_provision.configlet_action(module, configlet) - self.assertIsNotNone(result) - self.assertEqual(result['oldConfigBlock'], - 'interface Ethernet3\n description test\n!') - self.assertEqual(result['fullConfig'], config) - self.assertEqual(result['updateConfigletResponse'], - update_return['data']) - self.assertNotIn('changed', result) - self.assertNotIn('taskCreated', result) - self.assertEqual(module.client.api.update_configlet.call_count, 1) - - def test_configlet_action_remove_with_task(self): - ''' Test configlet_action remove with change updates configlet and adds - proper info to return data. Including task spawned info. - ''' - module = Mock() - module.params = dict(action='remove', switch_name='eos', - switch_port='3') - config = ('!\ninterface Ethernet3\n description test\n' - '!\ninterface Ethernet4\n!') - configlet = dict(name='eos-server', key='key', config=config) - update_return = dict(data='Configlet eos-server successfully updated' - ' and task initiated.') - module.client.api.update_configlet.return_value = update_return - result = cv_server_provision.configlet_action(module, configlet) - self.assertIsNotNone(result) - self.assertEqual(result['oldConfigBlock'], - 'interface Ethernet3\n description test\n!') - full_config = '!\ninterface Ethernet3\n!\ninterface Ethernet4\n!' - self.assertEqual(result['fullConfig'], full_config) - self.assertEqual(result['updateConfigletResponse'], - update_return['data']) - self.assertTrue(result['changed']) - self.assertTrue(result['taskCreated']) - self.assertEqual(module.client.api.update_configlet.call_count, 1) - - def test_configlet_action_remove_no_task(self): - ''' Test configlet_action with remove that doesn't change configlet and - adds proper info to return data. Does not including any task info. - ''' - module = Mock() - module.params = dict(action='remove', switch_name='eos', - switch_port='3') - config = '!\ninterface Ethernet3\n!\ninterface Ethernet4\n!' - configlet = dict(name='eos-server', key='key', config=config) - update_return = dict(data='Configlet eos-server successfully updated.') - module.client.api.update_configlet.return_value = update_return - result = cv_server_provision.configlet_action(module, configlet) - self.assertIsNotNone(result) - self.assertEqual(result['oldConfigBlock'], 'interface Ethernet3\n!') - self.assertEqual(result['fullConfig'], config) - self.assertEqual(result['updateConfigletResponse'], - update_return['data']) - self.assertNotIn('changed', result) - self.assertNotIn('taskCreated', result) - self.assertEqual(module.client.api.update_configlet.call_count, 1) - - def test_current_config_empty_config(self): - ''' Test current_config with empty config for port - ''' - module = Mock() - module.params = dict(switch_name='eos', switch_port='4') - config = '!\ninterface Ethernet3\n!\ninterface Ethernet4' - result = cv_server_provision.current_config(module, config) - self.assertIsNotNone(result) - self.assertEqual(result, 'interface Ethernet4') - - def test_current_config_with_config(self): - ''' Test current_config with config for port - ''' - module = Mock() - module.params = dict(switch_name='eos', switch_port='3') - config = ('!\ninterface Ethernet3\n description test\n' - '!\ninterface Ethernet4\n!') - result = cv_server_provision.current_config(module, config) - self.assertIsNotNone(result) - self.assertEqual(result, 'interface Ethernet3\n description test\n!') - - def test_current_config_no_match(self): - ''' Test current_config with no entry for port - ''' - module = Mock() - module.fail_json.side_effect = SystemExit - module.params = dict(switch_name='eos', switch_port='2') - config = '!\ninterface Ethernet3\n description test\n!' - self.assertRaises(SystemExit, cv_server_provision.current_config, - module, config) - - def test_valid_template_true(self): - ''' Test valid_template true - ''' - template = 'interface Ethernet3\n description test\n!' - result = cv_server_provision.valid_template('3', template) - self.assertTrue(result) - - def test_valid_template_false(self): - ''' Test valid_template false - ''' - template = 'interface Ethernet3\n description test\n!' - result = cv_server_provision.valid_template('4', template) - self.assertFalse(result) - - @patch('jinja2.DebugUndefined') - @patch('jinja2.Environment') - @patch('jinja2.FileSystemLoader') - def test_config_from_template_no_template(self, mock_file_sys, mock_env, - mock_debug): - ''' Test config_from_template good. No template. - ''' - module = Mock() - module.fail_json.side_effect = SystemExit - module.params = dict(switch_name='eos', switch_port='3', - server_name='new', template='jinja.j2') - mock_file_sys.return_value = 'file' - mock_debug.return_value = 'debug' - env_mock = Mock() - env_mock.get_template.return_value = None - mock_env.return_value = env_mock - self.assertRaises(SystemExit, cv_server_provision.config_from_template, - module) - self.assertEqual(mock_file_sys.call_count, 1) - self.assertEqual(mock_env.call_count, 1) - self.assertEqual(module.fail_json.call_count, 1) - - @patch('jinja2.meta.find_undeclared_variables') - @patch('jinja2.DebugUndefined') - @patch('jinja2.Environment') - @patch('jinja2.FileSystemLoader') - def test_config_from_template_good_no_vlan(self, mock_file_sys, mock_env, mock_debug, - mock_find): - ''' Test config_from_template good. No port_vlan. - ''' - module = Mock() - module.params = dict(switch_name='eos', switch_port='3', - server_name='new', template='jinja.j2') - mock_file_sys.return_value = 'file' - mock_debug.return_value = 'debug' - template_mock = Mock() - template_mock.render.return_value = ('interface Ethernet3\n' - ' description test\n' - ' switchport\n' - ' switchport mode trunk\n' - ' no shutdown\n!') - env_mock = Mock() - env_mock.loader.get_source.return_value = ['one', 'two'] - env_mock.parse.return_value = 'parsed' - env_mock.get_template.return_value = template_mock - mock_env.return_value = env_mock - mock_find.return_value = dict(server_name=None, switch_port=None) - result = cv_server_provision.config_from_template(module) - self.assertIsNotNone(result) - expected = ('interface Ethernet3\n' - ' description test\n' - ' switchport\n' - ' switchport mode trunk\n' - ' no shutdown\n!') - self.assertEqual(result, expected) - self.assertEqual(mock_file_sys.call_count, 1) - self.assertEqual(mock_env.call_count, 1) - module.fail_json.assert_not_called() - - @patch('jinja2.meta.find_undeclared_variables') - @patch('jinja2.DebugUndefined') - @patch('jinja2.Environment') - @patch('jinja2.FileSystemLoader') - def test_config_from_template_good_vlan(self, mock_file_sys, mock_env, mock_debug, - mock_find): - ''' Test config_from_template good. With port_vlan. - ''' - module = Mock() - module.params = dict(switch_name='eos', switch_port='3', - server_name='new', template='jinja.j2', port_vlan='7') - mock_file_sys.return_value = 'file' - mock_debug.return_value = 'debug' - template_mock = Mock() - template_mock.render.return_value = ('interface Ethernet3\n' - ' description test\n' - ' switchport\n' - ' switchport access vlan 7\n' - ' no shutdown\n!') - env_mock = Mock() - env_mock.loader.get_source.return_value = ['one', 'two'] - env_mock.parse.return_value = 'parsed' - env_mock.get_template.return_value = template_mock - mock_env.return_value = env_mock - mock_find.return_value = dict(server_name=None, switch_port=None, - port_vlan=None) - result = cv_server_provision.config_from_template(module) - self.assertIsNotNone(result) - expected = ('interface Ethernet3\n' - ' description test\n' - ' switchport\n' - ' switchport access vlan 7\n' - ' no shutdown\n!') - self.assertEqual(result, expected) - self.assertEqual(mock_file_sys.call_count, 1) - self.assertEqual(mock_env.call_count, 1) - module.fail_json.assert_not_called() - - @patch('jinja2.meta.find_undeclared_variables') - @patch('jinja2.DebugUndefined') - @patch('jinja2.Environment') - @patch('jinja2.FileSystemLoader') - def test_config_from_template_fail_wrong_port(self, mock_file_sys, mock_env, - mock_debug, mock_find): - ''' Test config_from_template fail. Wrong port number in template. - ''' - module = Mock() - module.params = dict(switch_name='eos', switch_port='4', - server_name='new', template='jinja.j2') - mock_file_sys.return_value = 'file' - mock_debug.return_value = 'debug' - template_mock = Mock() - template_mock.render.return_value = ('interface Ethernet3\n' - ' description test\n!') - env_mock = Mock() - env_mock.loader.get_source.return_value = ['one', 'two'] - env_mock.parse.return_value = 'parsed' - env_mock.get_template.return_value = template_mock - mock_env.return_value = env_mock - mock_find.return_value = dict(server_name=None, switch_port=None) - result = cv_server_provision.config_from_template(module) - self.assertIsNotNone(result) - expected = 'interface Ethernet3\n description test\n!' - self.assertEqual(result, expected) - self.assertEqual(mock_file_sys.call_count, 1) - self.assertEqual(mock_env.call_count, 1) - module.fail_json.assert_called_with(msg='Template content does not' - ' configure proper interface' - ' - %s' % expected) - - @patch('jinja2.meta.find_undeclared_variables') - @patch('jinja2.DebugUndefined') - @patch('jinja2.Environment') - @patch('jinja2.FileSystemLoader') - def test_config_from_template_fail_no_vlan(self, mock_file_sys, mock_env, - mock_debug, mock_find): - ''' Test config_from_template fail. Template needs vlan but none provided. - ''' - module = Mock() - module.params = dict(switch_name='eos', switch_port='3', - server_name='new', template='jinja.j2', - port_vlan=None) - mock_file_sys.return_value = 'file' - mock_debug.return_value = 'debug' - template_mock = Mock() - template_mock.render.return_value = ('interface Ethernet3\n' - ' description test\n!') - env_mock = Mock() - env_mock.loader.get_source.return_value = ['one', 'two'] - env_mock.parse.return_value = 'parsed' - env_mock.get_template.return_value = template_mock - mock_env.return_value = env_mock - mock_find.return_value = dict(server_name=None, switch_port=None, - port_vlan=None) - result = cv_server_provision.config_from_template(module) - self.assertIsNotNone(result) - expected = 'interface Ethernet3\n description test\n!' - self.assertEqual(result, expected) - self.assertEqual(mock_file_sys.call_count, 1) - self.assertEqual(mock_env.call_count, 1) - module.fail_json.assert_called_with(msg='Template jinja.j2 requires a' - ' vlan. Please re-run with vlan' - ' number provided.') - - def test_updated_configlet_content_add(self): - ''' Test updated_configlet_content. Add config. - ''' - module = Mock() - module.params = dict(switch_name='eos', switch_port='3') - existing_config = '!\ninterface Ethernet3\n!\ninterface Ethernet4\n!' - new_config_block = 'interface Ethernet3\n description test\n!' - result = cv_server_provision.updated_configlet_content(module, - existing_config, - new_config_block) - expected = ('!\ninterface Ethernet3\n description test\n' - '!\ninterface Ethernet4\n!') - self.assertEqual(result, expected) - module.fail_json.assert_not_called() - - def test_updated_configlet_content_remove(self): - ''' Test updated_configlet_content. Remove config. - ''' - module = Mock() - module.params = dict(switch_name='eos', switch_port='3') - existing_config = ('!\ninterface Ethernet3\n description test\n' - '!\ninterface Ethernet4') - new_config_block = 'interface Ethernet3\n!' - result = cv_server_provision.updated_configlet_content(module, - existing_config, - new_config_block) - expected = '!\ninterface Ethernet3\n!\ninterface Ethernet4' - self.assertEqual(result, expected) - module.fail_json.assert_not_called() - - def test_updated_configlet_content_no_match(self): - ''' Test updated_configlet_content. Interface not in config. - ''' - module = Mock() - module.fail_json.side_effect = SystemExit - module.params = dict(switch_name='eos', switch_port='2') - existing_config = '!\ninterface Ethernet3\n description test\n!' - new_config_block = 'interface Ethernet3\n!' - self.assertRaises(SystemExit, - cv_server_provision.updated_configlet_content, - module, existing_config, new_config_block) - - @patch('time.sleep') - @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_info') - def test_configlet_update_task_good_one_try(self, mock_info, mock_sleep): - ''' Test configlet_update_task gets task after one try. - ''' - module = Mock() - task = dict(data=dict(WORKFLOW_ACTION='Configlet Push'), - description='Configlet Assign', - workOrderId='7') - device_info = dict(taskIdList=[task]) - mock_info.return_value = device_info - result = cv_server_provision.configlet_update_task(module) - self.assertEqual(result, '7') - mock_sleep.assert_not_called() - self.assertEqual(mock_info.call_count, 1) - - @patch('time.sleep') - @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_info') - def test_configlet_update_task_good_three_tries(self, mock_info, mock_sleep): - ''' Test configlet_update_task gets task on third try. - ''' - module = Mock() - task1 = dict(data=dict(WORKFLOW_ACTION='Configlet Push'), - description='Configlet Assign', - workOrderId='7') - task2 = dict(data=dict(WORKFLOW_ACTION='Nonsense'), - description='Configlet Assign', - workOrderId='700') - device_info = dict(taskIdList=[task1, task2]) - mock_info.side_effect = [dict(), dict(), device_info] - result = cv_server_provision.configlet_update_task(module) - self.assertEqual(result, '7') - self.assertEqual(mock_sleep.call_count, 2) - self.assertEqual(mock_info.call_count, 3) - - @patch('time.sleep') - @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_info') - def test_configlet_update_task_no_task(self, mock_info, mock_sleep): - ''' Test configlet_update_task does not get task after three tries. - ''' - module = Mock() - mock_info.side_effect = [dict(), dict(), dict()] - result = cv_server_provision.configlet_update_task(module) - self.assertIsNone(result) - self.assertEqual(mock_sleep.call_count, 3) - self.assertEqual(mock_info.call_count, 3) - - @patch('time.sleep') - def test_wait_for_task_completion_good_one_try(self, mock_time): - ''' Test wait_for_task_completion completed. One Try. - ''' - module = Mock() - module.client.api.get_task_by_id.return_value = dict( - workOrderUserDefinedStatus='Completed') - result = cv_server_provision.wait_for_task_completion(module, '7') - self.assertTrue(result) - self.assertEqual(module.client.api.get_task_by_id.call_count, 1) - module.fail_json.assert_not_called() - mock_time.assert_not_called() - - @patch('time.sleep') - def test_wait_for_task_completion_good_three_tries(self, mock_time): - ''' Test wait_for_task_completion completed. Three tries. - ''' - module = Mock() - try_one_two = dict(workOrderUserDefinedStatus='Pending') - try_three = dict(workOrderUserDefinedStatus='Completed') - module.client.api.get_task_by_id.side_effect = [try_one_two, - try_one_two, try_three] - result = cv_server_provision.wait_for_task_completion(module, '7') - self.assertTrue(result) - self.assertEqual(module.client.api.get_task_by_id.call_count, 3) - module.fail_json.assert_not_called() - self.assertEqual(mock_time.call_count, 2) - - @patch('time.sleep') - def test_wait_for_task_completion_fail(self, mock_time): - ''' Test wait_for_task_completion failed. - ''' - module = Mock() - try_one = dict(workOrderUserDefinedStatus='Failed') - try_two = dict(workOrderUserDefinedStatus='Completed') - module.client.api.get_task_by_id.side_effect = [try_one, try_two] - result = cv_server_provision.wait_for_task_completion(module, '7') - self.assertTrue(result) - self.assertEqual(module.client.api.get_task_by_id.call_count, 2) - text = ('Task 7 has reported status Failed. Please consult the CVP' - ' admins for more information.') - module.fail_json.assert_called_with(msg=text) - self.assertEqual(mock_time.call_count, 1) diff --git a/test/units/modules/network/cnos/cnos_module.py b/test/units/modules/network/cnos/cnos_module.py deleted file mode 100644 index 03832301e8..0000000000 --- a/test/units/modules/network/cnos/cnos_module.py +++ /dev/null @@ -1,126 +0,0 @@ -# Copyright (C) 2017 Lenovo, Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -import tempfile - -from units.compat import unittest -from units.compat.mock import patch -from ansible.module_utils import basic - - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(name): - path = os.path.join(fixture_path, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as f: - data = f.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class AnsibleExitJson(Exception): - pass - - -class AnsibleFailJson(Exception): - pass - - -class TestCnosModule(unittest.TestCase): - def setUp(self): - super(TestCnosModule, self).setUp() - - self.test_log = tempfile.mkstemp(prefix='ansible-test-cnos-module-', suffix='.log')[1] - - self.mock_sleep = patch('time.sleep') - self.mock_sleep.start() - - def tearDown(self): - super(TestCnosModule, self).tearDown() - - self.mock_sleep.stop() - os.remove(self.test_log) - - def execute_module(self, failed=False, changed=False, commands=None, - sort=True, defaults=False): - - self.load_fixtures(commands) - - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - if commands is not None: - if sort: - self.assertEqual(sorted(commands), sorted(result['commands']), - result['commands']) - else: - self.assertEqual(commands, result['commands'], - result['commands']) - - return result - - def failed(self): - def fail_json(*args, **kwargs): - kwargs['failed'] = True - raise AnsibleFailJson(kwargs) - - with patch.object(basic.AnsibleModule, 'fail_json', fail_json): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def changed(self, changed=False): - def exit_json(*args, **kwargs): - if 'changed' not in kwargs: - kwargs['changed'] = False - raise AnsibleExitJson(kwargs) - - with patch.object(basic.AnsibleModule, 'exit_json', exit_json): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertEqual(result['changed'], changed, result) - return result - - def load_fixtures(self, commands=None): - pass diff --git a/test/units/modules/network/cnos/fixtures/cnos_banner_show_banner.txt b/test/units/modules/network/cnos/fixtures/cnos_banner_show_banner.txt deleted file mode 100644 index a134a31753..0000000000 --- a/test/units/modules/network/cnos/fixtures/cnos_banner_show_banner.txt +++ /dev/null @@ -1,3 +0,0 @@ -this is a sample -mulitline banner -used for testing diff --git a/test/units/modules/network/cnos/fixtures/cnos_bgp_config.cfg b/test/units/modules/network/cnos/fixtures/cnos_bgp_config.cfg deleted file mode 100644 index b625756635..0000000000 --- a/test/units/modules/network/cnos/fixtures/cnos_bgp_config.cfg +++ /dev/null @@ -1,24 +0,0 @@ -! -router bgp 33 - router-id 1.2.3.4 - bestpath always-compare-med - cluster-id 1.2.3.4 - confederation identifier 333 - enforce-first-as - bgp as-local-count 33 - bestpath compare-confed-aspath - maxas-limit 333 - graceful-restart-helper - graceful-restart stalepath-time 333 - timers bgp 333 3333 - address-family ipv4 unicast - synchronization - network 0.0.0.0 backdoor - network 0.0.0.0 backdoor - dampening 13 233 333 15 33 - neighbor 10.241.107.40 remote-as 13 - bfd - address-family ipv4 unicast - next-hop-self -! - diff --git a/test/units/modules/network/cnos/fixtures/cnos_config_config.cfg b/test/units/modules/network/cnos/fixtures/cnos_config_config.cfg deleted file mode 100644 index 34477df930..0000000000 --- a/test/units/modules/network/cnos/fixtures/cnos_config_config.cfg +++ /dev/null @@ -1,337 +0,0 @@ -! -version "10.8.0.42" -! -hostname ip10-241-107-39 -! -banner motd NMS India CNOS -banner motd NMS India CNOS G8272 -! -clock timezone EDT 0 0 -! -logging console 7 -vrf context management - ip route 0.0.0.0/0 10.241.107.1 -! -! -port-channel load-balance ethernet destination-mac -port-channel load-balance ethernet source-interface -feature telnet -ip domain-name labs.lenovo.com vrf management -ip domain-list labs.lenovo.com vrf management -ip name-server 10.241.104.120 vrf management -ip name-server 10.240.0.10 vrf management -ip host ip10-241-107-39.labs.lenovo.com 10.241.107.39 vrf management -ip host ip10-241-107-39 10.241.107.39 vrf management -ip domain-name labs.lenovo.com vrf default -ip domain-list labs.lenovo.com vrf default -ip name-server 10.240.0.10 vrf default -ip name-server 10.241.104.120 vrf default -ip host ip10-241-107-39.labs.lenovo.com 10.241.107.39 vrf default -ip host ip10-241-107-39 10.241.107.39 vrf default -ntp server 173.230.154.254 prefer -ntp server 97.127.86.33 prefer -ntp server 129.250.35.250 prefer -ntp server 174.136.103.130 prefer -ntp server 69.10.161.7 prefer -ntp server 96.226.123.196 prefer -ntp server 104.238.179.130 prefer -ntp server 108.61.73.244 prefer -ntp server 208.75.89.4 prefer -snmp-server community public group network-operator -snmp-server community private group network-admin -snmp-server contact Ralph -username admin role network-admin password encrypted $6$bJoWyEu/$9pzSgFPAKGRm1stpTCEl3I39htbjxiFCfhqiHag1NQiKHv/IiLQ2lYW0V3p7p72SgSmVHp38em9P9R/EdePpk/ -logging server 10.241.107.231 -logging server 10.241.107.222 -feature restApi -ovsdb pki ovsdb_mgmt vrf management -ovsdb pki ovsdb_default vrf default -lacp system-priority 32769 -vlag tier-id 313 -vlag priority 1313 -vlag isl port-channel 100 -vlag hlthchk keepalive-attempts 5 -vlag hlthchk peer-ip 1.2.3.4 -vlag auto-recovery 266 -vlag startup-delay 323 -vlag enable -vlag instance 1 port-channel 1003 -vlag instance 1 enable -vlag instance 2 port-channel 20 -vlag instance 2 enable -vlag instance 12 port-channel 23 -vlag instance 33 port-channel 333 -vlag instance 33 enable -spanning-tree mode mst -telemetry heartbeat enabled interval 15 -! -policy-map type control-plane copp-system-policy - class type control-plane copp-s-pvst-bpdu - police pps 500 - class type control-plane copp-s-ecp - police pps 3000 - class type control-plane copp-s-igmp - police pps 3000 -! -vlan 1-2 - no flood ipv4 -! -vlan 3 -! -vlan 5 -! -vlan 12 -! -vlan 13 - name dave -! -vlan dot1q tag native egress-only -! -interface Ethernet1/1 - description Link 1 to LP21 - load-interval counter 2 33 - switchport access vlan 33 - storm-control broadcast level 12.50 - mtu 66 - channel-group 33 mode on -! -interface Ethernet1/2 - description Link 2 to LP21 - channel-group 1001 mode active -! -interface Ethernet1/3 - description Link 1 to LP22 - switchport mode trunk - channel-group 1003 mode active -! -interface Ethernet1/4 - description Link 2 to LP22 - switchport mode trunk - channel-group 1004 mode active -! -interface Ethernet1/5 - description Link 1 to LP23 - no switchport - ip address 20.131.1.1/30 -! -interface Ethernet1/6 - description Link 2 to LP23 - no switchport - ip address 20.131.2.1/30 -! -interface Ethernet1/7 - description Link 1 to LP24 - no switchport - ip address 20.141.1.1/30 -! -interface Ethernet1/8 - description Link 2 to LP24 - no switchport - ip address 20.141.2.1/30 -! -interface Ethernet1/9 -! -interface Ethernet1/10 -! -interface Ethernet1/11 - no switchport - mtu 1402 - ip address 1.1.1.2/8 -! -! -interface Ethernet1/12 - ip address 100.10.10.10/24 - mtu 1402 - no switchport -! -interface Ethernet1/13 - description test string - no switchport - ip address 10.241.107.54/24 - vrrp 254 - address 10.241.107.55 - priority 254 - no shutdown - ip arp timeout 1500 -! -interface Ethernet1/14 -! -interface Ethernet1/15 -! -interface Ethernet1/16 -! -interface Ethernet1/17 -! -interface Ethernet1/18 -! -interface Ethernet1/19 -! -interface Ethernet1/20 -! -interface Ethernet1/21 -! -interface Ethernet1/22 -! -interface Ethernet1/23 - channel-group 11 mode active - lacp port-priority 32769 -! -interface Ethernet1/24 -! -interface Ethernet1/25 -! -interface Ethernet1/26 -! -interface Ethernet1/27 -! -interface Ethernet1/28 -! -interface Ethernet1/29 -! -interface Ethernet1/30 -! -interface Ethernet1/31 -! -interface Ethernet1/32 -! -interface Ethernet1/33 - description Hentammoo - load-interval counter 2 33 - switchport access vlan 33 - storm-control broadcast level 12.50 - mtu 66 - microburst-detection enable threshold 25 - lldp tlv-select max-frame-size - lacp port-priority 33 - spanning-tree mst 33-35 cost 33 - spanning-tree bpduguard enable -! -interface Ethernet1/34 -! -interface Ethernet1/35 -! -interface Ethernet1/36 -! -interface Ethernet1/37 -! -interface Ethernet1/38 -! -interface Ethernet1/39 -! -interface Ethernet1/40 -! -interface Ethernet1/41 -! -interface Ethernet1/42 -! -interface Ethernet1/43 -! -interface Ethernet1/44 - ip address 6.7.8.9 255.255.255.0 - description test string - shutdown -! -interface Ethernet1/45 -! -interface Ethernet1/46 -! -interface Ethernet1/47 -! -interface Ethernet1/48 -! -interface Ethernet1/49 -! -interface Ethernet1/50 -! -interface Ethernet1/51 -! -interface Ethernet1/52 -! -interface Ethernet1/53 -! -interface Ethernet1/54 -! -interface loopback0 - no switchport -! -interface mgmt0 - no switchport - vrf member management - no ip address dhcp - ip address 10.241.107.39/24 - no ipv6 address dhcp -! -interface Vlan1 - no switchport -! -interface port-channel1 -! -interface port-channel2 -! -interface port-channel11 - lacp min-links 2 -! -interface port-channel13 - switchport mode trunk -! -interface port-channel17 - switchport mode trunk -! -interface port-channel20 -! -interface port-channel33 - description Hentammoo - load-interval counter 2 33 - switchport access vlan 33 - storm-control broadcast level 12.50 - mtu 66 - spanning-tree mst 33-35 cost 33 - spanning-tree bpduguard enable -! -interface port-channel100 - switchport mode trunk -! -interface port-channel1001 -! -interface port-channel1002 -! -interface port-channel1003 - switchport mode trunk -! -interface port-channel1004 - switchport mode trunk -! -router bgp 33 - router-id 1.2.3.4 - bestpath always-compare-med - cluster-id 1.2.3.4 - confederation identifier 333 - enforce-first-as - bgp as-local-count 33 - bestpath compare-confed-aspath - maxas-limit 333 - graceful-restart-helper - graceful-restart stalepath-time 333 - timers bgp 333 3333 - address-family ipv4 unicast - synchronization - network 0.0.0.0 backdoor - dampening 13 233 333 15 33 - neighbor 10.241.107.40 remote-as 13 - bfd - address-family ipv4 unicast - next-hop-self -! -route-map anil permit 10 -! -ip arp timeout 1000 -! -line con 0 -line vty 0 - exec-timeout 90 0 -line vty 1 39 -! -! -! -end - diff --git a/test/units/modules/network/cnos/fixtures/cnos_config_src.cfg b/test/units/modules/network/cnos/fixtures/cnos_config_src.cfg deleted file mode 100644 index f42d335d3d..0000000000 --- a/test/units/modules/network/cnos/fixtures/cnos_config_src.cfg +++ /dev/null @@ -1,6 +0,0 @@ -! -hostname foo -! -interface ethernet 1/13 - speed 10000 -! diff --git a/test/units/modules/network/cnos/fixtures/cnos_linkagg_config.cfg b/test/units/modules/network/cnos/fixtures/cnos_linkagg_config.cfg deleted file mode 100644 index 3daa8ecb3e..0000000000 --- a/test/units/modules/network/cnos/fixtures/cnos_linkagg_config.cfg +++ /dev/null @@ -1,36 +0,0 @@ -! -hostname ip10-241-107-39 -! -interface Ethernet1/33 - description anil - microburst-detection enable threshold 25 - lldp tlv-select max-frame-size - lacp port-priority 33 -! -interface Ethernet1/44 -! -interface Ethernet1/10 - no switchport - ip address 10.241.108.10/24 - vrrp 202 - address 10.241.108.20 - shutdown -! -interface Ethernet1/11 - no switchport - mtu 1402 - ip address 1.1.1.2/8 -! -interface port-channel20 -! -interface port-channel33 - description Hentammoo - load-interval counter 2 33 - switchport access vlan 33 - storm-control broadcast level 12.50 - mtu 66 - spanning-tree mst 33-35 cost 33 - spanning-tree bpduguard enable -! -interface Ethernet1/9 -! diff --git a/test/units/modules/network/cnos/fixtures/cnos_logging_config.cfg b/test/units/modules/network/cnos/fixtures/cnos_logging_config.cfg deleted file mode 100644 index 8f3d7d6987..0000000000 --- a/test/units/modules/network/cnos/fixtures/cnos_logging_config.cfg +++ /dev/null @@ -1,9 +0,0 @@ -! -logging logfile anil 4 size 10485760 -logging level vlan 4 -logging server 1.2.3.4 facility local0 -logging server 1.2.34.5 port 34 -logging server 1.2.3.5 4 facility local2 port 23 -logging server anil 5 -logging server tapas 4 facility local2 port 23 -! diff --git a/test/units/modules/network/cnos/fixtures/cnos_static_route.cfg b/test/units/modules/network/cnos/fixtures/cnos_static_route.cfg deleted file mode 100644 index b42f204417..0000000000 --- a/test/units/modules/network/cnos/fixtures/cnos_static_route.cfg +++ /dev/null @@ -1,3 +0,0 @@ -ip route 1.2.3.4/32 1.2.34.5 -ip route 10.241.106.0/24 Ethernet1/13 10.241.107.1 113 tag 1013 description anil -ip route 10.8.0.0/14 15.16.17.18 diff --git a/test/units/modules/network/cnos/fixtures/cnos_system_config.cfg b/test/units/modules/network/cnos/fixtures/cnos_system_config.cfg deleted file mode 100644 index b1e07b7c12..0000000000 --- a/test/units/modules/network/cnos/fixtures/cnos_system_config.cfg +++ /dev/null @@ -1,11 +0,0 @@ -hostname lenovo - -ip route 1.2.0.0/24 Null0 255 -ip route 1.2.3.4/31 Ethernet1/44 1.2.3.1 -ip route 1.2.3.4/32 1.2.34.5 -ip route 10.241.106.0/24 Ethernet1/13 10.241.107.1 113 tag 1013 description anil -ip route 10.241.106.4/32 1.2.3.5 tag 333 description anillll -ip route 10.241.106.4/32 1.3.56.7 -ip route 10.241.107.0/24 10.241.107.1 -ip route 10.241.107.1/32 Ethernet1/33 10.241.107.2 100 tag 111 description anil - diff --git a/test/units/modules/network/cnos/fixtures/cnos_user_config.cfg b/test/units/modules/network/cnos/fixtures/cnos_user_config.cfg deleted file mode 100644 index 5a39ba3d8e..0000000000 --- a/test/units/modules/network/cnos/fixtures/cnos_user_config.cfg +++ /dev/null @@ -1,8 +0,0 @@ -User:admin - role: network-admin - -User:ansible - role: network-operator -no password set. Local login not allowed -this user is created by remote authentication -Remote login through RADIUS/TACACS+ is possible diff --git a/test/units/modules/network/cnos/fixtures/cnos_vlag_config.cfg b/test/units/modules/network/cnos/fixtures/cnos_vlag_config.cfg deleted file mode 100644 index 1f8daf37fc..0000000000 --- a/test/units/modules/network/cnos/fixtures/cnos_vlag_config.cfg +++ /dev/null @@ -1,63 +0,0 @@ - Global State : enabled - VRRP active/active mode : enabled - vLAG system MAC : 08:17:f4:c3:de:38 - ISL Information: - PCH Ifindex State Previous State - -------+-----------+-----------+--------------------------------- - 33 100033 Down Down - - Mis-Match Information: - Local Peer - -------------+---------------------------+----------------------- - Match Result : Mis-match Mis-match - Tier ID : 313 0 - System Type : G8272 - OS Version : 10.8.x.x 0.0.x.x - - Role Information: - Local Peer - -------------+---------------------------+----------------------- - Admin Role : Primary Unselected - Oper Role : Primary Unselected - Priority : 1313 0 - System MAC : a4:8c:db:33:bc:01 00:00:00:00:00:00 - - Consistency Checking Information: - State : enabled - Strict Mode : enabled - Final Result : pass - - FDB refresh Information: - FDB is doing refresh with below setting: - FDB refresh is configured - Bridge FDB aging timer is 1800 second(s) - - FDB synchronization Information: - FDB is NOT being synchronized. - - Auto Recovery Interval 266s (Finished) - - Startup Delay Interval 323s (Finished) - - Health Check Information: - Health check Peer IP Address: 1.2.3.4 - Health check Local IP Address: 0.0.0.0 - Health check retry interval: 133 seconds - Health check number of keepalive attempts: 13 - Health check keepalive interval: 131 seconds - Health check status: DOWN - - Peer Gateway State : enabled - - VLAG instance 1 : enabled - Instance Information - PCH ifindex State Previous State Cons Res - ----------+-----------+--------------+-----------------+-------- - 1003 101003 Down Down pass - - VLAG instance 33 : enabled - Instance Information - PCH ifindex State Previous State Cons Res - ----------+-----------+--------------+-----------------+-------- - 333 0 Down Down pass - diff --git a/test/units/modules/network/cnos/fixtures/cnos_vlan_config.cfg b/test/units/modules/network/cnos/fixtures/cnos_vlan_config.cfg deleted file mode 100644 index e1b750beac..0000000000 --- a/test/units/modules/network/cnos/fixtures/cnos_vlan_config.cfg +++ /dev/null @@ -1,77 +0,0 @@ -Flags: -u - untagged egress traffic for this VLAN -t - tagged egress traffic for this VLAN - -d - auto-provisioned VLAN -h - static and auto-provisioned VLAN - -VLAN Name Status IPMC FLOOD Ports -======== ================================ ======= ========== =================== -1 default ACTIVE IPv6 - po1(u) - po2(u) - po11(u) - po12(u) - po13(u) - po14(u) - po15(u) - po17(u) - po20(u) - po100(u) - po1001(u) - po1002(u) - po1003(u) - po1004(u) - Ethernet1/2(u) - Ethernet1/3(u) - Ethernet1/4(u) - Ethernet1/9(u) - Ethernet1/10(u) - Ethernet1/11(u) - Ethernet1/14(u) - Ethernet1/15(u) - Ethernet1/16(u) - Ethernet1/17(u) - Ethernet1/18(u) - Ethernet1/19(u) - Ethernet1/20(u) - Ethernet1/21(u) - Ethernet1/22(u) - Ethernet1/23(u) - Ethernet1/24(u) - Ethernet1/25(u) - Ethernet1/26(u) - Ethernet1/27(u) - Ethernet1/28(u) - Ethernet1/29(u) - Ethernet1/30(u) - Ethernet1/31(u) - Ethernet1/32(u) - Ethernet1/33(u) - Ethernet1/34(u) - Ethernet1/35(u) - Ethernet1/36(u) - Ethernet1/37(u) - Ethernet1/38(u) - Ethernet1/39(u) - Ethernet1/40(u) - Ethernet1/41(u) - Ethernet1/42(u) - Ethernet1/43(u) - Ethernet1/44(u) - Ethernet1/45(u) - Ethernet1/46(u) - Ethernet1/47(u) - Ethernet1/48(u) - Ethernet1/49(u) - Ethernet1/50(u) - Ethernet1/51(u) - Ethernet1/52(u) - Ethernet1/53(u) - Ethernet1/54(u) -2 VLAN0002 ACTIVE IPv6 -3 VLAN0003 ACTIVE IPv4,IPv6 -5 VLAN0005 ACTIVE IPv4,IPv6 -12 VLAN0012 ACTIVE IPv4,IPv6 -13 anil ACTIVE IPv4,IPv6 - diff --git a/test/units/modules/network/cnos/fixtures/cnos_vrf_config.cfg b/test/units/modules/network/cnos/fixtures/cnos_vrf_config.cfg deleted file mode 100644 index 78ce6c370f..0000000000 --- a/test/units/modules/network/cnos/fixtures/cnos_vrf_config.cfg +++ /dev/null @@ -1,176 +0,0 @@ -Maximum number of vrfs allowed: 65 -VRF default, FIB ID 0 -Router ID: 20.141.2.1 (automatic) -RD 0:0 -Interfaces: - Vlan1 - Vlan2 - Vlan13 - loopback0 - Ethernet1/5 - Ethernet1/6 - Ethernet1/7 - Ethernet1/8 - Ethernet1/9 - Ethernet1/11 - Ethernet1/12 - Ethernet1/13 - Ethernet1/44 - po1 - po2 - po3 - po4 - po6 - po7 - po8 - po9 - po10 - po11 - po12 - po13 - po14 - po15 - po16 - po17 - po18 - po19 - po21 - po22 - po23 - po24 - po25 - po26 - po27 - po28 - po29 - po30 - po31 - po32 - po33 - po34 - po35 - po36 - po37 - po38 - po39 - po40 - po41 - po42 - po43 - po44 - po45 - po46 - po47 - po48 - po49 - po50 - po51 - po52 - po53 - po54 - po55 - po56 - po57 - po58 - po59 - po60 - po61 - po62 - po63 - po64 - po65 - po66 - po67 - po1001 - po1002 - po1003 - po1004 - Ethernet1/1 - Ethernet1/2 - Ethernet1/3 - Ethernet1/4 - Ethernet1/10 - Ethernet1/14 - Ethernet1/15 - Ethernet1/16 - Ethernet1/17 - Ethernet1/18 - Ethernet1/19 - Ethernet1/20 - Ethernet1/21 - Ethernet1/22 - Ethernet1/23 - Ethernet1/24 - Ethernet1/25 - Ethernet1/26 - Ethernet1/27 - Ethernet1/28 - Ethernet1/29 - Ethernet1/30 - Ethernet1/31 - Ethernet1/32 - Ethernet1/34 - Ethernet1/35 - Ethernet1/36 - Ethernet1/37 - Ethernet1/38 - Ethernet1/39 - Ethernet1/40 - Ethernet1/41 - Ethernet1/42 - Ethernet1/43 - Ethernet1/45 - Ethernet1/46 - Ethernet1/47 - Ethernet1/48 - Ethernet1/49 - Ethernet1/50 - Ethernet1/51 - Ethernet1/52 - Ethernet1/53 - Ethernet1/54 -! -VRF management, FIB ID 1 -Router ID: 10.241.107.39 (automatic) -RD 0:0 -Interfaces: - mgmt0 -! -VRF test, FIB ID 2 -Router ID is not set -RD 1:201 -Interfaces: - Ethernet1/33 -! -VRF test1, FIB ID 3 -Router ID is not set -RD 1:202 -Interfaces: - loopback1 - loopback2 - loopback3 - loopback4 - loopback5 - loopback6 -! -VRF test2, FIB ID 4 -Router ID is not set -RD 0:0 -Interfaces: -! -VRF test3, FIB ID 5 -Router ID is not set -RD 1:203 -Interfaces: -! -VRF test4, FIB ID 6 -Router ID is not set -RD 1:204 -Interfaces: -! -VRF test5, FIB ID 7 -Router ID is not set -RD 1:205 -Interfaces: -! - diff --git a/test/units/modules/network/cnos/fixtures/l3_interface_config.cfg b/test/units/modules/network/cnos/fixtures/l3_interface_config.cfg deleted file mode 100644 index ada2246402..0000000000 --- a/test/units/modules/network/cnos/fixtures/l3_interface_config.cfg +++ /dev/null @@ -1,27 +0,0 @@ -! -version "10.8.0.42" -! -hostname ip10-241-107-39 -! -vlan 13 - name dave -! -interface Ethernet1/9 - ip address 10.201.107.1 255.255.255.0 - ipv6 address dead::beaf/64 - description Bleh -! -interface Ethernet1/33 - description Hentammoo - load-interval counter 2 33 - switchport access vlan 33 - storm-control broadcast level 12.50 - mtu 66 - microburst-detection enable threshold 25 - lldp tlv-select max-frame-size - lacp port-priority 33 - spanning-tree mst 33-35 cost 33 - spanning-tree bpduguard enable -! -! -end diff --git a/test/units/modules/network/cnos/fixtures/show_interface_brief b/test/units/modules/network/cnos/fixtures/show_interface_brief deleted file mode 100644 index 67cee78761..0000000000 --- a/test/units/modules/network/cnos/fixtures/show_interface_brief +++ /dev/null @@ -1,92 +0,0 @@ --------------------------------------------------------------------------------- -Ethernet PVID Type Mode Status Reason Speed Port -Interface NVLAN Ch# --------------------------------------------------------------------------------- -Ethernet1/1 33 eth access down Link not connected 10000 33 -Ethernet1/2 1 eth access down Link not connected 10000 1001 -Ethernet1/3 1 eth trunk down Link not connected 10000 1003 -Ethernet1/4 1 eth trunk down Link not connected 10000 1004 -Ethernet1/5 -- eth routed down Link not connected 10000 -- -Ethernet1/6 -- eth routed down Link not connected 10000 -- -Ethernet1/7 -- eth routed down Link not connected 10000 -- -Ethernet1/8 -- eth routed down Link not connected 10000 -- -Ethernet1/9 1 eth access down Link not connected 10000 -- -Ethernet1/10 1 eth access down Link not connected 10000 -- -Ethernet1/11 -- eth routed down Link not connected 10000 -- -Ethernet1/12 -- eth routed down Link not connected 10000 -- -Ethernet1/13 -- eth routed down Link not connected 10000 -- -Ethernet1/14 1 eth access down Link not connected 10000 -- -Ethernet1/15 1 eth access down Link not connected 10000 -- -Ethernet1/16 1 eth access down Link not connected 10000 -- -Ethernet1/17 1 eth access down Link not connected 10000 -- -Ethernet1/18 1 eth access down Link not connected 10000 -- -Ethernet1/19 1 eth access down Link not connected 10000 -- -Ethernet1/20 1 eth access down Link not connected 10000 -- -Ethernet1/21 1 eth access down Link not connected 10000 -- -Ethernet1/22 1 eth access down Link not connected 10000 -- -Ethernet1/23 1 eth access down Link not connected 10000 11 -Ethernet1/24 1 eth access down Link not connected 10000 -- -Ethernet1/25 1 eth access down Link not connected 10000 -- -Ethernet1/26 1 eth access down Link not connected 10000 -- -Ethernet1/27 1 eth access down Link not connected 10000 -- -Ethernet1/28 1 eth access down Link not connected 10000 -- -Ethernet1/29 1 eth access down Link not connected 10000 -- -Ethernet1/30 1 eth access down Link not connected 10000 -- -Ethernet1/31 1 eth access down Link not connected 10000 -- -Ethernet1/32 1 eth access down Link not connected 10000 -- -Ethernet1/33 33 eth access down Link not connected 10000 -- -Ethernet1/34 1 eth access down Link not connected 10000 -- -Ethernet1/35 1 eth access down Link not connected 10000 -- -Ethernet1/36 1 eth access down Link not connected 10000 -- -Ethernet1/37 1 eth access down Link not connected 10000 -- -Ethernet1/38 1 eth access down Link not connected 10000 -- -Ethernet1/39 1 eth access down Link not connected 10000 -- -Ethernet1/40 1 eth access down Link not connected 10000 -- -Ethernet1/41 1 eth access down Link not connected 10000 -- -Ethernet1/42 1 eth access down Link not connected 10000 -- -Ethernet1/43 1 eth access down Link not connected 10000 -- -Ethernet1/44 1 eth access down Link not connected 10000 -- -Ethernet1/45 1 eth access down Link not connected 10000 -- -Ethernet1/46 1 eth access down Link not connected 10000 -- -Ethernet1/47 1 eth access down Link not connected 10000 -- -Ethernet1/48 1 eth access down Link not connected 10000 -- -Ethernet1/49 1 eth access down Link not connected 40000 -- -Ethernet1/50 1 eth access down Link not connected 40000 -- -Ethernet1/51 1 eth access down Link not connected 40000 -- -Ethernet1/52 1 eth access down Link not connected 40000 -- -Ethernet1/53 1 eth access down Link not connected 40000 -- -Ethernet1/54 1 eth access down Link not connected 40000 -- - --------------------------------------------------------------------------------- -Port-channel PVID Type Mode Status Reason Speed Protocol -Interface NVLAN --------------------------------------------------------------------------------- -po1 1 eth access down No link up members NA none -po2 1 eth access down No link up members NA none -po11 1 eth access down No link up members NA lacp -po13 1 eth trunk down No link up members NA none -po17 1 eth trunk down No link up members NA none -po20 1 eth access down No link up members NA none -po33 33 eth access down No link up members NA none -po100 1 eth trunk down No link up members NA none -po1001 1 eth access down No link up members NA lacp -po1002 1 eth access down No link up members NA none -po1003 1 eth trunk down No link up members NA lacp -po1004 1 eth trunk down No link up members NA lacp - --------------------------------------------------------------------------------- -Port VRF Status IP Address Speed MTU --------------------------------------------------------------------------------- -mgmt0 management up 10.241.107.39 1000 1500 - -------------------------------------------------------------------------------- -Interface Secondary VLAN(Type) Status Reason -------------------------------------------------------------------------------- -Vlan1 -- down VLAN is down - --------------------------------------------------------------------------------- -Interface Status Description --------------------------------------------------------------------------------- -loopback0 up -- -loopback3 up -- - diff --git a/test/units/modules/network/cnos/fixtures/show_interface_ethernet_1_33_switchport b/test/units/modules/network/cnos/fixtures/show_interface_ethernet_1_33_switchport deleted file mode 100644 index a7c271c9a0..0000000000 --- a/test/units/modules/network/cnos/fixtures/show_interface_ethernet_1_33_switchport +++ /dev/null @@ -1,13 +0,0 @@ -Interface Ethernet1/33 - Switchport : enabled - Switchport mode : access - Ingress filter : enable - Tag Ingress PVID : disabled - Acceptable frame types : all - Default/Native Vlan : 1 - Configured Vlans : 1 - Enabled Vlans : 1 - Egress-Tagged Vlans : None - Private-VLAN : Disabled - Private-VLAN Port Type : None - Primary/Secondary VLAN : None/None diff --git a/test/units/modules/network/cnos/fixtures/show_interface_ethernet_1_44_switchport b/test/units/modules/network/cnos/fixtures/show_interface_ethernet_1_44_switchport deleted file mode 100644 index e69de29bb2..0000000000 --- a/test/units/modules/network/cnos/fixtures/show_interface_ethernet_1_44_switchport +++ /dev/null diff --git a/test/units/modules/network/cnos/fixtures/show_interface_ethernet_1_45_switchport b/test/units/modules/network/cnos/fixtures/show_interface_ethernet_1_45_switchport deleted file mode 100644 index 3001009112..0000000000 --- a/test/units/modules/network/cnos/fixtures/show_interface_ethernet_1_45_switchport +++ /dev/null @@ -1,14 +0,0 @@ -Interface Ethernet1/45 - Switchport : enabled - Switchport mode : access - Ingress filter : enable - Tag Ingress PVID : disabled - Acceptable frame types : all - Default/Native Vlan : 1 - Configured Vlans : 1 - Enabled Vlans : 1 - Egress-Tagged Vlans : None - Private-VLAN : Disabled - Private-VLAN Port Type : None - Primary/Secondary VLAN : None/None - diff --git a/test/units/modules/network/cnos/fixtures/show_interface_mac-address b/test/units/modules/network/cnos/fixtures/show_interface_mac-address deleted file mode 100644 index d66bea1531..0000000000 --- a/test/units/modules/network/cnos/fixtures/show_interface_mac-address +++ /dev/null @@ -1,72 +0,0 @@ --------------------------------------------------------------------------------- -Interface Mac-Address Burn-in Mac-Address --------------------------------------------------------------------------------- -Ethernet1/1 a48c.db33.bc02 a48c.db33.bc02 -Ethernet1/2 a48c.db33.bc03 a48c.db33.bc03 -Ethernet1/3 a48c.db33.bc04 a48c.db33.bc04 -Ethernet1/4 a48c.db33.bc05 a48c.db33.bc05 -Ethernet1/5 a48c.db33.bc01 a48c.db33.bc06 -Ethernet1/6 a48c.db33.bc01 a48c.db33.bc07 -Ethernet1/7 a48c.db33.bc01 a48c.db33.bc08 -Ethernet1/8 a48c.db33.bc01 a48c.db33.bc09 -Ethernet1/9 a48c.db33.bc0a a48c.db33.bc0a -Ethernet1/10 a48c.db33.bc0b a48c.db33.bc0b -Ethernet1/11 a48c.db33.bc01 a48c.db33.bc0c -Ethernet1/12 a48c.db33.bc01 a48c.db33.bc0d -Ethernet1/13 a48c.db33.bc01 a48c.db33.bc0e -Ethernet1/14 a48c.db33.bc0f a48c.db33.bc0f -Ethernet1/15 a48c.db33.bc10 a48c.db33.bc10 -Ethernet1/16 a48c.db33.bc11 a48c.db33.bc11 -Ethernet1/17 a48c.db33.bc12 a48c.db33.bc12 -Ethernet1/18 a48c.db33.bc13 a48c.db33.bc13 -Ethernet1/19 a48c.db33.bc14 a48c.db33.bc14 -Ethernet1/20 a48c.db33.bc15 a48c.db33.bc15 -Ethernet1/21 a48c.db33.bc16 a48c.db33.bc16 -Ethernet1/22 a48c.db33.bc17 a48c.db33.bc17 -Ethernet1/23 a48c.db33.bc18 a48c.db33.bc18 -Ethernet1/24 a48c.db33.bc19 a48c.db33.bc19 -Ethernet1/25 a48c.db33.bc1a a48c.db33.bc1a -Ethernet1/26 a48c.db33.bc1b a48c.db33.bc1b -Ethernet1/27 a48c.db33.bc1c a48c.db33.bc1c -Ethernet1/28 a48c.db33.bc1d a48c.db33.bc1d -Ethernet1/29 a48c.db33.bc1e a48c.db33.bc1e -Ethernet1/30 a48c.db33.bc1f a48c.db33.bc1f -Ethernet1/31 a48c.db33.bc20 a48c.db33.bc20 -Ethernet1/32 a48c.db33.bc21 a48c.db33.bc21 -Ethernet1/33 a48c.db33.bc22 a48c.db33.bc22 -Ethernet1/34 a48c.db33.bc23 a48c.db33.bc23 -Ethernet1/35 a48c.db33.bc24 a48c.db33.bc24 -Ethernet1/36 a48c.db33.bc25 a48c.db33.bc25 -Ethernet1/37 a48c.db33.bc26 a48c.db33.bc26 -Ethernet1/38 a48c.db33.bc27 a48c.db33.bc27 -Ethernet1/39 a48c.db33.bc28 a48c.db33.bc28 -Ethernet1/40 a48c.db33.bc29 a48c.db33.bc29 -Ethernet1/41 a48c.db33.bc2a a48c.db33.bc2a -Ethernet1/42 a48c.db33.bc2b a48c.db33.bc2b -Ethernet1/43 a48c.db33.bc2c a48c.db33.bc2c -Ethernet1/44 a48c.db33.bc2d a48c.db33.bc2d -Ethernet1/45 a48c.db33.bc2e a48c.db33.bc2e -Ethernet1/46 a48c.db33.bc2f a48c.db33.bc2f -Ethernet1/47 a48c.db33.bc30 a48c.db33.bc30 -Ethernet1/48 a48c.db33.bc31 a48c.db33.bc31 -Ethernet1/49 a48c.db33.bc32 a48c.db33.bc32 -Ethernet1/50 a48c.db33.bc33 a48c.db33.bc33 -Ethernet1/51 a48c.db33.bc34 a48c.db33.bc34 -Ethernet1/52 a48c.db33.bc35 a48c.db33.bc35 -Ethernet1/53 a48c.db33.bc36 a48c.db33.bc36 -Ethernet1/54 a48c.db33.bc37 a48c.db33.bc37 -mgmt0 a48c.db33.bc00 a48c.db33.bc00 -po1 0e00.0000.0001 (not set) -po2 0e00.0000.0002 (not set) -po11 a48c.db33.bc18 (not set) -po13 0e00.0000.0003 (not set) -po17 0e00.0000.0004 (not set) -po20 0e00.0000.0005 (not set) -po33 a48c.db33.bc02 (not set) -po100 0e00.0000.0006 (not set) -po1001 a48c.db33.bc03 (not set) -po1002 0e00.0000.0007 (not set) -po1003 a48c.db33.bc04 (not set) -po1004 a48c.db33.bc05 (not set) -Vlan1 a48c.db33.bc01 (not set) - diff --git a/test/units/modules/network/cnos/fixtures/show_interface_status b/test/units/modules/network/cnos/fixtures/show_interface_status deleted file mode 100644 index dae90765ff..0000000000 --- a/test/units/modules/network/cnos/fixtures/show_interface_status +++ /dev/null @@ -1,74 +0,0 @@ --------------------------------------------------------------------------------- -Port Name Status Vlan Duplex Speed Type --------------------------------------------------------------------------------- -Ethernet1/1 Link 1 to LP21 notconnec 33 full 10000 eth -Ethernet1/2 Link 2 to LP21 notconnec 1 full 10000 eth -Ethernet1/3 Link 1 to LP22 notconnec trunk full 10000 eth -Ethernet1/4 Link 2 to LP22 notconnec trunk full 10000 eth -Ethernet1/5 Link 1 to LP23 notconnec routed full 10000 eth -Ethernet1/6 Link 2 to LP23 notconnec routed full 10000 eth -Ethernet1/7 Link 1 to LP24 notconnec routed full 10000 eth -Ethernet1/8 Link 2 to LP24 notconnec routed full 10000 eth -Ethernet1/9 -- notconnec 1 full 10000 eth -Ethernet1/10 -- notconnec 1 full 10000 eth -Ethernet1/11 -- notconnec routed full 10000 eth -Ethernet1/12 -- notconnec routed full 10000 eth -Ethernet1/13 -- notconnec routed full 10000 eth -Ethernet1/14 -- notconnec 1 full 10000 eth -Ethernet1/15 -- notconnec 1 full 10000 eth -Ethernet1/16 -- notconnec 1 full 10000 eth -Ethernet1/17 -- notconnec 1 full 10000 eth -Ethernet1/18 -- notconnec 1 full 10000 eth -Ethernet1/19 -- notconnec 1 full 10000 eth -Ethernet1/20 -- notconnec 1 full 10000 eth -Ethernet1/21 -- notconnec 1 full 10000 eth -Ethernet1/22 -- notconnec 1 full 10000 eth -Ethernet1/23 -- notconnec 1 full 10000 eth -Ethernet1/24 -- notconnec 1 full 10000 eth -Ethernet1/25 -- notconnec 1 full 10000 eth -Ethernet1/26 -- notconnec 1 full 10000 eth -Ethernet1/27 -- notconnec 1 full 10000 eth -Ethernet1/28 -- notconnec 1 full 10000 eth -Ethernet1/29 -- notconnec 1 full 10000 eth -Ethernet1/30 -- notconnec 1 full 10000 eth -Ethernet1/31 -- notconnec 1 full 10000 eth -Ethernet1/32 -- notconnec 1 full 10000 eth -Ethernet1/33 Hentammoo notconnec 33 full 10000 eth -Ethernet1/34 -- notconnec 1 full 10000 eth -Ethernet1/35 -- notconnec 1 full 10000 eth -Ethernet1/36 -- notconnec 1 full 10000 eth -Ethernet1/37 -- notconnec 1 full 10000 eth -Ethernet1/38 -- notconnec 1 full 10000 eth -Ethernet1/39 -- notconnec 1 full 10000 eth -Ethernet1/40 -- notconnec 1 full 10000 eth -Ethernet1/41 -- notconnec 1 full 10000 eth -Ethernet1/42 -- notconnec 1 full 10000 eth -Ethernet1/43 -- notconnec 1 full 10000 eth -Ethernet1/44 -- notconnec 1 full 10000 eth -Ethernet1/45 -- notconnec 1 full 10000 eth -Ethernet1/46 -- notconnec 1 full 10000 eth -Ethernet1/47 -- notconnec 1 full 10000 eth -Ethernet1/48 -- notconnec 1 full 10000 eth -Ethernet1/49 -- notconnec 1 full 40000 eth -Ethernet1/50 -- notconnec 1 full 40000 eth -Ethernet1/51 -- notconnec 1 full 40000 eth -Ethernet1/52 -- notconnec 1 full 40000 eth -Ethernet1/53 -- notconnec 1 full 40000 eth -Ethernet1/54 -- notconnec 1 full 40000 eth -po1 -- notconnec 1 full NA eth -po2 -- notconnec 1 full NA eth -po11 -- notconnec 1 full NA eth -po13 -- notconnec trunk full NA eth -po17 -- notconnec trunk full NA eth -po20 -- notconnec 1 full NA eth -po33 Hentammoo notconnec 33 full NA eth -po100 -- notconnec trunk full NA eth -po1001 -- notconnec 1 full NA eth -po1002 -- notconnec 1 full NA eth -po1003 -- notconnec trunk full NA eth -po1004 -- notconnec trunk full NA eth -mgmt0 -- connected routed full 1000 eth -loopback0 -- connected routed half NA eth -loopback3 -- connected routed half NA eth -Vlan1 -- notconnec routed auto NA -- - diff --git a/test/units/modules/network/cnos/fixtures/show_ip_interface_brief_vrf_all b/test/units/modules/network/cnos/fixtures/show_ip_interface_brief_vrf_all deleted file mode 100644 index 4f3a22a12d..0000000000 --- a/test/units/modules/network/cnos/fixtures/show_ip_interface_brief_vrf_all +++ /dev/null @@ -1,10 +0,0 @@ -Interface IP-Address Admin-Status Link-Status VRF -Ethernet1/5 20.131.1.1 up down default -Ethernet1/6 20.131.2.1 up down default -Ethernet1/7 20.141.1.1 up down default -Ethernet1/8 20.141.2.1 up down default -Ethernet1/11 1.1.1.2 up down default -Ethernet1/12 100.10.10.10 up down default -Ethernet1/13 10.241.107.54 up down default -mgmt0 10.241.107.39 up up management - diff --git a/test/units/modules/network/cnos/fixtures/show_ipv6_interface_brief_vrf_all b/test/units/modules/network/cnos/fixtures/show_ipv6_interface_brief_vrf_all deleted file mode 100644 index f229566a33..0000000000 --- a/test/units/modules/network/cnos/fixtures/show_ipv6_interface_brief_vrf_all +++ /dev/null @@ -1,5 +0,0 @@ -Interface IPv6 Address/Link-local Address Admin-Status Link-Status VRF -loopback0 fe80::200:ff:fe00:0 up up default -loopback3 fe80::200:ff:fe00:0 up up default -mgmt0 fe80::a68c:dbff:fe33:bc00 up up management - diff --git a/test/units/modules/network/cnos/fixtures/show_lldp_neighbors b/test/units/modules/network/cnos/fixtures/show_lldp_neighbors deleted file mode 100644 index e733d39c3b..0000000000 --- a/test/units/modules/network/cnos/fixtures/show_lldp_neighbors +++ /dev/null @@ -1,8 +0,0 @@ -Capability codes: - (R) Router, (B) Bridge, (T) Telephone, (C) DOCSIS Cable Device - (W) WLAN Access Point, (P) Repeater, (S) Station, (O) Other -Device ID Local Intf Hold-time Capability Port ID -INDIA-LAB-1-C3750X.l... mgmt0 120 BR Gi1/0/30 - -Total entries displayed: 1 - diff --git a/test/units/modules/network/cnos/fixtures/show_process_memory b/test/units/modules/network/cnos/fixtures/show_process_memory deleted file mode 100644 index f4b7fe25eb..0000000000 --- a/test/units/modules/network/cnos/fixtures/show_process_memory +++ /dev/null @@ -1,38 +0,0 @@ -PID MemAlloc StkSize RSSMem LibMem StackBase/Ptr Process ------ -------- ---------- ------- ------- ------------------ ---------- - 1 6204 8388608 12312 5380 bff01bc0/bff01590 nsm - 4 2608 8388608 5264 5312 bfa92080/bfa91ab0 ospfd - 7 14152 8388608 5924 5284 bfaa7250/bfaa6c20 hostpd - 10 2092 8388608 4652 5312 bfafcbf0/bfafc620 mribd - 11 2024 8388608 3108 5284 bfb7c650/bfb7c080 pimd - 14 2016 8388608 4896 5312 bff0ff10/bff0f940 lacpd - 17 48608 8388608 36200 5312 bfc10e30/bfc10830 mstpd - 24 2520 8388608 5340 5312 bf90ad00/bf90a730 onmd - 26 228628 8388608 77312 5376 bfb34e10/bfb34830 hsl - 28 2020 8388608 4784 5312 bff3c410/bff3be10 oam - 39 21396 8388608 8184 5312 bf9b1a50/bf9b1460 vrrpd - 40 2480 8388608 4064 5336 bfe5f020/bfe5ea20 ndd - 42 2860 8388608 5672 5364 bfe83aa0/bfe83470 ribd - 44 3528 8388608 7140 5328 bf90b720/bf90b110 bgpd - 45 1772 8388608 4404 5312 bf9fc250/bf9fbc80 hostmibd - 46 39564 8388608 25632 5428 bfe30db0/bfe30780 l2mribd - 62 1876 8388608 3920 5312 bf81c210/bf81bc40 sysmgr - 63 94380 8388608 13804 5292 bfcb67d0/bfcb61d0 nwvd - 64 1920 8388608 5664 5676 bfc28470/bfc27ea0 ovsdbd - 65 96548 8388608 55168 5292 bfdbcf80/bfdbc980 vlagd - 66 1756 8388608 3808 5284 bfa15ab0/bfa154e0 slpd - 71 2116 8388608 5880 10076 bfe8abd0/bfe8a600 npad - 72 2220 8388608 5452 7936 bf9e6da0/bf9e67d0 hscd - 73 1920 8388608 2760 5284 bfbc6cd0/bfbc6700 dhcpsnpd - 74 58620 8388608 16168 9956 bfe1af70/bfe1a970 telemetryd - 75 1756 8388608 3456 5284 bfb21da0/bfb217d0 securityd - 76 2152 8388608 4216 5284 bfc36900/bfc36330 l2fd - 77 1920 8388608 3876 5284 bf91e480/bf91dec0 sflowd - 78 1888 8388608 3772 5284 bffd10c0/bffd0af0 qosd - 69 70520 8388608 5584 5260 bfca0980/bfca0490 platform_mgr - 70 26828 8388608 2116 2040 bfce09c0/bfce0440 service_mgr - - total used free shared buff/cache available -Mem: 4081464 442136 3144092 153168 495236 3452732 -Swap: 0 0 0 - diff --git a/test/units/modules/network/cnos/fixtures/show_run b/test/units/modules/network/cnos/fixtures/show_run deleted file mode 100644 index 4367c90fe5..0000000000 --- a/test/units/modules/network/cnos/fixtures/show_run +++ /dev/null @@ -1,331 +0,0 @@ -! -version "10.8.0.42" -! -hostname ip10-241-107-39 -! -banner motd NMS India CNOS -banner motd NMS India CNOS G8272 -! -clock timezone EDT 0 0 -! -logging console 7 -vrf context management - ip route 0.0.0.0/0 10.241.107.1 -! -! -port-channel load-balance ethernet destination-mac -port-channel load-balance ethernet source-interface -feature telnet -ip domain-name labs.lenovo.com vrf management -ip domain-list labs.lenovo.com vrf management -ip name-server 10.241.104.120 vrf management -ip name-server 10.240.0.10 vrf management -ip host ip10-241-107-39.labs.lenovo.com 10.241.107.39 vrf management -ip host ip10-241-107-39 10.241.107.39 vrf management -ip domain-name labs.lenovo.com vrf default -ip domain-list labs.lenovo.com vrf default -ip name-server 10.240.0.10 vrf default -ip name-server 10.241.104.120 vrf default -ip host ip10-241-107-39.labs.lenovo.com 10.241.107.39 vrf default -ip host ip10-241-107-39 10.241.107.39 vrf default -ntp server 173.230.154.254 prefer -ntp server 97.127.86.33 prefer -ntp server 129.250.35.250 prefer -ntp server 174.136.103.130 prefer -ntp server 69.10.161.7 prefer -ntp server 96.226.123.196 prefer -ntp server 104.238.179.130 prefer -ntp server 108.61.73.244 prefer -ntp server 208.75.89.4 prefer -snmp-server community public group network-operator -snmp-server community private group network-admin -snmp-server contact Ralph -username admin role network-admin password encrypted $6$bJoWyEu/$9pzSgFPAKGRm1stpTCEl3I39htbjxiFCfhqiHag1NQiKHv/IiLQ2lYW0V3p7p72SgSmVHp38em9P9R/EdePpk/ -logging server 10.241.107.231 -logging server 10.241.107.222 -feature restApi -ovsdb pki ovsdb_mgmt vrf management -ovsdb pki ovsdb_default vrf default -lacp system-priority 32769 -vlag tier-id 313 -vlag priority 1313 -vlag isl port-channel 100 -vlag hlthchk keepalive-attempts 5 -vlag hlthchk peer-ip 1.2.3.4 -vlag auto-recovery 266 -vlag startup-delay 323 -vlag enable -vlag instance 1 port-channel 1003 -vlag instance 1 enable -vlag instance 2 port-channel 20 -vlag instance 2 enable -vlag instance 12 port-channel 23 -vlag instance 33 port-channel 333 -vlag instance 33 enable -spanning-tree mode mst -telemetry heartbeat enabled interval 15 -! -policy-map type control-plane copp-system-policy - class type control-plane copp-s-pvst-bpdu - police pps 500 - class type control-plane copp-s-ecp - police pps 3000 - class type control-plane copp-s-igmp - police pps 3000 -! -vlan 1-2 - no flood ipv4 -! -vlan 3 -! -vlan 5 -! -vlan 12 -! -vlan 13 - name dave -! -vlan dot1q tag native egress-only -! -interface Ethernet1/1 - description Link 1 to LP21 - load-interval counter 2 33 - switchport access vlan 33 - storm-control broadcast level 12.50 - mtu 66 - channel-group 33 mode on -! -interface Ethernet1/2 - description Link 2 to LP21 - channel-group 1001 mode active -! -interface Ethernet1/3 - description Link 1 to LP22 - switchport mode trunk - channel-group 1003 mode active -! -interface Ethernet1/4 - description Link 2 to LP22 - switchport mode trunk - channel-group 1004 mode active -! -interface Ethernet1/5 - description Link 1 to LP23 - no switchport - ip address 20.131.1.1/30 -! -interface Ethernet1/6 - description Link 2 to LP23 - no switchport - ip address 20.131.2.1/30 -! -interface Ethernet1/7 - description Link 1 to LP24 - no switchport - ip address 20.141.1.1/30 -! -interface Ethernet1/8 - description Link 2 to LP24 - no switchport - ip address 20.141.2.1/30 -! -interface Ethernet1/9 -! -interface Ethernet1/10 -! -interface Ethernet1/11 - no switchport - mtu 1402 - ip address 1.1.1.2/8 -! -interface Ethernet1/12 - no switchport - ip address 100.10.10.10/24 -! -interface Ethernet1/13 - no switchport - ip address 10.241.107.54/24 - vrrp 254 - address 10.241.107.55 - priority 254 - no shutdown - ip arp timeout 1500 -! -interface Ethernet1/14 -! -interface Ethernet1/15 -! -interface Ethernet1/16 -! -interface Ethernet1/17 -! -interface Ethernet1/18 -! -interface Ethernet1/19 -! -interface Ethernet1/20 -! -interface Ethernet1/21 -! -interface Ethernet1/22 -! -interface Ethernet1/23 - channel-group 11 mode active - lacp port-priority 32769 -! -interface Ethernet1/24 -! -interface Ethernet1/25 -! -interface Ethernet1/26 -! -interface Ethernet1/27 -! -interface Ethernet1/28 -! -interface Ethernet1/29 -! -interface Ethernet1/30 -! -interface Ethernet1/31 -! -interface Ethernet1/32 -! -interface Ethernet1/33 - description Hentammoo - load-interval counter 2 33 - switchport access vlan 33 - storm-control broadcast level 12.50 - mtu 66 - microburst-detection enable threshold 25 - lldp tlv-select max-frame-size - lacp port-priority 33 - spanning-tree mst 33-35 cost 33 - spanning-tree bpduguard enable -! -interface Ethernet1/34 -! -interface Ethernet1/35 -! -interface Ethernet1/36 -! -interface Ethernet1/37 -! -interface Ethernet1/38 -! -interface Ethernet1/39 -! -interface Ethernet1/40 -! -interface Ethernet1/41 -! -interface Ethernet1/42 -! -interface Ethernet1/43 -! -interface Ethernet1/44 -! -interface Ethernet1/45 -! -interface Ethernet1/46 -! -interface Ethernet1/47 -! -interface Ethernet1/48 -! -interface Ethernet1/49 -! -interface Ethernet1/50 -! -interface Ethernet1/51 -! -interface Ethernet1/52 -! -interface Ethernet1/53 -! -interface Ethernet1/54 -! -interface loopback0 - no switchport -! -interface mgmt0 - no switchport - vrf member management - no ip address dhcp - ip address 10.241.107.39/24 - no ipv6 address dhcp -! -interface Vlan1 - no switchport -! -interface port-channel1 -! -interface port-channel2 -! -interface port-channel11 - lacp min-links 2 -! -interface port-channel13 - switchport mode trunk -! -interface port-channel17 - switchport mode trunk -! -interface port-channel20 -! -interface port-channel33 - description Hentammoo - load-interval counter 2 33 - switchport access vlan 33 - storm-control broadcast level 12.50 - mtu 66 - spanning-tree mst 33-35 cost 33 - spanning-tree bpduguard enable -! -interface port-channel100 - switchport mode trunk -! -interface port-channel1001 -! -interface port-channel1002 -! -interface port-channel1003 - switchport mode trunk -! -interface port-channel1004 - switchport mode trunk -! -router bgp 33 - router-id 1.2.3.4 - bestpath always-compare-med - cluster-id 1.2.3.4 - confederation identifier 333 - enforce-first-as - bgp as-local-count 33 - bestpath compare-confed-aspath - maxas-limit 333 - graceful-restart-helper - graceful-restart stalepath-time 333 - timers bgp 333 3333 - address-family ipv4 unicast - synchronization - network 0.0.0.0 backdoor - dampening 13 233 333 15 33 - neighbor 10.241.107.40 remote-as 13 - bfd - address-family ipv4 unicast - next-hop-self -! -route-map anil permit 10 -! -ip arp timeout 1000 -! -line con 0 -line vty 0 - exec-timeout 90 0 -line vty 1 39 -! -! -! -end - diff --git a/test/units/modules/network/cnos/fixtures/show_run_interface_ethernet_1_33 b/test/units/modules/network/cnos/fixtures/show_run_interface_ethernet_1_33 deleted file mode 100644 index a7c271c9a0..0000000000 --- a/test/units/modules/network/cnos/fixtures/show_run_interface_ethernet_1_33 +++ /dev/null @@ -1,13 +0,0 @@ -Interface Ethernet1/33 - Switchport : enabled - Switchport mode : access - Ingress filter : enable - Tag Ingress PVID : disabled - Acceptable frame types : all - Default/Native Vlan : 1 - Configured Vlans : 1 - Enabled Vlans : 1 - Egress-Tagged Vlans : None - Private-VLAN : Disabled - Private-VLAN Port Type : None - Primary/Secondary VLAN : None/None diff --git a/test/units/modules/network/cnos/fixtures/show_run_interface_ethernet_1_45 b/test/units/modules/network/cnos/fixtures/show_run_interface_ethernet_1_45 deleted file mode 100644 index 3001009112..0000000000 --- a/test/units/modules/network/cnos/fixtures/show_run_interface_ethernet_1_45 +++ /dev/null @@ -1,14 +0,0 @@ -Interface Ethernet1/45 - Switchport : enabled - Switchport mode : access - Ingress filter : enable - Tag Ingress PVID : disabled - Acceptable frame types : all - Default/Native Vlan : 1 - Configured Vlans : 1 - Enabled Vlans : 1 - Egress-Tagged Vlans : None - Private-VLAN : Disabled - Private-VLAN Port Type : None - Primary/Secondary VLAN : None/None - diff --git a/test/units/modules/network/cnos/fixtures/show_running-config b/test/units/modules/network/cnos/fixtures/show_running-config deleted file mode 100644 index 4367c90fe5..0000000000 --- a/test/units/modules/network/cnos/fixtures/show_running-config +++ /dev/null @@ -1,331 +0,0 @@ -! -version "10.8.0.42" -! -hostname ip10-241-107-39 -! -banner motd NMS India CNOS -banner motd NMS India CNOS G8272 -! -clock timezone EDT 0 0 -! -logging console 7 -vrf context management - ip route 0.0.0.0/0 10.241.107.1 -! -! -port-channel load-balance ethernet destination-mac -port-channel load-balance ethernet source-interface -feature telnet -ip domain-name labs.lenovo.com vrf management -ip domain-list labs.lenovo.com vrf management -ip name-server 10.241.104.120 vrf management -ip name-server 10.240.0.10 vrf management -ip host ip10-241-107-39.labs.lenovo.com 10.241.107.39 vrf management -ip host ip10-241-107-39 10.241.107.39 vrf management -ip domain-name labs.lenovo.com vrf default -ip domain-list labs.lenovo.com vrf default -ip name-server 10.240.0.10 vrf default -ip name-server 10.241.104.120 vrf default -ip host ip10-241-107-39.labs.lenovo.com 10.241.107.39 vrf default -ip host ip10-241-107-39 10.241.107.39 vrf default -ntp server 173.230.154.254 prefer -ntp server 97.127.86.33 prefer -ntp server 129.250.35.250 prefer -ntp server 174.136.103.130 prefer -ntp server 69.10.161.7 prefer -ntp server 96.226.123.196 prefer -ntp server 104.238.179.130 prefer -ntp server 108.61.73.244 prefer -ntp server 208.75.89.4 prefer -snmp-server community public group network-operator -snmp-server community private group network-admin -snmp-server contact Ralph -username admin role network-admin password encrypted $6$bJoWyEu/$9pzSgFPAKGRm1stpTCEl3I39htbjxiFCfhqiHag1NQiKHv/IiLQ2lYW0V3p7p72SgSmVHp38em9P9R/EdePpk/ -logging server 10.241.107.231 -logging server 10.241.107.222 -feature restApi -ovsdb pki ovsdb_mgmt vrf management -ovsdb pki ovsdb_default vrf default -lacp system-priority 32769 -vlag tier-id 313 -vlag priority 1313 -vlag isl port-channel 100 -vlag hlthchk keepalive-attempts 5 -vlag hlthchk peer-ip 1.2.3.4 -vlag auto-recovery 266 -vlag startup-delay 323 -vlag enable -vlag instance 1 port-channel 1003 -vlag instance 1 enable -vlag instance 2 port-channel 20 -vlag instance 2 enable -vlag instance 12 port-channel 23 -vlag instance 33 port-channel 333 -vlag instance 33 enable -spanning-tree mode mst -telemetry heartbeat enabled interval 15 -! -policy-map type control-plane copp-system-policy - class type control-plane copp-s-pvst-bpdu - police pps 500 - class type control-plane copp-s-ecp - police pps 3000 - class type control-plane copp-s-igmp - police pps 3000 -! -vlan 1-2 - no flood ipv4 -! -vlan 3 -! -vlan 5 -! -vlan 12 -! -vlan 13 - name dave -! -vlan dot1q tag native egress-only -! -interface Ethernet1/1 - description Link 1 to LP21 - load-interval counter 2 33 - switchport access vlan 33 - storm-control broadcast level 12.50 - mtu 66 - channel-group 33 mode on -! -interface Ethernet1/2 - description Link 2 to LP21 - channel-group 1001 mode active -! -interface Ethernet1/3 - description Link 1 to LP22 - switchport mode trunk - channel-group 1003 mode active -! -interface Ethernet1/4 - description Link 2 to LP22 - switchport mode trunk - channel-group 1004 mode active -! -interface Ethernet1/5 - description Link 1 to LP23 - no switchport - ip address 20.131.1.1/30 -! -interface Ethernet1/6 - description Link 2 to LP23 - no switchport - ip address 20.131.2.1/30 -! -interface Ethernet1/7 - description Link 1 to LP24 - no switchport - ip address 20.141.1.1/30 -! -interface Ethernet1/8 - description Link 2 to LP24 - no switchport - ip address 20.141.2.1/30 -! -interface Ethernet1/9 -! -interface Ethernet1/10 -! -interface Ethernet1/11 - no switchport - mtu 1402 - ip address 1.1.1.2/8 -! -interface Ethernet1/12 - no switchport - ip address 100.10.10.10/24 -! -interface Ethernet1/13 - no switchport - ip address 10.241.107.54/24 - vrrp 254 - address 10.241.107.55 - priority 254 - no shutdown - ip arp timeout 1500 -! -interface Ethernet1/14 -! -interface Ethernet1/15 -! -interface Ethernet1/16 -! -interface Ethernet1/17 -! -interface Ethernet1/18 -! -interface Ethernet1/19 -! -interface Ethernet1/20 -! -interface Ethernet1/21 -! -interface Ethernet1/22 -! -interface Ethernet1/23 - channel-group 11 mode active - lacp port-priority 32769 -! -interface Ethernet1/24 -! -interface Ethernet1/25 -! -interface Ethernet1/26 -! -interface Ethernet1/27 -! -interface Ethernet1/28 -! -interface Ethernet1/29 -! -interface Ethernet1/30 -! -interface Ethernet1/31 -! -interface Ethernet1/32 -! -interface Ethernet1/33 - description Hentammoo - load-interval counter 2 33 - switchport access vlan 33 - storm-control broadcast level 12.50 - mtu 66 - microburst-detection enable threshold 25 - lldp tlv-select max-frame-size - lacp port-priority 33 - spanning-tree mst 33-35 cost 33 - spanning-tree bpduguard enable -! -interface Ethernet1/34 -! -interface Ethernet1/35 -! -interface Ethernet1/36 -! -interface Ethernet1/37 -! -interface Ethernet1/38 -! -interface Ethernet1/39 -! -interface Ethernet1/40 -! -interface Ethernet1/41 -! -interface Ethernet1/42 -! -interface Ethernet1/43 -! -interface Ethernet1/44 -! -interface Ethernet1/45 -! -interface Ethernet1/46 -! -interface Ethernet1/47 -! -interface Ethernet1/48 -! -interface Ethernet1/49 -! -interface Ethernet1/50 -! -interface Ethernet1/51 -! -interface Ethernet1/52 -! -interface Ethernet1/53 -! -interface Ethernet1/54 -! -interface loopback0 - no switchport -! -interface mgmt0 - no switchport - vrf member management - no ip address dhcp - ip address 10.241.107.39/24 - no ipv6 address dhcp -! -interface Vlan1 - no switchport -! -interface port-channel1 -! -interface port-channel2 -! -interface port-channel11 - lacp min-links 2 -! -interface port-channel13 - switchport mode trunk -! -interface port-channel17 - switchport mode trunk -! -interface port-channel20 -! -interface port-channel33 - description Hentammoo - load-interval counter 2 33 - switchport access vlan 33 - storm-control broadcast level 12.50 - mtu 66 - spanning-tree mst 33-35 cost 33 - spanning-tree bpduguard enable -! -interface port-channel100 - switchport mode trunk -! -interface port-channel1001 -! -interface port-channel1002 -! -interface port-channel1003 - switchport mode trunk -! -interface port-channel1004 - switchport mode trunk -! -router bgp 33 - router-id 1.2.3.4 - bestpath always-compare-med - cluster-id 1.2.3.4 - confederation identifier 333 - enforce-first-as - bgp as-local-count 33 - bestpath compare-confed-aspath - maxas-limit 333 - graceful-restart-helper - graceful-restart stalepath-time 333 - timers bgp 333 3333 - address-family ipv4 unicast - synchronization - network 0.0.0.0 backdoor - dampening 13 233 333 15 33 - neighbor 10.241.107.40 remote-as 13 - bfd - address-family ipv4 unicast - next-hop-self -! -route-map anil permit 10 -! -ip arp timeout 1000 -! -line con 0 -line vty 0 - exec-timeout 90 0 -line vty 1 39 -! -! -! -end - diff --git a/test/units/modules/network/cnos/fixtures/show_sys-info b/test/units/modules/network/cnos/fixtures/show_sys-info deleted file mode 100644 index a61b567844..0000000000 --- a/test/units/modules/network/cnos/fixtures/show_sys-info +++ /dev/null @@ -1,62 +0,0 @@ -*** show boot *** -Current ZTP State: Enable -Current FLASH software: - active image: version 10.8.0.42, downloaded 09:40:15 EDT Mon May 7 2018 - standby image: version 10.7.0.6, downloaded 11:02:12 EDT Thu Mar 29 2018 - Uboot: version 10.7.0.6, downloaded 11:02:14 EDT Thu Mar 29 2018 - ONIE: empty -Currently set to boot software active image -Current port mode: default mode -Next boot port mode: default mode - -Currently scheduled reboot time: none - - -*** show env fan detail *** -Total Fan: 8 -+--------+-----+-----------------+---------------+-------+--------+ -| Module | Fan | Name | Air-Flow | Speed | Speed | -| Number | ID | | Direction | (%) | (RPM) | -+--------+-----+-----------------+---------------+-------+--------+ - 01 01 Fan1 Front-to-Back 23 4023 - 01 02 Fan2 Front-to-Back 23 4285 - 02 03 Fan3 Front-to-Back 23 4032 - 02 04 Fan4 Front-to-Back 23 4147 - 03 05 Fan5 Front-to-Back 23 4192 - 03 06 Fan6 Front-to-Back 23 4397 - 04 07 Fan7 Front-to-Back 23 4153 - 04 08 Fan8 Front-to-Back 23 4451 - - -*** show env power *** -Total Power Supplies: 2 -+----+-----------------+----------------+-----------------+------------------+ -| ID | Name | Manufacturer | Model | State | -+----+-----------------+----------------+-----------------+------------------+ - 01 Power Supply 1 DELTA XXXXXXXXXX Normal ON - 02 Power Supply 2 DELTA XXXXXXXXXX 12V Output Fault - - -*** show env temperature *** -+----+------------------+----------+--------+ -| ID | Name | Temp | State | -| | | (Celsius)| | -+----+------------------+----------+--------+ - 01 CPU Local 32 OK - 02 Ambient 31 OK - 03 Hot Spot 47 OK - -System Name : G8272 -System Description : G8272 ("48x10GE + 6x40GE") -System Model : Lenovo RackSwitch G8272 -System VPD Version : 3 -System Manufacture Date : 1542 (YYWW) -System Part Number : 00CJ066 -System Serial Number : Y052MV59Y052 -System FRU Number : 00FM430 -System Machine Type Model : 7159-HCV -System Machine Serial Number : MM11945 -System Hardware Revision : 1 -System Management MAC : A4:8C:DB:33:BC:00 -System Software Revision : 10.8.0.42 - diff --git a/test/units/modules/network/cnos/fixtures/show_version b/test/units/modules/network/cnos/fixtures/show_version deleted file mode 100644 index 0db1ff132a..0000000000 --- a/test/units/modules/network/cnos/fixtures/show_version +++ /dev/null @@ -1,19 +0,0 @@ -Lenovo Networking Operating System (NOS) Software -Technical Assistance Center: http://www.lenovo.com -Copyright (C) Lenovo, 2016. All rights reserved. - -Software: - Bootloader version: 10.7.0.6 - System version: 10.8.0.42 - System compile time: May 03 11:06:25 PDT 2018 -Hardware: - G8272 ("48x10GE + 6x40GE") - NXP P2020 CPU with 4096 MB of memory - - Device name: ip10-241-107-39 - Boot Flash: 16 MB - -Kernel uptime is 2 day(s), 21 hour(s), 26 minute(s), 14 second(s) - -Last Reset Reason: Reset by CLI reload command - diff --git a/test/units/modules/network/cnos/fixtures/show_vlan b/test/units/modules/network/cnos/fixtures/show_vlan deleted file mode 100644 index 457992fee5..0000000000 --- a/test/units/modules/network/cnos/fixtures/show_vlan +++ /dev/null @@ -1,97 +0,0 @@ -VLAN Name Status IPMC FLOOD Ports - -======== ================================ ======= ========== =================== -1 default ACTIVE IPv6 - po1(u) - po2(u) - po11(u) - po12(u) - po13(t) - po14(u) - po15(u) - po17(t) - po20(u) - po100(t) - po1001(u) - po1002(u) - po1003(t) - po1004(t) - Ethernet1/2(u) - Ethernet1/3(t) - Ethernet1/4(t) - Ethernet1/9(u) - Ethernet1/10(u) - Ethernet1/14(u) - Ethernet1/15(u) - Ethernet1/16(u) - Ethernet1/17(u) - Ethernet1/18(u) - Ethernet1/19(u) - Ethernet1/20(u) - Ethernet1/21(u) - Ethernet1/22(u) - Ethernet1/23(u) - Ethernet1/24(u) - Ethernet1/25(u) - Ethernet1/26(u) - Ethernet1/27(u) - Ethernet1/28(u) - Ethernet1/29(u) - Ethernet1/30(u) - Ethernet1/31(u) - Ethernet1/32(u) - Ethernet1/33(u) - Ethernet1/34(u) - Ethernet1/35(u) - Ethernet1/36(u) - Ethernet1/37(u) - Ethernet1/38(u) - Ethernet1/39(u) - Ethernet1/40(u) - Ethernet1/41(u) - Ethernet1/42(u) - Ethernet1/43(u) - Ethernet1/44(u) - Ethernet1/45(u) - Ethernet1/46(u) - Ethernet1/47(u) - Ethernet1/48(u) - Ethernet1/49(u) - Ethernet1/50(u) - Ethernet1/51(u) - Ethernet1/52(u) - Ethernet1/53(u) - Ethernet1/54(u) -2 VLAN0002 ACTIVE IPv6 - po13(t) - po17(t) - po100(t) - po1003(t) - po1004(t) - Ethernet1/3(t) - Ethernet1/4(t) -3 VLAN0003 ACTIVE IPv4,IPv6 - po13(t) - po17(t) - po100(t) - po1003(t) - po1004(t) - Ethernet1/3(t) - Ethernet1/4(t) -12 VLAN0012 ACTIVE IPv4,IPv6 - po13(t) - po17(t) - po100(t) - po1003(t) - po1004(t) - Ethernet1/3(t) - Ethernet1/4(t) -13 anil ACTIVE IPv4,IPv6 - po13(t) - po17(t) - po100(t) - po1003(t) - po1004(t) - Ethernet1/3(t) - Ethernet1/4(t) - diff --git a/test/units/modules/network/cnos/test_cnos_banner.py b/test/units/modules/network/cnos/test_cnos_banner.py deleted file mode 100644 index 24a18cc97e..0000000000 --- a/test/units/modules/network/cnos/test_cnos_banner.py +++ /dev/null @@ -1,62 +0,0 @@ -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cnos import cnos_banner -from units.modules.utils import set_module_args -from .cnos_module import TestCnosModule, load_fixture - - -class TestCnosBannerModule(TestCnosModule): - - module = cnos_banner - - def setUp(self): - super(TestCnosBannerModule, self).setUp() - - self.mock_exec_command = patch('ansible.modules.network.cnos.cnos_banner.exec_command') - self.exec_command = self.mock_exec_command.start() - - self.mock_load_config = patch('ansible.modules.network.cnos.cnos_banner.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestCnosBannerModule, self).tearDown() - self.mock_exec_command.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('cnos_banner_show_banner.txt').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_cnos_banner_create(self): - for banner_type in ('login', 'motd'): - set_module_args(dict(banner=banner_type, text='test\nbanner\nstring')) - commands = ['banner {0} test'.format(banner_type), 'banner {0} banner'.format(banner_type), 'banner {0} string'.format(banner_type)] - self.execute_module(changed=True, commands=commands) - - def test_cnos_banner_remove(self): - set_module_args(dict(banner='login', state='absent')) - commands = ['no banner login'] - self.execute_module(changed=True, commands=commands) - - def test_cnos_banner_nochange(self): - banner_text = load_fixture('cnos_banner_show_banner.txt').strip() - set_module_args(dict(banner='login', text=banner_text)) - self.execute_module() diff --git a/test/units/modules/network/cnos/test_cnos_bgp.py b/test/units/modules/network/cnos/test_cnos_bgp.py deleted file mode 100644 index be9dde3687..0000000000 --- a/test/units/modules/network/cnos/test_cnos_bgp.py +++ /dev/null @@ -1,95 +0,0 @@ -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cnos import cnos_bgp -from units.modules.utils import set_module_args -from .cnos_module import TestCnosModule, load_fixture - - -class TestCnosBgpModule(TestCnosModule): - - module = cnos_bgp - - def setUp(self): - super(TestCnosBgpModule, self).setUp() - - self.mock_run_cnos_commands = patch('ansible.module_utils.network.cnos.cnos.run_cnos_commands') - self.run_cnos_commands = self.mock_run_cnos_commands.start() - - def tearDown(self): - super(TestCnosBgpModule, self).tearDown() - self.mock_run_cnos_commands.stop() - - def load_fixtures(self, commands=None, transport='cli'): - self.run_cnos_commands.return_value = [load_fixture('cnos_bgp_config.cfg')] - - def test_bgp_neighbor(self): - set_module_args({'username': 'admin', 'password': 'pass', - 'host': '10.241.107.39', 'deviceType': 'g8272_cnos', - 'outputfile': self.test_log, 'asNum': '33', - 'bgpArg1': 'neighbor', 'bgpArg2': '10.241.107.40', - 'bgpArg3': '13', 'bgpArg4': 'address-family', - 'bgpArg5': 'ipv4', 'bgpArg6': 'next-hop-self'}) - result = self.execute_module(changed=True) - expected_result = 'BGP configurations accomplished' - self.assertEqual(result['msg'], expected_result) - - def test_cnos_bgp_dampening(self): - set_module_args({'username': 'admin', 'password': 'pass', - 'host': '10.241.107.39', 'deviceType': 'g8272_cnos', - 'outputfile': self.test_log, 'asNum': '33', - 'bgpArg1': 'address-family', 'bgpArg2': 'ipv4', - 'bgpArg3': 'dampening', 'bgpArg4': '13', - 'bgpArg5': '233', 'bgpArg6': '333', - 'bgpArg7': '15', 'bgpArg8': '33'}) - result = self.execute_module(changed=True) - expected_result = 'BGP configurations accomplished' - self.assertEqual(result['msg'], expected_result) - - def test_cnos_bgp_network(self): - set_module_args({'username': 'admin', 'password': 'pass', - 'host': '10.241.107.39', 'deviceType': 'g8272_cnos', - 'outputfile': self.test_log, 'asNum': '33', - 'bgpArg1': 'address-family', 'bgpArg2': 'ipv4', - 'bgpArg3': 'network', 'bgpArg4': '1.2.3.4/5', - 'bgpArg5': 'backdoor'}) - result = self.execute_module(changed=True) - expected_result = 'BGP configurations accomplished' - self.assertEqual(result['msg'], expected_result) - - def test_cnos_bgp_clusterid(self): - set_module_args({'username': 'admin', 'password': 'pass', - 'host': '10.241.107.39', 'deviceType': 'g8272_cnos', - 'outputfile': self.test_log, 'asNum': '33', - 'bgpArg1': 'cluster-id', 'bgpArg2': '10.241.107.40'}) - result = self.execute_module(changed=True) - expected_result = 'BGP configurations accomplished' - self.assertEqual(result['msg'], expected_result) - - def test_cnos_bgp_graceful_restart(self): - set_module_args({'username': 'admin', 'password': 'pass', - 'host': '10.241.107.39', 'deviceType': 'g8272_cnos', - 'outputfile': self.test_log, 'asNum': '33', - 'bgpArg1': 'graceful-restart', 'bgpArg2': '333'}) - result = self.execute_module(changed=True) - expected_result = 'BGP configurations accomplished' - self.assertEqual(result['msg'], expected_result) - - def test_cnos_bgp_routerid(self): - set_module_args({'username': 'admin', 'password': 'pass', - 'host': '10.241.107.39', 'deviceType': 'g8272_cnos', - 'outputfile': self.test_log, 'asNum': '33', - 'bgpArg1': 'router-id', 'bgpArg2': '1.2.3.4'}) - result = self.execute_module(changed=True) - expected_result = 'BGP configurations accomplished' - self.assertEqual(result['msg'], expected_result) - - def test_cnos_bgp_vrf(self): - set_module_args({'username': 'admin', 'password': 'pass', - 'host': '10.241.107.39', 'deviceType': 'g8272_cnos', - 'outputfile': self.test_log, 'asNum': '33', - 'bgpArg1': 'vrf'}) - result = self.execute_module(changed=True) - expected_result = 'BGP configurations accomplished' - self.assertEqual(result['msg'], expected_result) diff --git a/test/units/modules/network/cnos/test_cnos_command.py b/test/units/modules/network/cnos/test_cnos_command.py deleted file mode 100644 index c38a0d014b..0000000000 --- a/test/units/modules/network/cnos/test_cnos_command.py +++ /dev/null @@ -1,104 +0,0 @@ -# Copyright (C) 2017 Lenovo, Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cnos import cnos_command -from units.modules.utils import set_module_args -from .cnos_module import TestCnosModule, load_fixture - - -class TestCnosCommandModule(TestCnosModule): - - module = cnos_command - - def setUp(self): - super(TestCnosCommandModule, self).setUp() - self.mock_run_commands = patch('ansible.modules.network.cnos.cnos_command.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestCnosCommandModule, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for item in commands: - try: - command = item - except ValueError: - command = 'show version' - filename = str(command).replace(' ', '_') - output.append(load_fixture(filename)) - return output - - self.run_commands.side_effect = load_from_file - - def test_cnos_command_simple(self): - set_module_args(dict(commands=['show version'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 1) - self.assertTrue(result['stdout'][0].startswith('Lenovo Networking Operating System (NOS) Software')) - - def test_cnos_command_multiple(self): - set_module_args(dict(commands=['show version', 'show running-config'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 2) - self.assertTrue(result['stdout'][0].startswith('Lenovo Networking Operating System (NOS) Software')) - - def test_cnos_command_wait_for(self): - wait_for = 'result[0] contains "Lenovo Networking Operating System (NOS) Software"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module() - - def test_cnos_command_wait_for_fails(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 10) - - def test_cnos_command_retries(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show version'], wait_for=wait_for, retries=2)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 2) - - def test_cnos_command_match_any(self): - wait_for = ['result[0] contains "Lenovo Networking Operating System (NOS) Software"', - 'result[0] contains "test string"'] - set_module_args(dict(commands=['show version'], wait_for=wait_for, match='any')) - self.execute_module() - - def test_cnos_command_match_all(self): - wait_for = ['result[0] contains "Lenovo Networking Operating System (NOS) Software"', - 'result[0] contains "Lenovo"'] - set_module_args(dict(commands=['show version'], wait_for=wait_for, match='all')) - self.execute_module() - - def test_cnos_command_match_all_failure(self): - wait_for = ['result[0] contains "Lenovo ENOS"', - 'result[0] contains "test string"'] - commands = ['show version', 'show run'] - set_module_args(dict(commands=commands, wait_for=wait_for, match='all')) - self.execute_module(failed=True) diff --git a/test/units/modules/network/cnos/test_cnos_config.py b/test/units/modules/network/cnos/test_cnos_config.py deleted file mode 100644 index 3a9cc9d8b4..0000000000 --- a/test/units/modules/network/cnos/test_cnos_config.py +++ /dev/null @@ -1,125 +0,0 @@ -# -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cnos import cnos_config - -from .cnos_module import TestCnosModule, load_fixture -from units.modules.utils import set_module_args - - -class TestCnosConfigModule(TestCnosModule): - - module = cnos_config - - def setUp(self): - self.patcher_get_config = patch('ansible.modules.network.cnos.cnos_config.get_config') - self.mock_get_config = self.patcher_get_config.start() - self.patcher_exec_command = patch('ansible.modules.network.cnos.cnos_config.load_config') - self.mock_exec_command = self.patcher_exec_command.start() - - def tearDown(self): - self.patcher_get_config.stop() - self.patcher_exec_command.stop() - - def load_fixtures(self, commands=None): - config_file = 'cnos_config_config.cfg' - self.mock_get_config.return_value = load_fixture(config_file) - self.mock_exec_command.return_value = 'dummy diff' - - def test_cnos_config_unchanged(self): - src = load_fixture('cnos_config_config.cfg') - set_module_args(dict(src=src)) - self.execute_module() - - def test_cnos_config_src(self): - src = load_fixture('cnos_config_src.cfg') - set_module_args(dict(src=src)) - commands = ['hostname foo', 'interface ethernet 1/13', - 'speed 10000'] - self.execute_module(changed=True, commands=commands) - - def test_cnos_config_backup(self): - set_module_args(dict(backup=True)) - result = self.execute_module() - self.assertIn('__backup__', result) - - def test_cnos_config_lines_wo_parents(self): - set_module_args(dict(lines=['hostname foo'])) - commands = ['hostname foo'] - self.execute_module(changed=True, commands=commands) - - def test_cnos_config_lines_w_parents(self): - set_module_args(dict(lines=['shutdown'], parents=['interface ethernet 1/13'])) - commands = ['interface ethernet 1/13', 'shutdown'] - self.execute_module(changed=True, commands=commands) - - def test_cnos_config_before(self): - set_module_args(dict(lines=['hostname foo'], before=['test1', 'test2'])) - commands = ['test1', 'test2', 'hostname foo'] - self.execute_module(changed=True, commands=commands, sort=False) - - def test_cnos_config_after(self): - set_module_args(dict(lines=['hostname foo'], after=['test1', 'test2'])) - commands = ['hostname foo', 'test1', 'test2'] - self.execute_module(changed=True, commands=commands, sort=False) - - def test_cnos_config_before_after_no_change(self): - set_module_args(dict(lines=['hostname ip10-241-107-39'], - before=['test1', 'test2'], - after=['test2', 'test3'])) - self.execute_module() - - def test_cnos_config_config(self): - config = 'hostname localhost' - set_module_args(dict(lines=['hostname ip10-241-107-39'], config=config)) - commands = ['hostname ip10-241-107-39'] - self.execute_module(changed=True, commands=commands) - - def test_cnos_config_replace_block(self): - lines = ['description test string', 'test string'] - parents = ['interface ethernet 1/13'] - set_module_args(dict(lines=lines, replace='block', parents=parents)) - commands = parents + lines - self.execute_module(changed=True, commands=commands) - - def test_cnos_config_match_none(self): - lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string'] - parents = ['interface ethernet 1/13'] - set_module_args(dict(lines=lines, parents=parents, match='none')) - commands = parents + lines - self.execute_module(changed=True, commands=commands, sort=False) - - def test_cnos_config_match_strict(self): - lines = ['ip address 100.10.10.10/24', 'no switchport'] - parents = ['interface Ethernet1/12'] - set_module_args(dict(lines=lines, parents=parents, match='strict')) - commands = parents + ['no switchport'] - self.execute_module(changed=True, commands=commands, sort=False) - - def test_cnos_config_match_exact(self): - lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string', - 'no shutdown'] - parents = ['interface ethernet 1/13'] - set_module_args(dict(lines=lines, parents=parents, match='exact')) - commands = parents + lines - self.execute_module(changed=True, commands=commands, sort=False) diff --git a/test/units/modules/network/cnos/test_cnos_facts.py b/test/units/modules/network/cnos/test_cnos_facts.py deleted file mode 100644 index a566cdee65..0000000000 --- a/test/units/modules/network/cnos/test_cnos_facts.py +++ /dev/null @@ -1,82 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json - -from units.compat.mock import patch -from .cnos_module import TestCnosModule, load_fixture -from ansible.modules.network.cnos import cnos_facts -from units.modules.utils import set_module_args - - -class TestCnosFacts(TestCnosModule): - - module = cnos_facts - - def setUp(self): - super(TestCnosFacts, self).setUp() - self.mock_run_commands = patch( - 'ansible.modules.network.cnos.cnos_facts.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestCnosFacts, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for item in commands: - try: - obj = json.loads(item) - command = obj['command'] - except ValueError: - command = item - filename = str(command).replace(' ', '_') - filename = filename.replace('/', '7') - output.append(load_fixture(filename)) - return output - - self.run_commands.side_effect = load_from_file - - def test_cnos_facts_gather_subset_default(self): - set_module_args(dict()) - result = self.execute_module() - ansible_facts = result['ansible_facts'] - self.assertIn('hardware', ansible_facts['ansible_net_gather_subset']) - self.assertIn('default', ansible_facts['ansible_net_gather_subset']) - self.assertIn('interfaces', ansible_facts['ansible_net_gather_subset']) - self.assertEqual('ip10-241-107-39', ansible_facts['ansible_net_hostname']) - self.assertIn('Ethernet1/1', ansible_facts['ansible_net_interfaces'].keys()) - self.assertEqual(3985.8046875, ansible_facts['ansible_net_memtotal_mb']) - self.assertEqual(3070.40234375, ansible_facts['ansible_net_memfree_mb']) - - def test_cnos_facts_gather_subset_config(self): - set_module_args({'gather_subset': 'config'}) - result = self.execute_module() - ansible_facts = result['ansible_facts'] - self.assertIn('default', ansible_facts['ansible_net_gather_subset']) - self.assertIn('config', ansible_facts['ansible_net_gather_subset']) - self.assertEqual('ip10-241-107-39', ansible_facts['ansible_net_hostname']) - self.assertIn('ansible_net_config', ansible_facts) diff --git a/test/units/modules/network/cnos/test_cnos_interface.py b/test/units/modules/network/cnos/test_cnos_interface.py deleted file mode 100644 index e6341a02cb..0000000000 --- a/test/units/modules/network/cnos/test_cnos_interface.py +++ /dev/null @@ -1,143 +0,0 @@ -# -# (c) 2018 Red Hat Inc. -# Copyright (C) 2017 Lenovo. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cnos import cnos_interface -from units.modules.utils import set_module_args -from .cnos_module import TestCnosModule, load_fixture - - -class TestCnosInterfaceModule(TestCnosModule): - module = cnos_interface - - def setUp(self): - super(TestCnosInterfaceModule, self).setUp() - self._patch_get_config = patch( - 'ansible.modules.network.cnos.cnos_interface.get_config' - ) - self._patch_load_config = patch( - 'ansible.modules.network.cnos.cnos_interface.load_config' - ) - self._patch_exec_command = patch( - 'ansible.modules.network.cnos.cnos_interface.exec_command' - ) - - self._get_config = self._patch_get_config.start() - self._load_config = self._patch_load_config.start() - self._exec_command = self._patch_exec_command.start() - - def tearDown(self): - super(TestCnosInterfaceModule, self).tearDown() - self._patch_get_config.stop() - self._patch_load_config.stop() - self._patch_exec_command.stop() - - def load_fixtures(self, commands=None): - config_file = 'cnos_config_config.cfg' - self._get_config.return_value = load_fixture(config_file) - self._load_config.return_value = None - - def test_cnos_interface_description(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet1/2', - description='show version' - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'interface Ethernet1/2', - 'description show version', - 'duplex auto' - ], - 'changed': True - } - ) - - def test_cnos_interface_speed(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet1/2', - speed=1000 - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'interface Ethernet1/2', - 'speed 1000', - 'duplex auto' - ], - 'changed': True - } - ) - - def test_cnos_interface_mtu(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet1/2', - mtu=1548 - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'interface Ethernet1/2', - 'duplex auto', - 'mtu 1548' - ], - 'changed': True - } - ) - - def test_cnos_interface_mtu_out_of_range(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet0/2', - mtu=15000 - )) - result = self.execute_module(failed=True) - self.assertEqual( - result, - { - 'msg': 'mtu must be between 64 and 9216', - 'failed': True - } - ) - - def test_cnos_interface_enabled(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet1/44', - enabled=True - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'interface Ethernet1/44', - 'duplex auto', - 'no shutdown' - ], - 'changed': True - } - ) diff --git a/test/units/modules/network/cnos/test_cnos_l2_interface.py b/test/units/modules/network/cnos/test_cnos_l2_interface.py deleted file mode 100644 index fc32588033..0000000000 --- a/test/units/modules/network/cnos/test_cnos_l2_interface.py +++ /dev/null @@ -1,155 +0,0 @@ -# -# (c) 2018 Lenovo. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cnos import cnos_l2_interface -from units.modules.utils import set_module_args -from .cnos_module import TestCnosModule, load_fixture - - -class TestCnosL2InterfaceModule(TestCnosModule): - module = cnos_l2_interface - - def setUp(self): - super(TestCnosL2InterfaceModule, self).setUp() - self._patch_get_config = patch( - 'ansible.modules.network.cnos.cnos_l2_interface.get_config' - ) - self._patch_load_config = patch( - 'ansible.modules.network.cnos.cnos_l2_interface.load_config' - ) - self._patch_run_commands = patch( - 'ansible.modules.network.cnos.cnos_l2_interface.run_commands' - ) - - self._get_config = self._patch_get_config.start() - self._load_config = self._patch_load_config.start() - self._run_commands = self._patch_run_commands.start() - self._run_commands.side_effect = self.run_commands_load_fixtures - - def run_commands_load_fixtures(self, module, commands, *args, **kwargs): - return self.load_fixtures( - commands, - destination=self._run_commands, - return_values=True - ) - - def tearDown(self): - super(TestCnosL2InterfaceModule, self).tearDown() - self._patch_get_config.stop() - self._patch_load_config.stop() - self._patch_run_commands.stop() - - def load_fixtures(self, commands=None, - destination=None, return_values=False): - side_effects = [] - - if not destination: - destination = self._get_config - - if not commands: - commands = ['cnos_config_config.cfg'] - - for command in commands: - filename = str(command).replace(' ', '_') - filename = str(filename).replace('/', '_') - side_effects.append(load_fixture(filename)) - - if return_values is True: - return side_effects - - destination.side_effect = side_effects - return None - - def test_cnos_l2_interface_access_vlan(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet 1/33', - mode='access', - access_vlan=13, - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'interface ethernet 1/33', - 'switchport access vlan 13' - ], - 'changed': True, - 'warnings': [] - } - ) - - def test_cnos_l2_interface_vlan_does_not_exist(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet 1/33', - mode='access', - access_vlan=10, - )) - result = self.execute_module(failed=True) - self.assertEqual( - result, - { - 'msg': 'You are trying to configure a VLAN on an interface ' - 'that\ndoes not exist on the switch yet!', - 'failed': True, - 'vlan': '10' - } - ) - - def test_cnos_l2_interface_incorrect_state(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet 1/44', - mode='access', - access_vlan=10, - )) - result = self.execute_module(failed=True) - self.assertEqual( - result, - { - 'msg': 'Ensure interface is configured to be a L2\nport first ' - 'before using this module. You can use\nthe cnos_' - 'interface module for this.', - 'failed': True - } - ) - - def test_cnos_l2_interface_trunk(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet 1/45', - mode='trunk', - native_vlan='12', - trunk_allowed_vlans='13,12' - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'interface ethernet 1/45', - 'switchport mode trunk', - 'switchport trunk allowed vlan 13,12', - 'switchport trunk native vlan 12' - ], - 'changed': True, - 'warnings': [] - } - ) diff --git a/test/units/modules/network/cnos/test_cnos_l3_interface.py b/test/units/modules/network/cnos/test_cnos_l3_interface.py deleted file mode 100644 index 527dda2ab7..0000000000 --- a/test/units/modules/network/cnos/test_cnos_l3_interface.py +++ /dev/null @@ -1,79 +0,0 @@ -# -# (c) 2018 Lenovo. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cnos import cnos_l3_interface -from units.modules.utils import set_module_args -from .cnos_module import TestCnosModule, load_fixture - - -class TestCnosL3InterfaceModule(TestCnosModule): - module = cnos_l3_interface - - def setUp(self): - super(TestCnosL3InterfaceModule, self).setUp() - self._patch_get_config = patch( - 'ansible.modules.network.cnos.cnos_l3_interface.get_config' - ) - self._patch_load_config = patch( - 'ansible.modules.network.cnos.cnos_l3_interface.load_config' - ) - self._patch_is_switchport = patch( - 'ansible.modules.network.cnos.cnos_l3_interface.is_switchport' - ) - - self._get_config = self._patch_get_config.start() - self._load_config = self._patch_load_config.start() - self._is_switchport = self._patch_is_switchport.start() - - def tearDown(self): - super(TestCnosL3InterfaceModule, self).tearDown() - self._patch_get_config.stop() - self._patch_load_config.stop() - - def load_fixtures(self, commands=None): - config_file = 'l3_interface_config.cfg' - self._get_config.return_value = load_fixture(config_file) - self._load_config.return_value = None - self._is_switchport.return_value = False - - def test_cnos_l3_interface_ipv4_address(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet 1/35', - ipv4='192.168.4.1/24' - )) - commands = [ - 'interface Ethernet 1/35', - 'ip address 192.168.4.1 255.255.255.0' - ] - result = self.execute_module(changed=True, commands=commands) - - def test_cnos_l3_interface_absent(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet1/9', - state='absent' - )) - commands = [ - 'interface Ethernet1/9', - 'no ip address', - 'no ipv6 address' - ] - result = self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/cnos/test_cnos_linkagg.py b/test/units/modules/network/cnos/test_cnos_linkagg.py deleted file mode 100644 index 48788b03d4..0000000000 --- a/test/units/modules/network/cnos/test_cnos_linkagg.py +++ /dev/null @@ -1,144 +0,0 @@ -# -# (c) 2018 Red Hat Inc. -# Copyright (C) 2017 Lenovo. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cnos import cnos_linkagg -from units.modules.utils import set_module_args -from .cnos_module import TestCnosModule, load_fixture - - -class TestCnosLinkaggModule(TestCnosModule): - module = cnos_linkagg - - def setUp(self): - super(TestCnosLinkaggModule, self).setUp() - self._patch_get_config = patch( - 'ansible.modules.network.cnos.cnos_linkagg.get_config' - ) - self._patch_load_config = patch( - 'ansible.modules.network.cnos.cnos_linkagg.load_config' - ) - - self._get_config = self._patch_get_config.start() - self._load_config = self._patch_load_config.start() - - def tearDown(self): - super(TestCnosLinkaggModule, self).tearDown() - self._patch_get_config.stop() - self._patch_load_config.stop() - - def load_fixtures(self, commands=None): - config_file = 'cnos_linkagg_config.cfg' - self._get_config.return_value = load_fixture(config_file) - self._load_config.return_value = None - - def test_cnos_linkagg_group_present(self, *args, **kwargs): - set_module_args(dict( - group='10', - state='present' - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'interface port-channel 10', - 'exit' - ], - 'changed': True - } - ) - - def test_cnos_linkagg_group_members_active(self, *args, **kwargs): - set_module_args(dict( - group='10', - mode='active', - members=[ - 'Ethernet 1/33', - 'Ethernet 1/44' - ] - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'interface port-channel 10', - 'exit', - 'interface Ethernet 1/33', - 'channel-group 10 mode active', - 'interface Ethernet 1/44', - 'channel-group 10 mode active' - ], - 'changed': True - } - ) - - def test_cnos_linkagg_group_member_removal(self, *args, **kwargs): - set_module_args(dict( - group='20', - mode='active', - members=[ - 'Ethernet 1/10', - ] - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'interface port-channel 20', - 'exit', - 'interface Ethernet 1/10', - 'channel-group 20 mode active' - ], - 'changed': True - } - ) - - def test_cnos_linkagg_group_members_absent(self, *args, **kwargs): - set_module_args(dict( - group='20', - state='absent' - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'no interface port-channel 20' - ], - 'changed': True - } - ) - set_module_args(dict( - group='10', - state='absent' - )) - result = self.execute_module(changed=False) - self.assertEqual( - result, - { - 'commands': [], - 'changed': False - } - ) diff --git a/test/units/modules/network/cnos/test_cnos_lldp.py b/test/units/modules/network/cnos/test_cnos_lldp.py deleted file mode 100644 index a28b386a47..0000000000 --- a/test/units/modules/network/cnos/test_cnos_lldp.py +++ /dev/null @@ -1,101 +0,0 @@ -# -# (c) 2019 Lenovo. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cnos import cnos_lldp -from units.modules.utils import set_module_args -from .cnos_module import TestCnosModule, load_fixture - - -class TestCnosLldpModule(TestCnosModule): - module = cnos_lldp - - def setUp(self): - super(TestCnosLldpModule, self).setUp() - self._patch_get_config = patch( - 'ansible.modules.network.cnos.cnos_lldp.get_config' - ) - self._patch_load_config = patch( - 'ansible.modules.network.cnos.cnos_lldp.load_config' - ) - self._patch_get_ethernet_range = patch( - 'ansible.modules.network.cnos.cnos_lldp.get_ethernet_range' - ) - - self._get_config = self._patch_get_config.start() - self._load_config = self._patch_load_config.start() - self._get_ethernet_range = self._patch_get_ethernet_range.start() - - def tearDown(self): - super(TestCnosLldpModule, self).tearDown() - self._patch_get_config.stop() - self._patch_load_config.stop() - self._patch_get_ethernet_range.stop() - - def load_fixtures(self, commands=None): - config_file = 'cnos_config_config.cfg' - self._get_config.return_value = load_fixture(config_file) - self._load_config.return_value = None - self._get_ethernet_range.return_value = '54' - - def test_cnos_lldp_present(self, *args, **kwargs): - set_module_args(dict( - state='present' - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'interface ethernet 1/1-54', - 'lldp receive', - 'lldp transmit', - 'exit', - 'interface mgmt 0', - 'lldp receive', - 'lldp transmit', - 'exit' - ], - 'changed': True - } - ) - - def test_cnos_lldp_absent(self, *args, **kwargs): - set_module_args(dict( - state='absent' - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'interface ethernet 1/1-54', - 'no lldp receive', - 'no lldp transmit', - 'exit', - 'interface mgmt 0', - 'no lldp receive', - 'no lldp transmit', - 'exit' - ], - 'changed': True - } - ) diff --git a/test/units/modules/network/cnos/test_cnos_logging.py b/test/units/modules/network/cnos/test_cnos_logging.py deleted file mode 100644 index 8bcb52cc7e..0000000000 --- a/test/units/modules/network/cnos/test_cnos_logging.py +++ /dev/null @@ -1,60 +0,0 @@ -# -# (c) 2018 Red Hat Inc. -# Copyright (C) 2017 Lenovo. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cnos import cnos_logging -from units.modules.utils import set_module_args -from .cnos_module import TestCnosModule, load_fixture - - -class TestCnosLoggingModule(TestCnosModule): - - module = cnos_logging - - def setUp(self): - super(TestCnosLoggingModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.cnos.cnos_logging.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch('ansible.modules.network.cnos.cnos_logging.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestCnosLoggingModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None): - self.get_config.return_value = load_fixture('cnos_logging_config.cfg') - self.load_config.return_value = None - - def test_cnos_logging_buffer_size_changed_implicit(self): - set_module_args(dict(dest='logfile', name='anil')) - commands = ['logging logfile anil 5 size 10485760'] - self.execute_module(changed=True, commands=commands) - - def test_cnos_logging_logfile_size_changed_explicit(self): - set_module_args(dict(dest='logfile', name='anil', level='4', size=6000)) - commands = ['logging logfile anil 4 size 6000'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/cnos/test_cnos_static_route.py b/test/units/modules/network/cnos/test_cnos_static_route.py deleted file mode 100644 index 29d7db6497..0000000000 --- a/test/units/modules/network/cnos/test_cnos_static_route.py +++ /dev/null @@ -1,74 +0,0 @@ -# (c) 2016 Red Hat Inc. -# Copyright (C) 2017 Lenovo. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cnos import cnos_static_route -from .cnos_module import TestCnosModule, load_fixture -from units.modules.utils import set_module_args - - -class TestCnosStaticRouteModule(TestCnosModule): - - module = cnos_static_route - - def setUp(self): - super(TestCnosStaticRouteModule, self).setUp() - - self.mock_exec_command = patch('ansible.modules.network.cnos.cnos_banner.exec_command') - self.exec_command = self.mock_exec_command.start() - - self.mock_load_config = patch('ansible.modules.network.cnos.cnos_static_route.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_config = patch('ansible.modules.network.cnos.cnos_static_route.get_config') - self.get_config = self.mock_get_config.start() - - def tearDown(self): - super(TestCnosStaticRouteModule, self).tearDown() - self.mock_exec_command.stop() - self.mock_load_config.stop() - self.mock_get_config.stop() - - def load_fixtures(self, commands=None): - self.exec_command.return_value = (0, load_fixture('cnos_static_route.cfg').strip(), None) - self.load_config.return_value = dict(diff=None, session='session') - - def test_cnos_static_route_present(self): - set_module_args(dict(prefix='10.241.107.20', mask='255.255.255.0', next_hop='10.241.106.1')) - self.execute_module(changed=True, commands=['ip route 10.241.107.20 255.255.255.0 10.241.106.1 1']) - - def test_cnos_static_route_present_no_defaults(self): - set_module_args(dict(prefix='10.241.106.4', mask='255.255.255.0', next_hop='1.2.3.5', - description='testing', admin_distance=100)) - self.execute_module(changed=True, - commands=['ip route 10.241.106.4 255.255.255.0 1.2.3.5 100 description testing']) - - def test_cnos_static_route_change(self): - set_module_args(dict(prefix='10.10.30.64', mask='255.255.255.0', next_hop='1.2.4.8')) - self.execute_module(changed=True, - commands=['ip route 10.10.30.64 255.255.255.0 1.2.4.8 1']) - - def test_cnos_static_route_absent(self): - set_module_args(dict(prefix='10.10.30.12', - mask='255.255.255.0', next_hop='1.2.4.8', state='absent')) - self.execute_module(changed=True, - commands=['no ip route 10.10.30.12 255.255.255.0 1.2.4.8 1']) diff --git a/test/units/modules/network/cnos/test_cnos_system.py b/test/units/modules/network/cnos/test_cnos_system.py deleted file mode 100644 index 569d54eefa..0000000000 --- a/test/units/modules/network/cnos/test_cnos_system.py +++ /dev/null @@ -1,103 +0,0 @@ -# -# (c) 2016 Red Hat Inc. -# Copyright (C) 2017 Lenovo. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cnos import cnos_system -from units.modules.utils import set_module_args -from .cnos_module import TestCnosModule, load_fixture - - -class TestCnosSystemModule(TestCnosModule): - - module = cnos_system - - def setUp(self): - super(TestCnosSystemModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.cnos.cnos_system.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch('ansible.modules.network.cnos.cnos_system.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestCnosSystemModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, device=''): - self.get_config.return_value = load_fixture('cnos_system_config.cfg') - self.load_config.return_value = None - - def test_cnos_system_hostname_changed(self): - set_module_args(dict(hostname='foo')) - commands = ['hostname foo'] - self.execute_module(changed=True, commands=commands) - - def test_cnos_system_domain_lookup(self): - set_module_args(dict(lookup_enabled=False)) - commands = ['no ip domain-lookup'] - self.execute_module(changed=True, commands=commands) - - def test_cnos_system_missing_vrf(self): - domain_name = dict(name='example.com', vrf='example') - set_module_args(dict(domain_name=domain_name)) - self.execute_module(failed=True) - - def test_cnos_system_domain_name(self): - set_module_args(dict(domain_name=['example.net'])) - commands = ['ip domain-name example.net vrf default'] - self.execute_module(changed=True, commands=commands) - - def test_cnos_system_domain_name_complex(self): - domain_name = dict(name='example.net', vrf='management') - set_module_args(dict(domain_name=[domain_name])) - commands = ['ip domain-name example.net vrf management'] - self.execute_module(changed=True, commands=commands) - - def test_cnos_system_domain_search(self): - set_module_args(dict(domain_search=['example.net'])) - commands = ['ip domain-list example.net vrf default'] - self.execute_module(changed=True, commands=commands) - - def test_cnos_system_domain_search_complex(self): - domain_search = dict(name='example.net', vrf='management') - set_module_args(dict(domain_search=[domain_search])) - commands = ['ip domain-list example.net vrf management'] - self.execute_module(changed=True, commands=commands) - - def test_cnos_system_name_servers(self): - set_module_args(dict(name_servers=['1.2.3.4', '8.8.8.8'])) - commands = ['ip name-server 1.2.3.4 vrf default', 'ip name-server 8.8.8.8 vrf default'] - self.execute_module(changed=True, commands=commands) - - def test_cnos_system_name_servers_complex(self): - name_servers = dict(server='1.2.3.4', vrf='management') - set_module_args(dict(name_servers=[name_servers])) - commands = ['ip name-server 1.2.3.4 vrf management'] - self.execute_module(changed=True, commands=commands) - - def test_cnos_system_state_absent(self): - set_module_args(dict(state='absent')) - commands = ['no hostname'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/cnos/test_cnos_user.py b/test/units/modules/network/cnos/test_cnos_user.py deleted file mode 100644 index 35ca012013..0000000000 --- a/test/units/modules/network/cnos/test_cnos_user.py +++ /dev/null @@ -1,89 +0,0 @@ -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cnos import cnos_user -from units.modules.utils import set_module_args -from .cnos_module import TestCnosModule, load_fixture - - -class TestCnosUserModule(TestCnosModule): - - module = cnos_user - - def setUp(self): - super(TestCnosUserModule, self).setUp() - self.mock_get_config = patch('ansible.modules.network.cnos.cnos_user.get_config') - self.get_config = self.mock_get_config.start() - self.mock_load_config = patch('ansible.modules.network.cnos.cnos_user.load_config') - self.load_config = self.mock_load_config.start() - self.mock_run_commands = patch('ansible.modules.network.cnos.cnos_user.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestCnosUserModule, self).tearDown() - - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None, transport='cli'): - self.get_config.return_value = load_fixture('cnos_user_config.cfg') - self.load_config.return_value = dict(diff=None, session='session') - self.run_commands.return_value = [load_fixture('cnos_user_config.cfg')] - - def test_cnos_user_create(self): - set_module_args(dict(name='test', configured_password='Anil')) - commands = ['username test', 'username test password Anil'] - self.execute_module(changed=True, commands=commands) - - def test_cnos_user_delete(self): - set_module_args(dict(name='ansible', state='absent')) - commands = [] - self.execute_module(changed=False, commands=commands) - - def test_cnos_user_password(self): - set_module_args(dict(name='ansible', configured_password='test')) - commands = ['username ansible', 'username ansible password test'] - self.execute_module(changed=True, commands=commands) - - def test_cnos_user_purge(self): - set_module_args(dict(purge=True)) - commands = ['no username admin\n', 'no username ansible\n'] - self.execute_module(changed=True, commands=commands) - - def test_cnos_user_role(self): - set_module_args(dict(name='ansible', role='network-admin', configured_password='test')) - result = self.execute_module(changed=True) - self.assertIn('username ansible role network-admin', result['commands']) - - def test_cnos_user_sshkey(self): - set_module_args(dict(name='ansible', sshkey='test')) - commands = ['username ansible', 'username ansible sshkey test'] - self.execute_module(changed=True, commands=commands) - - def test_cnos_user_update_password_changed(self): - set_module_args(dict(name='test', configured_password='test', update_password='on_create')) - commands = ['username test', 'username test password test'] - self.execute_module(changed=True, commands=commands) - - def test_cnos_user_update_password_always(self): - set_module_args(dict(name='ansible', configured_password='test', update_password='always')) - commands = ['username ansible', 'username ansible password test'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/cnos/test_cnos_vlag.py b/test/units/modules/network/cnos/test_cnos_vlag.py deleted file mode 100644 index 9b6e3bbd89..0000000000 --- a/test/units/modules/network/cnos/test_cnos_vlag.py +++ /dev/null @@ -1,51 +0,0 @@ -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cnos import cnos_vlag -from units.modules.utils import set_module_args -from .cnos_module import TestCnosModule, load_fixture - - -class TestCnosVlagModule(TestCnosModule): - - module = cnos_vlag - - def setUp(self): - super(TestCnosVlagModule, self).setUp() - - self.mock_run_cnos_commands = patch('ansible.module_utils.network.cnos.cnos.run_cnos_commands') - self.run_cnos_commands = self.mock_run_cnos_commands.start() - - def tearDown(self): - super(TestCnosVlagModule, self).tearDown() - self.mock_run_cnos_commands.stop() - - def load_fixtures(self, commands=None, transport='cli'): - self.run_cnos_commands.return_value = [load_fixture('cnos_vlag_config.cfg')] - - def test_cnos_vlag_enable(self): - set_module_args({'username': 'admin', 'password': 'admin', - 'host': '10.241.107.39', 'deviceType': 'g8272_cnos', - 'outputfile': self.test_log, 'vlagArg1': 'enable'}) - result = self.execute_module(changed=True) - expected_result = 'VLAG configurations accomplished' - self.assertEqual(result['msg'], expected_result) - - def test_cnos_vlag_instance(self): - set_module_args({'username': 'admin', 'password': 'pass', - 'host': '10.241.107.39', 'deviceType': 'g8272_cnos', - 'outputfile': self.test_log, 'vlagArg1': 'instance', - 'vlagArg2': '33', 'vlagArg3': '333'}) - result = self.execute_module(changed=True) - expected_result = 'VLAG configurations accomplished' - self.assertEqual(result['msg'], expected_result) - - def test_cnos_vlag_hlthchk(self): - set_module_args({'username': 'admin', 'password': 'pass', - 'host': '10.241.107.39', 'deviceType': 'g8272_cnos', - 'outputfile': self.test_log, 'vlagArg1': 'hlthchk', - 'vlagArg2': 'keepalive-interval', 'vlagArg3': '131'}) - result = self.execute_module(changed=True) - expected_result = 'VLAG configurations accomplished' - self.assertEqual(result['msg'], expected_result) diff --git a/test/units/modules/network/cnos/test_cnos_vlan.py b/test/units/modules/network/cnos/test_cnos_vlan.py deleted file mode 100644 index cc63d26eb0..0000000000 --- a/test/units/modules/network/cnos/test_cnos_vlan.py +++ /dev/null @@ -1,206 +0,0 @@ -# (c) 2018 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cnos import cnos_vlan -from ansible.modules.network.cnos.cnos_vlan import parse_vlan_brief -from units.modules.utils import set_module_args -from .cnos_module import TestCnosModule, load_fixture - - -class TestCnosVlanModule(TestCnosModule): - - module = cnos_vlan - - def setUp(self): - super(TestCnosVlanModule, self).setUp() - - self.mock_run_commands = patch('ansible.modules.network.cnos.cnos_vlan.run_commands') - self.run_commands = self.mock_run_commands.start() - - self.mock_load_config = patch('ansible.modules.network.cnos.cnos_vlan.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestCnosVlanModule, self).tearDown() - self.mock_run_commands.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - self.run_commands.return_value = [load_fixture('cnos_vlan_config.cfg')] - self.load_config.return_value = {'diff': None, 'session': 'session'} - - def test_cnos_vlan_create(self): - set_module_args({'vlan_id': '3', 'name': 'test', 'state': 'present'}) - result = self.execute_module(changed=True) - expected_commands = [ - 'vlan 3', - 'name test', - ] - self.assertEqual(result['commands'], expected_commands) - - def test_cnos_vlan_id_startwith_9(self): - set_module_args({'vlan_id': '13', 'name': 'anil', 'state': 'present'}) - result = self.execute_module(changed=False) - expected_commands = [] - self.assertEqual(result['commands'], expected_commands) - - def test_cnos_vlan_rename(self): - set_module_args({'vlan_id': '2', 'name': 'test', 'state': 'present'}) - result = self.execute_module(changed=True) - expected_commands = [ - 'vlan 2', - 'name test', - ] - self.assertEqual(result['commands'], expected_commands) - - def test_cnos_vlan_with_interfaces(self): - set_module_args({'vlan_id': '2', 'name': 'vlan2', 'state': 'present', - 'interfaces': ['Ethernet1/33', 'Ethernet1/44']}) - result = self.execute_module(changed=True) - expected_commands = [ - 'vlan 2', - 'name vlan2', - 'vlan 2', - 'interface Ethernet1/33', - 'switchport mode access', - 'switchport access vlan 2', - 'vlan 2', - 'interface Ethernet1/44', - 'switchport mode access', - 'switchport access vlan 2', - ] - self.assertEqual(result['commands'], expected_commands) - - def test_cnos_vlan_with_interfaces_and_newvlan(self): - set_module_args({'vlan_id': '3', - 'name': 'vlan3', 'state': 'present', - 'interfaces': ['Ethernet1/33', 'Ethernet1/44']}) - result = self.execute_module(changed=True) - expected_commands = [ - 'vlan 3', - 'name vlan3', - 'vlan 3', - 'interface Ethernet1/33', - 'switchport mode access', - 'switchport access vlan 3', - 'vlan 3', - 'interface Ethernet1/44', - 'switchport mode access', - 'switchport access vlan 3', - ] - self.assertEqual(result['commands'], expected_commands) - - def test_parse_vlan_brief(self): - result = parse_vlan_brief(load_fixture('cnos_vlan_config.cfg')) - obj = [ - { - 'interfaces': [ - 'po1', - 'po2', - 'po11', - 'po12', - 'po13', - 'po14', - 'po15', - 'po17', - 'po20', - 'po100', - 'po1001', - 'po1002', - 'po1003', - 'po1004', - 'Ethernet1/2', - 'Ethernet1/3', - 'Ethernet1/4', - 'Ethernet1/9', - 'Ethernet1/10', - 'Ethernet1/11', - 'Ethernet1/14', - 'Ethernet1/15', - 'Ethernet1/16', - 'Ethernet1/17', - 'Ethernet1/18', - 'Ethernet1/19', - 'Ethernet1/20', - 'Ethernet1/21', - 'Ethernet1/22', - 'Ethernet1/23', - 'Ethernet1/24', - 'Ethernet1/25', - 'Ethernet1/26', - 'Ethernet1/27', - 'Ethernet1/28', - 'Ethernet1/29', - 'Ethernet1/30', - 'Ethernet1/31', - 'Ethernet1/32', - 'Ethernet1/33', - 'Ethernet1/34', - 'Ethernet1/35', - 'Ethernet1/36', - 'Ethernet1/37', - 'Ethernet1/38', - 'Ethernet1/39', - 'Ethernet1/40', - 'Ethernet1/41', - 'Ethernet1/42', - 'Ethernet1/43', - 'Ethernet1/44', - 'Ethernet1/45', - 'Ethernet1/46', - 'Ethernet1/47', - 'Ethernet1/48', - 'Ethernet1/49', - 'Ethernet1/50', - 'Ethernet1/51', - 'Ethernet1/52', - 'Ethernet1/53', - 'Ethernet1/54'], - 'state': 'ACTIVE', - 'name': 'default', - 'vlan_id': '1'}, - { - 'interfaces': [], - 'state': 'ACTIVE', - 'name': 'VLAN0002', - 'vlan_id': '2'}, - { - 'interfaces': [], - 'state': 'ACTIVE', - 'name': 'VLAN0003', - 'vlan_id': '3'}, - { - 'interfaces': [], - 'state': 'ACTIVE', - 'name': 'VLAN0005', - 'vlan_id': '5'}, - { - 'interfaces': [], - 'state': 'ACTIVE', - 'name': 'VLAN0012', - 'vlan_id': '12'}, - { - 'interfaces': [], - 'state': 'ACTIVE', - 'name': 'anil', - 'vlan_id': '13'}] - self.assertEqual(result, obj) diff --git a/test/units/modules/network/cnos/test_cnos_vrf.py b/test/units/modules/network/cnos/test_cnos_vrf.py deleted file mode 100644 index 2d5b827462..0000000000 --- a/test/units/modules/network/cnos/test_cnos_vrf.py +++ /dev/null @@ -1,78 +0,0 @@ -# -# (c) 2019 Lenovo. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.cnos import cnos_vrf -from units.modules.utils import set_module_args -from .cnos_module import TestCnosModule, load_fixture - - -class TestCnosVrfModule(TestCnosModule): - - module = cnos_vrf - - def setUp(self): - super(TestCnosVrfModule, self).setUp() - - self.mock_load_config = patch('ansible.modules.network.cnos.cnos_vrf.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_run_commands = patch('ansible.modules.network.cnos.cnos_vrf.run_commands') - self.run_commands = self.mock_run_commands.start() - - self._patch_is_switchport = patch( - 'ansible.modules.network.cnos.cnos_vrf.is_switchport' - ) - self._is_switchport = self._patch_is_switchport.start() - - def tearDown(self): - super(TestCnosVrfModule, self).tearDown() - self.mock_load_config.stop() - self.mock_run_commands.stop() - self._patch_is_switchport.stop() - - def load_fixtures(self, commands=None): - config_file = 'cnos_vrf_config.cfg' - self.load_config.return_value = load_fixture(config_file) - self.run_commands.return_value = load_fixture(config_file) - self._is_switchport.return_value = False - - def test_cnos_vrf_present(self): - set_module_args(dict(name='test1', state='present')) - self.execute_module(changed=True, commands=['vrf context test1']) - - def test_cnos_vrf_present_management(self): - set_module_args(dict(name='management', state='present')) - self.execute_module(changed=True, commands=['vrf context management']) - - def test_cnos_vrf_absent_management(self): - set_module_args(dict(name='management', state='absent')) - result = self.execute_module(failed=True) - self.assertEqual(result['msg'], 'Management VRF context cannot be deleted') - - def test_cnos_vrf_absent_no_change(self): - set_module_args(dict(name='test1', state='absent')) - self.execute_module(changed=False, commands=[]) - - def test_cnos_vrf_default(self): - set_module_args(dict(name='default', state='present')) - result = self.execute_module(failed=True) - self.assertEqual(result['msg'], 'VRF context default is reserved') diff --git a/test/units/modules/network/cumulus/test_nclu.py b/test/units/modules/network/cumulus/test_nclu.py deleted file mode 100644 index 425c0a2c23..0000000000 --- a/test/units/modules/network/cumulus/test_nclu.py +++ /dev/null @@ -1,222 +0,0 @@ -# -*- coding: utf-8 -*- - -# (c) 2016, Cumulus Networks <ce-ceng@cumulusnetworks.com> -# -# This file is part of Ansible -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -import os.path -import unittest - -from ansible.modules.network.cumulus import nclu - - -class FakeModule(object): - """Fake NCLU module to check the logic of the ansible module. - - We have two sets of tests: fake and real. Real tests only run if - NCLU is installed on the testing machine (it should be a Cumulus VX - VM or something like that). - - Fake tests are used to test the logic of the ansible module proper - that - the right things are done when certain feedback is received. - - Real tests are used to test regressions against versions of NCLU. This - FakeModule mimics the output that is used for screenscraping. If the real - output differs, the real tests will catch that. - - To prepare a VX: - sudo apt-get update - sudo apt-get install python-setuptools git gcc python-dev libssl-dev - sudo easy_install pip - sudo pip install ansible nose coverage - # git the module and cd to the directory - nosetests --with-coverage --cover-package=nclu --cover-erase --cover-branches - - If a real test fails, it means that there is a risk of a version split, and - that changing the module will break for old versions of NCLU if not careful. - """ - - def __init__(self, **kwargs): - self.reset() - - def exit_json(self, **kwargs): - self.exit_code = kwargs - - def fail_json(self, **kwargs): - self.fail_code = kwargs - - def run_command(self, command): - """Run an NCLU command""" - - self.command_history.append(command) - if command == "/usr/bin/net pending": - return (0, self.pending, "") - elif command == "/usr/bin/net abort": - self.pending = "" - return (0, "", "") - elif command.startswith("/usr/bin/net commit"): - if self.pending: - self.last_commit = self.pending - self.pending = "" - return (0, "", "") - else: - return (0, "commit ignored...there were no pending changes", "") - elif command == "/usr/bin/net show commit last": - return (0, self.last_commit, "") - else: - self.pending += command - return self.mocks.get(command, (0, "", "")) - - def mock_output(self, command, _rc, output, _err): - """Prepare a command to mock certain output""" - - self.mocks[command] = (_rc, output, _err) - - def reset(self): - self.params = {} - self.exit_code = {} - self.fail_code = {} - self.command_history = [] - self.mocks = {} - self.pending = "" - self.last_commit = "" - - -def skipUnlessNcluInstalled(original_function): - if os.path.isfile('/usr/bin/net'): - return original_function - else: - return unittest.skip('only run if nclu is installed') - - -class TestNclu(unittest.TestCase): - - def test_command_helper(self): - module = FakeModule() - module.mock_output("/usr/bin/net add int swp1", 0, "", "") - - result = nclu.command_helper(module, 'add int swp1', 'error out') - self.assertEqual(module.command_history[-1], "/usr/bin/net add int swp1") - self.assertEqual(result, "") - - def test_command_helper_error_code(self): - module = FakeModule() - module.mock_output("/usr/bin/net fake fail command", 1, "", "") - - result = nclu.command_helper(module, 'fake fail command', 'error out') - self.assertEqual(module.fail_code, {'msg': "error out"}) - - def test_command_helper_error_msg(self): - module = FakeModule() - module.mock_output("/usr/bin/net fake fail command", 0, - "ERROR: Command not found", "") - - result = nclu.command_helper(module, 'fake fail command', 'error out') - self.assertEqual(module.fail_code, {'msg': "error out"}) - - def test_command_helper_no_error_msg(self): - module = FakeModule() - module.mock_output("/usr/bin/net fake fail command", 0, - "ERROR: Command not found", "") - - result = nclu.command_helper(module, 'fake fail command') - self.assertEqual(module.fail_code, {'msg': "ERROR: Command not found"}) - - def test_empty_run(self): - module = FakeModule() - changed, output = nclu.run_nclu(module, None, None, False, False, False, "") - self.assertEqual(module.command_history, ['/usr/bin/net pending', - '/usr/bin/net pending']) - self.assertEqual(module.fail_code, {}) - self.assertEqual(changed, False) - - def test_command_list(self): - module = FakeModule() - changed, output = nclu.run_nclu(module, ['add int swp1', 'add int swp2'], - None, False, False, False, "") - - self.assertEqual(module.command_history, ['/usr/bin/net pending', - '/usr/bin/net add int swp1', - '/usr/bin/net add int swp2', - '/usr/bin/net pending']) - self.assertNotEqual(len(module.pending), 0) - self.assertEqual(module.fail_code, {}) - self.assertEqual(changed, True) - - def test_command_list_commit(self): - module = FakeModule() - changed, output = nclu.run_nclu(module, - ['add int swp1', 'add int swp2'], - None, True, False, False, "committed") - - self.assertEqual(module.command_history, ['/usr/bin/net pending', - '/usr/bin/net add int swp1', - '/usr/bin/net add int swp2', - '/usr/bin/net pending', - "/usr/bin/net commit description 'committed'", - '/usr/bin/net show commit last']) - self.assertEqual(len(module.pending), 0) - self.assertEqual(module.fail_code, {}) - self.assertEqual(changed, True) - - def test_command_atomic(self): - module = FakeModule() - changed, output = nclu.run_nclu(module, - ['add int swp1', 'add int swp2'], - None, False, True, False, "atomically") - - self.assertEqual(module.command_history, ['/usr/bin/net abort', - '/usr/bin/net pending', - '/usr/bin/net add int swp1', - '/usr/bin/net add int swp2', - '/usr/bin/net pending', - "/usr/bin/net commit description 'atomically'", - '/usr/bin/net show commit last']) - self.assertEqual(len(module.pending), 0) - self.assertEqual(module.fail_code, {}) - self.assertEqual(changed, True) - - def test_command_abort_first(self): - module = FakeModule() - module.pending = "dirty" - nclu.run_nclu(module, None, None, False, False, True, "") - - self.assertEqual(len(module.pending), 0) - - def test_command_template_commit(self): - module = FakeModule() - changed, output = nclu.run_nclu(module, None, - " add int swp1\n add int swp2", - True, False, False, "committed") - - self.assertEqual(module.command_history, ['/usr/bin/net pending', - '/usr/bin/net add int swp1', - '/usr/bin/net add int swp2', - '/usr/bin/net pending', - "/usr/bin/net commit description 'committed'", - '/usr/bin/net show commit last']) - self.assertEqual(len(module.pending), 0) - self.assertEqual(module.fail_code, {}) - self.assertEqual(changed, True) - - def test_commit_ignored(self): - module = FakeModule() - changed, output = nclu.run_nclu(module, None, None, True, False, False, "ignore me") - - self.assertEqual(module.command_history, ['/usr/bin/net pending', - '/usr/bin/net pending', - "/usr/bin/net commit description 'ignore me'", - '/usr/bin/net abort']) - self.assertEqual(len(module.pending), 0) - self.assertEqual(module.fail_code, {}) - self.assertEqual(changed, False) diff --git a/test/units/modules/network/edgeos/edgeos_module.py b/test/units/modules/network/edgeos/edgeos_module.py deleted file mode 100644 index dfab2974f4..0000000000 --- a/test/units/modules/network/edgeos/edgeos_module.py +++ /dev/null @@ -1,86 +0,0 @@ -# (c) 2018 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json - -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase - - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(name): - path = os.path.join(fixture_path, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as f: - data = f.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class TestEdgeosModule(ModuleTestCase): - - def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False): - self.load_fixtures(commands) - - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - if commands is not None: - if sort: - self.assertEqual(sorted(commands), sorted(result['commands']), result['commands']) - else: - self.assertEqual(commands, result['commands'], result['commands']) - - return result - - def failed(self): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def changed(self, changed=False): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertEqual(result['changed'], changed, result) - return result - - def load_fixtures(self, commands=None): - pass diff --git a/test/units/modules/network/edgeos/fixtures/edgeos_config_config.cfg b/test/units/modules/network/edgeos/fixtures/edgeos_config_config.cfg deleted file mode 100644 index e0e7946961..0000000000 --- a/test/units/modules/network/edgeos/fixtures/edgeos_config_config.cfg +++ /dev/null @@ -1,10 +0,0 @@ -set system host-name 'router' -set system domain-name 'acme.com' -set system domain-search domain 'acme.com' -set system name-server 208.67.220.220 -set system name-server 208.67.222.222 -set interfaces ethernet eth0 address 1.2.3.4/24 -set interfaces ethernet eth0 description 'Outside' -set interfaces ethernet eth1 address 10.77.88.1/24 -set interfaces ethernet eth1 description 'Inside' -set interfaces ethernet eth1 disable diff --git a/test/units/modules/network/edgeos/fixtures/edgeos_config_src.cfg b/test/units/modules/network/edgeos/fixtures/edgeos_config_src.cfg deleted file mode 100644 index 471dcb9d2b..0000000000 --- a/test/units/modules/network/edgeos/fixtures/edgeos_config_src.cfg +++ /dev/null @@ -1,5 +0,0 @@ -set system host-name er01 -delete interfaces ethernet eth0 address -set interfaces ethernet eth1 address 10.77.88.1/24 -set interfaces ethernet eth1 description 'Inside' -set interfaces ethernet eth1 disable diff --git a/test/units/modules/network/edgeos/fixtures/edgeos_config_src_brackets.cfg b/test/units/modules/network/edgeos/fixtures/edgeos_config_src_brackets.cfg deleted file mode 100644 index e2bcf1cc6c..0000000000 --- a/test/units/modules/network/edgeos/fixtures/edgeos_config_src_brackets.cfg +++ /dev/null @@ -1,13 +0,0 @@ -interfaces { - ethernet eth0 { - address 10.10.10.10/24 - } - ethernet eth1 { - address 10.77.88.1/24 - description 'Inside' - disable - } -} -system { - host-name er01 -} diff --git a/test/units/modules/network/edgeos/fixtures/show_host_name b/test/units/modules/network/edgeos/fixtures/show_host_name deleted file mode 100644 index 24ee58350a..0000000000 --- a/test/units/modules/network/edgeos/fixtures/show_host_name +++ /dev/null @@ -1 +0,0 @@ -er01 diff --git a/test/units/modules/network/edgeos/fixtures/show_version b/test/units/modules/network/edgeos/fixtures/show_version deleted file mode 100644 index c32c5992eb..0000000000 --- a/test/units/modules/network/edgeos/fixtures/show_version +++ /dev/null @@ -1,7 +0,0 @@ -Version: v1.9.7+hotfix.4 -Build ID: 5024004 -Build on: 10/05/17 04:03 -Copyright: 2012-2017 Ubiquiti Networks, Inc. -HW model: EdgeRouter PoE 5-Port -HW S/N: 802AA84D6394 -Uptime: 09:39:34 up 56 days, 21 min, 2 users, load average: 0.14, 0.11, 0.07 diff --git a/test/units/modules/network/edgeos/test_edgeos_command.py b/test/units/modules/network/edgeos/test_edgeos_command.py deleted file mode 100644 index 2dc4e61c7a..0000000000 --- a/test/units/modules/network/edgeos/test_edgeos_command.py +++ /dev/null @@ -1,106 +0,0 @@ -# (c) 2018 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -import json - -from units.compat.mock import patch -from ansible.modules.network.edgeos import edgeos_command -from units.modules.utils import set_module_args -from .edgeos_module import TestEdgeosModule, load_fixture - - -class TestEdgeosCommandModule(TestEdgeosModule): - - module = edgeos_command - - def setUp(self): - super(TestEdgeosCommandModule, self).setUp() - self.mock_run_commands = patch('ansible.modules.network.edgeos.edgeos_command.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestEdgeosCommandModule, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for item in commands: - try: - obj = json.loads(item) - command = obj['command'] - except (ValueError, TypeError): - command = item['command'] - filename = str(command).replace(' ', '_') - output.append(load_fixture(filename)) - return output - - self.run_commands.side_effect = load_from_file - - def test_edgeos_command_simple(self): - set_module_args(dict(commands=['show version'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 1) - self.assertTrue(result['stdout'][0].startswith('Version: v1.9.7')) - - def test_edgeos_command_multiple(self): - set_module_args(dict(commands=['show version', 'show version'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 2) - self.assertTrue(result['stdout'][0].startswith('Version: v1.9.7')) - - def test_edgeos_commond_wait_for(self): - wait_for = 'result[0] contains "Ubiquiti Networks"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module() - - def test_edgeos_command_wait_for_fails(self): - wait_for = 'result[0] contains "bad string"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 10) - - def test_edgeos_command_retries(self): - wait_for = 'result[0] contains "bad string"' - set_module_args(dict(commands=['show version'], wait_for=wait_for, retries=2)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 2) - - def test_edgeos_command_match_any(self): - wait_for = ['result[0] contains "Ubiquiti Networks"', - 'result[0] contains "bad string"'] - set_module_args(dict(commands=['show version'], wait_for=wait_for, match='any')) - self.execute_module() - - def test_edgeos_command_match_all(self): - wait_for = ['result[0] contains "Ubiquiti Networks"', - 'result[0] contains "EdgeRouter"'] - set_module_args(dict(commands=['show version'], wait_for=wait_for, match='all')) - self.execute_module() - - def test_vyos_command_match_all_failure(self): - wait_for = ['result[0] contains "Ubiquiti Networks"', - 'result[0] contains "bad string"'] - commands = ['show version', 'show version'] - set_module_args(dict(commands=commands, wait_for=wait_for, match='all')) - self.execute_module(failed=True) diff --git a/test/units/modules/network/edgeos/test_edgeos_config.py b/test/units/modules/network/edgeos/test_edgeos_config.py deleted file mode 100644 index dfd5771f13..0000000000 --- a/test/units/modules/network/edgeos/test_edgeos_config.py +++ /dev/null @@ -1,105 +0,0 @@ -# -# (c) 2018 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.edgeos import edgeos_config -from units.modules.utils import set_module_args -from .edgeos_module import TestEdgeosModule, load_fixture - - -class TestEdgeosConfigModule(TestEdgeosModule): - - module = edgeos_config - - def setUp(self): - super(TestEdgeosConfigModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.edgeos.edgeos_config.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch('ansible.modules.network.edgeos.edgeos_config.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_run_commands = patch('ansible.modules.network.edgeos.edgeos_config.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestEdgeosConfigModule, self).tearDown() - - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - config_file = 'edgeos_config_config.cfg' - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - - def test_edgeos_config_unchanged(self): - src = load_fixture('edgeos_config_config.cfg') - set_module_args(dict(src=src)) - self.execute_module() - - def test_edgeos_config_src(self): - src = load_fixture('edgeos_config_src.cfg') - set_module_args(dict(src=src)) - commands = ['set system host-name er01', 'delete interfaces ethernet eth0 address'] - self.execute_module(changed=True, commands=commands) - - def test_edgeos_config_src_brackets(self): - src = load_fixture('edgeos_config_src_brackets.cfg') - set_module_args(dict(src=src)) - commands = ['set interfaces ethernet eth0 address 10.10.10.10/24', 'set system host-name er01'] - self.execute_module(changed=True, commands=commands) - - def test_edgeos_config_backup(self): - set_module_args(dict(backup=True)) - result = self.execute_module() - self.assertIn('__backup__', result) - - def test_edgeos_config_lines(self): - commands = ['set system host-name er01'] - set_module_args(dict(lines=commands)) - self.execute_module(changed=True, commands=commands) - - def test_edgeos_config_config(self): - config = 'set system host-name localhost' - new_config = ['set system host-name er01'] - set_module_args(dict(lines=new_config, config=config)) - self.execute_module(changed=True, commands=new_config) - - def test_edgeos_config_match_none(self): - lines = ['set system interfaces ethernet eth0 address 1.2.3.4/24', - 'set system interfaces ethernet eth0 description Outside'] - set_module_args(dict(lines=lines, match='none')) - self.execute_module(changed=True, commands=lines, sort=False) - - def test_edgeos_config_single_quote_wrapped_values(self): - lines = ["set system interfaces ethernet eth0 description 'tests single quotes'"] - set_module_args(dict(lines=lines)) - commands = ["set system interfaces ethernet eth0 description 'tests single quotes'"] - self.execute_module(changed=True, commands=commands) - - def test_edgeos_config_single_quote_wrapped_values_failure(self): - lines = ["set system interfaces ethernet eth0 description 'test's single quotes'"] - set_module_args(dict(lines=lines)) - self.execute_module(failed=True) diff --git a/test/units/modules/network/edgeos/test_edgeos_facts.py b/test/units/modules/network/edgeos/test_edgeos_facts.py deleted file mode 100644 index 8bc0edb33e..0000000000 --- a/test/units/modules/network/edgeos/test_edgeos_facts.py +++ /dev/null @@ -1,86 +0,0 @@ -# (c) 2018 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json - -from units.compat.mock import patch -from ansible.modules.network.edgeos import edgeos_facts -from units.modules.utils import set_module_args -from .edgeos_module import TestEdgeosModule, load_fixture - - -class TestEdgeosFactsModule(TestEdgeosModule): - - module = edgeos_facts - - def setUp(self): - super(TestEdgeosFactsModule, self).setUp() - self.mock_run_commands = patch('ansible.modules.network.edgeos.edgeos_facts.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestEdgeosFactsModule, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for item in commands: - try: - obj = json.loads(item) - command = obj['command'] - except ValueError: - command = item - filename = str(command).replace(' ', '_') - output.append(load_fixture(filename)) - return output - - self.run_commands.side_effect = load_from_file - - def test_edgeos_facts_default(self): - set_module_args(dict(gather_subset='default')) - result = self.execute_module() - facts = result.get('ansible_facts') - self.assertEqual(len(facts), 5) - self.assertEqual(facts['ansible_net_hostname'].strip(), 'er01') - self.assertEqual(facts['ansible_net_version'], '1.9.7+hotfix.4') - - def test_edgeos_facts_not_all(self): - set_module_args(dict(gather_subset='!all')) - result = self.execute_module() - facts = result.get('ansible_facts') - self.assertEqual(len(facts), 5) - self.assertEqual(facts['ansible_net_hostname'].strip(), 'er01') - self.assertEqual(facts['ansible_net_version'], '1.9.7+hotfix.4') - - def test_edgeos_facts_exclude_most(self): - set_module_args(dict(gather_subset=['!neighbors', '!config'])) - result = self.execute_module() - facts = result.get('ansible_facts') - self.assertEqual(len(facts), 5) - self.assertEqual(facts['ansible_net_hostname'].strip(), 'er01') - self.assertEqual(facts['ansible_net_version'], '1.9.7+hotfix.4') - - def test_edgeos_facts_invalid_subset(self): - set_module_args(dict(gather_subset='cereal')) - result = self.execute_module(failed=True) diff --git a/test/units/modules/network/edgeswitch/edgeswitch_module.py b/test/units/modules/network/edgeswitch/edgeswitch_module.py deleted file mode 100644 index 37c8b8aa28..0000000000 --- a/test/units/modules/network/edgeswitch/edgeswitch_module.py +++ /dev/null @@ -1,86 +0,0 @@ -# (c) 2018 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json - -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase - - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(name): - path = os.path.join(fixture_path, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as f: - data = f.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class TestEdgeswitchModule(ModuleTestCase): - - def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False): - self.load_fixtures(commands) - - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - if commands is not None: - if sort: - self.assertEqual(sorted(commands), sorted(result['commands']), result['commands']) - else: - self.assertEqual(commands, result['commands'], result['commands']) - - return result - - def failed(self): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def changed(self, changed=False): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertEqual(result['changed'], changed, result) - return result - - def load_fixtures(self, commands=None): - pass diff --git a/test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_interfaces_description b/test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_interfaces_description deleted file mode 100644 index b6249b78e1..0000000000 --- a/test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_interfaces_description +++ /dev/null @@ -1,26 +0,0 @@ -Interface Admin Link Description ---------- --------- ------ ---------------------------------------------------------------- -0/1 Enable Up VMOTION ESX1 -0/2 Enable Up DATA ESX1 -0/3 Enable Up VMOTION ESX2 -0/4 Enable Up DATA ESX2 -0/5 Enable Up VMOTION ESX3 -0/6 Enable Up DATA ESX3 -0/7 Enable Up VMOTION ESX4 -0/8 Enable Up DATA ESX4 -0/9 Enable Up SAVE -0/10 Enable Down -0/11 Enable Down -0/12 Enable Down -0/13 Enable Down -0/14 Enable Down -0/15 Enable Up UPLINK VIDEO WITH A VERY LONG DESCRIPTION THAT HELPS NO ONE -0/16 Enable Up UPLINK LOCAL -3/1 Enable Down -3/2 Enable Down -3/3 Enable Down -3/4 Enable Down -3/5 Enable Down -3/6 Enable Down -4/1 Enable Up - diff --git a/test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_interfaces_status_all b/test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_interfaces_status_all deleted file mode 100644 index eeddc6ea3d..0000000000 --- a/test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_interfaces_status_all +++ /dev/null @@ -1,31 +0,0 @@ - Link Physical Physical Media Flow Control -Port Name State Mode Status Type Status ---------- ---------------------------- ------ ---------- ---------- ------------------ ------------ -0/1 VMOTION ESX1 Up Auto D 10G Full 2.5G-BaseFX Inactive -0/2 DATA ESX1 Up Auto D 10G Full 2.5G-BaseFX Inactive -0/3 VMOTION ESX2 Up Auto D 10G Full 2.5G-BaseFX Inactive -0/4 DATA ESX2 Up Auto D 10G Full 2.5G-BaseFX Inactive -0/5 VMOTION ESX3 Up Auto D 10G Full 2.5G-BaseFX Inactive -0/6 DATA ESX3 Up Auto D 10G Full 2.5G-BaseFX Inactive -0/7 VMOTION ESX4 Up Auto D 10G Full 2.5G-BaseFX Inactive -0/8 DATA ESX4 Up Auto D 10G Full 2.5G-BaseFX Inactive -0/9 SAVE Up Auto D 10G Full 2.5G-BaseFX Inactive -0/10 Down Auto D 2.5G-BaseFX Inactive -0/11 Down Auto D 2.5G-BaseFX Inactive -0/12 Down Auto D 2.5G-BaseFX Inactive -0/13 Down Auto D 2.5G-BaseFX Inactive -0/14 Down Auto Unknown Inactive -0/15 Down Auto Unknown Inactive -0/15 UPLINK VIDEO WITH A VERY LON Up Auto 1000 Full Unknown Inactive -0/16 UPLINK LOCAL Up Auto 1000 Full Unknown Inactive -3/1 Down -3/2 Down -3/3 Down -3/4 Down -3/5 Down -3/6 Down -4/1 Up 10 Half 10 Half - -Flow Control:Disabled - - diff --git a/test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_sysinfo b/test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_sysinfo deleted file mode 100644 index c51f2eee72..0000000000 --- a/test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_sysinfo +++ /dev/null @@ -1,7 +0,0 @@ -System Description............................. EdgeSwitch 16-Port 10G, 1.7.4.5075842, Linux 3.6.5, 1.0.0.4872137 -System Name.................................... sw_test_1 -System Location................................ -System Contact................................. -System Object ID............................... 1.3.6.1.4.1.4413 -System Up Time................................. 174 days 19 hrs 0 mins 51 secs -Current SNTP Synchronized Time................. Oct 20 22:53:01 2018 UTC diff --git a/test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_version b/test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_version deleted file mode 100644 index 334abc75f2..0000000000 --- a/test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_version +++ /dev/null @@ -1,8 +0,0 @@ -Switch: 1 - -System Description............................. EdgeSwitch 16-Port 10G, 1.7.4.5075842, Linux 3.6.5, 1.0.0.4872137 -Machine Type................................... EdgeSwitch 16-Port 10G -Machine Model.................................. ES-16-XG -Serial Number.................................. F09FC2EFD310 -Burned In MAC Address.......................... F0:9F:C2:EF:D3:10 -Software Version............................... 1.7.4.5075842 diff --git a/test/units/modules/network/edgeswitch/fixtures/edgeswitch_vlan_show_interfaces_switchport b/test/units/modules/network/edgeswitch/fixtures/edgeswitch_vlan_show_interfaces_switchport deleted file mode 100644 index dbf5a0fc9f..0000000000 --- a/test/units/modules/network/edgeswitch/fixtures/edgeswitch_vlan_show_interfaces_switchport +++ /dev/null @@ -1,239 +0,0 @@ -Port: 0/1 -VLAN Membership Mode: General -Access Mode VLAN: 1 (default) -General Mode PVID: 1 (default) -General Mode Ingress Filtering: Disabled -General Mode Acceptable Frame Type: Admit all -General Mode Dynamically Added VLANs: -General Mode Untagged VLANs: 1 -General Mode Tagged VLANs: 100 -General Mode Forbidden VLANs: -Trunking Mode Native VLAN: 1 (default) -Trunking Mode Native VLAN tagging: Disable -Trunking Mode VLANs Enabled: All -Protected Port: False - -Port: 0/2 -VLAN Membership Mode: General -Access Mode VLAN: 1 (default) -General Mode PVID: 1 (default) -General Mode Ingress Filtering: Disabled -General Mode Acceptable Frame Type: Admit all -General Mode Dynamically Added VLANs: -General Mode Untagged VLANs: 1 -General Mode Tagged VLANs: 100 -General Mode Forbidden VLANs: -Trunking Mode Native VLAN: 1 (default) -Trunking Mode Native VLAN tagging: Disable -Trunking Mode VLANs Enabled: All -Protected Port: False - -Port: 0/3 -VLAN Membership Mode: General -Access Mode VLAN: 1 (default) -General Mode PVID: 1 (default) -General Mode Ingress Filtering: Disabled -General Mode Acceptable Frame Type: Admit all -General Mode Dynamically Added VLANs: -General Mode Untagged VLANs: -General Mode Tagged VLANs: 100 -General Mode Forbidden VLANs: 1 -Trunking Mode Native VLAN: 1 (default) -Trunking Mode Native VLAN tagging: Disable -Trunking Mode VLANs Enabled: All -Protected Port: False - -Port: 0/4 -VLAN Membership Mode: General -Access Mode VLAN: 1 (default) -General Mode PVID: 1 (default) -General Mode Ingress Filtering: Disabled -General Mode Acceptable Frame Type: Admit all -General Mode Dynamically Added VLANs: -General Mode Untagged VLANs: -General Mode Tagged VLANs: 100 -General Mode Forbidden VLANs: 1 -Trunking Mode Native VLAN: 1 (default) -Trunking Mode Native VLAN tagging: Disable -Trunking Mode VLANs Enabled: All -Protected Port: False - -Port: 0/5 -VLAN Membership Mode: General -Access Mode VLAN: 1 (default) -General Mode PVID: 100 -General Mode Ingress Filtering: Disabled -General Mode Acceptable Frame Type: Admit all -General Mode Dynamically Added VLANs: -General Mode Untagged VLANs: 100 -General Mode Tagged VLANs: -General Mode Forbidden VLANs: -Trunking Mode Native VLAN: 1 (default) -Trunking Mode Native VLAN tagging: Disable -Trunking Mode VLANs Enabled: All -Protected Port: False - -Port: 0/6 -VLAN Membership Mode: General -Access Mode VLAN: 1 (default) -General Mode PVID: 1 (default) -General Mode Ingress Filtering: Disabled -General Mode Acceptable Frame Type: Admit all -General Mode Dynamically Added VLANs: -General Mode Untagged VLANs: 1 -General Mode Tagged VLANs: -General Mode Forbidden VLANs: -Trunking Mode Native VLAN: 1 (default) -Trunking Mode Native VLAN tagging: Disable -Trunking Mode VLANs Enabled: All -Protected Port: False - -Port: 0/7 -VLAN Membership Mode: General -Access Mode VLAN: 1 (default) -General Mode PVID: 1 (default) -General Mode Ingress Filtering: Disabled -General Mode Acceptable Frame Type: Admit all -General Mode Dynamically Added VLANs: -General Mode Untagged VLANs: 1 -General Mode Tagged VLANs: -General Mode Forbidden VLANs: -Trunking Mode Native VLAN: 1 (default) -Trunking Mode Native VLAN tagging: Disable -Trunking Mode VLANs Enabled: All -Protected Port: False - -Port: 0/8 -VLAN Membership Mode: General -Access Mode VLAN: 1 (default) -General Mode PVID: 1 (default) -General Mode Ingress Filtering: Disabled -General Mode Acceptable Frame Type: Admit all -General Mode Dynamically Added VLANs: -General Mode Untagged VLANs: 1 -General Mode Tagged VLANs: -General Mode Forbidden VLANs: -Trunking Mode Native VLAN: 1 (default) -Trunking Mode Native VLAN tagging: Disable -Trunking Mode VLANs Enabled: All -Protected Port: False - -Port: 0/9 -VLAN Membership Mode: General -Access Mode VLAN: 1 (default) -General Mode PVID: 1 (default) -General Mode Ingress Filtering: Disabled -General Mode Acceptable Frame Type: Admit all -General Mode Dynamically Added VLANs: -General Mode Untagged VLANs: 1 -General Mode Tagged VLANs: 100 -General Mode Forbidden VLANs: -Trunking Mode Native VLAN: 1 (default) -Trunking Mode Native VLAN tagging: Disable -Trunking Mode VLANs Enabled: All -Protected Port: False - -Port: 0/10 -VLAN Membership Mode: General -Access Mode VLAN: 1 (default) -General Mode PVID: 1 (default) -General Mode Ingress Filtering: Disabled -General Mode Acceptable Frame Type: Admit all -General Mode Dynamically Added VLANs: -General Mode Untagged VLANs: 1 -General Mode Tagged VLANs: 100 -General Mode Forbidden VLANs: -Trunking Mode Native VLAN: 1 (default) -Trunking Mode Native VLAN tagging: Disable -Trunking Mode VLANs Enabled: All -Protected Port: False - -Port: 3/1 -VLAN Membership Mode: General -Access Mode VLAN: 1 (default) -General Mode PVID: 1 (default) -General Mode Ingress Filtering: Disabled -General Mode Acceptable Frame Type: Admit all -General Mode Dynamically Added VLANs: -General Mode Untagged VLANs: 1 -General Mode Tagged VLANs: 100 -General Mode Forbidden VLANs: -Trunking Mode Native VLAN: 1 (default) -Trunking Mode Native VLAN tagging: Disable -Trunking Mode VLANs Enabled: All -Protected Port: False - -Port: 3/2 -VLAN Membership Mode: General -Access Mode VLAN: 1 (default) -General Mode PVID: 1 (default) -General Mode Ingress Filtering: Disabled -General Mode Acceptable Frame Type: Admit all -General Mode Dynamically Added VLANs: -General Mode Untagged VLANs: 1 -General Mode Tagged VLANs: 100 -General Mode Forbidden VLANs: -Trunking Mode Native VLAN: 1 (default) -Trunking Mode Native VLAN tagging: Disable -Trunking Mode VLANs Enabled: All -Protected Port: False - -Port: 3/3 -VLAN Membership Mode: General -Access Mode VLAN: 1 (default) -General Mode PVID: 1 (default) -General Mode Ingress Filtering: Disabled -General Mode Acceptable Frame Type: Admit all -General Mode Dynamically Added VLANs: -General Mode Untagged VLANs: 1 -General Mode Tagged VLANs: 100 -General Mode Forbidden VLANs: -Trunking Mode Native VLAN: 1 (default) -Trunking Mode Native VLAN tagging: Disable -Trunking Mode VLANs Enabled: All -Protected Port: False - -Port: 3/4 -VLAN Membership Mode: General -Access Mode VLAN: 1 (default) -General Mode PVID: 1 (default) -General Mode Ingress Filtering: Disabled -General Mode Acceptable Frame Type: Admit all -General Mode Dynamically Added VLANs: -General Mode Untagged VLANs: 1 -General Mode Tagged VLANs: 100 -General Mode Forbidden VLANs: -Trunking Mode Native VLAN: 1 (default) -Trunking Mode Native VLAN tagging: Disable -Trunking Mode VLANs Enabled: All -Protected Port: False - -Port: 3/5 -VLAN Membership Mode: General -Access Mode VLAN: 1 (default) -General Mode PVID: 1 (default) -General Mode Ingress Filtering: Disabled -General Mode Acceptable Frame Type: Admit all -General Mode Dynamically Added VLANs: -General Mode Untagged VLANs: 1 -General Mode Tagged VLANs: 100 -General Mode Forbidden VLANs: -Trunking Mode Native VLAN: 1 (default) -Trunking Mode Native VLAN tagging: Disable -Trunking Mode VLANs Enabled: All -Protected Port: False - -Port: 3/6 -VLAN Membership Mode: General -Access Mode VLAN: 1 (default) -General Mode PVID: 1 (default) -General Mode Ingress Filtering: Disabled -General Mode Acceptable Frame Type: Admit all -General Mode Dynamically Added VLANs: -General Mode Untagged VLANs: 1 -General Mode Tagged VLANs: 100 -General Mode Forbidden VLANs: -Trunking Mode Native VLAN: 1 (default) -Trunking Mode Native VLAN tagging: Disable -Trunking Mode VLANs Enabled: All -Protected Port: False diff --git a/test/units/modules/network/edgeswitch/fixtures/edgeswitch_vlan_show_vlan_brief b/test/units/modules/network/edgeswitch/fixtures/edgeswitch_vlan_show_vlan_brief deleted file mode 100644 index 36e46bac99..0000000000 --- a/test/units/modules/network/edgeswitch/fixtures/edgeswitch_vlan_show_vlan_brief +++ /dev/null @@ -1,4 +0,0 @@ -VLAN ID VLAN Name VLAN Type -------- -------------------------------- ------------------- -1 default Default -100 voice Static diff --git a/test/units/modules/network/edgeswitch/test_edgeswitch_facts.py b/test/units/modules/network/edgeswitch/test_edgeswitch_facts.py deleted file mode 100644 index 91dacc0eee..0000000000 --- a/test/units/modules/network/edgeswitch/test_edgeswitch_facts.py +++ /dev/null @@ -1,71 +0,0 @@ -# (c) 2018 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.edgeswitch import edgeswitch_facts -from units.modules.utils import set_module_args -from .edgeswitch_module import TestEdgeswitchModule, load_fixture - - -class TestEdgeswitchFactsModule(TestEdgeswitchModule): - - module = edgeswitch_facts - - def setUp(self): - super(TestEdgeswitchFactsModule, self).setUp() - self.mock_run_commands = patch('ansible.modules.network.edgeswitch.edgeswitch_facts.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestEdgeswitchFactsModule, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - def load_from_file(*args, **kwargs): - module = args - commands = kwargs['commands'] - output = list() - - for command in commands: - filename = str(command).split(' | ')[0].replace(' ', '_') - output.append(load_fixture('edgeswitch_facts_%s' % filename)) - return output - - self.run_commands.side_effect = load_from_file - - def test_edgeswitch_facts_default(self): - set_module_args(dict(gather_subset=['all', '!interfaces', '!config'])) - result = self.execute_module() - facts = result.get('ansible_facts') - self.assertEqual(len(facts), 5) - self.assertEqual(facts['ansible_net_hostname'], 'sw_test_1') - self.assertEqual(facts['ansible_net_serialnum'], 'F09FC2EFD310') - self.assertEqual(facts['ansible_net_version'], '1.7.4.5075842') - - def test_edgeswitch_facts_interfaces(self): - set_module_args(dict(gather_subset='interfaces')) - result = self.execute_module() - facts = result.get('ansible_facts') - self.assertEqual(len(facts), 6) - self.assertEqual(facts['ansible_net_interfaces']['0/1']['operstatus'], 'Enable') - self.assertEqual(facts['ansible_net_interfaces']['0/2']['mediatype'], '2.5G-BaseFX') - self.assertEqual(facts['ansible_net_interfaces']['0/3']['physicalstatus'], '10G Full') - self.assertEqual(facts['ansible_net_interfaces']['0/4']['lineprotocol'], 'Up') - self.assertEqual(facts['ansible_net_interfaces']['0/15']['description'], 'UPLINK VIDEO WITH A VERY LONG DESCRIPTION THAT HELPS NO ONE') diff --git a/test/units/modules/network/edgeswitch/test_edgeswitch_vlan.py b/test/units/modules/network/edgeswitch/test_edgeswitch_vlan.py deleted file mode 100644 index 4328efcd18..0000000000 --- a/test/units/modules/network/edgeswitch/test_edgeswitch_vlan.py +++ /dev/null @@ -1,152 +0,0 @@ -# (c) 2018 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.edgeswitch import edgeswitch_vlan -from ansible.modules.network.edgeswitch.edgeswitch_vlan import parse_vlan_brief, parse_interfaces_switchport -from units.modules.utils import set_module_args -from .edgeswitch_module import TestEdgeswitchModule, load_fixture - - -class TestEdgeswitchVlanModule(TestEdgeswitchModule): - - module = edgeswitch_vlan - - def setUp(self): - super(TestEdgeswitchVlanModule, self).setUp() - - self.mock_run_commands = patch('ansible.modules.network.edgeswitch.edgeswitch_vlan.run_commands') - self.run_commands = self.mock_run_commands.start() - - self.mock_load_config = patch('ansible.modules.network.edgeswitch.edgeswitch_vlan.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestEdgeswitchVlanModule, self).tearDown() - self.mock_run_commands.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None): - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for command in commands: - if command.startswith('vlan ') or command == 'exit': - output.append('') - else: - filename = str(command).split(' | ')[0].replace(' ', '_') - output.append(load_fixture('edgeswitch_vlan_%s' % filename)) - return output - - self.run_commands.side_effect = load_from_file - self.load_config.return_value = {} - - def test_edgeswitch_vlan_create(self): - set_module_args({'vlan_id': '200', 'name': 'video', 'state': 'present'}) - result = self.execute_module(changed=True) - expected_commands = [ - 'vlan database', - 'vlan 200', - 'vlan name 200 \"video\"', - 'exit' - ] - self.assertEqual(result['commands'], expected_commands) - - def test_edgeswitch_vlan_id_startwith_100(self): - set_module_args({'vlan_id': '100', 'name': 'voice', 'state': 'present'}) - result = self.execute_module(changed=False) - expected_commands = [] - self.assertEqual(result['commands'], expected_commands) - - def test_edgeswitch_vlan_rename(self): - set_module_args({'vlan_id': '100', 'name': 'video', 'state': 'present'}) - result = self.execute_module(changed=True) - expected_commands = [ - 'vlan database', - 'vlan name 100 \"video\"', - 'exit' - ] - self.assertEqual(result['commands'], expected_commands) - - def test_edgeswitch_vlan_with_interfaces_range(self): - set_module_args({'vlan_id': '100', 'name': 'voice', 'state': 'present', 'tagged_interfaces': ['0/6-0/8']}) - result = self.execute_module(changed=True) - expected_commands = [ - 'interface 0/6-0/8', - 'vlan participation include 100', - 'vlan tagging 100', - ] - self.assertEqual(result['commands'], expected_commands) - - def test_edgeswitch_vlan_with_interfaces_and_newvlan(self): - set_module_args({'vlan_id': '3', 'name': 'vlan3', 'state': 'present', 'untagged_interfaces': ['0/8', '0/7']}) - result = self.execute_module(changed=True) - expected_commands = [ - 'vlan database', - 'vlan 3', - 'vlan name 3 \"vlan3\"', - 'exit', - 'interface 0/7-0/8', - 'vlan participation include 3', - 'vlan pvid 3', - ] - self.assertEqual(result['commands'], expected_commands) - - def test_parse_interfaces_switchport(self): - result = parse_interfaces_switchport(load_fixture('edgeswitch_vlan_show_interfaces_switchport')) - i1 = { - 'interface': '0/1', - 'pvid_mode': '1', - 'untagged_vlans': ['1'], - 'tagged_vlans': ['100'], - 'forbidden_vlans': [''], - } - i3 = { - 'interface': '0/3', - 'pvid_mode': '1', - 'untagged_vlans': [''], - 'tagged_vlans': ['100'], - 'forbidden_vlans': ['1'], - } - i5 = { - 'interface': '0/5', - 'pvid_mode': '100', - 'untagged_vlans': ['100'], - 'tagged_vlans': [''], - 'forbidden_vlans': [''], - } - self.assertEqual(result['0/1'], i1) - self.assertEqual(result['0/3'], i3) - self.assertEqual(result['0/5'], i5) - - def test_parse_vlan_brief(self): - result = parse_vlan_brief(load_fixture('edgeswitch_vlan_show_vlan_brief')) - obj = [ - { - 'vlan_id': '1', - 'name': 'default' - }, - { - 'vlan_id': '100', - 'name': 'voice' - } - ] - self.assertEqual(result, obj) diff --git a/test/units/modules/network/enos/enos_module.py b/test/units/modules/network/enos/enos_module.py deleted file mode 100644 index 0a2b57fd04..0000000000 --- a/test/units/modules/network/enos/enos_module.py +++ /dev/null @@ -1,119 +0,0 @@ -# Copyright (C) 2017 Lenovo, Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json - -from units.compat import unittest -from units.compat.mock import patch -from ansible.module_utils import basic - - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(name): - path = os.path.join(fixture_path, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as f: - data = f.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class AnsibleExitJson(Exception): - pass - - -class AnsibleFailJson(Exception): - pass - - -class TestEnosModule(unittest.TestCase): - - def setUp(self): - self.mock_sleep = patch('time.sleep') - self.mock_sleep.start() - - def tearDown(self): - self.mock_sleep.stop() - - def execute_module(self, failed=False, changed=False, commands=None, - sort=True, defaults=False): - - self.load_fixtures(commands) - - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - if commands is not None: - if sort: - self.assertEqual(sorted(commands), sorted(result['commands']), - result['commands']) - else: - self.assertEqual(commands, result['commands'], - result['commands']) - - return result - - def failed(self): - def fail_json(*args, **kwargs): - kwargs['failed'] = True - raise AnsibleFailJson(kwargs) - - with patch.object(basic.AnsibleModule, 'fail_json', fail_json): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def changed(self, changed=False): - def exit_json(*args, **kwargs): - if 'changed' not in kwargs: - kwargs['changed'] = False - raise AnsibleExitJson(kwargs) - - with patch.object(basic.AnsibleModule, 'exit_json', exit_json): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertEqual(result['changed'], changed, result) - return result - - def load_fixtures(self, commands=None): - pass diff --git a/test/units/modules/network/enos/fixtures/enos_config_config.cfg b/test/units/modules/network/enos/fixtures/enos_config_config.cfg deleted file mode 100644 index 27b5b73cc1..0000000000 --- a/test/units/modules/network/enos/fixtures/enos_config_config.cfg +++ /dev/null @@ -1,47 +0,0 @@ -Current configuration: -! -version "8.4.3.12" -switch-type "Lenovo RackSwitch G8272" -iscli-new -! -! -access https enable - -snmp-server location "Location:,Room:,Rack:Rack 3,LRU:40" -snmp-server read-community "public" -snmp-server trap-source 128 -! -! -! -no system dhcp -no system default-ip mgt -hostname router -! -! -! -!interface ip 1 -! addr <default> -! enable -! -interface ip 13 - ip address 1.2.3.4 255.255.255.0 - enable - exit -! -interface ip 128 - ip address 10.241.105.24 255.255.255.0 - enable - exit -! -ip gateway 4 address 10.241.105.1 -ip gateway 4 enable -! -! -! -! -router bgp - as 100 -! -! -end - diff --git a/test/units/modules/network/enos/fixtures/enos_config_src.cfg b/test/units/modules/network/enos/fixtures/enos_config_src.cfg deleted file mode 100644 index f681655be7..0000000000 --- a/test/units/modules/network/enos/fixtures/enos_config_src.cfg +++ /dev/null @@ -1,6 +0,0 @@ -! -hostname foo -! -interface ip 13 - no ip ospf enable -! diff --git a/test/units/modules/network/enos/fixtures/show_interface_ip b/test/units/modules/network/enos/fixtures/show_interface_ip deleted file mode 100644 index 263a861f57..0000000000 --- a/test/units/modules/network/enos/fixtures/show_interface_ip +++ /dev/null @@ -1,9 +0,0 @@ -Interface information: -1: IP4 192.168.49.50 255.255.255.0 192.168.49.255, vlan 1, up -128: IP4 10.241.105.24 255.255.255.0 10.241.105.255, vlan 4095, up - -Routed Port Interface Information: - -Loopback interface information: - - diff --git a/test/units/modules/network/enos/fixtures/show_interface_status b/test/units/modules/network/enos/fixtures/show_interface_status deleted file mode 100644 index 52b37eb184..0000000000 --- a/test/units/modules/network/enos/fixtures/show_interface_status +++ /dev/null @@ -1,59 +0,0 @@ ------------------------------------------------------------------------ -Port Speed Duplex Flow Ctrl Link Description -------- ------ -------- --TX-----RX-- ------ ------------- -1 1G/10G full no no down 1 -2 1G/10G full no no down 2 -3 1G/10G full no no down 3 -4 1G/10G full no no down 4 -5 1G/10G full no no down 5 -6 1G/10G full no no down 6 -7 1G/10G full no no down 7 -8 1G/10G full no no down 8 -9 1G/10G full no no down 9 -10 1G/10G full no no down 10 -11 1G/10G full no no down 11 -12 1G/10G full no no down 12 -13 1G/10G full no no down 13 -14 1G/10G full no no down 14 -15 1G/10G full no no down 15 -16 1G/10G full no no down 16 -17 1G/10G full no no down 17 -18 1G/10G full no no down 18 -19 1G/10G full no no down 19 -20 1G/10G full no no down 20 -21 1G/10G full no no down 21 -22 1G/10G full no no down 22 -23 1G/10G full no no down 23 -24 1G/10G full no no down 24 -25 1G/10G full no no down 25 -26 1G/10G full no no down 26 -27 1G/10G full no no down 27 -28 1G/10G full no no down 28 -29 1G/10G full no no down 29 -30 1G/10G full no no down 30 -31 1G/10G full no no down 31 -32 1G/10G full no no down 32 -33 1G/10G full no no down 33 -34 1G/10G full no no down 34 -35 1G/10G full no no down 35 -36 1G/10G full no no down 36 -37 1G/10G full no no down 37 -38 1000 full no no up 38 -39 1G/10G full no no down 39 -40 1G/10G full no no down 40 -41 1G/10G full no no down 41 -42 1G/10G full no no down 42 -43 1G/10G full no no down 43 -44 1G/10G full no no down 44 -45 1G/10G full no no down 45 -46 1G/10G full no no down 46 -47 1G/10G full no no down 47 -48 10000 full no no down 48 -49 40000 full no no down 49 -50 40000 full no no down 50 -51 40000 full no no down 51 -52 40000 full no no down 52 -53 40000 full no no down 53 -54 40000 full no no down 54 -MGT 1000 full yes yes up MGT - diff --git a/test/units/modules/network/enos/fixtures/show_lldp_port b/test/units/modules/network/enos/fixtures/show_lldp_port deleted file mode 100644 index fcefdf03bd..0000000000 --- a/test/units/modules/network/enos/fixtures/show_lldp_port +++ /dev/null @@ -1,60 +0,0 @@ -LLDP Port Info -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Port MAC address MTU PortEnabled AdminStatus RxChange TrapNotify -======= ================= ==== =========== =========== ======== ========== -1 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -2 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -3 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -4 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -5 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -6 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -7 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -8 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -9 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -10 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -11 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -12 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -13 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -14 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -15 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -16 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -17 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -18 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -19 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -20 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -21 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -22 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -23 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -24 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -25 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -26 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -27 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -28 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -29 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -30 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -31 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -32 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -33 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -34 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -35 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -36 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -37 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -38 a8:97:dc:dd:e2:00 9216 enabled tx_rx no disabled -39 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -40 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -41 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -42 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -43 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -44 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -45 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -46 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -47 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -48 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -49 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -50 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -51 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -52 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -53 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -54 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled -MGT a8:97:dc:dd:e2:fe 9216 enabled tx_rx no disabled - diff --git a/test/units/modules/network/enos/fixtures/show_lldp_remote-device_port b/test/units/modules/network/enos/fixtures/show_lldp_remote-device_port deleted file mode 100644 index 1381c099dc..0000000000 --- a/test/units/modules/network/enos/fixtures/show_lldp_remote-device_port +++ /dev/null @@ -1,12 +0,0 @@ -LLDP Remote Devices Information -Legend(possible values in DMAC column) : -NB - Nearest Bridge - 01-80-C2-00-00-0E -NnTB - Nearest non-TPMR Bridge - 01-80-C2-00-00-03 -NCB - Nearest Customer Bridge - 01-80-C2-00-00-00 -Total number of current entries: 1 - -LocalPort | Index | Remote Chassis ID | Remote Port | Remote System Name | DMAC -----------|-------|---------------------------|----------------------|-------------------------------|--------- -MGT | 1 | 74 26 ac 3d 3c c0 | Gi3/18 | INDIA-LAB-1-C4506E-A.labs.l...| NB - - diff --git a/test/units/modules/network/enos/fixtures/show_run b/test/units/modules/network/enos/fixtures/show_run deleted file mode 100644 index 4d918dfe00..0000000000 --- a/test/units/modules/network/enos/fixtures/show_run +++ /dev/null @@ -1,59 +0,0 @@ -Current configuration: -! -version "8.4.3.12" -switch-type "Lenovo RackSwitch G8272" -iscli-new -! -! -access https enable - -snmp-server location "Location:,Room:,Rack:Rack 3,LRU:40" -snmp-server read-community "public" -snmp-server trap-source 128 -! -! -! -no system dhcp -no system default-ip mgt -hostname "test1" -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -!interface ip 1 -! addr <default> -! enable -! -interface ip 128 - ip address 10.241.105.24 255.255.255.0 - enable - exit -! -ip gateway 4 address 10.241.105.1 -ip gateway 4 enable -! -! -! -! -! -! -router bgp - as 100 -! -! -end - diff --git a/test/units/modules/network/enos/fixtures/show_running-config b/test/units/modules/network/enos/fixtures/show_running-config deleted file mode 100644 index 4d918dfe00..0000000000 --- a/test/units/modules/network/enos/fixtures/show_running-config +++ /dev/null @@ -1,59 +0,0 @@ -Current configuration: -! -version "8.4.3.12" -switch-type "Lenovo RackSwitch G8272" -iscli-new -! -! -access https enable - -snmp-server location "Location:,Room:,Rack:Rack 3,LRU:40" -snmp-server read-community "public" -snmp-server trap-source 128 -! -! -! -no system dhcp -no system default-ip mgt -hostname "test1" -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -!interface ip 1 -! addr <default> -! enable -! -interface ip 128 - ip address 10.241.105.24 255.255.255.0 - enable - exit -! -ip gateway 4 address 10.241.105.1 -ip gateway 4 enable -! -! -! -! -! -! -router bgp - as 100 -! -! -end - diff --git a/test/units/modules/network/enos/fixtures/show_system_memory b/test/units/modules/network/enos/fixtures/show_system_memory deleted file mode 100644 index 0a0625eb16..0000000000 --- a/test/units/modules/network/enos/fixtures/show_system_memory +++ /dev/null @@ -1,166 +0,0 @@ ------------------------------------------------------------------- - -Memory utilization: -MemTotal: 4088580 kB -MemFree: 3464304 kB -MemAvailable: 3586864 kB -Buffers: 2016 kB -Cached: 173236 kB -SwapCached: 0 kB -Active: 504316 kB -Inactive: 38056 kB -Active(anon): 376332 kB -Inactive(anon): 27460 kB -Active(file): 127984 kB -Inactive(file): 10596 kB -Unevictable: 0 kB -Mlocked: 0 kB -HighTotal: 3407860 kB -HighFree: 2952904 kB -LowTotal: 680720 kB -LowFree: 511400 kB -SwapTotal: 0 kB -SwapFree: 0 kB -Dirty: 0 kB -Writeback: 0 kB -AnonPages: 367120 kB -Mapped: 20664 kB -Shmem: 36672 kB -Slab: 8240 kB -SReclaimable: 3492 kB -SUnreclaim: 4748 kB -KernelStack: 760 kB -PageTables: 1592 kB -NFS_Unstable: 0 kB -Bounce: 0 kB -WritebackTmp: 0 kB -CommitLimit: 2044288 kB -Committed_AS: 1128364 kB -VmallocTotal: 241652 kB -VmallocUsed: 17116 kB -VmallocChunk: 223920 kB -HugePages_Total: 0 -HugePages_Free: 0 -HugePagesPercentage used 15 - -Memory tracing: enabled -Extended Memory tracing: disabled -High-water monitoring: enabled - -Memory high-water: 20 percent (at 1818 seconds from boot) - -Memory stats: - allocs: 16484474 - frees: 16481108 - current: 3378 - alloc fails: 0 - -STEM thread memory stats: - thid name allocs frees diff current * largest - 0 INIT 2655 933 1722 69381079 31982881 - 1 STEM 0 0 0 0 0 - 2 STP 13 6 7 41165721 16673868 - 3 MFDB 1 0 1 6 6 - 4 TND 41745 42134 -389 847441 336 - 5 CONS 3867 3866 1 26622356 6291456 - 6 TNET 3806775 3809157 -2382 1032303745 12582912 - 7 TNET 126519 127060 -541 269598653 12582912 - 8 TNET 1 0 1 6131 6131 - 9 TNET 1 0 1 6131 6131 - 10 TNET 1 0 1 6131 6131 - 11 TNET 1 0 1 6131 6131 - 12 LOG 441 441 0 61437 272 - 13 TRAP 16911 16911 0 1416745 544 - 14 NTP 0 0 0 0 0 - 15 RMON 0 0 0 0 0 - 18 IP 40 7 33 26152 4248 - 19 RIP 0 0 0 0 0 - 20 AGR 24643 23177 1466 8949189 6131 - 21 EPI 0 0 0 0 0 - 22 PORT 56 0 56 60032 16384 - 23 BGP 0 10 -10 0 0 - 27 MGMT 335 162 173 48883648 524436 - 28 SCAN 0 0 0 0 0 - 29 OSPF 0 20 -20 0 0 - 30 VRRP 1 0 1 16 16 - 31 SNMP 4670978 4670164 814 2315549793 12582912 - 32 SNMP 1108 1068 40 208175203 12582912 - 34 SSHD 800286 796910 3376 271976834 2017 - 36 DT1X 0 0 0 0 0 - 37 NCFD 1 0 1 6131 6131 - 38 NCFD 1 0 1 6131 6131 - 39 NCFD 1 0 1 6131 6131 - 40 NCFD 1 0 1 6131 6131 - 41 SWR 0 0 0 0 0 - 42 SWRH 0 0 0 0 0 - 43 OBS 0 0 0 0 0 - 44 TEAM 0 0 0 0 0 - 45 I2C 0 0 0 0 0 - 46 LACP 72 0 72 1152 16 - 47 SFP 0 0 0 0 0 - 48 SWKY 0 0 0 0 0 - 49 HLNK 0 0 0 0 0 - 50 LLDP 5794454 5794373 81 598072737 14336 - 51 IPV6 0 0 0 0 0 - 52 RTM6 0 0 0 0 0 - 53 PNG6 0 0 0 0 0 - 55 OSP3 0 0 0 0 0 - 56 VMAC 0 0 0 0 0 - 57 MEMM 0 0 0 0 0 - 58 UDLD 0 0 0 0 0 - 59 FCOE 0 0 0 0 0 - 60 SFLO 0 0 0 0 0 - 61 PROX 0 0 0 0 0 - 62 OAM 0 0 0 0 0 - 63 PIM 0 0 0 0 0 - 64 DCBX 1 1 0 126 126 - 65 NBOO 1 0 1 6131 6131 - 66 VLAG 0 0 0 0 0 - 67 MLD6 0 0 0 0 0 - 68 DHCP 0 0 0 0 0 - 69 ETMR 0 0 0 0 0 - 70 IKE2 0 0 0 0 0 - 71 ACLG 1 0 1 5120 5120 - 72 HWRT 0 0 0 0 0 - 73 OFLO 17 0 17 32244 8048 - 74 SFM 0 0 0 0 0 - 75 UPTM 0 0 0 0 0 - 76 VSDB 0 2 -2 0 0 - 77 ECPT 3 0 3 168532 168000 - 78 ECPR 0 0 0 0 0 - 79 VDPT 5 0 5 5260 1460 - 80 VFDB 0 1 -1 0 0 - 81 PTP 0 0 0 0 0 - 82 PBR 0 0 0 0 0 - 83 HIST 0 0 0 0 0 - 84 SLP 699757 701435 -1678 254297215 262140 - 85 UFP 217 73 144 12908 132 - 86 CDCP 0 0 0 0 0 - 87 IGMP 0 0 0 0 0 - 88 ICMP 0 0 0 0 0 - 89 HCM 0 0 0 0 0 - 90 CFCF 0 0 0 0 0 - 91 FDF@ 0 0 0 0 0 - 92 NAT 0 0 0 0 0 - 93 OCM1 11 0 11 44 4 - 94 OCM2 0 0 0 0 0 - 95 OFDT 0 0 0 0 0 - 96 OSFM 5 0 5 2636 1024 - 97 OBSC 0 0 0 0 0 - 98 STPM 0 0 0 0 0 - 99 ARP 0 0 0 0 0 - 100 VXLN 0 0 0 0 0 - 101 OVSD 0 0 0 0 0 - 102 OVSC 0 0 0 0 0 - 103 VTEP 0 0 0 0 0 - 104 BFD 18 0 18 440 44 - 105 STPR 0 0 0 0 0 - 106 VMFD 0 0 0 0 0 - 107 NORM 0 0 0 0 0 - 108 DONE 494136 493788 348 280129530 6291456 - Total 16485149 16481768 3381 1132837544 - - Non-STEM allocs 0 - Non-STEM frees 2 - Overhead 1780 - diff --git a/test/units/modules/network/enos/fixtures/show_version b/test/units/modules/network/enos/fixtures/show_version deleted file mode 100644 index a0f52b5731..0000000000 --- a/test/units/modules/network/enos/fixtures/show_version +++ /dev/null @@ -1,60 +0,0 @@ -System Information at 11:37:06 Fri Oct 27, 2017 -Time zone: No timezone configured -Daylight Savings Time Status: Disabled - -Lenovo RackSwitch G8272 - -Switch has been up for 30 days, 10 hours, 43 minutes and 14 seconds. -Last boot: 00:53:32 Wed Sep 27, 2017 (power cycle) - -MAC address: a8:97:dc:dd:e2:00 IP (If 1) address: 192.168.49.50 -Management Port MAC Address: a8:97:dc:dd:e2:fe -Management Port IP Address (if 128): 10.241.105.24 -Hardware Revision: 0 -Board Revision: -Hardware Part No: 00CJ066 -Old Hardware Part No: 2MV4CR01W -Switch Serial No: Y052MV4CR01W -Manufacturing date: 14/51 - -MTM Value: 7159-HCV -Old MTM Value: -ESN: MM01086 - - -WARNING: This is UNRELEASED SOFTWARE for LAB TESTING ONLY. - DO NOT USE IN A PRODUCTION NETWORK. - - -Software Version 8.4.3.12 (FLASH image1), active configuration. -Boot kernel version 8.4.3.12 - -USB Boot: disabled - - - -Temperature CPU Local : 31 C -Temperature Ambient : 32 C -Temperature Hot Spot : 44 C -Temperature Asic Max : 63 C - -System Warning at 85 C / Shutdown at 95 C / Set Point is 70 C - -Fan 1 Module 1: 4054rpm 60pwm(23%) Front-To-Back -Fan 2 Module 1: 4404rpm 60pwm(23%) Front-To-Back -Fan 3 Module 2: 4112rpm 60pwm(23%) Front-To-Back -Fan 4 Module 2: 4372rpm 60pwm(23%) Front-To-Back -Fan 5 Module 3: 4072rpm 60pwm(23%) Front-To-Back -Fan 6 Module 3: 4306rpm 60pwm(23%) Front-To-Back -Fan 7 Module 4: 4134rpm 60pwm(23%) Front-To-Back -Fan 8 Module 4: 4326rpm 60pwm(23%) Front-To-Back - -System Fan Airflow: Front-To-Back - -Power Supply 1: Front-To-Back [DPS-460KB C] -Power Supply 2: Front-To-Back [DPS-460KB C] - - Power Faults: PS1-Pwr - Fan Faults: None -Service Faults: Too-Few-PS - diff --git a/test/units/modules/network/enos/test_enos_command.py b/test/units/modules/network/enos/test_enos_command.py deleted file mode 100644 index f73aec6847..0000000000 --- a/test/units/modules/network/enos/test_enos_command.py +++ /dev/null @@ -1,104 +0,0 @@ -# Copyright (C) 2017 Lenovo, Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.enos import enos_command -from units.modules.utils import set_module_args -from .enos_module import TestEnosModule, load_fixture - - -class TestEnosCommandModule(TestEnosModule): - - module = enos_command - - def setUp(self): - super(TestEnosCommandModule, self).setUp() - self.mock_run_commands = patch('ansible.modules.network.enos.enos_command.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestEnosCommandModule, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for item in commands: - try: - command = item - except ValueError: - command = 'show version' - filename = str(command).replace(' ', '_') - output.append(load_fixture(filename)) - return output - - self.run_commands.side_effect = load_from_file - - def test_enos_command_simple(self): - set_module_args(dict(commands=['show version'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 1) - self.assertTrue(result['stdout'][0].startswith('System Information')) - - def test_enos_command_multiple(self): - set_module_args(dict(commands=['show version', 'show run'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 2) - self.assertTrue(result['stdout'][0].startswith('System Information')) - - def test_enos_command_wait_for(self): - wait_for = 'result[0] contains "System Information"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module() - - def test_enos_command_wait_for_fails(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 10) - - def test_enos_command_retries(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show version'], wait_for=wait_for, retries=2)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 2) - - def test_enos_command_match_any(self): - wait_for = ['result[0] contains "System Information"', - 'result[0] contains "test string"'] - set_module_args(dict(commands=['show version'], wait_for=wait_for, match='any')) - self.execute_module() - - def test_enos_command_match_all(self): - wait_for = ['result[0] contains "System Information"', - 'result[0] contains "Lenovo"'] - set_module_args(dict(commands=['show version'], wait_for=wait_for, match='all')) - self.execute_module() - - def test_enos_command_match_all_failure(self): - wait_for = ['result[0] contains "Lenovo ENOS"', - 'result[0] contains "test string"'] - commands = ['show version', 'show run'] - set_module_args(dict(commands=commands, wait_for=wait_for, match='all')) - self.execute_module(failed=True) diff --git a/test/units/modules/network/enos/test_enos_config.py b/test/units/modules/network/enos/test_enos_config.py deleted file mode 100644 index 375c7264eb..0000000000 --- a/test/units/modules/network/enos/test_enos_config.py +++ /dev/null @@ -1,125 +0,0 @@ -# -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.enos import enos_config -from .enos_module import TestEnosModule, load_fixture - -from units.modules.utils import set_module_args - - -class TestEnosConfigModule(TestEnosModule): - - module = enos_config - - def setUp(self): - self.patcher_get_config = patch('ansible.modules.network.enos.enos_config.get_config') - self.mock_get_config = self.patcher_get_config.start() - self.patcher_exec_command = patch('ansible.modules.network.enos.enos_config.load_config') - self.mock_exec_command = self.patcher_exec_command.start() - - def tearDown(self): - self.patcher_get_config.stop() - self.patcher_exec_command.stop() - - def load_fixtures(self, commands=None): - config_file = 'enos_config_config.cfg' - self.mock_get_config.return_value = load_fixture(config_file) - self.mock_exec_command.return_value = 'dummy diff' - - def test_enos_config_unchanged(self): - src = load_fixture('enos_config_config.cfg') - set_module_args(dict(src=src)) - self.execute_module() - - def test_enos_config_src(self): - src = load_fixture('enos_config_src.cfg') - set_module_args(dict(src=src)) - commands = ['hostname foo', 'interface ip 13', - 'no ip ospf enable'] - self.execute_module(changed=True, commands=commands) - - def test_enos_config_backup(self): - set_module_args(dict(backup=True)) - result = self.execute_module() - self.assertIn('__backup__', result) - - def test_enos_config_lines_wo_parents(self): - set_module_args(dict(lines=['hostname foo'])) - commands = ['hostname foo'] - self.execute_module(changed=True, commands=commands) - - def test_enos_config_lines_w_parents(self): - set_module_args(dict(lines=['shutdown'], parents=['interface ip 13'])) - commands = ['interface ip 13', 'shutdown'] - self.execute_module(changed=True, commands=commands) - - def test_enos_config_before(self): - set_module_args(dict(lines=['hostname foo'], before=['test1', 'test2'])) - commands = ['test1', 'test2', 'hostname foo'] - self.execute_module(changed=True, commands=commands, sort=False) - - def test_enos_config_after(self): - set_module_args(dict(lines=['hostname foo'], after=['test1', 'test2'])) - commands = ['hostname foo', 'test1', 'test2'] - self.execute_module(changed=True, commands=commands, sort=False) - - def test_enos_config_before_after_no_change(self): - set_module_args(dict(lines=['hostname router'], - before=['test1', 'test2'], - after=['test3', 'test4'])) - self.execute_module() - - def test_enos_config_config(self): - config = 'hostname localhost' - set_module_args(dict(lines=['hostname router'], config=config)) - commands = ['hostname router'] - self.execute_module(changed=True, commands=commands) - - def test_enos_config_replace_block(self): - lines = ['description test string', 'test string'] - parents = ['interface ip 13'] - set_module_args(dict(lines=lines, replace='block', parents=parents)) - commands = parents + lines - self.execute_module(changed=True, commands=commands) - - def test_enos_config_match_none(self): - lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string'] - parents = ['interface ip 13'] - set_module_args(dict(lines=lines, parents=parents, match='none')) - commands = parents + lines - self.execute_module(changed=True, commands=commands, sort=False) - - def test_enos_config_match_strict(self): - lines = ['ip address 1.2.3.4 255.255.255.0', 'exit'] - parents = ['interface ip 13'] - set_module_args(dict(lines=lines, parents=parents, match='strict')) - commands = parents + ['exit'] - self.execute_module(changed=True, commands=commands, sort=False) - - def test_enos_config_match_exact(self): - lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string', - 'shutdown'] - parents = ['interface ip 13'] - set_module_args(dict(lines=lines, parents=parents, match='exact')) - commands = parents + lines - self.execute_module(changed=True, commands=commands, sort=False) diff --git a/test/units/modules/network/enos/test_enos_facts.py b/test/units/modules/network/enos/test_enos_facts.py deleted file mode 100644 index 7e2d0426d1..0000000000 --- a/test/units/modules/network/enos/test_enos_facts.py +++ /dev/null @@ -1,82 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json - -from units.compat.mock import patch -from .enos_module import TestEnosModule, load_fixture -from ansible.modules.network.enos import enos_facts -from units.modules.utils import set_module_args - - -class TestEnosFacts(TestEnosModule): - - module = enos_facts - - def setUp(self): - super(TestEnosFacts, self).setUp() - self.mock_run_commands = patch( - 'ansible.modules.network.enos.enos_facts.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestEnosFacts, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for item in commands: - try: - obj = json.loads(item) - command = obj['command'] - except ValueError: - command = item - filename = str(command).replace(' ', '_') - filename = filename.replace('/', '7') - output.append(load_fixture(filename)) - return output - - self.run_commands.side_effect = load_from_file - - def test_enos_facts_gather_subset_default(self): - set_module_args(dict()) - result = self.execute_module() - ansible_facts = result['ansible_facts'] - self.assertIn('hardware', ansible_facts['ansible_net_gather_subset']) - self.assertIn('default', ansible_facts['ansible_net_gather_subset']) - self.assertIn('interfaces', ansible_facts['ansible_net_gather_subset']) - self.assertEqual('test1', ansible_facts['ansible_net_hostname']) - self.assertIn('MGT', ansible_facts['ansible_net_interfaces'].keys()) - self.assertEqual(3992.75390625, ansible_facts['ansible_net_memtotal_mb']) - self.assertEqual(3383.109375, ansible_facts['ansible_net_memfree_mb']) - - def test_enos_facts_gather_subset_config(self): - set_module_args({'gather_subset': 'config'}) - result = self.execute_module() - ansible_facts = result['ansible_facts'] - self.assertIn('default', ansible_facts['ansible_net_gather_subset']) - self.assertIn('config', ansible_facts['ansible_net_gather_subset']) - self.assertEqual('test1', ansible_facts['ansible_net_hostname']) - self.assertIn('ansible_net_config', ansible_facts) diff --git a/test/units/modules/network/eric_eccli/eccli_module.py b/test/units/modules/network/eric_eccli/eccli_module.py deleted file mode 100644 index 385e00d6bb..0000000000 --- a/test/units/modules/network/eric_eccli/eccli_module.py +++ /dev/null @@ -1,88 +0,0 @@ -# (c) 2019 Ericsson. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json - -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase - - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(name): - path = os.path.join(fixture_path, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as f: - data = f.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class TestEccliModule(ModuleTestCase): - - def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False): - - self.load_fixtures(commands) - - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - if commands is not None: - if sort: - self.assertEqual(sorted(commands), sorted(result['commands']), result['commands']) - else: - self.assertEqual(commands, result['commands'], result['commands']) - - return result - - def failed(self): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def changed(self, changed=False): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertEqual(result['changed'], changed, result) - return result - - def load_fixtures(self, commands=None): - pass diff --git a/test/units/modules/network/eric_eccli/fixtures/configure_terminal b/test/units/modules/network/eric_eccli/fixtures/configure_terminal deleted file mode 100644 index 139597f9cb..0000000000 --- a/test/units/modules/network/eric_eccli/fixtures/configure_terminal +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/test/units/modules/network/eric_eccli/fixtures/show_version b/test/units/modules/network/eric_eccli/fixtures/show_version deleted file mode 100644 index 9298419afb..0000000000 --- a/test/units/modules/network/eric_eccli/fixtures/show_version +++ /dev/null @@ -1,12 +0,0 @@ -Ericsson IPOS Version IPOS-19.4.0.0.38-Release -Built by ciflash@f48824719fb1 Fri May 03 19:18:07 EDT 2019 -Copyright (C) 1998-2019, Ericsson AB. All rights reserved. -Operating System version is Linux 3.14.25-00221-g19d0f20 -System Bootstrap version is N/A -Installed minikernel version is N/A -Router Up Time - 10 days, 23 hours 29 minutes 3 seconds - - - - - diff --git a/test/units/modules/network/eric_eccli/test_eric_eccli_command.py b/test/units/modules/network/eric_eccli/test_eric_eccli_command.py deleted file mode 100644 index 51e8bdb9bf..0000000000 --- a/test/units/modules/network/eric_eccli/test_eric_eccli_command.py +++ /dev/null @@ -1,126 +0,0 @@ -# (c) 2019 Ericsson. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json - -from units.compat.mock import patch -from ansible.modules.network.eric_eccli import eric_eccli_command -from units.modules.utils import set_module_args -from .eccli_module import TestEccliModule, load_fixture - - -class TestEccliCommandModule(TestEccliModule): - - module = eric_eccli_command - - def setUp(self): - super(TestEccliCommandModule, self).setUp() - - self.mock_run_commands = patch('ansible.modules.network.eric_eccli.eric_eccli_command.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestEccliCommandModule, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for item in commands: - try: - obj = json.loads(item['command']) - command = obj['command'] - except ValueError: - command = item['command'] - filename = str(command).replace(' ', '_') - output.append(load_fixture(filename)) - return output - - self.run_commands.side_effect = load_from_file - - def test_eric_eccli_command_simple(self): - set_module_args(dict(commands=['show version'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 1) - self.assertTrue(result['stdout'][0].startswith('Ericsson IPOS Version')) - - def test_eric_eccli_command_multiple(self): - set_module_args(dict(commands=['show version', 'show version'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 2) - self.assertTrue(result['stdout'][0].startswith('Ericsson IPOS Version')) - - def test_eric_eccli_command_wait_for(self): - wait_for = 'result[0] contains "Ericsson IPOS"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module() - - def test_eric_eccli_command_wait_for_fails(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 10) - - def test_eric_eccli_command_retries(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show version'], wait_for=wait_for, retries=2)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 2) - - def test_eric_eccli_command_match_any(self): - wait_for = ['result[0] contains "Ericsson IPOS"', - 'result[0] contains "test string"'] - set_module_args(dict(commands=['show version'], wait_for=wait_for, match='any')) - self.execute_module() - - def test_eric_eccli_command_match_all(self): - wait_for = ['result[0] contains "Ericsson IPOS"', - 'result[0] contains "Version IPOS"'] - set_module_args(dict(commands=['show version'], wait_for=wait_for, match='all')) - self.execute_module() - - def test_eric_eccli_command_match_all_failure(self): - wait_for = ['result[0] contains "Ericsson IPOS"', - 'result[0] contains "test string"'] - commands = ['show version', 'show version'] - set_module_args(dict(commands=commands, wait_for=wait_for, match='all')) - self.execute_module(failed=True) - - def test_eric_eccli_command_configure_check_warning(self): - commands = ['configure terminal'] - set_module_args({ - 'commands': commands, - '_ansible_check_mode': True, - }) - result = self.execute_module() - self.assertEqual( - result['warnings'], - ['only non-config commands are supported when using check mode, not executing configure terminal'], - ) - - def test_eric_eccli_command_configure_not_warning(self): - commands = ['configure terminal'] - set_module_args(dict(commands=commands)) - result = self.execute_module() - self.assertEqual(result['warnings'], []) diff --git a/test/units/modules/network/exos/exos_module.py b/test/units/modules/network/exos/exos_module.py deleted file mode 100644 index da4ece7e6c..0000000000 --- a/test/units/modules/network/exos/exos_module.py +++ /dev/null @@ -1,87 +0,0 @@ -# (c) 2018 Extreme Networks Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json - -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase - - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(name): - path = os.path.join(fixture_path, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as file_desc: - data = file_desc.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class TestExosModule(ModuleTestCase): - - def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False): - - self.load_fixtures(commands) - - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - if commands is not None: - if sort: - self.assertEqual(sorted(commands), sorted(result['commands']), result['commands']) - else: - self.assertEqual(commands, result['commands'], result['commands']) - - return result - - def failed(self): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def changed(self, changed=False): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertEqual(result['changed'], changed, result) - return result - - def load_fixtures(self, commands=None): - pass diff --git a/test/units/modules/network/exos/fixtures/exos_config_config.cfg b/test/units/modules/network/exos/fixtures/exos_config_config.cfg deleted file mode 100644 index 5b1ad1e214..0000000000 --- a/test/units/modules/network/exos/fixtures/exos_config_config.cfg +++ /dev/null @@ -1,31 +0,0 @@ -# -# Module devmgr configuration. -# -configure snmp sysName "x870" -configure snmp sysContact "support@extremenetworks.com, +1 888 257 3000" -configure sys-recovery-level switch reset - -# -# Module vpex configuration. -# - -# -# Module vlan configuration. -# -configure vlan default delete ports all -configure vr VR-Default delete ports 1-128 -configure vr VR-Default add ports 1-128 -configure vlan default delete ports 1-2 -create vlan "ansible_test" -configure vlan ansible_test tag 1111 -create vlan "vlan1" -create vlan "vlan2" -create vlan "vlan3" -configure ports 1 description-string "Firewall" -configure ports 2 description-string "Master Uplink" -configure ports 3 description-string "Database Server" -configure vlan ansible_test add ports 1 tagged -configure vlan Default add ports 3-128 untagged -configure vlan vlan1 ipaddress 10.0.1.1 255.255.255.0 -configure vlan vlan2 ipaddress 192.168.1.1 255.255.0.0 -configure vlan3 ipaddress fe80::202:b3ff:fe1e:8329/64 diff --git a/test/units/modules/network/exos/fixtures/exos_config_modified.cfg b/test/units/modules/network/exos/fixtures/exos_config_modified.cfg deleted file mode 100644 index 75a57199fb..0000000000 --- a/test/units/modules/network/exos/fixtures/exos_config_modified.cfg +++ /dev/null @@ -1,31 +0,0 @@ -# -# Module devmgr configuration. -# -configure snmp sysName "marble" -configure snmp sysContact "support@extremenetworks.com, +1 888 257 3000" -configure sys-recovery-level switch reset - -# -# Module vpex configuration. -# - -# -# Module vlan configuration. -# -configure vlan default delete ports all -configure vr VR-Default delete ports 1-128 -configure vr VR-Default add ports 1-128 -configure vlan default delete ports 1-2 -create vlan "ansible_test" -configure vlan ansible_test tag 1111 -create vlan "vlan1" -create vlan "vlan2" -create vlan "vlan3" -configure ports 1 description-string "Firewall" -configure ports 2 description-string "Master Uplink" -configure ports 3 description-string "Database Server" -configure vlan ansible_test add ports 1 tagged -configure vlan Default add ports 3-128 untagged -configure vlan vlan1 ipaddress 10.0.1.1 255.255.255.0 -configure vlan vlan2 ipaddress 192.168.1.1 255.255.0.0 -configure vlan3 ipaddress fe80::202:b3ff:fe1e:8329/64 diff --git a/test/units/modules/network/exos/fixtures/exos_config_src.cfg b/test/units/modules/network/exos/fixtures/exos_config_src.cfg deleted file mode 100644 index ac86d493bb..0000000000 --- a/test/units/modules/network/exos/fixtures/exos_config_src.cfg +++ /dev/null @@ -1,2 +0,0 @@ -configure snmp sysName "marble" -configure ports 1 description-string "IDS" diff --git a/test/units/modules/network/exos/fixtures/show_lldp_neighbors b/test/units/modules/network/exos/fixtures/show_lldp_neighbors deleted file mode 100644 index 181696a9d3..0000000000 --- a/test/units/modules/network/exos/fixtures/show_lldp_neighbors +++ /dev/null @@ -1 +0,0 @@ -[{"CLIoutput": "\n Neighbor Neighbor Neighbor\nPort Chassis ID Port ID TTL Age System Name\n===============================================================================\n1 00:02:02:02:02:02 1 120 26 EXOS-VM\n2 00:02:02:02:02:02 2 120 25 EXOS-VM\n3 00:02:02:02:02:02 3 120 25 EXOS-VM\n===============================================================================\nNOTE: The Chassis ID and/or Port ID might be truncated to fit the screen.\n\n"}, {"lldpPortNbrInfoShort": {"age": 26, "lastUpdate": 8412, "nbrChassisID": "00:02:02:02:02:02", "nbrChassisIdType": 4, "nbrIndex": 1, "nbrPortDescr": "Not-Advertised", "nbrPortID": 1, "nbrPortIdType": 5, "nbrSysDescr": "ExtremeXOS (EXOS-VM) version 30.1.0.27 xos_30.1 by lrichardson on Mon Apr 30 13:38:10 EDT 2018", "nbrSysName": "EXOS-VM", "nbrsOnThisPort": 1, "port": 1, "ttl": 120}, "status": "MORE"}, {"lldpPortNbrInfoShort": {"age": 25, "lastUpdate": 8412, "nbrChassisID": "00:02:02:02:02:02", "nbrChassisIdType": 4, "nbrIndex": 1, "nbrPortDescr": "Not-Advertised", "nbrPortID": 2, "nbrPortIdType": 5, "nbrSysDescr": "ExtremeXOS (EXOS-VM) version 30.1.0.27 xos_30.1 by lrichardson on Mon Apr 30 13:38:10 EDT 2018", "nbrSysName": "EXOS-VM", "nbrsOnThisPort": 1, "port": 2, "ttl": 120}, "status": "MORE"}, {"lldpPortNbrInfoShort": {"age": 25, "lastUpdate": 8417, "nbrChassisID": "00:02:02:02:02:02", "nbrChassisIdType": 4, "nbrIndex": 1, "nbrPortDescr": "Not-Advertised", "nbrPortID": 3, "nbrPortIdType": 5, "nbrSysDescr": "ExtremeXOS (EXOS-VM) version 30.1.0.27 xos_30.1 by lrichardson on Mon Apr 30 13:38:10 EDT 2018", "nbrSysName": "EXOS-VM", "nbrsOnThisPort": 1, "port": 3, "ttl": 120}, "status": "MORE"}, {"status": "SUCCESS"}] diff --git a/test/units/modules/network/exos/fixtures/show_memory b/test/units/modules/network/exos/fixtures/show_memory deleted file mode 100644 index 609a24b890..0000000000 --- a/test/units/modules/network/exos/fixtures/show_memory +++ /dev/null @@ -1,95 +0,0 @@ - -System Memory Information -------------------------- - Total DRAM (KB): 8388608 - System (KB): 357088 - User (KB): 558460 - Free (KB): 7473060 - -Memory Utilization Statistics ------------------------------ - - Process Name Memory (KB) ------------------------------ - aaa 2212 - acl 1637 - bfd 1158 - bgp 10031 - brm 822 - cfgmgr 2466 - cli 16169 - devmgr 884 - dirser 463 - dosprotect 570 - dot1ag 1370 - eaps 1359 - edp 1260 - elrp 1250 - elsm 917 - ems 3196 - epm 1646 - erps 1282 - esrp 1101 - ethoam 858 - etmon 7865 - exacl 0 - exdhcpsnoop 0 - exdos 0 - exfib 0 - exnasnoop 0 - exosmc 0 - exosq 0 - expolicy 0 - exsflow 0 - exsnoop 0 - exsshd 1522 - exvlan 0 - fdb 1990 - hal 141451 - hclag 899 - idMgr 3448 - ipSecurity 1042 - ipfix 956 - isis 1403 - ismb 0 - lacp 1306 - lldp 1724 - mcmgr 2183 - mpls 0 - mrp 1482 - msdp 915 - netLogin 1641 - netTools 4336 - nettx 0 - nodealias 1847 - nodemgr 501 - ntp 812 - openflow 0 - ospf 1455 - ospfv3 5130 - otm 1095 - ovsdb 8206 - pim 2100 - polMgr 479 - policy 45998 - pwmib 458 - rip 1000 - ripng 739 - rtmgr 2679 - snmpMaster 2798 - snmpSubagent 5728 - stp 2020 - techSupport 681 - telnetd 890 - tftpd 336 - throw 5262 - thttpd 8944 - twamp 471 - upm 859 - vlan 3215 - vmt 1599 - vpex 1771 - vrrp 1185 - vsm 1486 - xmlc 1013 - xmld 3468 diff --git a/test/units/modules/network/exos/fixtures/show_port_config b/test/units/modules/network/exos/fixtures/show_port_config deleted file mode 100644 index 271924f09d..0000000000 --- a/test/units/modules/network/exos/fixtures/show_port_config +++ /dev/null @@ -1 +0,0 @@ -[{"CLIoutput": "Port Configuration\nPort Virtual Port Link Auto Speed Duplex Flow Load Media\n router State State Neg Cfg Actual Cfg Actual Cntrl Master Pri Red\n================================================================================\n1 VR-Default E R OFF 25000 FULL NONE \n2 VR-Default E R OFF 25000 FULL NONE \n3 VR-Default E R OFF 25000 FULL NONE \n4 VR-Default E R OFF 25000 FULL NONE \n================================================================================\n> indicates Port Display Name truncated past 8 characters\nLink State: A-Active, R-Ready, NP-Port Not Present, L-Loopback\nPort State: D-Disabled, E-Enabled, L-License Disabled\nMedia: !-Unsupported, $-Unlicensed\nMedia Red: * - use \"show port info detail\" for redundant media type\nFlow Cntrl: Shows link partner's abilities. NONE if Auto Neg is OFF\n"}, {"show_ports_config": {"duplexActual": null, "duplexCfg": "FULL", "flowControl": null, "isAutoNegOn": 0, "licenseDisable": 0, "linkState": 0, "port": 1, "portList": "1-4", "portState": 1, "primaryMedia": " NONE", "speedActual": null, "speedCfg": 25000, "vrName": "VR-Default"}, "status": "MORE"}, {"show_ports_config": {"duplexActual": null, "duplexCfg": "FULL", "flowControl": null, "isAutoNegOn": 0, "licenseDisable": 0, "linkState": 0, "port": 2, "portList": "1-4", "portState": 1, "primaryMedia": " NONE", "speedActual": null, "speedCfg": 25000, "vrName": "VR-Default"}, "status": "MORE"}, {"show_ports_config": {"duplexActual": null, "duplexCfg": "FULL", "flowControl": null, "isAutoNegOn": 0, "licenseDisable": 0, "linkState": 0, "port": 3, "portList": "1-4", "portState": 1, "primaryMedia": " NONE", "speedActual": null, "speedCfg": 25000, "vrName": "VR-Default"}, "status": "MORE"}, {"show_ports_config": {"duplexActual": null, "duplexCfg": "FULL", "flowControl": null, "isAutoNegOn": 0, "licenseDisable": 0, "linkState": 0, "port": 4, "portList": "1-4", "portState": 1, "primaryMedia": " NONE", "speedActual": null, "speedCfg": 25000, "vrName": "VR-Default"}, "status": "SUCCESS"}] diff --git a/test/units/modules/network/exos/fixtures/show_port_description b/test/units/modules/network/exos/fixtures/show_port_description deleted file mode 100644 index 5fadcf78aa..0000000000 --- a/test/units/modules/network/exos/fixtures/show_port_description +++ /dev/null @@ -1,2 +0,0 @@ -[{"CLIoutput": "Port Display String Description String \n===== ==================== ==================================================\n1 Firewall\n2 \n3 Database Server\n4 \n===== ==================== ==================================================\n"}, {"show_ports_description": {"descriptionString": "Firewall", "port": 1, "portList": "1-4"}, "status": "MORE"}, {"show_ports_description": {"port": 2, "portList": "1-4"}, "status": "MORE"}, {"show_ports_description": {"descriptionString": "Database Server", "port": 3, "portList": "1-4"}, "status": "MORE"}, {"show_ports_description": {"port": 4, "portList": "1-4"}, "status": "SUCCESS"}] - diff --git a/test/units/modules/network/exos/fixtures/show_switch b/test/units/modules/network/exos/fixtures/show_switch deleted file mode 100644 index 9015286c3c..0000000000 --- a/test/units/modules/network/exos/fixtures/show_switch +++ /dev/null @@ -1,33 +0,0 @@ - -SysName: X870-32c -SysLocation: -SysContact: support@extremenetworks.com, +1 888 257 3000 -System MAC: 00:04:96:9A:B4:F7 -System Type: X870-32c - -SysHealth check: Enabled (Normal) -Recovery Mode: All -System Watchdog: Enabled - -Current Time: Wed Jul 18 12:44:49 2018 -Timezone: [Auto DST Disabled] GMT Offset: 0 minutes, name is UTC. -Boot Time: Tue Jul 17 12:49:58 2018 -Boot Count: 4970 -Next Reboot: None scheduled -System UpTime: 23 hours 54 minutes 50 seconds - -Current State: OPERATIONAL -Image Selected: secondary -Image Booted: secondary -Primary ver: 30.1.0.37 -Secondary ver: 22.5.1.7 - -Config Selected: primary.cfg -Config Booted: primary.cfg -Config Automatic: NONE (Disabled) - -primary.cfg Created by ExtremeXOS version 22.6.0.11 - 983139 bytes saved on Wed Jun 6 16:59:49 2018 - -LAA MAC: Locally Administered MAC Address Disabled - diff --git a/test/units/modules/network/exos/fixtures/show_version b/test/units/modules/network/exos/fixtures/show_version deleted file mode 100644 index a34236ee4d..0000000000 --- a/test/units/modules/network/exos/fixtures/show_version +++ /dev/null @@ -1,6 +0,0 @@ -Switch : 800745-00-01 1604G-00175 Rev 01 IMG: 22.5.1.7 - -Image : ExtremeXOS version 22.5.1.7 by release-manager - on Tue May 22 11:25:12 EDT 2018 -Diagnostics : -Certified Version : EXOS Linux 3.18.48, FIPS fips-ecp-2.0.16 diff --git a/test/units/modules/network/exos/fixtures/show_vlan b/test/units/modules/network/exos/fixtures/show_vlan deleted file mode 100644 index fd15cc592b..0000000000 --- a/test/units/modules/network/exos/fixtures/show_vlan +++ /dev/null @@ -1,2 +0,0 @@ -[{"CLIoutput": "VLAN Interface with name Default created by user\n Admin State:\t Enabled Tagging:\t802.1Q Tag 1 \n Description:\t None\n Virtual router:\t VR-Default\n IPv4 Forwarding:\t Disabled\n IPv4 MC Forwarding: Disabled\n IPv6 Forwarding:\t Disabled\n IPv6 MC Forwarding: Disabled\n IPv6: None\n STPD: \t\t s0(Enabled,Auto-bind) \n Protocol: Match all unfiltered protocols\n Loopback: Disabled\n NetLogin: Disabled\n OpenFlow: Disabled\n QosProfile: \t None configured\n Egress Rate Limit Designated Port: None configured\n Flood Rate Limit QosProfile: None configured\n Suppress ARP: Disabled\n Proxy ARP: Entry required\n Ports: 127. \t (Number of active ports=0)\n Untag: 2b, 3b, 4b, 5b, 6b, 7b, 8b,\n 9b, 10b, 11b, 12b, 13b, 14b, 15b,\n 16b, 17b, 18b, 19b, 20b, 21b, 22b,\n 23b, 24b, 25b, 26b, 27b, 28b, 29b,\n 30b, 31b, 32b, 33b, 34b, 35b, 36b,\n 37b, 38b, 39b, 40b, 41b, 42b, 43b,\n 44b, 45b, 46b, 47b, 48b, 49b, 50b,\n 51b, 52b, 53b, 54b, 55b, 56b, 57b,\n 58b, 59b, 60b, 61b, 62b, 63b, 64b,\n 65b, 66b, 67b, 68b, 69b, 70b, 71b,\n 72b, 73b, 74b, 75b, 76b, 77b, 78b,\n 79b, 80b, 81b, 82b, 83b, 84b, 85b,\n 86b, 87b, 88b, 89b, 90b, 91b, 92b,\n 93b, 94b, 95b, 96b, 97b, 98b, 99b,\n 100b, 101b, 102b, 103b, 104b, 105b, 106b,\n 107b, 108b, 109b, 110b, 111b, 112b, 113b,\n 114b, 115b, 116b, 117b, 118b, 119b, 120b,\n 121b, 122b, 123b, 124b, 125b, 126b, 127b,\n 128b\n\tFlags: (*) Active, (!) Disabled, (g) Load Sharing port\n (b) Port blocked on the vlan, (m) Mac-Based port\n (i) Port inactivated on the vlan due to VXLAN configuration\n (a) Egress traffic allowed for NetLogin\n (u) Egress traffic unallowed for NetLogin\n (t) Translate VLAN tag for Private-VLAN\n (s) Private-VLAN System Port, (L) Loopback port\n (x) VMAN Tag Translated port\n (A) Dynamically added by Auto-peering\n (F) Dynamically added by Fabric Attach\n (G) Multi-switch LAG Group port\n (H) Dynamically added by MVRP\n (I) Dynamically added by IDM\n (N) Dynamically added by Netlogin\n (U) Dynamically added uplink port\n (V) Dynamically added by VM Tracking\n\n#\n#\nVLAN Interface with name Mgmt created by user\n Admin State:\t Enabled Tagging:\t802.1Q Tag 4095 \n Description:\t Management VLAN \n Virtual router:\t VR-Mgmt\n IPv4 Forwarding:\t Disabled\n IPv4 MC Forwarding: Disabled\n IPv6 Forwarding:\t Disabled\n IPv6 MC Forwarding: Disabled\n IPv6: None\n STPD: \t\t None\n Protocol: Match all unfiltered protocols\n Loopback: Disabled\n NetLogin: Disabled\n OpenFlow: Disabled\n QosProfile: \t None configured\n Flood Rate Limit QosProfile: None configured\n Suppress ARP: Disabled\n Proxy ARP: Entry required\n Ports: 1. \t (Number of active ports=1)\n Untag: Mgmt-port on Mgmt is active\n\n\n#\n#\nVLAN Interface with name vlan1 created by user\n Admin State:\t Enabled Tagging:Untagged (Internal tag 4093) \n Description:\t None\n Virtual router:\t VR-Default\n IPv4 Forwarding:\t Disabled\n IPv4 MC Forwarding: Disabled\n Primary IP:\t\t 10.0.1.1/24\n IPv6 Forwarding:\t Disabled\n IPv6 MC Forwarding: Disabled\n IPv6: None\n STPD: \t\t None\n Protocol: Match all unfiltered protocols\n Loopback: Disabled\n NetLogin: Disabled\n OpenFlow: Disabled\n QosProfile: \t None configured\n Egress Rate Limit Designated Port: None configured\n Flood Rate Limit QosProfile: None configured\n Suppress ARP: Disabled\n Proxy ARP: Entry required\n Ports: 0. \t (Number of active ports=0)\n\n#\n#\nVLAN Interface with name vlan2 created by user\n Admin State:\t Enabled Tagging:Untagged (Internal tag 4092) \n Description:\t None\n Virtual router:\t VR-Default\n IPv4 Forwarding:\t Disabled\n IPv4 MC Forwarding: Disabled\n Primary IP:\t\t 192.168.1.1/16\n IPv6 Forwarding:\t Disabled\n IPv6 MC Forwarding: Disabled\n IPv6: None\n STPD: \t\t None\n Protocol: Match all unfiltered protocols\n Loopback: Disabled\n NetLogin: Disabled\n OpenFlow: Disabled\n QosProfile: \t None configured\n Egress Rate Limit Designated Port: None configured\n Flood Rate Limit QosProfile: None configured\n Suppress ARP: Disabled\n Proxy ARP: Entry required\n Ports: 0. \t (Number of active ports=0)\n\n#\n#\nVLAN Interface with name vlan3 created by user\n Admin State:\t Enabled Tagging:Untagged (Internal tag 4091) \n Description:\t None\n Virtual router:\t VR-Default\n IPv4 Forwarding:\t Disabled\n IPv4 MC Forwarding: Disabled\n IPv6 Forwarding:\t Disabled\n IPv6 MC Forwarding: Disabled\n IPv6: fe80::202:b3ff:fe1e:8329/64 (Tentative)\n STPD: \t\t None\n Protocol: Match all unfiltered protocols\n Loopback: Disabled\n NetLogin: Disabled\n OpenFlow: Disabled\n QosProfile: \t None configured\n Egress Rate Limit Designated Port: None configured\n Flood Rate Limit QosProfile: None configured\n Suppress ARP: Disabled\n Proxy ARP: Entry required\n Ports: 0. \t (Number of active ports=0)\n\n"}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 1, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "atcktInst": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "cepPvid": 0, "count1": 127, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": "ANY", "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 2, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 0, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": "VR-Default", "name3": null, "name4": "by user", "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": "invalid port", "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 1, "tagStatus": 1, "taggedPorts": null, "untaggedPorts": "2-128", "vManMode": 0, "vlanFrlQos": 0, "vlanType": 2, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"rtifIpv6Address": {"address_state": 0, "flags": 70368744177664, "ifIndex": 10, "ipMtu": 1500, "ipv6_address_mask": "fe80::202:b3ff:fe1e:8329/64", "rtifName": "vlan3"}, "status": "MORE"}, {"status": "SUCCESS", "stp_vlan": {"ignore_bpdu": 0, "ignore_stp": 0, "vlan_name": "Default"}}, {"status": "MORE", "stp_vlan_stats": {"num_stp_ports": 127, "stpd_name": "s0", "vlanTag": 1, "vlan_name": "Default"}}, {"status": "SUCCESS", "stp_domain_enable": {"protocol_mode": 3, "stpd_enabled": 1, "stpd_name": "s0", "stpd_tag": 0}}, {"status": "SUCCESS", "stp_vlan_autoadd": {"auto_add_enabled": 1, "stpd_name": "s0", "vlan_name": "Default"}}, {"message": "mpls is not running in VR VR-Default.", "status": "ERROR"}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 2, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 3, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 4, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 5, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 6, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 7, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 8, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 9, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 10, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 11, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 12, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 13, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 14, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 15, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 16, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 17, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 18, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 19, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 20, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 21, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 22, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 23, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 24, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 25, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 26, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 27, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 28, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 29, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 30, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 31, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 32, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 33, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 34, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 35, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 36, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 37, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 38, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 39, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 40, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 41, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 42, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 43, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 44, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 45, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 46, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 47, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 48, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 49, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 50, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 51, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 52, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 53, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 54, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 55, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 56, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 57, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 58, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 59, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 60, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 61, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 62, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 63, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 64, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 65, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 66, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 67, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 68, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 69, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 70, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 71, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 72, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 73, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 74, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 75, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 76, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 77, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 78, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 79, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 80, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 81, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 82, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 83, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 84, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 85, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 86, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 87, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 88, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 89, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 90, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 91, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 92, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 93, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 94, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 95, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 96, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 97, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 98, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 99, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 100, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 101, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 102, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 103, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 104, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 105, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 106, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 107, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 108, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 109, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 110, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 111, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 112, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 113, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 114, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 115, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 116, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 117, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 118, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 119, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 120, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 121, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 122, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 123, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 124, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 125, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 126, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 127, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "SUCCESS", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 128, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 2, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 3, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 4, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 5, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 6, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 7, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 8, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 9, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 10, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 11, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 12, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 13, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 14, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 15, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 16, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 17, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 18, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 19, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 20, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 21, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 22, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 23, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 24, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 25, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 26, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 27, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 28, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 29, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 30, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 31, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 32, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 33, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 34, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 35, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 36, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 37, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 38, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 39, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 40, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 41, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 42, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 43, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 44, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 45, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 46, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 47, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 48, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 49, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 50, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 51, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 52, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 53, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 54, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 55, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 56, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 57, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 58, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 59, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 60, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 61, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 62, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 63, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 64, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 65, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 66, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 67, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 68, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 69, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 70, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 71, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 72, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 73, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 74, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 75, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 76, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 77, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 78, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 79, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 80, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 81, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 82, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 83, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 84, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 85, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 86, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 87, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 88, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 89, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 90, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 91, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 92, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 93, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 94, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 95, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 96, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 97, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 98, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 99, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 100, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 101, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 102, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 103, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 104, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 105, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 106, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 107, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 108, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 109, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 110, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 111, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 112, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 113, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 114, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 115, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 116, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 117, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 118, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 119, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 120, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 121, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 122, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 123, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 124, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 125, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 126, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 127, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "SUCCESS", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 128, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 1, "adminState": 1, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "atcktInst": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "cepPvid": 0, "count1": 1, "description": "Management VLAN", "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": "ANY", "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 2, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 0, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 1, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Mgmt", "name10": null, "name2": "VR-Mgmt", "name3": "Mgmt", "name4": "by user", "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": "invalid port", "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 4095, "tagStatus": 1, "taggedPorts": null, "untaggedPorts": 1, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"rtifIpv6Address": {"address_state": 0, "flags": 70368744177664, "ifIndex": 10, "ipMtu": 1500, "ipv6_address_mask": "fe80::202:b3ff:fe1e:8329/64", "rtifName": "vlan3"}, "status": "MORE"}, {"status": "SUCCESS", "stp_vlan": {"ignore_bpdu": 0, "ignore_stp": 0, "vlan_name": "Mgmt"}}, {"message": "mpls is not running in VR VR-Default.", "status": "ERROR"}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 1, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "atcktInst": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "cepPvid": 0, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": "ANY", "flags": null, "inactivePort": 0, "ipAddress": "10.0.1.1", "ipMtu": 0, "ipProxyArp": 2, "ipStatus": 1, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 1, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 0, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 24, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "vlan1", "name10": null, "name2": "VR-Default", "name3": null, "name4": "by user", "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": "invalid port", "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 4093, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 3, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"rtifIpv6Address": {"address_state": 0, "flags": 70368744177664, "ifIndex": 10, "ipMtu": 1500, "ipv6_address_mask": "fe80::202:b3ff:fe1e:8329/64", "rtifName": "vlan3"}, "status": "MORE"}, {"status": "SUCCESS", "stp_vlan": {"ignore_bpdu": 0, "ignore_stp": 0, "vlan_name": "vlan1"}}, {"message": "mpls is not running in VR VR-Default.", "status": "ERROR"}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 1, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "atcktInst": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "cepPvid": 0, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": "ANY", "flags": null, "inactivePort": 0, "ipAddress": "192.168.1.1", "ipMtu": 0, "ipProxyArp": 2, "ipStatus": 1, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 1, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 0, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 16, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "vlan2", "name10": null, "name2": "VR-Default", "name3": null, "name4": "by user", "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": "invalid port", "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 4092, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 3, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"rtifIpv6Address": {"address_state": 0, "flags": 70368744177664, "ifIndex": 10, "ipMtu": 1500, "ipv6_address_mask": "fe80::202:b3ff:fe1e:8329/64", "rtifName": "vlan3"}, "status": "MORE"}, {"status": "SUCCESS", "stp_vlan": {"ignore_bpdu": 0, "ignore_stp": 0, "vlan_name": "vlan2"}}, {"message": "mpls is not running in VR VR-Default.", "status": "ERROR"}, {"status": "SUCCESS", "vlanProc": {"action": null, "activePorts": 0, "adminState": 1, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "atcktInst": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "cepPvid": 0, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": "ANY", "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 2, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 0, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "vlan3", "name10": null, "name2": "VR-Default", "name3": null, "name4": "by user", "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": "invalid port", "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 4091, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 3, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"rtifIpv6Address": {"address_state": 0, "flags": 70368744177664, "ifIndex": 10, "ipMtu": 1500, "ipv6_address_mask": "fe80::202:b3ff:fe1e:8329/64", "rtifName": "vlan3"}, "status": "MORE"}, {"status": "SUCCESS", "stp_vlan": {"ignore_bpdu": 0, "ignore_stp": 0, "vlan_name": "vlan3"}}, {"message": "mpls is not running in VR VR-Default.", "status": "ERROR"}, {"status": "ERROR"}] - diff --git a/test/units/modules/network/exos/fixtures/show_vlan_detail b/test/units/modules/network/exos/fixtures/show_vlan_detail deleted file mode 100644 index d73434c218..0000000000 --- a/test/units/modules/network/exos/fixtures/show_vlan_detail +++ /dev/null @@ -1 +0,0 @@ -[{"CLIoutput": "VLAN Interface with name Default created by user\n Admin State:\t Enabled Tagging:\t802.1Q Tag 1 \n Description:\t None\n Virtual router:\t VR-Default\n IPv4 Forwarding:\t Disabled\n IPv4 MC Forwarding: Disabled\n IPv6 Forwarding:\t Disabled\n IPv6 MC Forwarding: Disabled\n IPv6: None\n STPD: \t\t s0(Enabled,Auto-bind) \n Protocol: Match all unfiltered protocols\n Loopback: Disabled\n NetLogin: Disabled\n OpenFlow: Disabled\n QosProfile: \t None configured\n Egress Rate Limit Designated Port: None configured\n Flood Rate Limit QosProfile: None configured\n Suppress ARP: Disabled\n Proxy ARP: Entry required\n Ports: 127. \t (Number of active ports=0)\n Untag: 2b, 3b, 4b, 5b, 6b, 7b, 8b,\n 9b, 10b, 11b, 12b, 13b, 14b, 15b,\n 16b, 17b, 18b, 19b, 20b, 21b, 22b,\n 23b, 24b, 25b, 26b, 27b, 28b, 29b,\n 30b, 31b, 32b, 33b, 34b, 35b, 36b,\n 37b, 38b, 39b, 40b, 41b, 42b, 43b,\n 44b, 45b, 46b, 47b, 48b, 49b, 50b,\n 51b, 52b, 53b, 54b, 55b, 56b, 57b,\n 58b, 59b, 60b, 61b, 62b, 63b, 64b,\n 65b, 66b, 67b, 68b, 69b, 70b, 71b,\n 72b, 73b, 74b, 75b, 76b, 77b, 78b,\n 79b, 80b, 81b, 82b, 83b, 84b, 85b,\n 86b, 87b, 88b, 89b, 90b, 91b, 92b,\n 93b, 94b, 95b, 96b, 97b, 98b, 99b,\n 100b, 101b, 102b, 103b, 104b, 105b, 106b,\n 107b, 108b, 109b, 110b, 111b, 112b, 113b,\n 114b, 115b, 116b, 117b, 118b, 119b, 120b,\n 121b, 122b, 123b, 124b, 125b, 126b, 127b,\n 128b\n\tFlags: (*) Active, (!) Disabled, (g) Load Sharing port\n (b) Port blocked on the vlan, (m) Mac-Based port\n (i) Port inactivated on the vlan due to VXLAN configuration\n (a) Egress traffic allowed for NetLogin\n (u) Egress traffic unallowed for NetLogin\n (t) Translate VLAN tag for Private-VLAN\n (s) Private-VLAN System Port, (L) Loopback port\n (x) VMAN Tag Translated port\n (A) Dynamically added by Auto-peering\n (F) Dynamically added by Fabric Attach\n (G) Multi-switch LAG Group port\n (H) Dynamically added by MVRP\n (I) Dynamically added by IDM\n (N) Dynamically added by Netlogin\n (U) Dynamically added uplink port\n (V) Dynamically added by VM Tracking\n\n#\n#\nVLAN Interface with name Mgmt created by user\n Admin State:\t Enabled Tagging:\t802.1Q Tag 4095 \n Description:\t Management VLAN \n Virtual router:\t VR-Mgmt\n IPv4 Forwarding:\t Disabled\n IPv4 MC Forwarding: Disabled\n IPv6 Forwarding:\t Disabled\n IPv6 MC Forwarding: Disabled\n IPv6: None\n STPD: \t\t None\n Protocol: Match all unfiltered protocols\n Loopback: Disabled\n NetLogin: Disabled\n OpenFlow: Disabled\n QosProfile: \t None configured\n Flood Rate Limit QosProfile: None configured\n Suppress ARP: Disabled\n Proxy ARP: Entry required\n Ports: 1. \t (Number of active ports=1)\n Untag: Mgmt-port on Mgmt is active\n\n\n#\n#\nVLAN Interface with name vlan1 created by user\n Admin State:\t Enabled Tagging:Untagged (Internal tag 4093) \n Description:\t None\n Virtual router:\t VR-Default\n IPv4 Forwarding:\t Disabled\n IPv4 MC Forwarding: Disabled\n Primary IP:\t\t 10.0.1.1/24\n Secondary IPs:\t 11.0.1.1/24\n\n IPv6 Forwarding:\t Disabled\n IPv6 MC Forwarding: Disabled\n IPv6: None\n STPD: \t\t None\n Protocol: Match all unfiltered protocols\n Loopback: Disabled\n NetLogin: Disabled\n OpenFlow: Disabled\n QosProfile: \t None configured\n Egress Rate Limit Designated Port: None configured\n Flood Rate Limit QosProfile: None configured\n Suppress ARP: Disabled\n Proxy ARP: Entry required\n Ports: 0. \t (Number of active ports=0)\n\n#\n#\nVLAN Interface with name vlan2 created by user\n Admin State:\t Enabled Tagging:Untagged (Internal tag 4092) \n Description:\t None\n Virtual router:\t VR-Default\n IPv4 Forwarding:\t Disabled\n IPv4 MC Forwarding: Disabled\n Primary IP:\t\t 192.168.1.1/16\n IPv6 Forwarding:\t Disabled\n IPv6 MC Forwarding: Disabled\n IPv6: None\n STPD: \t\t None\n Protocol: Match all unfiltered protocols\n Loopback: Disabled\n NetLogin: Disabled\n OpenFlow: Disabled\n QosProfile: \t None configured\n Egress Rate Limit Designated Port: None configured\n Flood Rate Limit QosProfile: None configured\n Suppress ARP: Disabled\n Proxy ARP: Entry required\n Ports: 0. \t (Number of active ports=0)\n\n#\n#\nVLAN Interface with name vlan3 created by user\n Admin State:\t Enabled Tagging:Untagged (Internal tag 4091) \n Description:\t None\n Virtual router:\t VR-Default\n IPv4 Forwarding:\t Disabled\n IPv4 MC Forwarding: Disabled\n IPv6 Forwarding:\t Disabled\n IPv6 MC Forwarding: Disabled\n IPv6: fe80::202:b3ff:fe1e:8329/64 (Tentative)\n STPD: \t\t None\n Protocol: Match all unfiltered protocols\n Loopback: Disabled\n NetLogin: Disabled\n OpenFlow: Disabled\n QosProfile: \t None configured\n Egress Rate Limit Designated Port: None configured\n Flood Rate Limit QosProfile: None configured\n Suppress ARP: Disabled\n Proxy ARP: Entry required\n Ports: 0. \t (Number of active ports=0)\n\n"}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 1, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "atcktInst": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "cepPvid": 0, "count1": 127, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": "ANY", "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 2, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 0, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": "VR-Default", "name3": null, "name4": "by user", "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": "invalid port", "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 1, "tagStatus": 1, "taggedPorts": null, "untaggedPorts": "2-128", "vManMode": 0, "vlanFrlQos": 0, "vlanType": 2, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"rtifIpv6Address": {"address_state": 0, "flags": 70368744177664, "ifIndex": 10, "ipMtu": 1500, "ipv6_address_mask": "fe80::202:b3ff:fe1e:8329/64", "rtifName": "vlan3"}, "status": "MORE"}, {"status": "SUCCESS", "stp_vlan": {"ignore_bpdu": 0, "ignore_stp": 0, "vlan_name": "Default"}}, {"status": "MORE", "stp_vlan_stats": {"num_stp_ports": 127, "stpd_name": "s0", "vlanTag": 1, "vlan_name": "Default"}}, {"status": "SUCCESS", "stp_domain_enable": {"protocol_mode": 3, "stpd_enabled": 1, "stpd_name": "s0", "stpd_tag": 0}}, {"status": "SUCCESS", "stp_vlan_autoadd": {"auto_add_enabled": 1, "stpd_name": "s0", "vlan_name": "Default"}}, {"message": "mpls is not running in VR VR-Default.", "status": "ERROR"}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 2, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 3, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 4, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 5, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 6, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 7, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 8, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 9, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 10, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 11, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 12, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 13, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 14, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 15, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 16, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 17, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 18, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 19, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 20, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 21, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 22, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 23, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 24, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 25, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 26, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 27, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 28, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 29, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 30, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 31, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 32, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 33, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 34, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 35, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 36, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 37, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 38, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 39, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 40, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 41, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 42, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 43, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 44, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 45, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 46, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 47, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 48, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 49, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 50, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 51, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 52, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 53, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 54, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 55, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 56, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 57, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 58, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 59, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 60, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 61, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 62, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 63, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 64, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 65, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 66, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 67, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 68, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 69, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 70, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 71, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 72, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 73, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 74, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 75, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 76, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 77, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 78, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 79, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 80, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 81, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 82, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 83, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 84, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 85, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 86, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 87, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 88, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 89, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 90, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 91, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 92, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 93, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 94, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 95, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 96, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 97, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 98, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 99, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 100, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 101, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 102, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 103, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 104, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 105, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 106, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 107, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 108, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 109, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 110, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 111, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 112, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 113, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 114, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 115, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 116, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 117, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 118, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 119, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 120, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 121, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 122, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 123, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 124, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 125, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 126, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 127, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "SUCCESS", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 128, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 2, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 3, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 4, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 5, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 6, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 7, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 8, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 9, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 10, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 11, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 12, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 13, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 14, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 15, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 16, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 17, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 18, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 19, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 20, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 21, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 22, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 23, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 24, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 25, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 26, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 27, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 28, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 29, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 30, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 31, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 32, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 33, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 34, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 35, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 36, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 37, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 38, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 39, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 40, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 41, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 42, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 43, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 44, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 45, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 46, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 47, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 48, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 49, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 50, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 51, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 52, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 53, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 54, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 55, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 56, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 57, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 58, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 59, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 60, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 61, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 62, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 63, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 64, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 65, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 66, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 67, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 68, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 69, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 70, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 71, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 72, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 73, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 74, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 75, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 76, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 77, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 78, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 79, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 80, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 81, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 82, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 83, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 84, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 85, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 86, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 87, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 88, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 89, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 90, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 91, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 92, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 93, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 94, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 95, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 96, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 97, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 98, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 99, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 100, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 101, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 102, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 103, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 104, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 105, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 106, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 107, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 108, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 109, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 110, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 111, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 112, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 113, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 114, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 115, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 116, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 117, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 118, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 119, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 120, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 121, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 122, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 123, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 124, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 125, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 126, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 127, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "SUCCESS", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 128, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 1, "adminState": 1, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "atcktInst": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "cepPvid": 0, "count1": 1, "description": "Management VLAN", "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": "ANY", "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 2, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 0, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 1, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Mgmt", "name10": null, "name2": "VR-Mgmt", "name3": "Mgmt", "name4": "by user", "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": "invalid port", "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 4095, "tagStatus": 1, "taggedPorts": null, "untaggedPorts": 1, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"rtifIpv6Address": {"address_state": 0, "flags": 70368744177664, "ifIndex": 10, "ipMtu": 1500, "ipv6_address_mask": "fe80::202:b3ff:fe1e:8329/64", "rtifName": "vlan3"}, "status": "MORE"}, {"status": "SUCCESS", "stp_vlan": {"ignore_bpdu": 0, "ignore_stp": 0, "vlan_name": "Mgmt"}}, {"message": "mpls is not running in VR VR-Default.", "status": "ERROR"}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 1, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "atcktInst": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "cepPvid": 0, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": "ANY", "flags": null, "inactivePort": 0, "ipAddress": "10.0.1.1", "ipMtu": 0, "ipProxyArp": 2, "ipStatus": 1, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 1, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 0, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 24, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "vlan1", "name10": null, "name2": "VR-Default", "name3": null, "name4": "by user", "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 2, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": "invalid port", "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 4093, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 3, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "SUCCESS", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "atcktInst": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "cepPvid": 0, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "10.0.1.1", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 1, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 0, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 24, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "vlan1", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": "invalid port", "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"rtifIpv6Address": {"address_state": 0, "flags": 70368744177664, "ifIndex": 10, "ipMtu": 1500, "ipv6_address_mask": "fe80::202:b3ff:fe1e:8329/64", "rtifName": "vlan3"}, "status": "MORE"}, {"status": "SUCCESS", "stp_vlan": {"ignore_bpdu": 0, "ignore_stp": 0, "vlan_name": "vlan1"}}, {"message": "mpls is not running in VR VR-Default.", "status": "ERROR"}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 1, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "atcktInst": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "cepPvid": 0, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": "ANY", "flags": null, "inactivePort": 0, "ipAddress": "192.168.1.1", "ipMtu": 0, "ipProxyArp": 2, "ipStatus": 1, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 1, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 0, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 16, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "vlan2", "name10": null, "name2": "VR-Default", "name3": null, "name4": "by user", "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": "invalid port", "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 4092, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 3, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"rtifIpv6Address": {"address_state": 0, "flags": 70368744177664, "ifIndex": 10, "ipMtu": 1500, "ipv6_address_mask": "fe80::202:b3ff:fe1e:8329/64", "rtifName": "vlan3"}, "status": "MORE"}, {"status": "SUCCESS", "stp_vlan": {"ignore_bpdu": 0, "ignore_stp": 0, "vlan_name": "vlan2"}}, {"message": "mpls is not running in VR VR-Default.", "status": "ERROR"}, {"status": "SUCCESS", "vlanProc": {"action": null, "activePorts": 0, "adminState": 1, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "atcktInst": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "cepPvid": 0, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": "ANY", "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 2, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 0, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "vlan3", "name10": null, "name2": "VR-Default", "name3": null, "name4": "by user", "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": "invalid port", "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 4091, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 3, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"rtifIpv6Address": {"address_state": 0, "flags": 70368744177664, "ifIndex": 10, "ipMtu": 1500, "ipv6_address_mask": "fe80::202:b3ff:fe1e:8329/64", "rtifName": "vlan3"}, "status": "MORE"}, {"status": "SUCCESS", "stp_vlan": {"ignore_bpdu": 0, "ignore_stp": 0, "vlan_name": "vlan3"}}, {"message": "mpls is not running in VR VR-Default.", "status": "ERROR"}, {"status": "ERROR"}] diff --git a/test/units/modules/network/exos/test_exos_command.py b/test/units/modules/network/exos/test_exos_command.py deleted file mode 100644 index 14ce4fda32..0000000000 --- a/test/units/modules/network/exos/test_exos_command.py +++ /dev/null @@ -1,120 +0,0 @@ -# -# (c) 2018 Extreme Networks Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json - -from units.compat.mock import patch -from units.modules.utils import set_module_args -from ansible.modules.network.exos import exos_command -from .exos_module import TestExosModule, load_fixture - - -class TestExosCommandModule(TestExosModule): - - module = exos_command - - def setUp(self): - super(TestExosCommandModule, self).setUp() - - self.mock_run_commands = patch('ansible.modules.network.exos.exos_command.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestExosCommandModule, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for item in commands: - try: - obj = json.loads(item['command']) - command = obj['command'] - except ValueError: - command = item['command'] - filename = str(command).replace(' ', '_') - output.append(load_fixture(filename)) - return output - - self.run_commands.side_effect = load_from_file - - def test_exos_command_simple(self): - set_module_args(dict(commands=['show version'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 1) - self.assertTrue(result['stdout'][0].startswith('Switch :')) - - def test_exos_command_multiple(self): - set_module_args(dict(commands=['show version', 'show version'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 2) - self.assertTrue(result['stdout'][0].startswith('Switch :')) - - def test_exos_command_wait_for(self): - wait_for = 'result[0] contains "Switch :"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module() - - def test_exos_command_wait_for_fails(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 10) - - def test_exos_command_retries(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show version'], wait_for=wait_for, retries=2)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 2) - - def test_exos_command_match_any(self): - wait_for = ['result[0] contains "Switch"', - 'result[0] contains "test string"'] - set_module_args(dict(commands=['show version'], wait_for=wait_for, match='any')) - self.execute_module() - - def test_exos_command_match_all(self): - wait_for = ['result[0] contains "Switch"', - 'result[0] contains "Switch :"'] - set_module_args(dict(commands=['show version'], wait_for=wait_for, match='all')) - self.execute_module() - - def test_exos_command_match_all_failure(self): - wait_for = ['result[0] contains "Switch :"', - 'result[0] contains "test string"'] - commands = ['show version', 'show version'] - set_module_args(dict(commands=commands, wait_for=wait_for, match='all')) - self.execute_module(failed=True) - - def test_exos_command_configure_error(self): - commands = ['disable ospf'] - set_module_args({ - 'commands': commands, - '_ansible_check_mode': True, - }) - result = self.execute_module() - self.assertEqual( - result['warnings'], - ['only show commands are supported when using check mode, not executing `disable ospf`'] - ) diff --git a/test/units/modules/network/exos/test_exos_config.py b/test/units/modules/network/exos/test_exos_config.py deleted file mode 100644 index 78b77a64c7..0000000000 --- a/test/units/modules/network/exos/test_exos_config.py +++ /dev/null @@ -1,265 +0,0 @@ -# -# (c) 2018 Extreme Networks Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch, MagicMock -from units.modules.utils import set_module_args -from ansible.plugins.cliconf.exos import Cliconf -from ansible.modules.network.exos import exos_config -from .exos_module import TestExosModule, load_fixture - - -class TestExosConfigModule(TestExosModule): - - module = exos_config - - def setUp(self): - super(TestExosConfigModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.exos.exos_config.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch('ansible.modules.network.exos.exos_config.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_run_commands = patch('ansible.modules.network.exos.exos_config.run_commands') - self.run_commands = self.mock_run_commands.start() - - self.mock_get_startup_config = patch('ansible.modules.network.exos.exos_config.get_startup_config') - self.get_startup_config = self.mock_get_startup_config.start() - - self.cliconf_obj = Cliconf(MagicMock()) - - self.mock_get_diff = patch('ansible.modules.network.exos.exos_config.get_diff') - self.get_diff = self.mock_get_diff.start() - - self.running_config = load_fixture('exos_config_config.cfg') - - def tearDown(self): - super(TestExosConfigModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_run_commands.stop() - self.mock_get_startup_config.stop() - - def load_fixtures(self, commands=None): - config_file = 'exos_config_config.cfg' - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - - def test_exos_config_unchanged(self): - src = load_fixture('exos_config_config.cfg') - set_module_args(dict(src=src)) - self.get_diff.return_value = self.cliconf_obj.get_diff(src, src) - self.execute_module() - - def test_exos_config_src(self): - src = load_fixture('exos_config_src.cfg') - set_module_args(dict(src=src)) - commands = ['configure ports 1 description-string "IDS"', - 'configure snmp sysName "marble"'] - self.get_diff.return_value = self.cliconf_obj.get_diff(src, self.running_config) - self.execute_module(changed=True, commands=commands) - - def test_exos_config_backup(self): - set_module_args(dict(backup=True)) - result = self.execute_module() - self.assertIn('__backup__', result) - - def test_exos_config_save_always(self): - self.run_commands.return_value = 'configure snmp sysName "marble"' - set_module_args(dict(save_when='always')) - self.execute_module(changed=True) - self.assertEqual(self.run_commands.call_count, 1) - self.assertEqual(self.get_config.call_count, 0) - self.assertEqual(self.load_config.call_count, 0) - args = self.run_commands.call_args[0][1] - self.assertIn('save configuration', args['command']) - - def test_exos_config_save_changed_true(self): - src = load_fixture('exos_config_src.cfg') - set_module_args(dict(src=src, save_when='changed')) - commands = ['configure ports 1 description-string "IDS"', - 'configure snmp sysName "marble"'] - self.get_diff.return_value = self.cliconf_obj.get_diff(src, self.running_config) - self.execute_module(changed=True, commands=commands) - self.assertEqual(self.run_commands.call_count, 1) - self.assertEqual(self.get_config.call_count, 1) - self.assertEqual(self.load_config.call_count, 1) - args = self.run_commands.call_args[0][1] - self.assertIn('save configuration', args['command']) - - def test_exos_config_save_changed_true_check_mode(self): - src = load_fixture('exos_config_src.cfg') - set_module_args(dict(src=src, save_when='changed', _ansible_check_mode=True)) - commands = ['configure ports 1 description-string "IDS"', - 'configure snmp sysName "marble"'] - self.get_diff.return_value = self.cliconf_obj.get_diff(src, self.running_config) - self.execute_module(changed=True, commands=commands) - self.assertEqual(self.run_commands.call_count, 0) - self.assertEqual(self.get_config.call_count, 1) - self.assertEqual(self.load_config.call_count, 0) - - def test_exos_config_save_changed_false(self): - set_module_args(dict(save_when='changed')) - self.execute_module(changed=False) - self.assertEqual(self.run_commands.call_count, 0) - self.assertEqual(self.get_config.call_count, 0) - self.assertEqual(self.load_config.call_count, 0) - - def test_exos_config_save_modified_false(self): - self.get_startup_config.return_value = load_fixture('exos_config_config.cfg') - set_module_args(dict(save_when='modified')) - self.execute_module(changed=False) - self.assertEqual(self.run_commands.call_count, 0) - self.assertEqual(self.get_config.call_count, 1) - self.assertEqual(self.get_startup_config.call_count, 1) - self.assertEqual(self.load_config.call_count, 0) - - def test_exos_config_save_modified_true(self): - self.get_startup_config.return_value = load_fixture('exos_config_modified.cfg') - set_module_args(dict(save_when='modified')) - self.execute_module(changed=True) - self.assertEqual(self.run_commands.call_count, 1) - self.assertTrue(self.get_config.call_count > 0) - self.assertEqual(self.get_startup_config.call_count, 1) - self.assertEqual(self.load_config.call_count, 0) - - def test_exos_config_lines(self): - lines = ['configure snmp sysName "marble"'] - set_module_args(dict(lines=lines)) - commands = ['configure snmp sysName "marble"'] - self.get_diff.return_value = self.cliconf_obj.get_diff('\n'.join(lines), self.running_config) - self.execute_module(changed=True, commands=commands) - - def test_exos_config_before(self): - lines = ['configure snmp sysName "marble"'] - set_module_args(dict(lines=lines, before=['test1', 'test2'])) - commands = ['test1', 'test2', 'configure snmp sysName "marble"'] - self.get_diff.return_value = self.cliconf_obj.get_diff('\n'.join(lines), self.running_config) - self.execute_module(changed=True, commands=commands, sort=False) - - def test_exos_config_after(self): - lines = ['configure snmp sysName "marble"'] - set_module_args(dict(lines=lines, after=['test1', 'test2'])) - commands = ['configure snmp sysName "marble"', 'test1', 'test2'] - self.get_diff.return_value = self.cliconf_obj.get_diff('\n'.join(lines), self.running_config) - self.execute_module(changed=True, commands=commands, sort=False) - - def test_exos_config_before_after_no_change(self): - lines = ['configure snmp sysName "x870"'] - set_module_args(dict(lines=lines, - before=['test1', 'test2'], - after=['test3', 'test4'])) - self.get_diff.return_value = self.cliconf_obj.get_diff('\n'.join(lines), self.running_config) - self.execute_module() - - def test_exos_config_config(self): - config = 'hostname localhost' - lines = ['configure snmp sysName "x870"'] - set_module_args(dict(lines=lines, config=config)) - commands = ['configure snmp sysName "x870"'] - self.get_diff.return_value = self.cliconf_obj.get_diff('\n'.join(lines), config) - self.execute_module(changed=True, commands=commands) - - def test_exos_config_match_none(self): - lines = ['configure snmp sysName "x870"'] - set_module_args(dict(lines=lines, match='none')) - self.get_diff.return_value = self.cliconf_obj.get_diff('\n'.join(lines), self.running_config, diff_match='none') - self.execute_module(changed=True, commands=lines) - - def test_exos_config_src_and_lines_fails(self): - args = dict(src='foo', lines='foo') - set_module_args(args) - self.execute_module(failed=True) - - def test_exos_config_match_exact_requires_lines(self): - args = dict(match='exact') - set_module_args(args) - self.execute_module(failed=True) - - def test_exos_config_match_strict_requires_lines(self): - args = dict(match='strict') - set_module_args(args) - self.execute_module(failed=True) - - def test_exos_config_replace_block_requires_lines(self): - args = dict(replace='block') - set_module_args(args) - self.execute_module(failed=True) - - def test_exos_config_replace_config_requires_src(self): - args = dict(replace='config') - set_module_args(args) - self.execute_module(failed=True) - - def test_exos_diff_running_unchanged(self): - args = dict(diff_against='running', _ansible_diff=True) - set_module_args(args) - self.execute_module(changed=False) - - def test_exos_diff_running_unchanged_check(self): - args = dict(diff_against='running', - _ansible_diff=True, - _ansible_check_mode=True) - set_module_args(args) - self.execute_module(changed=False) - - def test_exos_diff_startup_unchanged(self): - mock_get_startup_config = patch('ansible.modules.network.exos.exos_config.get_startup_config') - get_startup_config = mock_get_startup_config.start() - get_startup_config.return_value = load_fixture('exos_config_config.cfg') - - args = dict(diff_against='startup', _ansible_diff=True) - set_module_args(args) - self.execute_module(changed=False) - self.assertEqual(get_startup_config.call_count, 1) - - mock_get_startup_config.stop() - - def test_exos_diff_startup_changed(self): - mock_get_startup_config = patch('ansible.modules.network.exos.exos_config.get_startup_config') - get_startup_config = mock_get_startup_config.start() - get_startup_config.return_value = load_fixture('exos_config_modified.cfg') - - args = dict(diff_against='startup', _ansible_diff=True) - set_module_args(args) - self.execute_module(changed=True) - self.assertEqual(get_startup_config.call_count, 1) - - mock_get_startup_config.stop() - - def test_exos_diff_intended_unchanged(self): - intended_config = load_fixture('exos_config_config.cfg') - args = dict(diff_against='intended', - intended_config=intended_config, - _ansible_diff=True) - set_module_args(args) - self.get_diff = self.cliconf_obj.get_diff(intended_config, self.running_config) - self.execute_module(changed=False) - - def test_exos_diff_intended_modified(self): - intended_config = load_fixture('exos_config_modified.cfg') - args = dict(diff_against='intended', - intended_config=intended_config, - _ansible_diff=True) - set_module_args(args) - self.get_diff = self.cliconf_obj.get_diff(intended_config, self.running_config) - self.execute_module(changed=True) diff --git a/test/units/modules/network/exos/test_exos_facts.py b/test/units/modules/network/exos/test_exos_facts.py deleted file mode 100644 index 85880c3a44..0000000000 --- a/test/units/modules/network/exos/test_exos_facts.py +++ /dev/null @@ -1,123 +0,0 @@ -# -# (c) 2018 Extreme Networks Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json - -from units.compat.mock import patch -from units.modules.utils import set_module_args -from ansible.module_utils.common._collections_compat import Mapping -from ansible.modules.network.exos import exos_facts -from .exos_module import TestExosModule - - -class TestExosFactsModule(TestExosModule): - - module = exos_facts - - def setUp(self): - super(TestExosFactsModule, self).setUp() - - self.mock_run_commands = patch('ansible.module_utils.network.exos.facts.legacy.base.run_commands') - self.run_commands = self.mock_run_commands.start() - - self.mock_get_resource_connection = patch('ansible.module_utils.network.common.facts.facts.get_resource_connection') - self.get_resource_connection = self.mock_get_resource_connection.start() - - def tearDown(self): - super(TestExosFactsModule, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') - - for command in commands: - if isinstance(command, Mapping): - command = command['command'] - filename = str(command).replace(' ', '_') - filename = os.path.join(fixture_path, filename) - with open(filename) as f: - data = f.read() - - try: - data = json.loads(data) - except Exception: - pass - - output.append(data) - return output - - self.run_commands.side_effect = load_from_file - - def test_exos_facts_default(self): - set_module_args(dict(gather_subset='default')) - result = self.execute_module() - self.assertEqual( - result['ansible_facts']['ansible_net_model'], 'X870-32c' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_serialnum'], '1604G-00175' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_version'], '22.5.1.7' - ) - - def test_exos_facts_hardware(self): - set_module_args(dict(gather_subset='hardware')) - result = self.execute_module() - self.assertEqual( - result['ansible_facts']['ansible_net_memfree_mb'], 7298 - ) - self.assertEqual( - result['ansible_facts']['ansible_net_memtotal_mb'], 8192 - ) - - def test_exos_facts_interfaces(self): - set_module_args(dict(gather_subset='interfaces')) - result = self.execute_module() - self.assertEqual( - result['ansible_facts']['ansible_net_interfaces']['1']['bandwidth_configured'], '25000' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_interfaces']['3']['description'], 'Database Server' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_interfaces']['3']['type'], 'Ethernet' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_interfaces']['vlan1']['ipv4'][0]['address'], '10.0.1.1' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_interfaces']['vlan3']['ipv6'][0]['address'], 'fe80::202:b3ff:fe1e:8329' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_all_ipv4_addresses'], ['10.0.1.1', '192.168.1.1'] - ) - self.assertEqual( - result['ansible_facts']['ansible_net_all_ipv6_addresses'], ['fe80::202:b3ff:fe1e:8329'] - ) - self.assertEqual( - result['ansible_facts']['ansible_net_interfaces']['vlan3']['type'], 'VLAN' - ) diff --git a/test/units/modules/network/f5/test_bigip_gtm_facts.py b/test/units/modules/network/f5/test_bigip_gtm_facts.py deleted file mode 100644 index b76bef6c51..0000000000 --- a/test/units/modules/network/f5/test_bigip_gtm_facts.py +++ /dev/null @@ -1,137 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (c) 2017 F5 Networks Inc. -# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -import sys - -import pytest - -pytestmark = [] - -if sys.version_info < (2, 7): - pytestmark.append(pytest.mark.skip("F5 Ansible modules require Python >= 2.7")) - -from units.compat import unittest -from units.compat.mock import Mock -from ansible.module_utils.basic import AnsibleModule -from ansible.module_utils.six import iteritems - -try: - from library.modules.bigip_gtm_facts import Parameters - from library.modules.bigip_gtm_facts import ModuleManager - from library.modules.bigip_gtm_facts import PoolFactManager - from library.modules.bigip_gtm_facts import TypedPoolFactManager - from library.modules.bigip_gtm_facts import ArgumentSpec - from f5.bigip.tm.gtm.pool import A - from f5.utils.responses.handlers import Stats - from test.unit.modules.utils import set_module_args -except ImportError: - try: - from ansible.modules.network.f5.bigip_gtm_pool import Parameters - from ansible.modules.network.f5.bigip_gtm_pool import ModuleManager - from ansible.modules.network.f5.bigip_gtm_pool import PoolFactManager - from ansible.modules.network.f5.bigip_gtm_pool import TypedPoolFactManager - from ansible.modules.network.f5.bigip_gtm_pool import ArgumentSpec - from f5.bigip.tm.gtm.pool import A - from f5.utils.responses.handlers import Stats - from units.modules.utils import set_module_args - except ImportError: - pytestmark.append(pytest.mark.skip("F5 Ansible modules require the f5-sdk Python library")) - # pytestmark will cause this test to skip but we have to define A so that classes can be - # defined below - A = object - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(name): - path = os.path.join(fixture_path, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as f: - data = f.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class FakeStatResource(object): - def __init__(self, obj): - self.entries = obj - - -class FakeARecord(A): - def __init__(self, *args, **kwargs): - attrs = kwargs.pop('attrs', {}) - for key, value in iteritems(attrs): - setattr(self, key, value) - - -class TestParameters(unittest.TestCase): - def test_module_parameters(self): - args = dict( - include=['pool'], - filter='name.*' - ) - p = Parameters(params=args) - assert p.include == ['pool'] - assert p.filter == 'name.*' - - -class TestManager(unittest.TestCase): - - def setUp(self): - self.spec = ArgumentSpec() - - def test_get_typed_pool_facts(self, *args): - set_module_args(dict( - include='pool', - password='password', - server='localhost', - user='admin' - )) - - fixture1 = load_fixture('load_gtm_pool_a_collection.json') - fixture2 = load_fixture('load_gtm_pool_a_example_stats.json') - collection = [FakeARecord(attrs=x) for x in fixture1['items']] - stats = Stats(FakeStatResource(fixture2['entries'])) - - module = AnsibleModule( - argument_spec=self.spec.argument_spec, - supports_check_mode=self.spec.supports_check_mode - ) - - # Override methods in the specific type of manager - tfm = TypedPoolFactManager(module=module) - tfm.read_collection_from_device = Mock(return_value=collection) - tfm.read_stats_from_device = Mock(return_value=stats.stat) - - tm = PoolFactManager(module=module) - tm.version_is_less_than_12 = Mock(return_value=False) - tm.get_manager = Mock(return_value=tfm) - - # Override methods to force specific logic in the module to happen - mm = ModuleManager(module=module) - mm.get_manager = Mock(return_value=tm) - mm.gtm_provisioned = Mock(return_value=True) - - results = mm.exec_module() - - assert results['changed'] is True - assert 'pool' in results - assert len(results['pool']) > 0 - assert 'load_balancing_mode' in results['pool'][0] diff --git a/test/units/modules/network/f5/test_bigip_security_address_list.py b/test/units/modules/network/f5/test_bigip_security_address_list.py deleted file mode 100644 index dd8a48feea..0000000000 --- a/test/units/modules/network/f5/test_bigip_security_address_list.py +++ /dev/null @@ -1,135 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright: (c) 2017, F5 Networks Inc. -# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -import pytest -import sys - -pytestmark = [] - -if sys.version_info < (2, 7): - pytestmark.append(pytest.mark.skip("F5 Ansible modules require Python >= 2.7")) - -from units.compat import unittest -from units.compat.mock import Mock -from ansible.module_utils.basic import AnsibleModule - -try: - from library.modules.bigip_security_address_list import ApiParameters - from library.modules.bigip_security_address_list import ModuleParameters - from library.modules.bigip_security_address_list import ModuleManager - from library.modules.bigip_security_address_list import ArgumentSpec - from test.unit.modules.utils import set_module_args -except ImportError: - try: - from ansible.modules.network.f5.bigip_security_address_list import ApiParameters - from ansible.modules.network.f5.bigip_security_address_list import ModuleParameters - from ansible.modules.network.f5.bigip_security_address_list import ModuleManager - from ansible.modules.network.f5.bigip_security_address_list import ArgumentSpec - from units.modules.utils import set_module_args - except ImportError: - pytestmark.append(pytest.mark.skip("F5 Ansible modules require the f5-sdk Python library")) - - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(name): - path = os.path.join(fixture_path, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as f: - data = f.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class TestParameters(unittest.TestCase): - def test_module_parameters(self): - args = dict( - name='foo', - description='this is a description', - addresses=['1.1.1.1', '2.2.2.2'], - address_ranges=['3.3.3.3-4.4.4.4', '5.5.5.5-6.6.6.6'], - address_lists=['/Common/foo', 'foo'] - ) - - p = ModuleParameters(params=args) - assert p.name == 'foo' - assert p.description == 'this is a description' - assert len(p.addresses) == 2 - assert len(p.address_ranges) == 2 - assert len(p.address_lists) == 2 - - def test_api_parameters(self): - args = load_fixture('load_security_address_list_1.json') - - p = ApiParameters(params=args) - assert len(p.addresses) == 2 - assert len(p.address_ranges) == 2 - assert len(p.address_lists) == 1 - assert len(p.fqdns) == 1 - assert len(p.geo_locations) == 5 - assert sorted(p.addresses) == ['1.1.1.1', '2700:bc00:1f10:101::6'] - assert sorted(p.address_ranges) == ['2.2.2.2-3.3.3.3', '5.5.5.5-6.6.6.6'] - assert p.address_lists[0] == '/Common/foo' - - -class TestManager(unittest.TestCase): - - def setUp(self): - self.spec = ArgumentSpec() - - def test_create(self, *args): - set_module_args(dict( - name='foo', - description='this is a description', - addresses=['1.1.1.1', '2.2.2.2'], - address_ranges=['3.3.3.3-4.4.4.4', '5.5.5.5-6.6.6.6'], - address_lists=['/Common/foo', 'foo'], - geo_locations=[ - dict(country='US', region='Los Angeles'), - dict(country='China'), - dict(country='EU') - ], - fqdns=['google.com', 'mit.edu'], - password='password', - server='localhost', - user='admin' - )) - - module = AnsibleModule( - argument_spec=self.spec.argument_spec, - supports_check_mode=self.spec.supports_check_mode - ) - mm = ModuleManager(module=module) - - # Override methods to force specific logic in the module to happen - mm.exists = Mock(return_value=False) - mm.create_on_device = Mock(return_value=True) - - results = mm.exec_module() - - assert results['changed'] is True - assert 'addresses' in results - assert 'address_lists' in results - assert 'address_ranges' in results - assert len(results['addresses']) == 2 - assert len(results['address_ranges']) == 2 - assert len(results['address_lists']) == 2 - assert results['description'] == 'this is a description' diff --git a/test/units/modules/network/f5/test_bigip_security_port_list.py b/test/units/modules/network/f5/test_bigip_security_port_list.py deleted file mode 100644 index 33283de97c..0000000000 --- a/test/units/modules/network/f5/test_bigip_security_port_list.py +++ /dev/null @@ -1,127 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright: (c) 2017, F5 Networks Inc. -# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -import pytest -import sys - -pytestmark = [] - -if sys.version_info < (2, 7): - pytestmark.append(pytest.mark.skip("F5 Ansible modules require Python >= 2.7")) - -from units.compat import unittest -from units.compat.mock import Mock -from ansible.module_utils.basic import AnsibleModule - -try: - from library.modules.bigip_security_port_list import ApiParameters - from library.modules.bigip_security_port_list import ModuleParameters - from library.modules.bigip_security_port_list import ModuleManager - from library.modules.bigip_security_port_list import ArgumentSpec - from test.unit.modules.utils import set_module_args -except ImportError: - try: - from ansible.modules.network.f5.bigip_security_port_list import ApiParameters - from ansible.modules.network.f5.bigip_security_port_list import ModuleParameters - from ansible.modules.network.f5.bigip_security_port_list import ModuleManager - from ansible.modules.network.f5.bigip_security_port_list import ArgumentSpec - from units.modules.utils import set_module_args - except ImportError: - pytestmark.append(pytest.mark.skip("F5 Ansible modules require the f5-sdk Python library")) - - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(name): - path = os.path.join(fixture_path, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as f: - data = f.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class TestParameters(unittest.TestCase): - def test_module_parameters(self): - args = dict( - name='foo', - description='this is a description', - ports=[1, 2, 3, 4], - port_ranges=['10-20', '30-40', '50-60'], - port_lists=['/Common/foo', 'foo'] - ) - - p = ModuleParameters(params=args) - assert p.name == 'foo' - assert p.description == 'this is a description' - assert len(p.ports) == 4 - assert len(p.port_ranges) == 3 - assert len(p.port_lists) == 2 - - def test_api_parameters(self): - args = load_fixture('load_security_port_list_1.json') - - p = ApiParameters(params=args) - assert len(p.ports) == 4 - assert len(p.port_ranges) == 3 - assert len(p.port_lists) == 1 - assert sorted(p.ports) == [1, 2, 3, 4] - assert sorted(p.port_ranges) == ['10-20', '30-40', '50-60'] - assert p.port_lists[0] == '/Common/_sys_self_allow_tcp_defaults' - - -class TestManager(unittest.TestCase): - - def setUp(self): - self.spec = ArgumentSpec() - - def test_create(self, *args): - set_module_args(dict( - name='foo', - description='this is a description', - ports=[1, 2, 3, 4], - port_ranges=['10-20', '30-40', '50-60'], - port_lists=['/Common/foo', 'foo'], - password='password', - server='localhost', - user='admin' - )) - - module = AnsibleModule( - argument_spec=self.spec.argument_spec, - supports_check_mode=self.spec.supports_check_mode - ) - mm = ModuleManager(module=module) - - # Override methods to force specific logic in the module to happen - mm.exists = Mock(side_effect=[False, True]) - mm.create_on_device = Mock(return_value=True) - - results = mm.exec_module() - - assert results['changed'] is True - assert 'ports' in results - assert 'port_lists' in results - assert 'port_ranges' in results - assert len(results['ports']) == 4 - assert len(results['port_ranges']) == 3 - assert len(results['port_lists']) == 2 - assert results['description'] == 'this is a description' diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_device.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_device.json deleted file mode 100644 index 90dba75f0e..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_device.json +++ /dev/null @@ -1,934 +0,0 @@ -{ - "add_device": [ - { - "url": "/dvm/cmd/add/device/", - "raw_response": { - "device": { - "adm_pass": "fortinet", - "os_ver": 6, - "ip": "10.7.220.151", - "mgmt.__data[6]": 1, - "vm_mem": 1003, - "maxvdom": 10, - "conn_mode": 1, - "platform_id": 112, - "branch_pt": 231, - "hostname": "ansible-fgt01", - "source": 1, - "mgmt_id": 1014939351, - "version": 600, - "build": 231, - "mgmt_mode": 3, - "adm_usr": "admin", - "av_ver": "1.00000(2018-04-09 18:07)", - "mgmt.__data[4]": 1052262400, - "oid": 403, - "conn_status": 1, - "beta": -1, - "dev_status": 1, - "platform_str": "FortiGate-VM64", - "last_checked": 1550698141, - "vm_mem_limit": 6144, - "mgmt.__data[0]": 3870643, - "name": "FGT1", - "tab_status": "<unknown>", - "patch": 4, - "vm_cpu_limit": 4, - "vm_status": 3, - "ips_ver": "6.00741(2015-12-01 02:30)", - "flags": 2097169, - "sn": "FGVM04TM18000391", - "mr": 0, - "os_type": 0, - "vm_cpu": 1 - } - }, - "datagram_sent": { - "device": { - "adm_pass": "fortinet", - "name": "FGT1", - "ip": "10.7.220.151", - "flags": 24, - "sn": null, - "mgmt_mode": "fmgfaz", - "adm_usr": "admin" - }, - "flags": [ - "create_task", - "nonblocking" - ], - "odd_request_form": "True", - "adom": "ansible" - }, - "paramgram_used": { - "device_username": "admin", - "adom": "ansible", - "device_ip": "10.7.220.151", - "device_unique_name": "FGT1", - "mode": "add", - "device_serial": null, - "device_password": "fortinet" - }, - "post_method": "exec" - }, - { - "url": "/dvm/cmd/add/device/", - "paramgram_used": { - "device_username": "admin", - "adom": "ansible", - "device_ip": "10.7.220.152", - "device_unique_name": "FGT2", - "mode": "add", - "device_serial": null, - "device_password": "fortinet" - }, - "datagram_sent": { - "device": { - "adm_pass": "fortinet", - "name": "FGT2", - "ip": "10.7.220.152", - "flags": 24, - "sn": null, - "mgmt_mode": "fmgfaz", - "adm_usr": "admin" - }, - "flags": [ - "create_task", - "nonblocking" - ], - "odd_request_form": "True", - "adom": "ansible" - }, - "raw_response": { - "device": { - "adm_pass": "fortinet", - "ip": "10.7.220.152", - "mgmt.__data[6]": 1, - "vm_mem": 1003, - "maxvdom": 10, - "conn_mode": 1, - "vm_cpu_limit": 4, - "vm_cpu": 1, - "branch_pt": 231, - "hostname": "ansible-fgt02", - "source": 1, - "mgmt_id": 1879100317, - "version": 600, - "build": 231, - "mgmt_mode": 3, - "adm_usr": "admin", - "av_ver": "1.00000(2018-04-09 18:07)", - "oid": 415, - "conn_status": 1, - "beta": -1, - "dev_status": 1, - "platform_str": "FortiGate-VM64", - "last_checked": 1550698177, - "patch": 4, - "vm_mem_limit": 6144, - "mgmt.__data[0]": 3870643, - "name": "FGT2", - "tab_status": "<unknown>", - "mgmt.__data[4]": 1052262400, - "platform_id": 112, - "vm_status": 3, - "ips_ver": "6.00741(2015-12-01 02:30)", - "flags": 2097169, - "sn": "FGVM04TM18000392", - "mr": 0, - "os_type": 0, - "os_ver": 6 - } - }, - "post_method": "exec" - }, - { - "url": "/dvm/cmd/add/device/", - "raw_response": { - "device": { - "adm_pass": "fortinet", - "os_ver": 6, - "ip": "10.7.220.153", - "mgmt.__data[6]": 1, - "vm_mem": 1003, - "maxvdom": 10, - "conn_mode": 1, - "platform_id": 112, - "branch_pt": 231, - "hostname": "ansible-fgt03", - "source": 1, - "mgmt_id": 104863251, - "version": 600, - "build": 231, - "mgmt_mode": 3, - "adm_usr": "admin", - "av_ver": "1.00000(2018-04-09 18:07)", - "mgmt.__data[4]": 1052262400, - "oid": 427, - "conn_status": 1, - "beta": -1, - "dev_status": 1, - "platform_str": "FortiGate-VM64", - "last_checked": 1550698204, - "vm_mem_limit": 6144, - "mgmt.__data[0]": 3870643, - "name": "FGT3", - "tab_status": "<unknown>", - "patch": 4, - "vm_cpu_limit": 4, - "vm_status": 3, - "ips_ver": "6.00741(2015-12-01 02:30)", - "flags": 2097169, - "sn": "FGVM04TM18000393", - "mr": 0, - "os_type": 0, - "vm_cpu": 1 - } - }, - "datagram_sent": { - "device": { - "adm_pass": "fortinet", - "name": "FGT3", - "ip": "10.7.220.153", - "flags": 24, - "sn": null, - "mgmt_mode": "fmgfaz", - "adm_usr": "admin" - }, - "flags": [ - "create_task", - "nonblocking" - ], - "odd_request_form": "True", - "adom": "ansible" - }, - "paramgram_used": { - "device_username": "admin", - "adom": "ansible", - "device_ip": "10.7.220.153", - "device_unique_name": "FGT3", - "mode": "add", - "device_serial": null, - "device_password": "fortinet" - }, - "post_method": "exec" - } - ], - "discover_device": [ - { - "url": "/dvm/cmd/discover/device/", - "paramgram_used": { - "device_username": "admin", - "adom": "ansible", - "device_ip": "10.7.220.151", - "device_unique_name": "FGT1", - "mode": "add", - "device_serial": null, - "device_password": "fortinet" - }, - "datagram_sent": { - "device": { - "adm_pass": "fortinet", - "ip": "10.7.220.151", - "adm_usr": "admin" - }, - "odd_request_form": "True" - }, - "raw_response": { - "device": { - "adm_pass": "fortinet", - "ip": "10.7.220.151", - "vm_mem": 1003, - "maxvdom": 10, - "conn_mode": 1, - "vm_cpu_limit": 4, - "vm_cpu": 1, - "branch_pt": 231, - "hostname": "ansible-fgt01", - "source": 1, - "version": 600, - "build": 231, - "adm_usr": "admin", - "av_ver": "1.00000(2018-04-09 18:07)", - "conn_status": 1, - "beta": -1, - "dev_status": 1, - "platform_str": "FortiGate-VM64", - "last_checked": 1550698136, - "vm_mem_limit": 6144, - "name": "ansible-fgt01", - "tab_status": "<unknown>", - "patch": 4, - "platform_id": 112, - "vm_status": 3, - "ips_ver": "6.00741(2015-12-01 02:30)", - "flags": 2097153, - "sn": "FGVM04TM18000391", - "mr": 0, - "os_type": 0, - "os_ver": 6 - } - }, - "post_method": "exec" - }, - { - "url": "/dvm/cmd/discover/device/", - "raw_response": { - "device": { - "adm_pass": "fortinet", - "os_ver": 6, - "ip": "10.7.220.152", - "vm_mem": 1003, - "maxvdom": 10, - "conn_mode": 1, - "platform_id": 112, - "branch_pt": 231, - "hostname": "ansible-fgt02", - "source": 1, - "version": 600, - "build": 231, - "adm_usr": "admin", - "av_ver": "1.00000(2018-04-09 18:07)", - "conn_status": 1, - "beta": -1, - "dev_status": 1, - "platform_str": "FortiGate-VM64", - "last_checked": 1550698173, - "vm_mem_limit": 6144, - "name": "ansible-fgt02", - "tab_status": "<unknown>", - "patch": 4, - "vm_cpu_limit": 4, - "vm_status": 3, - "ips_ver": "6.00741(2015-12-01 02:30)", - "flags": 2097153, - "sn": "FGVM04TM18000392", - "mr": 0, - "os_type": 0, - "vm_cpu": 1 - } - }, - "datagram_sent": { - "device": { - "adm_pass": "fortinet", - "ip": "10.7.220.152", - "adm_usr": "admin" - }, - "odd_request_form": "True" - }, - "paramgram_used": { - "device_username": "admin", - "adom": "ansible", - "device_ip": "10.7.220.152", - "device_unique_name": "FGT2", - "mode": "add", - "device_serial": null, - "device_password": "fortinet" - }, - "post_method": "exec" - }, - { - "url": "/dvm/cmd/discover/device/", - "paramgram_used": { - "device_username": "admin", - "adom": "ansible", - "device_ip": "10.7.220.153", - "device_unique_name": "FGT3", - "mode": "add", - "device_serial": null, - "device_password": "fortinet" - }, - "datagram_sent": { - "device": { - "adm_pass": "fortinet", - "ip": "10.7.220.153", - "adm_usr": "admin" - }, - "odd_request_form": "True" - }, - "raw_response": { - "device": { - "adm_pass": "fortinet", - "ip": "10.7.220.153", - "vm_mem": 1003, - "maxvdom": 10, - "conn_mode": 1, - "vm_cpu_limit": 4, - "vm_cpu": 1, - "branch_pt": 231, - "hostname": "ansible-fgt03", - "source": 1, - "version": 600, - "build": 231, - "adm_usr": "admin", - "av_ver": "1.00000(2018-04-09 18:07)", - "conn_status": 1, - "beta": -1, - "dev_status": 1, - "platform_str": "FortiGate-VM64", - "last_checked": 1550698200, - "vm_mem_limit": 6144, - "name": "ansible-fgt03", - "tab_status": "<unknown>", - "patch": 4, - "platform_id": 112, - "vm_status": 3, - "ips_ver": "6.00741(2015-12-01 02:30)", - "flags": 2097153, - "sn": "FGVM04TM18000393", - "mr": 0, - "os_type": 0, - "os_ver": 6 - } - }, - "post_method": "exec" - } - ], - "get_device": [ - { - "url": "/dvmdb/adom/ansible/device/FGT1", - "raw_response": { - "adm_pass": [ - "ENC", - "tUEPOPpQM6XsNwOPcWyrWoPoKo2DMjtFqOYEzLfF+99FpTkDmKa+GTmwBMLV1ns0OYrNgWnk6RPbRjSZSvu2LPYvCcWfQONLEZ1HlczZ00kEtDRCvRxG6l7FGtcj1Pl7QO9khy2lKWx4/lbPmLNqCzwCmlkAO5fGXR3nCbWPXH5BrRwO" - ], - "faz.perm": 0, - "foslic_ram": 0, - "foslic_type": "temporary", - "last_checked": 1550635232, - "psk": "", - "opts": 0, - "ip": "10.7.220.151", - "foslic_utm": null, - "logdisk_size": 30235, - "mgmt.__data[6]": 1, - "foslic_last_sync": 0, - "app_ver": "", - "ips_ext": 0, - "vm_mem": 1003, - "mgmt.__data[4]": 1052262400, - "maxvdom": 10, - "conn_mode": "passive", - "location_from": "GUI(10.0.0.151)", - "mgmt.__data[1]": 0, - "mgmt.__data[2]": 0, - "faz.full_act": 0, - "os_ver": "6.0", - "node_flags": 0, - "hostname": "ansible-fgt01", - "mgmt.__data[5]": 0, - "mgmt_id": 2076985412, - "hw_rev_minor": 0, - "mgmt_if": "port1", - "source": "faz", - "ha_mode": "standalone", - "version": 600, - "build": 231, - "latitude": "47.473991", - "foslic_cpu": 0, - "last_resync": 1550634702, - "desc": "", - "adm_usr": "admin", - "vm_lic_expire": 0, - "ha_slave": null, - "av_ver": "1.00000(2018-04-09 18:07)", - "fsw_cnt": 0, - "tunnel_cookie": "", - "foslic_inst_time": 0, - "lic_flags": 0, - "checksum": "89 1f b7 b7 2a a6 af 54 c5 a5 aa e3 32 92 c7 55", - "oid": 366, - "conn_status": "up", - "fex_cnt": 0, - "mgmt.__data[3]": 0, - "beta": -1, - "ha_group_name": "", - "dev_status": "installed", - "platform_str": "FortiGate-VM64", - "mgmt.__data[7]": 0, - "faz.used": 0, - "fap_cnt": 0, - "foslic_dr_site": "disable", - "mgmt_mode": "fmgfaz", - "vdom": [ - { - "status": null, - "oid": 3, - "name": "root", - "node_flags": 0, - "devid": "FGT1", - "tab_status": null, - "comments": "", - "flags": null, - "opmode": "nat", - "ext_flags": 1, - "rtm_prof_id": 0 - } - ], - "hdisk_size": 30720, - "vm_mem_limit": 6144, - "mgmt.__data[0]": 3870643, - "ha_group_id": 0, - "name": "FGT1", - "faz.quota": 0, - "mgt_vdom": "root", - "tab_status": "", - "tunnel_ip": "169.254.0.5", - "longitude": "-122.260963", - "patch": 4, - "vm_cpu_limit": 4, - "vm_status": 3, - "lic_region": "", - "hw_rev_major": 0, - "flags": [ - "has_hdd", - "reload" - ], - "sn": "FGVM04TM18000391", - "mr": 0, - "conf_status": "insync", - "os_type": "fos", - "ips_ver": "6.00741(2015-12-01 02:30)", - "db_status": "nomod", - "branch_pt": 231, - "vm_cpu": 1 - }, - "datagram_sent": { - "filter": [ - "name", - "==", - "FGT1" - ], - "adom": "ansible" - }, - "paramgram_used": { - "device_username": "admin", - "adom": "ansible", - "device_ip": "10.7.220.151", - "device_unique_name": "FGT1", - "mode": "add", - "device_serial": null, - "device_password": "fortinet" - }, - "post_method": "get" - }, - { - "url": "/dvmdb/adom/ansible/device/FGT2", - "paramgram_used": { - "device_username": "admin", - "adom": "ansible", - "device_ip": "10.7.220.152", - "device_unique_name": "FGT2", - "mode": "add", - "device_serial": null, - "device_password": "fortinet" - }, - "datagram_sent": { - "filter": [ - "name", - "==", - "FGT2" - ], - "adom": "ansible" - }, - "raw_response": { - "adm_pass": [ - "ENC", - "F27zJSIl5O8O5rlXIi7BzHIUO5d3ZAuNxoniR42zOxGHyqZCx1OyA81b7v6dNwE30nBhjqfD+IDRmSPEW6qxKIQ2UV5eh8zgDNj8i5lj5gTvbLN5A4BR4CMLQo7nYTTomHUJQrGPfYskuxm74JGik+di9TrqOhvpZL8d1zj3XHx5pq+d" - ], - "faz.perm": 0, - "hostname": "ansible-fgt02", - "foslic_type": "temporary", - "mgmt.__data[7]": 0, - "av_ver": "1.00000(2018-04-09 18:07)", - "ip": "10.7.220.152", - "foslic_utm": null, - "logdisk_size": 30235, - "mgmt.__data[6]": 1, - "fsw_cnt": 0, - "app_ver": "", - "ips_ext": 0, - "vm_mem": 1003, - "maxvdom": 10, - "conn_mode": "passive", - "mgt_vdom": "root", - "mgmt.__data[1]": 0, - "hw_rev_major": 0, - "name": "FGT2", - "node_flags": 0, - "foslic_ram": 0, - "mgmt.__data[5]": 0, - "ha_mode": "standalone", - "hw_rev_minor": 0, - "mgmt_if": "port1", - "source": "faz", - "mgmt_id": 1555154046, - "version": 600, - "build": 231, - "latitude": "47.473991", - "foslic_cpu": 0, - "last_resync": 1550634728, - "hdisk_size": 30720, - "adm_usr": "admin", - "vm_lic_expire": 0, - "sn": "FGVM04TM18000392", - "ha_slave": null, - "psk": "", - "foslic_last_sync": 0, - "tunnel_cookie": "", - "vm_mem_limit": 6144, - "mr": 0, - "lic_flags": 0, - "oid": 378, - "conn_status": "up", - "fex_cnt": 0, - "vm_cpu": 1, - "beta": -1, - "ha_group_name": "", - "dev_status": "retrieved", - "platform_str": "FortiGate-VM64", - "last_checked": 1550634728, - "branch_pt": 231, - "faz.used": 0, - "patch": 4, - "fap_cnt": 0, - "foslic_dr_site": "disable", - "mgmt_mode": "fmgfaz", - "vdom": [ - { - "status": null, - "oid": 3, - "name": "root", - "node_flags": 4, - "devid": "FGT2", - "tab_status": null, - "comments": "", - "flags": null, - "opmode": "nat", - "ext_flags": 1, - "rtm_prof_id": 0 - } - ], - "desc": "", - "foslic_inst_time": 0, - "mgmt.__data[0]": 3870643, - "ha_group_id": 0, - "location_from": "GUI(10.0.0.151)", - "faz.quota": 0, - "faz.full_act": 0, - "tab_status": "", - "tunnel_ip": "169.254.0.3", - "longitude": "-122.260963", - "mgmt.__data[4]": 1052262400, - "vm_cpu_limit": 4, - "vm_status": 3, - "lic_region": "", - "mgmt.__data[2]": 0, - "flags": [ - "has_hdd", - "reload" - ], - "opts": 0, - "checksum": "56 e9 a7 14 e2 61 05 f9 ec 2b 00 1e 36 bc af c8", - "conf_status": "insync", - "os_type": "fos", - "ips_ver": "6.00741(2015-12-01 02:30)", - "db_status": "mod", - "mgmt.__data[3]": 0, - "os_ver": "6.0" - }, - "post_method": "get" - }, - { - "url": "/dvmdb/adom/ansible/device/FGT3", - "raw_response": { - "adm_pass": [ - "ENC", - "F27zJSIl5O8O5rlXIi7BzHIUO5d3ZAuNxoniR42zOxGHyqZCx1OyA81b7v6dNwE30nBhjqfD+IDRmSPEW6qxKIQ2UV5eh8zgDNj8i5lj5gTvbLN5A4BR4CMLQo7nYTTomHUJQrGPfYskuxm74JGik+di9TrqOhvpZL8d1zj3XHx5pq+d" - ], - "faz.perm": 0, - "foslic_ram": 0, - "foslic_type": "temporary", - "last_checked": 1550634754, - "psk": "", - "opts": 0, - "ip": "10.7.220.153", - "foslic_utm": null, - "logdisk_size": 30235, - "mgmt.__data[6]": 1, - "foslic_last_sync": 0, - "app_ver": "", - "ips_ext": 0, - "vm_mem": 1003, - "mgmt.__data[4]": 1052262400, - "desc": "", - "maxvdom": 10, - "conn_mode": "passive", - "location_from": "GUI(10.0.0.151)", - "mgmt.__data[1]": 0, - "os_ver": "6.0", - "faz.full_act": 0, - "node_flags": 0, - "hostname": "ansible-fgt03", - "mgmt.__data[5]": 0, - "mgmt_id": 1175062219, - "hw_rev_minor": 0, - "mgmt_if": "port1", - "source": "faz", - "ha_mode": "standalone", - "version": 600, - "build": 231, - "latitude": "47.473991", - "foslic_cpu": 0, - "last_resync": 1550634754, - "hdisk_size": 30720, - "adm_usr": "admin", - "vm_lic_expire": 0, - "conf_status": "insync", - "ha_slave": null, - "av_ver": "1.00000(2018-04-09 18:07)", - "fsw_cnt": 0, - "tunnel_cookie": "", - "foslic_inst_time": 0, - "lic_flags": 0, - "oid": 390, - "conn_status": "up", - "fex_cnt": 0, - "mgmt.__data[3]": 0, - "beta": -1, - "ha_group_name": "", - "dev_status": "retrieved", - "platform_str": "FortiGate-VM64", - "mgmt.__data[7]": 0, - "faz.used": 0, - "fap_cnt": 0, - "foslic_dr_site": "disable", - "mgmt_mode": "fmgfaz", - "vdom": [ - { - "status": null, - "oid": 3, - "name": "root", - "node_flags": 4, - "devid": "FGT3", - "tab_status": null, - "comments": "", - "flags": null, - "opmode": "nat", - "ext_flags": 1, - "rtm_prof_id": 0 - } - ], - "name": "FGT3", - "vm_mem_limit": 6144, - "mgmt.__data[0]": 3870643, - "ha_group_id": 0, - "mgmt.__data[2]": 0, - "faz.quota": 0, - "checksum": "30 fc af f5 58 e4 1e 2d 46 c0 07 4b b6 4b c2 1b", - "tab_status": "", - "tunnel_ip": "169.254.0.4", - "longitude": "-122.260963", - "patch": 4, - "vm_cpu_limit": 4, - "vm_status": 3, - "lic_region": "", - "mgt_vdom": "root", - "flags": [ - "has_hdd", - "reload" - ], - "sn": "FGVM04TM18000393", - "mr": 0, - "hw_rev_major": 0, - "os_type": "fos", - "ips_ver": "6.00741(2015-12-01 02:30)", - "db_status": "mod", - "branch_pt": 231, - "vm_cpu": 1 - }, - "datagram_sent": { - "filter": [ - "name", - "==", - "FGT3" - ], - "adom": "ansible" - }, - "paramgram_used": { - "device_username": "admin", - "adom": "ansible", - "device_ip": "10.7.220.153", - "device_unique_name": "FGT3", - "mode": "add", - "device_serial": null, - "device_password": "fortinet" - }, - "post_method": "get" - }, - { - "raw_response": { - "status": { - "message": "Object does not exist", - "code": -3 - }, - "url": "/dvmdb/adom/ansible/device/FGT1" - }, - "datagram_sent": { - "filter": [ - "name", - "==", - "FGT1" - ], - "adom": "ansible" - }, - "paramgram_used": { - "device_username": "admin", - "adom": "ansible", - "device_ip": "10.7.220.151", - "device_unique_name": "FGT1", - "mode": "add", - "device_serial": null, - "device_password": "fortinet" - }, - "post_method": "get" - }, - { - "paramgram_used": { - "device_username": "admin", - "adom": "ansible", - "device_ip": "10.7.220.152", - "device_unique_name": "FGT2", - "mode": "add", - "device_serial": null, - "device_password": "fortinet" - }, - "datagram_sent": { - "filter": [ - "name", - "==", - "FGT2" - ], - "adom": "ansible" - }, - "raw_response": { - "status": { - "message": "Object does not exist", - "code": -3 - }, - "url": "/dvmdb/adom/ansible/device/FGT2" - }, - "post_method": "get" - }, - { - "raw_response": { - "status": { - "message": "Object does not exist", - "code": -3 - }, - "url": "/dvmdb/adom/ansible/device/FGT3" - }, - "datagram_sent": { - "filter": [ - "name", - "==", - "FGT3" - ], - "adom": "ansible" - }, - "paramgram_used": { - "device_username": "admin", - "adom": "ansible", - "device_ip": "10.7.220.153", - "device_unique_name": "FGT3", - "mode": "add", - "device_serial": null, - "device_password": "fortinet" - }, - "post_method": "get" - } - ], - "delete_device": [ - { - "paramgram_used": { - "device_username": "admin", - "adom": "root", - "device_ip": "10.7.220.151", - "device_unique_name": "FGT1", - "mode": "delete", - "device_serial": null, - "device_password": "fortinet" - }, - "datagram_sent": { - "device": "FGT1", - "flags": [ - "create_task", - "nonblocking" - ], - "adom": "root" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/dvm/cmd/del/device/" - }, - "post_method": "exec" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/dvm/cmd/del/device/" - }, - "datagram_sent": { - "device": "FGT2", - "flags": [ - "create_task", - "nonblocking" - ], - "adom": "ansible" - }, - "paramgram_used": { - "device_username": "admin", - "adom": "ansible", - "device_ip": "10.7.220.152", - "device_unique_name": "FGT2", - "mode": "delete", - "device_serial": null, - "device_password": "fortinet" - }, - "post_method": "exec" - }, - { - "paramgram_used": { - "device_username": "admin", - "adom": "ansible", - "device_ip": "10.7.220.153", - "device_unique_name": "FGT3", - "mode": "delete", - "device_serial": null, - "device_password": "fortinet" - }, - "datagram_sent": { - "device": "FGT3", - "flags": [ - "create_task", - "nonblocking" - ], - "adom": "ansible" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/dvm/cmd/del/device/" - }, - "post_method": "exec" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_device_config.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_device_config.json deleted file mode 100644 index c4a68ecd05..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_device_config.json +++ /dev/null @@ -1,204 +0,0 @@ -{ - "update_device_interface": [ - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/device/FGT1/global/system/interface/port2" - }, - "datagram_sent": { - "ip": "10.1.1.1/24", - "allowaccess": [ - "ping", - "telnet", - "https", - "http" - ] - }, - "paramgram_used": { - "adom": "ansible", - "install_config": "disable", - "device_unique_name": "FGT1", - "interface": "port2", - "device_hostname": null, - "interface_ip": "10.1.1.1/24", - "interface_allow_access": "ping, telnet, https, http" - }, - "post_method": "update" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/device/FGT2/global/system/interface/port2" - }, - "datagram_sent": { - "ip": "10.1.2.1/24", - "allowaccess": [ - "ping", - "telnet", - "https", - "http" - ] - }, - "paramgram_used": { - "adom": "ansible", - "install_config": "disable", - "device_unique_name": "FGT2", - "interface": "port2", - "device_hostname": null, - "interface_ip": "10.1.2.1/24", - "interface_allow_access": "ping, telnet, https, http" - }, - "post_method": "update" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/device/FGT3/global/system/interface/port2" - }, - "datagram_sent": { - "ip": "10.1.3.1/24", - "allowaccess": [ - "ping", - "telnet", - "https", - "http" - ] - }, - "paramgram_used": { - "adom": "ansible", - "install_config": "disable", - "device_unique_name": "FGT3", - "interface": "port2", - "device_hostname": null, - "interface_ip": "10.1.3.1/24", - "interface_allow_access": "ping, telnet, https, http" - }, - "post_method": "update" - } - ], - "update_device_hostname": [ - { - "paramgram_used": { - "adom": "ansible", - "interface": null, - "device_unique_name": "FGT1", - "install_config": "disable", - "device_hostname": "ansible-fgt01", - "interface_ip": null, - "interface_allow_access": null - }, - "datagram_sent": { - "hostname": "ansible-fgt01" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "pm/config/device/FGT1/global/system/global" - }, - "post_method": "update" - }, - { - "paramgram_used": { - "adom": "ansible", - "interface": null, - "device_unique_name": "FGT2", - "install_config": "disable", - "device_hostname": "ansible-fgt02", - "interface_ip": null, - "interface_allow_access": null - }, - "datagram_sent": { - "hostname": "ansible-fgt02" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "pm/config/device/FGT2/global/system/global" - }, - "post_method": "update" - }, - { - "paramgram_used": { - "adom": "ansible", - "interface": null, - "device_unique_name": "FGT3", - "install_config": "disable", - "device_hostname": "ansible-fgt03", - "interface_ip": null, - "interface_allow_access": null - }, - "datagram_sent": { - "hostname": "ansible-fgt03" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "pm/config/device/FGT3/global/system/global" - }, - "post_method": "update" - } - ], - "exec_config": [ - { - "url": "/securityconsole/install/device", - "paramgram_used": { - "adom": "ansible", - "interface": null, - "device_unique_name": "FGT1", - "install_config": "enable", - "device_hostname": null, - "interface_ip": null, - "interface_allow_access": null - }, - "datagram_sent": { - "scope": { - "name": "FGT1" - }, - "flags": "none", - "adom": "ansible" - }, - "raw_response": { - "task": 243 - }, - "post_method": "exec" - }, - { - "url": "/securityconsole/install/device", - "raw_response": { - "task": 244 - }, - "datagram_sent": { - "scope": { - "name": "FGT2, FGT3" - }, - "flags": "none", - "adom": "ansible" - }, - "paramgram_used": { - "adom": "ansible", - "install_config": "enable", - "device_unique_name": "FGT2, FGT3", - "interface": null, - "device_hostname": null, - "interface_ip": null, - "interface_allow_access": null - }, - "post_method": "exec" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_device_group.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_device_group.json deleted file mode 100644 index 718c1eb322..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_device_group.json +++ /dev/null @@ -1,234 +0,0 @@ -{ - "add_group_member": [ - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/dvmdb/adom/ansible/group/TestGroup/object member" - }, - "datagram_sent": { - "name": "FGT1", - "vdom": "root" - }, - "paramgram_used": { - "grp_desc": null, - "adom": "ansible", - "grp_members": "FGT1", - "mode": "add", - "grp_name": "TestGroup", - "vdom": "root" - }, - "post_method": "add" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/dvmdb/adom/ansible/group/testtest/object member" - }, - "datagram_sent": { - "name": "FGT3", - "vdom": "root" - }, - "paramgram_used": { - "grp_desc": null, - "adom": "ansible", - "grp_members": "FGT3", - "mode": "add", - "grp_name": "testtest", - "vdom": "root" - }, - "post_method": "add" - } - ], - "delete_device_group": [ - { - "paramgram_used": { - "grp_desc": "CreatedbyAnsible", - "adom": "ansible", - "grp_members": null, - "mode": "delete", - "grp_name": "TestGroup", - "vdom": "root" - }, - "datagram_sent": { - "name": "TestGroup", - "adom": "ansible" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/dvmdb/adom/ansible/group/TestGroup" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/dvmdb/adom/ansible/group/testtest" - }, - "datagram_sent": { - "name": "testtest", - "adom": "ansible" - }, - "paramgram_used": { - "grp_desc": "CreatedbyAnsible", - "adom": "ansible", - "grp_members": null, - "mode": "delete", - "grp_name": "testtest", - "vdom": "root" - }, - "post_method": "delete" - } - ], - "add_device_group": [ - { - "paramgram_used": { - "grp_desc": "CreatedbyAnsible", - "adom": "ansible", - "grp_members": null, - "mode": "add", - "grp_name": "TestGroup", - "vdom": "root" - }, - "datagram_sent": { - "os_type": "fos", - "name": "TestGroup", - "desc": "CreatedbyAnsible" - }, - "raw_response": { - "status": { - "message": "Object already exists", - "code": -2 - }, - "url": "/dvmdb/adom/ansible/group" - }, - "post_method": "add" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/dvmdb/adom/ansible/group" - }, - "datagram_sent": { - "os_type": "fos", - "name": "testtest", - "desc": "CreatedbyAnsible" - }, - "paramgram_used": { - "grp_desc": "CreatedbyAnsible", - "adom": "ansible", - "grp_members": null, - "mode": "add", - "grp_name": "testtest", - "vdom": "root" - }, - "post_method": "add" - }, - { - "paramgram_used": { - "grp_desc": null, - "adom": "ansible", - "grp_members": "FGT1", - "mode": "add", - "grp_name": "TestGroup", - "vdom": "root" - }, - "datagram_sent": { - "os_type": "fos", - "name": "TestGroup", - "desc": null - }, - "raw_response": { - "status": { - "message": "Object already exists", - "code": -2 - }, - "url": "/dvmdb/adom/ansible/group" - }, - "post_method": "add" - }, - { - "paramgram_used": { - "grp_desc": null, - "adom": "ansible", - "grp_members": "FGT3", - "mode": "add", - "grp_name": "testtest", - "vdom": "root" - }, - "datagram_sent": { - "os_type": "fos", - "name": "testtest", - "desc": null - }, - "raw_response": { - "status": { - "message": "Object already exists", - "code": -2 - }, - "url": "/dvmdb/adom/ansible/group" - }, - "post_method": "add" - } - ], - "delete_group_member": [ - { - "paramgram_used": { - "grp_desc": null, - "adom": "ansible", - "grp_members": "FGT3", - "mode": "delete", - "grp_name": "testtest", - "vdom": "root" - }, - "datagram_sent": { - "name": "FGT3", - "vdom": "root" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/dvmdb/adom/ansible/group/testtest/object member" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/dvmdb/adom/ansible/group/TestGroup/object member" - }, - "datagram_sent": { - "name": "FGT1", - "vdom": "root" - }, - "paramgram_used": { - "grp_desc": null, - "adom": "ansible", - "grp_members": "FGT1", - "mode": "delete", - "grp_name": "TestGroup", - "vdom": "root" - }, - "post_method": "delete" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_device_provision_template.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_device_provision_template.json deleted file mode 100644 index fb65ca5da9..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_device_provision_template.json +++ /dev/null @@ -1,2063 +0,0 @@ -{ - "set_devprof_admin": [ - { - "paramgram_used": { - "snmpv3_security_level": null, - "snmp_v2c_query_status": null, - "provision_targets": null, - "ntp_type": null, - "dns_suffix": null, - "snmpv3_queries": null, - "snmpv3_trap_status": null, - "snmp_v2c_name": null, - "syslog_facility": "syslog", - "snmp_v2c_status": null, - "smtp_validate_cert": null, - "snmpv3_name": null, - "snmp_v2c_id": null, - "syslog_port": null, - "ntp_server": null, - "admin_https_port": 4433, - "ntp_status": null, - "syslog_server": null, - "admin_switch_controller": "enable", - "admin_timeout": 60, - "snmpv3_auth_proto": null, - "smtp_port": null, - "snmpv3_priv_pwd": null, - "smtp_server": null, - "syslog_enc_algorithm": "disable", - "snmp_v2c_query_hosts_ipv4": null, - "smtp_username": null, - "mode": "set", - "syslog_certificate": null, - "admin_fortiguard_target": null, - "snmpv3_query_port": null, - "smtp_password": null, - "adom": "ansible", - "snmpv3_notify_hosts": null, - "syslog_mode": "udp", - "snmp_v2c_query_port": null, - "snmp_v2c_trap_status": null, - "snmp_status": null, - "syslog_status": null, - "snmp_v2c_trap_hosts_ipv4": null, - "admin_fortianalyzer_target": "10.7.220.38", - "snmp_v2c_trap_src_ipv4": null, - "admin_http_port": 8080, - "dns_secondary_ipv4": null, - "syslog_filter": null, - "snmpv3_source_ip": null, - "snmpv3_trap_rport": null, - "admin_gui_theme": "blue", - "ntp_sync_interval": null, - "ntp_auth_pwd": null, - "provisioning_template": "ansibleTest", - "ntp_v3": null, - "ntp_auth": null, - "snmp_v2c_trap_port": null, - "snmpv3_priv_proto": null, - "admin_enable_fortiguard": "this-fmg", - "dns_primary_ipv4": null, - "admin_language": "english", - "smtp_conn_sec": null, - "snmpv3_auth_pwd": null, - "smtp_source_ipv4": null, - "snmpv3_status": null, - "delete_provisioning_template": null, - "smtp_replyto": null, - "admin_https_redirect": "enable" - }, - "datagram_sent": { - "admintimeout": 60, - "switch-controller": "enable", - "language": "english", - "admin-port": 8080, - "gui-theme": "blue", - "admin-https-redirect": "enable", - "admin-sport": 4433 - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/devprof/ansibleTest/system/global" - }, - "post_method": "set" - } - ], - "set_devprof_snmp_v3": [ - { - "paramgram_used": { - "snmpv3_security_level": "auth-priv", - "snmp_v2c_query_status": null, - "provision_targets": null, - "ntp_type": null, - "dns_suffix": null, - "snmpv3_queries": "enable", - "snmpv3_trap_status": "enable", - "snmp_v2c_name": null, - "syslog_facility": "syslog", - "snmp_v2c_status": null, - "smtp_validate_cert": null, - "snmpv3_name": "ansibleSNMPv3", - "snmp_v2c_id": null, - "syslog_port": null, - "ntp_server": null, - "admin_https_port": null, - "ntp_status": null, - "syslog_server": null, - "admin_switch_controller": null, - "admin_timeout": null, - "snmpv3_auth_proto": "sha", - "smtp_port": null, - "snmpv3_priv_pwd": "fortinet", - "smtp_server": null, - "syslog_enc_algorithm": "disable", - "snmp_v2c_query_hosts_ipv4": null, - "smtp_username": null, - "mode": "set", - "syslog_certificate": null, - "admin_fortiguard_target": null, - "snmpv3_query_port": 161, - "smtp_password": null, - "adom": "ansible", - "snmpv3_notify_hosts": "10.7.220.59,10.7.220.60", - "syslog_mode": "udp", - "snmp_v2c_query_port": null, - "snmp_v2c_trap_status": null, - "snmp_status": "enable", - "syslog_status": null, - "admin_https_redirect": null, - "admin_fortianalyzer_target": null, - "snmp_v2c_trap_src_ipv4": null, - "admin_http_port": null, - "dns_secondary_ipv4": null, - "syslog_filter": null, - "snmpv3_source_ip": "0.0.0.0", - "snmpv3_trap_rport": 162, - "admin_gui_theme": null, - "ntp_sync_interval": null, - "ntp_auth_pwd": null, - "provisioning_template": "ansibleTest", - "smtp_replyto": null, - "ntp_auth": null, - "snmp_v2c_trap_port": null, - "snmpv3_priv_proto": "aes256", - "admin_enable_fortiguard": null, - "dns_primary_ipv4": null, - "admin_language": null, - "smtp_conn_sec": null, - "snmpv3_auth_pwd": "fortinet", - "smtp_source_ipv4": null, - "snmpv3_status": "enable", - "delete_provisioning_template": null, - "snmp_v2c_trap_hosts_ipv4": null, - "ntp_v3": null - }, - "datagram_sent": { - "notify-hosts": [ - "10.7.220.59", - "10.7.220.60" - ], - "name": "ansibleSNMPv3", - "query-port": 161, - "auth-pwd": "fortinet", - "source-ip": "0.0.0.0", - "priv-pwd": "fortinet", - "trap-lport": 162, - "ha-direct": 0, - "trap-rport": 162, - "events": 1647387997183 - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/devprof/ansibleTest/system/snmp/user" - }, - "post_method": "set" - } - ], - "set_devprof_scope": [ - { - "paramgram_used": { - "snmpv3_security_level": null, - "snmp_v2c_query_status": null, - "provision_targets": "FGT1,FGT2", - "ntp_type": null, - "dns_suffix": null, - "snmpv3_queries": null, - "snmpv3_trap_status": null, - "snmp_v2c_name": null, - "syslog_facility": "syslog", - "snmp_v2c_status": null, - "smtp_validate_cert": null, - "snmpv3_name": null, - "snmp_v2c_id": null, - "syslog_port": null, - "ntp_server": null, - "admin_https_port": null, - "ntp_status": null, - "syslog_server": null, - "admin_switch_controller": null, - "admin_timeout": null, - "snmpv3_auth_proto": null, - "smtp_port": null, - "snmpv3_priv_pwd": null, - "smtp_server": null, - "syslog_enc_algorithm": "disable", - "snmp_v2c_query_hosts_ipv4": null, - "smtp_username": null, - "mode": "set", - "syslog_certificate": null, - "admin_fortiguard_target": null, - "snmpv3_query_port": null, - "smtp_password": null, - "adom": "ansible", - "snmpv3_notify_hosts": null, - "syslog_mode": "udp", - "snmp_v2c_query_port": null, - "snmp_v2c_trap_status": null, - "snmp_status": null, - "syslog_status": null, - "admin_https_redirect": null, - "admin_fortianalyzer_target": null, - "snmp_v2c_trap_src_ipv4": null, - "admin_http_port": null, - "dns_secondary_ipv4": null, - "syslog_filter": null, - "snmpv3_source_ip": null, - "snmpv3_trap_rport": null, - "admin_gui_theme": null, - "ntp_sync_interval": null, - "ntp_auth_pwd": null, - "provisioning_template": "ansibleTest", - "smtp_replyto": null, - "ntp_auth": null, - "snmp_v2c_trap_port": null, - "snmpv3_priv_proto": null, - "admin_enable_fortiguard": null, - "dns_primary_ipv4": null, - "admin_language": null, - "smtp_conn_sec": null, - "snmpv3_auth_pwd": null, - "smtp_source_ipv4": null, - "snmpv3_status": null, - "delete_provisioning_template": null, - "snmp_v2c_trap_hosts_ipv4": null, - "ntp_v3": null - }, - "datagram_sent": { - "type": "devprof", - "name": "ansibleTest", - "scope member": [ - { - "name": "FGT1" - }, - { - "name": "FGT2" - } - ], - "description": "CreatedByAnsible" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/devprof/adom/ansible" - }, - "post_method": "set" - } - ], - "set_devprof_snmp": [ - { - "paramgram_used": { - "snmpv3_security_level": null, - "snmp_v2c_query_status": null, - "provision_targets": null, - "ntp_type": null, - "dns_suffix": null, - "snmpv3_queries": null, - "snmpv3_trap_status": null, - "snmp_v2c_name": null, - "syslog_facility": "syslog", - "snmp_v2c_status": null, - "smtp_validate_cert": null, - "snmpv3_name": null, - "snmp_v2c_id": null, - "syslog_port": null, - "ntp_server": null, - "admin_https_port": null, - "ntp_status": null, - "syslog_server": null, - "admin_switch_controller": null, - "admin_timeout": null, - "snmpv3_auth_proto": null, - "smtp_port": null, - "snmpv3_priv_pwd": null, - "smtp_server": null, - "syslog_enc_algorithm": "disable", - "snmp_v2c_query_hosts_ipv4": null, - "smtp_username": null, - "mode": "set", - "syslog_certificate": null, - "admin_fortiguard_target": null, - "snmpv3_query_port": null, - "smtp_password": null, - "adom": "ansible", - "snmpv3_notify_hosts": null, - "syslog_mode": "udp", - "snmp_v2c_query_port": null, - "snmp_v2c_trap_status": null, - "snmp_status": "enable", - "syslog_status": null, - "admin_https_redirect": null, - "admin_fortianalyzer_target": null, - "snmp_v2c_trap_src_ipv4": null, - "admin_http_port": null, - "dns_secondary_ipv4": null, - "syslog_filter": null, - "snmpv3_source_ip": null, - "snmpv3_trap_rport": null, - "admin_gui_theme": null, - "ntp_sync_interval": null, - "ntp_auth_pwd": null, - "provisioning_template": "ansibleTest", - "smtp_replyto": null, - "ntp_auth": null, - "snmp_v2c_trap_port": null, - "snmpv3_priv_proto": null, - "admin_enable_fortiguard": null, - "dns_primary_ipv4": null, - "admin_language": null, - "smtp_conn_sec": null, - "snmpv3_auth_pwd": null, - "smtp_source_ipv4": null, - "snmpv3_status": null, - "delete_provisioning_template": null, - "snmp_v2c_trap_hosts_ipv4": null, - "ntp_v3": null - }, - "datagram_sent": { - "status": "enable" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/devprof/ansibleTest/system/snmp/sysinfo" - }, - "post_method": "set" - }, - { - "paramgram_used": { - "snmpv3_security_level": null, - "snmp_v2c_query_status": "enable", - "provision_targets": null, - "ntp_type": null, - "dns_suffix": null, - "snmpv3_queries": null, - "snmpv3_trap_status": null, - "snmp_v2c_name": "ansibleV2c", - "syslog_facility": "syslog", - "snmp_v2c_status": "enable", - "smtp_validate_cert": null, - "snmpv3_name": null, - "snmp_v2c_id": 1, - "syslog_port": null, - "ntp_server": null, - "admin_https_port": null, - "ntp_status": null, - "syslog_server": null, - "admin_switch_controller": null, - "admin_timeout": null, - "snmpv3_auth_proto": null, - "smtp_port": null, - "snmpv3_priv_pwd": null, - "smtp_server": null, - "syslog_enc_algorithm": "disable", - "snmp_v2c_query_hosts_ipv4": "10.7.220.59 255.255.255.255, 10.7.220.0 255.255.255.0", - "smtp_username": null, - "mode": "set", - "syslog_certificate": null, - "admin_fortiguard_target": null, - "snmpv3_query_port": null, - "smtp_password": null, - "adom": "ansible", - "snmpv3_notify_hosts": null, - "syslog_mode": "udp", - "snmp_v2c_query_port": 162, - "snmp_v2c_trap_status": "enable", - "snmp_status": "enable", - "syslog_status": null, - "admin_https_redirect": null, - "admin_fortianalyzer_target": null, - "snmp_v2c_trap_src_ipv4": "10.7.220.41", - "admin_http_port": null, - "dns_secondary_ipv4": null, - "syslog_filter": null, - "snmpv3_source_ip": null, - "snmpv3_trap_rport": null, - "admin_gui_theme": null, - "ntp_sync_interval": null, - "ntp_auth_pwd": null, - "provisioning_template": "ansibleTest", - "smtp_replyto": null, - "ntp_auth": null, - "snmp_v2c_trap_port": 161, - "snmpv3_priv_proto": null, - "admin_enable_fortiguard": null, - "dns_primary_ipv4": null, - "admin_language": null, - "smtp_conn_sec": null, - "snmpv3_auth_pwd": null, - "smtp_source_ipv4": null, - "snmpv3_status": null, - "delete_provisioning_template": null, - "snmp_v2c_trap_hosts_ipv4": "10.7.220.59 255.255.255.255, 10.7.220.60 255.255.255.255", - "ntp_v3": null - }, - "datagram_sent": { - "status": "enable" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/devprof/ansibleTest/system/snmp/sysinfo" - }, - "post_method": "set" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/devprof/ansibleTest/system/snmp/sysinfo" - }, - "datagram_sent": { - "status": "enable" - }, - "paramgram_used": { - "snmpv3_security_level": "auth-priv", - "snmp_v2c_query_status": null, - "ntp_type": null, - "dns_suffix": null, - "snmpv3_queries": "enable", - "snmpv3_trap_status": "enable", - "snmp_v2c_name": null, - "syslog_facility": "syslog", - "snmp_v2c_status": null, - "smtp_validate_cert": null, - "snmpv3_name": "ansibleSNMPv3", - "snmp_v2c_trap_src_ipv4": null, - "syslog_port": null, - "ntp_server": null, - "admin_https_port": null, - "ntp_status": null, - "syslog_server": null, - "dns_primary_ipv4": null, - "admin_timeout": null, - "snmpv3_auth_proto": "sha", - "smtp_port": null, - "snmpv3_priv_pwd": "fortinet", - "smtp_server": null, - "syslog_enc_algorithm": "disable", - "dns_secondary_ipv4": null, - "smtp_username": null, - "snmpv3_auth_pwd": "fortinet", - "syslog_certificate": null, - "admin_fortiguard_target": null, - "snmpv3_query_port": 161, - "smtp_password": null, - "adom": "ansible", - "snmpv3_notify_hosts": "10.7.220.59,10.7.220.60", - "syslog_mode": "udp", - "snmp_v2c_query_port": null, - "snmp_v2c_trap_status": null, - "snmp_status": "enable", - "syslog_status": null, - "admin_fortianalyzer_target": null, - "ntp_auth": null, - "snmp_v2c_id": null, - "admin_http_port": null, - "ntp_v3": null, - "snmp_v2c_query_hosts_ipv4": null, - "ntp_sync_interval": null, - "snmpv3_source_ip": "0.0.0.0", - "snmpv3_trap_rport": 162, - "admin_gui_theme": null, - "syslog_filter": null, - "ntp_auth_pwd": null, - "provisioning_template": "ansibleTest", - "smtp_replyto": null, - "provision_targets": null, - "snmp_v2c_trap_port": null, - "snmpv3_priv_proto": "aes256", - "admin_enable_fortiguard": null, - "admin_switch_controller": null, - "admin_language": null, - "smtp_conn_sec": null, - "mode": "set", - "smtp_source_ipv4": null, - "snmpv3_status": "enable", - "delete_provisioning_template": null, - "snmp_v2c_trap_hosts_ipv4": null, - "admin_https_redirect": null - }, - "post_method": "set" - } - ], - "set_devprof": [ - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/devprof/adom/ansible/ansibleTest" - }, - "datagram_sent": {}, - "paramgram_used": { - "snmpv3_security_level": null, - "snmp_v2c_query_status": null, - "smtp_port": null, - "ntp_type": null, - "dns_suffix": null, - "snmpv3_queries": null, - "snmpv3_trap_status": null, - "snmp_v2c_name": null, - "syslog_facility": "syslog", - "snmp_v2c_status": null, - "smtp_validate_cert": null, - "snmpv3_name": null, - "snmp_v2c_trap_src_ipv4": null, - "syslog_port": null, - "ntp_server": null, - "admin_https_port": null, - "ntp_status": null, - "syslog_server": null, - "dns_primary_ipv4": null, - "admin_timeout": null, - "snmpv3_auth_proto": null, - "ntp_auth": null, - "snmpv3_priv_pwd": null, - "smtp_server": null, - "syslog_enc_algorithm": "disable", - "dns_secondary_ipv4": null, - "smtp_replyto": null, - "smtp_username": null, - "snmpv3_auth_pwd": null, - "syslog_certificate": null, - "admin_fortiguard_target": null, - "snmpv3_query_port": null, - "smtp_password": null, - "adom": "ansible", - "snmpv3_notify_hosts": null, - "syslog_mode": "udp", - "snmp_v2c_query_port": null, - "snmp_v2c_trap_status": null, - "snmp_status": null, - "syslog_status": null, - "admin_fortianalyzer_target": null, - "snmp_v2c_id": null, - "admin_http_port": null, - "snmp_v2c_query_hosts_ipv4": null, - "ntp_sync_interval": null, - "snmpv3_source_ip": null, - "snmpv3_trap_rport": null, - "admin_gui_theme": null, - "syslog_filter": null, - "ntp_auth_pwd": null, - "provisioning_template": null, - "snmp_v2c_trap_hosts_ipv4": null, - "provision_targets": null, - "snmp_v2c_trap_port": null, - "snmpv3_priv_proto": null, - "admin_enable_fortiguard": null, - "admin_switch_controller": null, - "admin_language": null, - "smtp_conn_sec": null, - "mode": "delete", - "smtp_source_ipv4": null, - "snmpv3_status": null, - "delete_provisioning_template": "ansibleTest", - "ntp_v3": null, - "admin_https_redirect": null - }, - "post_method": "delete" - } - ], - "set_devprof_dns": [ - { - "paramgram_used": { - "snmpv3_security_level": null, - "snmp_v2c_query_status": null, - "provision_targets": null, - "ntp_type": null, - "dns_suffix": "ansible.local", - "snmpv3_queries": null, - "snmpv3_trap_status": null, - "snmp_v2c_name": null, - "syslog_facility": "syslog", - "snmp_v2c_status": null, - "smtp_validate_cert": null, - "snmpv3_name": null, - "snmp_v2c_id": null, - "syslog_port": null, - "ntp_server": null, - "admin_https_port": null, - "ntp_status": null, - "syslog_server": null, - "admin_switch_controller": null, - "admin_timeout": null, - "snmpv3_auth_proto": null, - "smtp_port": null, - "snmpv3_priv_pwd": null, - "smtp_server": null, - "syslog_enc_algorithm": "disable", - "snmp_v2c_query_hosts_ipv4": null, - "smtp_username": null, - "mode": "set", - "syslog_certificate": null, - "admin_fortiguard_target": null, - "snmpv3_query_port": null, - "smtp_password": null, - "adom": "ansible", - "snmpv3_notify_hosts": null, - "syslog_mode": "udp", - "snmp_v2c_query_port": null, - "snmp_v2c_trap_status": null, - "snmp_status": null, - "syslog_status": null, - "snmp_v2c_trap_hosts_ipv4": null, - "admin_fortianalyzer_target": null, - "snmp_v2c_trap_src_ipv4": null, - "admin_http_port": null, - "dns_secondary_ipv4": "4.4.4.4", - "syslog_filter": null, - "snmpv3_source_ip": null, - "snmpv3_trap_rport": null, - "admin_gui_theme": null, - "ntp_sync_interval": null, - "ntp_auth_pwd": null, - "provisioning_template": "ansibleTest", - "ntp_v3": null, - "ntp_auth": null, - "snmp_v2c_trap_port": null, - "snmpv3_priv_proto": null, - "admin_enable_fortiguard": null, - "dns_primary_ipv4": "8.8.8.8", - "admin_language": null, - "smtp_conn_sec": null, - "snmpv3_auth_pwd": null, - "smtp_source_ipv4": null, - "snmpv3_status": null, - "delete_provisioning_template": null, - "smtp_replyto": null, - "admin_https_redirect": null - }, - "datagram_sent": { - "domain": "ansible.local", - "primary": "8.8.8.8", - "secondary": "4.4.4.4" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/devprof/ansibleTest/system/dns" - }, - "post_method": "set" - } - ], - "set_devprof_syslog": [ - { - "paramgram_used": { - "snmpv3_security_level": null, - "snmp_v2c_query_status": null, - "provision_targets": null, - "ntp_type": null, - "dns_suffix": null, - "snmpv3_queries": null, - "snmpv3_trap_status": null, - "snmp_v2c_name": null, - "syslog_facility": "kernel", - "snmp_v2c_status": null, - "smtp_validate_cert": null, - "snmpv3_name": null, - "snmp_v2c_id": null, - "syslog_port": 514, - "ntp_server": null, - "admin_https_port": null, - "ntp_status": null, - "syslog_server": "10.7.220.59", - "admin_switch_controller": null, - "admin_timeout": null, - "snmpv3_auth_proto": null, - "smtp_port": null, - "snmpv3_priv_pwd": null, - "smtp_server": null, - "syslog_enc_algorithm": "disable", - "snmp_v2c_query_hosts_ipv4": null, - "smtp_username": null, - "mode": "set", - "syslog_certificate": null, - "admin_fortiguard_target": null, - "snmpv3_query_port": null, - "smtp_password": null, - "adom": "ansible", - "snmpv3_notify_hosts": null, - "syslog_mode": "udp", - "snmp_v2c_query_port": null, - "snmp_v2c_trap_status": null, - "snmp_status": null, - "syslog_status": "enable", - "snmp_v2c_trap_hosts_ipv4": null, - "admin_fortianalyzer_target": null, - "snmp_v2c_trap_src_ipv4": null, - "admin_http_port": null, - "dns_secondary_ipv4": null, - "syslog_filter": "critical", - "snmpv3_source_ip": null, - "snmpv3_trap_rport": null, - "admin_gui_theme": null, - "ntp_sync_interval": null, - "ntp_auth_pwd": null, - "provisioning_template": "ansibleTest", - "ntp_v3": null, - "ntp_auth": null, - "snmp_v2c_trap_port": null, - "snmpv3_priv_proto": null, - "admin_enable_fortiguard": null, - "dns_primary_ipv4": null, - "admin_language": null, - "smtp_conn_sec": null, - "snmpv3_auth_pwd": null, - "smtp_source_ipv4": null, - "snmpv3_status": null, - "delete_provisioning_template": null, - "smtp_replyto": null, - "admin_https_redirect": null - }, - "datagram_sent": { - "status": "enable", - "mode": "udp", - "server": "10.7.220.59", - "port": 514, - "facility": "kernel" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/devprof/ansibleTest/log/syslogd/setting" - }, - "post_method": "set" - } - ], - "set_devprof_snmp_v2c": [ - { - "url": "/pm/config/adom/ansible/devprof/ansibleTest/system/snmp/community", - "raw_response": { - "id": 1 - }, - "datagram_sent": { - "status": "enable", - "trap-v2c-lport": 162, - "trap-v2c-status": "enable", - "name": "ansibleV2c", - "query-v1-port": 161, - "meta fields": {}, - "query-v1-status": 0, - "trap-v2c-rport": 161, - "trap-v1-rport": 162, - "query-v2c-port": 162, - "hosts": [ - { - "ip": [ - "10.7.220.59", - "255.255.255.255" - ], - "source-ip": "0.0.0.0", - "meta fields": {}, - "ha-direct": "enable", - "id": 1, - "host-type": "query" - }, - { - "ip": [ - "10.7.220.0", - "255.255.255.0" - ], - "source-ip": "0.0.0.0", - "meta fields": {}, - "ha-direct": "enable", - "id": 2, - "host-type": "query" - }, - { - "ip": [ - "10.7.220.59", - "255.255.255.255" - ], - "source-ip": "10.7.220.41", - "meta fields": {}, - "ha-direct": "enable", - "id": 3, - "host-type": "trap" - }, - { - "ip": [ - "10.7.220.60", - "255.255.255.255" - ], - "source-ip": "10.7.220.41", - "meta fields": {}, - "ha-direct": "enable", - "id": 4, - "host-type": "trap" - } - ], - "trap-v1-status": 0, - "events": 411578417151, - "query-v2c-status": "enable", - "id": 1, - "trap-v1-lport": 162 - }, - "paramgram_used": { - "snmpv3_security_level": null, - "snmp_v2c_query_status": "enable", - "ntp_type": null, - "dns_suffix": null, - "snmpv3_queries": null, - "snmpv3_trap_status": null, - "snmp_v2c_name": "ansibleV2c", - "syslog_facility": "syslog", - "snmp_v2c_status": "enable", - "smtp_validate_cert": null, - "snmpv3_name": null, - "snmp_v2c_trap_src_ipv4": "10.7.220.41", - "syslog_port": null, - "ntp_server": null, - "admin_https_port": null, - "ntp_status": null, - "syslog_server": null, - "dns_primary_ipv4": null, - "admin_timeout": null, - "snmpv3_auth_proto": null, - "smtp_port": null, - "snmpv3_priv_pwd": null, - "smtp_server": null, - "syslog_enc_algorithm": "disable", - "dns_secondary_ipv4": null, - "smtp_replyto": null, - "smtp_username": null, - "snmpv3_auth_pwd": null, - "syslog_certificate": null, - "admin_fortiguard_target": null, - "snmpv3_query_port": null, - "smtp_password": null, - "adom": "ansible", - "snmpv3_notify_hosts": null, - "syslog_mode": "udp", - "snmp_v2c_query_port": 162, - "snmp_v2c_trap_status": "enable", - "snmp_status": "enable", - "syslog_status": null, - "admin_fortianalyzer_target": null, - "ntp_auth": null, - "snmp_v2c_id": 1, - "admin_http_port": null, - "snmp_v2c_query_hosts_ipv4": "10.7.220.59 255.255.255.255, 10.7.220.0 255.255.255.0", - "ntp_sync_interval": null, - "snmpv3_source_ip": null, - "snmpv3_trap_rport": null, - "admin_gui_theme": null, - "syslog_filter": null, - "ntp_auth_pwd": null, - "provisioning_template": "ansibleTest", - "snmp_v2c_trap_hosts_ipv4": "10.7.220.59 255.255.255.255, 10.7.220.60 255.255.255.255", - "provision_targets": null, - "snmp_v2c_trap_port": 161, - "snmpv3_priv_proto": null, - "admin_enable_fortiguard": null, - "admin_switch_controller": null, - "admin_language": null, - "smtp_conn_sec": null, - "mode": "set", - "smtp_source_ipv4": null, - "snmpv3_status": null, - "delete_provisioning_template": null, - "ntp_v3": null, - "admin_https_redirect": null - }, - "post_method": "set" - } - ], - "get_devprof": [ - { - "url": "/pm/devprof/adom/ansible/ansibleTest", - "raw_response": { - "enabled options": [ - "dns", - "ntp", - "email", - "admin", - "snmp", - "repmsg", - "ftgd", - "log" - ], - "oid": 1542, - "type": "devprof", - "description": "CreatedByAnsible", - "name": "ansibleTest" - }, - "datagram_sent": {}, - "paramgram_used": { - "snmpv3_security_level": null, - "snmp_v2c_query_status": null, - "ntp_type": null, - "dns_suffix": null, - "snmpv3_queries": null, - "snmpv3_trap_status": null, - "snmp_v2c_name": null, - "syslog_facility": "syslog", - "snmp_v2c_status": null, - "smtp_validate_cert": null, - "snmpv3_name": null, - "snmp_v2c_trap_src_ipv4": null, - "syslog_port": null, - "ntp_server": null, - "admin_https_port": null, - "ntp_status": null, - "syslog_server": null, - "dns_primary_ipv4": null, - "admin_timeout": null, - "snmpv3_auth_proto": null, - "smtp_port": null, - "snmpv3_priv_pwd": null, - "smtp_server": null, - "syslog_enc_algorithm": "disable", - "dns_secondary_ipv4": null, - "smtp_username": null, - "snmpv3_auth_pwd": null, - "syslog_certificate": null, - "admin_fortiguard_target": null, - "snmpv3_query_port": null, - "smtp_password": null, - "adom": "ansible", - "snmpv3_notify_hosts": null, - "syslog_mode": "udp", - "snmp_v2c_query_port": null, - "snmp_v2c_trap_status": null, - "snmp_status": "enable", - "syslog_status": null, - "admin_fortianalyzer_target": null, - "ntp_auth": null, - "snmp_v2c_id": null, - "admin_http_port": null, - "ntp_v3": null, - "snmp_v2c_query_hosts_ipv4": null, - "ntp_sync_interval": null, - "snmpv3_source_ip": null, - "snmpv3_trap_rport": null, - "admin_gui_theme": null, - "syslog_filter": null, - "ntp_auth_pwd": null, - "provisioning_template": "ansibleTest", - "smtp_replyto": null, - "provision_targets": null, - "snmp_v2c_trap_port": null, - "snmpv3_priv_proto": null, - "admin_enable_fortiguard": null, - "admin_switch_controller": null, - "admin_language": null, - "smtp_conn_sec": null, - "mode": "set", - "smtp_source_ipv4": null, - "snmpv3_status": null, - "delete_provisioning_template": null, - "snmp_v2c_trap_hosts_ipv4": null, - "admin_https_redirect": null - }, - "post_method": "get" - }, - { - "url": "/pm/devprof/adom/ansible/ansibleTest", - "raw_response": { - "enabled options": [ - "dns", - "ntp", - "email", - "admin", - "snmp", - "repmsg", - "ftgd", - "log" - ], - "oid": 1542, - "type": "devprof", - "description": "CreatedByAnsible", - "name": "ansibleTest" - }, - "datagram_sent": {}, - "paramgram_used": { - "snmpv3_security_level": null, - "snmp_v2c_query_status": null, - "ntp_type": null, - "dns_suffix": null, - "snmpv3_queries": null, - "snmpv3_trap_status": null, - "snmp_v2c_name": null, - "syslog_facility": "kernel", - "snmp_v2c_status": null, - "smtp_validate_cert": null, - "snmpv3_name": null, - "snmp_v2c_trap_src_ipv4": null, - "syslog_port": 514, - "ntp_server": null, - "admin_https_port": null, - "ntp_status": null, - "syslog_server": "10.7.220.59", - "dns_primary_ipv4": null, - "admin_timeout": null, - "snmpv3_auth_proto": null, - "smtp_port": null, - "snmpv3_priv_pwd": null, - "smtp_server": null, - "syslog_enc_algorithm": "disable", - "dns_secondary_ipv4": null, - "smtp_replyto": null, - "smtp_username": null, - "snmpv3_auth_pwd": null, - "syslog_certificate": null, - "admin_fortiguard_target": null, - "snmpv3_query_port": null, - "smtp_password": null, - "adom": "ansible", - "snmpv3_notify_hosts": null, - "syslog_mode": "udp", - "snmp_v2c_query_port": null, - "snmp_v2c_trap_status": null, - "snmp_status": null, - "syslog_status": "enable", - "admin_fortianalyzer_target": null, - "ntp_auth": null, - "snmp_v2c_id": null, - "admin_http_port": null, - "snmp_v2c_query_hosts_ipv4": null, - "ntp_sync_interval": null, - "snmpv3_source_ip": null, - "snmpv3_trap_rport": null, - "admin_gui_theme": null, - "syslog_filter": "critical", - "ntp_auth_pwd": null, - "provisioning_template": "ansibleTest", - "snmp_v2c_trap_hosts_ipv4": null, - "provision_targets": null, - "snmp_v2c_trap_port": null, - "snmpv3_priv_proto": null, - "admin_enable_fortiguard": null, - "admin_switch_controller": null, - "admin_language": null, - "smtp_conn_sec": null, - "mode": "set", - "smtp_source_ipv4": null, - "snmpv3_status": null, - "delete_provisioning_template": null, - "ntp_v3": null, - "admin_https_redirect": null - }, - "post_method": "get" - }, - { - "url": "/pm/devprof/adom/ansible/ansibleTest", - "raw_response": { - "enabled options": [ - "dns", - "ntp", - "email", - "admin", - "snmp", - "repmsg", - "ftgd", - "log" - ], - "oid": 1542, - "type": "devprof", - "description": "CreatedByAnsible", - "name": "ansibleTest" - }, - "datagram_sent": {}, - "paramgram_used": { - "snmpv3_security_level": null, - "snmp_v2c_query_status": "enable", - "ntp_type": null, - "dns_suffix": null, - "snmpv3_queries": null, - "snmpv3_trap_status": null, - "snmp_v2c_name": "ansibleV2c", - "syslog_facility": "syslog", - "snmp_v2c_status": "enable", - "smtp_validate_cert": null, - "snmpv3_name": null, - "snmp_v2c_trap_src_ipv4": "10.7.220.41", - "syslog_port": null, - "ntp_server": null, - "admin_https_port": null, - "ntp_status": null, - "syslog_server": null, - "dns_primary_ipv4": null, - "admin_timeout": null, - "snmpv3_auth_proto": null, - "smtp_port": null, - "snmpv3_priv_pwd": null, - "smtp_server": null, - "syslog_enc_algorithm": "disable", - "dns_secondary_ipv4": null, - "smtp_username": null, - "snmpv3_auth_pwd": null, - "syslog_certificate": null, - "admin_fortiguard_target": null, - "snmpv3_query_port": null, - "smtp_password": null, - "adom": "ansible", - "snmpv3_notify_hosts": null, - "syslog_mode": "udp", - "snmp_v2c_query_port": 162, - "snmp_v2c_trap_status": "enable", - "snmp_status": "enable", - "syslog_status": null, - "admin_fortianalyzer_target": null, - "ntp_auth": null, - "snmp_v2c_id": 1, - "admin_http_port": null, - "ntp_v3": null, - "snmp_v2c_query_hosts_ipv4": "10.7.220.59 255.255.255.255, 10.7.220.0 255.255.255.0", - "ntp_sync_interval": null, - "snmpv3_source_ip": null, - "snmpv3_trap_rport": null, - "admin_gui_theme": null, - "syslog_filter": null, - "ntp_auth_pwd": null, - "provisioning_template": "ansibleTest", - "smtp_replyto": null, - "provision_targets": null, - "snmp_v2c_trap_port": 161, - "snmpv3_priv_proto": null, - "admin_enable_fortiguard": null, - "admin_switch_controller": null, - "admin_language": null, - "smtp_conn_sec": null, - "mode": "set", - "smtp_source_ipv4": null, - "snmpv3_status": null, - "delete_provisioning_template": null, - "snmp_v2c_trap_hosts_ipv4": "10.7.220.59 255.255.255.255, 10.7.220.60 255.255.255.255", - "admin_https_redirect": null - }, - "post_method": "get" - }, - { - "url": "/pm/devprof/adom/ansible/ansibleTest", - "paramgram_used": { - "snmpv3_security_level": "auth-priv", - "snmp_v2c_query_status": null, - "provision_targets": null, - "ntp_type": null, - "dns_suffix": null, - "snmpv3_queries": "enable", - "snmpv3_trap_status": "enable", - "snmp_v2c_name": null, - "syslog_facility": "syslog", - "snmp_v2c_status": null, - "smtp_validate_cert": null, - "snmpv3_name": "ansibleSNMPv3", - "snmp_v2c_id": null, - "syslog_port": null, - "ntp_server": null, - "admin_https_port": null, - "ntp_status": null, - "syslog_server": null, - "admin_switch_controller": null, - "admin_timeout": null, - "snmpv3_auth_proto": "sha", - "smtp_port": null, - "snmpv3_priv_pwd": "fortinet", - "smtp_server": null, - "syslog_enc_algorithm": "disable", - "snmp_v2c_query_hosts_ipv4": null, - "smtp_username": null, - "mode": "set", - "syslog_certificate": null, - "admin_fortiguard_target": null, - "snmpv3_query_port": 161, - "smtp_password": null, - "adom": "ansible", - "snmpv3_notify_hosts": "10.7.220.59,10.7.220.60", - "syslog_mode": "udp", - "snmp_v2c_query_port": null, - "snmp_v2c_trap_status": null, - "snmp_status": "enable", - "syslog_status": null, - "snmp_v2c_trap_hosts_ipv4": null, - "admin_fortianalyzer_target": null, - "snmp_v2c_trap_src_ipv4": null, - "admin_http_port": null, - "dns_secondary_ipv4": null, - "syslog_filter": null, - "snmpv3_source_ip": "0.0.0.0", - "snmpv3_trap_rport": 162, - "admin_gui_theme": null, - "ntp_sync_interval": null, - "ntp_auth_pwd": null, - "provisioning_template": "ansibleTest", - "ntp_v3": null, - "ntp_auth": null, - "snmp_v2c_trap_port": null, - "snmpv3_priv_proto": "aes256", - "admin_enable_fortiguard": null, - "dns_primary_ipv4": null, - "admin_language": null, - "smtp_conn_sec": null, - "snmpv3_auth_pwd": "fortinet", - "smtp_source_ipv4": null, - "snmpv3_status": "enable", - "delete_provisioning_template": null, - "smtp_replyto": null, - "admin_https_redirect": null - }, - "datagram_sent": {}, - "raw_response": { - "enabled options": [ - "dns", - "ntp", - "email", - "admin", - "snmp", - "repmsg", - "ftgd", - "log" - ], - "oid": 1542, - "type": "devprof", - "description": "CreatedByAnsible", - "name": "ansibleTest" - }, - "post_method": "get" - }, - { - "url": "/pm/devprof/adom/ansible/ansibleTest", - "raw_response": { - "enabled options": [ - "dns", - "ntp", - "email", - "admin", - "snmp", - "repmsg", - "ftgd", - "log" - ], - "oid": 1542, - "type": "devprof", - "description": "CreatedByAnsible", - "name": "ansibleTest" - }, - "datagram_sent": {}, - "paramgram_used": { - "snmpv3_security_level": null, - "snmp_v2c_query_status": null, - "ntp_type": "fortiguard", - "dns_suffix": null, - "snmpv3_queries": null, - "snmpv3_trap_status": null, - "snmp_v2c_name": null, - "syslog_facility": "syslog", - "snmp_v2c_status": null, - "smtp_validate_cert": null, - "snmpv3_name": null, - "snmp_v2c_trap_src_ipv4": null, - "syslog_port": null, - "ntp_server": null, - "admin_https_port": null, - "ntp_status": "enable", - "syslog_server": null, - "dns_primary_ipv4": null, - "admin_timeout": null, - "snmpv3_auth_proto": null, - "smtp_port": null, - "snmpv3_priv_pwd": null, - "smtp_server": null, - "syslog_enc_algorithm": "disable", - "dns_secondary_ipv4": null, - "smtp_replyto": null, - "smtp_username": null, - "snmpv3_auth_pwd": null, - "syslog_certificate": null, - "admin_fortiguard_target": null, - "snmpv3_query_port": null, - "smtp_password": null, - "adom": "ansible", - "snmpv3_notify_hosts": null, - "syslog_mode": "udp", - "snmp_v2c_query_port": null, - "snmp_v2c_trap_status": null, - "snmp_status": null, - "syslog_status": null, - "admin_fortianalyzer_target": null, - "ntp_auth": null, - "snmp_v2c_id": null, - "admin_http_port": null, - "snmp_v2c_query_hosts_ipv4": null, - "ntp_sync_interval": 60, - "snmpv3_source_ip": null, - "snmpv3_trap_rport": null, - "admin_gui_theme": null, - "syslog_filter": null, - "ntp_auth_pwd": null, - "provisioning_template": "ansibleTest", - "snmp_v2c_trap_hosts_ipv4": null, - "provision_targets": null, - "snmp_v2c_trap_port": null, - "snmpv3_priv_proto": null, - "admin_enable_fortiguard": null, - "admin_switch_controller": null, - "admin_language": null, - "smtp_conn_sec": null, - "mode": "set", - "smtp_source_ipv4": null, - "snmpv3_status": null, - "delete_provisioning_template": null, - "ntp_v3": null, - "admin_https_redirect": null - }, - "post_method": "get" - }, - { - "url": "/pm/devprof/adom/ansible/ansibleTest", - "raw_response": { - "enabled options": [ - "dns", - "ntp", - "email", - "admin", - "snmp", - "repmsg", - "ftgd", - "log" - ], - "oid": 1542, - "type": "devprof", - "description": "CreatedByAnsible", - "name": "ansibleTest" - }, - "datagram_sent": {}, - "paramgram_used": { - "snmpv3_security_level": null, - "snmp_v2c_query_status": null, - "ntp_type": "custom", - "dns_suffix": null, - "snmpv3_queries": null, - "snmpv3_trap_status": null, - "snmp_v2c_name": null, - "syslog_facility": "syslog", - "snmp_v2c_status": null, - "smtp_validate_cert": null, - "snmpv3_name": null, - "snmp_v2c_trap_src_ipv4": null, - "syslog_port": null, - "ntp_server": "10.7.220.32,10.7.220.1", - "admin_https_port": null, - "ntp_status": "enable", - "syslog_server": null, - "dns_primary_ipv4": null, - "admin_timeout": null, - "snmpv3_auth_proto": null, - "smtp_port": null, - "snmpv3_priv_pwd": null, - "smtp_server": null, - "syslog_enc_algorithm": "disable", - "dns_secondary_ipv4": null, - "smtp_username": null, - "snmpv3_auth_pwd": null, - "syslog_certificate": null, - "admin_fortiguard_target": null, - "snmpv3_query_port": null, - "smtp_password": null, - "adom": "ansible", - "snmpv3_notify_hosts": null, - "syslog_mode": "udp", - "snmp_v2c_query_port": null, - "snmp_v2c_trap_status": null, - "snmp_status": null, - "syslog_status": null, - "admin_fortianalyzer_target": null, - "ntp_auth": "enable", - "snmp_v2c_id": null, - "admin_http_port": null, - "ntp_v3": null, - "snmp_v2c_query_hosts_ipv4": null, - "ntp_sync_interval": 60, - "snmpv3_source_ip": null, - "snmpv3_trap_rport": null, - "admin_gui_theme": null, - "syslog_filter": null, - "ntp_auth_pwd": "fortinet", - "provisioning_template": "ansibleTest", - "smtp_replyto": null, - "provision_targets": null, - "snmp_v2c_trap_port": null, - "snmpv3_priv_proto": null, - "admin_enable_fortiguard": null, - "admin_switch_controller": null, - "admin_language": null, - "smtp_conn_sec": null, - "mode": "set", - "smtp_source_ipv4": null, - "snmpv3_status": null, - "delete_provisioning_template": null, - "snmp_v2c_trap_hosts_ipv4": null, - "admin_https_redirect": null - }, - "post_method": "get" - }, - { - "url": "/pm/devprof/adom/ansible/ansibleTest", - "raw_response": { - "enabled options": [ - "dns", - "ntp", - "email", - "admin", - "snmp", - "repmsg", - "ftgd", - "log" - ], - "oid": 1542, - "type": "devprof", - "description": "CreatedByAnsible", - "name": "ansibleTest" - }, - "datagram_sent": {}, - "paramgram_used": { - "snmpv3_security_level": null, - "snmp_v2c_query_status": null, - "ntp_type": null, - "dns_suffix": null, - "snmpv3_queries": null, - "snmpv3_trap_status": null, - "snmp_v2c_name": null, - "syslog_facility": "syslog", - "snmp_v2c_status": null, - "smtp_validate_cert": null, - "snmpv3_name": null, - "snmp_v2c_trap_src_ipv4": null, - "syslog_port": null, - "ntp_server": null, - "admin_https_port": 4433, - "ntp_status": null, - "syslog_server": null, - "dns_primary_ipv4": null, - "admin_timeout": 60, - "snmpv3_auth_proto": null, - "smtp_port": null, - "snmpv3_priv_pwd": null, - "smtp_server": null, - "syslog_enc_algorithm": "disable", - "dns_secondary_ipv4": null, - "smtp_replyto": null, - "smtp_username": null, - "snmpv3_auth_pwd": null, - "syslog_certificate": null, - "admin_fortiguard_target": null, - "snmpv3_query_port": null, - "smtp_password": null, - "adom": "ansible", - "snmpv3_notify_hosts": null, - "syslog_mode": "udp", - "snmp_v2c_query_port": null, - "snmp_v2c_trap_status": null, - "snmp_status": null, - "syslog_status": null, - "admin_fortianalyzer_target": "10.7.220.38", - "ntp_auth": null, - "snmp_v2c_id": null, - "admin_http_port": 8080, - "snmp_v2c_query_hosts_ipv4": null, - "ntp_sync_interval": null, - "snmpv3_source_ip": null, - "snmpv3_trap_rport": null, - "admin_gui_theme": "blue", - "syslog_filter": null, - "ntp_auth_pwd": null, - "provisioning_template": "ansibleTest", - "snmp_v2c_trap_hosts_ipv4": null, - "provision_targets": null, - "snmp_v2c_trap_port": null, - "snmpv3_priv_proto": null, - "admin_enable_fortiguard": "this-fmg", - "admin_switch_controller": "enable", - "admin_language": "english", - "smtp_conn_sec": null, - "mode": "set", - "smtp_source_ipv4": null, - "snmpv3_status": null, - "delete_provisioning_template": null, - "ntp_v3": null, - "admin_https_redirect": "enable" - }, - "post_method": "get" - }, - { - "url": "/pm/devprof/adom/ansible/ansibleTest", - "raw_response": { - "enabled options": [ - "dns", - "ntp", - "email", - "admin", - "snmp", - "repmsg", - "ftgd", - "log" - ], - "oid": 1542, - "type": "devprof", - "description": "CreatedByAnsible", - "name": "ansibleTest" - }, - "datagram_sent": {}, - "paramgram_used": { - "snmpv3_security_level": null, - "snmp_v2c_query_status": null, - "ntp_type": null, - "dns_suffix": null, - "snmpv3_queries": null, - "snmpv3_trap_status": null, - "snmp_v2c_name": null, - "syslog_facility": "syslog", - "snmp_v2c_status": null, - "smtp_validate_cert": "disable", - "snmpv3_name": null, - "snmp_v2c_trap_src_ipv4": null, - "syslog_port": null, - "ntp_server": null, - "admin_https_port": null, - "ntp_status": null, - "syslog_server": null, - "dns_primary_ipv4": null, - "admin_timeout": null, - "snmpv3_auth_proto": null, - "smtp_port": 25, - "snmpv3_priv_pwd": null, - "smtp_server": "10.7.220.32", - "syslog_enc_algorithm": "disable", - "dns_secondary_ipv4": null, - "smtp_username": "ansible", - "snmpv3_auth_pwd": null, - "syslog_certificate": null, - "admin_fortiguard_target": null, - "snmpv3_query_port": null, - "smtp_password": "fortinet", - "adom": "ansible", - "snmpv3_notify_hosts": null, - "syslog_mode": "udp", - "snmp_v2c_query_port": null, - "snmp_v2c_trap_status": null, - "snmp_status": null, - "syslog_status": null, - "admin_fortianalyzer_target": null, - "ntp_auth": null, - "snmp_v2c_id": null, - "admin_http_port": null, - "ntp_v3": null, - "snmp_v2c_query_hosts_ipv4": null, - "ntp_sync_interval": null, - "snmpv3_source_ip": null, - "snmpv3_trap_rport": null, - "admin_gui_theme": null, - "syslog_filter": null, - "ntp_auth_pwd": null, - "provisioning_template": "ansibleTest", - "smtp_replyto": "ansible@do-not-reply.com", - "provision_targets": null, - "snmp_v2c_trap_port": null, - "snmpv3_priv_proto": null, - "admin_enable_fortiguard": null, - "admin_switch_controller": null, - "admin_language": null, - "smtp_conn_sec": "starttls", - "mode": "set", - "smtp_source_ipv4": "0.0.0.0", - "snmpv3_status": null, - "delete_provisioning_template": null, - "snmp_v2c_trap_hosts_ipv4": null, - "admin_https_redirect": null - }, - "post_method": "get" - }, - { - "url": "/pm/devprof/adom/ansible/ansibleTest", - "raw_response": { - "enabled options": [ - "dns", - "ntp", - "email", - "admin", - "snmp", - "repmsg", - "ftgd", - "log" - ], - "oid": 1542, - "type": "devprof", - "description": "CreatedByAnsible", - "name": "ansibleTest" - }, - "datagram_sent": {}, - "paramgram_used": { - "snmpv3_security_level": null, - "snmp_v2c_query_status": null, - "ntp_type": null, - "dns_suffix": "ansible.local", - "snmpv3_queries": null, - "snmpv3_trap_status": null, - "snmp_v2c_name": null, - "syslog_facility": "syslog", - "snmp_v2c_status": null, - "smtp_validate_cert": null, - "snmpv3_name": null, - "snmp_v2c_trap_src_ipv4": null, - "syslog_port": null, - "ntp_server": null, - "admin_https_port": null, - "ntp_status": null, - "syslog_server": null, - "dns_primary_ipv4": "8.8.8.8", - "admin_timeout": null, - "snmpv3_auth_proto": null, - "smtp_port": null, - "snmpv3_priv_pwd": null, - "smtp_server": null, - "syslog_enc_algorithm": "disable", - "dns_secondary_ipv4": "4.4.4.4", - "smtp_replyto": null, - "smtp_username": null, - "snmpv3_auth_pwd": null, - "syslog_certificate": null, - "admin_fortiguard_target": null, - "snmpv3_query_port": null, - "smtp_password": null, - "adom": "ansible", - "snmpv3_notify_hosts": null, - "syslog_mode": "udp", - "snmp_v2c_query_port": null, - "snmp_v2c_trap_status": null, - "snmp_status": null, - "syslog_status": null, - "admin_fortianalyzer_target": null, - "ntp_auth": null, - "snmp_v2c_id": null, - "admin_http_port": null, - "snmp_v2c_query_hosts_ipv4": null, - "ntp_sync_interval": null, - "snmpv3_source_ip": null, - "snmpv3_trap_rport": null, - "admin_gui_theme": null, - "syslog_filter": null, - "ntp_auth_pwd": null, - "provisioning_template": "ansibleTest", - "snmp_v2c_trap_hosts_ipv4": null, - "provision_targets": null, - "snmp_v2c_trap_port": null, - "snmpv3_priv_proto": null, - "admin_enable_fortiguard": null, - "admin_switch_controller": null, - "admin_language": null, - "smtp_conn_sec": null, - "mode": "set", - "smtp_source_ipv4": null, - "snmpv3_status": null, - "delete_provisioning_template": null, - "ntp_v3": null, - "admin_https_redirect": null - }, - "post_method": "get" - }, - { - "url": "/pm/devprof/adom/ansible/ansibleTest", - "raw_response": { - "enabled options": [ - "dns", - "ntp", - "email", - "admin", - "snmp", - "repmsg", - "ftgd", - "log" - ], - "oid": 1542, - "type": "devprof", - "description": "CreatedByAnsible", - "name": "ansibleTest" - }, - "datagram_sent": {}, - "paramgram_used": { - "snmpv3_security_level": null, - "snmp_v2c_query_status": null, - "ntp_type": null, - "dns_suffix": null, - "snmpv3_queries": null, - "snmpv3_trap_status": null, - "snmp_v2c_name": null, - "syslog_facility": "syslog", - "snmp_v2c_status": null, - "smtp_validate_cert": null, - "snmpv3_name": null, - "snmp_v2c_trap_src_ipv4": null, - "syslog_port": null, - "ntp_server": null, - "admin_https_port": null, - "ntp_status": null, - "syslog_server": null, - "dns_primary_ipv4": null, - "admin_timeout": null, - "snmpv3_auth_proto": null, - "smtp_port": null, - "snmpv3_priv_pwd": null, - "smtp_server": null, - "syslog_enc_algorithm": "disable", - "dns_secondary_ipv4": null, - "smtp_username": null, - "snmpv3_auth_pwd": null, - "syslog_certificate": null, - "admin_fortiguard_target": null, - "snmpv3_query_port": null, - "smtp_password": null, - "adom": "ansible", - "snmpv3_notify_hosts": null, - "syslog_mode": "udp", - "snmp_v2c_query_port": null, - "snmp_v2c_trap_status": null, - "snmp_status": null, - "syslog_status": null, - "admin_fortianalyzer_target": null, - "ntp_auth": null, - "snmp_v2c_id": null, - "admin_http_port": null, - "ntp_v3": null, - "snmp_v2c_query_hosts_ipv4": null, - "ntp_sync_interval": null, - "snmpv3_source_ip": null, - "snmpv3_trap_rport": null, - "admin_gui_theme": null, - "syslog_filter": null, - "ntp_auth_pwd": null, - "provisioning_template": "ansibleTest", - "smtp_replyto": null, - "provision_targets": "FGT1,FGT2", - "snmp_v2c_trap_port": null, - "snmpv3_priv_proto": null, - "admin_enable_fortiguard": null, - "admin_switch_controller": null, - "admin_language": null, - "smtp_conn_sec": null, - "mode": "set", - "smtp_source_ipv4": null, - "snmpv3_status": null, - "delete_provisioning_template": null, - "snmp_v2c_trap_hosts_ipv4": null, - "admin_https_redirect": null - }, - "post_method": "get" - } - ], - "set_devprof_ntp": [ - { - "paramgram_used": { - "snmpv3_security_level": null, - "snmp_v2c_query_status": null, - "provision_targets": null, - "ntp_type": "fortiguard", - "dns_suffix": null, - "snmpv3_queries": null, - "snmpv3_trap_status": null, - "snmp_v2c_name": null, - "syslog_facility": "syslog", - "snmp_v2c_status": null, - "smtp_validate_cert": null, - "snmpv3_name": null, - "snmp_v2c_id": null, - "syslog_port": null, - "ntp_server": null, - "admin_https_port": null, - "ntp_status": "enable", - "syslog_server": null, - "admin_switch_controller": null, - "admin_timeout": null, - "snmpv3_auth_proto": null, - "smtp_port": null, - "snmpv3_priv_pwd": null, - "smtp_server": null, - "syslog_enc_algorithm": "disable", - "snmp_v2c_query_hosts_ipv4": null, - "smtp_username": null, - "mode": "set", - "syslog_certificate": null, - "admin_fortiguard_target": null, - "snmpv3_query_port": null, - "smtp_password": null, - "adom": "ansible", - "snmpv3_notify_hosts": null, - "syslog_mode": "udp", - "snmp_v2c_query_port": null, - "snmp_v2c_trap_status": null, - "snmp_status": null, - "syslog_status": null, - "snmp_v2c_trap_hosts_ipv4": null, - "admin_fortianalyzer_target": null, - "snmp_v2c_trap_src_ipv4": null, - "admin_http_port": null, - "dns_secondary_ipv4": null, - "syslog_filter": null, - "snmpv3_source_ip": null, - "snmpv3_trap_rport": null, - "admin_gui_theme": null, - "ntp_sync_interval": 60, - "ntp_auth_pwd": null, - "provisioning_template": "ansibleTest", - "ntp_v3": null, - "ntp_auth": null, - "snmp_v2c_trap_port": null, - "snmpv3_priv_proto": null, - "admin_enable_fortiguard": null, - "dns_primary_ipv4": null, - "admin_language": null, - "smtp_conn_sec": null, - "snmpv3_auth_pwd": null, - "smtp_source_ipv4": null, - "snmpv3_status": null, - "delete_provisioning_template": null, - "smtp_replyto": null, - "admin_https_redirect": null - }, - "datagram_sent": { - "ntpsync": 1, - "syncinterval": 60, - "type": 0 - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/devprof/ansibleTest/system/ntp" - }, - "post_method": "set" - }, - { - "paramgram_used": { - "snmpv3_security_level": null, - "snmp_v2c_query_status": null, - "provision_targets": null, - "ntp_type": "custom", - "dns_suffix": null, - "snmpv3_queries": null, - "snmpv3_trap_status": null, - "snmp_v2c_name": null, - "syslog_facility": "syslog", - "snmp_v2c_status": null, - "smtp_validate_cert": null, - "snmpv3_name": null, - "snmp_v2c_id": null, - "syslog_port": null, - "ntp_server": "10.7.220.32,10.7.220.1", - "admin_https_port": null, - "ntp_status": "enable", - "syslog_server": null, - "admin_switch_controller": null, - "admin_timeout": null, - "snmpv3_auth_proto": null, - "smtp_port": null, - "snmpv3_priv_pwd": null, - "smtp_server": null, - "syslog_enc_algorithm": "disable", - "snmp_v2c_query_hosts_ipv4": null, - "smtp_username": null, - "mode": "set", - "syslog_certificate": null, - "admin_fortiguard_target": null, - "snmpv3_query_port": null, - "smtp_password": null, - "adom": "ansible", - "snmpv3_notify_hosts": null, - "syslog_mode": "udp", - "snmp_v2c_query_port": null, - "snmp_v2c_trap_status": null, - "snmp_status": null, - "syslog_status": null, - "admin_https_redirect": null, - "admin_fortianalyzer_target": null, - "snmp_v2c_trap_src_ipv4": null, - "admin_http_port": null, - "dns_secondary_ipv4": null, - "syslog_filter": null, - "snmpv3_source_ip": null, - "snmpv3_trap_rport": null, - "admin_gui_theme": null, - "ntp_sync_interval": 60, - "ntp_auth_pwd": "fortinet", - "provisioning_template": "ansibleTest", - "smtp_replyto": null, - "ntp_auth": "enable", - "snmp_v2c_trap_port": null, - "snmpv3_priv_proto": null, - "admin_enable_fortiguard": null, - "dns_primary_ipv4": null, - "admin_language": null, - "smtp_conn_sec": null, - "snmpv3_auth_pwd": null, - "smtp_source_ipv4": null, - "snmpv3_status": null, - "delete_provisioning_template": null, - "snmp_v2c_trap_hosts_ipv4": null, - "ntp_v3": null - }, - "datagram_sent": { - "ntpsync": 1, - "syncinterval": 60, - "type": 1, - "ntpserver": [ - { - "ntpv3": 0, - "server": "10.7.220.32", - "authentication": 1, - "key": "fortinet", - "id": 1, - "key-id": 1 - }, - { - "ntpv3": 0, - "server": "10.7.220.1", - "authentication": 1, - "key": "fortinet", - "id": 2, - "key-id": 2 - } - ] - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/devprof/ansibleTest/system/ntp" - }, - "post_method": "set" - } - ], - "set_devprof_smtp": [ - { - "paramgram_used": { - "snmpv3_security_level": null, - "snmp_v2c_query_status": null, - "provision_targets": null, - "ntp_type": null, - "dns_suffix": null, - "snmpv3_queries": null, - "snmpv3_trap_status": null, - "snmp_v2c_name": null, - "syslog_facility": "syslog", - "snmp_v2c_status": null, - "smtp_validate_cert": "disable", - "snmpv3_name": null, - "snmp_v2c_id": null, - "syslog_port": null, - "ntp_server": null, - "admin_https_port": null, - "ntp_status": null, - "syslog_server": null, - "admin_switch_controller": null, - "admin_timeout": null, - "snmpv3_auth_proto": null, - "smtp_port": 25, - "snmpv3_priv_pwd": null, - "smtp_server": "10.7.220.32", - "syslog_enc_algorithm": "disable", - "snmp_v2c_query_hosts_ipv4": null, - "smtp_username": "ansible", - "mode": "set", - "syslog_certificate": null, - "admin_fortiguard_target": null, - "snmpv3_query_port": null, - "smtp_password": "fortinet", - "adom": "ansible", - "snmpv3_notify_hosts": null, - "syslog_mode": "udp", - "snmp_v2c_query_port": null, - "snmp_v2c_trap_status": null, - "snmp_status": null, - "syslog_status": null, - "admin_https_redirect": null, - "admin_fortianalyzer_target": null, - "snmp_v2c_trap_src_ipv4": null, - "admin_http_port": null, - "dns_secondary_ipv4": null, - "syslog_filter": null, - "snmpv3_source_ip": null, - "snmpv3_trap_rport": null, - "admin_gui_theme": null, - "ntp_sync_interval": null, - "ntp_auth_pwd": null, - "provisioning_template": "ansibleTest", - "smtp_replyto": "ansible@do-not-reply.com", - "ntp_auth": null, - "snmp_v2c_trap_port": null, - "snmpv3_priv_proto": null, - "admin_enable_fortiguard": null, - "dns_primary_ipv4": null, - "admin_language": null, - "smtp_conn_sec": "starttls", - "snmpv3_auth_pwd": null, - "smtp_source_ipv4": "0.0.0.0", - "snmpv3_status": null, - "delete_provisioning_template": null, - "snmp_v2c_trap_hosts_ipv4": null, - "ntp_v3": null - }, - "datagram_sent": { - "username": "ansible", - "authenticate": 1, - "source-ip": "0.0.0.0", - "validate-server": 0, - "server": "10.7.220.32", - "port": 25, - "security": 1, - "password": "fortinet", - "reply-to": "ansible@do-not-reply.com" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/devprof/ansibleTest/system/email-server" - }, - "post_method": "set" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_address.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_address.json deleted file mode 100644 index 1fab14f3ee..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_address.json +++ /dev/null @@ -1,1051 +0,0 @@ -{ - "fmgr_fwobj_ipv6": [ - { - "paramgram_used": { - "comment": null, - "obj-id": null, - "color": "22", - "group_name": "ansibleIPv6Group", - "allow-routing": "disable", - "wildcard-fqdn": null, - "ipv4": null, - "ipv6": "group", - "cache-ttl": null, - "adom": "ansible", - "group_members": null, - "visibility": "enable", - "end-ip": null, - "start-ip": null, - "name": null, - "country": null, - "ipv4addr": null, - "fqdn": null, - "multicast": null, - "associated-interface": null, - "mode": "delete", - "wildcard": null, - "ipv6addr": null - }, - "datagram_sent": {}, - "raw_response": { - "status": { - "message": "Object does not exist", - "code": -3 - }, - "url": "/pm/config/adom/ansible/obj/firewall/addrgrp6/ansibleIPv6Group" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "Object does not exist", - "code": -3 - }, - "url": "/pm/config/adom/ansible/obj/firewall/address6/ansible_v6Obj_Range" - }, - "datagram_sent": {}, - "paramgram_used": { - "comment": null, - "obj-id": null, - "color": "22", - "group_name": null, - "allow-routing": "disable", - "wildcard-fqdn": null, - "ipv4": null, - "ipv6": "iprange", - "cache-ttl": null, - "adom": "ansible", - "group_members": null, - "visibility": "enable", - "end-ip": null, - "start-ip": null, - "name": "ansible_v6Obj_Range", - "country": null, - "ipv4addr": null, - "fqdn": null, - "multicast": null, - "associated-interface": null, - "mode": "delete", - "wildcard": null, - "ipv6addr": null - }, - "post_method": "delete" - }, - { - "paramgram_used": { - "comment": null, - "obj-id": null, - "color": "22", - "group_name": null, - "allow-routing": "disable", - "wildcard-fqdn": null, - "ipv4": null, - "ipv6": "ip", - "cache-ttl": null, - "adom": "ansible", - "group_members": null, - "visibility": "enable", - "end-ip": null, - "start-ip": null, - "name": "ansible_v6Obj", - "country": null, - "ipv4addr": null, - "fqdn": null, - "multicast": null, - "associated-interface": null, - "mode": "delete", - "wildcard": null, - "ipv6addr": null - }, - "datagram_sent": {}, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/address6/ansible_v6Obj" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/address6" - }, - "datagram_sent": { - "comment": "Dev Example for Ansible", - "name": "ansible_v6Obj", - "color": "22", - "dynamic_mapping": [], - "visibility": "enable", - "ip6": "2001:0db8:85a3:0000:0000:8a2e:0370:7334", - "type": "ipprefix" - }, - "paramgram_used": { - "comment": "Dev Example for Ansible", - "obj-id": null, - "color": "22", - "group_name": null, - "allow-routing": "disable", - "wildcard-fqdn": null, - "ipv4": null, - "ipv6": "ip", - "cache-ttl": null, - "adom": "ansible", - "group_members": null, - "visibility": "enable", - "end-ip": null, - "start-ip": null, - "name": "ansible_v6Obj", - "country": null, - "ipv4addr": null, - "fqdn": null, - "multicast": null, - "associated-interface": null, - "mode": "add", - "wildcard": null, - "ipv6addr": "2001:0db8:85a3:0000:0000:8a2e:0370:7334" - }, - "post_method": "add" - }, - { - "paramgram_used": { - "comment": "test123 comment", - "obj-id": null, - "color": "22", - "group_name": "ansibleIPv6Group", - "allow-routing": "disable", - "wildcard-fqdn": null, - "ipv4": null, - "ipv6": "group", - "cache-ttl": null, - "adom": "ansible", - "group_members": "ansible_v6Obj_Range, ansible_v6Obj", - "visibility": "enable", - "end-ip": null, - "start-ip": null, - "name": null, - "country": null, - "ipv4addr": null, - "fqdn": null, - "multicast": null, - "associated-interface": null, - "mode": "add", - "wildcard": null, - "ipv6addr": null - }, - "datagram_sent": { - "comment": "test123 comment", - "color": "22", - "member": [ - "ansible_v6Obj_Range", - "ansible_v6Obj" - ], - "name": "ansibleIPv6Group", - "visibility": "enable" - }, - "raw_response": { - "status": { - "message": "datasrc invalid. object: firewall addrgrp6 member ansibleIPv6Group. detail: ansible_v6Obj_Range. solution: data not exist", - "code": -10131 - }, - "url": "/pm/config/adom/ansible/obj/firewall/addrgrp6" - }, - "post_method": "add" - } - ], - "fmgr_fwobj_ipv4": [ - { - "paramgram_used": { - "comment": null, - "obj-id": null, - "color": "22", - "group_name": "ansibleIPv4Group", - "allow-routing": "disable", - "wildcard-fqdn": null, - "ipv4": "group", - "ipv6": null, - "cache-ttl": null, - "adom": "ansible", - "group_members": null, - "visibility": "enable", - "end-ip": null, - "start-ip": null, - "name": null, - "country": null, - "ipv4addr": null, - "fqdn": null, - "multicast": null, - "associated-interface": null, - "mode": "delete", - "wildcard": null, - "ipv6addr": null - }, - "datagram_sent": {}, - "raw_response": { - "status": { - "message": "Object does not exist", - "code": -3 - }, - "url": "/pm/config/adom/ansible/obj/firewall/addrgrp/ansibleIPv4Group" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/address/ansible_v4Obj_Range" - }, - "datagram_sent": {}, - "paramgram_used": { - "comment": null, - "obj-id": null, - "color": "22", - "group_name": null, - "allow-routing": "disable", - "wildcard-fqdn": null, - "ipv4": "iprange", - "ipv6": null, - "cache-ttl": null, - "adom": "ansible", - "group_members": null, - "visibility": "enable", - "end-ip": null, - "start-ip": null, - "name": "ansible_v4Obj_Range", - "country": null, - "ipv4addr": null, - "fqdn": null, - "multicast": null, - "associated-interface": null, - "mode": "delete", - "wildcard": null, - "ipv6addr": null - }, - "post_method": "delete" - }, - { - "paramgram_used": { - "comment": null, - "obj-id": null, - "color": "22", - "group_name": null, - "allow-routing": "disable", - "wildcard-fqdn": null, - "ipv4": "iprange", - "ipv6": null, - "cache-ttl": null, - "adom": "ansible", - "group_members": null, - "visibility": "enable", - "end-ip": null, - "start-ip": null, - "name": "ansible_v4Obj_MORE", - "country": null, - "ipv4addr": null, - "fqdn": null, - "multicast": null, - "associated-interface": null, - "mode": "delete", - "wildcard": null, - "ipv6addr": null - }, - "datagram_sent": {}, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/address/ansible_v4Obj_MORE" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "Object does not exist", - "code": -3 - }, - "url": "/pm/config/adom/ansible/obj/firewall/address/ansible_v4Obj_ipMask2" - }, - "datagram_sent": {}, - "paramgram_used": { - "comment": null, - "obj-id": null, - "color": "22", - "group_name": null, - "allow-routing": "disable", - "wildcard-fqdn": null, - "ipv4": "iprange", - "ipv6": null, - "cache-ttl": null, - "adom": "ansible", - "group_members": null, - "visibility": "enable", - "end-ip": null, - "start-ip": null, - "name": "ansible_v4Obj_ipMask2", - "country": null, - "ipv4addr": null, - "fqdn": null, - "multicast": null, - "associated-interface": null, - "mode": "delete", - "wildcard": null, - "ipv6addr": null - }, - "post_method": "delete" - }, - { - "paramgram_used": { - "comment": null, - "obj-id": null, - "color": "22", - "group_name": null, - "allow-routing": "disable", - "wildcard-fqdn": null, - "ipv4": "iprange", - "ipv6": null, - "cache-ttl": null, - "adom": "ansible", - "group_members": null, - "visibility": "enable", - "end-ip": null, - "start-ip": null, - "name": "ansible_v4Obj_Range2", - "country": null, - "ipv4addr": null, - "fqdn": null, - "multicast": null, - "associated-interface": null, - "mode": "delete", - "wildcard": null, - "ipv6addr": null - }, - "datagram_sent": {}, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/address/ansible_v4Obj_Range2" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "Object does not exist", - "code": -3 - }, - "url": "/pm/config/adom/ansible/obj/firewall/address/ansible_v4Obj_ipMask" - }, - "datagram_sent": {}, - "paramgram_used": { - "comment": null, - "obj-id": null, - "color": "22", - "group_name": null, - "allow-routing": "disable", - "wildcard-fqdn": null, - "ipv4": "ipmask", - "ipv6": null, - "cache-ttl": null, - "adom": "ansible", - "group_members": null, - "visibility": "enable", - "end-ip": null, - "start-ip": null, - "name": "ansible_v4Obj_ipMask", - "country": null, - "ipv4addr": null, - "fqdn": null, - "multicast": null, - "associated-interface": null, - "mode": "delete", - "wildcard": null, - "ipv6addr": null - }, - "post_method": "delete" - }, - { - "paramgram_used": { - "comment": null, - "obj-id": null, - "color": "22", - "group_name": null, - "allow-routing": "disable", - "wildcard-fqdn": null, - "ipv4": "ipmask", - "ipv6": null, - "cache-ttl": null, - "adom": "ansible", - "group_members": null, - "visibility": "enable", - "end-ip": null, - "start-ip": null, - "name": "ansible_v4Obj_Subnet2", - "country": null, - "ipv4addr": null, - "fqdn": null, - "multicast": null, - "associated-interface": null, - "mode": "delete", - "wildcard": null, - "ipv6addr": null - }, - "datagram_sent": {}, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/address/ansible_v4Obj_Subnet2" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/address/ansible_v4Obj_Subnet1" - }, - "datagram_sent": {}, - "paramgram_used": { - "comment": null, - "obj-id": null, - "color": "22", - "group_name": null, - "allow-routing": "disable", - "wildcard-fqdn": null, - "ipv4": "ipmask", - "ipv6": null, - "cache-ttl": null, - "adom": "ansible", - "group_members": null, - "visibility": "enable", - "end-ip": null, - "start-ip": null, - "name": "ansible_v4Obj_Subnet1", - "country": null, - "ipv4addr": null, - "fqdn": null, - "multicast": null, - "associated-interface": null, - "mode": "delete", - "wildcard": null, - "ipv6addr": null - }, - "post_method": "delete" - }, - { - "paramgram_used": { - "comment": null, - "obj-id": null, - "color": "22", - "group_name": null, - "allow-routing": "disable", - "wildcard-fqdn": null, - "ipv4": "wildcard", - "ipv6": null, - "cache-ttl": null, - "adom": "ansible", - "group_members": null, - "visibility": "enable", - "end-ip": null, - "start-ip": null, - "name": "ansible_v4Obj_wildCard", - "country": null, - "ipv4addr": null, - "fqdn": null, - "multicast": null, - "associated-interface": null, - "mode": "delete", - "wildcard": null, - "ipv6addr": null - }, - "datagram_sent": {}, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/address/ansible_v4Obj_wildCard" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/address/Synology myds DDNS service" - }, - "datagram_sent": {}, - "paramgram_used": { - "comment": null, - "obj-id": null, - "color": "22", - "group_name": null, - "allow-routing": "disable", - "wildcard-fqdn": null, - "ipv4": "wildcard-fqdn", - "ipv6": null, - "cache-ttl": null, - "adom": "ansible", - "group_members": null, - "visibility": "enable", - "end-ip": null, - "start-ip": null, - "name": "Synology myds DDNS service", - "country": null, - "ipv4addr": null, - "fqdn": null, - "multicast": null, - "associated-interface": null, - "mode": "delete", - "wildcard": null, - "ipv6addr": null - }, - "post_method": "delete" - }, - { - "paramgram_used": { - "comment": null, - "obj-id": null, - "color": "22", - "group_name": null, - "allow-routing": "disable", - "wildcard-fqdn": null, - "ipv4": "fqdn", - "ipv6": null, - "cache-ttl": null, - "adom": "ansible", - "group_members": null, - "visibility": "enable", - "end-ip": null, - "start-ip": null, - "name": "Bluesnews", - "country": null, - "ipv4addr": null, - "fqdn": null, - "multicast": null, - "associated-interface": null, - "mode": "delete", - "wildcard": null, - "ipv6addr": null - }, - "datagram_sent": {}, - "raw_response": { - "status": { - "message": "Object does not exist", - "code": -3 - }, - "url": "/pm/config/adom/ansible/obj/firewall/address/Bluesnews" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/address/ansible_geo" - }, - "datagram_sent": {}, - "paramgram_used": { - "comment": null, - "obj-id": null, - "color": "22", - "group_name": null, - "allow-routing": "disable", - "wildcard-fqdn": null, - "ipv4": "geography", - "ipv6": null, - "cache-ttl": null, - "adom": "ansible", - "group_members": null, - "visibility": "enable", - "end-ip": null, - "start-ip": null, - "name": "ansible_geo", - "country": null, - "ipv4addr": null, - "fqdn": null, - "multicast": null, - "associated-interface": null, - "mode": "delete", - "wildcard": null, - "ipv6addr": null - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/address" - }, - "datagram_sent": { - "comment": "Dev Example for Ansible", - "cache-ttl": null, - "name": "ansible_v4Obj_Range", - "subnet": [ - "0.0.0.0", - "0.0.0.0" - ], - "color": "22", - "meta fields": {}, - "dynamic_mapping": [], - "visibility": "disable", - "associated-interface": null, - "end-ip": "10.7.220.50", - "start-ip": "10.7.220.1", - "allow-routing": "disable", - "type": "iprange" - }, - "paramgram_used": { - "comment": "Dev Example for Ansible", - "obj-id": null, - "color": "22", - "group_name": null, - "allow-routing": "disable", - "wildcard-fqdn": null, - "ipv4": "iprange", - "ipv6": null, - "cache-ttl": null, - "adom": "ansible", - "group_members": null, - "visibility": "enable", - "end-ip": "10.7.220.50", - "start-ip": "10.7.220.1", - "name": "ansible_v4Obj_Range", - "country": null, - "ipv4addr": null, - "fqdn": null, - "multicast": null, - "associated-interface": null, - "mode": "set", - "wildcard": null, - "ipv6addr": null - }, - "post_method": "set" - }, - { - "paramgram_used": { - "comment": "Dev Example for Ansible", - "obj-id": null, - "color": "22", - "group_name": null, - "allow-routing": "disable", - "wildcard-fqdn": null, - "ipv4": "iprange", - "ipv6": null, - "cache-ttl": null, - "adom": "ansible", - "group_members": null, - "visibility": "enable", - "end-ip": "10.7.220.150", - "start-ip": "10.7.220.100", - "name": "ansible_v4Obj_Range2", - "country": null, - "ipv4addr": null, - "fqdn": null, - "multicast": null, - "associated-interface": null, - "mode": "set", - "wildcard": null, - "ipv6addr": null - }, - "datagram_sent": { - "comment": "Dev Example for Ansible", - "cache-ttl": null, - "name": "ansible_v4Obj_Range2", - "subnet": [ - "0.0.0.0", - "0.0.0.0" - ], - "color": "22", - "meta fields": {}, - "dynamic_mapping": [], - "visibility": "disable", - "associated-interface": null, - "end-ip": "10.7.220.150", - "start-ip": "10.7.220.100", - "allow-routing": "disable", - "type": "iprange" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/address" - }, - "post_method": "set" - }, - { - "paramgram_used": { - "comment": "Dev Example for Ansible", - "obj-id": null, - "color": "22", - "group_name": null, - "allow-routing": "disable", - "wildcard-fqdn": null, - "ipv4": "fqdn", - "ipv6": null, - "cache-ttl": null, - "adom": "ansible", - "group_members": null, - "visibility": "enable", - "end-ip": null, - "start-ip": null, - "name": "Bluesnews", - "country": null, - "ipv4addr": null, - "fqdn": "bluesnews.com", - "multicast": null, - "associated-interface": null, - "mode": "add", - "wildcard": null, - "ipv6addr": null - }, - "datagram_sent": { - "comment": "Dev Example for Ansible", - "cache-ttl": null, - "name": "Bluesnews", - "color": "22", - "meta fields": {}, - "dynamic_mapping": [], - "fqdn": "bluesnews.com", - "visibility": "disable", - "associated-interface": null, - "allow-routing": "disable", - "type": "fqdn" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/address" - }, - "post_method": "add" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/address" - }, - "datagram_sent": { - "comment": "Dev Example for Ansible", - "cache-ttl": null, - "name": "ansible_geo", - "color": "22", - "meta fields": {}, - "dynamic_mapping": [], - "visibility": "disable", - "associated-interface": null, - "country": "US", - "allow-routing": "disable", - "type": "geography" - }, - "paramgram_used": { - "comment": "Dev Example for Ansible", - "obj-id": null, - "color": "22", - "group_name": null, - "allow-routing": "disable", - "wildcard-fqdn": null, - "ipv4": "geography", - "ipv6": null, - "cache-ttl": null, - "adom": "ansible", - "group_members": null, - "visibility": "enable", - "end-ip": null, - "start-ip": null, - "name": "ansible_geo", - "country": "US", - "ipv4addr": null, - "fqdn": null, - "multicast": null, - "associated-interface": null, - "mode": "add", - "wildcard": null, - "ipv6addr": null - }, - "post_method": "add" - }, - { - "paramgram_used": { - "comment": "Ansible is fun! Paramgram!", - "obj-id": null, - "color": "26", - "group_name": null, - "allow-routing": "disable", - "wildcard-fqdn": null, - "ipv4": "ipmask", - "ipv6": null, - "cache-ttl": null, - "adom": "ansible", - "group_members": null, - "visibility": "enable", - "end-ip": null, - "start-ip": null, - "name": "ansible_v4Obj_ipMask2", - "country": null, - "ipv4addr": "10.7.220.30/32", - "fqdn": null, - "multicast": null, - "associated-interface": null, - "mode": "delete", - "wildcard": null, - "ipv6addr": null - }, - "datagram_sent": {}, - "raw_response": { - "status": { - "message": "Object does not exist", - "code": -3 - }, - "url": "/pm/config/adom/ansible/obj/firewall/address/ansible_v4Obj_ipMask2" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/address" - }, - "datagram_sent": { - "comment": "Ansible more options", - "cache-ttl": "180", - "color": "6", - "meta fields": {}, - "dynamic_mapping": [], - "visibility": "enable", - "allow-routing": "enable", - "subnet": [ - "10.7.220.41", - "255.255.255.255" - ], - "name": "ansible_v4Obj_MORE", - "associated-interface": "port1", - "type": "ipmask" - }, - "paramgram_used": { - "comment": "Ansible more options", - "obj-id": null, - "color": "6", - "group_name": null, - "allow-routing": "enable", - "wildcard-fqdn": null, - "ipv4": "ipmask", - "ipv6": null, - "cache-ttl": "180", - "adom": "ansible", - "group_members": null, - "visibility": "enable", - "end-ip": null, - "start-ip": null, - "name": "ansible_v4Obj_MORE", - "country": null, - "ipv4addr": "10.7.220.41/32", - "fqdn": null, - "multicast": null, - "associated-interface": "port1", - "mode": "set", - "wildcard": null, - "ipv6addr": null - }, - "post_method": "set" - } - ], - "fmgr_fwobj_multicast": [ - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/multicast-address/ansible_broadcastSubnet" - }, - "datagram_sent": { - "name": "ansible_broadcastSubnet" - }, - "paramgram_used": { - "comment": null, - "obj-id": null, - "color": "22", - "group_name": null, - "allow-routing": "disable", - "wildcard-fqdn": null, - "ipv4": null, - "ipv6": null, - "cache-ttl": null, - "adom": "ansible", - "group_members": null, - "visibility": "enable", - "end-ip": null, - "start-ip": null, - "name": "ansible_broadcastSubnet", - "country": null, - "ipv4addr": null, - "fqdn": null, - "multicast": "broadcastmask", - "associated-interface": null, - "mode": "delete", - "wildcard": null, - "ipv6addr": null - }, - "post_method": "delete" - }, - { - "paramgram_used": { - "comment": null, - "obj-id": null, - "color": "22", - "group_name": null, - "allow-routing": "disable", - "wildcard-fqdn": null, - "ipv4": null, - "ipv6": null, - "cache-ttl": null, - "adom": "ansible", - "group_members": null, - "visibility": "enable", - "end-ip": null, - "start-ip": null, - "name": "ansible_multicastrange", - "country": null, - "ipv4addr": null, - "fqdn": null, - "multicast": "multicastrange", - "associated-interface": null, - "mode": "delete", - "wildcard": null, - "ipv6addr": null - }, - "datagram_sent": { - "name": "ansible_multicastrange" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/multicast-address/ansible_multicastrange" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/multicast-address" - }, - "datagram_sent": { - "comment": "Dev by Ansible", - "subnet": [ - "0.0.0.0", - "0.0.0.0" - ], - "name": "ansible_multicastrange", - "color": "22", - "visibility": "enable", - "associated-interface": null, - "end-ip": "224.0.0.251", - "start-ip": "224.0.0.251", - "type": "multicastrange" - }, - "paramgram_used": { - "comment": "Dev by Ansible", - "obj-id": null, - "color": "22", - "group_name": null, - "allow-routing": "disable", - "wildcard-fqdn": null, - "ipv4": null, - "ipv6": null, - "cache-ttl": null, - "adom": "ansible", - "group_members": null, - "visibility": "enable", - "end-ip": "224.0.0.251", - "start-ip": "224.0.0.251", - "name": "ansible_multicastrange", - "country": null, - "ipv4addr": null, - "fqdn": null, - "multicast": "multicastrange", - "associated-interface": null, - "mode": "add", - "wildcard": null, - "ipv6addr": null - }, - "post_method": "add" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_ippool.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_ippool.json deleted file mode 100644 index 48e79fde6d..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_ippool.json +++ /dev/null @@ -1,388 +0,0 @@ -{ - "fmgr_fwobj_ippool_modify": [ - { - "paramgram_used": { - "source-endip": null, - "arp-intf": null, - "num-blocks-per-user": null, - "name": "Ansible_pool4_overload", - "adom": "ansible", - "startip": "10.10.10.10", - "dynamic_mapping": { - "endip": null, - "num-blocks-per-user": null, - "block-size": null, - "startip": null, - "arp-intf": null, - "comments": null, - "source-endip": null, - "arp-reply": null, - "pba-timeout": null, - "associated-interface": null, - "source-startip": null, - "permit-any-host": null, - "type": null - }, - "comments": "Created by ansible", - "permit-any-host": null, - "arp-reply": "enable", - "pba-timeout": null, - "endip": "10.10.10.100", - "associated-interface": null, - "mode": "add", - "source-startip": null, - "type": "overload", - "block-size": null - }, - "datagram_sent": { - "endip": "10.10.10.100", - "name": "Ansible_pool4_overload", - "startip": "10.10.10.10", - "comments": "Created by ansible", - "arp-reply": "enable", - "type": "overload" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/ippool" - }, - "post_method": "add" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/ippool" - }, - "datagram_sent": { - "endip": "10.10.20.100", - "name": "Ansible_pool4_121", - "startip": "10.10.20.10", - "comments": "Created by ansible", - "arp-reply": "enable", - "type": "one-to-one" - }, - "paramgram_used": { - "permit-any-host": null, - "dynamic_mapping": { - "endip": null, - "num-blocks-per-user": null, - "block-size": null, - "startip": null, - "arp-intf": null, - "comments": null, - "source-endip": null, - "arp-reply": null, - "pba-timeout": null, - "associated-interface": null, - "source-startip": null, - "permit-any-host": null, - "type": null - }, - "num-blocks-per-user": null, - "name": "Ansible_pool4_121", - "adom": "ansible", - "startip": "10.10.20.10", - "arp-intf": null, - "comments": "Created by ansible", - "source-endip": null, - "arp-reply": "enable", - "pba-timeout": null, - "endip": "10.10.20.100", - "associated-interface": null, - "mode": "add", - "source-startip": null, - "type": "one-to-one", - "block-size": null - }, - "post_method": "add" - }, - { - "paramgram_used": { - "source-endip": "192.168.20.20", - "arp-intf": null, - "num-blocks-per-user": null, - "name": "Ansible_pool4_fixed_port", - "adom": "ansible", - "startip": "10.10.40.10", - "dynamic_mapping": { - "endip": null, - "num-blocks-per-user": null, - "block-size": null, - "startip": null, - "arp-intf": null, - "comments": null, - "source-endip": null, - "arp-reply": null, - "pba-timeout": null, - "associated-interface": null, - "source-startip": null, - "permit-any-host": null, - "type": null - }, - "comments": "Created by ansible", - "permit-any-host": null, - "arp-reply": "enable", - "pba-timeout": null, - "endip": "10.10.40.100", - "associated-interface": null, - "mode": "add", - "source-startip": "192.168.20.1", - "type": "fixed-port-range", - "block-size": null - }, - "datagram_sent": { - "endip": "10.10.40.100", - "name": "Ansible_pool4_fixed_port", - "startip": "10.10.40.10", - "comments": "Created by ansible", - "source-endip": "192.168.20.20", - "arp-reply": "enable", - "source-startip": "192.168.20.1", - "type": "fixed-port-range" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/ippool" - }, - "post_method": "add" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/ippool" - }, - "datagram_sent": { - "endip": "10.10.30.100", - "num-blocks-per-user": 1, - "name": "Ansible_pool4_port_block_allocation", - "startip": "10.10.30.10", - "comments": "Created by ansible", - "arp-reply": "enable", - "type": "port-block-allocation", - "block-size": 128 - }, - "paramgram_used": { - "permit-any-host": null, - "dynamic_mapping": { - "endip": null, - "num-blocks-per-user": null, - "block-size": null, - "startip": null, - "arp-intf": null, - "comments": null, - "source-endip": null, - "arp-reply": null, - "pba-timeout": null, - "associated-interface": null, - "source-startip": null, - "permit-any-host": null, - "type": null - }, - "num-blocks-per-user": 1, - "name": "Ansible_pool4_port_block_allocation", - "adom": "ansible", - "startip": "10.10.30.10", - "arp-intf": null, - "comments": "Created by ansible", - "source-endip": null, - "arp-reply": "enable", - "pba-timeout": null, - "endip": "10.10.30.100", - "associated-interface": null, - "mode": "add", - "source-startip": null, - "type": "port-block-allocation", - "block-size": 128 - }, - "post_method": "add" - }, - { - "paramgram_used": { - "source-endip": null, - "arp-intf": null, - "num-blocks-per-user": null, - "name": "Ansible_pool4_overload", - "adom": "ansible", - "startip": null, - "dynamic_mapping": { - "endip": null, - "num-blocks-per-user": null, - "block-size": null, - "startip": null, - "arp-intf": null, - "comments": null, - "source-endip": null, - "arp-reply": null, - "pba-timeout": null, - "associated-interface": null, - "source-startip": null, - "permit-any-host": null, - "type": null - }, - "comments": "Created by ansible", - "permit-any-host": null, - "arp-reply": null, - "pba-timeout": null, - "endip": null, - "associated-interface": null, - "mode": "delete", - "source-startip": null, - "type": null, - "block-size": null - }, - "datagram_sent": {}, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/ippool/Ansible_pool4_overload" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/ippool/Ansible_pool4_121" - }, - "datagram_sent": {}, - "paramgram_used": { - "permit-any-host": null, - "dynamic_mapping": { - "endip": null, - "num-blocks-per-user": null, - "block-size": null, - "startip": null, - "arp-intf": null, - "comments": null, - "source-endip": null, - "arp-reply": null, - "pba-timeout": null, - "associated-interface": null, - "source-startip": null, - "permit-any-host": null, - "type": null - }, - "num-blocks-per-user": null, - "name": "Ansible_pool4_121", - "adom": "ansible", - "startip": null, - "arp-intf": null, - "comments": "Created by ansible", - "source-endip": null, - "arp-reply": null, - "pba-timeout": null, - "endip": null, - "associated-interface": null, - "mode": "delete", - "source-startip": null, - "type": null, - "block-size": null - }, - "post_method": "delete" - }, - { - "paramgram_used": { - "source-endip": null, - "arp-intf": null, - "num-blocks-per-user": null, - "name": "Ansible_pool4_fixed_port", - "adom": "ansible", - "startip": null, - "dynamic_mapping": { - "endip": null, - "num-blocks-per-user": null, - "block-size": null, - "startip": null, - "arp-intf": null, - "comments": null, - "source-endip": null, - "arp-reply": null, - "pba-timeout": null, - "associated-interface": null, - "source-startip": null, - "permit-any-host": null, - "type": null - }, - "comments": "Created by ansible", - "permit-any-host": null, - "arp-reply": null, - "pba-timeout": null, - "endip": null, - "associated-interface": null, - "mode": "delete", - "source-startip": null, - "type": null, - "block-size": null - }, - "datagram_sent": {}, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/ippool/Ansible_pool4_fixed_port" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/ippool/Ansible_pool4_port_block_allocation" - }, - "datagram_sent": {}, - "paramgram_used": { - "permit-any-host": null, - "dynamic_mapping": { - "num-blocks-per-user": null, - "source-endip": null, - "arp-reply": null, - "pba-timeout": null, - "endip": null, - "block-size": null, - "startip": null, - "arp-intf": null, - "comments": null, - "permit-any-host": null, - "associated-interface": null, - "source-startip": null, - "type": null - }, - "num-blocks-per-user": null, - "name": "Ansible_pool4_port_block_allocation", - "adom": "ansible", - "startip": null, - "arp-intf": null, - "comments": "Created by ansible", - "source-endip": null, - "arp-reply": null, - "pba-timeout": null, - "endip": null, - "associated-interface": null, - "mode": "delete", - "source-startip": null, - "type": null, - "block-size": null - }, - "post_method": "delete" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_ippool6.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_ippool6.json deleted file mode 100644 index 078c97cb4b..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_ippool6.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "fmgr_fwobj_ippool6_modify": [ - { - "paramgram_used": { - "endip": null, - "name": "IPv6 IPPool", - "adom": "ansible", - "startip": null, - "dynamic_mapping": { - "startip": null, - "endip": null, - "comments": null - }, - "comments": null, - "mode": "delete" - }, - "datagram_sent": {}, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/ippool6/IPv6 IPPool" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/ippool6" - }, - "datagram_sent": { - "startip": "fd30:fc67:cb18:ae44::aaaa:aaaa", - "endip": "fd30:fc67:cb18:ae44::ffff:ffff", - "name": "IPv6 IPPool", - "comments": "Created by Ansible" - }, - "paramgram_used": { - "endip": "fd30:fc67:cb18:ae44::ffff:ffff", - "name": "IPv6 IPPool", - "adom": "ansible", - "startip": "fd30:fc67:cb18:ae44::aaaa:aaaa", - "dynamic_mapping": { - "startip": null, - "endip": null, - "comments": null - }, - "comments": "Created by Ansible", - "mode": "add" - }, - "post_method": "add" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_service.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_service.json deleted file mode 100644 index 7909db218a..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_service.json +++ /dev/null @@ -1,745 +0,0 @@ -{ - "fmgr_fwobj_service_custom": [ - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/service/custom/ansible_custom_service" - }, - "datagram_sent": { - "name": "ansible_custom_service" - }, - "paramgram_used": { - "comment": null, - "protocol": null, - "custom_type": "all", - "color": 22, - "object_type": "custom", - "group-name": null, - "tcp-halfclose-timer": 0, - "icmp_type": null, - "iprange": "0.0.0.0", - "category": null, - "protocol-number": null, - "udp-idle-timer": 0, - "explicit-proxy": "disable", - "group-member": null, - "application": null, - "tcp-portrange": null, - "icmp_code": null, - "session-ttl": 0, - "adom": "ansible", - "visibility": "enable", - "tcp-timewait-timer": 0, - "name": "ansible_custom_service", - "app-service-type": null, - "fqdn": "", - "app-category": null, - "check-reset-range": null, - "mode": "delete", - "tcp-halfopen-timer": 0, - "udp-portrange": null, - "sctp-portrange": null - }, - "post_method": "delete" - }, - { - "paramgram_used": { - "comment": null, - "protocol-number": null, - "protocol": null, - "custom_type": "all", - "color": 22, - "object_type": "custom", - "group-name": null, - "tcp-halfclose-timer": 0, - "icmp_type": null, - "iprange": "0.0.0.0", - "category": null, - "explicit-proxy": "disable", - "udp-idle-timer": 0, - "group-member": null, - "application": null, - "tcp-portrange": null, - "icmp_code": null, - "session-ttl": 0, - "adom": "ansible", - "visibility": "enable", - "tcp-timewait-timer": 0, - "name": "ansible_custom_icmp", - "app-service-type": null, - "fqdn": "", - "app-category": null, - "check-reset-range": null, - "mode": "delete", - "tcp-halfopen-timer": 0, - "udp-portrange": null, - "sctp-portrange": null - }, - "datagram_sent": { - "name": "ansible_custom_icmp" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/service/custom/ansible_custom_icmp" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/service/custom/ansible_custom_icmp6" - }, - "datagram_sent": { - "name": "ansible_custom_icmp6" - }, - "paramgram_used": { - "comment": null, - "protocol": null, - "custom_type": "all", - "color": 22, - "object_type": "custom", - "group-name": null, - "tcp-halfclose-timer": 0, - "icmp_type": null, - "iprange": "0.0.0.0", - "category": null, - "protocol-number": null, - "udp-idle-timer": 0, - "explicit-proxy": "disable", - "group-member": null, - "application": null, - "tcp-portrange": null, - "icmp_code": null, - "session-ttl": 0, - "adom": "ansible", - "visibility": "enable", - "tcp-timewait-timer": 0, - "name": "ansible_custom_icmp6", - "app-service-type": null, - "fqdn": "", - "app-category": null, - "check-reset-range": null, - "mode": "delete", - "tcp-halfopen-timer": 0, - "udp-portrange": null, - "sctp-portrange": null - }, - "post_method": "delete" - }, - { - "paramgram_used": { - "comment": null, - "protocol-number": null, - "protocol": null, - "custom_type": "all", - "color": 22, - "object_type": "custom", - "group-name": null, - "tcp-halfclose-timer": 0, - "icmp_type": null, - "iprange": "0.0.0.0", - "category": null, - "explicit-proxy": "disable", - "udp-idle-timer": 0, - "group-member": null, - "application": null, - "tcp-portrange": null, - "icmp_code": null, - "session-ttl": 0, - "adom": "ansible", - "visibility": "enable", - "tcp-timewait-timer": 0, - "name": "ansible_custom_ip", - "app-service-type": null, - "fqdn": "", - "app-category": null, - "check-reset-range": null, - "mode": "delete", - "tcp-halfopen-timer": 0, - "udp-portrange": null, - "sctp-portrange": null - }, - "datagram_sent": { - "name": "ansible_custom_ip" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/service/custom/ansible_custom_ip" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/service/custom/ansible_custom_serviceWithSource" - }, - "datagram_sent": { - "name": "ansible_custom_serviceWithSource" - }, - "paramgram_used": { - "comment": null, - "protocol": null, - "custom_type": "all", - "color": 22, - "object_type": "custom", - "group-name": null, - "tcp-halfclose-timer": 0, - "icmp_type": null, - "iprange": "0.0.0.0", - "category": null, - "protocol-number": null, - "udp-idle-timer": 0, - "explicit-proxy": "disable", - "group-member": null, - "application": null, - "tcp-portrange": null, - "icmp_code": null, - "session-ttl": 0, - "adom": "ansible", - "visibility": "enable", - "tcp-timewait-timer": 0, - "name": "ansible_custom_serviceWithSource", - "app-service-type": null, - "fqdn": "", - "app-category": null, - "check-reset-range": null, - "mode": "delete", - "tcp-halfopen-timer": 0, - "udp-portrange": null, - "sctp-portrange": null - }, - "post_method": "delete" - }, - { - "paramgram_used": { - "comment": null, - "protocol-number": null, - "protocol": null, - "custom_type": "all", - "color": 22, - "object_type": "custom", - "group-name": null, - "tcp-halfclose-timer": 0, - "icmp_type": null, - "iprange": "0.0.0.0", - "category": null, - "explicit-proxy": "disable", - "udp-idle-timer": 0, - "group-member": null, - "application": null, - "tcp-portrange": null, - "icmp_code": null, - "session-ttl": 0, - "adom": "ansible", - "visibility": "enable", - "tcp-timewait-timer": 0, - "name": "ansible_custom_proxy_all", - "app-service-type": null, - "fqdn": "", - "app-category": null, - "check-reset-range": null, - "mode": "delete", - "tcp-halfopen-timer": 0, - "udp-portrange": null, - "sctp-portrange": null - }, - "datagram_sent": { - "name": "ansible_custom_proxy_all" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/service/custom/ansible_custom_proxy_all" - }, - "post_method": "delete" - }, - { - "paramgram_used": { - "comment": null, - "protocol-number": null, - "protocol": null, - "custom_type": "tcp_udp_sctp", - "color": 22, - "object_type": "custom", - "group-name": null, - "tcp-halfclose-timer": 0, - "icmp_type": null, - "iprange": "0.0.0.0", - "category": "ansibleCategoryTest", - "explicit-proxy": "disable", - "udp-idle-timer": 0, - "group-member": null, - "application": null, - "tcp-portrange": "443", - "icmp_code": null, - "session-ttl": 0, - "adom": "ansible", - "visibility": "enable", - "tcp-timewait-timer": 0, - "name": "ansible_custom_service", - "app-service-type": null, - "fqdn": "", - "app-category": null, - "check-reset-range": null, - "mode": "add", - "tcp-halfopen-timer": 0, - "udp-portrange": "51", - "sctp-portrange": "100" - }, - "datagram_sent": { - "category": "ansibleCategoryTest", - "protocol": "TCP/UDP/SCTP", - "name": "ansible_custom_service", - "color": 22, - "visibility": "enable", - "proxy": "disable", - "sctp-portrange": [ - "100" - ], - "udp-portrange": [ - "51" - ], - "tcp-portrange": [ - "443" - ] - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/service/custom" - }, - "post_method": "add" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/service/custom" - }, - "datagram_sent": { - "protocol": "TCP/UDP/SCTP", - "name": "ansible_custom_serviceWithSource", - "color": 22, - "visibility": "enable", - "proxy": "disable", - "tcp-portrange": [ - "443:1000-2000", - "80-82:10000-20000" - ], - "udp-portrange": [ - "51:100-200", - "162:200-400" - ], - "sctp-portrange": [ - "100:2000-2500" - ] - }, - "paramgram_used": { - "comment": null, - "protocol": null, - "custom_type": "tcp_udp_sctp", - "color": 22, - "object_type": "custom", - "group-name": null, - "tcp-halfclose-timer": 0, - "icmp_type": null, - "iprange": "0.0.0.0", - "category": null, - "protocol-number": null, - "udp-idle-timer": 0, - "explicit-proxy": "disable", - "group-member": null, - "application": null, - "tcp-portrange": "443:1000-2000,80-82:10000-20000", - "icmp_code": null, - "session-ttl": 0, - "adom": "ansible", - "visibility": "enable", - "tcp-timewait-timer": 0, - "name": "ansible_custom_serviceWithSource", - "app-service-type": null, - "fqdn": "", - "app-category": null, - "check-reset-range": null, - "mode": "add", - "tcp-halfopen-timer": 0, - "udp-portrange": "51:100-200,162:200-400", - "sctp-portrange": "100:2000-2500" - }, - "post_method": "add" - }, - { - "paramgram_used": { - "comment": null, - "protocol-number": null, - "protocol": null, - "custom_type": "icmp", - "color": 22, - "object_type": "custom", - "group-name": null, - "tcp-halfclose-timer": 0, - "icmp_type": 8, - "iprange": "0.0.0.0", - "category": null, - "explicit-proxy": "disable", - "udp-idle-timer": 0, - "group-member": null, - "application": null, - "tcp-portrange": null, - "icmp_code": 3, - "session-ttl": 0, - "adom": "ansible", - "visibility": "enable", - "tcp-timewait-timer": 0, - "name": "ansible_custom_icmp", - "app-service-type": null, - "fqdn": "", - "app-category": null, - "check-reset-range": null, - "mode": "add", - "tcp-halfopen-timer": 0, - "udp-portrange": null, - "sctp-portrange": null - }, - "datagram_sent": { - "protocol": "ICMP", - "name": "ansible_custom_icmp", - "color": 22, - "visibility": "enable", - "icmptype": 8, - "proxy": "disable", - "icmpcode": 3 - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/service/custom" - }, - "post_method": "add" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/service/custom" - }, - "datagram_sent": { - "protocol": "ICMP6", - "name": "ansible_custom_icmp6", - "color": 22, - "visibility": "enable", - "icmptype": 5, - "proxy": "disable", - "icmpcode": 1 - }, - "paramgram_used": { - "comment": null, - "protocol": null, - "custom_type": "icmp6", - "color": 22, - "object_type": "custom", - "group-name": null, - "tcp-halfclose-timer": 0, - "icmp_type": 5, - "iprange": "0.0.0.0", - "category": null, - "protocol-number": null, - "udp-idle-timer": 0, - "explicit-proxy": "disable", - "group-member": null, - "application": null, - "tcp-portrange": null, - "icmp_code": 1, - "session-ttl": 0, - "adom": "ansible", - "visibility": "enable", - "tcp-timewait-timer": 0, - "name": "ansible_custom_icmp6", - "app-service-type": null, - "fqdn": "", - "app-category": null, - "check-reset-range": null, - "mode": "add", - "tcp-halfopen-timer": 0, - "udp-portrange": null, - "sctp-portrange": null - }, - "post_method": "add" - }, - { - "paramgram_used": { - "comment": null, - "protocol-number": 12, - "protocol": null, - "custom_type": "ip", - "color": 22, - "object_type": "custom", - "group-name": null, - "tcp-halfclose-timer": 0, - "icmp_type": null, - "iprange": "0.0.0.0", - "category": null, - "explicit-proxy": "disable", - "udp-idle-timer": 0, - "group-member": null, - "application": null, - "tcp-portrange": null, - "icmp_code": null, - "session-ttl": 0, - "adom": "ansible", - "visibility": "enable", - "tcp-timewait-timer": 0, - "name": "ansible_custom_ip", - "app-service-type": null, - "fqdn": "", - "app-category": null, - "check-reset-range": null, - "mode": "add", - "tcp-halfopen-timer": 0, - "udp-portrange": null, - "sctp-portrange": null - }, - "datagram_sent": { - "protocol-number": 12, - "protocol": "IP", - "name": "ansible_custom_ip", - "color": 22, - "visibility": "enable", - "proxy": "disable" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/service/custom" - }, - "post_method": "add" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/service/custom" - }, - "datagram_sent": { - "protocol": "ALL", - "name": "ansible_custom_proxy_all", - "color": 22, - "visibility": "enable", - "proxy": "enable", - "iprange": "www.ansible.com", - "tcp-portrange": [ - "443:1000-2000", - "80-82:10000-20000" - ] - }, - "paramgram_used": { - "comment": null, - "protocol": null, - "custom_type": "all", - "color": 22, - "object_type": "custom", - "group-name": null, - "tcp-halfclose-timer": 0, - "icmp_type": null, - "iprange": "www.ansible.com", - "category": null, - "protocol-number": null, - "udp-idle-timer": 0, - "explicit-proxy": "enable", - "group-member": null, - "application": null, - "tcp-portrange": "443:1000-2000,80-82:10000-20000", - "icmp_code": null, - "session-ttl": 0, - "adom": "ansible", - "visibility": "enable", - "tcp-timewait-timer": 0, - "name": "ansible_custom_proxy_all", - "app-service-type": null, - "fqdn": "", - "app-category": null, - "check-reset-range": null, - "mode": "add", - "tcp-halfopen-timer": 0, - "udp-portrange": null, - "sctp-portrange": null - }, - "post_method": "add" - } - ], - "fmgr_fwobj_service_group": [ - { - "raw_response": { - "status": { - "message": "Object does not exist", - "code": -3 - }, - "url": "/pm/config/adom/ansible/obj/firewall/service/group/ansibleTestGroup" - }, - "datagram_sent": {}, - "paramgram_used": { - "comment": null, - "protocol": null, - "custom_type": "all", - "color": 22, - "object_type": "group", - "group-name": "ansibleTestGroup", - "tcp-halfclose-timer": 0, - "icmp_type": null, - "iprange": "0.0.0.0", - "category": null, - "protocol-number": null, - "udp-idle-timer": 0, - "explicit-proxy": "disable", - "group-member": null, - "application": null, - "tcp-portrange": null, - "icmp_code": null, - "session-ttl": 0, - "adom": "ansible", - "visibility": "enable", - "tcp-timewait-timer": 0, - "name": null, - "app-service-type": null, - "fqdn": "", - "app-category": null, - "check-reset-range": null, - "mode": "delete", - "tcp-halfopen-timer": 0, - "udp-portrange": null, - "sctp-portrange": null - }, - "post_method": "delete" - }, - { - "paramgram_used": { - "comment": "created by ansible", - "protocol-number": null, - "protocol": null, - "custom_type": "all", - "color": 10, - "object_type": "group", - "group-name": "ansibleTestGroup", - "tcp-halfclose-timer": 0, - "icmp_type": null, - "iprange": "0.0.0.0", - "category": null, - "explicit-proxy": "disable", - "udp-idle-timer": 0, - "group-member": "ansible_custom_ip, ansible_custom_icmp, ansible_custom_service", - "application": null, - "tcp-portrange": null, - "icmp_code": null, - "session-ttl": 0, - "adom": "ansible", - "visibility": "enable", - "tcp-timewait-timer": 0, - "name": null, - "app-service-type": null, - "fqdn": "", - "app-category": null, - "check-reset-range": null, - "mode": "add", - "tcp-halfopen-timer": 0, - "udp-portrange": null, - "sctp-portrange": null - }, - "datagram_sent": { - "comment": "created by ansible", - "color": 10, - "member": [ - "ansible_custom_ip", - "ansible_custom_icmp", - "ansible_custom_service" - ], - "name": "ansibleTestGroup", - "proxy": "disable" - }, - "raw_response": { - "status": { - "message": "datasrc invalid. object: firewall service group member ansibleTestGroup. detail: ansible_custom_ip. solution: data not exist", - "code": -10131 - }, - "url": "/pm/config/adom/ansible/obj/firewall/service/group" - }, - "post_method": "add" - } - ], - "fmgr_fwobj_service_category": [ - { - "raw_response": { - "status": { - "message": "Object already exists", - "code": -2 - }, - "url": "/pm/config/adom/ansible/obj/firewall/service/category" - }, - "datagram_sent": { - "comment": "Created by Ansible", - "name": "ansibleCategoryTest" - }, - "paramgram_used": { - "comment": null, - "protocol": null, - "custom_type": "tcp_udp_sctp", - "color": 22, - "object_type": "custom", - "group-name": null, - "tcp-halfclose-timer": 0, - "icmp_type": null, - "iprange": "0.0.0.0", - "category": "ansibleCategoryTest", - "protocol-number": null, - "udp-idle-timer": 0, - "explicit-proxy": "disable", - "group-member": null, - "application": null, - "tcp-portrange": "443", - "icmp_code": null, - "session-ttl": 0, - "adom": "ansible", - "visibility": "enable", - "tcp-timewait-timer": 0, - "name": "ansible_custom_service", - "app-service-type": null, - "fqdn": "", - "app-category": null, - "check-reset-range": null, - "mode": "add", - "tcp-halfopen-timer": 0, - "udp-portrange": "51", - "sctp-portrange": "100" - }, - "post_method": "add" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_vip.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_vip.json deleted file mode 100644 index 5da45908a2..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_vip.json +++ /dev/null @@ -1,1787 +0,0 @@ -{ - "fmgr_firewall_vip_modify": [ - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/vip" - }, - "datagram_sent": { - "comment": "Created by Ansible", - "extip": "82.72.192.185", - "protocol": "tcp", - "name": "Basic PNAT Map Port 10443", - "color": 17, - "extport": "10443", - "mappedip": "10.7.220.25", - "portforward": "enable", - "type": "static-nat", - "extintf": "any", - "mappedport": "443" - }, - "paramgram_used": { - "comment": "Created by Ansible", - "ssl-send-empty-frags": null, - "srcintf-filter": null, - "ssl-max-version": null, - "ssl-server-session-state-max": null, - "ssl-hpkp": null, - "mapped-addr": null, - "ssl-client-session-state-timeout": null, - "src-filter": null, - "server-type": null, - "ssl-hpkp-include-subdomains": null, - "ssl-http-location-conversion": null, - "https-cookie-secure": null, - "mappedip": "10.7.220.25", - "ssl-server-cipher-suites": { - "priority": null, - "cipher": null, - "versions": null - }, - "protocol": "tcp", - "ssl-hpkp-backup": null, - "ssl-dh-bits": null, - "dns-mapping-ttl": null, - "ssl-hsts-age": null, - "extaddr": null, - "ssl-client-renegotiation": null, - "monitor": null, - "service": null, - "ssl-hpkp-age": null, - "http-cookie-age": null, - "weblogic-server": null, - "http-cookie-share": null, - "color": 17, - "ssl-mode": null, - "portforward": "enable", - "http-multiplex": null, - "http-cookie-generation": null, - "ssl-client-fallback": null, - "extip": "82.72.192.185", - "extintf": "any", - "persistence": null, - "websphere-server": null, - "nat-source-vip": null, - "portmapping-type": null, - "dynamic_mapping": { - "comment": null, - "ssl-send-empty-frags": null, - "srcintf-filter": null, - "ssl-max-version": null, - "protocol": null, - "ssl-hpkp": null, - "color": null, - "src-filter": null, - "ldb-method": null, - "server-type": null, - "ssl-hpkp-include-subdomains": null, - "ssl-client-renegotiation": null, - "ssl-http-location-conversion": null, - "https-cookie-secure": null, - "mappedip": null, - "ssl-server-session-state-max": null, - "ssl-hpkp-backup": null, - "extip": null, - "dns-mapping-ttl": null, - "ssl-hsts-age": null, - "extaddr": null, - "monitor": null, - "service": null, - "ssl-hpkp-age": null, - "http-cookie-age": null, - "http-cookie-share": null, - "ssl-server-session-state-timeout": null, - "mapped-addr": null, - "ssl-mode": null, - "portforward": null, - "http-cookie-generation": null, - "http-cookie-domain": null, - "ssl-hpkp-report-uri": null, - "type": null, - "extintf": null, - "gratuitous-arp-interval": null, - "websphere-server": null, - "nat-source-vip": null, - "portmapping-type": null, - "weblogic-server": null, - "ssl-client-session-state-max": null, - "http-ip-header": null, - "http-ip-header-name": null, - "ssl-hsts": null, - "arp-reply": null, - "extport": null, - "ssl-min-version": null, - "ssl-server-algorithm": null, - "ssl-certificate": null, - "ssl-server-min-version": null, - "ssl-client-fallback": null, - "mappedport": null, - "ssl-http-match-host": null, - "ssl-dh-bits": null, - "ssl-cipher-suites": { - "cipher": null, - "versions": null - }, - "ssl-hpkp-primary": null, - "outlook-web-access": null, - "ssl-server-session-state-type": null, - "ssl-client-session-state-type": null, - "realservers": { - "status": null, - "http-host": null, - "client-ip": null, - "seq": null, - "weight": null, - "ip": null, - "holddown-interval": null, - "healthcheck": null, - "max-connections": null, - "port": null, - "monitor": null - }, - "ssl-server-max-version": null, - "ssl-client-session-state-timeout": null, - "http-cookie-domain-from-host": null, - "ssl-algorithm": null, - "ssl-hsts-include-subdomains": null, - "max-embryonic-connections": null, - "persistence": null, - "http-cookie-path": null, - "ssl-pfs": null, - "http-multiplex": null - }, - "adom": "ansible", - "ssl-client-session-state-max": null, - "http-ip-header": null, - "http-ip-header-name": null, - "ssl-certificate": null, - "ssl-hsts": null, - "arp-reply": null, - "ssl-hsts-include-subdomains": null, - "ssl-min-version": null, - "ldb-method": null, - "ssl-server-session-state-timeout": null, - "ssl-server-min-version": null, - "http-cookie-domain": null, - "mappedport": "443", - "name": "Basic PNAT Map Port 10443", - "ssl-cipher-suites": { - "cipher": null, - "versions": null - }, - "ssl-hpkp-primary": null, - "outlook-web-access": null, - "ssl-server-session-state-type": null, - "ssl-client-session-state-type": null, - "type": "static-nat", - "ssl-http-match-host": null, - "realservers": { - "status": null, - "http-host": null, - "client-ip": null, - "seq": null, - "weight": null, - "ip": null, - "holddown-interval": null, - "healthcheck": null, - "max-connections": null, - "port": null, - "monitor": null - }, - "ssl-server-max-version": null, - "ssl-hpkp-report-uri": null, - "http-cookie-domain-from-host": null, - "ssl-algorithm": null, - "gratuitous-arp-interval": null, - "extport": "10443", - "max-embryonic-connections": null, - "mode": "set", - "http-cookie-path": null, - "ssl-pfs": null, - "ssl-server-algorithm": null - }, - "post_method": "set" - }, - { - "paramgram_used": { - "comment": "Created by Ansible", - "ssl-send-empty-frags": null, - "srcintf-filter": null, - "ssl-max-version": null, - "ssl-server-session-state-max": null, - "ssl-hpkp": null, - "ssl-hsts-include-subdomains": null, - "mapped-addr": null, - "src-filter": null, - "server-type": null, - "mode": "set", - "ssl-hpkp-include-subdomains": null, - "ssl-http-location-conversion": null, - "https-cookie-secure": null, - "mappedip": "3.3.3.0/24, 4.0.0.0/24", - "ssl-server-cipher-suites": { - "priority": null, - "cipher": null, - "versions": null - }, - "protocol": null, - "ssl-hpkp-backup": null, - "ssl-dh-bits": null, - "dns-mapping-ttl": null, - "ssl-hsts-age": null, - "ssl-client-renegotiation": null, - "monitor": null, - "service": null, - "ssl-hpkp-age": null, - "http-cookie-age": null, - "adom": "ansible", - "http-cookie-share": null, - "ssl-server-session-state-timeout": null, - "color": 12, - "ssl-mode": null, - "portforward": null, - "http-cookie-generation": null, - "max-embryonic-connections": null, - "ssl-client-fallback": null, - "ssl-hpkp-report-uri": null, - "extip": "192.168.0.1-192.168.0.100", - "extintf": "dmz", - "persistence": null, - "websphere-server": null, - "nat-source-vip": null, - "portmapping-type": null, - "http-ip-header-name": null, - "weblogic-server": null, - "ssl-client-session-state-max": null, - "http-ip-header": null, - "dynamic_mapping": { - "comment": null, - "ssl-send-empty-frags": null, - "srcintf-filter": null, - "ssl-max-version": null, - "protocol": null, - "ssl-hpkp": null, - "color": null, - "ssl-client-session-state-timeout": null, - "src-filter": null, - "server-type": null, - "ssl-hpkp-include-subdomains": null, - "extport": null, - "ssl-http-location-conversion": null, - "https-cookie-secure": null, - "mappedip": null, - "ssl-server-session-state-max": null, - "ssl-hpkp-backup": null, - "extip": null, - "dns-mapping-ttl": null, - "ssl-hsts-age": null, - "ssl-server-algorithm": null, - "extaddr": null, - "monitor": null, - "service": null, - "ssl-hpkp-age": null, - "http-cookie-age": null, - "http-cookie-share": null, - "mapped-addr": null, - "ssl-mode": null, - "portforward": null, - "http-cookie-generation": null, - "max-embryonic-connections": null, - "http-cookie-domain": null, - "type": null, - "extintf": null, - "gratuitous-arp-interval": null, - "websphere-server": null, - "nat-source-vip": null, - "portmapping-type": null, - "weblogic-server": null, - "ssl-client-session-state-max": null, - "http-ip-header": null, - "http-ip-header-name": null, - "ssl-certificate": null, - "ssl-hsts": null, - "arp-reply": null, - "ssl-client-renegotiation": null, - "ssl-min-version": null, - "ldb-method": null, - "ssl-server-session-state-timeout": null, - "ssl-server-min-version": null, - "ssl-client-fallback": null, - "mappedport": null, - "outlook-web-access": null, - "ssl-dh-bits": null, - "ssl-cipher-suites": { - "cipher": null, - "versions": null - }, - "ssl-hpkp-primary": null, - "ssl-http-match-host": null, - "ssl-server-session-state-type": null, - "ssl-client-session-state-type": null, - "realservers": { - "status": null, - "http-host": null, - "client-ip": null, - "seq": null, - "weight": null, - "ip": null, - "holddown-interval": null, - "healthcheck": null, - "max-connections": null, - "port": null, - "monitor": null - }, - "ssl-pfs": null, - "ssl-hpkp-report-uri": null, - "http-cookie-domain-from-host": null, - "ssl-hsts-include-subdomains": null, - "ssl-server-max-version": null, - "persistence": null, - "http-cookie-path": null, - "ssl-algorithm": null, - "http-multiplex": null - }, - "ssl-hsts": null, - "arp-reply": null, - "extaddr": null, - "ssl-min-version": null, - "ldb-method": null, - "ssl-certificate": null, - "ssl-server-min-version": null, - "http-cookie-domain": null, - "mappedport": null, - "outlook-web-access": null, - "ssl-cipher-suites": { - "cipher": null, - "versions": null - }, - "ssl-hpkp-primary": null, - "name": "Basic DNS Translation", - "ssl-server-session-state-type": null, - "ssl-client-session-state-type": null, - "type": "dns-translation", - "ssl-http-match-host": null, - "realservers": { - "status": null, - "http-host": null, - "client-ip": null, - "seq": null, - "weight": null, - "ip": null, - "holddown-interval": null, - "healthcheck": null, - "max-connections": null, - "port": null, - "monitor": null - }, - "ssl-pfs": null, - "ssl-server-max-version": null, - "ssl-client-session-state-timeout": null, - "http-cookie-domain-from-host": null, - "extport": null, - "ssl-server-algorithm": null, - "gratuitous-arp-interval": null, - "http-cookie-path": null, - "ssl-algorithm": null, - "http-multiplex": null - }, - "datagram_sent": { - "comment": "Created by Ansible", - "name": "Basic DNS Translation", - "color": 12, - "mappedip": "3.3.3.0/24, 4.0.0.0/24", - "extip": "192.168.0.1-192.168.0.100", - "type": "dns-translation", - "extintf": "dmz" - }, - "raw_response": { - "status": { - "message": "datasrc invalid. object: firewall vip extintf Basic DNS Translation. detail: dmz. solution: data not exist", - "code": -10131 - }, - "url": "/pm/config/adom/ansible/obj/firewall/vip" - }, - "post_method": "set" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/vip" - }, - "datagram_sent": { - "comment": "Created by Ansible", - "mapped-addr": "google-play", - "type": "fqdn", - "name": "Basic FQDN Translation", - "color": 5 - }, - "paramgram_used": { - "comment": "Created by Ansible", - "ssl-send-empty-frags": null, - "srcintf-filter": null, - "ssl-max-version": null, - "ssl-server-session-state-max": null, - "ssl-hpkp": null, - "mapped-addr": "google-play", - "ssl-client-session-state-timeout": null, - "src-filter": null, - "ldb-method": null, - "server-type": null, - "ssl-hpkp-include-subdomains": null, - "ssl-client-renegotiation": null, - "ssl-http-location-conversion": null, - "https-cookie-secure": null, - "mappedip": null, - "ssl-server-cipher-suites": { - "priority": null, - "cipher": null, - "versions": null - }, - "protocol": null, - "ssl-hpkp-backup": null, - "ssl-dh-bits": null, - "dns-mapping-ttl": null, - "ssl-hsts-age": null, - "extaddr": null, - "monitor": null, - "service": null, - "ssl-hpkp-age": null, - "http-cookie-age": null, - "weblogic-server": null, - "http-cookie-share": null, - "color": 5, - "ssl-mode": null, - "portforward": null, - "http-cookie-generation": null, - "ssl-client-fallback": null, - "extip": null, - "extintf": null, - "persistence": null, - "websphere-server": null, - "nat-source-vip": null, - "portmapping-type": null, - "dynamic_mapping": { - "comment": null, - "ssl-send-empty-frags": null, - "srcintf-filter": null, - "ssl-max-version": null, - "protocol": null, - "ssl-hpkp": null, - "color": null, - "src-filter": null, - "server-type": null, - "ssl-hpkp-include-subdomains": null, - "ssl-client-renegotiation": null, - "ssl-http-location-conversion": null, - "https-cookie-secure": null, - "mappedip": null, - "ssl-server-session-state-max": null, - "ssl-hpkp-backup": null, - "extip": null, - "dns-mapping-ttl": null, - "ssl-hsts-age": null, - "extaddr": null, - "monitor": null, - "service": null, - "ssl-hpkp-age": null, - "http-cookie-age": null, - "http-cookie-share": null, - "ssl-server-session-state-timeout": null, - "mapped-addr": null, - "ssl-mode": null, - "portforward": null, - "http-cookie-generation": null, - "http-cookie-domain": null, - "ssl-hpkp-report-uri": null, - "type": null, - "extintf": null, - "gratuitous-arp-interval": null, - "websphere-server": null, - "nat-source-vip": null, - "portmapping-type": null, - "weblogic-server": null, - "ssl-client-session-state-max": null, - "http-ip-header": null, - "http-ip-header-name": null, - "ssl-min-version": null, - "ssl-hsts": null, - "arp-reply": null, - "ssl-hsts-include-subdomains": null, - "http-multiplex": null, - "ldb-method": null, - "ssl-certificate": null, - "ssl-server-min-version": null, - "ssl-client-fallback": null, - "mappedport": null, - "ssl-http-match-host": null, - "ssl-dh-bits": null, - "ssl-cipher-suites": { - "cipher": null, - "versions": null - }, - "ssl-hpkp-primary": null, - "outlook-web-access": null, - "ssl-server-session-state-type": null, - "ssl-client-session-state-type": null, - "realservers": { - "status": null, - "http-host": null, - "client-ip": null, - "seq": null, - "weight": null, - "ip": null, - "holddown-interval": null, - "healthcheck": null, - "max-connections": null, - "port": null, - "monitor": null - }, - "ssl-server-max-version": null, - "ssl-client-session-state-timeout": null, - "http-cookie-domain-from-host": null, - "ssl-algorithm": null, - "extport": null, - "max-embryonic-connections": null, - "persistence": null, - "http-cookie-path": null, - "ssl-pfs": null, - "ssl-server-algorithm": null - }, - "adom": "ansible", - "ssl-client-session-state-max": null, - "http-ip-header": null, - "http-ip-header-name": null, - "ssl-certificate": null, - "ssl-hsts": null, - "arp-reply": null, - "extport": null, - "ssl-min-version": null, - "ssl-server-algorithm": null, - "ssl-server-session-state-timeout": null, - "ssl-server-min-version": null, - "http-cookie-domain": null, - "mappedport": null, - "name": "Basic FQDN Translation", - "ssl-cipher-suites": { - "cipher": null, - "versions": null - }, - "ssl-hpkp-primary": null, - "outlook-web-access": null, - "ssl-server-session-state-type": null, - "ssl-client-session-state-type": null, - "type": "fqdn", - "ssl-http-match-host": null, - "realservers": { - "status": null, - "http-host": null, - "client-ip": null, - "seq": null, - "weight": null, - "ip": null, - "holddown-interval": null, - "healthcheck": null, - "max-connections": null, - "port": null, - "monitor": null - }, - "ssl-server-max-version": null, - "ssl-hpkp-report-uri": null, - "http-cookie-domain-from-host": null, - "ssl-algorithm": null, - "gratuitous-arp-interval": null, - "ssl-hsts-include-subdomains": null, - "max-embryonic-connections": null, - "mode": "set", - "http-cookie-path": null, - "ssl-pfs": null, - "http-multiplex": null - }, - "post_method": "set" - }, - { - "paramgram_used": { - "comment": "Created by Ansible", - "ssl-send-empty-frags": null, - "srcintf-filter": null, - "ssl-max-version": null, - "ssl-server-session-state-max": null, - "ssl-hpkp": null, - "mapped-addr": null, - "src-filter": null, - "server-type": null, - "mode": "set", - "ssl-hpkp-include-subdomains": null, - "extport": null, - "ssl-http-location-conversion": null, - "https-cookie-secure": null, - "mappedip": "10.7.220.25", - "ssl-server-cipher-suites": { - "priority": null, - "cipher": null, - "versions": null - }, - "protocol": null, - "ssl-hpkp-backup": null, - "ssl-dh-bits": null, - "dns-mapping-ttl": null, - "ssl-hsts-age": null, - "ssl-server-algorithm": null, - "extaddr": null, - "monitor": null, - "service": null, - "ssl-hpkp-age": null, - "http-cookie-age": null, - "adom": "ansible", - "http-cookie-share": null, - "ssl-server-session-state-timeout": null, - "color": 17, - "ssl-mode": null, - "portforward": null, - "http-cookie-generation": null, - "max-embryonic-connections": null, - "ssl-client-fallback": null, - "ssl-hpkp-report-uri": null, - "extip": "82.72.192.185", - "extintf": "any", - "persistence": null, - "websphere-server": null, - "nat-source-vip": null, - "portmapping-type": null, - "http-ip-header-name": null, - "weblogic-server": null, - "ssl-client-session-state-max": null, - "http-ip-header": null, - "dynamic_mapping": { - "comment": null, - "ssl-send-empty-frags": null, - "srcintf-filter": null, - "ssl-max-version": null, - "protocol": null, - "ssl-hpkp": null, - "ssl-hsts-include-subdomains": null, - "color": null, - "ssl-client-session-state-timeout": null, - "src-filter": null, - "server-type": null, - "ssl-hpkp-include-subdomains": null, - "ssl-http-location-conversion": null, - "https-cookie-secure": null, - "mappedip": null, - "ssl-server-session-state-max": null, - "ssl-hpkp-backup": null, - "extip": null, - "dns-mapping-ttl": null, - "ssl-hsts-age": null, - "extaddr": null, - "monitor": null, - "service": null, - "ssl-hpkp-age": null, - "http-cookie-age": null, - "http-cookie-share": null, - "mapped-addr": null, - "ssl-mode": null, - "portforward": null, - "http-cookie-generation": null, - "max-embryonic-connections": null, - "http-cookie-domain": null, - "type": null, - "extintf": null, - "gratuitous-arp-interval": null, - "websphere-server": null, - "nat-source-vip": null, - "portmapping-type": null, - "weblogic-server": null, - "ssl-client-session-state-max": null, - "http-ip-header": null, - "http-ip-header-name": null, - "ssl-certificate": null, - "ssl-hsts": null, - "arp-reply": null, - "ssl-client-renegotiation": null, - "http-multiplex": null, - "ldb-method": null, - "ssl-server-session-state-timeout": null, - "ssl-server-min-version": null, - "ssl-client-fallback": null, - "mappedport": null, - "outlook-web-access": null, - "ssl-dh-bits": null, - "ssl-cipher-suites": { - "cipher": null, - "versions": null - }, - "ssl-hpkp-primary": null, - "ssl-http-match-host": null, - "ssl-server-session-state-type": null, - "ssl-client-session-state-type": null, - "realservers": { - "status": null, - "http-host": null, - "client-ip": null, - "seq": null, - "weight": null, - "ip": null, - "holddown-interval": null, - "healthcheck": null, - "max-connections": null, - "port": null, - "monitor": null - }, - "ssl-pfs": null, - "ssl-server-max-version": null, - "ssl-hpkp-report-uri": null, - "http-cookie-domain-from-host": null, - "extport": null, - "ssl-server-algorithm": null, - "persistence": null, - "http-cookie-path": null, - "ssl-algorithm": null, - "ssl-min-version": null - }, - "ssl-hsts": null, - "arp-reply": null, - "ssl-client-renegotiation": null, - "ssl-min-version": null, - "ldb-method": null, - "ssl-certificate": null, - "ssl-server-min-version": null, - "http-cookie-domain": null, - "mappedport": null, - "outlook-web-access": null, - "ssl-cipher-suites": { - "cipher": null, - "versions": null - }, - "ssl-hpkp-primary": null, - "name": "Basic StaticNAT Map", - "ssl-server-session-state-type": null, - "ssl-client-session-state-type": null, - "type": "static-nat", - "ssl-http-match-host": null, - "realservers": { - "status": null, - "http-host": null, - "client-ip": null, - "seq": null, - "weight": null, - "ip": null, - "holddown-interval": null, - "healthcheck": null, - "max-connections": null, - "port": null, - "monitor": null - }, - "ssl-pfs": null, - "ssl-client-session-state-timeout": null, - "http-cookie-domain-from-host": null, - "ssl-hsts-include-subdomains": null, - "ssl-server-max-version": null, - "gratuitous-arp-interval": null, - "http-cookie-path": null, - "ssl-algorithm": null, - "http-multiplex": null - }, - "datagram_sent": { - "comment": "Created by Ansible", - "name": "Basic StaticNAT Map", - "color": 17, - "mappedip": "10.7.220.25", - "extip": "82.72.192.185", - "type": "static-nat", - "extintf": "any" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/vip" - }, - "post_method": "set" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/vip" - }, - "datagram_sent": { - "comment": "Created by Ansible", - "extip": "82.72.192.185", - "protocol": "tcp", - "name": "Basic PNAT Map Port 10443", - "color": 17, - "extport": "10443", - "mappedip": "10.7.220.25", - "portforward": "enable", - "type": "static-nat", - "extintf": "any", - "mappedport": "443" - }, - "paramgram_used": { - "comment": "Created by Ansible", - "ssl-send-empty-frags": null, - "srcintf-filter": null, - "ssl-max-version": null, - "ssl-server-session-state-max": null, - "ssl-hpkp": null, - "mapped-addr": null, - "ssl-client-session-state-timeout": null, - "src-filter": null, - "server-type": null, - "ssl-hpkp-include-subdomains": null, - "ssl-client-renegotiation": null, - "ssl-http-location-conversion": null, - "https-cookie-secure": null, - "mappedip": "10.7.220.25", - "ssl-server-cipher-suites": { - "priority": null, - "cipher": null, - "versions": null - }, - "protocol": "tcp", - "ssl-hpkp-backup": null, - "ssl-dh-bits": null, - "dns-mapping-ttl": null, - "ssl-hsts-age": null, - "extaddr": null, - "monitor": null, - "service": null, - "ssl-hpkp-age": null, - "http-cookie-age": null, - "weblogic-server": null, - "http-cookie-share": null, - "color": 17, - "ssl-mode": null, - "portforward": "enable", - "http-cookie-generation": null, - "ssl-client-fallback": null, - "extip": "82.72.192.185", - "extintf": "any", - "persistence": null, - "websphere-server": null, - "nat-source-vip": null, - "portmapping-type": null, - "dynamic_mapping": { - "comment": null, - "ssl-send-empty-frags": null, - "srcintf-filter": null, - "ssl-max-version": null, - "protocol": null, - "ssl-hpkp": null, - "color": null, - "src-filter": null, - "ldb-method": null, - "server-type": null, - "ssl-hpkp-include-subdomains": null, - "ssl-client-renegotiation": null, - "ssl-http-location-conversion": null, - "https-cookie-secure": null, - "mappedip": null, - "ssl-server-session-state-max": null, - "ssl-hpkp-backup": null, - "extip": null, - "dns-mapping-ttl": null, - "ssl-hsts-age": null, - "extaddr": null, - "monitor": null, - "service": null, - "ssl-hpkp-age": null, - "http-cookie-age": null, - "http-cookie-share": null, - "ssl-server-session-state-timeout": null, - "mapped-addr": null, - "ssl-mode": null, - "portforward": null, - "http-cookie-generation": null, - "http-cookie-domain": null, - "ssl-hpkp-report-uri": null, - "type": null, - "extintf": null, - "gratuitous-arp-interval": null, - "websphere-server": null, - "nat-source-vip": null, - "portmapping-type": null, - "weblogic-server": null, - "ssl-client-session-state-max": null, - "http-ip-header": null, - "http-ip-header-name": null, - "ssl-hsts": null, - "arp-reply": null, - "extport": null, - "http-multiplex": null, - "ssl-server-algorithm": null, - "ssl-certificate": null, - "ssl-server-min-version": null, - "ssl-client-fallback": null, - "mappedport": null, - "ssl-http-match-host": null, - "ssl-dh-bits": null, - "ssl-cipher-suites": { - "cipher": null, - "versions": null - }, - "ssl-hpkp-primary": null, - "outlook-web-access": null, - "ssl-server-session-state-type": null, - "ssl-client-session-state-type": null, - "realservers": { - "status": null, - "http-host": null, - "client-ip": null, - "seq": null, - "weight": null, - "ip": null, - "holddown-interval": null, - "healthcheck": null, - "max-connections": null, - "port": null, - "monitor": null - }, - "ssl-server-max-version": null, - "ssl-client-session-state-timeout": null, - "http-cookie-domain-from-host": null, - "ssl-algorithm": null, - "ssl-hsts-include-subdomains": null, - "max-embryonic-connections": null, - "persistence": null, - "http-cookie-path": null, - "ssl-pfs": null, - "ssl-min-version": null - }, - "adom": "ansible", - "ssl-client-session-state-max": null, - "http-ip-header": null, - "http-ip-header-name": null, - "ssl-min-version": null, - "ssl-certificate": null, - "ssl-hsts": null, - "arp-reply": null, - "ssl-hsts-include-subdomains": null, - "http-multiplex": null, - "ldb-method": null, - "ssl-server-session-state-timeout": null, - "ssl-server-min-version": null, - "http-cookie-domain": null, - "mappedport": "443", - "name": "Basic PNAT Map Port 10443", - "ssl-cipher-suites": { - "cipher": null, - "versions": null - }, - "ssl-hpkp-primary": null, - "outlook-web-access": null, - "ssl-server-session-state-type": null, - "ssl-client-session-state-type": null, - "type": "static-nat", - "ssl-http-match-host": null, - "realservers": { - "status": null, - "http-host": null, - "client-ip": null, - "seq": null, - "weight": null, - "ip": null, - "holddown-interval": null, - "healthcheck": null, - "max-connections": null, - "port": null, - "monitor": null - }, - "ssl-server-max-version": null, - "ssl-hpkp-report-uri": null, - "http-cookie-domain-from-host": null, - "ssl-algorithm": null, - "gratuitous-arp-interval": null, - "extport": "10443", - "max-embryonic-connections": null, - "mode": "set", - "http-cookie-path": null, - "ssl-pfs": null, - "ssl-server-algorithm": null - }, - "post_method": "set" - }, - { - "paramgram_used": { - "comment": null, - "ssl-send-empty-frags": null, - "srcintf-filter": null, - "ssl-max-version": null, - "ssl-server-session-state-max": null, - "ssl-hpkp": null, - "ssl-hsts-include-subdomains": null, - "mapped-addr": null, - "src-filter": null, - "server-type": null, - "mode": "delete", - "ssl-hpkp-include-subdomains": null, - "ssl-http-location-conversion": null, - "https-cookie-secure": null, - "mappedip": null, - "ssl-server-cipher-suites": { - "priority": null, - "cipher": null, - "versions": null - }, - "protocol": null, - "ssl-hpkp-backup": null, - "ssl-dh-bits": null, - "dns-mapping-ttl": null, - "ssl-hsts-age": null, - "extaddr": null, - "monitor": null, - "service": null, - "ssl-hpkp-age": null, - "http-cookie-age": null, - "adom": "ansible", - "http-cookie-share": null, - "ssl-server-session-state-timeout": null, - "color": null, - "ssl-mode": null, - "portforward": null, - "http-cookie-generation": null, - "max-embryonic-connections": null, - "ssl-client-fallback": null, - "ssl-hpkp-report-uri": null, - "extip": null, - "extintf": null, - "persistence": null, - "websphere-server": null, - "nat-source-vip": null, - "portmapping-type": null, - "http-ip-header-name": null, - "weblogic-server": null, - "ssl-client-session-state-max": null, - "http-ip-header": null, - "dynamic_mapping": { - "comment": null, - "ssl-send-empty-frags": null, - "srcintf-filter": null, - "ssl-max-version": null, - "protocol": null, - "ssl-hpkp": null, - "color": null, - "ssl-client-session-state-timeout": null, - "src-filter": null, - "server-type": null, - "ssl-hpkp-include-subdomains": null, - "extport": null, - "ssl-http-location-conversion": null, - "https-cookie-secure": null, - "mappedip": null, - "ssl-server-session-state-max": null, - "ssl-hpkp-backup": null, - "extip": null, - "dns-mapping-ttl": null, - "ssl-hsts-age": null, - "ssl-server-algorithm": null, - "extaddr": null, - "monitor": null, - "service": null, - "ssl-hpkp-age": null, - "http-cookie-age": null, - "http-cookie-share": null, - "mapped-addr": null, - "ssl-mode": null, - "portforward": null, - "http-cookie-generation": null, - "max-embryonic-connections": null, - "http-cookie-domain": null, - "type": null, - "extintf": null, - "gratuitous-arp-interval": null, - "websphere-server": null, - "nat-source-vip": null, - "portmapping-type": null, - "weblogic-server": null, - "ssl-client-session-state-max": null, - "http-ip-header": null, - "http-ip-header-name": null, - "ssl-certificate": null, - "ssl-hsts": null, - "arp-reply": null, - "ssl-client-renegotiation": null, - "http-multiplex": null, - "ldb-method": null, - "ssl-server-session-state-timeout": null, - "ssl-server-min-version": null, - "ssl-client-fallback": null, - "mappedport": null, - "outlook-web-access": null, - "ssl-dh-bits": null, - "ssl-cipher-suites": { - "cipher": null, - "versions": null - }, - "ssl-hpkp-primary": null, - "ssl-http-match-host": null, - "ssl-server-session-state-type": null, - "ssl-client-session-state-type": null, - "realservers": { - "status": null, - "http-host": null, - "client-ip": null, - "seq": null, - "weight": null, - "ip": null, - "holddown-interval": null, - "healthcheck": null, - "max-connections": null, - "port": null, - "monitor": null - }, - "ssl-pfs": null, - "ssl-hpkp-report-uri": null, - "http-cookie-domain-from-host": null, - "ssl-hsts-include-subdomains": null, - "ssl-server-max-version": null, - "persistence": null, - "http-cookie-path": null, - "ssl-algorithm": null, - "ssl-min-version": null - }, - "ssl-hsts": null, - "arp-reply": null, - "ssl-client-renegotiation": null, - "http-multiplex": null, - "ldb-method": null, - "ssl-certificate": null, - "ssl-server-min-version": null, - "http-cookie-domain": null, - "mappedport": null, - "outlook-web-access": null, - "ssl-cipher-suites": { - "cipher": null, - "versions": null - }, - "ssl-hpkp-primary": null, - "name": "Basic PNAT Map Port 10443", - "ssl-server-session-state-type": null, - "ssl-client-session-state-type": null, - "type": null, - "ssl-http-match-host": null, - "realservers": { - "status": null, - "http-host": null, - "client-ip": null, - "seq": null, - "weight": null, - "ip": null, - "holddown-interval": null, - "healthcheck": null, - "max-connections": null, - "port": null, - "monitor": null - }, - "ssl-pfs": null, - "ssl-server-max-version": null, - "ssl-client-session-state-timeout": null, - "http-cookie-domain-from-host": null, - "extport": null, - "ssl-server-algorithm": null, - "gratuitous-arp-interval": null, - "http-cookie-path": null, - "ssl-algorithm": null, - "ssl-min-version": null - }, - "datagram_sent": {}, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/vip/Basic PNAT Map Port 10443" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/vip/Basic StaticNAT Map" - }, - "datagram_sent": {}, - "paramgram_used": { - "comment": null, - "ssl-send-empty-frags": null, - "srcintf-filter": null, - "ssl-max-version": null, - "ssl-server-session-state-max": null, - "mappedip": null, - "mapped-addr": null, - "ssl-client-session-state-timeout": null, - "src-filter": null, - "ldb-method": null, - "server-type": null, - "ssl-hpkp-include-subdomains": null, - "ssl-http-location-conversion": null, - "https-cookie-secure": null, - "ssl-hpkp": null, - "ssl-server-cipher-suites": { - "priority": null, - "cipher": null, - "versions": null - }, - "protocol": null, - "ssl-hpkp-backup": null, - "ssl-dh-bits": null, - "dns-mapping-ttl": null, - "ssl-hsts-age": null, - "extaddr": null, - "ssl-client-renegotiation": null, - "monitor": null, - "service": null, - "ssl-hpkp-age": null, - "http-cookie-age": null, - "weblogic-server": null, - "http-cookie-share": null, - "color": null, - "ssl-mode": null, - "portforward": null, - "http-cookie-generation": null, - "ssl-client-fallback": null, - "extip": null, - "extintf": null, - "persistence": null, - "websphere-server": null, - "nat-source-vip": null, - "portmapping-type": null, - "dynamic_mapping": { - "comment": null, - "ssl-send-empty-frags": null, - "srcintf-filter": null, - "ssl-max-version": null, - "protocol": null, - "ssl-hpkp": null, - "color": null, - "src-filter": null, - "server-type": null, - "ssl-hpkp-include-subdomains": null, - "ssl-client-renegotiation": null, - "ssl-http-location-conversion": null, - "https-cookie-secure": null, - "mappedip": null, - "ssl-server-session-state-max": null, - "ssl-hpkp-backup": null, - "extip": null, - "dns-mapping-ttl": null, - "ssl-hsts-age": null, - "extaddr": null, - "monitor": null, - "service": null, - "ssl-hpkp-age": null, - "http-cookie-age": null, - "http-cookie-share": null, - "ssl-server-session-state-timeout": null, - "mapped-addr": null, - "ssl-mode": null, - "portforward": null, - "http-multiplex": null, - "http-cookie-generation": null, - "http-cookie-domain": null, - "ssl-hpkp-report-uri": null, - "type": null, - "extintf": null, - "gratuitous-arp-interval": null, - "websphere-server": null, - "nat-source-vip": null, - "portmapping-type": null, - "weblogic-server": null, - "ssl-client-session-state-max": null, - "http-ip-header": null, - "http-ip-header-name": null, - "ssl-hsts": null, - "arp-reply": null, - "ssl-hsts-include-subdomains": null, - "ssl-min-version": null, - "ldb-method": null, - "ssl-certificate": null, - "ssl-server-min-version": null, - "ssl-client-fallback": null, - "mappedport": null, - "ssl-http-match-host": null, - "ssl-dh-bits": null, - "ssl-cipher-suites": { - "cipher": null, - "versions": null - }, - "ssl-hpkp-primary": null, - "outlook-web-access": null, - "ssl-server-session-state-type": null, - "ssl-client-session-state-type": null, - "realservers": { - "status": null, - "http-host": null, - "client-ip": null, - "seq": null, - "weight": null, - "ip": null, - "holddown-interval": null, - "healthcheck": null, - "max-connections": null, - "port": null, - "monitor": null - }, - "ssl-server-max-version": null, - "ssl-client-session-state-timeout": null, - "http-cookie-domain-from-host": null, - "ssl-algorithm": null, - "extport": null, - "max-embryonic-connections": null, - "persistence": null, - "http-cookie-path": null, - "ssl-pfs": null, - "ssl-server-algorithm": null - }, - "adom": "ansible", - "ssl-client-session-state-max": null, - "http-ip-header": null, - "http-ip-header-name": null, - "ssl-certificate": null, - "ssl-hsts": null, - "arp-reply": null, - "extport": null, - "http-multiplex": null, - "ssl-server-algorithm": null, - "ssl-server-session-state-timeout": null, - "ssl-server-min-version": null, - "http-cookie-domain": null, - "mappedport": null, - "name": "Basic StaticNAT Map", - "ssl-cipher-suites": { - "cipher": null, - "versions": null - }, - "ssl-hpkp-primary": null, - "outlook-web-access": null, - "ssl-server-session-state-type": null, - "ssl-client-session-state-type": null, - "type": null, - "ssl-http-match-host": null, - "realservers": { - "status": null, - "http-host": null, - "client-ip": null, - "seq": null, - "weight": null, - "ip": null, - "holddown-interval": null, - "healthcheck": null, - "max-connections": null, - "port": null, - "monitor": null - }, - "ssl-server-max-version": null, - "ssl-hpkp-report-uri": null, - "http-cookie-domain-from-host": null, - "ssl-algorithm": null, - "gratuitous-arp-interval": null, - "ssl-hsts-include-subdomains": null, - "max-embryonic-connections": null, - "mode": "delete", - "http-cookie-path": null, - "ssl-pfs": null, - "ssl-min-version": null - }, - "post_method": "delete" - }, - { - "paramgram_used": { - "comment": null, - "ssl-send-empty-frags": null, - "srcintf-filter": null, - "ssl-max-version": null, - "ssl-server-session-state-max": null, - "mappedip": null, - "mapped-addr": null, - "src-filter": null, - "server-type": null, - "mode": "delete", - "ssl-hpkp-include-subdomains": null, - "extport": null, - "ssl-http-location-conversion": null, - "https-cookie-secure": null, - "ssl-hpkp": null, - "ssl-server-cipher-suites": { - "priority": null, - "cipher": null, - "versions": null - }, - "protocol": null, - "ssl-hpkp-backup": null, - "ssl-dh-bits": null, - "dns-mapping-ttl": null, - "ssl-hsts-age": null, - "ssl-server-algorithm": null, - "ssl-client-renegotiation": null, - "monitor": null, - "service": null, - "ssl-hpkp-age": null, - "http-cookie-age": null, - "adom": "ansible", - "http-cookie-share": null, - "ssl-server-session-state-timeout": null, - "color": null, - "ssl-mode": null, - "portforward": null, - "http-multiplex": null, - "http-cookie-generation": null, - "max-embryonic-connections": null, - "ssl-client-fallback": null, - "ssl-hpkp-report-uri": null, - "extip": null, - "extintf": null, - "persistence": null, - "websphere-server": null, - "nat-source-vip": null, - "portmapping-type": null, - "http-ip-header-name": null, - "weblogic-server": null, - "ssl-client-session-state-max": null, - "http-ip-header": null, - "dynamic_mapping": { - "comment": null, - "ssl-send-empty-frags": null, - "srcintf-filter": null, - "ssl-max-version": null, - "protocol": null, - "ssl-hpkp": null, - "ssl-hsts-include-subdomains": null, - "color": null, - "src-filter": null, - "ldb-method": null, - "server-type": null, - "ssl-hpkp-include-subdomains": null, - "ssl-http-location-conversion": null, - "https-cookie-secure": null, - "mappedip": null, - "ssl-server-session-state-max": null, - "ssl-hpkp-backup": null, - "extip": null, - "dns-mapping-ttl": null, - "ssl-hsts-age": null, - "extaddr": null, - "monitor": null, - "service": null, - "ssl-hpkp-age": null, - "http-cookie-age": null, - "http-cookie-share": null, - "mapped-addr": null, - "ssl-mode": null, - "portforward": null, - "http-cookie-generation": null, - "max-embryonic-connections": null, - "http-cookie-domain": null, - "type": null, - "extintf": null, - "gratuitous-arp-interval": null, - "websphere-server": null, - "nat-source-vip": null, - "portmapping-type": null, - "weblogic-server": null, - "ssl-client-session-state-max": null, - "http-ip-header": null, - "http-ip-header-name": null, - "ssl-min-version": null, - "ssl-certificate": null, - "ssl-hsts": null, - "arp-reply": null, - "ssl-client-renegotiation": null, - "ssl-hpkp-primary": null, - "ssl-server-algorithm": null, - "ssl-server-session-state-timeout": null, - "ssl-server-min-version": null, - "ssl-client-fallback": null, - "mappedport": null, - "outlook-web-access": null, - "ssl-dh-bits": null, - "ssl-cipher-suites": { - "cipher": null, - "versions": null - }, - "ssl-client-session-state-type": null, - "ssl-http-match-host": null, - "ssl-server-session-state-type": null, - "realservers": { - "status": null, - "http-host": null, - "client-ip": null, - "seq": null, - "weight": null, - "ip": null, - "holddown-interval": null, - "healthcheck": null, - "max-connections": null, - "port": null, - "monitor": null - }, - "ssl-client-session-state-timeout": null, - "ssl-pfs": null, - "ssl-hpkp-report-uri": null, - "http-cookie-domain-from-host": null, - "extport": null, - "ssl-server-max-version": null, - "persistence": null, - "http-cookie-path": null, - "ssl-algorithm": null, - "http-multiplex": null - }, - "ssl-hsts": null, - "arp-reply": null, - "extaddr": null, - "ssl-hpkp-primary": null, - "ldb-method": null, - "ssl-certificate": null, - "ssl-server-min-version": null, - "http-cookie-domain": null, - "mappedport": null, - "outlook-web-access": null, - "ssl-cipher-suites": { - "cipher": null, - "versions": null - }, - "ssl-client-session-state-type": null, - "name": "Basic DNS Translation", - "ssl-server-session-state-type": null, - "realservers": { - "status": null, - "http-host": null, - "client-ip": null, - "seq": null, - "weight": null, - "ip": null, - "holddown-interval": null, - "healthcheck": null, - "max-connections": null, - "port": null, - "monitor": null - }, - "type": null, - "ssl-http-match-host": null, - "ssl-pfs": null, - "ssl-client-session-state-timeout": null, - "http-cookie-domain-from-host": null, - "ssl-hsts-include-subdomains": null, - "ssl-server-max-version": null, - "gratuitous-arp-interval": null, - "http-cookie-path": null, - "ssl-algorithm": null, - "ssl-min-version": null - }, - "datagram_sent": {}, - "raw_response": { - "status": { - "message": "Object does not exist", - "code": -3 - }, - "url": "/pm/config/adom/ansible/obj/firewall/vip/Basic DNS Translation" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/firewall/vip/Basic FQDN Translation" - }, - "datagram_sent": {}, - "paramgram_used": { - "ldb-method": null, - "ssl-send-empty-frags": null, - "srcintf-filter": null, - "ssl-max-version": null, - "ssl-server-session-state-max": null, - "mappedip": null, - "ssl-hsts": null, - "mapped-addr": null, - "src-filter": null, - "server-type": null, - "ssl-hpkp-include-subdomains": null, - "ssl-client-renegotiation": null, - "ssl-http-location-conversion": null, - "https-cookie-secure": null, - "extip": null, - "ssl-hpkp": null, - "ssl-server-cipher-suites": { - "priority": null, - "cipher": null, - "versions": null - }, - "protocol": null, - "ssl-hpkp-backup": null, - "ssl-dh-bits": null, - "dns-mapping-ttl": null, - "ssl-hsts-age": null, - "extaddr": null, - "ssl-hpkp-primary": null, - "monitor": null, - "service": null, - "ssl-hpkp-age": null, - "http-cookie-age": null, - "weblogic-server": null, - "http-cookie-share": null, - "name": "Basic FQDN Translation", - "color": null, - "ssl-mode": null, - "portforward": null, - "http-cookie-generation": null, - "ssl-client-fallback": null, - "type": null, - "http-ip-header": null, - "persistence": null, - "websphere-server": null, - "nat-source-vip": null, - "portmapping-type": null, - "dynamic_mapping": { - "comment": null, - "ssl-send-empty-frags": null, - "srcintf-filter": null, - "ssl-max-version": null, - "protocol": null, - "ssl-hpkp": null, - "color": null, - "src-filter": null, - "server-type": null, - "ssl-hpkp-include-subdomains": null, - "ssl-client-renegotiation": null, - "ssl-http-location-conversion": null, - "https-cookie-secure": null, - "mappedip": null, - "websphere-server": null, - "ssl-server-session-state-max": null, - "ssl-hpkp-backup": null, - "extip": null, - "dns-mapping-ttl": null, - "ssl-hsts-age": null, - "ssl-server-algorithm": null, - "extaddr": null, - "monitor": null, - "service": null, - "ssl-hpkp-age": null, - "http-cookie-age": null, - "http-cookie-share": null, - "ssl-server-session-state-timeout": null, - "mapped-addr": null, - "ssl-mode": null, - "portforward": null, - "ssl-hpkp-primary": null, - "http-cookie-generation": null, - "http-cookie-domain": null, - "ssl-hpkp-report-uri": null, - "type": null, - "extintf": null, - "gratuitous-arp-interval": null, - "ssl-algorithm": null, - "nat-source-vip": null, - "portmapping-type": null, - "weblogic-server": null, - "ssl-client-session-state-max": null, - "http-ip-header": null, - "http-ip-header-name": null, - "ssl-hsts": null, - "arp-reply": null, - "extport": null, - "http-multiplex": null, - "ldb-method": null, - "ssl-certificate": null, - "ssl-server-min-version": null, - "ssl-client-fallback": null, - "mappedport": null, - "ssl-http-match-host": null, - "ssl-dh-bits": null, - "ssl-cipher-suites": { - "cipher": null, - "versions": null - }, - "ssl-client-session-state-type": null, - "outlook-web-access": null, - "ssl-server-session-state-type": null, - "realservers": { - "status": null, - "http-host": null, - "client-ip": null, - "weight": null, - "ip": null, - "max-connections": null, - "port": null, - "seq": null, - "holddown-interval": null, - "monitor": null, - "healthcheck": null - }, - "ssl-server-max-version": null, - "ssl-client-session-state-timeout": null, - "http-cookie-domain-from-host": null, - "ssl-hsts-include-subdomains": null, - "max-embryonic-connections": null, - "persistence": null, - "http-cookie-path": null, - "ssl-pfs": null, - "ssl-min-version": null - }, - "adom": "ansible", - "ssl-client-session-state-max": null, - "extintf": null, - "ssl-server-max-version": null, - "http-ip-header-name": null, - "ssl-certificate": null, - "ssl-server-session-state-type": null, - "arp-reply": null, - "ssl-hsts-include-subdomains": null, - "ssl-min-version": null, - "ssl-server-algorithm": null, - "ssl-server-session-state-timeout": null, - "ssl-server-min-version": null, - "http-cookie-domain": null, - "mappedport": null, - "outlook-web-access": null, - "ssl-cipher-suites": { - "cipher": null, - "versions": null - }, - "ssl-client-session-state-type": null, - "ssl-http-match-host": null, - "realservers": { - "status": null, - "http-host": null, - "client-ip": null, - "weight": null, - "ip": null, - "max-connections": null, - "port": null, - "seq": null, - "holddown-interval": null, - "monitor": null, - "healthcheck": null - }, - "ssl-client-session-state-timeout": null, - "comment": null, - "ssl-hpkp-report-uri": null, - "http-cookie-domain-from-host": null, - "ssl-algorithm": null, - "gratuitous-arp-interval": null, - "extport": null, - "max-embryonic-connections": null, - "mode": "delete", - "http-cookie-path": null, - "ssl-pfs": null, - "http-multiplex": null - }, - "post_method": "delete" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwpol_ipv4.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwpol_ipv4.json deleted file mode 100644 index 3de787e6b3..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwpol_ipv4.json +++ /dev/null @@ -1,620 +0,0 @@ -{ - "fmgr_firewall_policy_modify": [ - { - "url": "/pm/config/adom/ansible/pkg/default/firewall/policy", - "paramgram_used": { - "wanopt-passive-opt": null, - "package_name": "default", - "wanopt-detection": null, - "scan-botnet-connections": null, - "profile-group": null, - "wanopt-peer": null, - "dscp-match": null, - "replacemsg-override-group": null, - "internet-service-negate": null, - "np-acceleration": null, - "learning-mode": null, - "session-ttl": null, - "ntlm-guest": null, - "ips-sensor": null, - "diffservcode-rev": null, - "match-vip": null, - "natip": null, - "dlp-sensor": null, - "traffic-shaper": null, - "groups": null, - "schedule-timeout": null, - "name": "Basic_IPv4_Policy", - "tcp-session-without-syn": null, - "ntlm": null, - "permit-stun-host": null, - "diffservcode-forward": null, - "internet-service-src-custom": null, - "mode": "set", - "disclaimer": null, - "rtp-nat": null, - "auth-cert": null, - "timeout-send-rst": null, - "auth-redirect-addr": null, - "ssl-mirror-intf": null, - "identity-based-route": null, - "natoutbound": null, - "wanopt-profile": null, - "per-ip-shaper": null, - "profile-protocol-options": null, - "diffserv-forward": null, - "poolname": null, - "comments": "Created by Ansible", - "label": null, - "global-label": null, - "firewall-session-dirty": null, - "wanopt": null, - "schedule": "always", - "internet-service-id": null, - "auth-path": null, - "vlan-cos-fwd": null, - "custom-log-fields": null, - "dstintf": "any", - "srcintf": "any", - "block-notification": null, - "internet-service-src-id": null, - "redirect-url": null, - "waf-profile": null, - "ntlm-enabled-browsers": null, - "dscp-negate": null, - "action": "accept", - "fsso-agent-for-ntlm": null, - "logtraffic": "utm", - "vlan-filter": null, - "policyid": null, - "logtraffic-start": null, - "webcache-https": null, - "webfilter-profile": null, - "internet-service-src": null, - "webcache": null, - "utm-status": null, - "vpn_src_node": { - "subnet": null, - "host": null, - "seq": null - }, - "ippool": null, - "service": "ALL", - "wccp": null, - "auto-asic-offload": null, - "dscp-value": null, - "url-category": null, - "capture-packet": null, - "adom": "ansible", - "inbound": null, - "internet-service": null, - "profile-type": null, - "ssl-mirror": null, - "srcaddr-negate": null, - "gtp-profile": null, - "mms-profile": null, - "send-deny-packet": null, - "devices": null, - "permit-any-host": null, - "av-profile": null, - "internet-service-src-negate": null, - "service-negate": null, - "rsso": null, - "app-group": null, - "tcp-mss-sender": null, - "natinbound": null, - "fixedport": null, - "ssl-ssh-profile": null, - "outbound": null, - "spamfilter-profile": null, - "application-list": null, - "application": null, - "dnsfilter-profile": null, - "nat": null, - "fsso": null, - "vlan-cos-rev": null, - "status": null, - "dsri": null, - "users": null, - "voip-profile": null, - "dstaddr-negate": null, - "traffic-shaper-reverse": null, - "internet-service-custom": null, - "diffserv-reverse": null, - "srcaddr": "all", - "ssh-filter-profile": null, - "delay-tcp-npu-session": null, - "icap-profile": null, - "captive-portal-exempt": null, - "vpn_dst_node": { - "subnet": null, - "host": null, - "seq": null - }, - "app-category": null, - "rtp-addr": null, - "wsso": null, - "tcp-mss-receiver": null, - "dstaddr": "all", - "radius-mac-auth-bypass": null, - "vpntunnel": null - }, - "datagram_sent": { - "name": "Basic_IPv4_Policy", - "service": "ALL", - "schedule": "always", - "comments": "Created by Ansible", - "srcaddr": "all", - "dstintf": "any", - "srcintf": "any", - "action": "accept", - "dstaddr": "all", - "logtraffic": "utm" - }, - "raw_response": { - "policyid": 36 - }, - "post_method": "set" - }, - { - "url": "/pm/config/adom/ansible/pkg/default/firewall/policy", - "raw_response": { - "policyid": 37 - }, - "datagram_sent": { - "name": "Basic_IPv4_Policy_2", - "service": [ - "HTTP", - "HTTPS" - ], - "schedule": "always", - "comments": "Created by Ansible", - "srcaddr": "all", - "dstintf": "any", - "srcintf": "any", - "nat": "enable", - "action": "accept", - "dstaddr": "google-play", - "logtraffic": "utm" - }, - "paramgram_used": { - "package_name": "default", - "wanopt-detection": null, - "scan-botnet-connections": null, - "profile-group": null, - "dlp-sensor": null, - "dscp-match": null, - "replacemsg-override-group": null, - "internet-service-negate": null, - "np-acceleration": null, - "learning-mode": null, - "session-ttl": null, - "ntlm-guest": null, - "ips-sensor": null, - "diffservcode-rev": null, - "match-vip": null, - "natip": null, - "wanopt-peer": null, - "traffic-shaper": null, - "groups": null, - "schedule-timeout": null, - "name": "Basic_IPv4_Policy_2", - "tcp-session-without-syn": null, - "rtp-nat": null, - "permit-stun-host": null, - "natoutbound": null, - "internet-service-src-custom": null, - "mode": "set", - "logtraffic": "utm", - "ntlm": null, - "auth-cert": null, - "timeout-send-rst": null, - "auth-redirect-addr": null, - "ssl-mirror-intf": null, - "identity-based-route": null, - "diffservcode-forward": null, - "wanopt-profile": null, - "per-ip-shaper": null, - "users": null, - "diffserv-forward": null, - "poolname": null, - "comments": "Created by Ansible", - "label": null, - "global-label": null, - "firewall-session-dirty": null, - "wanopt": null, - "schedule": "always", - "internet-service-id": null, - "auth-path": null, - "vlan-cos-fwd": null, - "custom-log-fields": null, - "dstintf": "any", - "srcintf": "any", - "block-notification": null, - "internet-service-src-id": null, - "redirect-url": null, - "waf-profile": null, - "ntlm-enabled-browsers": null, - "dscp-negate": null, - "action": "accept", - "fsso-agent-for-ntlm": null, - "disclaimer": null, - "vlan-filter": null, - "dstaddr-negate": null, - "logtraffic-start": null, - "webcache-https": null, - "webfilter-profile": null, - "internet-service-src": null, - "webcache": null, - "utm-status": null, - "vpn_src_node": { - "subnet": null, - "host": null, - "seq": null - }, - "ippool": null, - "service": "HTTP, HTTPS", - "wccp": null, - "auto-asic-offload": null, - "dscp-value": null, - "url-category": null, - "capture-packet": null, - "adom": "ansible", - "inbound": null, - "internet-service": null, - "profile-type": null, - "ssl-mirror": null, - "srcaddr-negate": null, - "gtp-profile": null, - "mms-profile": null, - "send-deny-packet": null, - "devices": null, - "permit-any-host": null, - "av-profile": null, - "internet-service-src-negate": null, - "service-negate": null, - "rsso": null, - "application-list": null, - "app-group": null, - "tcp-mss-sender": null, - "natinbound": null, - "fixedport": null, - "ssl-ssh-profile": null, - "outbound": null, - "spamfilter-profile": null, - "wanopt-passive-opt": null, - "application": null, - "dnsfilter-profile": null, - "nat": "enable", - "fsso": null, - "vlan-cos-rev": null, - "status": null, - "dsri": null, - "profile-protocol-options": null, - "voip-profile": null, - "policyid": null, - "traffic-shaper-reverse": null, - "internet-service-custom": null, - "diffserv-reverse": null, - "srcaddr": "all", - "dstaddr": "google-play", - "delay-tcp-npu-session": null, - "icap-profile": null, - "captive-portal-exempt": null, - "vpn_dst_node": { - "subnet": null, - "host": null, - "seq": null - }, - "app-category": null, - "rtp-addr": null, - "wsso": null, - "tcp-mss-receiver": null, - "ssh-filter-profile": null, - "radius-mac-auth-bypass": null, - "vpntunnel": null - }, - "post_method": "set" - }, - { - "paramgram_used": { - "wanopt-passive-opt": null, - "package_name": "default", - "wanopt-detection": null, - "scan-botnet-connections": null, - "profile-group": null, - "wanopt-peer": null, - "dscp-match": null, - "replacemsg-override-group": null, - "internet-service-negate": null, - "np-acceleration": null, - "learning-mode": null, - "session-ttl": null, - "ntlm-guest": null, - "ips-sensor": null, - "diffservcode-rev": null, - "match-vip": null, - "natip": null, - "dlp-sensor": null, - "traffic-shaper": null, - "groups": null, - "schedule-timeout": null, - "name": "Basic_IPv4_Policy", - "tcp-session-without-syn": null, - "ntlm": null, - "permit-stun-host": null, - "diffservcode-forward": null, - "internet-service-src-custom": null, - "mode": "delete", - "disclaimer": null, - "rtp-nat": null, - "auth-cert": null, - "timeout-send-rst": null, - "auth-redirect-addr": null, - "ssl-mirror-intf": null, - "identity-based-route": null, - "natoutbound": null, - "wanopt-profile": null, - "per-ip-shaper": null, - "profile-protocol-options": null, - "diffserv-forward": null, - "poolname": null, - "comments": null, - "label": null, - "global-label": null, - "firewall-session-dirty": null, - "wanopt": null, - "schedule": null, - "internet-service-id": null, - "auth-path": null, - "vlan-cos-fwd": null, - "custom-log-fields": null, - "dstintf": null, - "srcintf": null, - "block-notification": null, - "internet-service-src-id": null, - "redirect-url": null, - "waf-profile": null, - "ntlm-enabled-browsers": null, - "dscp-negate": null, - "action": null, - "fsso-agent-for-ntlm": null, - "logtraffic": null, - "vlan-filter": null, - "policyid": 36, - "logtraffic-start": null, - "webcache-https": null, - "webfilter-profile": null, - "internet-service-src": null, - "webcache": null, - "utm-status": null, - "vpn_src_node": { - "subnet": null, - "host": null, - "seq": null - }, - "ippool": null, - "service": null, - "wccp": null, - "auto-asic-offload": null, - "dscp-value": null, - "url-category": null, - "capture-packet": null, - "adom": "ansible", - "inbound": null, - "internet-service": null, - "profile-type": null, - "ssl-mirror": null, - "srcaddr-negate": null, - "gtp-profile": null, - "mms-profile": null, - "send-deny-packet": null, - "devices": null, - "permit-any-host": null, - "av-profile": null, - "internet-service-src-negate": null, - "service-negate": null, - "rsso": null, - "app-group": null, - "tcp-mss-sender": null, - "natinbound": null, - "fixedport": null, - "ssl-ssh-profile": null, - "outbound": null, - "spamfilter-profile": null, - "application-list": null, - "application": null, - "dnsfilter-profile": null, - "nat": null, - "fsso": null, - "vlan-cos-rev": null, - "status": null, - "dsri": null, - "users": null, - "voip-profile": null, - "dstaddr-negate": null, - "traffic-shaper-reverse": null, - "internet-service-custom": null, - "diffserv-reverse": null, - "srcaddr": null, - "ssh-filter-profile": null, - "delay-tcp-npu-session": null, - "icap-profile": null, - "captive-portal-exempt": null, - "vpn_dst_node": { - "subnet": null, - "host": null, - "seq": null - }, - "app-category": null, - "rtp-addr": null, - "wsso": null, - "tcp-mss-receiver": null, - "dstaddr": null, - "radius-mac-auth-bypass": null, - "vpntunnel": null - }, - "datagram_sent": { - "policyid": 36 - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/pkg/default/firewall/policy/36" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/pkg/default/firewall/policy/37" - }, - "datagram_sent": { - "policyid": 37 - }, - "paramgram_used": { - "package_name": "default", - "wanopt-detection": null, - "scan-botnet-connections": null, - "profile-group": null, - "dlp-sensor": null, - "dscp-match": null, - "replacemsg-override-group": null, - "internet-service-negate": null, - "np-acceleration": null, - "learning-mode": null, - "session-ttl": null, - "ntlm-guest": null, - "ips-sensor": null, - "diffservcode-rev": null, - "match-vip": null, - "natip": null, - "wanopt-peer": null, - "traffic-shaper": null, - "groups": null, - "schedule-timeout": null, - "name": "Basic_IPv4_Policy_2", - "tcp-session-without-syn": null, - "rtp-nat": null, - "permit-stun-host": null, - "natoutbound": null, - "internet-service-src-custom": null, - "mode": "delete", - "logtraffic": null, - "ntlm": null, - "auth-cert": null, - "timeout-send-rst": null, - "auth-redirect-addr": null, - "ssl-mirror-intf": null, - "identity-based-route": null, - "diffservcode-forward": null, - "wanopt-profile": null, - "per-ip-shaper": null, - "users": null, - "diffserv-forward": null, - "poolname": null, - "comments": null, - "label": null, - "global-label": null, - "firewall-session-dirty": null, - "wanopt": null, - "schedule": null, - "internet-service-id": null, - "auth-path": null, - "vlan-cos-fwd": null, - "custom-log-fields": null, - "dstintf": null, - "srcintf": null, - "block-notification": null, - "internet-service-src-id": null, - "redirect-url": null, - "waf-profile": null, - "ntlm-enabled-browsers": null, - "dscp-negate": null, - "action": null, - "fsso-agent-for-ntlm": null, - "disclaimer": null, - "vlan-filter": null, - "dstaddr-negate": null, - "logtraffic-start": null, - "webcache-https": null, - "webfilter-profile": null, - "internet-service-src": null, - "webcache": null, - "utm-status": null, - "vpn_src_node": { - "subnet": null, - "host": null, - "seq": null - }, - "ippool": null, - "service": null, - "wccp": null, - "auto-asic-offload": null, - "dscp-value": null, - "url-category": null, - "capture-packet": null, - "adom": "ansible", - "internet-service": null, - "inbound": null, - "profile-type": null, - "ssl-mirror": null, - "srcaddr-negate": null, - "gtp-profile": null, - "mms-profile": null, - "send-deny-packet": null, - "devices": null, - "permit-any-host": null, - "av-profile": null, - "internet-service-src-negate": null, - "service-negate": null, - "rsso": null, - "application-list": null, - "app-group": null, - "tcp-mss-sender": null, - "natinbound": null, - "fixedport": null, - "ssl-ssh-profile": null, - "outbound": null, - "spamfilter-profile": null, - "wanopt-passive-opt": null, - "application": null, - "dnsfilter-profile": null, - "nat": null, - "fsso": null, - "vlan-cos-rev": null, - "status": null, - "dsri": null, - "profile-protocol-options": null, - "voip-profile": null, - "policyid": 37, - "traffic-shaper-reverse": null, - "internet-service-custom": null, - "diffserv-reverse": null, - "srcaddr": null, - "dstaddr": null, - "delay-tcp-npu-session": null, - "icap-profile": null, - "captive-portal-exempt": null, - "vpn_dst_node": { - "subnet": null, - "host": null, - "seq": null - }, - "app-category": null, - "rtp-addr": null, - "wsso": null, - "tcp-mss-receiver": null, - "ssh-filter-profile": null, - "radius-mac-auth-bypass": null, - "vpntunnel": null - }, - "post_method": "delete" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwpol_package.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwpol_package.json deleted file mode 100644 index 8d1267fd81..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwpol_package.json +++ /dev/null @@ -1,279 +0,0 @@ -{ - "fmgr_fwpol_package_folder": [ - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/pkg/adom/ansible" - }, - "datagram_sent": { - "type": "folder", - "name": "ansibleTestFolder1" - }, - "paramgram_used": { - "ssl-ssh-profile": null, - "name": "ansibleTestFolder1", - "adom": "ansible", - "fwpolicy6-implicit-log": "disable", - "object_type": "folder", - "fwpolicy-implicit-log": "disable", - "package-folder": null, - "inspection-mode": "flow", - "scope_members": null, - "mode": "set", - "parent_folder": null, - "scope_members_vdom": "root", - "central-nat": "disable", - "ngfw-mode": "profile-based" - }, - "post_method": "set" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/pkg/adom/ansible" - }, - "datagram_sent": { - "subobj": [ - { - "type": "folder", - "name": "ansibleTestFolder2" - } - ], - "type": "folder", - "name": "ansibleTestFolder1" - }, - "paramgram_used": { - "ssl-ssh-profile": null, - "name": "ansibleTestFolder2", - "adom": "ansible", - "fwpolicy6-implicit-log": "disable", - "object_type": "folder", - "fwpolicy-implicit-log": "disable", - "package-folder": null, - "inspection-mode": "flow", - "scope_members": null, - "mode": "set", - "parent_folder": "ansibleTestFolder1", - "scope_members_vdom": "root", - "central-nat": "disable", - "ngfw-mode": "profile-based" - }, - "post_method": "set" - }, - { - "paramgram_used": { - "ssl-ssh-profile": null, - "scope_members_vdom": "root", - "name": "ansibleTestFolder2", - "adom": "ansible", - "fwpolicy6-implicit-log": "disable", - "object_type": "folder", - "fwpolicy-implicit-log": "disable", - "central-nat": "disable", - "inspection-mode": "flow", - "scope_members": null, - "mode": "delete", - "parent_folder": "ansibleTestFolder1", - "package-folder": null, - "ngfw-mode": "profile-based" - }, - "datagram_sent": { - "name": "ansibleTestFolder2" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/pkg/adom/ansible/ansibleTestFolder1/ansibleTestFolder2" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/pkg/adom/ansible/ansibleTestFolder1" - }, - "datagram_sent": { - "name": "ansibleTestFolder1" - }, - "paramgram_used": { - "adom": "ansible", - "fwpolicy6-implicit-log": "disable", - "object_type": "folder", - "inspection-mode": "flow", - "parent_folder": null, - "ngfw-mode": "profile-based", - "ssl-ssh-profile": null, - "name": "ansibleTestFolder1", - "central-nat": "disable", - "fwpolicy-implicit-log": "disable", - "package-folder": null, - "scope_members": null, - "mode": "delete", - "scope_members_vdom": "root" - }, - "post_method": "delete" - } - ], - "fmgr_fwpol_package": [ - { - "paramgram_used": { - "ssl-ssh-profile": null, - "name": "ansibleTestPackage1", - "adom": "ansible", - "fwpolicy6-implicit-log": "disable", - "object_type": "pkg", - "fwpolicy-implicit-log": "disable", - "package-folder": null, - "inspection-mode": "flow", - "scope_members": "FGT2, FGT3", - "mode": "set", - "parent_folder": null, - "scope_members_vdom": "root", - "central-nat": "disable", - "ngfw-mode": "profile-based" - }, - "datagram_sent": { - "type": "pkg", - "name": "ansibleTestPackage1", - "scope member": [ - { - "name": "FGT2", - "vdom": "root" - }, - { - "name": "FGT3", - "vdom": "root" - } - ], - "package settings": { - "inspection-mode": "flow", - "central-nat": "disable", - "fwpolicy-implicit-log": "disable", - "fwpolicy6-implicit-log": "disable", - "ngfw-mode": "profile-based" - } - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/pkg/adom/ansible" - }, - "post_method": "set" - }, - { - "paramgram_used": { - "ssl-ssh-profile": null, - "name": "ansibleTestPackage2", - "adom": "ansible", - "fwpolicy6-implicit-log": "disable", - "object_type": "pkg", - "fwpolicy-implicit-log": "disable", - "package-folder": null, - "inspection-mode": "flow", - "scope_members": null, - "mode": "set", - "parent_folder": "ansibleTestFolder1", - "scope_members_vdom": "root", - "central-nat": "disable", - "ngfw-mode": "profile-based" - }, - "datagram_sent": { - "subobj": [ - { - "type": "pkg", - "name": "ansibleTestPackage2", - "scope member": [], - "package settings": { - "inspection-mode": "flow", - "central-nat": "disable", - "fwpolicy-implicit-log": "disable", - "fwpolicy6-implicit-log": "disable", - "ngfw-mode": "profile-based" - } - } - ], - "type": "folder", - "name": "ansibleTestFolder1" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/pkg/adom/ansible" - }, - "post_method": "set" - }, - { - "paramgram_used": { - "ssl-ssh-profile": null, - "name": "ansibleTestPackage1", - "adom": "ansible", - "fwpolicy6-implicit-log": "disable", - "object_type": "pkg", - "fwpolicy-implicit-log": "disable", - "package-folder": null, - "inspection-mode": "flow", - "scope_members": null, - "mode": "delete", - "parent_folder": null, - "scope_members_vdom": "root", - "central-nat": "disable", - "ngfw-mode": "profile-based" - }, - "datagram_sent": { - "name": "ansibleTestPackage1" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/pkg/adom/ansible/ansibleTestPackage1" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/pkg/adom/ansible/ansibleTestFolder1/ansibleTestPackage2" - }, - "datagram_sent": { - "name": "ansibleTestPackage2" - }, - "paramgram_used": { - "ssl-ssh-profile": null, - "name": "ansibleTestPackage2", - "adom": "ansible", - "fwpolicy6-implicit-log": "disable", - "object_type": "pkg", - "fwpolicy-implicit-log": "disable", - "package-folder": null, - "inspection-mode": "flow", - "scope_members": null, - "mode": "delete", - "parent_folder": "ansibleTestFolder1", - "scope_members_vdom": "root", - "central-nat": "disable", - "ngfw-mode": "profile-based" - }, - "post_method": "delete" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_ha.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_ha.json deleted file mode 100644 index 27c8483a5d..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_ha.json +++ /dev/null @@ -1,241 +0,0 @@ -{ - "fmgr_set_ha_peer": [ - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/cli/global/system/ha/peer/" - }, - "datagram_sent": { - "status": "enable", - "ip": "10.7.220.36", - "serial-number": "FMG-VMTM18001882", - "ip6": null, - "id": 1 - }, - "paramgram_used": { - "fmgr_ha_peer_sn": "FMG-VMTM18001882", - "next_peer_id": 2, - "fmgr_ha_hb_threshold": 3, - "fmgr_ha_cluster_pw": null, - "fmgr_ha_peer_ipv6": null, - "fmgr_ha_peer_status": "enable", - "fmgr_ha_file_quota": 4096, - "fmgr_ha_cluster_id": 1, - "peer_id": 1, - "fmgr_ha_peer_ipv4": "10.7.220.36", - "fmgr_ha_hb_interval": 5, - "fmgr_ha_mode": null - }, - "post_method": "set" - }, - { - "paramgram_used": { - "fmgr_ha_peer_sn": "FMG-VMTM18001881", - "next_peer_id": 1, - "fmgr_ha_hb_threshold": 3, - "fmgr_ha_cluster_pw": "fortinet", - "fmgr_ha_hb_interval": 5, - "fmgr_ha_cluster_id": 2, - "fmgr_ha_file_quota": 4096, - "fmgr_ha_peer_status": "enable", - "peer_id": 1, - "fmgr_ha_peer_ipv4": "10.7.220.35", - "fmgr_ha_peer_ipv6": null, - "fmgr_ha_mode": "slave" - }, - "datagram_sent": { - "status": "enable", - "ip": "10.7.220.35", - "serial-number": "FMG-VMTM18001881", - "ip6": null, - "id": 1 - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/cli/global/system/ha/peer/" - }, - "post_method": "set" - } - ], - "fmgr_get_ha_peer_list": [ - { - "url": "/cli/global/system/ha/peer/", - "paramgram_used": { - "fmgr_ha_peer_sn": "FMG-VMTM18001882", - "fmgr_ha_hb_threshold": 3, - "fmgr_ha_cluster_pw": null, - "fmgr_ha_peer_ipv6": null, - "fmgr_ha_peer_status": "enable", - "fmgr_ha_file_quota": 4096, - "fmgr_ha_cluster_id": 1, - "fmgr_ha_peer_ipv4": "10.7.220.36", - "fmgr_ha_hb_interval": 5, - "fmgr_ha_mode": null - }, - "datagram_sent": {}, - "raw_response": [ - { - "status": "enable", - "ip": "10.7.220.140", - "serial-number": "FMG-VM0A17005535", - "ip6": "::", - "id": 1 - } - ], - "post_method": "get" - }, - { - "url": "/cli/global/system/ha/peer/", - "raw_response": [ - { - "status": "enable", - "ip": "10.7.220.35", - "serial-number": "FMG-VMTM18001881", - "ip6": "::", - "id": 1 - } - ], - "datagram_sent": {}, - "paramgram_used": { - "fmgr_ha_peer_sn": "FMG-VMTM18001881", - "fmgr_ha_hb_threshold": 3, - "fmgr_ha_cluster_pw": "fortinet", - "fmgr_ha_hb_interval": 5, - "fmgr_ha_cluster_id": 2, - "fmgr_ha_file_quota": 4096, - "fmgr_ha_peer_status": "enable", - "fmgr_ha_peer_ipv4": "10.7.220.35", - "fmgr_ha_peer_ipv6": null, - "fmgr_ha_mode": "slave" - }, - "post_method": "get" - } - ], - "fmgr_set_ha_mode": [ - { - "paramgram_used": { - "fmgr_ha_peer_sn": null, - "fmgr_ha_hb_threshold": 10, - "fmgr_ha_cluster_pw": "fortinet", - "fmgr_ha_peer_ipv6": null, - "fmgr_ha_peer_status": null, - "fmgr_ha_file_quota": 2048, - "fmgr_ha_cluster_id": 2, - "fmgr_ha_peer_ipv4": null, - "fmgr_ha_hb_interval": 15, - "fmgr_ha_mode": "master" - }, - "datagram_sent": { - "file-quota": 2048, - "clusterid": 2, - "hb-lost-threshold": 10, - "mode": "master", - "hb-interval": 15, - "password": "fortinet" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/cli/global/system/ha" - }, - "post_method": "set" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/cli/global/system/ha" - }, - "datagram_sent": { - "file-quota": 4096, - "clusterid": 2, - "hb-lost-threshold": 3, - "mode": "slave", - "hb-interval": 5, - "password": "fortinet" - }, - "paramgram_used": { - "fmgr_ha_peer_sn": null, - "fmgr_ha_hb_threshold": 3, - "fmgr_ha_cluster_pw": "fortinet", - "fmgr_ha_hb_interval": 5, - "fmgr_ha_cluster_id": 2, - "fmgr_ha_file_quota": 4096, - "fmgr_ha_peer_status": null, - "fmgr_ha_peer_ipv4": null, - "fmgr_ha_peer_ipv6": null, - "fmgr_ha_mode": "slave" - }, - "post_method": "set" - }, - { - "paramgram_used": { - "fmgr_ha_peer_sn": "FMG-VMTM18001881", - "fmgr_ha_hb_threshold": 3, - "fmgr_ha_cluster_pw": "fortinet", - "fmgr_ha_peer_ipv6": null, - "fmgr_ha_peer_status": "enable", - "fmgr_ha_file_quota": 4096, - "fmgr_ha_cluster_id": 2, - "fmgr_ha_peer_ipv4": "10.7.220.35", - "fmgr_ha_hb_interval": 5, - "fmgr_ha_mode": "slave" - }, - "datagram_sent": { - "file-quota": 4096, - "clusterid": 2, - "hb-lost-threshold": 3, - "mode": "slave", - "hb-interval": 5, - "password": "fortinet" - }, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/cli/global/system/ha" - }, - "post_method": "set" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/cli/global/system/ha" - }, - "datagram_sent": { - "hb-lost-threshold": 3, - "hb-interval": 5, - "clusterid": 1, - "mode": "standalone", - "file-quota": 4096 - }, - "paramgram_used": { - "fmgr_ha_file_quota": 4096, - "fmgr_ha_cluster_pw": null, - "fmgr_ha_peer_sn": null, - "fmgr_ha_hb_interval": 5, - "fmgr_ha_cluster_id": 1, - "fmgr_ha_mode": "standalone", - "fmgr_ha_peer_status": null, - "fmgr_ha_hb_threshold": 3, - "fmgr_ha_peer_ipv4": null, - "fmgr_ha_peer_ipv6": null - }, - "post_method": "set" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_query.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_query.json deleted file mode 100644 index 6013b6d832..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_query.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "fmgr_get_task_status": [ - { - "url": "/task/task/247", - "paramgram_used": { - "custom_endpoint": null, - "object": "task", - "task_id": "247", - "adom": "ansible", - "device_ip": null, - "custom_dict": null, - "device_unique_name": null, - "nodes": null, - "device_serial": null - }, - "datagram_sent": { - "adom": "ansible" - }, - "raw_response": { - "src": "device manager", - "num_warn": 0, - "num_lines": 1, - "adom": 133, - "tot_percent": 100, - "pid": 0, - "end_tm": 1550716014, - "num_err": 0, - "percent": 100, - "state": "done", - "start_tm": 1550716010, - "flags": 0, - "user": "ansible", - "title": "upddevtitle", - "line": [ - { - "name": "FGT3", - "err": 0, - "ip": "10.7.220.153", - "oid": 0, - "percent": 100, - "detail": "updatesuccess", - "state": "done", - "vdom": null - } - ], - "num_done": 1, - "id": 247, - "history": [ - { - "percent": 100, - "detail": "2019-02-20 18:26:54:updatesuccess", - "vdom": null, - "name": "FGT3" - } - ] - }, - "post_method": "get" - } - ], - "fmgr_get_custom": [ - { - "url": "/dvmdb/adom/ansible/script", - "raw_response": [ - { - "filter_hostname": null, - "filter_device": 0, - "filter_serial": null, - "name": "TestScript", - "type": "cli", - "oid": 365, - "filter_osver": "unknown", - "content": "get system status", - "modification_time": "2019-02-13 23:45:29", - "filter_build": -1, - "filter_platform": "", - "desc": "Create by Ansible", - "script_schedule": null, - "filter_ostype": "unknown", - "target": "remote_device" - } - ], - "datagram_sent": { - "type": "cli" - }, - "paramgram_used": { - "custom_endpoint": "/dvmdb/adom/ansible/script", - "device_ip": null, - "device_unique_name": null, - "task_id": null, - "adom": "ansible", - "nodes": null, - "object": "custom", - "device_serial": null, - "custom_dict": { - "type": "cli" - } - }, - "post_method": "get" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_script.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_script.json deleted file mode 100644 index 5ce77021eb..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_script.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "delete_script": [ - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/dvmdb/adom/ansible/script/TestScript" - }, - "datagram_sent": { - "name": "TestScript" - }, - "paramgram_used": { - "vdom": "root", - "script_target": null, - "script_content": null, - "adom": "ansible", - "script_description": null, - "script_package": null, - "mode": "delete", - "script_scope": null, - "script_name": "TestScript", - "script_type": null - }, - "post_method": "delete" - } - ], - "set_script": [ - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/dvmdb/adom/ansible/script/" - }, - "datagram_sent": { - "content": "get system status", - "type": "cli", - "target": "remote_device", - "name": "TestScript", - "desc": "Create by Ansible" - }, - "paramgram_used": { - "script_content": "get system status", - "adom": "ansible", - "script_scope": null, - "script_name": "TestScript", - "script_target": "remote_device", - "mode": "add", - "script_description": "Create by Ansible", - "script_package": null, - "vdom": "root", - "script_type": "cli" - }, - "post_method": "set" - } - ], - "execute_script": [ - { - "url": "/dvmdb/adom/ansible/script/execute", - "paramgram_used": { - "script_content": null, - "adom": "ansible", - "script_scope": "FGT1", - "script_name": "TestScript", - "script_target": null, - "mode": "execute", - "script_description": null, - "script_package": null, - "vdom": "root", - "script_type": null - }, - "datagram_sent": { - "scope": [ - { - "name": "FGT1", - "vdom": "root" - } - ], - "adom": "ansible", - "script": "TestScript", - "package": null - }, - "raw_response": { - "task": 277 - }, - "post_method": "exec" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_appctrl.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_appctrl.json deleted file mode 100644 index a0333e75bb..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_appctrl.json +++ /dev/null @@ -1,250 +0,0 @@ -{ - "fmgr_application_list_modify": [ - { - "paramgram_used": { - "comment": "Created by Ansible Module TEST", - "other-application-log": null, - "replacemsg-group": null, - "adom": "ansible", - "unknown-application-log": null, - "p2p-black-list": null, - "unknown-application-action": null, - "extended-log": null, - "deep-app-inspection": null, - "mode": "delete", - "other-application-action": null, - "entries": { - "behavior": null, - "rate-duration": null, - "sub-category": null, - "session-ttl": null, - "per-ip-shaper": null, - "category": null, - "log": null, - "parameters": { - "value": null - }, - "technology": null, - "quarantine-expiry": null, - "application": null, - "protocols": null, - "log-packet": null, - "quarantine-log": null, - "vendor": null, - "risk": null, - "rate-count": null, - "quarantine": null, - "popularity": null, - "shaper": null, - "shaper-reverse": null, - "rate-track": null, - "rate-mode": null, - "action": null - }, - "options": null, - "app-replacemsg": null, - "name": "Ansible_Application_Control_Profile" - }, - "datagram_sent": {}, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/application/list/Ansible_Application_Control_Profile" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/application/list" - }, - "datagram_sent": { - "comment": "Created by Ansible Module TEST", - "name": "Ansible_Application_Control_Profile", - "entries": [ - { - "quarantine-log": "enable", - "log": "enable", - "quarantine": "attacker", - "action": "block", - "log-packet": "enable", - "protocols": [ - "1" - ] - }, - { - "action": "pass", - "category": [ - "2", - "3", - "4" - ] - } - ] - }, - "paramgram_used": { - "comment": "Created by Ansible Module TEST", - "other-application-log": null, - "replacemsg-group": null, - "p2p-black-list": null, - "unknown-application-log": null, - "adom": "ansible", - "unknown-application-action": null, - "extended-log": null, - "deep-app-inspection": null, - "mode": "set", - "other-application-action": null, - "entries": [ - { - "quarantine-log": "enable", - "log": "enable", - "quarantine": "attacker", - "action": "block", - "log-packet": "enable", - "protocols": [ - "1" - ] - }, - { - "action": "pass", - "category": [ - "2", - "3", - "4" - ] - } - ], - "options": null, - "app-replacemsg": null, - "name": "Ansible_Application_Control_Profile" - }, - "post_method": "set" - }, - { - "paramgram_used": { - "comment": "Created by Ansible Module TEST", - "other-application-log": null, - "replacemsg-group": null, - "adom": "ansible", - "unknown-application-log": null, - "p2p-black-list": null, - "unknown-application-action": null, - "extended-log": null, - "options": null, - "deep-app-inspection": null, - "mode": "delete", - "other-application-action": null, - "entries": { - "behavior": null, - "rate-duration": null, - "sub-category": null, - "session-ttl": null, - "per-ip-shaper": null, - "category": null, - "log": null, - "parameters": { - "value": null - }, - "technology": null, - "quarantine-expiry": null, - "application": null, - "protocols": null, - "log-packet": null, - "quarantine-log": null, - "vendor": null, - "risk": null, - "rate-count": null, - "quarantine": null, - "popularity": null, - "shaper": null, - "shaper-reverse": null, - "rate-track": null, - "rate-mode": null, - "action": null - }, - "app-replacemsg": null, - "name": "Ansible_Application_Ctl_Profile2" - }, - "datagram_sent": {}, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/application/list/Ansible_Application_Ctl_Profile2" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/application/list" - }, - "datagram_sent": { - "comment": "Created by Ansible Module TEST", - "name": "Ansible_Application_Ctl_Profile2", - "entries": { - "quarantine-log": "enable", - "log": "enable", - "quarantine": "attacker", - "action": "pass", - "log-packet": "enable", - "protocols": "['1']" - } - }, - "paramgram_used": { - "comment": "Created by Ansible Module TEST", - "adom": "ansible", - "unknown-application-log": null, - "extended-log": null, - "other-application-action": null, - "entries": { - "rate-duration": null, - "sub-category": null, - "vendor": null, - "technology": null, - "risk": null, - "category": null, - "log": "enable", - "parameters": { - "value": null - }, - "per-ip-shaper": null, - "quarantine-expiry": null, - "application": null, - "protocols": "['1']", - "log-packet": "enable", - "quarantine-log": "enable", - "session-ttl": null, - "behavior": null, - "rate-count": null, - "quarantine": "attacker", - "popularity": null, - "shaper": null, - "shaper-reverse": null, - "rate-track": null, - "rate-mode": null, - "action": "pass" - }, - "replacemsg-group": null, - "other-application-log": null, - "name": "Ansible_Application_Ctl_Profile2", - "p2p-black-list": null, - "unknown-application-action": null, - "deep-app-inspection": null, - "mode": "set", - "app-replacemsg": null, - "options": null - }, - "post_method": "set" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_av.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_av.json deleted file mode 100644 index 9f80833b5e..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_av.json +++ /dev/null @@ -1,252 +0,0 @@ -{ - "fmgr_antivirus_profile_modify": [ - { - "paramgram_used": { - "comment": null, - "smtp": { - "executables": null, - "archive-log": null, - "outbreak-prevention": null, - "emulator": null, - "archive-block": null, - "content-disarm": null, - "options": null - }, - "extended-log": null, - "analytics-db": null, - "analytics-wl-filetype": null, - "av-virus-log": null, - "content-disarm": { - "office-hylink": null, - "pdf-act-gotor": null, - "pdf-act-java": null, - "original-file-destination": null, - "cover-page": null, - "pdf-act-sound": null, - "detect-only": null, - "office-embed": null, - "office-linked": null, - "pdf-javacode": null, - "pdf-hyperlink": null, - "pdf-embedfile": null, - "office-macro": null, - "pdf-act-form": null, - "pdf-act-launch": null, - "pdf-act-movie": null - }, - "ftp": { - "archive-block": null, - "emulator": null, - "archive-log": null, - "outbreak-prevention": null, - "options": null - }, - "mapi": { - "executables": null, - "archive-log": null, - "outbreak-prevention": null, - "emulator": null, - "archive-block": null, - "options": null - }, - "analytics-max-upload": null, - "nntp": { - "archive-block": null, - "emulator": null, - "archive-log": null, - "outbreak-prevention": null, - "options": null - }, - "smb": { - "archive-block": null, - "emulator": null, - "archive-log": null, - "outbreak-prevention": null, - "options": null - }, - "analytics-bl-filetype": null, - "http": { - "archive-log": null, - "outbreak-prevention": null, - "emulator": null, - "archive-block": null, - "content-disarm": null, - "options": null - }, - "adom": "ansible", - "av-block-log": null, - "pop3": { - "executables": null, - "archive-log": null, - "outbreak-prevention": null, - "emulator": null, - "archive-block": null, - "content-disarm": null, - "options": null - }, - "inspection-mode": null, - "ftgd-analytics": null, - "imap": { - "executables": null, - "archive-log": null, - "outbreak-prevention": null, - "emulator": null, - "archive-block": null, - "content-disarm": null, - "options": null - }, - "replacemsg-group": null, - "name": "Ansible_AV_Profile", - "scan-mode": null, - "nac-quar": { - "infected": null, - "log": null, - "expiry": null - }, - "mode": "delete", - "mobile-malware-db": null - }, - "datagram_sent": {}, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/antivirus/profile/Ansible_AV_Profile" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/ansible/obj/antivirus/profile" - }, - "datagram_sent": { - "comment": "Created by Ansible Module TEST", - "ftp": { - "outbreak-prevention": "files", - "options": "scan", - "archive-log": "timeout", - "emulator": "disable", - "archive-block": "encrypted" - }, - "name": "Ansible_AV_Profile", - "scan-mode": "full", - "av-block-log": "enable", - "inspection-mode": "proxy", - "av-virus-log": "enable", - "ftgd-analytics": "everything", - "mobile-malware-db": "enable" - }, - "paramgram_used": { - "comment": "Created by Ansible Module TEST", - "av-block-log": "enable", - "extended-log": null, - "analytics-db": null, - "analytics-wl-filetype": null, - "av-virus-log": "enable", - "content-disarm": { - "pdf-act-movie": null, - "pdf-act-gotor": null, - "pdf-act-java": null, - "original-file-destination": null, - "cover-page": null, - "pdf-act-sound": null, - "detect-only": null, - "office-embed": null, - "pdf-embedfile": null, - "office-linked": null, - "pdf-javacode": null, - "pdf-hyperlink": null, - "office-hylink": null, - "office-macro": null, - "pdf-act-form": null, - "pdf-act-launch": null - }, - "ftp": { - "outbreak-prevention": "files", - "options": "scan", - "archive-log": "timeout", - "emulator": "disable", - "archive-block": "encrypted" - }, - "smtp": { - "executables": null, - "archive-log": null, - "outbreak-prevention": null, - "emulator": null, - "archive-block": null, - "content-disarm": null, - "options": null - }, - "mapi": { - "executables": null, - "archive-log": null, - "outbreak-prevention": null, - "emulator": null, - "archive-block": null, - "options": null - }, - "analytics-max-upload": null, - "nntp": { - "outbreak-prevention": null, - "options": null, - "archive-log": null, - "emulator": null, - "archive-block": null - }, - "smb": { - "outbreak-prevention": null, - "options": null, - "archive-log": null, - "emulator": null, - "archive-block": null - }, - "analytics-bl-filetype": null, - "http": { - "archive-log": null, - "outbreak-prevention": null, - "emulator": null, - "archive-block": null, - "content-disarm": null, - "options": null - }, - "adom": "ansible", - "scan-mode": "full", - "pop3": { - "executables": null, - "archive-log": null, - "outbreak-prevention": null, - "emulator": null, - "archive-block": null, - "content-disarm": null, - "options": null - }, - "inspection-mode": "proxy", - "ftgd-analytics": "everything", - "imap": { - "executables": null, - "archive-log": null, - "outbreak-prevention": null, - "emulator": null, - "archive-block": null, - "content-disarm": null, - "options": null - }, - "name": "Ansible_AV_Profile", - "replacemsg-group": null, - "nac-quar": { - "infected": null, - "log": null, - "expiry": null - }, - "mode": "set", - "mobile-malware-db": "enable" - }, - "post_method": "set" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_dns.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_dns.json deleted file mode 100644 index 3d436380e7..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_dns.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "fmgr_dnsfilter_profile_modify": [ - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/root/obj/dnsfilter/profile" - }, - "datagram_sent": { - "comment": "Created by Ansible Module TEST", - "name": "Ansible_DNS_Profile", - "block-action": "block" - }, - "paramgram_used": { - "comment": "Created by Ansible Module TEST", - "ftgd-dns": { - "options": null, - "filters": { - "action": null, - "category": null, - "log": null - } - }, - "adom": "root", - "youtube-restrict": null, - "sdns-domain-log": null, - "block-botnet": null, - "external-ip-blocklist": null, - "block-action": "block", - "name": "Ansible_DNS_Profile", - "redirect-portal": null, - "sdns-ftgd-err-log": null, - "safe-search": null, - "domain-filter": { - "domain-filter-table": null - }, - "log-all-domain": null, - "mode": "set" - }, - "post_method": "set" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_ips.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_ips.json deleted file mode 100644 index 14cd92217a..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_ips.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "fmgr_ips_sensor_modify": [ - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/root/obj/ips/sensor" - }, - "datagram_sent": { - "comment": "Created by Ansible Module TEST", - "block-malicious-url": "enable", - "name": "Ansible_IPS_Profile", - "entries": [ - { - "action": "block", - "log-packet": "enable", - "severity": "high" - }, - { - "action": "pass", - "severity": "medium" - } - ] - }, - "paramgram_used": { - "comment": "Created by Ansible Module TEST", - "block-malicious-url": "enable", - "mode": "set", - "name": "Ansible_IPS_Profile", - "adom": "root", - "override": { - "status": null, - "exempt-ip": { - "src-ip": null, - "dst-ip": null - }, - "quarantine-log": null, - "log": null, - "action": null, - "log-packet": null, - "quarantine": null, - "quarantine-expiry": null, - "rule-id": null - }, - "entries": [ - { - "action": "block", - "log-packet": "enable", - "severity": "high" - }, - { - "action": "pass", - "severity": "medium" - } - ], - "filter": { - "status": null, - "quarantine-log": null, - "protocol": null, - "severity": null, - "log": null, - "name": null, - "quarantine": null, - "quarantine-expiry": null, - "application": null, - "location": null, - "action": null, - "log-packet": null, - "os": null - }, - "extended-log": null, - "replacemsg-group": null - }, - "post_method": "set" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_profile_group.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_profile_group.json deleted file mode 100644 index 63ce11a537..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_profile_group.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "fmgr_firewall_profile_group_modify": [ - { - "paramgram_used": { - "ssl-ssh-profile": null, - "waf-profile": null, - "adom": "root", - "webfilter-profile": null, - "profile-protocol-options": null, - "application-list": null, - "icap-profile": null, - "voip-profile": null, - "ips-sensor": null, - "dnsfilter-profile": null, - "av-profile": null, - "spamfilter-profile": null, - "dlp-sensor": null, - "mode": "delete", - "ssh-filter-profile": null, - "mms-profile": null, - "name": "Ansible_TEST_Profile_Group" - }, - "datagram_sent": {}, - "raw_response": { - "status": { - "message": "Object does not exist", - "code": -3 - }, - "url": "/pm/config/adom/root/obj/firewall/profile-group/Ansible_TEST_Profile_Group" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "datasrc invalid. object: firewall profile-group av-profile Ansible_TEST_Profile_Group. detail: Ansible_AV_Profile. solution: data not exist", - "code": -10131 - }, - "url": "/pm/config/adom/root/obj/firewall/profile-group" - }, - "datagram_sent": { - "av-profile": "Ansible_AV_Profile", - "profile-protocol-options": "default", - "name": "Ansible_TEST_Profile_Group" - }, - "paramgram_used": { - "ssl-ssh-profile": null, - "application-list": null, - "waf-profile": null, - "adom": "root", - "webfilter-profile": null, - "ips-sensor": null, - "spamfilter-profile": null, - "icap-profile": null, - "dnsfilter-profile": null, - "name": "Ansible_TEST_Profile_Group", - "voip-profile": null, - "av-profile": "Ansible_AV_Profile", - "mode": "set", - "dlp-sensor": null, - "mms-profile": null, - "ssh-filter-profile": null, - "profile-protocol-options": "default" - }, - "post_method": "set" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_proxy.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_proxy.json deleted file mode 100644 index df0833b9c8..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_proxy.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "fmgr_web_proxy_profile_modify": [ - { - "paramgram_used": { - "header-via-request": null, - "name": "Ansible_Web_Proxy_Profile", - "header-front-end-https": null, - "log-header-change": null, - "adom": "root", - "headers": { - "action": null, - "content": null, - "name": null - }, - "mode": "delete", - "header-via-response": null, - "header-x-authenticated-user": null, - "strip-encoding": null, - "header-x-forwarded-for": null, - "header-x-authenticated-groups": null, - "header-client-ip": null - }, - "datagram_sent": {}, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/root/obj/web-proxy/profile/Ansible_Web_Proxy_Profile" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/root/obj/web-proxy/profile" - }, - "datagram_sent": { - "header-via-request": "remove", - "name": "Ansible_Web_Proxy_Profile", - "header-front-end-https": "add", - "log-header-change": "enable", - "headers": { - "action": "add-to-request", - "content": "test", - "name": "test_header" - }, - "header-via-response": "pass", - "header-x-authenticated-user": "remove", - "strip-encoding": "enable", - "header-x-forwarded-for": "pass", - "header-x-authenticated-groups": "add", - "header-client-ip": "pass" - }, - "paramgram_used": { - "header-via-request": "remove", - "header-client-ip": "pass", - "header-front-end-https": "add", - "header-x-authenticated-groups": "add", - "name": "Ansible_Web_Proxy_Profile", - "log-header-change": "enable", - "adom": "root", - "headers": { - "action": "add-to-request", - "content": "test", - "name": "test_header" - }, - "mode": "set", - "header-via-response": "pass", - "header-x-authenticated-user": "remove", - "strip-encoding": "enable", - "header-x-forwarded-for": "pass" - }, - "post_method": "set" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_spam.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_spam.json deleted file mode 100644 index d75156e1de..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_spam.json +++ /dev/null @@ -1,157 +0,0 @@ -{ - "fmgr_spamfilter_profile_modify": [ - { - "paramgram_used": { - "comment": null, - "smtp": { - "local-override": null, - "hdrip": null, - "log": null, - "tag-type": null, - "tag-msg": null, - "action": null - }, - "spam-log": null, - "gmail": { - "log": null - }, - "spam-bword-table": null, - "mapi": { - "action": null, - "log": null - }, - "flow-based": null, - "spam-mheader-table": null, - "spam-log-fortiguard-response": null, - "yahoo-mail": { - "log": null - }, - "adom": "root", - "pop3": { - "action": null, - "tag-msg": null, - "tag-type": null, - "log": null - }, - "external": null, - "spam-rbl-table": null, - "imap": { - "action": null, - "tag-msg": null, - "tag-type": null, - "log": null - }, - "spam-iptrust-table": null, - "replacemsg-group": null, - "name": "Ansible_Spam_Filter_Profile", - "spam-bwl-table": null, - "spam-filtering": null, - "msn-hotmail": { - "log": null - }, - "spam-bword-threshold": null, - "mode": "delete", - "options": null - }, - "datagram_sent": {}, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/root/obj/spamfilter/profile/Ansible_Spam_Filter_Profile" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/root/obj/spamfilter/profile" - }, - "datagram_sent": { - "comment": "Created by Ansible", - "spam-log-fortiguard-response": "enable", - "spam-log": "enable", - "name": "Ansible_Spam_Filter_Profile", - "spam-filtering": "enable", - "flow-based": "enable", - "spam-bword-threshold": 10, - "external": "enable", - "options": [ - "bannedword", - "spamfsip", - "spamfsurl", - "spamrbl", - "spamfsphish", - "spambwl" - ], - "gmail": { - "log": "enable" - } - }, - "paramgram_used": { - "comment": "Created by Ansible", - "smtp": { - "local-override": null, - "hdrip": null, - "log": null, - "tag-type": null, - "tag-msg": null, - "action": null - }, - "yahoo-mail": { - "log": null - }, - "gmail": { - "log": "enable" - }, - "spam-bword-table": null, - "mapi": { - "action": null, - "log": null - }, - "flow-based": "enable", - "spam-mheader-table": null, - "spam-log-fortiguard-response": "enable", - "spam-log": "enable", - "adom": "root", - "pop3": { - "action": null, - "tag-type": null, - "log": null, - "tag-msg": null - }, - "external": "enable", - "spam-rbl-table": null, - "imap": { - "action": null, - "tag-type": null, - "log": null, - "tag-msg": null - }, - "spam-iptrust-table": null, - "name": "Ansible_Spam_Filter_Profile", - "replacemsg-group": null, - "spam-bwl-table": null, - "spam-filtering": "enable", - "msn-hotmail": { - "log": null - }, - "spam-bword-threshold": 10, - "mode": "set", - "options": [ - "bannedword", - "spamfsip", - "spamfsurl", - "spamrbl", - "spamfsphish", - "spambwl" - ] - }, - "post_method": "set" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_ssl_ssh.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_ssl_ssh.json deleted file mode 100644 index 6dc02883f0..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_ssl_ssh.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "fmgr_firewall_ssl_ssh_profile_modify": [ - { - "paramgram_used": { - "comment": null, - "untrusted-caname": null, - "mapi-over-https": null, - "whitelist": null, - "caname": null, - "ftps": { - "status": null, - "allow-invalid-server-cert": null, - "unsupported-ssl": null, - "client-cert-request": null, - "ports": null, - "untrusted-cert": null - }, - "ssl-exemptions-log": null, - "https": { - "status": null, - "allow-invalid-server-cert": null, - "unsupported-ssl": null, - "client-cert-request": null, - "ports": null, - "untrusted-cert": null - }, - "imaps": { - "status": null, - "allow-invalid-server-cert": null, - "unsupported-ssl": null, - "client-cert-request": null, - "ports": null, - "untrusted-cert": null - }, - "server-cert-mode": null, - "adom": "root", - "ssl-exempt": { - "regex": null, - "wildcard-fqdn": null, - "fortiguard-category": null, - "address6": null, - "address": null, - "type": null - }, - "ssl": { - "inspect-all": null, - "allow-invalid-server-cert": null, - "client-cert-request": null, - "untrusted-cert": null, - "unsupported-ssl": null - }, - "ssh": { - "status": null, - "inspect-all": null, - "ssh-tun-policy-check": null, - "ssh-policy-check": null, - "ssh-algorithm": null, - "unsupported-version": null, - "ports": null - }, - "use-ssl-server": null, - "server-cert": null, - "name": "Ansible_SSL_SSH_Profile", - "ssl-anomalies-log": null, - "ssl-server": { - "pop3s-client-cert-request": null, - "imaps-client-cert-request": null, - "smtps-client-cert-request": null, - "ip": null, - "ssl-other-client-cert-request": null, - "https-client-cert-request": null, - "ftps-client-cert-request": null - }, - "smtps": { - "status": null, - "allow-invalid-server-cert": null, - "unsupported-ssl": null, - "client-cert-request": null, - "ports": null, - "untrusted-cert": null - }, - "rpc-over-https": null, - "mode": "delete", - "pop3s": { - "status": null, - "allow-invalid-server-cert": null, - "unsupported-ssl": null, - "client-cert-request": null, - "ports": null, - "untrusted-cert": null - } - }, - "datagram_sent": {}, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/root/obj/firewall/ssl-ssh-profile/Ansible_SSL_SSH_Profile" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/root/obj/firewall/ssl-ssh-profile" - }, - "datagram_sent": { - "comment": "Created by Ansible Module TEST", - "server-cert-mode": "replace", - "name": "Ansible_SSL_SSH_Profile", - "ssl-anomalies-log": "enable", - "mapi-over-https": "enable", - "whitelist": "enable", - "ssl-exemptions-log": "enable", - "rpc-over-https": "enable", - "use-ssl-server": "enable" - }, - "paramgram_used": { - "comment": "Created by Ansible Module TEST", - "untrusted-caname": null, - "mapi-over-https": "enable", - "whitelist": "enable", - "caname": null, - "ftps": { - "status": null, - "allow-invalid-server-cert": null, - "unsupported-ssl": null, - "untrusted-cert": null, - "client-cert-request": null, - "ports": null - }, - "ssl-exemptions-log": "enable", - "https": { - "status": null, - "allow-invalid-server-cert": null, - "unsupported-ssl": null, - "untrusted-cert": null, - "client-cert-request": null, - "ports": null - }, - "pop3s": { - "status": null, - "allow-invalid-server-cert": null, - "unsupported-ssl": null, - "untrusted-cert": null, - "client-cert-request": null, - "ports": null - }, - "server-cert-mode": "replace", - "adom": "root", - "ssl-exempt": { - "regex": null, - "wildcard-fqdn": null, - "fortiguard-category": null, - "address6": null, - "address": null, - "type": null - }, - "ssl": { - "unsupported-ssl": null, - "inspect-all": null, - "allow-invalid-server-cert": null, - "untrusted-cert": null, - "client-cert-request": null - }, - "ssh": { - "status": null, - "inspect-all": null, - "ssh-tun-policy-check": null, - "ssh-policy-check": null, - "ssh-algorithm": null, - "unsupported-version": null, - "ports": null - }, - "server-cert": null, - "name": "Ansible_SSL_SSH_Profile", - "ssl-anomalies-log": "enable", - "ssl-server": { - "pop3s-client-cert-request": null, - "imaps-client-cert-request": null, - "smtps-client-cert-request": null, - "ip": null, - "ssl-other-client-cert-request": null, - "https-client-cert-request": null, - "ftps-client-cert-request": null - }, - "smtps": { - "status": null, - "allow-invalid-server-cert": null, - "unsupported-ssl": null, - "untrusted-cert": null, - "client-cert-request": null, - "ports": null - }, - "imaps": { - "status": null, - "allow-invalid-server-cert": null, - "unsupported-ssl": null, - "untrusted-cert": null, - "client-cert-request": null, - "ports": null - }, - "rpc-over-https": "enable", - "mode": "set", - "use-ssl-server": "enable" - }, - "post_method": "set" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_voip.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_voip.json deleted file mode 100644 index 3513e14f71..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_voip.json +++ /dev/null @@ -1,257 +0,0 @@ -{ - "fmgr_voip_profile_modify": [ - { - "paramgram_used": { - "comment": null, - "sip": { - "block-publish": null, - "ssl-max-version": null, - "malformed-header-rack": null, - "rtp": null, - "publish-rate": null, - "ssl-client-renegotiation": null, - "malformed-header-from": null, - "open-contact-pinhole": null, - "ssl-client-certificate": null, - "malformed-header-p-asserted-identity": null, - "rfc2543-branch": null, - "malformed-header-via": null, - "notify-rate": null, - "preserve-override": null, - "block-info": null, - "options-rate": null, - "block-update": null, - "max-body-length": null, - "block-subscribe": null, - "ssl-pfs": null, - "ssl-send-empty-frags": null, - "ssl-auth-client": null, - "malformed-header-record-route": null, - "refer-rate": null, - "info-rate": null, - "open-record-route-pinhole": null, - "register-rate": null, - "unknown-header": null, - "block-unknown": null, - "ssl-server-certificate": null, - "block-invite": null, - "strict-register": null, - "max-dialogs": null, - "block-cancel": null, - "no-sdp-fixup": null, - "open-register-pinhole": null, - "block-notify": null, - "max-idle-dialogs": null, - "malformed-request-line": null, - "block-long-lines": null, - "log-violations": null, - "ssl-min-version": null, - "provisional-invite-expiry-time": null, - "block-prack": null, - "malformed-header-max-forwards": null, - "block-message": null, - "malformed-header-call-id": null, - "invite-rate": null, - "cancel-rate": null, - "register-contact-trace": null, - "block-register": null, - "ssl-mode": null, - "prack-rate": null, - "block-bye": null, - "ssl-algorithm": null, - "malformed-header-to": null, - "block-geo-red-options": null, - "call-keepalive": null, - "message-rate": null, - "malformed-header-expires": null, - "block-options": null, - "log-call-summary": null, - "hnt-restrict-source-ip": null, - "ssl-auth-server": null, - "contact-fixup": null, - "ack-rate": null, - "malformed-header-allow": null, - "malformed-header-sdp-v": null, - "malformed-header-sdp-t": null, - "malformed-header-contact": null, - "malformed-header-sdp-s": null, - "hosted-nat-traversal": null, - "subscribe-rate": null, - "malformed-header-content-length": null, - "malformed-header-sdp-z": null, - "malformed-header-route": null, - "malformed-header-sdp-b": null, - "malformed-header-sdp-c": null, - "malformed-header-sdp-a": null, - "malformed-header-sdp-o": null, - "malformed-header-sdp-m": null, - "malformed-header-sdp-k": null, - "malformed-header-sdp-i": null, - "status": null, - "open-via-pinhole": null, - "bye-rate": null, - "block-ack": null, - "malformed-header-sdp-r": null, - "block-refer": null, - "ips-rtp": null, - "malformed-header-content-type": null, - "nat-trace": null, - "malformed-header-rseq": null, - "max-line-length": null, - "update-rate": null, - "malformed-header-cseq": null - }, - "name": "Ansible_VOIP_Profile", - "adom": "root", - "sccp": { - "status": null, - "log-call-summary": null, - "block-mcast": null, - "max-calls": null, - "verify-header": null, - "log-violations": null - }, - "mode": "delete" - }, - "datagram_sent": {}, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/root/obj/voip/profile/Ansible_VOIP_Profile" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/root/obj/voip/profile" - }, - "datagram_sent": { - "comment": "Created by Ansible", - "sccp": { - "status": "enable", - "log-call-summary": "enable", - "log-violations": "enable", - "block-mcast": "enable" - }, - "name": "Ansible_VOIP_Profile" - }, - "paramgram_used": { - "comment": "Created by Ansible", - "sip": { - "block-publish": null, - "ssl-max-version": null, - "malformed-header-rack": null, - "rtp": null, - "publish-rate": null, - "ssl-client-renegotiation": null, - "malformed-header-from": null, - "ssl-client-certificate": null, - "malformed-header-p-asserted-identity": null, - "info-rate": null, - "malformed-header-via": null, - "notify-rate": null, - "preserve-override": null, - "block-info": null, - "options-rate": null, - "block-update": null, - "max-body-length": null, - "block-subscribe": null, - "ssl-pfs": null, - "ssl-send-empty-frags": null, - "ssl-auth-client": null, - "malformed-header-record-route": null, - "refer-rate": null, - "open-record-route-pinhole": null, - "register-rate": null, - "unknown-header": null, - "block-unknown": null, - "ssl-server-certificate": null, - "block-invite": null, - "malformed-request-line": null, - "max-dialogs": null, - "block-cancel": null, - "no-sdp-fixup": null, - "open-register-pinhole": null, - "block-options": null, - "max-idle-dialogs": null, - "strict-register": null, - "block-long-lines": null, - "log-violations": null, - "ssl-min-version": null, - "provisional-invite-expiry-time": null, - "rfc2543-branch": null, - "block-ack": null, - "malformed-header-max-forwards": null, - "block-message": null, - "malformed-header-call-id": null, - "invite-rate": null, - "cancel-rate": null, - "register-contact-trace": null, - "block-refer": null, - "block-register": null, - "ssl-mode": null, - "prack-rate": null, - "block-bye": null, - "ssl-algorithm": null, - "malformed-header-to": null, - "block-geo-red-options": null, - "call-keepalive": null, - "message-rate": null, - "malformed-header-expires": null, - "log-call-summary": null, - "hnt-restrict-source-ip": null, - "ssl-auth-server": null, - "contact-fixup": null, - "ack-rate": null, - "malformed-header-allow": null, - "malformed-header-sdp-v": null, - "malformed-header-sdp-t": null, - "malformed-header-contact": null, - "malformed-header-sdp-s": null, - "hosted-nat-traversal": null, - "subscribe-rate": null, - "malformed-header-content-length": null, - "malformed-header-sdp-z": null, - "malformed-header-route": null, - "block-notify": null, - "malformed-header-sdp-b": null, - "malformed-header-sdp-c": null, - "malformed-header-sdp-a": null, - "malformed-header-sdp-o": null, - "malformed-header-sdp-m": null, - "malformed-header-sdp-k": null, - "malformed-header-sdp-i": null, - "status": null, - "open-via-pinhole": null, - "bye-rate": null, - "block-prack": null, - "malformed-header-sdp-r": null, - "open-contact-pinhole": null, - "ips-rtp": null, - "malformed-header-content-type": null, - "nat-trace": null, - "malformed-header-rseq": null, - "max-line-length": null, - "update-rate": null, - "malformed-header-cseq": null - }, - "name": "Ansible_VOIP_Profile", - "adom": "root", - "sccp": { - "status": "enable", - "log-call-summary": "enable", - "log-violations": "enable", - "block-mcast": "enable" - }, - "mode": "set" - }, - "post_method": "set" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_waf.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_waf.json deleted file mode 100644 index 93579f12f7..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_waf.json +++ /dev/null @@ -1,365 +0,0 @@ -{ - "fmgr_waf_profile_modify": [ - { - "paramgram_used": { - "comment": "Created by Ansible Module TEST", - "name": "Ansible_WAF_Profile", - "adom": "root", - "address-list": { - "blocked-address": null, - "status": null, - "severity": null, - "blocked-log": null, - "trusted-address": null - }, - "constraint": { - "header-length": { - "action": null, - "status": null, - "length": null, - "log": null, - "severity": null - }, - "content-length": { - "action": null, - "status": null, - "length": null, - "log": null, - "severity": null - }, - "max-cookie": { - "action": null, - "status": null, - "max-cookie": null, - "log": null, - "severity": null - }, - "url-param-length": { - "action": null, - "status": null, - "length": null, - "log": null, - "severity": null - }, - "hostname": { - "action": null, - "status": null, - "log": null, - "severity": null - }, - "line-length": { - "action": null, - "status": null, - "length": null, - "log": null, - "severity": null - }, - "exception": { - "regex": null, - "header-length": null, - "content-length": null, - "max-cookie": null, - "pattern": null, - "hostname": null, - "line-length": null, - "max-range-segment": null, - "url-param-length": null, - "version": null, - "param-length": null, - "malformed": null, - "address": null, - "max-url-param": null, - "max-header-line": null, - "method": null - }, - "max-range-segment": { - "action": null, - "status": null, - "max-range-segment": null, - "severity": null, - "log": null - }, - "version": { - "action": null, - "status": null, - "log": null, - "severity": null - }, - "param-length": { - "action": null, - "status": null, - "length": null, - "log": null, - "severity": null - }, - "malformed": { - "action": null, - "status": null, - "log": null, - "severity": null - }, - "max-url-param": { - "action": null, - "status": null, - "max-url-param": null, - "log": null, - "severity": null - }, - "max-header-line": { - "action": null, - "status": null, - "max-header-line": null, - "log": null, - "severity": null - }, - "method": { - "action": null, - "status": null, - "log": null, - "severity": null - } - }, - "extended-log": null, - "url-access": { - "action": null, - "address": null, - "severity": null, - "access-pattern": { - "negate": null, - "pattern": null, - "srcaddr": null, - "regex": null - }, - "log": null - }, - "external": null, - "signature": { - "custom-signature": { - "status": null, - "direction": null, - "target": null, - "severity": null, - "case-sensitivity": null, - "name": null, - "pattern": null, - "action": null, - "log": null - }, - "credit-card-detection-threshold": null, - "main-class": { - "action": null, - "status": null, - "log": null, - "severity": null - }, - "disabled-signature": null, - "disabled-sub-class": null - }, - "method": { - "status": null, - "severity": null, - "default-allowed-methods": null, - "log": null, - "method-policy": { - "regex": null, - "pattern": null, - "allowed-methods": null, - "address": null - } - }, - "mode": "delete" - }, - "datagram_sent": {}, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/root/obj/waf/profile/Ansible_WAF_Profile" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/root/obj/waf/profile" - }, - "datagram_sent": { - "comment": "Created by Ansible Module TEST", - "name": "Ansible_WAF_Profile" - }, - "paramgram_used": { - "comment": "Created by Ansible Module TEST", - "adom": "root", - "address-list": { - "blocked-address": null, - "status": null, - "severity": null, - "blocked-log": null, - "trusted-address": null - }, - "extended-log": null, - "url-access": { - "action": null, - "severity": null, - "log": null, - "access-pattern": { - "negate": null, - "pattern": null, - "srcaddr": null, - "regex": null - }, - "address": null - }, - "external": null, - "name": "Ansible_WAF_Profile", - "constraint": { - "content-length": { - "action": null, - "status": null, - "length": null, - "log": null, - "severity": null - }, - "max-cookie": { - "action": null, - "status": null, - "max-cookie": null, - "log": null, - "severity": null - }, - "line-length": { - "action": null, - "status": null, - "length": null, - "log": null, - "severity": null - }, - "max-range-segment": { - "action": null, - "severity": null, - "status": null, - "log": null, - "max-range-segment": null - }, - "param-length": { - "action": null, - "status": null, - "length": null, - "log": null, - "severity": null - }, - "malformed": { - "action": null, - "status": null, - "log": null, - "severity": null - }, - "max-url-param": { - "action": null, - "status": null, - "max-url-param": null, - "log": null, - "severity": null - }, - "header-length": { - "action": null, - "status": null, - "length": null, - "log": null, - "severity": null - }, - "exception": { - "regex": null, - "header-length": null, - "content-length": null, - "max-cookie": null, - "pattern": null, - "hostname": null, - "line-length": null, - "max-range-segment": null, - "url-param-length": null, - "version": null, - "param-length": null, - "malformed": null, - "address": null, - "max-url-param": null, - "max-header-line": null, - "method": null - }, - "hostname": { - "action": null, - "status": null, - "log": null, - "severity": null - }, - "url-param-length": { - "action": null, - "status": null, - "length": null, - "log": null, - "severity": null - }, - "version": { - "action": null, - "status": null, - "log": null, - "severity": null - }, - "max-header-line": { - "action": null, - "status": null, - "max-header-line": null, - "log": null, - "severity": null - }, - "method": { - "action": null, - "status": null, - "log": null, - "severity": null - } - }, - "mode": "set", - "signature": { - "custom-signature": { - "status": null, - "direction": null, - "log": null, - "severity": null, - "target": null, - "action": null, - "pattern": null, - "case-sensitivity": null, - "name": null - }, - "credit-card-detection-threshold": null, - "main-class": { - "action": null, - "status": null, - "log": null, - "severity": null - }, - "disabled-signature": null, - "disabled-sub-class": null - }, - "method": { - "status": null, - "default-allowed-methods": null, - "method-policy": { - "regex": null, - "pattern": null, - "allowed-methods": null, - "address": null - }, - "log": null, - "severity": null - } - }, - "post_method": "set" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_wanopt.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_wanopt.json deleted file mode 100644 index ae9cd041cc..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_wanopt.json +++ /dev/null @@ -1,162 +0,0 @@ -{ - "fmgr_wanopt_profile_modify": [ - { - "paramgram_used": { - "ftp": { - "status": null, - "log-traffic": null, - "byte-caching": null, - "prefer-chunking": null, - "secure-tunnel": null, - "port": null, - "tunnel-sharing": null - }, - "http": { - "status": null, - "ssl": null, - "tunnel-non-http": null, - "log-traffic": null, - "byte-caching": null, - "unknown-http-version": null, - "prefer-chunking": null, - "tunnel-sharing": null, - "port": null, - "ssl-port": null, - "secure-tunnel": null - }, - "cifs": { - "status": null, - "log-traffic": null, - "byte-caching": null, - "prefer-chunking": null, - "secure-tunnel": null, - "port": null, - "tunnel-sharing": null - }, - "adom": "root", - "auth-group": null, - "mapi": { - "status": null, - "log-traffic": null, - "byte-caching": null, - "secure-tunnel": null, - "port": null, - "tunnel-sharing": null - }, - "tcp": { - "status": null, - "byte-caching-opt": null, - "ssl": null, - "log-traffic": null, - "byte-caching": null, - "secure-tunnel": null, - "port": null, - "ssl-port": null, - "tunnel-sharing": null - }, - "mode": "delete", - "comments": null, - "transparent": null, - "name": "Ansible_WanOpt_Profile" - }, - "datagram_sent": {}, - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/root/obj/wanopt/profile/Ansible_WanOpt_Profile" - }, - "post_method": "delete" - }, - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/root/obj/wanopt/profile" - }, - "datagram_sent": { - "ftp": { - "status": "enable", - "log-traffic": "enable", - "byte-caching": "enable", - "prefer-chunking": "dynamic", - "tunnel-sharing": "private", - "port": 80, - "secure-tunnel": "disable" - }, - "name": "Ansible_WanOpt_Profile", - "cifs": { - "status": "enable", - "log-traffic": "enable", - "byte-caching": "enable", - "prefer-chunking": "dynamic", - "port": 80, - "tunnel-sharing": "private" - }, - "comments": "Created by Ansible", - "transparent": "enable" - }, - "paramgram_used": { - "http": { - "status": null, - "log-traffic": null, - "prefer-chunking": null, - "port": null, - "ssl": null, - "tunnel-non-http": null, - "byte-caching": null, - "unknown-http-version": null, - "secure-tunnel": null, - "ssl-port": null, - "tunnel-sharing": null - }, - "cifs": { - "status": "enable", - "log-traffic": "enable", - "byte-caching": "enable", - "prefer-chunking": "dynamic", - "port": 80, - "tunnel-sharing": "private" - }, - "adom": "root", - "auth-group": null, - "tcp": { - "status": null, - "log-traffic": null, - "byte-caching-opt": null, - "byte-caching": null, - "ssl": null, - "tunnel-sharing": null, - "port": null, - "ssl-port": null, - "secure-tunnel": null - }, - "transparent": "enable", - "ftp": { - "status": "enable", - "log-traffic": "enable", - "byte-caching": "enable", - "prefer-chunking": "dynamic", - "tunnel-sharing": "private", - "port": 80, - "secure-tunnel": "disable" - }, - "name": "Ansible_WanOpt_Profile", - "mapi": { - "status": null, - "log-traffic": null, - "byte-caching": null, - "secure-tunnel": null, - "port": null, - "tunnel-sharing": null - }, - "comments": "Created by Ansible", - "mode": "set" - }, - "post_method": "set" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_web.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_web.json deleted file mode 100644 index b7e5e4c740..0000000000 --- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_web.json +++ /dev/null @@ -1,146 +0,0 @@ -{ - "fmgr_webfilter_profile_modify": [ - { - "raw_response": { - "status": { - "message": "OK", - "code": 0 - }, - "url": "/pm/config/adom/root/obj/webfilter/profile" - }, - "datagram_sent": { - "comment": "Created by Ansible Module TEST", - "web-extended-all-action-log": "enable", - "web-filter-cookie-removal-log": "enable", - "extended-log": "enable", - "log-all-url": "enable", - "wisp": "enable", - "web-filter-vbs-log": "enable", - "ovrd-perm": [ - "bannedword-override" - ], - "web-filter-command-block-log": "enable", - "web-invalid-domain-log": "enable", - "web-filter-referer-log": "enable", - "inspection-mode": "proxy", - "post-action": "block", - "web-content-log": "enable", - "web-filter-applet-log": "enable", - "web-ftgd-err-log": "enable", - "name": "Ansible_Web_Proxy_Profile", - "web-filter-jscript-log": "enable", - "web-filter-activex-log": "enable", - "web-filter-js-log": "enable", - "web-ftgd-quota-usage": "enable", - "web-filter-unknown-log": "enable", - "web-filter-cookie-log": "enable", - "youtube-channel-status": "blacklist", - "web-url-log": "enable", - "options": [ - "js" - ], - "wisp-algorithm": "auto-learning" - }, - "paramgram_used": { - "comment": "Created by Ansible Module TEST", - "web-filter-command-block-log": "enable", - "web-invalid-domain-log": "enable", - "web-extended-all-action-log": "enable", - "adom": "root", - "ftgd-wf": { - "rate-javascript-urls": null, - "quota": { - "category": null, - "value": null, - "override-replacemsg": null, - "duration": null, - "type": null, - "unit": null - }, - "rate-image-urls": null, - "filters": { - "category": null, - "auth-usr-grp": null, - "log": null, - "warning-prompt": null, - "override-replacemsg": null, - "action": null, - "warn-duration": null, - "warning-duration-type": null - }, - "rate-css-urls": null, - "ovrd": null, - "exempt-quota": null, - "max-quota-timeout": null, - "rate-crl-urls": null, - "options": null - }, - "web-content-log": "enable", - "web-filter-referer-log": "enable", - "log-all-url": "enable", - "extended-log": "enable", - "inspection-mode": "proxy", - "web-filter-cookie-removal-log": "enable", - "post-action": "block", - "web-filter-activex-log": "enable", - "web-filter-cookie-log": "enable", - "web": { - "blacklist": null, - "log-search": null, - "keyword-match": null, - "urlfilter-table": null, - "bword-table": null, - "safe-search": null, - "whitelist": null, - "content-header-list": null, - "youtube-restrict": null, - "bword-threshold": null - }, - "web-filter-applet-log": "enable", - "web-ftgd-err-log": "enable", - "replacemsg-group": null, - "web-filter-jscript-log": "enable", - "web-ftgd-quota-usage": "enable", - "url-extraction": { - "status": null, - "server-fqdn": null, - "redirect-url": null, - "redirect-header": null, - "redirect-no-content": null - }, - "web-filter-js-log": "enable", - "youtube-channel-filter": { - "comment": null, - "channel-id": null - }, - "name": "Ansible_Web_Proxy_Profile", - "wisp": "enable", - "web-filter-vbs-log": "enable", - "web-filter-unknown-log": "enable", - "mode": "set", - "youtube-channel-status": "blacklist", - "override": { - "profile": null, - "ovrd-user-group": null, - "ovrd-scope": null, - "ovrd-cookie": null, - "ovrd-dur-mode": null, - "profile-attribute": null, - "ovrd-dur": null, - "profile-type": null - }, - "web-url-log": "enable", - "ovrd-perm": [ - "bannedword-override" - ], - "https-replacemsg": null, - "options": [ - "js" - ], - "wisp-servers": null, - "wisp-algorithm": "auto-learning" - }, - "post_method": "set" - } - ] -} diff --git a/test/units/modules/network/fortimanager/fortimanager_module.py b/test/units/modules/network/fortimanager/fortimanager_module.py deleted file mode 100644 index b9f424ee11..0000000000 --- a/test/units/modules/network/fortimanager/fortimanager_module.py +++ /dev/null @@ -1,64 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase - - -class TestFortimanagerModule(ModuleTestCase): - - def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False): - - self.load_fixtures(commands) - - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - if commands is not None: - if sort: - self.assertEqual(sorted(commands), sorted(result['commands']), result['commands']) - else: - self.assertEqual(commands, result['commands'], result['commands']) - - return result - - def failed(self): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def changed(self, changed=False): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertEqual(result['changed'], changed, result) - return result - - def load_fixtures(self, commands=None): - pass diff --git a/test/units/modules/network/fortimanager/test_fmgr_device.py b/test/units/modules/network/fortimanager/test_fmgr_device.py deleted file mode 100644 index 64f9b3765c..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_device.py +++ /dev/null @@ -1,272 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_device -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_device.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_discover_device(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # device_username: admin - # adom: ansible - # device_ip: 10.7.220.151 - # device_unique_name: FGT1 - # mode: exec - # device_serial: None - # device_password: fortinet - ################################################## - ################################################## - # device_username: admin - # adom: ansible - # device_ip: 10.7.220.152 - # device_unique_name: FGT2 - # mode: exec - # device_serial: None - # device_password: fortinet - ################################################## - ################################################## - # device_username: admin - # adom: ansible - # device_ip: 10.7.220.153 - # device_unique_name: FGT3 - # mode: exec - # device_serial: None - # device_password: fortinet - ################################################## - - # Test using fixture 1 # - output = fmgr_device.discover_device(fmg_instance, fixture_data[0]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True - # Test using fixture 2 # - output = fmgr_device.discover_device(fmg_instance, fixture_data[1]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True - # Test using fixture 3 # - output = fmgr_device.discover_device(fmg_instance, fixture_data[2]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True - - -def test_add_device(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # device_username: admin - # adom: ansible - # device_ip: 10.7.220.151 - # device_unique_name: FGT1 - # mode: exec - # device_serial: None - # device_password: fortinet - ################################################## - ################################################## - # device_username: admin - # adom: ansible - # device_ip: 10.7.220.152 - # device_unique_name: FGT2 - # mode: exec - # device_serial: None - # device_password: fortinet - ################################################## - ################################################## - # device_username: admin - # adom: ansible - # device_ip: 10.7.220.153 - # device_unique_name: FGT3 - # mode: exec - # device_serial: None - # device_password: fortinet - ################################################## - - # Test using fixture 1 # - output = fmgr_device.add_device(fmg_instance, fixture_data[0]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True - # Test using fixture 2 # - output = fmgr_device.add_device(fmg_instance, fixture_data[1]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True - # Test using fixture 3 # - output = fmgr_device.add_device(fmg_instance, fixture_data[2]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True - - -def test_delete_device(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # device_username: admin - # adom: root - # device_ip: 10.7.220.151 - # device_unique_name: FGT1 - # mode: exec - # device_serial: None - # device_password: fortinet - ################################################## - ################################################## - # device_username: admin - # adom: ansible - # device_ip: 10.7.220.152 - # device_unique_name: FGT2 - # mode: exec - # device_serial: None - # device_password: fortinet - ################################################## - ################################################## - # device_username: admin - # adom: ansible - # device_ip: 10.7.220.153 - # device_unique_name: FGT3 - # mode: exec - # device_serial: None - # device_password: fortinet - ################################################## - - # Test using fixture 1 # - output = fmgr_device.delete_device(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 2 # - output = fmgr_device.delete_device(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 3 # - output = fmgr_device.delete_device(fmg_instance, fixture_data[2]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - - -def test_get_device(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # device_username: admin - # adom: ansible - # device_ip: 10.7.220.151 - # device_unique_name: FGT1 - # mode: get - # device_serial: None - # device_password: fortinet - ################################################## - ################################################## - # device_username: admin - # adom: ansible - # device_ip: 10.7.220.152 - # device_unique_name: FGT2 - # mode: get - # device_serial: None - # device_password: fortinet - ################################################## - ################################################## - # device_username: admin - # adom: ansible - # device_ip: 10.7.220.153 - # device_unique_name: FGT3 - # mode: get - # device_serial: None - # device_password: fortinet - ################################################## - ################################################## - # device_username: admin - # adom: ansible - # device_ip: 10.7.220.151 - # device_unique_name: FGT1 - # mode: get - # device_serial: None - # device_password: fortinet - ################################################## - ################################################## - # device_username: admin - # adom: ansible - # device_ip: 10.7.220.152 - # device_unique_name: FGT2 - # mode: get - # device_serial: None - # device_password: fortinet - ################################################## - ################################################## - # device_username: admin - # adom: ansible - # device_ip: 10.7.220.153 - # device_unique_name: FGT3 - # mode: get - # device_serial: None - # device_password: fortinet - ################################################## - - # Test using fixture 1 # - output = fmgr_device.get_device(fmg_instance, fixture_data[0]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True - # Test using fixture 2 # - output = fmgr_device.get_device(fmg_instance, fixture_data[1]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True - # Test using fixture 3 # - output = fmgr_device.get_device(fmg_instance, fixture_data[2]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True - # Test using fixture 4 # - output = fmgr_device.get_device(fmg_instance, fixture_data[3]['paramgram_used']) - assert output['raw_response']['status']['code'] == -3 - # Test using fixture 5 # - output = fmgr_device.get_device(fmg_instance, fixture_data[4]['paramgram_used']) - assert output['raw_response']['status']['code'] == -3 - # Test using fixture 6 # - output = fmgr_device.get_device(fmg_instance, fixture_data[5]['paramgram_used']) - assert output['raw_response']['status']['code'] == -3 diff --git a/test/units/modules/network/fortimanager/test_fmgr_device_config.py b/test/units/modules/network/fortimanager/test_fmgr_device_config.py deleted file mode 100644 index ade2e1199f..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_device_config.py +++ /dev/null @@ -1,188 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_device_config -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_device_config.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_update_device_hostname(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # adom: ansible - # interface: None - # device_unique_name: FGT1 - # install_config: disable - # device_hostname: ansible-fgt01 - # interface_ip: None - # interface_allow_access: None - # mode: update - ################################################## - ################################################## - # adom: ansible - # interface: None - # device_unique_name: FGT2 - # install_config: disable - # device_hostname: ansible-fgt02 - # interface_ip: None - # interface_allow_access: None - # mode: update - ################################################## - ################################################## - # adom: ansible - # interface: None - # device_unique_name: FGT3 - # install_config: disable - # device_hostname: ansible-fgt03 - # interface_ip: None - # interface_allow_access: None - # mode: update - ################################################## - - # Test using fixture 1 # - output = fmgr_device_config.update_device_hostname(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 2 # - output = fmgr_device_config.update_device_hostname(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 3 # - output = fmgr_device_config.update_device_hostname(fmg_instance, fixture_data[2]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - - -def test_update_device_interface(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # adom: ansible - # install_config: disable - # device_unique_name: FGT1 - # interface: port2 - # device_hostname: None - # interface_ip: 10.1.1.1/24 - # interface_allow_access: ping, telnet, https, http - # mode: update - ################################################## - ################################################## - # adom: ansible - # install_config: disable - # device_unique_name: FGT2 - # interface: port2 - # device_hostname: None - # interface_ip: 10.1.2.1/24 - # interface_allow_access: ping, telnet, https, http - # mode: update - ################################################## - ################################################## - # adom: ansible - # install_config: disable - # device_unique_name: FGT3 - # interface: port2 - # device_hostname: None - # interface_ip: 10.1.3.1/24 - # interface_allow_access: ping, telnet, https, http - # mode: update - ################################################## - - # Test using fixture 1 # - output = fmgr_device_config.update_device_interface(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 2 # - output = fmgr_device_config.update_device_interface(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 3 # - output = fmgr_device_config.update_device_interface(fmg_instance, fixture_data[2]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - - -def test_exec_config(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # adom: ansible - # interface: None - # device_unique_name: FGT1 - # install_config: enable - # device_hostname: None - # interface_ip: None - # interface_allow_access: None - # mode: exec - ################################################## - ################################################## - # adom: ansible - # install_config: enable - # device_unique_name: FGT2, FGT3 - # interface: None - # device_hostname: None - # interface_ip: None - # interface_allow_access: None - # mode: exec - ################################################## - - # Test using fixture 1 # - output = fmgr_device_config.exec_config(fmg_instance, fixture_data[0]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True - # Test using fixture 2 # - output = fmgr_device_config.exec_config(fmg_instance, fixture_data[1]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True diff --git a/test/units/modules/network/fortimanager/test_fmgr_device_group.py b/test/units/modules/network/fortimanager/test_fmgr_device_group.py deleted file mode 100644 index 3c6d876909..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_device_group.py +++ /dev/null @@ -1,202 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_device_group -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_device_group.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_add_device_group(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # grp_desc: CreatedbyAnsible - # adom: ansible - # grp_members: None - # mode: add - # grp_name: TestGroup - # vdom: root - ################################################## - ################################################## - # grp_desc: CreatedbyAnsible - # adom: ansible - # grp_members: None - # mode: add - # grp_name: testtest - # vdom: root - ################################################## - ################################################## - # grp_desc: None - # adom: ansible - # grp_members: FGT1 - # mode: add - # grp_name: TestGroup - # vdom: root - ################################################## - ################################################## - # grp_desc: None - # adom: ansible - # grp_members: FGT3 - # mode: add - # grp_name: testtest - # vdom: root - ################################################## - - # Test using fixture 1 # - output = fmgr_device_group.add_device_group(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == -2 - # Test using fixture 2 # - output = fmgr_device_group.add_device_group(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 3 # - output = fmgr_device_group.add_device_group(fmg_instance, fixture_data[2]['paramgram_used']) - assert output['raw_response']['status']['code'] == -2 - # Test using fixture 4 # - output = fmgr_device_group.add_device_group(fmg_instance, fixture_data[3]['paramgram_used']) - assert output['raw_response']['status']['code'] == -2 - - -def test_delete_device_group(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # grp_desc: CreatedbyAnsible - # adom: ansible - # grp_members: None - # mode: delete - # grp_name: TestGroup - # vdom: root - ################################################## - ################################################## - # grp_desc: CreatedbyAnsible - # adom: ansible - # grp_members: None - # mode: delete - # grp_name: testtest - # vdom: root - ################################################## - - # Test using fixture 1 # - output = fmgr_device_group.delete_device_group(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 2 # - output = fmgr_device_group.delete_device_group(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - - -def test_add_group_member(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # grp_desc: None - # adom: ansible - # grp_members: FGT1 - # mode: add - # grp_name: TestGroup - # vdom: root - ################################################## - ################################################## - # grp_desc: None - # adom: ansible - # grp_members: FGT3 - # mode: add - # grp_name: testtest - # vdom: root - ################################################## - - # Test using fixture 1 # - output = fmgr_device_group.add_group_member(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 2 # - output = fmgr_device_group.add_group_member(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - - -def test_delete_group_member(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # grp_desc: None - # adom: ansible - # grp_members: FGT3 - # mode: delete - # grp_name: testtest - # vdom: root - ################################################## - ################################################## - # grp_desc: None - # adom: ansible - # grp_members: FGT1 - # mode: delete - # grp_name: TestGroup - # vdom: root - ################################################## - - # Test using fixture 1 # - output = fmgr_device_group.delete_group_member(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 2 # - output = fmgr_device_group.delete_group_member(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 diff --git a/test/units/modules/network/fortimanager/test_fmgr_device_provision_template.py b/test/units/modules/network/fortimanager/test_fmgr_device_provision_template.py deleted file mode 100644 index 4a58a67b44..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_device_provision_template.py +++ /dev/null @@ -1,1759 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_device_provision_template -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.' - 'fmgr_device_provision_template.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_get_devprof(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # snmpv3_security_level: None - # snmp_v2c_query_status: None - # ntp_type: None - # dns_suffix: None - # snmpv3_queries: None - # snmpv3_trap_status: None - # snmp_v2c_name: None - # syslog_facility: syslog - # snmp_v2c_status: None - # smtp_validate_cert: None - # snmpv3_name: None - # snmp_v2c_trap_src_ipv4: None - # syslog_port: None - # ntp_server: None - # admin_https_port: None - # ntp_status: None - # syslog_server: None - # dns_primary_ipv4: None - # admin_timeout: None - # snmpv3_auth_proto: None - # smtp_port: None - # snmpv3_priv_pwd: None - # smtp_server: None - # syslog_enc_algorithm: disable - # dns_secondary_ipv4: None - # smtp_username: None - # snmpv3_auth_pwd: None - # syslog_certificate: None - # admin_fortiguard_target: None - # snmpv3_query_port: None - # smtp_password: None - # adom: ansible - # snmpv3_notify_hosts: None - # syslog_mode: udp - # snmp_v2c_query_port: None - # snmp_v2c_trap_status: None - # snmp_status: enable - # syslog_status: None - # admin_fortianalyzer_target: None - # ntp_auth: None - # snmp_v2c_id: None - # admin_http_port: None - # ntp_v3: None - # snmp_v2c_query_hosts_ipv4: None - # ntp_sync_interval: None - # snmpv3_source_ip: None - # snmpv3_trap_rport: None - # admin_gui_theme: None - # syslog_filter: None - # ntp_auth_pwd: None - # provisioning_template: ansibleTest - # smtp_replyto: None - # provision_targets: None - # snmp_v2c_trap_port: None - # snmpv3_priv_proto: None - # admin_enable_fortiguard: None - # admin_switch_controller: None - # admin_language: None - # smtp_conn_sec: None - # mode: get - # smtp_source_ipv4: None - # snmpv3_status: None - # delete_provisioning_template: None - # snmp_v2c_trap_hosts_ipv4: None - # admin_https_redirect: None - ################################################## - ################################################## - # snmpv3_security_level: None - # snmp_v2c_query_status: None - # ntp_type: None - # dns_suffix: None - # snmpv3_queries: None - # snmpv3_trap_status: None - # snmp_v2c_name: None - # syslog_facility: kernel - # snmp_v2c_status: None - # smtp_validate_cert: None - # snmpv3_name: None - # snmp_v2c_trap_src_ipv4: None - # syslog_port: 514 - # ntp_server: None - # admin_https_port: None - # ntp_status: None - # syslog_server: 10.7.220.59 - # dns_primary_ipv4: None - # admin_timeout: None - # snmpv3_auth_proto: None - # smtp_port: None - # snmpv3_priv_pwd: None - # smtp_server: None - # syslog_enc_algorithm: disable - # dns_secondary_ipv4: None - # smtp_replyto: None - # smtp_username: None - # snmpv3_auth_pwd: None - # syslog_certificate: None - # admin_fortiguard_target: None - # snmpv3_query_port: None - # smtp_password: None - # adom: ansible - # snmpv3_notify_hosts: None - # syslog_mode: udp - # snmp_v2c_query_port: None - # snmp_v2c_trap_status: None - # snmp_status: None - # syslog_status: enable - # admin_fortianalyzer_target: None - # ntp_auth: None - # snmp_v2c_id: None - # admin_http_port: None - # snmp_v2c_query_hosts_ipv4: None - # ntp_sync_interval: None - # snmpv3_source_ip: None - # snmpv3_trap_rport: None - # admin_gui_theme: None - # syslog_filter: critical - # ntp_auth_pwd: None - # provisioning_template: ansibleTest - # snmp_v2c_trap_hosts_ipv4: None - # provision_targets: None - # snmp_v2c_trap_port: None - # snmpv3_priv_proto: None - # admin_enable_fortiguard: None - # admin_switch_controller: None - # admin_language: None - # smtp_conn_sec: None - # mode: get - # smtp_source_ipv4: None - # snmpv3_status: None - # delete_provisioning_template: None - # ntp_v3: None - # admin_https_redirect: None - ################################################## - ################################################## - # snmpv3_security_level: None - # snmp_v2c_query_status: enable - # ntp_type: None - # dns_suffix: None - # snmpv3_queries: None - # snmpv3_trap_status: None - # snmp_v2c_name: ansibleV2c - # syslog_facility: syslog - # snmp_v2c_status: enable - # smtp_validate_cert: None - # snmpv3_name: None - # snmp_v2c_trap_src_ipv4: 10.7.220.41 - # syslog_port: None - # ntp_server: None - # admin_https_port: None - # ntp_status: None - # syslog_server: None - # dns_primary_ipv4: None - # admin_timeout: None - # snmpv3_auth_proto: None - # smtp_port: None - # snmpv3_priv_pwd: None - # smtp_server: None - # syslog_enc_algorithm: disable - # dns_secondary_ipv4: None - # smtp_username: None - # snmpv3_auth_pwd: None - # syslog_certificate: None - # admin_fortiguard_target: None - # snmpv3_query_port: None - # smtp_password: None - # adom: ansible - # snmpv3_notify_hosts: None - # syslog_mode: udp - # snmp_v2c_query_port: 162 - # snmp_v2c_trap_status: enable - # snmp_status: enable - # syslog_status: None - # admin_fortianalyzer_target: None - # ntp_auth: None - # snmp_v2c_id: 1 - # admin_http_port: None - # ntp_v3: None - # snmp_v2c_query_hosts_ipv4: 10.7.220.59 255.255.255.255, 10.7.220.0 255.255.255.0 - # ntp_sync_interval: None - # snmpv3_source_ip: None - # snmpv3_trap_rport: None - # admin_gui_theme: None - # syslog_filter: None - # ntp_auth_pwd: None - # provisioning_template: ansibleTest - # smtp_replyto: None - # provision_targets: None - # snmp_v2c_trap_port: 161 - # snmpv3_priv_proto: None - # admin_enable_fortiguard: None - # admin_switch_controller: None - # admin_language: None - # smtp_conn_sec: None - # mode: get - # smtp_source_ipv4: None - # snmpv3_status: None - # delete_provisioning_template: None - # snmp_v2c_trap_hosts_ipv4: 10.7.220.59 255.255.255.255, 10.7.220.60 255.255.255.255 - # admin_https_redirect: None - ################################################## - ################################################## - # snmpv3_security_level: auth-priv - # snmp_v2c_query_status: None - # provision_targets: None - # ntp_type: None - # dns_suffix: None - # snmpv3_queries: enable - # snmpv3_trap_status: enable - # snmp_v2c_name: None - # syslog_facility: syslog - # snmp_v2c_status: None - # smtp_validate_cert: None - # snmpv3_name: ansibleSNMPv3 - # snmp_v2c_id: None - # syslog_port: None - # ntp_server: None - # admin_https_port: None - # ntp_status: None - # syslog_server: None - # admin_switch_controller: None - # admin_timeout: None - # snmpv3_auth_proto: sha - # smtp_port: None - # snmpv3_priv_pwd: fortinet - # smtp_server: None - # syslog_enc_algorithm: disable - # snmp_v2c_query_hosts_ipv4: None - # smtp_username: None - # mode: get - # syslog_certificate: None - # admin_fortiguard_target: None - # snmpv3_query_port: 161 - # smtp_password: None - # adom: ansible - # snmpv3_notify_hosts: 10.7.220.59,10.7.220.60 - # syslog_mode: udp - # snmp_v2c_query_port: None - # snmp_v2c_trap_status: None - # snmp_status: enable - # syslog_status: None - # snmp_v2c_trap_hosts_ipv4: None - # admin_fortianalyzer_target: None - # snmp_v2c_trap_src_ipv4: None - # admin_http_port: None - # dns_secondary_ipv4: None - # syslog_filter: None - # snmpv3_source_ip: 0.0.0.0 - # snmpv3_trap_rport: 162 - # admin_gui_theme: None - # ntp_sync_interval: None - # ntp_auth_pwd: None - # provisioning_template: ansibleTest - # ntp_v3: None - # ntp_auth: None - # snmp_v2c_trap_port: None - # snmpv3_priv_proto: aes256 - # admin_enable_fortiguard: None - # dns_primary_ipv4: None - # admin_language: None - # smtp_conn_sec: None - # snmpv3_auth_pwd: fortinet - # smtp_source_ipv4: None - # snmpv3_status: enable - # delete_provisioning_template: None - # smtp_replyto: None - # admin_https_redirect: None - ################################################## - ################################################## - # snmpv3_security_level: None - # snmp_v2c_query_status: None - # ntp_type: fortiguard - # dns_suffix: None - # snmpv3_queries: None - # snmpv3_trap_status: None - # snmp_v2c_name: None - # syslog_facility: syslog - # snmp_v2c_status: None - # smtp_validate_cert: None - # snmpv3_name: None - # snmp_v2c_trap_src_ipv4: None - # syslog_port: None - # ntp_server: None - # admin_https_port: None - # ntp_status: enable - # syslog_server: None - # dns_primary_ipv4: None - # admin_timeout: None - # snmpv3_auth_proto: None - # smtp_port: None - # snmpv3_priv_pwd: None - # smtp_server: None - # syslog_enc_algorithm: disable - # dns_secondary_ipv4: None - # smtp_replyto: None - # smtp_username: None - # snmpv3_auth_pwd: None - # syslog_certificate: None - # admin_fortiguard_target: None - # snmpv3_query_port: None - # smtp_password: None - # adom: ansible - # snmpv3_notify_hosts: None - # syslog_mode: udp - # snmp_v2c_query_port: None - # snmp_v2c_trap_status: None - # snmp_status: None - # syslog_status: None - # admin_fortianalyzer_target: None - # ntp_auth: None - # snmp_v2c_id: None - # admin_http_port: None - # snmp_v2c_query_hosts_ipv4: None - # ntp_sync_interval: 60 - # snmpv3_source_ip: None - # snmpv3_trap_rport: None - # admin_gui_theme: None - # syslog_filter: None - # ntp_auth_pwd: None - # provisioning_template: ansibleTest - # snmp_v2c_trap_hosts_ipv4: None - # provision_targets: None - # snmp_v2c_trap_port: None - # snmpv3_priv_proto: None - # admin_enable_fortiguard: None - # admin_switch_controller: None - # admin_language: None - # smtp_conn_sec: None - # mode: get - # smtp_source_ipv4: None - # snmpv3_status: None - # delete_provisioning_template: None - # ntp_v3: None - # admin_https_redirect: None - ################################################## - ################################################## - # snmpv3_security_level: None - # snmp_v2c_query_status: None - # ntp_type: custom - # dns_suffix: None - # snmpv3_queries: None - # snmpv3_trap_status: None - # snmp_v2c_name: None - # syslog_facility: syslog - # snmp_v2c_status: None - # smtp_validate_cert: None - # snmpv3_name: None - # snmp_v2c_trap_src_ipv4: None - # syslog_port: None - # ntp_server: 10.7.220.32,10.7.220.1 - # admin_https_port: None - # ntp_status: enable - # syslog_server: None - # dns_primary_ipv4: None - # admin_timeout: None - # snmpv3_auth_proto: None - # smtp_port: None - # snmpv3_priv_pwd: None - # smtp_server: None - # syslog_enc_algorithm: disable - # dns_secondary_ipv4: None - # smtp_username: None - # snmpv3_auth_pwd: None - # syslog_certificate: None - # admin_fortiguard_target: None - # snmpv3_query_port: None - # smtp_password: None - # adom: ansible - # snmpv3_notify_hosts: None - # syslog_mode: udp - # snmp_v2c_query_port: None - # snmp_v2c_trap_status: None - # snmp_status: None - # syslog_status: None - # admin_fortianalyzer_target: None - # ntp_auth: enable - # snmp_v2c_id: None - # admin_http_port: None - # ntp_v3: None - # snmp_v2c_query_hosts_ipv4: None - # ntp_sync_interval: 60 - # snmpv3_source_ip: None - # snmpv3_trap_rport: None - # admin_gui_theme: None - # syslog_filter: None - # ntp_auth_pwd: fortinet - # provisioning_template: ansibleTest - # smtp_replyto: None - # provision_targets: None - # snmp_v2c_trap_port: None - # snmpv3_priv_proto: None - # admin_enable_fortiguard: None - # admin_switch_controller: None - # admin_language: None - # smtp_conn_sec: None - # mode: get - # smtp_source_ipv4: None - # snmpv3_status: None - # delete_provisioning_template: None - # snmp_v2c_trap_hosts_ipv4: None - # admin_https_redirect: None - ################################################## - ################################################## - # snmpv3_security_level: None - # snmp_v2c_query_status: None - # ntp_type: None - # dns_suffix: None - # snmpv3_queries: None - # snmpv3_trap_status: None - # snmp_v2c_name: None - # syslog_facility: syslog - # snmp_v2c_status: None - # smtp_validate_cert: None - # snmpv3_name: None - # snmp_v2c_trap_src_ipv4: None - # syslog_port: None - # ntp_server: None - # admin_https_port: 4433 - # ntp_status: None - # syslog_server: None - # dns_primary_ipv4: None - # admin_timeout: 60 - # snmpv3_auth_proto: None - # smtp_port: None - # snmpv3_priv_pwd: None - # smtp_server: None - # syslog_enc_algorithm: disable - # dns_secondary_ipv4: None - # smtp_replyto: None - # smtp_username: None - # snmpv3_auth_pwd: None - # syslog_certificate: None - # admin_fortiguard_target: None - # snmpv3_query_port: None - # smtp_password: None - # adom: ansible - # snmpv3_notify_hosts: None - # syslog_mode: udp - # snmp_v2c_query_port: None - # snmp_v2c_trap_status: None - # snmp_status: None - # syslog_status: None - # admin_fortianalyzer_target: 10.7.220.38 - # ntp_auth: None - # snmp_v2c_id: None - # admin_http_port: 8080 - # snmp_v2c_query_hosts_ipv4: None - # ntp_sync_interval: None - # snmpv3_source_ip: None - # snmpv3_trap_rport: None - # admin_gui_theme: blue - # syslog_filter: None - # ntp_auth_pwd: None - # provisioning_template: ansibleTest - # snmp_v2c_trap_hosts_ipv4: None - # provision_targets: None - # snmp_v2c_trap_port: None - # snmpv3_priv_proto: None - # admin_enable_fortiguard: this-fmg - # admin_switch_controller: enable - # admin_language: english - # smtp_conn_sec: None - # mode: get - # smtp_source_ipv4: None - # snmpv3_status: None - # delete_provisioning_template: None - # ntp_v3: None - # admin_https_redirect: enable - ################################################## - ################################################## - # snmpv3_security_level: None - # snmp_v2c_query_status: None - # ntp_type: None - # dns_suffix: None - # snmpv3_queries: None - # snmpv3_trap_status: None - # snmp_v2c_name: None - # syslog_facility: syslog - # snmp_v2c_status: None - # smtp_validate_cert: disable - # snmpv3_name: None - # snmp_v2c_trap_src_ipv4: None - # syslog_port: None - # ntp_server: None - # admin_https_port: None - # ntp_status: None - # syslog_server: None - # dns_primary_ipv4: None - # admin_timeout: None - # snmpv3_auth_proto: None - # smtp_port: 25 - # snmpv3_priv_pwd: None - # smtp_server: 10.7.220.32 - # syslog_enc_algorithm: disable - # dns_secondary_ipv4: None - # smtp_username: ansible - # snmpv3_auth_pwd: None - # syslog_certificate: None - # admin_fortiguard_target: None - # snmpv3_query_port: None - # smtp_password: fortinet - # adom: ansible - # snmpv3_notify_hosts: None - # syslog_mode: udp - # snmp_v2c_query_port: None - # snmp_v2c_trap_status: None - # snmp_status: None - # syslog_status: None - # admin_fortianalyzer_target: None - # ntp_auth: None - # snmp_v2c_id: None - # admin_http_port: None - # ntp_v3: None - # snmp_v2c_query_hosts_ipv4: None - # ntp_sync_interval: None - # snmpv3_source_ip: None - # snmpv3_trap_rport: None - # admin_gui_theme: None - # syslog_filter: None - # ntp_auth_pwd: None - # provisioning_template: ansibleTest - # smtp_replyto: ansible@do-not-reply.com - # provision_targets: None - # snmp_v2c_trap_port: None - # snmpv3_priv_proto: None - # admin_enable_fortiguard: None - # admin_switch_controller: None - # admin_language: None - # smtp_conn_sec: starttls - # mode: get - # smtp_source_ipv4: 0.0.0.0 - # snmpv3_status: None - # delete_provisioning_template: None - # snmp_v2c_trap_hosts_ipv4: None - # admin_https_redirect: None - ################################################## - ################################################## - # snmpv3_security_level: None - # snmp_v2c_query_status: None - # ntp_type: None - # dns_suffix: ansible.local - # snmpv3_queries: None - # snmpv3_trap_status: None - # snmp_v2c_name: None - # syslog_facility: syslog - # snmp_v2c_status: None - # smtp_validate_cert: None - # snmpv3_name: None - # snmp_v2c_trap_src_ipv4: None - # syslog_port: None - # ntp_server: None - # admin_https_port: None - # ntp_status: None - # syslog_server: None - # dns_primary_ipv4: 8.8.8.8 - # admin_timeout: None - # snmpv3_auth_proto: None - # smtp_port: None - # snmpv3_priv_pwd: None - # smtp_server: None - # syslog_enc_algorithm: disable - # dns_secondary_ipv4: 4.4.4.4 - # smtp_replyto: None - # smtp_username: None - # snmpv3_auth_pwd: None - # syslog_certificate: None - # admin_fortiguard_target: None - # snmpv3_query_port: None - # smtp_password: None - # adom: ansible - # snmpv3_notify_hosts: None - # syslog_mode: udp - # snmp_v2c_query_port: None - # snmp_v2c_trap_status: None - # snmp_status: None - # syslog_status: None - # admin_fortianalyzer_target: None - # ntp_auth: None - # snmp_v2c_id: None - # admin_http_port: None - # snmp_v2c_query_hosts_ipv4: None - # ntp_sync_interval: None - # snmpv3_source_ip: None - # snmpv3_trap_rport: None - # admin_gui_theme: None - # syslog_filter: None - # ntp_auth_pwd: None - # provisioning_template: ansibleTest - # snmp_v2c_trap_hosts_ipv4: None - # provision_targets: None - # snmp_v2c_trap_port: None - # snmpv3_priv_proto: None - # admin_enable_fortiguard: None - # admin_switch_controller: None - # admin_language: None - # smtp_conn_sec: None - # mode: get - # smtp_source_ipv4: None - # snmpv3_status: None - # delete_provisioning_template: None - # ntp_v3: None - # admin_https_redirect: None - ################################################## - ################################################## - # snmpv3_security_level: None - # snmp_v2c_query_status: None - # ntp_type: None - # dns_suffix: None - # snmpv3_queries: None - # snmpv3_trap_status: None - # snmp_v2c_name: None - # syslog_facility: syslog - # snmp_v2c_status: None - # smtp_validate_cert: None - # snmpv3_name: None - # snmp_v2c_trap_src_ipv4: None - # syslog_port: None - # ntp_server: None - # admin_https_port: None - # ntp_status: None - # syslog_server: None - # dns_primary_ipv4: None - # admin_timeout: None - # snmpv3_auth_proto: None - # smtp_port: None - # snmpv3_priv_pwd: None - # smtp_server: None - # syslog_enc_algorithm: disable - # dns_secondary_ipv4: None - # smtp_username: None - # snmpv3_auth_pwd: None - # syslog_certificate: None - # admin_fortiguard_target: None - # snmpv3_query_port: None - # smtp_password: None - # adom: ansible - # snmpv3_notify_hosts: None - # syslog_mode: udp - # snmp_v2c_query_port: None - # snmp_v2c_trap_status: None - # snmp_status: None - # syslog_status: None - # admin_fortianalyzer_target: None - # ntp_auth: None - # snmp_v2c_id: None - # admin_http_port: None - # ntp_v3: None - # snmp_v2c_query_hosts_ipv4: None - # ntp_sync_interval: None - # snmpv3_source_ip: None - # snmpv3_trap_rport: None - # admin_gui_theme: None - # syslog_filter: None - # ntp_auth_pwd: None - # provisioning_template: ansibleTest - # smtp_replyto: None - # provision_targets: FGT1,FGT2 - # snmp_v2c_trap_port: None - # snmpv3_priv_proto: None - # admin_enable_fortiguard: None - # admin_switch_controller: None - # admin_language: None - # smtp_conn_sec: None - # mode: get - # smtp_source_ipv4: None - # snmpv3_status: None - # delete_provisioning_template: None - # snmp_v2c_trap_hosts_ipv4: None - # admin_https_redirect: None - ################################################## - - # Test using fixture 1 # - output = fmgr_device_provision_template.get_devprof(fmg_instance, fixture_data[0]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True - # Test using fixture 2 # - output = fmgr_device_provision_template.get_devprof(fmg_instance, fixture_data[1]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True - # Test using fixture 3 # - output = fmgr_device_provision_template.get_devprof(fmg_instance, fixture_data[2]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True - # Test using fixture 4 # - output = fmgr_device_provision_template.get_devprof(fmg_instance, fixture_data[3]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True - # Test using fixture 5 # - output = fmgr_device_provision_template.get_devprof(fmg_instance, fixture_data[4]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True - # Test using fixture 6 # - output = fmgr_device_provision_template.get_devprof(fmg_instance, fixture_data[5]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True - # Test using fixture 7 # - output = fmgr_device_provision_template.get_devprof(fmg_instance, fixture_data[6]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True - # Test using fixture 8 # - output = fmgr_device_provision_template.get_devprof(fmg_instance, fixture_data[7]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True - # Test using fixture 9 # - output = fmgr_device_provision_template.get_devprof(fmg_instance, fixture_data[8]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True - # Test using fixture 10 # - output = fmgr_device_provision_template.get_devprof(fmg_instance, fixture_data[9]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True - - -def test_set_devprof(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # snmpv3_security_level: None - # snmp_v2c_query_status: None - # smtp_port: None - # ntp_type: None - # dns_suffix: None - # snmpv3_queries: None - # snmpv3_trap_status: None - # snmp_v2c_name: None - # syslog_facility: syslog - # snmp_v2c_status: None - # smtp_validate_cert: None - # snmpv3_name: None - # snmp_v2c_trap_src_ipv4: None - # syslog_port: None - # ntp_server: None - # admin_https_port: None - # ntp_status: None - # syslog_server: None - # dns_primary_ipv4: None - # admin_timeout: None - # snmpv3_auth_proto: None - # ntp_auth: None - # snmpv3_priv_pwd: None - # smtp_server: None - # syslog_enc_algorithm: disable - # dns_secondary_ipv4: None - # smtp_replyto: None - # smtp_username: None - # snmpv3_auth_pwd: None - # syslog_certificate: None - # admin_fortiguard_target: None - # snmpv3_query_port: None - # smtp_password: None - # adom: ansible - # snmpv3_notify_hosts: None - # syslog_mode: udp - # snmp_v2c_query_port: None - # snmp_v2c_trap_status: None - # snmp_status: None - # syslog_status: None - # admin_fortianalyzer_target: None - # snmp_v2c_id: None - # admin_http_port: None - # snmp_v2c_query_hosts_ipv4: None - # ntp_sync_interval: None - # snmpv3_source_ip: None - # snmpv3_trap_rport: None - # admin_gui_theme: None - # syslog_filter: None - # ntp_auth_pwd: None - # provisioning_template: None - # snmp_v2c_trap_hosts_ipv4: None - # provision_targets: None - # snmp_v2c_trap_port: None - # snmpv3_priv_proto: None - # admin_enable_fortiguard: None - # admin_switch_controller: None - # admin_language: None - # smtp_conn_sec: None - # mode: delete - # smtp_source_ipv4: None - # snmpv3_status: None - # delete_provisioning_template: ansibleTest - # ntp_v3: None - # admin_https_redirect: None - ################################################## - - # Test using fixture 1 # - output = fmgr_device_provision_template.set_devprof(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - - -def test_set_devprof_scope(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # snmpv3_security_level: None - # snmp_v2c_query_status: None - # provision_targets: FGT1,FGT2 - # ntp_type: None - # dns_suffix: None - # snmpv3_queries: None - # snmpv3_trap_status: None - # snmp_v2c_name: None - # syslog_facility: syslog - # snmp_v2c_status: None - # smtp_validate_cert: None - # snmpv3_name: None - # snmp_v2c_id: None - # syslog_port: None - # ntp_server: None - # admin_https_port: None - # ntp_status: None - # syslog_server: None - # admin_switch_controller: None - # admin_timeout: None - # snmpv3_auth_proto: None - # smtp_port: None - # snmpv3_priv_pwd: None - # smtp_server: None - # syslog_enc_algorithm: disable - # snmp_v2c_query_hosts_ipv4: None - # smtp_username: None - # mode: set - # syslog_certificate: None - # admin_fortiguard_target: None - # snmpv3_query_port: None - # smtp_password: None - # adom: ansible - # snmpv3_notify_hosts: None - # syslog_mode: udp - # snmp_v2c_query_port: None - # snmp_v2c_trap_status: None - # snmp_status: None - # syslog_status: None - # admin_https_redirect: None - # admin_fortianalyzer_target: None - # snmp_v2c_trap_src_ipv4: None - # admin_http_port: None - # dns_secondary_ipv4: None - # syslog_filter: None - # snmpv3_source_ip: None - # snmpv3_trap_rport: None - # admin_gui_theme: None - # ntp_sync_interval: None - # ntp_auth_pwd: None - # provisioning_template: ansibleTest - # smtp_replyto: None - # ntp_auth: None - # snmp_v2c_trap_port: None - # snmpv3_priv_proto: None - # admin_enable_fortiguard: None - # dns_primary_ipv4: None - # admin_language: None - # smtp_conn_sec: None - # snmpv3_auth_pwd: None - # smtp_source_ipv4: None - # snmpv3_status: None - # delete_provisioning_template: None - # snmp_v2c_trap_hosts_ipv4: None - # ntp_v3: None - ################################################## - - # Test using fixture 1 # - output = fmgr_device_provision_template.set_devprof_scope(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - - -def test_set_devprof_snmp(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # snmpv3_security_level: None - # snmp_v2c_query_status: None - # provision_targets: None - # ntp_type: None - # dns_suffix: None - # snmpv3_queries: None - # snmpv3_trap_status: None - # snmp_v2c_name: None - # syslog_facility: syslog - # snmp_v2c_status: None - # smtp_validate_cert: None - # snmpv3_name: None - # snmp_v2c_id: None - # syslog_port: None - # ntp_server: None - # admin_https_port: None - # ntp_status: None - # syslog_server: None - # admin_switch_controller: None - # admin_timeout: None - # snmpv3_auth_proto: None - # smtp_port: None - # snmpv3_priv_pwd: None - # smtp_server: None - # syslog_enc_algorithm: disable - # snmp_v2c_query_hosts_ipv4: None - # smtp_username: None - # mode: set - # syslog_certificate: None - # admin_fortiguard_target: None - # snmpv3_query_port: None - # smtp_password: None - # adom: ansible - # snmpv3_notify_hosts: None - # syslog_mode: udp - # snmp_v2c_query_port: None - # snmp_v2c_trap_status: None - # snmp_status: enable - # syslog_status: None - # admin_https_redirect: None - # admin_fortianalyzer_target: None - # snmp_v2c_trap_src_ipv4: None - # admin_http_port: None - # dns_secondary_ipv4: None - # syslog_filter: None - # snmpv3_source_ip: None - # snmpv3_trap_rport: None - # admin_gui_theme: None - # ntp_sync_interval: None - # ntp_auth_pwd: None - # provisioning_template: ansibleTest - # smtp_replyto: None - # ntp_auth: None - # snmp_v2c_trap_port: None - # snmpv3_priv_proto: None - # admin_enable_fortiguard: None - # dns_primary_ipv4: None - # admin_language: None - # smtp_conn_sec: None - # snmpv3_auth_pwd: None - # smtp_source_ipv4: None - # snmpv3_status: None - # delete_provisioning_template: None - # snmp_v2c_trap_hosts_ipv4: None - # ntp_v3: None - ################################################## - ################################################## - # snmpv3_security_level: None - # snmp_v2c_query_status: enable - # provision_targets: None - # ntp_type: None - # dns_suffix: None - # snmpv3_queries: None - # snmpv3_trap_status: None - # snmp_v2c_name: ansibleV2c - # syslog_facility: syslog - # snmp_v2c_status: enable - # smtp_validate_cert: None - # snmpv3_name: None - # snmp_v2c_id: 1 - # syslog_port: None - # ntp_server: None - # admin_https_port: None - # ntp_status: None - # syslog_server: None - # admin_switch_controller: None - # admin_timeout: None - # snmpv3_auth_proto: None - # smtp_port: None - # snmpv3_priv_pwd: None - # smtp_server: None - # syslog_enc_algorithm: disable - # snmp_v2c_query_hosts_ipv4: 10.7.220.59 255.255.255.255, 10.7.220.0 255.255.255.0 - # smtp_username: None - # mode: set - # syslog_certificate: None - # admin_fortiguard_target: None - # snmpv3_query_port: None - # smtp_password: None - # adom: ansible - # snmpv3_notify_hosts: None - # syslog_mode: udp - # snmp_v2c_query_port: 162 - # snmp_v2c_trap_status: enable - # snmp_status: enable - # syslog_status: None - # admin_https_redirect: None - # admin_fortianalyzer_target: None - # snmp_v2c_trap_src_ipv4: 10.7.220.41 - # admin_http_port: None - # dns_secondary_ipv4: None - # syslog_filter: None - # snmpv3_source_ip: None - # snmpv3_trap_rport: None - # admin_gui_theme: None - # ntp_sync_interval: None - # ntp_auth_pwd: None - # provisioning_template: ansibleTest - # smtp_replyto: None - # ntp_auth: None - # snmp_v2c_trap_port: 161 - # snmpv3_priv_proto: None - # admin_enable_fortiguard: None - # dns_primary_ipv4: None - # admin_language: None - # smtp_conn_sec: None - # snmpv3_auth_pwd: None - # smtp_source_ipv4: None - # snmpv3_status: None - # delete_provisioning_template: None - # snmp_v2c_trap_hosts_ipv4: 10.7.220.59 255.255.255.255, 10.7.220.60 255.255.255.255 - # ntp_v3: None - ################################################## - ################################################## - # snmpv3_security_level: auth-priv - # snmp_v2c_query_status: None - # ntp_type: None - # dns_suffix: None - # snmpv3_queries: enable - # snmpv3_trap_status: enable - # snmp_v2c_name: None - # syslog_facility: syslog - # snmp_v2c_status: None - # smtp_validate_cert: None - # snmpv3_name: ansibleSNMPv3 - # snmp_v2c_trap_src_ipv4: None - # syslog_port: None - # ntp_server: None - # admin_https_port: None - # ntp_status: None - # syslog_server: None - # dns_primary_ipv4: None - # admin_timeout: None - # snmpv3_auth_proto: sha - # smtp_port: None - # snmpv3_priv_pwd: fortinet - # smtp_server: None - # syslog_enc_algorithm: disable - # dns_secondary_ipv4: None - # smtp_username: None - # snmpv3_auth_pwd: fortinet - # syslog_certificate: None - # admin_fortiguard_target: None - # snmpv3_query_port: 161 - # smtp_password: None - # adom: ansible - # snmpv3_notify_hosts: 10.7.220.59,10.7.220.60 - # syslog_mode: udp - # snmp_v2c_query_port: None - # snmp_v2c_trap_status: None - # snmp_status: enable - # syslog_status: None - # admin_fortianalyzer_target: None - # ntp_auth: None - # snmp_v2c_id: None - # admin_http_port: None - # ntp_v3: None - # snmp_v2c_query_hosts_ipv4: None - # ntp_sync_interval: None - # snmpv3_source_ip: 0.0.0.0 - # snmpv3_trap_rport: 162 - # admin_gui_theme: None - # syslog_filter: None - # ntp_auth_pwd: None - # provisioning_template: ansibleTest - # smtp_replyto: None - # provision_targets: None - # snmp_v2c_trap_port: None - # snmpv3_priv_proto: aes256 - # admin_enable_fortiguard: None - # admin_switch_controller: None - # admin_language: None - # smtp_conn_sec: None - # mode: set - # smtp_source_ipv4: None - # snmpv3_status: enable - # delete_provisioning_template: None - # snmp_v2c_trap_hosts_ipv4: None - # admin_https_redirect: None - ################################################## - - # Test using fixture 1 # - output = fmgr_device_provision_template.set_devprof_snmp(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 2 # - output = fmgr_device_provision_template.set_devprof_snmp(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 3 # - output = fmgr_device_provision_template.set_devprof_snmp(fmg_instance, fixture_data[2]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - - -def test_set_devprof_snmp_v2c(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # snmpv3_security_level: None - # snmp_v2c_query_status: enable - # ntp_type: None - # dns_suffix: None - # snmpv3_queries: None - # snmpv3_trap_status: None - # snmp_v2c_name: ansibleV2c - # syslog_facility: syslog - # snmp_v2c_status: enable - # smtp_validate_cert: None - # snmpv3_name: None - # snmp_v2c_trap_src_ipv4: 10.7.220.41 - # syslog_port: None - # ntp_server: None - # admin_https_port: None - # ntp_status: None - # syslog_server: None - # dns_primary_ipv4: None - # admin_timeout: None - # snmpv3_auth_proto: None - # smtp_port: None - # snmpv3_priv_pwd: None - # smtp_server: None - # syslog_enc_algorithm: disable - # dns_secondary_ipv4: None - # smtp_replyto: None - # smtp_username: None - # snmpv3_auth_pwd: None - # syslog_certificate: None - # admin_fortiguard_target: None - # snmpv3_query_port: None - # smtp_password: None - # adom: ansible - # snmpv3_notify_hosts: None - # syslog_mode: udp - # snmp_v2c_query_port: 162 - # snmp_v2c_trap_status: enable - # snmp_status: enable - # syslog_status: None - # admin_fortianalyzer_target: None - # ntp_auth: None - # snmp_v2c_id: 1 - # admin_http_port: None - # snmp_v2c_query_hosts_ipv4: 10.7.220.59 255.255.255.255, 10.7.220.0 255.255.255.0 - # ntp_sync_interval: None - # snmpv3_source_ip: None - # snmpv3_trap_rport: None - # admin_gui_theme: None - # syslog_filter: None - # ntp_auth_pwd: None - # provisioning_template: ansibleTest - # snmp_v2c_trap_hosts_ipv4: 10.7.220.59 255.255.255.255, 10.7.220.60 255.255.255.255 - # provision_targets: None - # snmp_v2c_trap_port: 161 - # snmpv3_priv_proto: None - # admin_enable_fortiguard: None - # admin_switch_controller: None - # admin_language: None - # smtp_conn_sec: None - # mode: set - # smtp_source_ipv4: None - # snmpv3_status: None - # delete_provisioning_template: None - # ntp_v3: None - # admin_https_redirect: None - ################################################## - - # Test using fixture 1 # - output = fmgr_device_provision_template.set_devprof_snmp_v2c(fmg_instance, fixture_data[0]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True - - -def test_set_devprof_snmp_v3(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # snmpv3_security_level: auth-priv - # snmp_v2c_query_status: None - # provision_targets: None - # ntp_type: None - # dns_suffix: None - # snmpv3_queries: enable - # snmpv3_trap_status: enable - # snmp_v2c_name: None - # syslog_facility: syslog - # snmp_v2c_status: None - # smtp_validate_cert: None - # snmpv3_name: ansibleSNMPv3 - # snmp_v2c_id: None - # syslog_port: None - # ntp_server: None - # admin_https_port: None - # ntp_status: None - # syslog_server: None - # admin_switch_controller: None - # admin_timeout: None - # snmpv3_auth_proto: sha - # smtp_port: None - # snmpv3_priv_pwd: fortinet - # smtp_server: None - # syslog_enc_algorithm: disable - # snmp_v2c_query_hosts_ipv4: None - # smtp_username: None - # mode: set - # syslog_certificate: None - # admin_fortiguard_target: None - # snmpv3_query_port: 161 - # smtp_password: None - # adom: ansible - # snmpv3_notify_hosts: 10.7.220.59,10.7.220.60 - # syslog_mode: udp - # snmp_v2c_query_port: None - # snmp_v2c_trap_status: None - # snmp_status: enable - # syslog_status: None - # admin_https_redirect: None - # admin_fortianalyzer_target: None - # snmp_v2c_trap_src_ipv4: None - # admin_http_port: None - # dns_secondary_ipv4: None - # syslog_filter: None - # snmpv3_source_ip: 0.0.0.0 - # snmpv3_trap_rport: 162 - # admin_gui_theme: None - # ntp_sync_interval: None - # ntp_auth_pwd: None - # provisioning_template: ansibleTest - # smtp_replyto: None - # ntp_auth: None - # snmp_v2c_trap_port: None - # snmpv3_priv_proto: aes256 - # admin_enable_fortiguard: None - # dns_primary_ipv4: None - # admin_language: None - # smtp_conn_sec: None - # snmpv3_auth_pwd: fortinet - # smtp_source_ipv4: None - # snmpv3_status: enable - # delete_provisioning_template: None - # snmp_v2c_trap_hosts_ipv4: None - # ntp_v3: None - ################################################## - - # Test using fixture 1 # - output = fmgr_device_provision_template.set_devprof_snmp_v3(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - - -def test_set_devprof_syslog(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # snmpv3_security_level: None - # snmp_v2c_query_status: None - # provision_targets: None - # ntp_type: None - # dns_suffix: None - # snmpv3_queries: None - # snmpv3_trap_status: None - # snmp_v2c_name: None - # syslog_facility: kernel - # snmp_v2c_status: None - # smtp_validate_cert: None - # snmpv3_name: None - # snmp_v2c_id: None - # syslog_port: 514 - # ntp_server: None - # admin_https_port: None - # ntp_status: None - # syslog_server: 10.7.220.59 - # admin_switch_controller: None - # admin_timeout: None - # snmpv3_auth_proto: None - # smtp_port: None - # snmpv3_priv_pwd: None - # smtp_server: None - # syslog_enc_algorithm: disable - # snmp_v2c_query_hosts_ipv4: None - # smtp_username: None - # mode: set - # syslog_certificate: None - # admin_fortiguard_target: None - # snmpv3_query_port: None - # smtp_password: None - # adom: ansible - # snmpv3_notify_hosts: None - # syslog_mode: udp - # snmp_v2c_query_port: None - # snmp_v2c_trap_status: None - # snmp_status: None - # syslog_status: enable - # snmp_v2c_trap_hosts_ipv4: None - # admin_fortianalyzer_target: None - # snmp_v2c_trap_src_ipv4: None - # admin_http_port: None - # dns_secondary_ipv4: None - # syslog_filter: critical - # snmpv3_source_ip: None - # snmpv3_trap_rport: None - # admin_gui_theme: None - # ntp_sync_interval: None - # ntp_auth_pwd: None - # provisioning_template: ansibleTest - # ntp_v3: None - # ntp_auth: None - # snmp_v2c_trap_port: None - # snmpv3_priv_proto: None - # admin_enable_fortiguard: None - # dns_primary_ipv4: None - # admin_language: None - # smtp_conn_sec: None - # snmpv3_auth_pwd: None - # smtp_source_ipv4: None - # snmpv3_status: None - # delete_provisioning_template: None - # smtp_replyto: None - # admin_https_redirect: None - ################################################## - - # Test using fixture 1 # - output = fmgr_device_provision_template.set_devprof_syslog(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - - -def test_set_devprof_ntp(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # snmpv3_security_level: None - # snmp_v2c_query_status: None - # provision_targets: None - # ntp_type: fortiguard - # dns_suffix: None - # snmpv3_queries: None - # snmpv3_trap_status: None - # snmp_v2c_name: None - # syslog_facility: syslog - # snmp_v2c_status: None - # smtp_validate_cert: None - # snmpv3_name: None - # snmp_v2c_id: None - # syslog_port: None - # ntp_server: None - # admin_https_port: None - # ntp_status: enable - # syslog_server: None - # admin_switch_controller: None - # admin_timeout: None - # snmpv3_auth_proto: None - # smtp_port: None - # snmpv3_priv_pwd: None - # smtp_server: None - # syslog_enc_algorithm: disable - # snmp_v2c_query_hosts_ipv4: None - # smtp_username: None - # mode: set - # syslog_certificate: None - # admin_fortiguard_target: None - # snmpv3_query_port: None - # smtp_password: None - # adom: ansible - # snmpv3_notify_hosts: None - # syslog_mode: udp - # snmp_v2c_query_port: None - # snmp_v2c_trap_status: None - # snmp_status: None - # syslog_status: None - # snmp_v2c_trap_hosts_ipv4: None - # admin_fortianalyzer_target: None - # snmp_v2c_trap_src_ipv4: None - # admin_http_port: None - # dns_secondary_ipv4: None - # syslog_filter: None - # snmpv3_source_ip: None - # snmpv3_trap_rport: None - # admin_gui_theme: None - # ntp_sync_interval: 60 - # ntp_auth_pwd: None - # provisioning_template: ansibleTest - # ntp_v3: None - # ntp_auth: None - # snmp_v2c_trap_port: None - # snmpv3_priv_proto: None - # admin_enable_fortiguard: None - # dns_primary_ipv4: None - # admin_language: None - # smtp_conn_sec: None - # snmpv3_auth_pwd: None - # smtp_source_ipv4: None - # snmpv3_status: None - # delete_provisioning_template: None - # smtp_replyto: None - # admin_https_redirect: None - ################################################## - ################################################## - # snmpv3_security_level: None - # snmp_v2c_query_status: None - # provision_targets: None - # ntp_type: custom - # dns_suffix: None - # snmpv3_queries: None - # snmpv3_trap_status: None - # snmp_v2c_name: None - # syslog_facility: syslog - # snmp_v2c_status: None - # smtp_validate_cert: None - # snmpv3_name: None - # snmp_v2c_id: None - # syslog_port: None - # ntp_server: 10.7.220.32,10.7.220.1 - # admin_https_port: None - # ntp_status: enable - # syslog_server: None - # admin_switch_controller: None - # admin_timeout: None - # snmpv3_auth_proto: None - # smtp_port: None - # snmpv3_priv_pwd: None - # smtp_server: None - # syslog_enc_algorithm: disable - # snmp_v2c_query_hosts_ipv4: None - # smtp_username: None - # mode: set - # syslog_certificate: None - # admin_fortiguard_target: None - # snmpv3_query_port: None - # smtp_password: None - # adom: ansible - # snmpv3_notify_hosts: None - # syslog_mode: udp - # snmp_v2c_query_port: None - # snmp_v2c_trap_status: None - # snmp_status: None - # syslog_status: None - # admin_https_redirect: None - # admin_fortianalyzer_target: None - # snmp_v2c_trap_src_ipv4: None - # admin_http_port: None - # dns_secondary_ipv4: None - # syslog_filter: None - # snmpv3_source_ip: None - # snmpv3_trap_rport: None - # admin_gui_theme: None - # ntp_sync_interval: 60 - # ntp_auth_pwd: fortinet - # provisioning_template: ansibleTest - # smtp_replyto: None - # ntp_auth: enable - # snmp_v2c_trap_port: None - # snmpv3_priv_proto: None - # admin_enable_fortiguard: None - # dns_primary_ipv4: None - # admin_language: None - # smtp_conn_sec: None - # snmpv3_auth_pwd: None - # smtp_source_ipv4: None - # snmpv3_status: None - # delete_provisioning_template: None - # snmp_v2c_trap_hosts_ipv4: None - # ntp_v3: None - ################################################## - - # Test using fixture 1 # - output = fmgr_device_provision_template.set_devprof_ntp(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 2 # - output = fmgr_device_provision_template.set_devprof_ntp(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - - -def test_set_devprof_admin(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # snmpv3_security_level: None - # snmp_v2c_query_status: None - # provision_targets: None - # ntp_type: None - # dns_suffix: None - # snmpv3_queries: None - # snmpv3_trap_status: None - # snmp_v2c_name: None - # syslog_facility: syslog - # snmp_v2c_status: None - # smtp_validate_cert: None - # snmpv3_name: None - # snmp_v2c_id: None - # syslog_port: None - # ntp_server: None - # admin_https_port: 4433 - # ntp_status: None - # syslog_server: None - # admin_switch_controller: enable - # admin_timeout: 60 - # snmpv3_auth_proto: None - # smtp_port: None - # snmpv3_priv_pwd: None - # smtp_server: None - # syslog_enc_algorithm: disable - # snmp_v2c_query_hosts_ipv4: None - # smtp_username: None - # mode: set - # syslog_certificate: None - # admin_fortiguard_target: None - # snmpv3_query_port: None - # smtp_password: None - # adom: ansible - # snmpv3_notify_hosts: None - # syslog_mode: udp - # snmp_v2c_query_port: None - # snmp_v2c_trap_status: None - # snmp_status: None - # syslog_status: None - # snmp_v2c_trap_hosts_ipv4: None - # admin_fortianalyzer_target: 10.7.220.38 - # snmp_v2c_trap_src_ipv4: None - # admin_http_port: 8080 - # dns_secondary_ipv4: None - # syslog_filter: None - # snmpv3_source_ip: None - # snmpv3_trap_rport: None - # admin_gui_theme: blue - # ntp_sync_interval: None - # ntp_auth_pwd: None - # provisioning_template: ansibleTest - # ntp_v3: None - # ntp_auth: None - # snmp_v2c_trap_port: None - # snmpv3_priv_proto: None - # admin_enable_fortiguard: this-fmg - # dns_primary_ipv4: None - # admin_language: english - # smtp_conn_sec: None - # snmpv3_auth_pwd: None - # smtp_source_ipv4: None - # snmpv3_status: None - # delete_provisioning_template: None - # smtp_replyto: None - # admin_https_redirect: enable - ################################################## - - # Test using fixture 1 # - output = fmgr_device_provision_template.set_devprof_admin(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - - -def test_set_devprof_smtp(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # snmpv3_security_level: None - # snmp_v2c_query_status: None - # provision_targets: None - # ntp_type: None - # dns_suffix: None - # snmpv3_queries: None - # snmpv3_trap_status: None - # snmp_v2c_name: None - # syslog_facility: syslog - # snmp_v2c_status: None - # smtp_validate_cert: disable - # snmpv3_name: None - # snmp_v2c_id: None - # syslog_port: None - # ntp_server: None - # admin_https_port: None - # ntp_status: None - # syslog_server: None - # admin_switch_controller: None - # admin_timeout: None - # snmpv3_auth_proto: None - # smtp_port: 25 - # snmpv3_priv_pwd: None - # smtp_server: 10.7.220.32 - # syslog_enc_algorithm: disable - # snmp_v2c_query_hosts_ipv4: None - # smtp_username: ansible - # mode: set - # syslog_certificate: None - # admin_fortiguard_target: None - # snmpv3_query_port: None - # smtp_password: fortinet - # adom: ansible - # snmpv3_notify_hosts: None - # syslog_mode: udp - # snmp_v2c_query_port: None - # snmp_v2c_trap_status: None - # snmp_status: None - # syslog_status: None - # admin_https_redirect: None - # admin_fortianalyzer_target: None - # snmp_v2c_trap_src_ipv4: None - # admin_http_port: None - # dns_secondary_ipv4: None - # syslog_filter: None - # snmpv3_source_ip: None - # snmpv3_trap_rport: None - # admin_gui_theme: None - # ntp_sync_interval: None - # ntp_auth_pwd: None - # provisioning_template: ansibleTest - # smtp_replyto: ansible@do-not-reply.com - # ntp_auth: None - # snmp_v2c_trap_port: None - # snmpv3_priv_proto: None - # admin_enable_fortiguard: None - # dns_primary_ipv4: None - # admin_language: None - # smtp_conn_sec: starttls - # snmpv3_auth_pwd: None - # smtp_source_ipv4: 0.0.0.0 - # snmpv3_status: None - # delete_provisioning_template: None - # snmp_v2c_trap_hosts_ipv4: None - # ntp_v3: None - ################################################## - - # Test using fixture 1 # - output = fmgr_device_provision_template.set_devprof_smtp(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - - -def test_set_devprof_dns(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # snmpv3_security_level: None - # snmp_v2c_query_status: None - # provision_targets: None - # ntp_type: None - # dns_suffix: ansible.local - # snmpv3_queries: None - # snmpv3_trap_status: None - # snmp_v2c_name: None - # syslog_facility: syslog - # snmp_v2c_status: None - # smtp_validate_cert: None - # snmpv3_name: None - # snmp_v2c_id: None - # syslog_port: None - # ntp_server: None - # admin_https_port: None - # ntp_status: None - # syslog_server: None - # admin_switch_controller: None - # admin_timeout: None - # snmpv3_auth_proto: None - # smtp_port: None - # snmpv3_priv_pwd: None - # smtp_server: None - # syslog_enc_algorithm: disable - # snmp_v2c_query_hosts_ipv4: None - # smtp_username: None - # mode: set - # syslog_certificate: None - # admin_fortiguard_target: None - # snmpv3_query_port: None - # smtp_password: None - # adom: ansible - # snmpv3_notify_hosts: None - # syslog_mode: udp - # snmp_v2c_query_port: None - # snmp_v2c_trap_status: None - # snmp_status: None - # syslog_status: None - # snmp_v2c_trap_hosts_ipv4: None - # admin_fortianalyzer_target: None - # snmp_v2c_trap_src_ipv4: None - # admin_http_port: None - # dns_secondary_ipv4: 4.4.4.4 - # syslog_filter: None - # snmpv3_source_ip: None - # snmpv3_trap_rport: None - # admin_gui_theme: None - # ntp_sync_interval: None - # ntp_auth_pwd: None - # provisioning_template: ansibleTest - # ntp_v3: None - # ntp_auth: None - # snmp_v2c_trap_port: None - # snmpv3_priv_proto: None - # admin_enable_fortiguard: None - # dns_primary_ipv4: 8.8.8.8 - # admin_language: None - # smtp_conn_sec: None - # snmpv3_auth_pwd: None - # smtp_source_ipv4: None - # snmpv3_status: None - # delete_provisioning_template: None - # smtp_replyto: None - # admin_https_redirect: None - ################################################## - - # Test using fixture 1 # - output = fmgr_device_provision_template.set_devprof_dns(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 diff --git a/test/units/modules/network/fortimanager/test_fmgr_fwobj_address.py b/test/units/modules/network/fortimanager/test_fmgr_fwobj_address.py deleted file mode 100644 index cb37dabeed..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_fwobj_address.py +++ /dev/null @@ -1,156 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_fwobj_address -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_fwobj_address.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_fmgr_fwobj_ipv4(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - - # Test using fixture 1 # - output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == -3 - # Test using fixture 2 # - output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 3 # - output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[2]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 4 # - output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[3]['paramgram_used']) - assert output['raw_response']['status']['code'] == -3 - # Test using fixture 5 # - output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[4]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 6 # - output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[5]['paramgram_used']) - assert output['raw_response']['status']['code'] == -3 - # Test using fixture 7 # - output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[6]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 8 # - output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[7]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 9 # - output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[8]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 10 # - output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[9]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 11 # - output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[10]['paramgram_used']) - assert output['raw_response']['status']['code'] == -3 - # Test using fixture 12 # - output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[11]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 13 # - output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[12]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 14 # - output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[13]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 15 # - output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[14]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 16 # - output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[15]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 17 # - output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[16]['paramgram_used']) - assert output['raw_response']['status']['code'] == -3 - # Test using fixture 18 # - output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[17]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - - -def test_fmgr_fwobj_ipv6(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - - # Test using fixture 1 # - output = fmgr_fwobj_address.fmgr_fwobj_ipv6(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == -3 - # Test using fixture 2 # - output = fmgr_fwobj_address.fmgr_fwobj_ipv6(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == -3 - # Test using fixture 3 # - output = fmgr_fwobj_address.fmgr_fwobj_ipv6(fmg_instance, fixture_data[2]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 4 # - output = fmgr_fwobj_address.fmgr_fwobj_ipv6(fmg_instance, fixture_data[3]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 5 # - output = fmgr_fwobj_address.fmgr_fwobj_ipv6(fmg_instance, fixture_data[4]['paramgram_used']) - assert output['raw_response']['status']['code'] == -10131 - - -def test_fmgr_fwobj_multicast(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - - # Test using fixture 1 # - output = fmgr_fwobj_address.fmgr_fwobj_multicast(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 2 # - output = fmgr_fwobj_address.fmgr_fwobj_multicast(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 3 # - output = fmgr_fwobj_address.fmgr_fwobj_multicast(fmg_instance, fixture_data[2]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 diff --git a/test/units/modules/network/fortimanager/test_fmgr_fwobj_ippool.py b/test/units/modules/network/fortimanager/test_fmgr_fwobj_ippool.py deleted file mode 100644 index 6edd046711..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_fwobj_ippool.py +++ /dev/null @@ -1,90 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_fwobj_ippool -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_fwobj_ippool.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_fmgr_fwobj_ippool_modify(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - - # Test using fixture 1 # - output = fmgr_fwobj_ippool.fmgr_fwobj_ippool_modify(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 2 # - output = fmgr_fwobj_ippool.fmgr_fwobj_ippool_modify(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 3 # - output = fmgr_fwobj_ippool.fmgr_fwobj_ippool_modify(fmg_instance, fixture_data[2]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 4 # - output = fmgr_fwobj_ippool.fmgr_fwobj_ippool_modify(fmg_instance, fixture_data[3]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 5 # - output = fmgr_fwobj_ippool.fmgr_fwobj_ippool_modify(fmg_instance, fixture_data[4]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 6 # - output = fmgr_fwobj_ippool.fmgr_fwobj_ippool_modify(fmg_instance, fixture_data[5]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 7 # - output = fmgr_fwobj_ippool.fmgr_fwobj_ippool_modify(fmg_instance, fixture_data[6]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 8 # - output = fmgr_fwobj_ippool.fmgr_fwobj_ippool_modify(fmg_instance, fixture_data[7]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 diff --git a/test/units/modules/network/fortimanager/test_fmgr_fwobj_ippool6.py b/test/units/modules/network/fortimanager/test_fmgr_fwobj_ippool6.py deleted file mode 100644 index eab1cfd1c8..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_fwobj_ippool6.py +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_fwobj_ippool6 -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_fwobj_ippool6.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_fmgr_fwobj_ippool6_modify(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - - # Test using fixture 1 # - output = fmgr_fwobj_ippool6.fmgr_fwobj_ippool6_modify(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 2 # - output = fmgr_fwobj_ippool6.fmgr_fwobj_ippool6_modify(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 diff --git a/test/units/modules/network/fortimanager/test_fmgr_fwobj_service.py b/test/units/modules/network/fortimanager/test_fmgr_fwobj_service.py deleted file mode 100644 index 85bfcc2f53..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_fwobj_service.py +++ /dev/null @@ -1,123 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_fwobj_service -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_fwobj_service.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_fmgr_fwobj_service_custom(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - - # Test using fixture 1 # - output = fmgr_fwobj_service.fmgr_fwobj_service_custom(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 2 # - output = fmgr_fwobj_service.fmgr_fwobj_service_custom(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 3 # - output = fmgr_fwobj_service.fmgr_fwobj_service_custom(fmg_instance, fixture_data[2]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 4 # - output = fmgr_fwobj_service.fmgr_fwobj_service_custom(fmg_instance, fixture_data[3]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 5 # - output = fmgr_fwobj_service.fmgr_fwobj_service_custom(fmg_instance, fixture_data[4]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 6 # - output = fmgr_fwobj_service.fmgr_fwobj_service_custom(fmg_instance, fixture_data[5]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 7 # - output = fmgr_fwobj_service.fmgr_fwobj_service_custom(fmg_instance, fixture_data[6]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 8 # - output = fmgr_fwobj_service.fmgr_fwobj_service_custom(fmg_instance, fixture_data[7]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 9 # - output = fmgr_fwobj_service.fmgr_fwobj_service_custom(fmg_instance, fixture_data[8]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 10 # - output = fmgr_fwobj_service.fmgr_fwobj_service_custom(fmg_instance, fixture_data[9]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 11 # - output = fmgr_fwobj_service.fmgr_fwobj_service_custom(fmg_instance, fixture_data[10]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 12 # - output = fmgr_fwobj_service.fmgr_fwobj_service_custom(fmg_instance, fixture_data[11]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - - -def test_fmgr_fwobj_service_group(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - - # Test using fixture 1 # - output = fmgr_fwobj_service.fmgr_fwobj_service_group(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == -3 - # Test using fixture 2 # - output = fmgr_fwobj_service.fmgr_fwobj_service_group(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == -10131 - - -def test_fmgr_fwobj_service_category(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - - # Test using fixture 1 # - output = fmgr_fwobj_service.fmgr_fwobj_service_category(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == -2 diff --git a/test/units/modules/network/fortimanager/test_fmgr_fwobj_vip.py b/test/units/modules/network/fortimanager/test_fmgr_fwobj_vip.py deleted file mode 100644 index 09e36d2edc..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_fwobj_vip.py +++ /dev/null @@ -1,785 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_fwobj_vip -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_fwobj_vip.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_fmgr_firewall_vip_modify(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # comment: Created by Ansible - # ssl-send-empty-frags: None - # srcintf-filter: None - # ssl-max-version: None - # ssl-server-session-state-max: None - # ssl-hpkp: None - # mapped-addr: None - # ssl-client-session-state-timeout: None - # src-filter: None - # server-type: None - # ssl-hpkp-include-subdomains: None - # ssl-http-location-conversion: None - # https-cookie-secure: None - # mappedip: 10.7.220.25 - # ssl-server-cipher-suites: {'priority': None, 'cipher': None, 'versions': None} - # protocol: tcp - # ssl-hpkp-backup: None - # ssl-dh-bits: None - # dns-mapping-ttl: None - # ssl-hsts-age: None - # extaddr: None - # ssl-client-renegotiation: None - # monitor: None - # service: None - # ssl-hpkp-age: None - # http-cookie-age: None - # weblogic-server: None - # http-cookie-share: None - # color: 17 - # ssl-mode: None - # portforward: enable - # http-multiplex: None - # http-cookie-generation: None - # ssl-client-fallback: None - # extip: 82.72.192.185 - # extintf: any - # persistence: None - # websphere-server: None - # nat-source-vip: None - # portmapping-type: None - - # adom: ansible - # ssl-client-session-state-max: None - # http-ip-header: None - # http-ip-header-name: None - # ssl-certificate: None - # ssl-hsts: None - # arp-reply: None - # ssl-hsts-include-subdomains: None - # ssl-min-version: None - # ldb-method: None - # ssl-server-session-state-timeout: None - # ssl-server-min-version: None - # http-cookie-domain: None - # mappedport: 443 - # name: Basic PNAT Map Port 10443 - # ssl-cipher-suites: {'cipher': None, 'versions': None} - # ssl-hpkp-primary: None - # outlook-web-access: None - # ssl-server-session-state-type: None - # ssl-client-session-state-type: None - - # ssl-http-match-host: None - - # ssl-server-max-version: None - # ssl-hpkp-report-uri: None - # http-cookie-domain-from-host: None - # ssl-algorithm: None - # gratuitous-arp-interval: None - # extport: 10443 - # max-embryonic-connections: None - # mode: set - # http-cookie-path: None - # ssl-pfs: None - # ssl-server-algorithm: None - ################################################## - ################################################## - # comment: Created by Ansible - # ssl-send-empty-frags: None - # srcintf-filter: None - # ssl-max-version: None - # ssl-server-session-state-max: None - # ssl-hpkp: None - # ssl-hsts-include-subdomains: None - # mapped-addr: None - # src-filter: None - # server-type: None - # mode: set - # ssl-hpkp-include-subdomains: None - # ssl-http-location-conversion: None - # https-cookie-secure: None - # mappedip: 3.3.3.0/24, 4.0.0.0/24 - # ssl-server-cipher-suites: {'priority': None, 'cipher': None, 'versions': None} - # protocol: None - # ssl-hpkp-backup: None - # ssl-dh-bits: None - # dns-mapping-ttl: None - # ssl-hsts-age: None - # ssl-client-renegotiation: None - # monitor: None - # service: None - # ssl-hpkp-age: None - # http-cookie-age: None - # adom: ansible - # http-cookie-share: None - # ssl-server-session-state-timeout: None - # color: 12 - # ssl-mode: None - # portforward: None - # http-cookie-generation: None - # max-embryonic-connections: None - # ssl-client-fallback: None - # ssl-hpkp-report-uri: None - # extip: 192.168.0.1-192.168.0.100 - # extintf: dmz - # persistence: None - # websphere-server: None - # nat-source-vip: None - # portmapping-type: None - # http-ip-header-name: None - # weblogic-server: None - # ssl-client-session-state-max: None - # http-ip-header: None - - # ssl-hsts: None - # arp-reply: None - # extaddr: None - # ssl-min-version: None - # ldb-method: None - # ssl-certificate: None - # ssl-server-min-version: None - # http-cookie-domain: None - # mappedport: None - # outlook-web-access: None - # ssl-cipher-suites: {'cipher': None, 'versions': None} - # ssl-hpkp-primary: None - # name: Basic DNS Translation - # ssl-server-session-state-type: None - # ssl-client-session-state-type: None - - # ssl-http-match-host: None - - # ssl-pfs: None - # ssl-server-max-version: None - # ssl-client-session-state-timeout: None - # http-cookie-domain-from-host: None - # extport: None - # ssl-server-algorithm: None - # gratuitous-arp-interval: None - # http-cookie-path: None - # ssl-algorithm: None - # http-multiplex: None - ################################################## - ################################################## - # comment: Created by Ansible - # ssl-send-empty-frags: None - # srcintf-filter: None - # ssl-max-version: None - # ssl-server-session-state-max: None - # ssl-hpkp: None - # mapped-addr: google-play - # ssl-client-session-state-timeout: None - # src-filter: None - # ldb-method: None - # server-type: None - # ssl-hpkp-include-subdomains: None - # ssl-client-renegotiation: None - # ssl-http-location-conversion: None - # https-cookie-secure: None - # mappedip: None - # ssl-server-cipher-suites: {'priority': None, 'cipher': None, 'versions': None} - # protocol: None - # ssl-hpkp-backup: None - # ssl-dh-bits: None - # dns-mapping-ttl: None - # ssl-hsts-age: None - # extaddr: None - # monitor: None - # service: None - # ssl-hpkp-age: None - # http-cookie-age: None - # weblogic-server: None - # http-cookie-share: None - # color: 5 - # ssl-mode: None - # portforward: None - # http-cookie-generation: None - # ssl-client-fallback: None - # extip: None - # extintf: None - # persistence: None - # websphere-server: None - # nat-source-vip: None - # portmapping-type: None - - # adom: ansible - # ssl-client-session-state-max: None - # http-ip-header: None - # http-ip-header-name: None - # ssl-certificate: None - # ssl-hsts: None - # arp-reply: None - # extport: None - # ssl-min-version: None - # ssl-server-algorithm: None - # ssl-server-session-state-timeout: None - # ssl-server-min-version: None - # http-cookie-domain: None - # mappedport: None - # name: Basic FQDN Translation - # ssl-cipher-suites: {'cipher': None, 'versions': None} - # ssl-hpkp-primary: None - # outlook-web-access: None - # ssl-server-session-state-type: None - # ssl-client-session-state-type: None - - # ssl-http-match-host: None - - # ssl-server-max-version: None - # ssl-hpkp-report-uri: None - # http-cookie-domain-from-host: None - # ssl-algorithm: None - # gratuitous-arp-interval: None - # ssl-hsts-include-subdomains: None - # max-embryonic-connections: None - # mode: set - # http-cookie-path: None - # ssl-pfs: None - # http-multiplex: None - ################################################## - ################################################## - # comment: Created by Ansible - # ssl-send-empty-frags: None - # srcintf-filter: None - # ssl-max-version: None - # ssl-server-session-state-max: None - # ssl-hpkp: None - # mapped-addr: None - # src-filter: None - # server-type: None - # mode: set - # ssl-hpkp-include-subdomains: None - # extport: None - # ssl-http-location-conversion: None - # https-cookie-secure: None - # mappedip: 10.7.220.25 - # ssl-server-cipher-suites: {'priority': None, 'cipher': None, 'versions': None} - # protocol: None - # ssl-hpkp-backup: None - # ssl-dh-bits: None - # dns-mapping-ttl: None - # ssl-hsts-age: None - # ssl-server-algorithm: None - # extaddr: None - # monitor: None - # service: None - # ssl-hpkp-age: None - # http-cookie-age: None - # adom: ansible - # http-cookie-share: None - # ssl-server-session-state-timeout: None - # color: 17 - # ssl-mode: None - # portforward: None - # http-cookie-generation: None - # max-embryonic-connections: None - # ssl-client-fallback: None - # ssl-hpkp-report-uri: None - # extip: 82.72.192.185 - # extintf: any - # persistence: None - # websphere-server: None - # nat-source-vip: None - # portmapping-type: None - # http-ip-header-name: None - # weblogic-server: None - # ssl-client-session-state-max: None - # http-ip-header: None - - # ssl-hsts: None - # arp-reply: None - # ssl-client-renegotiation: None - # ssl-min-version: None - # ldb-method: None - # ssl-certificate: None - # ssl-server-min-version: None - # http-cookie-domain: None - # mappedport: None - # outlook-web-access: None - # ssl-cipher-suites: {'cipher': None, 'versions': None} - # ssl-hpkp-primary: None - # name: Basic StaticNAT Map - # ssl-server-session-state-type: None - # ssl-client-session-state-type: None - - # ssl-http-match-host: None - - # ssl-pfs: None - # ssl-client-session-state-timeout: None - # http-cookie-domain-from-host: None - # ssl-hsts-include-subdomains: None - # ssl-server-max-version: None - # gratuitous-arp-interval: None - # http-cookie-path: None - # ssl-algorithm: None - # http-multiplex: None - ################################################## - ################################################## - # comment: Created by Ansible - # ssl-send-empty-frags: None - # srcintf-filter: None - # ssl-max-version: None - # ssl-server-session-state-max: None - # ssl-hpkp: None - # mapped-addr: None - # ssl-client-session-state-timeout: None - # src-filter: None - # server-type: None - # ssl-hpkp-include-subdomains: None - # ssl-client-renegotiation: None - # ssl-http-location-conversion: None - # https-cookie-secure: None - # mappedip: 10.7.220.25 - # ssl-server-cipher-suites: {'priority': None, 'cipher': None, 'versions': None} - # protocol: tcp - # ssl-hpkp-backup: None - # ssl-dh-bits: None - # dns-mapping-ttl: None - # ssl-hsts-age: None - # extaddr: None - # monitor: None - # service: None - # ssl-hpkp-age: None - # http-cookie-age: None - # weblogic-server: None - # http-cookie-share: None - # color: 17 - # ssl-mode: None - # portforward: enable - # http-cookie-generation: None - # ssl-client-fallback: None - # extip: 82.72.192.185 - # extintf: any - # persistence: None - # websphere-server: None - # nat-source-vip: None - # portmapping-type: None - - # adom: ansible - # ssl-client-session-state-max: None - # http-ip-header: None - # http-ip-header-name: None - # ssl-min-version: None - # ssl-certificate: None - # ssl-hsts: None - # arp-reply: None - # ssl-hsts-include-subdomains: None - # http-multiplex: None - # ldb-method: None - # ssl-server-session-state-timeout: None - # ssl-server-min-version: None - # http-cookie-domain: None - # mappedport: 443 - # name: Basic PNAT Map Port 10443 - # ssl-cipher-suites: {'cipher': None, 'versions': None} - # ssl-hpkp-primary: None - # outlook-web-access: None - # ssl-server-session-state-type: None - # ssl-client-session-state-type: None - - # ssl-http-match-host: None - - # ssl-server-max-version: None - # ssl-hpkp-report-uri: None - # http-cookie-domain-from-host: None - # ssl-algorithm: None - # gratuitous-arp-interval: None - # extport: 10443 - # max-embryonic-connections: None - # mode: set - # http-cookie-path: None - # ssl-pfs: None - # ssl-server-algorithm: None - ################################################## - ################################################## - # comment: None - # ssl-send-empty-frags: None - # srcintf-filter: None - # ssl-max-version: None - # ssl-server-session-state-max: None - # ssl-hpkp: None - # ssl-hsts-include-subdomains: None - # mapped-addr: None - # src-filter: None - # server-type: None - # mode: delete - # ssl-hpkp-include-subdomains: None - # ssl-http-location-conversion: None - # https-cookie-secure: None - # mappedip: None - # ssl-server-cipher-suites: {'priority': None, 'cipher': None, 'versions': None} - # protocol: None - # ssl-hpkp-backup: None - # ssl-dh-bits: None - # dns-mapping-ttl: None - # ssl-hsts-age: None - # extaddr: None - # monitor: None - # service: None - # ssl-hpkp-age: None - # http-cookie-age: None - # adom: ansible - # http-cookie-share: None - # ssl-server-session-state-timeout: None - # color: None - # ssl-mode: None - # portforward: None - # http-cookie-generation: None - # max-embryonic-connections: None - # ssl-client-fallback: None - # ssl-hpkp-report-uri: None - # extip: None - # extintf: None - # persistence: None - # websphere-server: None - # nat-source-vip: None - # portmapping-type: None - # http-ip-header-name: None - # weblogic-server: None - # ssl-client-session-state-max: None - # http-ip-header: None - - # ssl-hsts: None - # arp-reply: None - # ssl-client-renegotiation: None - # http-multiplex: None - # ldb-method: None - # ssl-certificate: None - # ssl-server-min-version: None - # http-cookie-domain: None - # mappedport: None - # outlook-web-access: None - # ssl-cipher-suites: {'cipher': None, 'versions': None} - # ssl-hpkp-primary: None - # name: Basic PNAT Map Port 10443 - # ssl-server-session-state-type: None - # ssl-client-session-state-type: None - - # ssl-http-match-host: None - - # ssl-pfs: None - # ssl-server-max-version: None - # ssl-client-session-state-timeout: None - # http-cookie-domain-from-host: None - # extport: None - # ssl-server-algorithm: None - # gratuitous-arp-interval: None - # http-cookie-path: None - # ssl-algorithm: None - # ssl-min-version: None - ################################################## - ################################################## - # comment: None - # ssl-send-empty-frags: None - # srcintf-filter: None - # ssl-max-version: None - # ssl-server-session-state-max: None - # mappedip: None - # mapped-addr: None - # ssl-client-session-state-timeout: None - # src-filter: None - # ldb-method: None - # server-type: None - # ssl-hpkp-include-subdomains: None - # ssl-http-location-conversion: None - # https-cookie-secure: None - # ssl-hpkp: None - # ssl-server-cipher-suites: {'priority': None, 'cipher': None, 'versions': None} - # protocol: None - # ssl-hpkp-backup: None - # ssl-dh-bits: None - # dns-mapping-ttl: None - # ssl-hsts-age: None - # extaddr: None - # ssl-client-renegotiation: None - # monitor: None - # service: None - # ssl-hpkp-age: None - # http-cookie-age: None - # weblogic-server: None - # http-cookie-share: None - # color: None - # ssl-mode: None - # portforward: None - # http-cookie-generation: None - # ssl-client-fallback: None - # extip: None - # extintf: None - # persistence: None - # websphere-server: None - # nat-source-vip: None - # portmapping-type: None - - # adom: ansible - # ssl-client-session-state-max: None - # http-ip-header: None - # http-ip-header-name: None - # ssl-certificate: None - # ssl-hsts: None - # arp-reply: None - # extport: None - # http-multiplex: None - # ssl-server-algorithm: None - # ssl-server-session-state-timeout: None - # ssl-server-min-version: None - # http-cookie-domain: None - # mappedport: None - # name: Basic StaticNAT Map - # ssl-cipher-suites: {'cipher': None, 'versions': None} - # ssl-hpkp-primary: None - # outlook-web-access: None - # ssl-server-session-state-type: None - # ssl-client-session-state-type: None - - # ssl-http-match-host: None - - # ssl-server-max-version: None - # ssl-hpkp-report-uri: None - # http-cookie-domain-from-host: None - # ssl-algorithm: None - # gratuitous-arp-interval: None - # ssl-hsts-include-subdomains: None - # max-embryonic-connections: None - # mode: delete - # http-cookie-path: None - # ssl-pfs: None - # ssl-min-version: None - ################################################## - ################################################## - # comment: None - # ssl-send-empty-frags: None - # srcintf-filter: None - # ssl-max-version: None - # ssl-server-session-state-max: None - # mappedip: None - # mapped-addr: None - # src-filter: None - # server-type: None - # mode: delete - # ssl-hpkp-include-subdomains: None - # extport: None - # ssl-http-location-conversion: None - # https-cookie-secure: None - # ssl-hpkp: None - # ssl-server-cipher-suites: {'priority': None, 'cipher': None, 'versions': None} - # protocol: None - # ssl-hpkp-backup: None - # ssl-dh-bits: None - # dns-mapping-ttl: None - # ssl-hsts-age: None - # ssl-server-algorithm: None - # ssl-client-renegotiation: None - # monitor: None - # service: None - # ssl-hpkp-age: None - # http-cookie-age: None - # adom: ansible - # http-cookie-share: None - # ssl-server-session-state-timeout: None - # color: None - # ssl-mode: None - # portforward: None - # http-multiplex: None - # http-cookie-generation: None - # max-embryonic-connections: None - # ssl-client-fallback: None - # ssl-hpkp-report-uri: None - # extip: None - # extintf: None - # persistence: None - # websphere-server: None - # nat-source-vip: None - # portmapping-type: None - # http-ip-header-name: None - # weblogic-server: None - # ssl-client-session-state-max: None - # http-ip-header: None - # ssl-hsts: None - # arp-reply: None - # extaddr: None - # ssl-hpkp-primary: None - # ldb-method: None - # ssl-certificate: None - # ssl-server-min-version: None - # http-cookie-domain: None - # mappedport: None - # outlook-web-access: None - # ssl-cipher-suites: {'cipher': None, 'versions': None} - # ssl-client-session-state-type: None - # name: Basic DNS Translation - # ssl-server-session-state-type: None - - # ssl-http-match-host: None - # ssl-pfs: None - # ssl-client-session-state-timeout: None - # http-cookie-domain-from-host: None - # ssl-hsts-include-subdomains: None - # ssl-server-max-version: None - # gratuitous-arp-interval: None - # http-cookie-path: None - # ssl-algorithm: None - # ssl-min-version: None - ################################################## - ################################################## - # ldb-method: None - # ssl-send-empty-frags: None - # srcintf-filter: None - # ssl-max-version: None - # ssl-server-session-state-max: None - # mappedip: None - # ssl-hsts: None - # mapped-addr: None - # src-filter: None - # server-type: None - # ssl-hpkp-include-subdomains: None - # ssl-client-renegotiation: None - # ssl-http-location-conversion: None - # https-cookie-secure: None - # extip: None - # ssl-hpkp: None - # ssl-server-cipher-suites: {'priority': None, 'cipher': None, 'versions': None} - # protocol: None - # ssl-hpkp-backup: None - # ssl-dh-bits: None - # dns-mapping-ttl: None - # ssl-hsts-age: None - # extaddr: None - # ssl-hpkp-primary: None - # monitor: None - # service: None - # ssl-hpkp-age: None - # http-cookie-age: None - # weblogic-server: None - # http-cookie-share: None - # name: Basic FQDN Translation - # color: None - # ssl-mode: None - # portforward: None - # http-cookie-generation: None - # ssl-client-fallback: None - - # http-ip-header: None - # persistence: None - # websphere-server: None - # nat-source-vip: None - # portmapping-type: None - # adom: ansible - # ssl-client-session-state-max: None - # extintf: None - # ssl-server-max-version: None - # http-ip-header-name: None - # ssl-certificate: None - # ssl-server-session-state-type: None - # arp-reply: None - # ssl-hsts-include-subdomains: None - # ssl-min-version: None - # ssl-server-algorithm: None - # ssl-server-session-state-timeout: None - # ssl-server-min-version: None - # http-cookie-domain: None - # mappedport: None - # outlook-web-access: None - # ssl-cipher-suites: {'cipher': None, 'versions': None} - # ssl-client-session-state-type: None - # ssl-http-match-host: None - - # ssl-client-session-state-timeout: None - # comment: None - # ssl-hpkp-report-uri: None - # http-cookie-domain-from-host: None - # ssl-algorithm: None - # gratuitous-arp-interval: None - # extport: None - # max-embryonic-connections: None - # mode: delete - # http-cookie-path: None - # ssl-pfs: None - # http-multiplex: None - ################################################## - - # Test using fixture 1 # - output = fmgr_fwobj_vip.fmgr_firewall_vip_modify(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 2 # - output = fmgr_fwobj_vip.fmgr_firewall_vip_modify(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == -10131 - # Test using fixture 3 # - output = fmgr_fwobj_vip.fmgr_firewall_vip_modify(fmg_instance, fixture_data[2]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 4 # - output = fmgr_fwobj_vip.fmgr_firewall_vip_modify(fmg_instance, fixture_data[3]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 5 # - output = fmgr_fwobj_vip.fmgr_firewall_vip_modify(fmg_instance, fixture_data[4]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 6 # - output = fmgr_fwobj_vip.fmgr_firewall_vip_modify(fmg_instance, fixture_data[5]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 7 # - output = fmgr_fwobj_vip.fmgr_firewall_vip_modify(fmg_instance, fixture_data[6]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 8 # - output = fmgr_fwobj_vip.fmgr_firewall_vip_modify(fmg_instance, fixture_data[7]['paramgram_used']) - assert output['raw_response']['status']['code'] == -3 - # Test using fixture 9 # - output = fmgr_fwobj_vip.fmgr_firewall_vip_modify(fmg_instance, fixture_data[8]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 diff --git a/test/units/modules/network/fortimanager/test_fmgr_fwpol_ipv4.py b/test/units/modules/network/fortimanager/test_fmgr_fwpol_ipv4.py deleted file mode 100644 index 3ef1e52c78..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_fwpol_ipv4.py +++ /dev/null @@ -1,596 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_fwpol_ipv4 -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_fwpol_ipv4.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_fmgr_firewall_policy_modify(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # wanopt-passive-opt: None - # package_name: default - # wanopt-detection: None - # scan-botnet-connections: None - # profile-group: None - # wanopt-peer: None - # dscp-match: None - # replacemsg-override-group: None - # internet-service-negate: None - # np-acceleration: None - # learning-mode: None - # session-ttl: None - # ntlm-guest: None - # ips-sensor: None - # diffservcode-rev: None - # match-vip: None - # natip: None - # dlp-sensor: None - # traffic-shaper: None - # groups: None - # schedule-timeout: None - # name: Basic_IPv4_Policy - # tcp-session-without-syn: None - # ntlm: None - # permit-stun-host: None - # diffservcode-forward: None - # internet-service-src-custom: None - # mode: set - # disclaimer: None - # rtp-nat: None - # auth-cert: None - # timeout-send-rst: None - # auth-redirect-addr: None - # ssl-mirror-intf: None - # identity-based-route: None - # natoutbound: None - # wanopt-profile: None - # per-ip-shaper: None - # profile-protocol-options: None - # diffserv-forward: None - # poolname: None - # comments: Created by Ansible - # label: None - # global-label: None - # firewall-session-dirty: None - # wanopt: None - # schedule: always - # internet-service-id: None - # auth-path: None - # vlan-cos-fwd: None - # custom-log-fields: None - # dstintf: any - # srcintf: any - # block-notification: None - # internet-service-src-id: None - # redirect-url: None - # waf-profile: None - # ntlm-enabled-browsers: None - # dscp-negate: None - # action: accept - # fsso-agent-for-ntlm: None - # logtraffic: utm - # vlan-filter: None - # policyid: None - # logtraffic-start: None - # webcache-https: None - # webfilter-profile: None - # internet-service-src: None - # webcache: None - # utm-status: None - # vpn_src_node: {'subnet': None, 'host': None, 'seq': None} - # ippool: None - # service: ALL - # wccp: None - # auto-asic-offload: None - # dscp-value: None - # url-category: None - # capture-packet: None - # adom: ansible - # inbound: None - # internet-service: None - # profile-type: None - # ssl-mirror: None - # srcaddr-negate: None - # gtp-profile: None - # mms-profile: None - # send-deny-packet: None - # devices: None - # permit-any-host: None - # av-profile: None - # internet-service-src-negate: None - # service-negate: None - # rsso: None - # app-group: None - # tcp-mss-sender: None - # natinbound: None - # fixedport: None - # ssl-ssh-profile: None - # outbound: None - # spamfilter-profile: None - # application-list: None - # application: None - # dnsfilter-profile: None - # nat: None - # fsso: None - # vlan-cos-rev: None - # status: None - # dsri: None - # users: None - # voip-profile: None - # dstaddr-negate: None - # traffic-shaper-reverse: None - # internet-service-custom: None - # diffserv-reverse: None - # srcaddr: all - # ssh-filter-profile: None - # delay-tcp-npu-session: None - # icap-profile: None - # captive-portal-exempt: None - # vpn_dst_node: {'subnet': None, 'host': None, 'seq': None} - # app-category: None - # rtp-addr: None - # wsso: None - # tcp-mss-receiver: None - # dstaddr: all - # radius-mac-auth-bypass: None - # vpntunnel: None - ################################################## - ################################################## - # package_name: default - # wanopt-detection: None - # scan-botnet-connections: None - # profile-group: None - # dlp-sensor: None - # dscp-match: None - # replacemsg-override-group: None - # internet-service-negate: None - # np-acceleration: None - # learning-mode: None - # session-ttl: None - # ntlm-guest: None - # ips-sensor: None - # diffservcode-rev: None - # match-vip: None - # natip: None - # wanopt-peer: None - # traffic-shaper: None - # groups: None - # schedule-timeout: None - # name: Basic_IPv4_Policy_2 - # tcp-session-without-syn: None - # rtp-nat: None - # permit-stun-host: None - # natoutbound: None - # internet-service-src-custom: None - # mode: set - # logtraffic: utm - # ntlm: None - # auth-cert: None - # timeout-send-rst: None - # auth-redirect-addr: None - # ssl-mirror-intf: None - # identity-based-route: None - # diffservcode-forward: None - # wanopt-profile: None - # per-ip-shaper: None - # users: None - # diffserv-forward: None - # poolname: None - # comments: Created by Ansible - # label: None - # global-label: None - # firewall-session-dirty: None - # wanopt: None - # schedule: always - # internet-service-id: None - # auth-path: None - # vlan-cos-fwd: None - # custom-log-fields: None - # dstintf: any - # srcintf: any - # block-notification: None - # internet-service-src-id: None - # redirect-url: None - # waf-profile: None - # ntlm-enabled-browsers: None - # dscp-negate: None - # action: accept - # fsso-agent-for-ntlm: None - # disclaimer: None - # vlan-filter: None - # dstaddr-negate: None - # logtraffic-start: None - # webcache-https: None - # webfilter-profile: None - # internet-service-src: None - # webcache: None - # utm-status: None - # vpn_src_node: {'subnet': None, 'host': None, 'seq': None} - # ippool: None - # service: HTTP, HTTPS - # wccp: None - # auto-asic-offload: None - # dscp-value: None - # url-category: None - # capture-packet: None - # adom: ansible - # inbound: None - # internet-service: None - # profile-type: None - # ssl-mirror: None - # srcaddr-negate: None - # gtp-profile: None - # mms-profile: None - # send-deny-packet: None - # devices: None - # permit-any-host: None - # av-profile: None - # internet-service-src-negate: None - # service-negate: None - # rsso: None - # application-list: None - # app-group: None - # tcp-mss-sender: None - # natinbound: None - # fixedport: None - # ssl-ssh-profile: None - # outbound: None - # spamfilter-profile: None - # wanopt-passive-opt: None - # application: None - # dnsfilter-profile: None - # nat: enable - # fsso: None - # vlan-cos-rev: None - # status: None - # dsri: None - # profile-protocol-options: None - # voip-profile: None - # policyid: None - # traffic-shaper-reverse: None - # internet-service-custom: None - # diffserv-reverse: None - # srcaddr: all - # dstaddr: google-play - # delay-tcp-npu-session: None - # icap-profile: None - # captive-portal-exempt: None - # vpn_dst_node: {'subnet': None, 'host': None, 'seq': None} - # app-category: None - # rtp-addr: None - # wsso: None - # tcp-mss-receiver: None - # ssh-filter-profile: None - # radius-mac-auth-bypass: None - # vpntunnel: None - ################################################## - ################################################## - # wanopt-passive-opt: None - # package_name: default - # wanopt-detection: None - # scan-botnet-connections: None - # profile-group: None - # wanopt-peer: None - # dscp-match: None - # replacemsg-override-group: None - # internet-service-negate: None - # np-acceleration: None - # learning-mode: None - # session-ttl: None - # ntlm-guest: None - # ips-sensor: None - # diffservcode-rev: None - # match-vip: None - # natip: None - # dlp-sensor: None - # traffic-shaper: None - # groups: None - # schedule-timeout: None - # name: Basic_IPv4_Policy - # tcp-session-without-syn: None - # ntlm: None - # permit-stun-host: None - # diffservcode-forward: None - # internet-service-src-custom: None - # mode: delete - # disclaimer: None - # rtp-nat: None - # auth-cert: None - # timeout-send-rst: None - # auth-redirect-addr: None - # ssl-mirror-intf: None - # identity-based-route: None - # natoutbound: None - # wanopt-profile: None - # per-ip-shaper: None - # profile-protocol-options: None - # diffserv-forward: None - # poolname: None - # comments: None - # label: None - # global-label: None - # firewall-session-dirty: None - # wanopt: None - # schedule: None - # internet-service-id: None - # auth-path: None - # vlan-cos-fwd: None - # custom-log-fields: None - # dstintf: None - # srcintf: None - # block-notification: None - # internet-service-src-id: None - # redirect-url: None - # waf-profile: None - # ntlm-enabled-browsers: None - # dscp-negate: None - # action: None - # fsso-agent-for-ntlm: None - # logtraffic: None - # vlan-filter: None - # policyid: 36 - # logtraffic-start: None - # webcache-https: None - # webfilter-profile: None - # internet-service-src: None - # webcache: None - # utm-status: None - # vpn_src_node: {'subnet': None, 'host': None, 'seq': None} - # ippool: None - # service: None - # wccp: None - # auto-asic-offload: None - # dscp-value: None - # url-category: None - # capture-packet: None - # adom: ansible - # inbound: None - # internet-service: None - # profile-type: None - # ssl-mirror: None - # srcaddr-negate: None - # gtp-profile: None - # mms-profile: None - # send-deny-packet: None - # devices: None - # permit-any-host: None - # av-profile: None - # internet-service-src-negate: None - # service-negate: None - # rsso: None - # app-group: None - # tcp-mss-sender: None - # natinbound: None - # fixedport: None - # ssl-ssh-profile: None - # outbound: None - # spamfilter-profile: None - # application-list: None - # application: None - # dnsfilter-profile: None - # nat: None - # fsso: None - # vlan-cos-rev: None - # status: None - # dsri: None - # users: None - # voip-profile: None - # dstaddr-negate: None - # traffic-shaper-reverse: None - # internet-service-custom: None - # diffserv-reverse: None - # srcaddr: None - # ssh-filter-profile: None - # delay-tcp-npu-session: None - # icap-profile: None - # captive-portal-exempt: None - # vpn_dst_node: {'subnet': None, 'host': None, 'seq': None} - # app-category: None - # rtp-addr: None - # wsso: None - # tcp-mss-receiver: None - # dstaddr: None - # radius-mac-auth-bypass: None - # vpntunnel: None - ################################################## - ################################################## - # package_name: default - # wanopt-detection: None - # scan-botnet-connections: None - # profile-group: None - # dlp-sensor: None - # dscp-match: None - # replacemsg-override-group: None - # internet-service-negate: None - # np-acceleration: None - # learning-mode: None - # session-ttl: None - # ntlm-guest: None - # ips-sensor: None - # diffservcode-rev: None - # match-vip: None - # natip: None - # wanopt-peer: None - # traffic-shaper: None - # groups: None - # schedule-timeout: None - # name: Basic_IPv4_Policy_2 - # tcp-session-without-syn: None - # rtp-nat: None - # permit-stun-host: None - # natoutbound: None - # internet-service-src-custom: None - # mode: delete - # logtraffic: None - # ntlm: None - # auth-cert: None - # timeout-send-rst: None - # auth-redirect-addr: None - # ssl-mirror-intf: None - # identity-based-route: None - # diffservcode-forward: None - # wanopt-profile: None - # per-ip-shaper: None - # users: None - # diffserv-forward: None - # poolname: None - # comments: None - # label: None - # global-label: None - # firewall-session-dirty: None - # wanopt: None - # schedule: None - # internet-service-id: None - # auth-path: None - # vlan-cos-fwd: None - # custom-log-fields: None - # dstintf: None - # srcintf: None - # block-notification: None - # internet-service-src-id: None - # redirect-url: None - # waf-profile: None - # ntlm-enabled-browsers: None - # dscp-negate: None - # action: None - # fsso-agent-for-ntlm: None - # disclaimer: None - # vlan-filter: None - # dstaddr-negate: None - # logtraffic-start: None - # webcache-https: None - # webfilter-profile: None - # internet-service-src: None - # webcache: None - # utm-status: None - # vpn_src_node: {'subnet': None, 'host': None, 'seq': None} - # ippool: None - # service: None - # wccp: None - # auto-asic-offload: None - # dscp-value: None - # url-category: None - # capture-packet: None - # adom: ansible - # internet-service: None - # inbound: None - # profile-type: None - # ssl-mirror: None - # srcaddr-negate: None - # gtp-profile: None - # mms-profile: None - # send-deny-packet: None - # devices: None - # permit-any-host: None - # av-profile: None - # internet-service-src-negate: None - # service-negate: None - # rsso: None - # application-list: None - # app-group: None - # tcp-mss-sender: None - # natinbound: None - # fixedport: None - # ssl-ssh-profile: None - # outbound: None - # spamfilter-profile: None - # wanopt-passive-opt: None - # application: None - # dnsfilter-profile: None - # nat: None - # fsso: None - # vlan-cos-rev: None - # status: None - # dsri: None - # profile-protocol-options: None - # voip-profile: None - # policyid: 37 - # traffic-shaper-reverse: None - # internet-service-custom: None - # diffserv-reverse: None - # srcaddr: None - # dstaddr: None - # delay-tcp-npu-session: None - # icap-profile: None - # captive-portal-exempt: None - # vpn_dst_node: {'subnet': None, 'host': None, 'seq': None} - # app-category: None - # rtp-addr: None - # wsso: None - # tcp-mss-receiver: None - # ssh-filter-profile: None - # radius-mac-auth-bypass: None - # vpntunnel: None - ################################################## - - # Test using fixture 1 # - output = fmgr_fwpol_ipv4.fmgr_firewall_policy_modify(fmg_instance, fixture_data[0]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True - # Test using fixture 2 # - output = fmgr_fwpol_ipv4.fmgr_firewall_policy_modify(fmg_instance, fixture_data[1]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True - # Test using fixture 3 # - output = fmgr_fwpol_ipv4.fmgr_firewall_policy_modify(fmg_instance, fixture_data[2]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 4 # - output = fmgr_fwpol_ipv4.fmgr_firewall_policy_modify(fmg_instance, fixture_data[3]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 diff --git a/test/units/modules/network/fortimanager/test_fmgr_fwpol_package.py b/test/units/modules/network/fortimanager/test_fmgr_fwpol_package.py deleted file mode 100644 index a374fa5403..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_fwpol_package.py +++ /dev/null @@ -1,97 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) - -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_fwpol_package -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_fwpol_package.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_fmgr_fwpol_package(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - - # Test using fixture 1 # - output = fmgr_fwpol_package.fmgr_fwpol_package(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 2 # - output = fmgr_fwpol_package.fmgr_fwpol_package(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 3 # - output = fmgr_fwpol_package.fmgr_fwpol_package(fmg_instance, fixture_data[2]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 4 # - output = fmgr_fwpol_package.fmgr_fwpol_package(fmg_instance, fixture_data[3]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - - -def test_fmgr_fwpol_package_folder(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - - # Test using fixture 1 # - output = fmgr_fwpol_package.fmgr_fwpol_package_folder(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 2 # - output = fmgr_fwpol_package.fmgr_fwpol_package_folder(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 3 # - output = fmgr_fwpol_package.fmgr_fwpol_package_folder(fmg_instance, fixture_data[2]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 4 # - output = fmgr_fwpol_package.fmgr_fwpol_package_folder(fmg_instance, fixture_data[3]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 diff --git a/test/units/modules/network/fortimanager/test_fmgr_ha.py b/test/units/modules/network/fortimanager/test_fmgr_ha.py deleted file mode 100644 index 90dea79ff1..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_ha.py +++ /dev/null @@ -1,216 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_ha -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_ha.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_fmgr_set_ha_mode(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # fmgr_ha_peer_sn: None - # fmgr_ha_hb_threshold: 10 - # fmgr_ha_cluster_pw: fortinet - # fmgr_ha_peer_ipv6: None - # fmgr_ha_peer_status: None - # fmgr_ha_file_quota: 2048 - # fmgr_ha_cluster_id: 2 - # fmgr_ha_peer_ipv4: None - # fmgr_ha_hb_interval: 15 - # fmgr_ha_mode: master - # mode: set - ################################################## - ################################################## - # fmgr_ha_peer_sn: None - # fmgr_ha_hb_threshold: 3 - # fmgr_ha_cluster_pw: fortinet - # fmgr_ha_hb_interval: 5 - # fmgr_ha_cluster_id: 2 - # fmgr_ha_file_quota: 4096 - # fmgr_ha_peer_status: None - # fmgr_ha_peer_ipv4: None - # fmgr_ha_peer_ipv6: None - # fmgr_ha_mode: slave - # mode: set - ################################################## - ################################################## - # fmgr_ha_peer_sn: FMG-VMTM18001881 - # fmgr_ha_hb_threshold: 3 - # fmgr_ha_cluster_pw: fortinet - # fmgr_ha_peer_ipv6: None - # fmgr_ha_peer_status: enable - # fmgr_ha_file_quota: 4096 - # fmgr_ha_cluster_id: 2 - # fmgr_ha_peer_ipv4: 10.7.220.35 - # fmgr_ha_hb_interval: 5 - # fmgr_ha_mode: slave - # mode: set - ################################################## - ################################################## - # fmgr_ha_file_quota: 4096 - # fmgr_ha_cluster_pw: None - # fmgr_ha_peer_sn: None - # fmgr_ha_hb_interval: 5 - # fmgr_ha_cluster_id: 1 - # fmgr_ha_mode: standalone - # fmgr_ha_peer_status: None - # fmgr_ha_hb_threshold: 3 - # fmgr_ha_peer_ipv4: None - # fmgr_ha_peer_ipv6: None - # mode: set - ################################################## - - # Test using fixture 1 # - output = fmgr_ha.fmgr_set_ha_mode(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 2 # - output = fmgr_ha.fmgr_set_ha_mode(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 3 # - output = fmgr_ha.fmgr_set_ha_mode(fmg_instance, fixture_data[2]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 4 # - output = fmgr_ha.fmgr_set_ha_mode(fmg_instance, fixture_data[3]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - - -def test_fmgr_get_ha_peer_list(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # fmgr_ha_peer_sn: FMG-VMTM18001882 - # fmgr_ha_hb_threshold: 3 - # fmgr_ha_cluster_pw: None - # fmgr_ha_peer_ipv6: None - # fmgr_ha_peer_status: enable - # fmgr_ha_file_quota: 4096 - # fmgr_ha_cluster_id: 1 - # fmgr_ha_peer_ipv4: 10.7.220.36 - # fmgr_ha_hb_interval: 5 - # fmgr_ha_mode: None - # mode: get - ################################################## - ################################################## - # fmgr_ha_peer_sn: FMG-VMTM18001881 - # fmgr_ha_hb_threshold: 3 - # fmgr_ha_cluster_pw: fortinet - # fmgr_ha_hb_interval: 5 - # fmgr_ha_cluster_id: 2 - # fmgr_ha_file_quota: 4096 - # fmgr_ha_peer_status: enable - # fmgr_ha_peer_ipv4: 10.7.220.35 - # fmgr_ha_peer_ipv6: None - # fmgr_ha_mode: slave - # mode: get - ################################################## - - # Test using fixture 1 # - output = fmgr_ha.fmgr_get_ha_peer_list(fmg_instance) - assert isinstance(output['raw_response'], list) is True - # Test using fixture 2 # - output = fmgr_ha.fmgr_get_ha_peer_list(fmg_instance) - assert isinstance(output['raw_response'], list) is True - - -def test_fmgr_set_ha_peer(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # fmgr_ha_peer_sn: FMG-VMTM18001882 - # next_peer_id: 2 - # fmgr_ha_hb_threshold: 3 - # fmgr_ha_cluster_pw: None - # fmgr_ha_peer_ipv6: None - # fmgr_ha_peer_status: enable - # fmgr_ha_file_quota: 4096 - # fmgr_ha_cluster_id: 1 - # peer_id: 1 - # fmgr_ha_peer_ipv4: 10.7.220.36 - # fmgr_ha_hb_interval: 5 - # fmgr_ha_mode: None - # mode: set - ################################################## - ################################################## - # fmgr_ha_peer_sn: FMG-VMTM18001881 - # next_peer_id: 1 - # fmgr_ha_hb_threshold: 3 - # fmgr_ha_cluster_pw: fortinet - # fmgr_ha_hb_interval: 5 - # fmgr_ha_cluster_id: 2 - # fmgr_ha_file_quota: 4096 - # fmgr_ha_peer_status: enable - # peer_id: 1 - # fmgr_ha_peer_ipv4: 10.7.220.35 - # fmgr_ha_peer_ipv6: None - # fmgr_ha_mode: slave - # mode: set - ################################################## - - # Test using fixture 1 # - output = fmgr_ha.fmgr_set_ha_peer(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 2 # - output = fmgr_ha.fmgr_set_ha_peer(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 diff --git a/test/units/modules/network/fortimanager/test_fmgr_provisioning.py b/test/units/modules/network/fortimanager/test_fmgr_provisioning.py deleted file mode 100644 index 8755c56a5b..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_provisioning.py +++ /dev/null @@ -1,64 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import pytest - -pytestmark = [] -try: - from ansible.modules.network.fortimanager import fmgr_provisioning - from .fortimanager_module import TestFortimanagerModule - from units.modules.utils import set_module_args -except ImportError: - pytestmark.append(pytest.mark.skip("Could not load required modules for testing")) - -try: - from pyFMG.fortimgr import FortiManager -except ImportError: - pytestmark.append(pytest.mark.skip("FortiManager tests require pyFMG package")) - - -class TestFmgrProvisioningModule(TestFortimanagerModule): - - module = fmgr_provisioning - - def test_fmg_script_fail_connect(self): - set_module_args(dict(host='1.1.1.1', username='admin', password='admin', adom='root', - vdom='root', policy_package='root', name='FGT1', serial='FGVM000000117992', - platform='FortiGate-VM64', os_version='5.0', minor_release='6', - patch_release='0', os_type='fos')) - result = self.execute_module(failed=True) - self.assertEqual(result['msg'], 'Connection to FortiManager Failed') - - def test_fmg_script_login_fail_host(self): - set_module_args(dict(username='admin', password='admin', adom='root', - vdom='root', policy_package='root', name='FGT1', serial='FGVM000000117992', - platform='FortiGate-VM64', os_version='5.0', minor_release='6', - patch_release='0', os_type='fos')) - result = self.execute_module(failed=True) - self.assertEqual(result['msg'], 'missing required arguments: host') - - def test_fmg_script_login_fail_username(self): - set_module_args(dict(host='1.1.1.1', password='admin', adom='root', - vdom='root', policy_package='root', name='FGT1', serial='FGVM000000117992', - platform='FortiGate-VM64', os_version='5.0', minor_release='6', - patch_release='0', os_type='fos')) - result = self.execute_module(failed=True) - self.assertEqual(result['msg'], 'Host and username are required for connection') diff --git a/test/units/modules/network/fortimanager/test_fmgr_query.py b/test/units/modules/network/fortimanager/test_fmgr_query.py deleted file mode 100644 index 315b748c9c..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_query.py +++ /dev/null @@ -1,106 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_query -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_query.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_fmgr_get_custom(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # custom_endpoint: /dvmdb/adom/ansible/script - # device_ip: None - # device_unique_name: None - # task_id: None - # adom: ansible - # nodes: None - # object: custom - # device_serial: None - # custom_dict: {'type': 'cli'} - # mode: get - ################################################## - - # Test using fixture 1 # - output = fmgr_query.fmgr_get_custom(fmg_instance, fixture_data[0]['paramgram_used']) - assert isinstance(output['raw_response'], list) is True - - -def test_fmgr_get_task_status(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # custom_endpoint: None - # object: task - # task_id: 247 - # adom: ansible - # device_ip: None - # custom_dict: None - # device_unique_name: None - # nodes: None - # device_serial: None - # mode: get - ################################################## - - # Test using fixture 1 # - output = fmgr_query.fmgr_get_task_status(fmg_instance, fixture_data[0]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True diff --git a/test/units/modules/network/fortimanager/test_fmgr_script.py b/test/units/modules/network/fortimanager/test_fmgr_script.py deleted file mode 100644 index 6810497bb1..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_script.py +++ /dev/null @@ -1,129 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_script -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_script.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_set_script(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # script_content: get system status - # adom: ansible - # script_scope: None - # script_name: TestScript - # script_target: remote_device - # mode: set - # script_description: Create by Ansible - # script_package: None - # vdom: root - # script_type: cli - ################################################## - - # Test using fixture 1 # - output = fmgr_script.set_script(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - - -def test_delete_script(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # vdom: root - # script_target: None - # script_content: None - # adom: ansible - # script_description: None - # script_package: None - # mode: delete - # script_scope: None - # script_name: TestScript - # script_type: None - ################################################## - - # Test using fixture 1 # - output = fmgr_script.delete_script(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - - -def test_execute_script(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # script_content: None - # adom: ansible - # script_scope: FGT1 - # script_name: TestScript - # script_target: None - # mode: exec - # script_description: None - # script_package: None - # vdom: root - # script_type: None - ################################################## - - # Test using fixture 1 # - output = fmgr_script.execute_script(fmg_instance, fixture_data[0]['paramgram_used']) - assert isinstance(output['raw_response'], dict) is True diff --git a/test/units/modules/network/fortimanager/test_fmgr_secprof_appctrl.py b/test/units/modules/network/fortimanager/test_fmgr_secprof_appctrl.py deleted file mode 100644 index c49ee7a764..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_secprof_appctrl.py +++ /dev/null @@ -1,78 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_secprof_appctrl -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_secprof_appctrl.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_fmgr_application_list_modify(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - - # Test using fixture 1 # - output = fmgr_secprof_appctrl.fmgr_application_list_modify(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 2 # - output = fmgr_secprof_appctrl.fmgr_application_list_modify(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 3 # - output = fmgr_secprof_appctrl.fmgr_application_list_modify(fmg_instance, fixture_data[2]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 4 # - output = fmgr_secprof_appctrl.fmgr_application_list_modify(fmg_instance, fixture_data[3]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 diff --git a/test/units/modules/network/fortimanager/test_fmgr_secprof_av.py b/test/units/modules/network/fortimanager/test_fmgr_secprof_av.py deleted file mode 100644 index b6ab7302cc..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_secprof_av.py +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_secprof_av -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_secprof_av.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_fmgr_antivirus_profile_modify(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - - # Test using fixture 1 # - output = fmgr_secprof_av.fmgr_antivirus_profile_modify(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 2 # - output = fmgr_secprof_av.fmgr_antivirus_profile_modify(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 diff --git a/test/units/modules/network/fortimanager/test_fmgr_secprof_dns.py b/test/units/modules/network/fortimanager/test_fmgr_secprof_dns.py deleted file mode 100644 index c4b995b22a..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_secprof_dns.py +++ /dev/null @@ -1,88 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_secprof_dns -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_secprof_dns.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_fmgr_dnsfilter_profile_modify(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # comment: Created by Ansible Module TEST - # ftgd-dns: {'options': None, 'filters': {'action': None, 'category': None, 'log': None}} - # adom: root - # youtube-restrict: None - # sdns-domain-log: None - # block-botnet: None - # external-ip-blocklist: None - # block-action: block - # name: Ansible_DNS_Profile - # redirect-portal: None - # sdns-ftgd-err-log: None - # safe-search: None - # domain-filter: {'domain-filter-table': None} - # log-all-domain: None - # mode: set - ################################################## - - # Test using fixture 1 # - output = fmgr_secprof_dns.fmgr_dnsfilter_profile_modify(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 diff --git a/test/units/modules/network/fortimanager/test_fmgr_secprof_ips.py b/test/units/modules/network/fortimanager/test_fmgr_secprof_ips.py deleted file mode 100644 index 1d366176b6..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_secprof_ips.py +++ /dev/null @@ -1,69 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_secprof_ips -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_secprof_ips.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_fmgr_ips_sensor_modify(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - - # Test using fixture 1 # - output = fmgr_secprof_ips.fmgr_ips_sensor_modify(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 diff --git a/test/units/modules/network/fortimanager/test_fmgr_secprof_profile_group.py b/test/units/modules/network/fortimanager/test_fmgr_secprof_profile_group.py deleted file mode 100644 index d549cec5b9..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_secprof_profile_group.py +++ /dev/null @@ -1,112 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_secprof_profile_group -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_secprof_profile_group.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_fmgr_firewall_profile_group_modify(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - # Fixture sets used:########################### - - ################################################## - # ssl-ssh-profile: None - # waf-profile: None - # adom: root - # webfilter-profile: None - # profile-protocol-options: None - # application-list: None - # icap-profile: None - # voip-profile: None - # ips-sensor: None - # dnsfilter-profile: None - # av-profile: None - # spamfilter-profile: None - # dlp-sensor: None - # mode: delete - # ssh-filter-profile: None - # mms-profile: None - # name: Ansible_TEST_Profile_Group - ################################################## - ################################################## - # ssl-ssh-profile: None - # application-list: None - # waf-profile: None - # adom: root - # webfilter-profile: None - # ips-sensor: None - # spamfilter-profile: None - # icap-profile: None - # dnsfilter-profile: None - # name: Ansible_TEST_Profile_Group - # voip-profile: None - # av-profile: Ansible_AV_Profile - # mode: set - # dlp-sensor: None - # mms-profile: None - # ssh-filter-profile: None - # profile-protocol-options: default - ################################################## - - # Test using fixture 1 # - output = fmgr_secprof_profile_group.fmgr_firewall_profile_group_modify(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == -3 - # Test using fixture 2 # - output = fmgr_secprof_profile_group.fmgr_firewall_profile_group_modify(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == -10131 diff --git a/test/units/modules/network/fortimanager/test_fmgr_secprof_proxy.py b/test/units/modules/network/fortimanager/test_fmgr_secprof_proxy.py deleted file mode 100644 index 85da9309b9..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_secprof_proxy.py +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_secprof_proxy -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_secprof_proxy.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_fmgr_web_proxy_profile_modify(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - - # Test using fixture 1 # - output = fmgr_secprof_proxy.fmgr_web_proxy_profile_modify(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 2 # - output = fmgr_secprof_proxy.fmgr_web_proxy_profile_modify(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 diff --git a/test/units/modules/network/fortimanager/test_fmgr_secprof_spam.py b/test/units/modules/network/fortimanager/test_fmgr_secprof_spam.py deleted file mode 100644 index 9db77c7430..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_secprof_spam.py +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_secprof_spam -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_secprof_spam.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_fmgr_spamfilter_profile_modify(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - - # Test using fixture 1 # - output = fmgr_secprof_spam.fmgr_spamfilter_profile_modify(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 2 # - output = fmgr_secprof_spam.fmgr_spamfilter_profile_modify(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 diff --git a/test/units/modules/network/fortimanager/test_fmgr_secprof_ssl_ssh.py b/test/units/modules/network/fortimanager/test_fmgr_secprof_ssl_ssh.py deleted file mode 100644 index 54625283e0..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_secprof_ssl_ssh.py +++ /dev/null @@ -1,69 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_secprof_ssl_ssh -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_secprof_ssl_ssh.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_fmgr_firewall_ssl_ssh_profile_modify(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - output = fmgr_secprof_ssl_ssh.fmgr_firewall_ssl_ssh_profile_modify(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - output = fmgr_secprof_ssl_ssh.fmgr_firewall_ssl_ssh_profile_modify(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 diff --git a/test/units/modules/network/fortimanager/test_fmgr_secprof_voip.py b/test/units/modules/network/fortimanager/test_fmgr_secprof_voip.py deleted file mode 100644 index aec91ac22a..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_secprof_voip.py +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_secprof_voip -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_secprof_voip.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_fmgr_voip_profile_modify(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - - # Test using fixture 1 # - output = fmgr_secprof_voip.fmgr_voip_profile_modify(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 2 # - output = fmgr_secprof_voip.fmgr_voip_profile_modify(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 diff --git a/test/units/modules/network/fortimanager/test_fmgr_secprof_waf.py b/test/units/modules/network/fortimanager/test_fmgr_secprof_waf.py deleted file mode 100644 index 933689f7db..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_secprof_waf.py +++ /dev/null @@ -1,69 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_secprof_waf -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_secprof_waf.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_fmgr_waf_profile_modify(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - output = fmgr_secprof_waf.fmgr_waf_profile_modify(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - output = fmgr_secprof_waf.fmgr_waf_profile_modify(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 diff --git a/test/units/modules/network/fortimanager/test_fmgr_secprof_wanopt.py b/test/units/modules/network/fortimanager/test_fmgr_secprof_wanopt.py deleted file mode 100644 index 44949aaf47..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_secprof_wanopt.py +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_secprof_wanopt -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_secprof_wanopt.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_fmgr_wanopt_profile_modify(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - - # Test using fixture 1 # - output = fmgr_secprof_wanopt.fmgr_wanopt_profile_modify(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 - # Test using fixture 2 # - output = fmgr_secprof_wanopt.fmgr_wanopt_profile_modify(fmg_instance, fixture_data[1]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 diff --git a/test/units/modules/network/fortimanager/test_fmgr_secprof_web.py b/test/units/modules/network/fortimanager/test_fmgr_secprof_web.py deleted file mode 100644 index 189412055f..0000000000 --- a/test/units/modules/network/fortimanager/test_fmgr_secprof_web.py +++ /dev/null @@ -1,67 +0,0 @@ -# Copyright 2018 Fortinet, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <https://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler -import pytest - -try: - from ansible.modules.network.fortimanager import fmgr_secprof_web -except ImportError: - pytest.skip("Could not load required modules for testing", allow_module_level=True) - - -def load_fixtures(): - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format( - filename=os.path.splitext(os.path.basename(__file__))[0]) - try: - with open(fixture_path, "r") as fixture_file: - fixture_data = json.load(fixture_file) - except IOError: - return [] - return [fixture_data] - - -@pytest.fixture(autouse=True) -def module_mock(mocker): - connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule') - return connection_class_mock - - -@pytest.fixture(autouse=True) -def connection_mock(mocker): - connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_secprof_web.Connection') - return connection_class_mock - - -@pytest.fixture(scope="function", params=load_fixtures()) -def fixture_data(request): - func_name = request.function.__name__.replace("test_", "") - return request.param.get(func_name, None) - - -fmg_instance = FortiManagerHandler(connection_mock, module_mock) - - -def test_fmgr_webfilter_profile_modify(fixture_data, mocker): - mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request", - side_effect=fixture_data) - output = fmgr_secprof_web.fmgr_webfilter_profile_modify(fmg_instance, fixture_data[0]['paramgram_used']) - assert output['raw_response']['status']['code'] == 0 diff --git a/test/units/modules/network/ftd/test_ftd_configuration.py b/test/units/modules/network/ftd/test_ftd_configuration.py deleted file mode 100644 index a860ebabb5..0000000000 --- a/test/units/modules/network/ftd/test_ftd_configuration.py +++ /dev/null @@ -1,124 +0,0 @@ -# Copyright (c) 2018-2019 Cisco and/or its affiliates. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# - -from __future__ import absolute_import - -import pytest -from units.modules.utils import set_module_args, exit_json, fail_json, AnsibleFailJson, AnsibleExitJson - -from ansible.module_utils import basic -from ansible.module_utils.network.ftd.common import FtdConfigurationError, FtdServerError, FtdUnexpectedResponse -from ansible.module_utils.network.ftd.configuration import FtdInvalidOperationNameError, CheckModeException -from ansible.module_utils.network.ftd.fdm_swagger_client import ValidationError -from ansible.modules.network.ftd import ftd_configuration - - -class TestFtdConfiguration(object): - module = ftd_configuration - - @pytest.fixture(autouse=True) - def module_mock(self, mocker): - return mocker.patch.multiple(basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json) - - @pytest.fixture(autouse=True) - def connection_mock(self, mocker): - connection_class_mock = mocker.patch('ansible.modules.network.ftd.ftd_configuration.Connection') - return connection_class_mock.return_value - - @pytest.fixture - def resource_mock(self, mocker): - resource_class_mock = mocker.patch('ansible.modules.network.ftd.ftd_configuration.BaseConfigurationResource') - resource_instance = resource_class_mock.return_value - return resource_instance.execute_operation - - def test_module_should_fail_when_ftd_invalid_operation_name_error(self, resource_mock): - operation_name = 'test name' - resource_mock.side_effect = FtdInvalidOperationNameError(operation_name) - - result = self._run_module_with_fail_json({'operation': operation_name}) - assert result['failed'] - assert 'Invalid operation name provided: %s' % operation_name == result['msg'] - - def test_module_should_fail_when_ftd_configuration_error(self, resource_mock): - operation_name = 'test name' - msg = 'Foo error.' - resource_mock.side_effect = FtdConfigurationError(msg) - - result = self._run_module_with_fail_json({'operation': operation_name}) - assert result['failed'] - assert 'Failed to execute %s operation because of the configuration error: %s' % (operation_name, msg) == \ - result['msg'] - - def test_module_should_fail_when_ftd_server_error(self, resource_mock): - operation_name = 'test name' - code = 500 - response = {'error': 'foo'} - resource_mock.side_effect = FtdServerError(response, code) - - result = self._run_module_with_fail_json({'operation': operation_name}) - assert result['failed'] - assert 'Server returned an error trying to execute %s operation. Status code: %s. ' \ - 'Server response: %s' % (operation_name, code, response) == \ - result['msg'] - - def test_module_should_fail_when_validation_error(self, resource_mock): - operation_name = 'test name' - msg = 'Foo error.' - resource_mock.side_effect = ValidationError(msg) - - result = self._run_module_with_fail_json({'operation': operation_name}) - assert result['failed'] - assert msg == result['msg'] - - def test_module_should_fail_when_unexpected_server_response(self, resource_mock): - operation_name = 'test name' - msg = 'Foo error.' - resource_mock.side_effect = FtdUnexpectedResponse(msg) - - result = self._run_module_with_fail_json({'operation': operation_name}) - - assert result['failed'] - assert msg == result['msg'] - - def test_module_should_fail_when_check_mode_exception(self, resource_mock): - operation_name = 'test name' - msg = 'Foo error.' - resource_mock.side_effect = CheckModeException(msg) - - result = self._run_module({'operation': operation_name}) - assert not result['changed'] - - def test_module_should_run_successful(self, resource_mock): - operation_name = 'test name' - resource_mock.return_value = {'result': 'ok'} - - result = self._run_module({'operation': operation_name}) - assert result['response'] == {'result': 'ok'} - - def _run_module(self, module_args): - set_module_args(module_args) - with pytest.raises(AnsibleExitJson) as ex: - self.module.main() - return ex.value.args[0] - - def _run_module_with_fail_json(self, module_args): - set_module_args(module_args) - with pytest.raises(AnsibleFailJson) as exc: - self.module.main() - result = exc.value.args[0] - return result diff --git a/test/units/modules/network/ftd/test_ftd_file_download.py b/test/units/modules/network/ftd/test_ftd_file_download.py deleted file mode 100644 index ebb465e9eb..0000000000 --- a/test/units/modules/network/ftd/test_ftd_file_download.py +++ /dev/null @@ -1,98 +0,0 @@ -# Copyright (c) 2018 Cisco and/or its affiliates. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# - -from __future__ import absolute_import - -import pytest - -from ansible.module_utils import basic -from ansible.module_utils.network.ftd.common import HTTPMethod -from ansible.module_utils.network.ftd.fdm_swagger_client import FILE_MODEL_NAME, OperationField -from ansible.modules.network.ftd import ftd_file_download -from units.modules.utils import set_module_args, exit_json, fail_json, AnsibleFailJson, AnsibleExitJson - - -class TestFtdFileDownload(object): - module = ftd_file_download - - @pytest.fixture(autouse=True) - def module_mock(self, mocker): - return mocker.patch.multiple(basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json) - - @pytest.fixture - def connection_mock(self, mocker): - connection_class_mock = mocker.patch('ansible.modules.network.ftd.ftd_file_download.Connection') - return connection_class_mock.return_value - - @pytest.mark.parametrize("missing_arg", ['operation', 'destination']) - def test_module_should_fail_without_required_args(self, missing_arg): - module_args = {'operation': 'downloadFile', 'destination': '/tmp'} - del module_args[missing_arg] - set_module_args(module_args) - - with pytest.raises(AnsibleFailJson) as ex: - self.module.main() - - assert 'missing required arguments: %s' % missing_arg in str(ex.value) - - def test_module_should_fail_when_no_operation_spec_found(self, connection_mock): - connection_mock.get_operation_spec.return_value = None - set_module_args({'operation': 'nonExistingDownloadOperation', 'destination': '/tmp'}) - - with pytest.raises(AnsibleFailJson) as ex: - self.module.main() - - result = ex.value.args[0] - assert result['failed'] - assert result['msg'] == 'Operation with specified name is not found: nonExistingDownloadOperation' - - def test_module_should_fail_when_not_download_operation_specified(self, connection_mock): - connection_mock.get_operation_spec.return_value = { - OperationField.METHOD: HTTPMethod.GET, - OperationField.URL: '/object', - OperationField.MODEL_NAME: 'NetworkObject' - } - set_module_args({'operation': 'nonDownloadOperation', 'destination': '/tmp'}) - - with pytest.raises(AnsibleFailJson) as ex: - self.module.main() - - result = ex.value.args[0] - assert result['failed'] - assert result['msg'] == 'Invalid download operation: nonDownloadOperation. ' \ - 'The operation must make GET request and return a file.' - - def test_module_should_call_download_and_return(self, connection_mock): - connection_mock.validate_path_params.return_value = (True, None) - connection_mock.get_operation_spec.return_value = { - OperationField.METHOD: HTTPMethod.GET, - OperationField.URL: '/file/{objId}', - OperationField.MODEL_NAME: FILE_MODEL_NAME - } - - set_module_args({ - 'operation': 'downloadFile', - 'path_params': {'objId': '12'}, - 'destination': '/tmp' - }) - with pytest.raises(AnsibleExitJson) as ex: - self.module.main() - - result = ex.value.args[0] - assert not result['changed'] - connection_mock.download_file.assert_called_once_with('/file/{objId}', '/tmp', {'objId': '12'}) diff --git a/test/units/modules/network/ftd/test_ftd_file_upload.py b/test/units/modules/network/ftd/test_ftd_file_upload.py deleted file mode 100644 index addb012601..0000000000 --- a/test/units/modules/network/ftd/test_ftd_file_upload.py +++ /dev/null @@ -1,80 +0,0 @@ -from __future__ import absolute_import - -import pytest -from ansible.module_utils import basic -from units.modules.utils import set_module_args, exit_json, fail_json, AnsibleFailJson, AnsibleExitJson - -from ansible.modules.network.ftd import ftd_file_upload -from ansible.module_utils.network.ftd.fdm_swagger_client import OperationField -from ansible.module_utils.network.ftd.common import HTTPMethod - - -class TestFtdFileUpload(object): - module = ftd_file_upload - - @pytest.fixture(autouse=True) - def module_mock(self, mocker): - return mocker.patch.multiple(basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json) - - @pytest.fixture - def connection_mock(self, mocker): - connection_class_mock = mocker.patch('ansible.modules.network.ftd.ftd_file_upload.Connection') - return connection_class_mock.return_value - - @pytest.mark.parametrize("missing_arg", ['operation', 'file_to_upload']) - def test_module_should_fail_without_required_args(self, missing_arg): - module_args = {'operation': 'uploadFile', 'file_to_upload': '/tmp/test.txt'} - del module_args[missing_arg] - set_module_args(module_args) - - with pytest.raises(AnsibleFailJson) as ex: - self.module.main() - - assert 'missing required arguments: %s' % missing_arg in str(ex.value) - - def test_module_should_fail_when_no_operation_spec_found(self, connection_mock): - connection_mock.get_operation_spec.return_value = None - set_module_args({'operation': 'nonExistingUploadOperation', 'file_to_upload': '/tmp/test.txt'}) - - with pytest.raises(AnsibleFailJson) as ex: - self.module.main() - - result = ex.value.args[0] - assert result['failed'] - assert result['msg'] == 'Operation with specified name is not found: nonExistingUploadOperation' - - def test_module_should_fail_when_not_upload_operation_specified(self, connection_mock): - connection_mock.get_operation_spec.return_value = { - OperationField.METHOD: HTTPMethod.GET, - OperationField.URL: '/object/network', - OperationField.MODEL_NAME: 'NetworkObject' - } - set_module_args({'operation': 'nonUploadOperation', 'file_to_upload': '/tmp/test.txt'}) - - with pytest.raises(AnsibleFailJson) as ex: - self.module.main() - - result = ex.value.args[0] - assert result['failed'] - assert result['msg'] == 'Invalid upload operation: nonUploadOperation. ' \ - 'The operation must make POST request and return UploadStatus model.' - - def test_module_should_call_upload_and_return_response(self, connection_mock): - connection_mock.get_operation_spec.return_value = { - OperationField.METHOD: HTTPMethod.POST, - OperationField.URL: '/uploadFile', - OperationField.MODEL_NAME: 'FileUploadStatus' - } - connection_mock.upload_file.return_value = {'id': '123'} - - set_module_args({ - 'operation': 'uploadFile', - 'file_to_upload': '/tmp/test.txt' - }) - with pytest.raises(AnsibleExitJson) as ex: - self.module.main() - - result = ex.value.args[0] - assert result['changed'] - assert {'id': '123'} == result['response'] - connection_mock.upload_file.assert_called_once_with('/tmp/test.txt', '/uploadFile') diff --git a/test/units/modules/network/ftd/test_ftd_install.py b/test/units/modules/network/ftd/test_ftd_install.py deleted file mode 100644 index 88803b724f..0000000000 --- a/test/units/modules/network/ftd/test_ftd_install.py +++ /dev/null @@ -1,248 +0,0 @@ -# Copyright (c) 2019 Cisco and/or its affiliates. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# - -from __future__ import absolute_import - -import pytest -from units.compat.mock import PropertyMock -from ansible.module_utils import basic -from units.modules.utils import set_module_args, exit_json, fail_json, AnsibleFailJson, AnsibleExitJson - -from ansible.modules.network.ftd import ftd_install -from ansible.module_utils.network.ftd.device import FtdModel - -DEFAULT_MODULE_PARAMS = dict( - device_hostname="firepower", - device_username="admin", - device_password="pass", - device_new_password="newpass", - device_sudo_password="sudopass", - device_ip="192.168.0.1", - device_netmask="255.255.255.0", - device_gateway="192.168.0.254", - device_model=FtdModel.FTD_ASA5516_X, - dns_server="8.8.8.8", - console_ip="10.89.0.0", - console_port="2004", - console_username="console_user", - console_password="console_pass", - rommon_file_location="tftp://10.0.0.1/boot/ftd-boot-1.9.2.0.lfbff", - image_file_location="http://10.0.0.1/Release/ftd-6.2.3-83.pkg", - image_version="6.2.3-83", - search_domains="cisco.com", - force_install=False -) - - -class TestFtdInstall(object): - module = ftd_install - - @pytest.fixture(autouse=True) - def module_mock(self, mocker): - mocker.patch.multiple(basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json) - mocker.patch.object(basic.AnsibleModule, '_socket_path', new_callable=PropertyMock, create=True, - return_value=mocker.MagicMock()) - - @pytest.fixture(autouse=True) - def connection_mock(self, mocker): - connection_class_mock = mocker.patch('ansible.modules.network.ftd.ftd_install.Connection') - return connection_class_mock.return_value - - @pytest.fixture - def config_resource_mock(self, mocker): - resource_class_mock = mocker.patch('ansible.modules.network.ftd.ftd_install.BaseConfigurationResource') - return resource_class_mock.return_value - - @pytest.fixture(autouse=True) - def ftd_factory_mock(self, mocker): - return mocker.patch('ansible.modules.network.ftd.ftd_install.FtdPlatformFactory') - - @pytest.fixture(autouse=True) - def has_kick_mock(self, mocker): - return mocker.patch('ansible.module_utils.network.ftd.device.HAS_KICK', True) - - def test_module_should_fail_when_kick_is_not_installed(self, mocker): - mocker.patch('ansible.module_utils.network.ftd.device.HAS_KICK', False) - - set_module_args(dict(DEFAULT_MODULE_PARAMS)) - with pytest.raises(AnsibleFailJson) as ex: - self.module.main() - - result = ex.value.args[0] - assert result['failed'] - assert "Firepower-kickstart library is required to run this module" in result['msg'] - - def test_module_should_fail_when_platform_is_not_supported(self, config_resource_mock): - config_resource_mock.execute_operation.return_value = {'platformModel': 'nonSupportedModel'} - module_params = dict(DEFAULT_MODULE_PARAMS) - del module_params['device_model'] - - set_module_args(module_params) - with pytest.raises(AnsibleFailJson) as ex: - self.module.main() - - result = ex.value.args[0] - assert result['failed'] - assert result['msg'] == "Platform model 'nonSupportedModel' is not supported by this module." - - def test_module_should_fail_when_device_model_is_missing_with_local_connection(self, mocker): - mocker.patch.object(basic.AnsibleModule, '_socket_path', create=True, return_value=None) - module_params = dict(DEFAULT_MODULE_PARAMS) - del module_params['device_model'] - - set_module_args(module_params) - with pytest.raises(AnsibleFailJson) as ex: - self.module.main() - - result = ex.value.args[0] - assert result['failed'] - expected_msg = \ - "The following parameters are mandatory when the module is used with 'local' connection: device_model." - assert expected_msg == result['msg'] - - def test_module_should_fail_when_management_ip_values_are_missing_with_local_connection(self, mocker): - mocker.patch.object(basic.AnsibleModule, '_socket_path', create=True, return_value=None) - module_params = dict(DEFAULT_MODULE_PARAMS) - del module_params['device_ip'] - del module_params['device_netmask'] - del module_params['device_gateway'] - - set_module_args(module_params) - with pytest.raises(AnsibleFailJson) as ex: - self.module.main() - - result = ex.value.args[0] - assert result['failed'] - expected_msg = "The following parameters are mandatory when the module is used with 'local' connection: " \ - "device_gateway, device_ip, device_netmask." - assert expected_msg == result['msg'] - - def test_module_should_return_when_software_is_already_installed(self, config_resource_mock): - config_resource_mock.execute_operation.return_value = { - 'softwareVersion': '6.3.0-11', - 'platformModel': 'Cisco ASA5516-X Threat Defense' - } - module_params = dict(DEFAULT_MODULE_PARAMS) - module_params['image_version'] = '6.3.0-11' - - set_module_args(module_params) - with pytest.raises(AnsibleExitJson) as ex: - self.module.main() - - result = ex.value.args[0] - assert not result['changed'] - assert result['msg'] == 'FTD already has 6.3.0-11 version of software installed.' - - def test_module_should_proceed_if_software_is_already_installed_and_force_param_given(self, config_resource_mock): - config_resource_mock.execute_operation.return_value = { - 'softwareVersion': '6.3.0-11', - 'platformModel': 'Cisco ASA5516-X Threat Defense' - } - module_params = dict(DEFAULT_MODULE_PARAMS) - module_params['image_version'] = '6.3.0-11' - module_params['force_install'] = True - - set_module_args(module_params) - with pytest.raises(AnsibleExitJson) as ex: - self.module.main() - - result = ex.value.args[0] - assert result['changed'] - assert result['msg'] == 'Successfully installed FTD image 6.3.0-11 on the firewall device.' - - def test_module_should_install_ftd_image(self, config_resource_mock, ftd_factory_mock): - config_resource_mock.execute_operation.side_effect = [ - { - 'softwareVersion': '6.2.3-11', - 'platformModel': 'Cisco ASA5516-X Threat Defense' - } - ] - module_params = dict(DEFAULT_MODULE_PARAMS) - - set_module_args(module_params) - with pytest.raises(AnsibleExitJson) as ex: - self.module.main() - - result = ex.value.args[0] - assert result['changed'] - assert result['msg'] == 'Successfully installed FTD image 6.2.3-83 on the firewall device.' - ftd_factory_mock.create.assert_called_once_with('Cisco ASA5516-X Threat Defense', DEFAULT_MODULE_PARAMS) - ftd_factory_mock.create.return_value.install_ftd_image.assert_called_once_with(DEFAULT_MODULE_PARAMS) - - def test_module_should_fill_management_ip_values_when_missing(self, config_resource_mock, ftd_factory_mock): - config_resource_mock.execute_operation.side_effect = [ - { - 'softwareVersion': '6.3.0-11', - 'platformModel': 'Cisco ASA5516-X Threat Defense' - }, - { - 'items': [{ - 'ipv4Address': '192.168.1.1', - 'ipv4NetMask': '255.255.255.0', - 'ipv4Gateway': '192.168.0.1' - }] - } - ] - module_params = dict(DEFAULT_MODULE_PARAMS) - expected_module_params = dict(module_params) - del module_params['device_ip'] - del module_params['device_netmask'] - del module_params['device_gateway'] - expected_module_params.update( - device_ip='192.168.1.1', - device_netmask='255.255.255.0', - device_gateway='192.168.0.1' - ) - - set_module_args(module_params) - with pytest.raises(AnsibleExitJson): - self.module.main() - - ftd_factory_mock.create.assert_called_once_with('Cisco ASA5516-X Threat Defense', expected_module_params) - ftd_factory_mock.create.return_value.install_ftd_image.assert_called_once_with(expected_module_params) - - def test_module_should_fill_dns_server_when_missing(self, config_resource_mock, ftd_factory_mock): - config_resource_mock.execute_operation.side_effect = [ - { - 'softwareVersion': '6.3.0-11', - 'platformModel': 'Cisco ASA5516-X Threat Defense' - }, - { - 'items': [{ - 'dnsServerGroup': { - 'id': '123' - } - }] - }, - { - 'dnsServers': [{ - 'ipAddress': '8.8.9.9' - }] - } - ] - module_params = dict(DEFAULT_MODULE_PARAMS) - expected_module_params = dict(module_params) - del module_params['dns_server'] - expected_module_params['dns_server'] = '8.8.9.9' - - set_module_args(module_params) - with pytest.raises(AnsibleExitJson): - self.module.main() - - ftd_factory_mock.create.assert_called_once_with('Cisco ASA5516-X Threat Defense', expected_module_params) - ftd_factory_mock.create.return_value.install_ftd_image.assert_called_once_with(expected_module_params) diff --git a/test/units/modules/network/icx/fixtures/configure_terminal b/test/units/modules/network/icx/fixtures/configure_terminal deleted file mode 100644 index e69de29bb2..0000000000 --- a/test/units/modules/network/icx/fixtures/configure_terminal +++ /dev/null diff --git a/test/units/modules/network/icx/fixtures/icx_banner_show_banner.txt b/test/units/modules/network/icx/fixtures/icx_banner_show_banner.txt deleted file mode 100644 index 4847885148..0000000000 --- a/test/units/modules/network/icx/fixtures/icx_banner_show_banner.txt +++ /dev/null @@ -1,16 +0,0 @@ -banner motd require-enter-key -banner motd $ -welcome -new user -$ -! -interface ethernet 1/1/1 - port-name port name - disable - speed-duplex 10-full - inline power power-limit 7000 -! -interface ethernet 1/1/2 - speed-duplex 10-full - inline power power-limit 3000 -!
\ No newline at end of file diff --git a/test/units/modules/network/icx/fixtures/icx_config_config.cfg b/test/units/modules/network/icx/fixtures/icx_config_config.cfg deleted file mode 100644 index e57790ea8a..0000000000 --- a/test/units/modules/network/icx/fixtures/icx_config_config.cfg +++ /dev/null @@ -1,11 +0,0 @@ -! -hostname router -! -interface ethernet 1/1/4 - port-name test-interface-4 - speed-duplex 10-full -! -interface ethernet 1/1/5 - port-name port5 - ip address 172.18.20.4 255.255.255.0 -!
\ No newline at end of file diff --git a/test/units/modules/network/icx/fixtures/icx_config_src.cfg b/test/units/modules/network/icx/fixtures/icx_config_src.cfg deleted file mode 100644 index a4a3468e31..0000000000 --- a/test/units/modules/network/icx/fixtures/icx_config_src.cfg +++ /dev/null @@ -1,10 +0,0 @@ -! -hostname foo -! -interface ethernet 1/1/4 - disable -! -interface ethernet 1/1/5 - port-name port5 - ip address 172.18.20.4 255.255.255.0 -! diff --git a/test/units/modules/network/icx/fixtures/icx_copy.txt b/test/units/modules/network/icx/fixtures/icx_copy.txt deleted file mode 100644 index b4165c1968..0000000000 --- a/test/units/modules/network/icx/fixtures/icx_copy.txt +++ /dev/null @@ -1,2 +0,0 @@ -Translating hostname client fileserver.alethea.in .... -......
\ No newline at end of file diff --git a/test/units/modules/network/icx/fixtures/icx_interface_config.cfg b/test/units/modules/network/icx/fixtures/icx_interface_config.cfg deleted file mode 100644 index 8365ebfea8..0000000000 --- a/test/units/modules/network/icx/fixtures/icx_interface_config.cfg +++ /dev/null @@ -1,91 +0,0 @@ -lag blue static id 11 - ports ethe 1/1/1 - port-name test-interface-1 ethernet 1/1/1 -! -interface ethernet 1/1/1 - port-name test-interface-1 - speed-duplex 10-full -! -interface ethernet 1/1/2 - port-name test-interface-2 - speed-duplex 10-full - inline power power-limit 2000 -! -interface ethernet 1/1/48 - inline power power-by-class 2 -! -interface ethernet 1/1/3 - speed-duplex 10-full - inline power power-limit 3000 -! -interface loopback 10 - port-name loopback10 - disable -! -interface lag 11 - port-name lag ports - speed-duplex 10-full -! - -GigabitEthernet1/1/1 is up, line protocol is up - Port up for 18 hour(s) 40 minute(s) 16 second(s) - Hardware is GigabitEthernet, address is 609c.9fe7.d130 (bia 609c.9fe7.d130) - Configured speed 10Mbit, actual 10Mbit, configured duplex fdx, actual fdx - Configured mdi mode AUTO, actual MDI - Member of L2 VLAN ID 1, port is untagged, port state is FORWARDING - BPDU guard is Disabled, ROOT protect is Disabled, Designated protect is Disabled - Link Error Dampening is Disabled - STP configured to ON, priority is level0, mac-learning is enabled - Openflow is Disabled, Openflow Hybrid mode is Disabled, Flow Control is config enabled, oper enabled, negotiation disabled - Mirror disabled, Monitor disabled - Mac-notification is disabled - Member of active trunk ports 1/1/1,1/1/2,1/1/4,lg11, Lag Interface is lg11 - Member of configured trunk ports 1/1/1,1/1/2,1/1/4,lg11, Lag Interface is lg11 - Port name is test-interface-1 - IPG MII 0 bits-time, IPG GMII 0 bits-time - MTU 1500 bytes, encapsulation ethernet - MMU Mode is Store-and-forward - 300 second input rate: 88 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 616 bits/sec, 0 packets/sec, 0.00% utilization - 14836 packets input, 2695975 bytes, 0 no buffer - Received 3223 broadcasts, 11613 multicasts, 0 unicasts - 2 input errors, 2 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - 64676 packets output, 5181136 bytes, 0 underruns - Transmitted 28724 broadcasts, 35952 multicasts, 0 unicasts - 0 output errors, 0 collisions - Relay Agent Information option: Disabled - Protected: No - MAC Port Security: Disabled - - This port is not being monitored for queue drops -Egress queues: -Queue counters Queued packets Dropped Packets - 0 6682 0 - 1 0 0 - 2 0 0 - 3 0 0 - 4 22042 0 - 5 20 0 - 6 33680 0 - 7 2252 0 - - -Local port: 1/1/48 - Neighbor: 609c.9fe7.d15f, TTL 95 seconds - + Chassis ID (MAC address): 609c.9fe7.d130 - + Port ID (MAC address): 609c.9fe7.d15f - + Time to live: 120 seconds - + System name : "ICX7150-48 Router" - + Port description : "GigabitEthernet1/1/48" - + System capabilities : bridge, router - Enabled capabilities: bridge, router - + 802.3 MAC/PHY : auto-negotiation enabled - Advertised capabilities: 10BaseT-HD, 10BaseT-FD, 100BaseTX-HD, - 100BaseTX-FD, fdxSPause, fdxBPause, - 1000BaseT-HD, 1000BaseT-FD - Operational MAU type : 1000BaseT-FD - + Link aggregation: not capable - + Maximum frame size: 1522 octets - + Port VLAN ID: 1 - + Management address (IPv4): 172.16.10.182 diff --git a/test/units/modules/network/icx/fixtures/icx_lldp_None b/test/units/modules/network/icx/fixtures/icx_lldp_None deleted file mode 100644 index e69de29bb2..0000000000 --- a/test/units/modules/network/icx/fixtures/icx_lldp_None +++ /dev/null diff --git a/test/units/modules/network/icx/fixtures/icx_lldp_absent b/test/units/modules/network/icx/fixtures/icx_lldp_absent deleted file mode 100644 index 163439739c..0000000000 --- a/test/units/modules/network/icx/fixtures/icx_lldp_absent +++ /dev/null @@ -1,9 +0,0 @@ -LLDP transmit interval : 30 seconds -LLDP transmit hold multiplier : 4 (transmit TTL: 120 seconds) -LLDP transmit delay : 2 seconds -LLDP SNMP notification interval : 5 seconds -LLDP reinitialize delay : 2 seconds -LLDP-MED fast start repeat count : 3 - -LLDP maximum neighbors : 2048 -LLDP maximum neighbors per port : 4 diff --git a/test/units/modules/network/icx/fixtures/icx_lldp_present b/test/units/modules/network/icx/fixtures/icx_lldp_present deleted file mode 100644 index 680c076709..0000000000 --- a/test/units/modules/network/icx/fixtures/icx_lldp_present +++ /dev/null @@ -1 +0,0 @@ -LLDP is not running
\ No newline at end of file diff --git a/test/units/modules/network/icx/fixtures/icx_logging_config.cfg b/test/units/modules/network/icx/fixtures/icx_logging_config.cfg deleted file mode 100644 index da94326353..0000000000 --- a/test/units/modules/network/icx/fixtures/icx_logging_config.cfg +++ /dev/null @@ -1,17 +0,0 @@ -logging host 172.16.10.21 -logging host 172.16.10.21 udp-port 2000 -logging host 172.16.10.22 -logging host 172.16.10.23 udp-port 2500 -logging host 172.16.10.55 udp-port 2500 -logging facility local1 -logging host ipv6 2001:db8::1 udp-port 5500 -logging buffered 200 -no logging buffered critical -no logging buffered debugging -no logging buffered emergencies -no logging buffered errors -no logging buffered informational -no logging buffered notifications -logging enable rfc5424 -logging console -logging persistence
\ No newline at end of file diff --git a/test/units/modules/network/icx/fixtures/icx_ping_ping_10.255.255.250_count_2 b/test/units/modules/network/icx/fixtures/icx_ping_ping_10.255.255.250_count_2 deleted file mode 100644 index 1d9dfd44a2..0000000000 --- a/test/units/modules/network/icx/fixtures/icx_ping_ping_10.255.255.250_count_2 +++ /dev/null @@ -1,4 +0,0 @@ -Sending 1, 16-byte ICMP Echo to 10.255.255.250, timeout 100 msec, TTL 64 -Type Control-c to abort -Request timed out. -No reply from remote host.
\ No newline at end of file diff --git a/test/units/modules/network/icx/fixtures/icx_ping_ping_10.255.255.250_count_2_timeout_45 b/test/units/modules/network/icx/fixtures/icx_ping_ping_10.255.255.250_count_2_timeout_45 deleted file mode 100644 index 1d9dfd44a2..0000000000 --- a/test/units/modules/network/icx/fixtures/icx_ping_ping_10.255.255.250_count_2_timeout_45 +++ /dev/null @@ -1,4 +0,0 @@ -Sending 1, 16-byte ICMP Echo to 10.255.255.250, timeout 100 msec, TTL 64 -Type Control-c to abort -Request timed out. -No reply from remote host.
\ No newline at end of file diff --git a/test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_count_2 b/test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_count_2 deleted file mode 100644 index 3b775361c2..0000000000 --- a/test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_count_2 +++ /dev/null @@ -1,5 +0,0 @@ -Sending 2, 16-byte ICMP Echo to 8.8.8.8, timeout 5000 msec, TTL 64 -Type Control-c to abort -Reply from 8.8.8.8 : bytes=16 time=49ms TTL=45 -Reply from 8.8.8.8 : bytes=16 time=41ms TTL=45 -Success rate is 100 percent (2/2), round-trip min/avg/max=41/45/49 ms.
\ No newline at end of file diff --git a/test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_count_5_ttl_70 b/test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_count_5_ttl_70 deleted file mode 100644 index 2f9dcabf16..0000000000 --- a/test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_count_5_ttl_70 +++ /dev/null @@ -1,8 +0,0 @@ -Sending 5, 16-byte ICMP Echo to 8.8.8.8, timeout 5000 msec, TTL 70 -Type Control-c to abort -Reply from 8.8.8.8 : bytes=16 time=40ms TTL=45 -Reply from 8.8.8.8 : bytes=16 time=40ms TTL=45 -Reply from 8.8.8.8 : bytes=16 time=40ms TTL=45 -Reply from 8.8.8.8 : bytes=16 time=40ms TTL=45 -Reply from 8.8.8.8 : bytes=16 time=40ms TTL=45 -Success rate is 100 percent (5/5), round-trip min/avg/max=40/40/40 ms.
\ No newline at end of file diff --git a/test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_size_10001 b/test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_size_10001 deleted file mode 100644 index c067988b78..0000000000 --- a/test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_size_10001 +++ /dev/null @@ -1 +0,0 @@ -Invalid size - valid range (0-10000)
\ No newline at end of file diff --git a/test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_ttl_300 b/test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_ttl_300 deleted file mode 100644 index d40ed2870d..0000000000 --- a/test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_ttl_300 +++ /dev/null @@ -1 +0,0 @@ -Bad value for TTL, valid range is from 1 to 255.
\ No newline at end of file diff --git a/test/units/modules/network/icx/fixtures/icx_static_route_config.txt b/test/units/modules/network/icx/fixtures/icx_static_route_config.txt deleted file mode 100644 index 19381bcef5..0000000000 --- a/test/units/modules/network/icx/fixtures/icx_static_route_config.txt +++ /dev/null @@ -1,8 +0,0 @@ -ip route 172.16.0.0/16 10.0.0.8 -ip route 172.16.10.0/24 10.0.0.8 -ip route 192.0.0.0/8 10.10.15.3 -ip route 192.126.0.0/16 10.10.14.31 -ip route 192.126.23.0/24 10.10.14.31 -ip route 192.128.0.0/16 10.10.14.3 -ip route 192.128.0.0/16 10.10.15.3 -ip route 192.128.0.0/16 10.10.15.31
\ No newline at end of file diff --git a/test/units/modules/network/icx/fixtures/icx_system.txt b/test/units/modules/network/icx/fixtures/icx_system.txt deleted file mode 100644 index 1f6663b779..0000000000 --- a/test/units/modules/network/icx/fixtures/icx_system.txt +++ /dev/null @@ -1,7 +0,0 @@ -ip dns domain-list ansib.eg.com -ip dns domain-list red.com -ip dns domain-list test1.com -ip dns server-address 10.22.22.64 -ip dns server-address 172.22.22.64 -radius-server host 172.16.20.14 auth-port 1837 acct-port 5021 accounting-only key database mac-auth -tacacs-server host 182.16.10.20
\ No newline at end of file diff --git a/test/units/modules/network/icx/fixtures/icx_vlan_config b/test/units/modules/network/icx/fixtures/icx_vlan_config deleted file mode 100644 index b42e30f31b..0000000000 --- a/test/units/modules/network/icx/fixtures/icx_vlan_config +++ /dev/null @@ -1,32 +0,0 @@ -************show vlan brief***************** -System-max vlan Params: Max(4095) Default(64) Current(64) -Default vlan Id :1 -Total Number of Vlan Configured :5 -VLANs Configured :1 3 6 10 21 - - -************* show vlan id********** -Maximum PORT-VLAN entries: 64 - -Legend: [Stk=Stack-Id, S=Slot] - -PORT-VLAN 3, Name vlan, Priority level0, Spanning tree On - Untagged Ports: (U1/M1) 1 2 3 4 5 7 20 21 22 23 24 25 - Untagged Ports: (U1/M1) 26 27 28 - Untagged Ports: (LAG) 11 12 15 - Tagged Ports: (U1/M1) 9 10 11 31 - Tagged Ports: (LAG) 13 - Uplink Ports: None - DualMode Ports: None - Mac-Vlan Ports: None - Monitoring: Disabled - -************* show run vlan id********** -vlan 3 name vlan by port - tagged ethe 1/1/31 ethe 1/1/9 to 1/1/11 lag 13 - untagged ethe 1/1/27 ethe 1/1/20 to 1/1/22 lag 11 to 12 - spanning-tree -! -! - - diff --git a/test/units/modules/network/icx/fixtures/lag_running_config.txt b/test/units/modules/network/icx/fixtures/lag_running_config.txt deleted file mode 100644 index fdec5106ff..0000000000 --- a/test/units/modules/network/icx/fixtures/lag_running_config.txt +++ /dev/null @@ -1,7 +0,0 @@ -lag LAG1 dynamic id 100 - ports ethe 1/1/3 ethe 1/1/5 to 1/1/8 - disable ethe 1/1/3 ethe 1/1/5 to 1/1/8 -! -lag LAG2 dynamic id 200 - ports ethe 1/1/11 ethe 1/1/13 ethe 1/1/15 - disable ethe 1/1/11 ethe 1/1/13 ethe 1/1/15
\ No newline at end of file diff --git a/test/units/modules/network/icx/fixtures/show_flash b/test/units/modules/network/icx/fixtures/show_flash deleted file mode 100644 index fff40e91a6..0000000000 --- a/test/units/modules/network/icx/fixtures/show_flash +++ /dev/null @@ -1,6 +0,0 @@ -Stack unit 1: - NAND Type: Micron NAND 2GiB (x 1) - Compressed Pri Code size = 25966800, Version:08.0.80bT211 (primary.bin) - Compressed Sec Code size = 29451996, Version:08.0.70dT213 (SPR08070d.bin) - Compressed Boot-Monitor Image size = 786944, Version:10.1.09T225 - Code Flash Free Space = 1318699008 diff --git a/test/units/modules/network/icx/fixtures/show_interfaces b/test/units/modules/network/icx/fixtures/show_interfaces deleted file mode 100644 index d6d0e5760e..0000000000 --- a/test/units/modules/network/icx/fixtures/show_interfaces +++ /dev/null @@ -1,85 +0,0 @@ -GigabitEthernet1/1/1 is down, line protocol is down - Port down for 2 day(s) 23 hour(s) 4 minute(s) 18 second(s) - Hardware is GigabitEthernet, address is 609c.9fe7.d600 (bia 609c.9fe7.d600) - Configured speed 10Mbit, actual unknown, configured duplex fdx, actual unknown - Configured mdi mode AUTO, actual unknown - Member of L2 VLAN ID 1, port is untagged, port state is BLOCKING - BPDU guard is Disabled, ROOT protect is Disabled, Designated protect is Disabled - Link Error Dampening is Disabled - STP configured to ON, priority is level0, mac-learning is enabled - Openflow is Disabled, Openflow Hybrid mode is Disabled, Flow Control is config enabled, oper enabled, negotiation disabled - Mirror disabled, Monitor disabled - Mac-notification is disabled - Not member of any active trunks - Not member of any configured trunks - Port name is test name - IPG MII 0 bits-time, IPG GMII 0 bits-time - Internet address is 192.168.1.1/24, MTU 1500 bytes, encapsulation ethernet - MMU Mode is Store-and-forward - 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 0 packets input, 0 bytes, 0 no buffer - Received 0 broadcasts, 0 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts - 0 output errors, 0 collisions - Relay Agent Information option: Disabled - Protected: No - MAC Port Security: Disabled - - This port is not being monitored for queue drops -Egress queues: -Queue counters Queued packets Dropped Packets - 0 0 0 - 1 0 0 - 2 0 0 - 3 0 0 - 4 0 0 - 5 0 0 - 6 0 0 - 7 0 0 - -GigabitEthernet1/1/2 is down, line protocol is down - Port down for 2 day(s) 23 hour(s) 4 minute(s) 18 second(s) - Hardware is GigabitEthernet, address is 609c.9fe7.d601 (bia 609c.9fe7.d601) - Configured speed auto, actual unknown, configured duplex fdx, actual unknown - Configured mdi mode AUTO, actual unknown - Member of L2 VLAN ID 1, port is untagged, port state is BLOCKING - BPDU guard is Disabled, ROOT protect is Disabled, Designated protect is Disabled - Link Error Dampening is Disabled - STP configured to ON, priority is level0, mac-learning is enabled - Openflow is Disabled, Openflow Hybrid mode is Disabled, Flow Control is config enabled, oper enabled, negotiation disabled - Mirror disabled, Monitor disabled - Mac-notification is disabled - Not member of any active trunks - Not member of any configured trunks - No port name - IPG MII 0 bits-time, IPG GMII 0 bits-time - MTU 1500 bytes, encapsulation ethernet - MMU Mode is Store-and-forward - 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 0 packets input, 0 bytes, 0 no buffer - Received 0 broadcasts, 0 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts - 0 output errors, 0 collisions - Relay Agent Information option: Disabled - Protected: No - MAC Port Security: Disabled - - This port is not being monitored for queue drops -Egress queues: -Queue counters Queued packets Dropped Packets - 0 0 0 - 1 0 0 - 2 0 0 - 3 0 0 - 4 0 0 - 5 0 0 - 6 0 0 - 7 0 0 diff --git a/test/units/modules/network/icx/fixtures/show_lldp b/test/units/modules/network/icx/fixtures/show_lldp deleted file mode 100644 index 163439739c..0000000000 --- a/test/units/modules/network/icx/fixtures/show_lldp +++ /dev/null @@ -1,9 +0,0 @@ -LLDP transmit interval : 30 seconds -LLDP transmit hold multiplier : 4 (transmit TTL: 120 seconds) -LLDP transmit delay : 2 seconds -LLDP SNMP notification interval : 5 seconds -LLDP reinitialize delay : 2 seconds -LLDP-MED fast start repeat count : 3 - -LLDP maximum neighbors : 2048 -LLDP maximum neighbors per port : 4 diff --git a/test/units/modules/network/icx/fixtures/show_lldp_neighbors_detail b/test/units/modules/network/icx/fixtures/show_lldp_neighbors_detail deleted file mode 100644 index e69de29bb2..0000000000 --- a/test/units/modules/network/icx/fixtures/show_lldp_neighbors_detail +++ /dev/null diff --git a/test/units/modules/network/icx/fixtures/show_media b/test/units/modules/network/icx/fixtures/show_media deleted file mode 100644 index 22cc87fd80..0000000000 --- a/test/units/modules/network/icx/fixtures/show_media +++ /dev/null @@ -1,2 +0,0 @@ -Port 1/1/1: Type : 1G M-C (Gig-Copper) -Port 1/1/2: Type : 1G M-C (Gig-Copper) diff --git a/test/units/modules/network/icx/fixtures/show_memory b/test/units/modules/network/icx/fixtures/show_memory deleted file mode 100644 index 7e4e070ac0..0000000000 --- a/test/units/modules/network/icx/fixtures/show_memory +++ /dev/null @@ -1,3 +0,0 @@ -Stack unit 1: -Total DRAM: 954695680 bytes - Dynamic memory: 954695680 bytes total, 375963648 bytes free, 60% used
\ No newline at end of file diff --git a/test/units/modules/network/icx/fixtures/show_running-config b/test/units/modules/network/icx/fixtures/show_running-config deleted file mode 100644 index dc4c912de0..0000000000 --- a/test/units/modules/network/icx/fixtures/show_running-config +++ /dev/null @@ -1,76 +0,0 @@ -Current configuration: -! -ver 08.0.70dT213 -! -stack unit 1 - module 1 icx7150-48-port-management-module - module 2 icx7150-2-copper-port-2g-module - module 3 icx7150-4-sfp-plus-port-40g-module -! -! -! -lag LAG1 dynamic id 100 - ports ethe 1/1/4 to 1/1/7 -! -lag LAG2 dynamic id 200 - ports ethe 1/1/12 to 1/1/15 -! -! -! -! -! -! -! -! -! -aaa authentication enable implicit-user -aaa authentication login default local -enable super-user-password ..... -hostname ruchusRouter148 -ip dns domain-list fileserver.alethea.in -ip dns server-address 8.8.8.8 -! -username alethea password ..... -username ale6 password ..... -! -! -banner exec ^C -welcome icx exec^C -^C -! -banner motd ^C -welcome icx motd^C -^C -! -banner incoming ^C -welcome icx incomingg^C -^C -! -! -! -! -! -! -! -! -interface management 1 - no ip dhcp-client enable - ip address 10.10.10.148 255.255.255.0 -! -interface ethernet 1/1/1 - port-name test name - ip address 192.168.1.1 255.255.255.0 - ipv6 address 2001:db8:85a3::8a2e:370:7334/64 - speed-duplex 10-full -! -! -! -! -! -lldp run -! -! -! -! -! -end diff --git a/test/units/modules/network/icx/fixtures/show_running-config_begin_interface b/test/units/modules/network/icx/fixtures/show_running-config_begin_interface deleted file mode 100644 index 10bdbb9958..0000000000 --- a/test/units/modules/network/icx/fixtures/show_running-config_begin_interface +++ /dev/null @@ -1,77 +0,0 @@ -router-interface ve 1 -! -! -! -! -! -! -! -! -! -! -! -! -! -aaa authentication enable implicit-user -aaa authentication login default local -enable super-user-password ..... -hostname ruchusRouter148 -ip dns domain-list fileserver.alethea.in -ip dns server-address 8.8.8.8 -! -username alethea password ..... -username ale6 password ..... -! -! -banner exec ^C -welcome icx exec^C -^C -! -banner motd ^C -welcome icx motd^C -^C -! -banner incoming ^C -welcome icx incomingg^C -^C -! -! -! -! -! -! -! -! -interface management 1 - no ip dhcp-client enable - ip address 10.10.10.148 255.255.255.0 -! -interface ethernet 1/1/1 - port-name test name - ip address 192.160.1.1 255.255.255.0 - ipv6 address 2001:db8:85a3::8a2e:370:7334/64 - ipv6 address 2001:db8:85a3:0:0:0:0:0/64 - ip address 192.168.1.1 255.255.255.0 - ipv6 ospf area 1 - ip ospf area 2 - speed-duplex 10-full -! -interface ethernet 1/1/2 - ip address 192.161.1.1 255.255.255.0 - ip address 192.168.255.1 255.255.255.0 -! -interface ve 1 - ip address 10.1.2.1 255.255.255.0 - ip address 192.163.1.1 255.255.255.0 -! -! -! -! -! -lldp run -! -! -! -! -! -end diff --git a/test/units/modules/network/icx/fixtures/show_running-config_include_hostname b/test/units/modules/network/icx/fixtures/show_running-config_include_hostname deleted file mode 100644 index 6835875d3a..0000000000 --- a/test/units/modules/network/icx/fixtures/show_running-config_include_hostname +++ /dev/null @@ -1 +0,0 @@ -hostname ruchusRouter148
\ No newline at end of file diff --git a/test/units/modules/network/icx/fixtures/show_running-config_include_username.txt b/test/units/modules/network/icx/fixtures/show_running-config_include_username.txt deleted file mode 100644 index 336427bda8..0000000000 --- a/test/units/modules/network/icx/fixtures/show_running-config_include_username.txt +++ /dev/null @@ -1,8 +0,0 @@ -username ale1 privilege 5 password ..... -username ale1 expires 3 -username ale2 privilege 5 password ..... -username ale2 expires 3 -username ale3 privilege 5 password ..... -username ale3 expires 3 -username ale4 privilege 5 password ..... -username ale4 expires 3
\ No newline at end of file diff --git a/test/units/modules/network/icx/fixtures/show_version b/test/units/modules/network/icx/fixtures/show_version deleted file mode 100644 index 5559427cb1..0000000000 --- a/test/units/modules/network/icx/fixtures/show_version +++ /dev/null @@ -1,26 +0,0 @@ -Copyright (c) 1996-2017 Brocade Communications Systems, Inc. All rights reserved. - UNIT 1: compiled on Feb 17 2017 at 16:03:13 labeled as SPS08060 - (23946048 bytes) from Secondary SPS08060.bin - SW: Version 08.0.60T211 - Compressed Boot-Monitor Image size = 786944, Version:10.1.09T225 (mnz10109) - Compiled on Sat Feb 18 00:15:43 2017 - - HW: Stackable ICX7150-48-POE -========================================================================== -UNIT 1: SL 1: ICX7150-48P-4X1G POE 48-port Management Module - Serial #:FEC3220N00C - Current License: 4X1G - P-ASIC 0: type B160, rev 11 Chip BCM56160_B0 -========================================================================== -UNIT 1: SL 2: ICX7150-2X1GC 2-port 2G Module -========================================================================== -UNIT 1: SL 3: ICX7150-4X10GF 4-port 40G Module -========================================================================== - 1000 MHz ARM processor ARMv7 88 MHz bus - 8192 KB boot flash memory - 2048 MB code flash memory - 1024 MB DRAM -STACKID 1 system uptime is 4 day(s) 19 hour(s) 53 minute(s) 5 second(s) -The system started at 00:01:49 GMT+00 Sat Jan 01 2000 - -The system : started=cold start
\ No newline at end of file diff --git a/test/units/modules/network/icx/fixtures/skip b/test/units/modules/network/icx/fixtures/skip deleted file mode 100644 index 66cd422fb2..0000000000 --- a/test/units/modules/network/icx/fixtures/skip +++ /dev/null @@ -1 +0,0 @@ -Disable page display mode
\ No newline at end of file diff --git a/test/units/modules/network/icx/icx_module.py b/test/units/modules/network/icx/icx_module.py deleted file mode 100644 index f3f9e92f2a..0000000000 --- a/test/units/modules/network/icx/icx_module.py +++ /dev/null @@ -1,93 +0,0 @@ -# Copyright: (c) 2019, Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json - -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase - - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(name): - path = os.path.join(fixture_path, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as f: - data = f.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class TestICXModule(ModuleTestCase): - ENV_ICX_USE_DIFF = True - - def set_running_config(self): - self.ENV_ICX_USE_DIFF = self.get_running_config() - - def get_running_config(self, compare=None): - if compare is not None: - diff = compare - elif os.environ.get('ANSIBLE_CHECK_ICX_RUNNING_CONFIG') is not None: - if os.environ.get('ANSIBLE_CHECK_ICX_RUNNING_CONFIG') == 'False': - diff = False - else: - diff = True - else: - diff = True - return diff - - def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False, fields=None): - - self.load_fixtures(commands) - - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - if commands is not None: - if sort: - self.assertEqual(sorted(commands), sorted(result['commands'])) - else: - self.assertEqual(commands, result['commands'], result['commands']) - - if fields is not None: - for key in fields: - if fields.get(key) is not None: - self.assertEqual(fields.get(key), result.get(key)) - - return result - - def failed(self): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def changed(self, changed=False): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertEqual(result['changed'], changed, result) - return result - - def load_fixtures(self, commands=None): - pass diff --git a/test/units/modules/network/icx/test_icx_banner.py b/test/units/modules/network/icx/test_icx_banner.py deleted file mode 100644 index 4217410725..0000000000 --- a/test/units/modules/network/icx/test_icx_banner.py +++ /dev/null @@ -1,96 +0,0 @@ -# Copyright: (c) 2019, Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type -from units.compat.mock import patch -from ansible.modules.network.icx import icx_banner -from units.modules.utils import set_module_args -from .icx_module import TestICXModule, load_fixture - - -class TestICXBannerModule(TestICXModule): - - module = icx_banner - - def setUp(self): - super(TestICXBannerModule, self).setUp() - self.mock_exec_command = patch('ansible.modules.network.icx.icx_banner.exec_command') - self.exec_command = self.mock_exec_command.start() - - self.mock_load_config = patch('ansible.modules.network.icx.icx_banner.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_config = patch('ansible.modules.network.icx.icx_banner.get_config') - self.get_config = self.mock_get_config.start() - - self.set_running_config() - - def tearDown(self): - super(TestICXBannerModule, self).tearDown() - self.mock_exec_command.stop() - self.mock_load_config.stop() - self.mock_get_config.stop() - - def load_fixtures(self, commands=None): - compares = None - - def load_file(*args, **kwargs): - module = args - for arg in args: - if arg.params['check_running_config'] is True: - return load_fixture('icx_banner_show_banner.txt').strip() - else: - return '' - - self.exec_command.return_value = (0, '', None) - self.get_config.side_effect = load_file - self.load_config.return_value = dict(diff=None, session='session') - - def test_icx_banner_create(self): - if not self.ENV_ICX_USE_DIFF: - set_module_args(dict(banner='motd', text='welcome\nnew user')) - commands = ['banner motd $\nwelcome\nnew user\n$'] - self.execute_module(changed=True, commands=commands) - else: - for banner_type in ('motd', 'exec', 'incoming'): - set_module_args(dict(banner=banner_type, text='test\nbanner\nstring')) - commands = ['banner {0} $\ntest\nbanner\nstring\n$'.format(banner_type)] - self.execute_module(changed=True, commands=commands) - - def test_icx_banner_remove(self): - set_module_args(dict(banner='motd', state='absent')) - if not self.ENV_ICX_USE_DIFF: - commands = ['no banner motd'] - self.execute_module(changed=True, commands=commands) - else: - commands = ['no banner motd'] - self.execute_module(changed=True, commands=commands) - - def test_icx_banner_motd_enter_set(self): - set_module_args(dict(banner='motd', enterkey=True)) - - if not self.ENV_ICX_USE_DIFF: - commands = ['banner motd require-enter-key'] - self.execute_module(changed=True, commands=commands) - else: - self.execute_module(changed=False) - - def test_icx_banner_motd_enter_remove(self): - set_module_args(dict(banner='motd', state='absent', enterkey=False)) - if not self.ENV_ICX_USE_DIFF: - commands = ['no banner motd', 'no banner motd require-enter-key'] - self.execute_module(changed=True, commands=commands) - - else: - commands = ['no banner motd', 'no banner motd require-enter-key'] - self.execute_module(changed=True, commands=commands) - - def test_icx_banner_remove_compare(self): - set_module_args(dict(banner='incoming', state='absent', check_running_config='True')) - if self.get_running_config(compare=True): - if not self.ENV_ICX_USE_DIFF: - commands = [] - self.execute_module(changed=False, commands=commands) - else: - commands = [] - self.execute_module() diff --git a/test/units/modules/network/icx/test_icx_command.py b/test/units/modules/network/icx/test_icx_command.py deleted file mode 100644 index f60c39a365..0000000000 --- a/test/units/modules/network/icx/test_icx_command.py +++ /dev/null @@ -1,113 +0,0 @@ -# Copyright: (c) 2019, Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json -from units.compat.mock import patch -from ansible.modules.network.icx import icx_command -from units.modules.utils import set_module_args -from .icx_module import TestICXModule, load_fixture - - -class TestICXCommandModule(TestICXModule): - - module = icx_command - - def setUp(self): - super(TestICXCommandModule, self).setUp() - - self.mock_run_commands = patch('ansible.modules.network.icx.icx_command.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestICXCommandModule, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for item in commands: - try: - if item == 'skip': - continue - obj = json.loads(item['command']) - command = obj['command'] - except ValueError: - command = item['command'] - filename = str(command).replace(' ', '_') - output.append(load_fixture(filename)) - - return output - - self.run_commands.side_effect = load_from_file - - def test_icx_command_simple(self): - set_module_args(dict(commands=['show version'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 1) - self.assertTrue(result['stdout'][0].startswith('Copyright (c) 1996-2017 Brocade Communications Systems')) - - def test_icx_command_multiple(self): - set_module_args(dict(commands=['show version', 'show version'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 2) - self.assertTrue(result['stdout'][0].startswith('Copyright (c) 1996-2017 Brocade Communications Systems')) - - def test_icx_command_wait_for(self): - wait_for = 'result[0] contains "ICX"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module() - - def test_icx_command_wait_for_fails(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module(failed=True) - # run_commands call count is 1(skip) + 10(current) - self.assertEqual(self.run_commands.call_count, 11) - - def test_icx_command_retries(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show version'], wait_for=wait_for, retries=2)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 3) - - def test_icx_command_match_any(self): - wait_for = ['result[0] contains "ICX"', - 'result[0] contains "test string"'] - set_module_args(dict(commands=['show version'], wait_for=wait_for, match='any')) - self.execute_module() - - def test_icx_command_match_all(self): - wait_for = ['result[0] contains "ICX"', - 'result[0] contains "Version:10.1.09T225"'] - set_module_args(dict(commands=['show version'], wait_for=wait_for, match='all')) - self.execute_module() - - def test_icx_command_match_all_failure(self): - wait_for = ['result[0] contains "ICX"', - 'result[0] contains "test string"'] - commands = ['show version', 'show version'] - set_module_args(dict(commands=commands, wait_for=wait_for, match='all')) - self.execute_module(failed=True) - - def test_icx_command_configure_check_warning(self): - commands = ['configure terminal'] - set_module_args({ - 'commands': commands, - '_ansible_check_mode': True, - }) - result = self.execute_module() - self.assertEqual( - result['warnings'], - ['Only show commands are supported when using check mode, not executing configure terminal'], - ) - - def test_icx_command_configure_not_warning(self): - commands = ['configure terminal'] - set_module_args(dict(commands=commands)) - result = self.execute_module() - self.assertEqual(result['warnings'], []) diff --git a/test/units/modules/network/icx/test_icx_config.py b/test/units/modules/network/icx/test_icx_config.py deleted file mode 100644 index 86b9570a15..0000000000 --- a/test/units/modules/network/icx/test_icx_config.py +++ /dev/null @@ -1,219 +0,0 @@ -# Copyright: (c) 2019, Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch, MagicMock -from ansible.modules.network.icx import icx_config -from ansible.plugins.cliconf.icx import Cliconf -from units.modules.utils import set_module_args -from .icx_module import TestICXModule, load_fixture - - -class TestICXConfigModule(TestICXModule): - - module = icx_config - - def setUp(self): - super(TestICXConfigModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.icx.icx_config.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_get_connection = patch('ansible.modules.network.icx.icx_config.get_connection') - self.get_connection = self.mock_get_connection.start() - - self.conn = self.get_connection() - self.conn.edit_config = MagicMock() - - self.mock_run_commands = patch('ansible.modules.network.icx.icx_config.run_commands') - self.run_commands = self.mock_run_commands.start() - - self.cliconf_obj = Cliconf(MagicMock()) - self.running_config = load_fixture('icx_config_config.cfg') - - def tearDown(self): - super(TestICXConfigModule, self).tearDown() - self.mock_get_config.stop() - self.mock_run_commands.stop() - self.mock_get_connection.stop() - - def load_fixtures(self, commands=None): - config_file = 'icx_config_config.cfg' - self.get_config.return_value = load_fixture(config_file) - self.get_connection.edit_config.return_value = None - - def test_icx_config_unchanged(self): - src = load_fixture('icx_config_config.cfg') - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(src, src)) - set_module_args(dict(src=src)) - self.execute_module(changed=False) - - def test_icx_config_src(self): - src = load_fixture('icx_config_src.cfg') - set_module_args(dict(src=src)) - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(src, self.running_config)) - commands = ['hostname foo', 'interface ethernet 1/1/4', - 'disable'] - self.execute_module(changed=True, commands=commands) - - def test_icx_config_backup(self): - set_module_args(dict(backup=True)) - result = self.execute_module() - self.assertIn('__backup__', result) - - def test_icx_config_save_always(self): - self.run_commands.return_value = "Hostname foo" - set_module_args(dict(save_when='always')) - self.execute_module(changed=True) - self.assertEqual(self.run_commands.call_count, 2) - self.assertEqual(self.get_config.call_count, 0) - self.assertEqual(self.conn.edit_config.call_count, 0) - args = self.run_commands.call_args[0][1] - self.assertIn('write memory', args) - - def test_icx_config_save_changed_false(self): - set_module_args(dict(save_when='changed')) - self.execute_module(changed=False) - self.assertEqual(self.run_commands.call_count, 1) - self.assertEqual(self.get_config.call_count, 0) - self.assertEqual(self.conn.edit_config.call_count, 0) - - def test_icx_config_lines_wo_parents(self): - lines = ['hostname foo'] - set_module_args(dict(lines=lines)) - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(lines), self.running_config)) - commands = ['hostname foo'] - self.execute_module(changed=True, commands=commands) - - def test_icx_config_lines_w_parents(self): - lines = ['disable'] - parents = ['interface ethernet 1/1/4'] - set_module_args(dict(lines=lines, parents=parents)) - module = MagicMock() - module.params = {'lines': lines, 'parents': parents, 'src': None} - candidate_config = icx_config.get_candidate_config(module) - - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate_config, self.running_config)) - - commands = ['interface ethernet 1/1/4', 'disable'] - self.execute_module(changed=True, commands=commands) - - def test_icx_config_before_after_no_change(self): - lines = ['hostname router'] - set_module_args(dict(lines=lines, - before=['test1', 'test2'], - after=['test3', 'test4'])) - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(lines), self.running_config)) - self.execute_module() - - def test_icx_config_config(self): - config = 'hostname localhost' - lines = ['hostname router'] - set_module_args(dict(lines=lines, config=config)) - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(lines), config)) - commands = ['hostname router'] - self.execute_module(changed=True, commands=commands) - - def test_icx_config_replace_block(self): - lines = ['port-name test string', 'test string'] - parents = ['interface ethernet 1/1/4'] - set_module_args(dict(lines=lines, replace='block', parents=parents)) - - module = MagicMock() - module.params = {'lines': lines, 'parents': parents, 'src': None} - candidate_config = icx_config.get_candidate_config(module) - - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate_config, self.running_config, diff_replace='block', path=parents)) - - commands = parents + lines - self.execute_module(changed=True, commands=commands) - - def test_icx_config_match_none(self): - lines = ['hostname router'] - set_module_args(dict(lines=lines, match='none')) - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(lines), self.running_config, diff_match='none')) - self.execute_module(changed=True, commands=lines) - - def test_icx_config_match_none_block(self): - lines = ['speed-duplex 10-full', 'port-name test-interface-4'] - parents = ['interface ethernet 1/1/4'] - set_module_args(dict(lines=lines, parents=parents, match='none')) - - module = MagicMock() - module.params = {'lines': lines, 'parents': parents, 'src': None} - candidate_config = icx_config.get_candidate_config(module) - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate_config, self.running_config, diff_match='none', path=parents)) - - commands = parents + lines - self.execute_module(changed=True, commands=commands, sort=False) - - def test_icx_config_match_strict(self): - lines = ['port-name test-interface-4', 'speed-duplex 10-full', - 'disable'] - parents = ['interface ethernet 1/1/4'] - set_module_args(dict(lines=lines, parents=parents, match='strict')) - - module = MagicMock() - module.params = {'lines': lines, 'parents': parents, 'src': None} - candidate_config = icx_config.get_candidate_config(module) - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate_config, self.running_config, diff_match='strict', path=parents)) - - commands = parents + ['disable'] - self.execute_module(changed=True, commands=commands, sort=False) - - def test_icx_config_match_exact(self): - lines = ['speed-duplex 10-full', 'port-name test-interface-4', - 'disable'] - parents = ['interface ethernet 1/1/4'] - set_module_args(dict(lines=lines, parents=parents, match='exact')) - - module = MagicMock() - module.params = {'lines': lines, 'parents': parents, 'src': None} - candidate_config = icx_config.get_candidate_config(module) - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate_config, self.running_config, diff_match='exact', path=parents)) - - commands = parents + lines - self.execute_module(changed=True, commands=commands, sort=False) - - def test_icx_config_src_and_lines_fails(self): - args = dict(src='foo', lines='foo') - set_module_args(args) - result = self.execute_module(failed=True) - - def test_icx_config_src_and_parents_fails(self): - args = dict(src='foo', parents='foo') - set_module_args(args) - result = self.execute_module(failed=True) - - def test_icx_config_match_exact_requires_lines(self): - args = dict(match='exact') - set_module_args(args) - result = self.execute_module(failed=True) - - def test_icx_config_match_strict_requires_lines(self): - args = dict(match='strict') - set_module_args(args) - result = self.execute_module(failed=True) - - def test_icx_config_replace_block_requires_lines(self): - args = dict(replace='block') - set_module_args(args) - result = self.execute_module(failed=True) - - def test_icx_config_replace_config_requires_src(self): - args = dict(replace='config') - set_module_args(args) - result = self.execute_module(failed=True) - - def test_icx_config_save_changed_true(self): - src = load_fixture('icx_config_src.cfg') - set_module_args(dict(src=src, save_when='changed')) - commands = ['hostname foo', 'interface ethernet 1/1/4', 'disable'] - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(src, self.running_config)) - self.execute_module(changed=True, commands=commands) - self.assertEqual(self.run_commands.call_count, 2) - self.assertEqual(self.get_config.call_count, 1) - self.assertEqual(self.conn.edit_config.call_count, 1) - args = self.run_commands.call_args[0][1] - self.assertIn('write memory', args) diff --git a/test/units/modules/network/icx/test_icx_copy.py b/test/units/modules/network/icx/test_icx_copy.py deleted file mode 100644 index 1a5b5781bb..0000000000 --- a/test/units/modules/network/icx/test_icx_copy.py +++ /dev/null @@ -1,203 +0,0 @@ -# Copyright: (c) 2019, Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.icx import icx_copy -from units.modules.utils import set_module_args -from .icx_module import TestICXModule, load_fixture - - -class TestICXSCPModule(TestICXModule): - - module = icx_copy - - def setUp(self): - super(TestICXSCPModule, self).setUp() - self.mock_exec_scp = patch('ansible.modules.network.icx.icx_copy.exec_scp') - self.mock_run_commands = patch('ansible.modules.network.icx.icx_copy.run_commands') - self.exec_command = self.mock_exec_scp.start() - self.run_commands = self.mock_run_commands.start() - self.mock_exec_command = patch('ansible.modules.network.icx.icx_copy.exec_command') - self.exec_commands = self.mock_exec_command.start() - - def tearDown(self): - super(TestICXSCPModule, self).tearDown() - self.mock_exec_scp.stop() - self.mock_run_commands.stop() - self.mock_exec_command.stop() - - def load_fixtures(self, commands=None): - self.exec_commands.return_value = (0, load_fixture('icx_copy.txt').strip(), None) - # self.exec_command.return_value = (0, load_fixture('icx_banner_show_banner.txt').strip(), None) - if(commands is not None): - fixtureName = commands[0].replace(" ", "_") + ".txt" - # print("loading fixture: ",load_fixture(fixtureName).strip()) - self.mock_exec_scp.return_value = load_fixture("icx_copy.txt").strip() - self.mock_run_commands.return_value = load_fixture("icx_copy.txt").strip() - else: - self.exec_command.return_value = "" - - def test_icx_scp_upload_running(self): - set_module_args( - dict( - upload='running-config', - protocol='scp', - remote_server='172.16.10.49', - remote_filename='running.conf', - remote_user='alethea', - remote_pass='alethea123')) - commands = ['copy running-config scp 172.16.10.49 running.conf'] - self.execute_module(commands=commands) - - def test_icx_scp_download_running(self): - set_module_args( - dict( - download='running-config', - protocol='scp', - remote_server='172.16.10.49', - remote_filename='running.conf', - remote_user='alethea', - remote_pass='alethea123')) - commands = ['copy scp running-config 172.16.10.49 running.conf'] - self.execute_module(commands=commands, changed=True) - - def test_icx_scp_upload_startup(self): - set_module_args( - dict( - upload='startup-config', - protocol='scp', - remote_server='172.16.10.49', - remote_filename='running.conf', - remote_user='alethea', - remote_pass='alethea123')) - commands = ['copy startup-config scp 172.16.10.49 running.conf'] - self.execute_module(commands=commands, changed=False) - - def test_icx_scp_download_startup(self): - set_module_args( - dict( - download='startup-config', - protocol='scp', - remote_server='172.16.10.49', - remote_filename='running.conf', - remote_user='alethea', - remote_pass='alethea123')) - commands = ['copy scp startup-config 172.16.10.49 running.conf'] - self.execute_module(commands=commands, changed=True) - - def test_icx_scp_upload_primary(self): - set_module_args( - dict( - upload='flash_primary', - protocol='scp', - remote_server='172.16.10.49', - remote_filename='SPS08080b.bin', - remote_user='alethea', - remote_pass='alethea123')) - commands = ['copy flash scp 172.16.10.49 SPS08080b.bin primary'] - self.execute_module(commands=commands, changed=False) - - def test_icx_scp_download_primary(self): - set_module_args( - dict( - download='flash_primary', - protocol='scp', - remote_server='172.16.10.49', - remote_filename='SPS08080b.bin', - remote_user='alethea', - remote_pass='alethea123')) - commands = ['copy scp flash 172.16.10.49 SPS08080b.bin primary'] - self.execute_module(commands=commands, changed=True) - - # HTTPS tests - - def test_icx_https_upload_running(self): - set_module_args( - dict( - upload='running-config', - protocol='https', - remote_server='fileserver.alethea.in', - remote_filename='filestorage/test/upload_running')) - commands = ['copy running-config https fileserver.alethea.in filestorage/test/upload_running'] - self.execute_module(commands=commands) - - def test_icx_https_download_running(self): - set_module_args( - dict( - download='running-config', - protocol='https', - remote_server='fileserver.alethea.in', - remote_filename='filestorage/test/running.conf')) - commands = ['copy https running-config fileserver.alethea.in filestorage/test/running.conf'] - self.execute_module(failed=True) - - def test_icx_https_upload_startup(self): - set_module_args( - dict( - upload='startup-config', - protocol='https', - remote_server='fileserver.alethea.in', - remote_filename='filestorage/test/upload_startup')) - commands = ['copy startup-config https fileserver.alethea.in filestorage/test/upload_startup'] - self.execute_module(commands=commands) - - def test_icx_https_download_startup(self): - set_module_args( - dict( - download='startup-config', - protocol='https', - remote_server='fileserver.alethea.in', - remote_filename='filestorage/test/startup.conf')) - commands = ['copy https startup-config fileserver.alethea.in filestorage/test/startup.conf'] - self.execute_module(commands=commands, changed=True) - - def test_icx_https_upload_primary(self): - set_module_args( - dict( - upload='flash_primary', - protocol='https', - remote_server='fileserver.alethea.in', - remote_filename='filestorage/test/upload_primary')) - commands = ['copy startup-config https fileserver.alethea.in filestorage/test/upload_primary'] - self.execute_module(failed=True) - - def test_icx_https_download_primary(self): - set_module_args(dict(download='flash_primary', protocol='https', remote_server='fileserver.alethea.in', remote_filename='filestorage/test/primary.bin')) - commands = ['copy https flash fileserver.alethea.in filestorage/test/primary.bin primary'] - self.execute_module(commands=commands, changed=True) - - def test_icx_https_upload_secondary(self): - set_module_args( - dict( - upload='flash_secondary', - protocol='https', - remote_server='fileserver.alethea.in', - remote_filename='filestorage/test/upload_secondary')) - commands = ['copy flash https fileserver.alethea.in filestorage/test/upload_secondary secondary'] - self.execute_module(failed=True) - - def test_icx_https_download_secondary(self): - set_module_args( - dict( - download='flash_secondary', - protocol='https', - remote_server='fileserver.alethea.in', - remote_filename='filestorage/test/secondary.bin')) - commands = ['copy https flash fileserver.alethea.in filestorage/test/secondary.bin secondary'] - self.execute_module(commands=commands, changed=True) - - def test_icx_https_upload_download(self): - set_module_args( - dict( - upload='flash_secondary', - download='flash_secondary', - protocol='https', - remote_server='fileserver.alethea.in', - remote_filename='filestorage/test/secondary.bin')) - self.execute_module(failed=True) - - def test_icx_scp_no_user(self): - set_module_args(dict(upload='running-config', protocol='scp', remote_server='172.16.10.49', remote_filename='running.conf')) - self.execute_module(failed=True) diff --git a/test/units/modules/network/icx/test_icx_facts.py b/test/units/modules/network/icx/test_icx_facts.py deleted file mode 100644 index 03af204cea..0000000000 --- a/test/units/modules/network/icx/test_icx_facts.py +++ /dev/null @@ -1,137 +0,0 @@ -# Copyright: (c) 2019, Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.icx import icx_facts -from units.modules.utils import set_module_args -from .icx_module import TestICXModule, load_fixture - - -class TestICXFactsModule(TestICXModule): - - module = icx_facts - - def setUp(self): - super(TestICXFactsModule, self).setUp() - self.mock_run_commands = patch('ansible.modules.network.icx.icx_facts.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestICXFactsModule, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - def load_from_file(*args, **kwargs): - module = args - commands = kwargs['commands'] - if(commands): - resp = list() - for cmd in commands: - fixtureName = cmd.replace(" ", "_") - newFixtureName = fixtureName.replace("_|_", "_") - output = load_fixture(newFixtureName).strip() - if(output): - resp.append(output) - return resp - self.run_commands.side_effect = load_from_file - - def test_icx_facts_default(self): - set_module_args(dict(gather_subset=["default"])) - result = self.execute_module() - self.assertEqual( - result['ansible_facts']['ansible_net_model'], 'Stackable ICX7150-48-POE' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_serialnum'], 'FEC3220N00C' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_version'], '08.0.60T211' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_hostname'], 'ruchusRouter148' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_image'], 'SPS08060.bin' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_stacked_models'], ['ICX7150-48P-4X1G', 'ICX7150-2X1GC', 'ICX7150-4X10GF'] - ) - - def test_icx_facts_interfaces(self): - set_module_args(dict(gather_subset=["interfaces"])) - result = self.execute_module() - self.assertEqual( - result['ansible_facts']['ansible_net_interfaces']["GigabitEthernet1/1/1"]["macaddress"], "609c.9fe7.d600" - ) - self.assertEqual( - result['ansible_facts']['ansible_net_interfaces']["GigabitEthernet1/1/1"]["ipv4"]["address"], "192.168.1.1" - ) - self.assertEqual( - result['ansible_facts']['ansible_net_interfaces']["GigabitEthernet1/1/1"]["ipv4"]["subnet"], "24" - ) - - def test_icx_facts_hardware(self): - set_module_args(dict(gather_subset=["hardware"])) - result = self.execute_module() - self.assertEqual( - result['ansible_facts']['ansible_net_filesystems'], "flash" - ) - self.assertEqual( - result['ansible_facts']['ansible_net_filesystems_info'], {'flash': {'Stack unit 1': {'spacetotal': '2GiB', 'spacefree': '1287792Kb'}}} - ) - self.assertEqual( - result['ansible_facts']['ansible_net_memfree_mb'], 367152 - ) - self.assertEqual( - result['ansible_facts']['ansible_net_memtotal_mb'], 932320 - ) - - def test_icx_facts_not_hardware(self): - set_module_args(dict(gather_subset=["!hardware"])) - result = self.execute_module() - print(result) - - def test_icx_facts_all(self): - set_module_args(dict(gather_subset=["all"])) - result = self.execute_module() - self.assertEqual( - result['ansible_facts']['ansible_net_filesystems'], "flash" - ) - self.assertEqual( - result['ansible_facts']['ansible_net_filesystems_info'], {'flash': {'Stack unit 1': {'spacetotal': '2GiB', 'spacefree': '1287792Kb'}}} - ) - self.assertEqual( - result['ansible_facts']['ansible_net_memfree_mb'], 367152 - ) - self.assertEqual( - result['ansible_facts']['ansible_net_memtotal_mb'], 932320 - ) - self.assertEqual( - result['ansible_facts']['ansible_net_interfaces']["GigabitEthernet1/1/1"]["macaddress"], "609c.9fe7.d600" - ) - self.assertEqual( - result['ansible_facts']['ansible_net_interfaces']["GigabitEthernet1/1/1"]["ipv4"]["address"], "192.168.1.1" - ) - self.assertEqual( - result['ansible_facts']['ansible_net_interfaces']["GigabitEthernet1/1/1"]["ipv4"]["subnet"], "24" - ) - self.assertEqual( - result['ansible_facts']['ansible_net_model'], 'Stackable ICX7150-48-POE' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_serialnum'], 'FEC3220N00C' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_version'], '08.0.60T211' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_hostname'], 'ruchusRouter148' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_image'], 'SPS08060.bin' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_stacked_models'], ['ICX7150-48P-4X1G', 'ICX7150-2X1GC', 'ICX7150-4X10GF'] - ) diff --git a/test/units/modules/network/icx/test_icx_interface.py b/test/units/modules/network/icx/test_icx_interface.py deleted file mode 100644 index 02df1ae516..0000000000 --- a/test/units/modules/network/icx/test_icx_interface.py +++ /dev/null @@ -1,208 +0,0 @@ -# Copyright: (c) 2019, Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type -from units.compat.mock import patch -from ansible.modules.network.icx import icx_interface -from units.modules.utils import set_module_args -from .icx_module import TestICXModule, load_fixture - - -class TestICXInterfaceModule(TestICXModule): - - module = icx_interface - - def setUp(self): - super(TestICXInterfaceModule, self).setUp() - self.mock_exec_command = patch('ansible.modules.network.icx.icx_interface.exec_command') - self.exec_command = self.mock_exec_command.start() - - self.mock_load_config = patch('ansible.modules.network.icx.icx_interface.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_config = patch('ansible.modules.network.icx.icx_interface.get_config') - self.get_config = self.mock_get_config.start() - self.set_running_config() - - def tearDown(self): - super(TestICXInterfaceModule, self).tearDown() - self.mock_exec_command.stop() - self.mock_load_config.stop() - self.mock_get_config.stop() - - def load_fixtures(self, commands=None): - compares = None - - def load_file(*args, **kwargs): - module, commands, val = args - for arg in args: - if arg.params['check_running_config'] is True: - self.exec_command.return_value = (0, load_fixture('icx_interface_config.cfg').strip(), None) - return load_fixture('icx_interface_config.cfg').strip() - else: - self.exec_command.return_value = 0, '', None - return '' - - self.get_config.side_effect = load_file - self.load_config.return_value = None - - def test_icx_interface_set_config(self): - power = dict(dict(enabled='True')) - set_module_args(dict(name='ethernet 1/1/1', description='welcome port', speed='1000-full', power=power)) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - expected_commands = [ - 'interface ethernet 1/1/1', - 'speed-duplex 1000-full', - 'port-name welcome port', - 'inline power', - 'enable' - ] - self.assertEqual(result['commands'], expected_commands) - else: - result = self.execute_module(changed=True) - expected_commands = [ - 'interface ethernet 1/1/1', - 'speed-duplex 1000-full', - 'port-name welcome port', - 'inline power' - ] - self.assertEqual(result['commands'], expected_commands) - - def test_icx_interface_remove(self): - set_module_args(dict(name='ethernet 1/1/1', state='absent')) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['no interface ethernet 1/1/1']) - else: - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['no interface ethernet 1/1/1']) - - def test_icx_interface_disable(self): - set_module_args(dict(name='ethernet 1/1/1', enabled=False)) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['interface ethernet 1/1/1', 'disable']) - else: - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['interface ethernet 1/1/1', 'disable']) - - def test_icx_interface_set_power(self): - power = dict(by_class='2') - set_module_args(dict(name='ethernet 1/1/2', power=dict(power))) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - expected_commands = [ - 'interface ethernet 1/1/2', - 'inline power power-by-class 2', - 'enable' - ] - self.assertEqual(result['commands'], expected_commands) - else: - result = self.execute_module(changed=True) - expected_commands = [ - 'interface ethernet 1/1/2', - 'inline power power-by-class 2' - ] - self.assertEqual(result['commands'], expected_commands) - - def test_icx_interface_aggregate(self): - power = dict(dict(enabled='True')) - aggregate = [ - dict(name='ethernet 1/1/9', description='welcome port9', speed='1000-full', power=power), - dict(name='ethernet 1/1/10', description='welcome port10', speed='1000-full', power=power) - ] - set_module_args(dict(aggregate=aggregate)) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - expected_commands = [ - 'interface ethernet 1/1/9', - 'speed-duplex 1000-full', - 'port-name welcome port9', - 'inline power', - 'enable', - 'interface ethernet 1/1/10', - 'speed-duplex 1000-full', - 'port-name welcome port10', - 'inline power', - 'enable' - ] - self.assertEqual(result['commands'], expected_commands) - else: - result = self.execute_module(changed=True) - expected_commands = [ - 'interface ethernet 1/1/9', - 'speed-duplex 1000-full', - 'port-name welcome port9', - 'inline power', - 'enable', - 'interface ethernet 1/1/10', - 'speed-duplex 1000-full', - 'port-name welcome port10', - 'inline power', - 'enable' - ] - self.assertEqual(result['commands'], expected_commands) - - def test_icx_interface_lag_config(self): - set_module_args(dict(name='lag 11', description='lag ports of id 11', speed='auto')) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - expected_commands = [ - 'interface lag 11', - 'speed-duplex auto', - 'port-name lag ports of id 11', - 'enable' - ] - self.assertEqual(result['commands'], expected_commands) - else: - result = self.execute_module(changed=True) - expected_commands = [ - 'interface lag 11', - 'speed-duplex auto', - 'port-name lag ports of id 11' - ] - self.assertEqual(result['commands'], expected_commands) - - def test_icx_interface_loopback_config(self): - set_module_args(dict(name='loopback 10', description='loopback ports', enabled=True)) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - expected_commands = [ - 'interface loopback 10', - 'port-name loopback ports', - 'enable' - ] - self.assertEqual(result['commands'], expected_commands) - else: - result = self.execute_module(changed=True) - expected_commands = [ - 'interface loopback 10', - 'port-name loopback ports', - 'enable' - ] - self.assertEqual(result['commands'], expected_commands) - - def test_icx_interface_state_up_cndt(self): - set_module_args(dict(name='ethernet 1/1/1', state='up', tx_rate='ge(0)')) - if not self.ENV_ICX_USE_DIFF: - self.assertTrue(self.execute_module(failed=True)) - else: - self.assertTrue(self.execute_module(failed=False)) - - def test_icx_interface_lldp_neighbors_cndt(self): - set_module_args(dict(name='ethernet 1/1/48', neighbors=[dict(port='GigabitEthernet1/1/48', host='ICX7150-48 Router')])) - if not self.ENV_ICX_USE_DIFF: - self.assertTrue(self.execute_module(changed=False, failed=True)) - else: - self.assertTrue(self.execute_module(changed=False, failed=False)) - - def test_icx_interface_disable_compare(self): - set_module_args(dict(name='ethernet 1/1/1', enabled=True, check_running_config='True')) - if self.get_running_config(compare=True): - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - else: - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) diff --git a/test/units/modules/network/icx/test_icx_l3_interface.py b/test/units/modules/network/icx/test_icx_l3_interface.py deleted file mode 100644 index e0d22e8a96..0000000000 --- a/test/units/modules/network/icx/test_icx_l3_interface.py +++ /dev/null @@ -1,121 +0,0 @@ -# Copyright: (c) 2019, Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.icx import icx_l3_interface -from units.modules.utils import set_module_args -from .icx_module import TestICXModule, load_fixture - - -class TestICXFactsModule(TestICXModule): - - module = icx_l3_interface - - def setUp(self): - super(TestICXFactsModule, self).setUp() - self.mock_exec_command = patch('ansible.modules.network.icx.icx_l3_interface.exec_command') - self.exec_command = self.mock_exec_command.start() - self.mock_get_config = patch('ansible.modules.network.icx.icx_l3_interface.get_config') - self.get_config = self.mock_get_config.start() - self.mock_load_config = patch('ansible.modules.network.icx.icx_l3_interface.load_config') - self.load_config = self.mock_load_config.start() - self.set_running_config() - - def tearDown(self): - super(TestICXFactsModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_exec_command.stop() - - def load_fixtures(self, commands=None): - compares = None - - def load_from_file(*args, **kwargs): - module = args - for arg in args: - if arg.params['check_running_config'] is True: - return load_fixture('show_running-config_begin_interface').strip() - else: - return '' - - def write_config(*args, **kwargs): - return "" - - self.get_config.side_effect = load_from_file - self.load_config.side_effect = write_config - - def test_icx_l3_interface_set_ipv4(self): - set_module_args(dict(name="ethernet 1/1/1", ipv4="192.168.1.1/24")) - if not self.ENV_ICX_USE_DIFF: - commands = [ - "interface ethernet 1/1/1", - "ip address 192.168.1.1 255.255.255.0", - "exit" - ] - self.execute_module(commands=commands, changed=True) - else: - commands = [ - "interface ethernet 1/1/1", - "ip address 192.168.1.1 255.255.255.0", - "exit" - ] - self.execute_module(commands=commands, changed=True) - - def test_icx_l3_interface_set_ipv6(self): - set_module_args(dict(name="ethernet 1/1/1", ipv6="2001:db8:85a3:0:0:0:0:1/64")) - if not self.ENV_ICX_USE_DIFF: - commands = [ - "interface ethernet 1/1/1", - "ipv6 address 2001:db8:85a3:0:0:0:0:1/64", - "exit" - ] - self.execute_module(commands=commands, changed=True) - else: - commands = [ - "interface ethernet 1/1/1", - "ipv6 address 2001:db8:85a3:0:0:0:0:1/64", - "exit" - ] - self.execute_module(commands=commands, changed=True) - - def test_icx_l3_interface_remove_ipv6(self): - set_module_args(dict(name="ethernet 1/1/1", ipv6="2001:db8:85a3:0:0:0:0:0/64", ipv4="192.168.1.1/24", state="absent")) - if not self.ENV_ICX_USE_DIFF: - commands = [ - "interface ethernet 1/1/1", - "no ip address 192.168.1.1 255.255.255.0", - "no ipv6 address 2001:db8:85a3:0:0:0:0:0/64", - "exit" - ] - self.execute_module(commands=commands, changed=True) - else: - commands = [ - "interface ethernet 1/1/1", - 'no ip address 192.168.1.1 255.255.255.0', - "no ipv6 address 2001:db8:85a3:0:0:0:0:0/64", - "exit" - ] - self.execute_module(commands=commands, changed=True) - - def test_icx_l3_interface_set_aggregate(self): - set_module_args(dict(aggregate=[ - dict(name="ve 1", ipv6="2001:db8:85a3:0:0:0:0:0/64", ipv4="192.168.1.1/24") - ])) - if not self.ENV_ICX_USE_DIFF: - commands = [ - "interface ve 1", - "ipv6 address 2001:db8:85a3:0:0:0:0:0/64", - "ip address 192.168.1.1 255.255.255.0", - "exit" - ] - self.execute_module(commands=commands, changed=True) - else: - commands = [ - "interface ve 1", - "ipv6 address 2001:db8:85a3:0:0:0:0:0/64", - "ip address 192.168.1.1 255.255.255.0", - "exit" - ] - self.execute_module(commands=commands, changed=True) diff --git a/test/units/modules/network/icx/test_icx_linkagg.py b/test/units/modules/network/icx/test_icx_linkagg.py deleted file mode 100644 index 17580e7564..0000000000 --- a/test/units/modules/network/icx/test_icx_linkagg.py +++ /dev/null @@ -1,123 +0,0 @@ -# Copyright: (c) 2019, Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.icx import icx_linkagg -from units.modules.utils import set_module_args -from .icx_module import TestICXModule, load_fixture - - -class TestICXLinkaggModule(TestICXModule): - - module = icx_linkagg - - def setUp(self): - super(TestICXLinkaggModule, self).setUp() - self.mock_get_config = patch('ansible.modules.network.icx.icx_linkagg.get_config') - self.get_config = self.mock_get_config.start() - self.mock_load_config = patch('ansible.modules.network.icx.icx_linkagg.load_config') - self.load_config = self.mock_load_config.start() - self.mock_exec_command = patch('ansible.modules.network.icx.icx_linkagg.exec_command') - self.exec_command = self.mock_exec_command.start() - self.set_running_config() - - def tearDown(self): - super(TestICXLinkaggModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_exec_command.stop() - - def load_fixtures(self, commands=None): - compares = None - - def load_from_file(*args, **kwargs): - module = args - for arg in args: - if arg.params['check_running_config'] is True: - return load_fixture('lag_running_config.txt').strip() - else: - return '' - - self.get_config.side_effect = load_from_file - self.load_config.return_value = None - - def test_icx_linkage_create_new_LAG(self): - set_module_args(dict(group=10, name="LAG3", mode='static', members=['ethernet 1/1/4 to ethernet 1/1/7'])) - if not self.ENV_ICX_USE_DIFF: - commands = ['lag LAG3 static id 10', 'ports ethernet 1/1/4 to ethernet 1/1/7', 'exit'] - self.execute_module(commands=commands, changed=True) - else: - commands = ['lag LAG3 static id 10', 'ports ethernet 1/1/4 to ethernet 1/1/7', 'exit'] - self.execute_module(commands=commands, changed=True) - - def test_icx_linkage_modify_LAG(self): - set_module_args(dict(group=100, name="LAG1", mode='dynamic', members=['ethernet 1/1/4 to 1/1/7'])) - if not self.ENV_ICX_USE_DIFF: - commands = [ - 'lag LAG1 dynamic id 100', - 'ports ethernet 1/1/4 to 1/1/7', - 'exit' - ] - self.execute_module(commands=commands, changed=True) - else: - commands = [ - 'lag LAG1 dynamic id 100', - 'no ports ethernet 1/1/3', - 'no ports ethernet 1/1/8', - 'ports ethernet 1/1/4', - 'exit' - ] - self.execute_module(commands=commands, changed=True) - - def test_icx_linkage_modify_LAG_compare(self): - set_module_args(dict(group=100, name="LAG1", mode='dynamic', members=['ethernet 1/1/4 to 1/1/7'], check_running_config=True)) - if self.get_running_config(compare=True): - if not self.ENV_ICX_USE_DIFF: - commands = [ - 'lag LAG1 dynamic id 100', - 'no ports ethernet 1/1/3', - 'no ports ethernet 1/1/8', - 'ports ethernet 1/1/4', - 'exit' - ] - self.execute_module(commands=commands, changed=True) - else: - commands = [ - 'lag LAG1 dynamic id 100', - 'no ports ethernet 1/1/3', - 'no ports ethernet 1/1/8', - 'ports ethernet 1/1/4', - 'exit' - ] - self.execute_module(commands=commands, changed=True) - - def test_icx_linkage_purge_LAG(self): - set_module_args(dict(aggregate=[dict(group=100, name="LAG1", mode='dynamic')], purge=True)) - if not self.ENV_ICX_USE_DIFF: - commands = [ - 'lag LAG1 dynamic id 100', - 'exit' - ] - self.execute_module(commands=commands, changed=True) - else: - commands = [ - 'lag LAG1 dynamic id 100', - 'exit', - 'no lag LAG2 dynamic id 200' - ] - self.execute_module(commands=commands, changed=True) - - def test_icx_linkage_remove_LAG(self): - set_module_args(dict(group=100, name="LAG1", mode='dynamic', members=['ethernet 1/1/4 to 1/1/7'], state='absent')) - if not self.ENV_ICX_USE_DIFF: - commands = [ - 'no lag LAG1 dynamic id 100' - ] - self.execute_module(commands=commands, changed=True) - else: - commands = [ - 'no lag LAG1 dynamic id 100' - ] - self.execute_module(commands=commands, changed=True) diff --git a/test/units/modules/network/icx/test_icx_lldp.py b/test/units/modules/network/icx/test_icx_lldp.py deleted file mode 100644 index be94ed3192..0000000000 --- a/test/units/modules/network/icx/test_icx_lldp.py +++ /dev/null @@ -1,99 +0,0 @@ -# Copyright: (c) 2019, Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type -from units.compat.mock import patch -from ansible.modules.network.icx import icx_lldp -from units.modules.utils import set_module_args -from .icx_module import TestICXModule, load_fixture - - -class TestICXlldpModule(TestICXModule): - - module = icx_lldp - - def setUp(self): - super(TestICXlldpModule, self).setUp() - - self.mock_load_config = patch('ansible.modules.network.icx.icx_lldp.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_run_commands = patch('ansible.modules.network.icx.icx_lldp.run_commands') - self.run_commands = self.mock_run_commands.start() - - self.set_running_config() - - def tearDown(self): - super(TestICXlldpModule, self).tearDown() - self.mock_load_config.stop() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - def load_from_file(*args, **kwargs): - compares = None - module, commands = args - state = module.params['state'] - if module.params['check_running_config'] is True: - return load_fixture('icx_lldp_%s' % state).strip() - else: - return '' - - self.run_commands.side_effect = load_from_file - - def test_icx_lldp_enable_state_None(self): - interfaces_spec = [dict(name='ethernet 1/1/9', state='present')] - set_module_args(dict(interfaces=interfaces_spec)) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(failed=True) - else: - result = self.execute_module(failed=True) - - def test_icx_lldp_enable_state_absent_compare(self): - interfaces_spec = [dict(name='ethernet 1/1/9', state='present')] - set_module_args(dict(interfaces=interfaces_spec, state='absent', check_running_config=True)) - if self.get_running_config(compare=True): - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['no lldp run']) - else: - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['no lldp run']) - - def test_icx_lldp_enable_state_present(self): - interfaces_spec = [dict(name='ethernet 1/1/9', state='present')] - set_module_args(dict(interfaces=interfaces_spec, state='present')) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['lldp enable ports ethernet 1/1/9']) - - else: - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['lldp enable ports ethernet 1/1/9']) - - def test_icx_lldp_multi_enable_state_present(self): - interfaces_spec = [dict(name=['ethernet 1/1/9', 'ethernet 1/1/1 to 1/1/6'], state='present')] - set_module_args(dict(interfaces=interfaces_spec, state='present')) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['lldp enable ports ethernet 1/1/9', 'lldp enable ports ethernet 1/1/1 to 1/1/6']) - else: - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['lldp enable ports ethernet 1/1/9', 'lldp enable ports ethernet 1/1/1 to 1/1/6']) - - def test_icx_lldp_multi_disable_state_present(self): - interfaces_spec = [dict(name=['ethernet 1/1/9', 'ethernet 1/1/1 to 1/1/6'], state='absent')] - set_module_args(dict(interfaces=interfaces_spec, state='present')) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['no lldp enable ports ethernet 1/1/9', 'no lldp enable ports ethernet 1/1/1 to 1/1/6']) - else: - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['no lldp enable ports ethernet 1/1/9', 'no lldp enable ports ethernet 1/1/1 to 1/1/6']) - - def test_icx_lldp_all_error(self): - interfaces_spec = [dict(name=['ethernet all'], state='absent')] - set_module_args(dict(interfaces=interfaces_spec, state='present')) - if not self.ENV_ICX_USE_DIFF: - self.execute_module(failed=True) - else: - self.execute_module(failed=True) diff --git a/test/units/modules/network/icx/test_icx_logging.py b/test/units/modules/network/icx/test_icx_logging.py deleted file mode 100644 index f04c92c45e..0000000000 --- a/test/units/modules/network/icx/test_icx_logging.py +++ /dev/null @@ -1,149 +0,0 @@ -# Copyright: (c) 2019, Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json - -from units.compat.mock import patch -from ansible.modules.network.icx import icx_logging -from units.modules.utils import set_module_args -from .icx_module import TestICXModule, load_fixture - - -class TestICXLoggingModule(TestICXModule): - - module = icx_logging - - def setUp(self): - super(TestICXLoggingModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.icx.icx_logging.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch('ansible.modules.network.icx.icx_logging.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_exec_command = patch('ansible.modules.network.icx.icx_logging.exec_command') - self.exec_command = self.mock_exec_command.start() - - self.set_running_config() - - def tearDown(self): - super(TestICXLoggingModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_exec_command.stop() - - def load_fixtures(self, commands=None): - compares = None - - def load_file(*args, **kwargs): - module = args - for arg in args: - if arg.params['check_running_config'] is True: - return load_fixture('icx_logging_config.cfg').strip() - else: - return '' - - self.get_config.side_effect = load_file - self.load_config.return_value = None - - def test_icx_logging_set_host(self): - set_module_args(dict(dest='host', name='172.16.10.15')) - if not self.ENV_ICX_USE_DIFF: - commands = ['logging host 172.16.10.15'] - self.execute_module(changed=True, commands=commands) - else: - commands = ['logging host 172.16.10.15'] - self.execute_module(changed=True, commands=commands) - - def test_icx_logging_set_ipv6_host(self): - set_module_args(dict(dest='host', name='2001:db8::1')) - if not self.ENV_ICX_USE_DIFF: - commands = ['logging host 2001:db8::1'] - else: - commands = ['logging host 2001:db8::1'] - - def test_icx_logging_set_host_udp_port(self): - set_module_args(dict(dest='host', name='172.16.10.15', udp_port=2500)) - if not self.ENV_ICX_USE_DIFF: - commands = ['logging host 172.16.10.15 udp-port 2500'] - self.execute_module(changed=True, commands=commands) - else: - commands = ['logging host 172.16.10.15 udp-port 2500'] - self.execute_module(changed=True, commands=commands) - - def test_icx_logging_remove_console(self): - set_module_args(dict(dest='console', state='absent')) - if not self.ENV_ICX_USE_DIFF: - commands = ['no logging console'] - self.execute_module(changed=True, commands=commands) - else: - commands = ['no logging console'] - self.execute_module(changed=True, commands=commands) - - def test_icx_logging_remove_on(self): - set_module_args(dict(dest='on', state='absent')) - if not self.ENV_ICX_USE_DIFF: - commands = ['no logging on'] - self.exec_command(changed=True, commands=commands) - else: - commands = ['no logging on'] - self.exec_command(changed=True, commands=commands) - - def test_icx_logging_set_aggregate(self): - aggregate = [ - dict(dest='host', name='172.16.10.16', udp_port=2500, facility='local0'), - dict(dest='host', name='2001:db8::1', udp_port=5000) - ] - set_module_args(dict(aggregate=aggregate, state='present')) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - expected_commands = [ - 'logging facility local0', - 'logging host 172.16.10.16 udp-port 2500', - 'logging host ipv6 2001:db8::1 udp-port 5000' - ] - self.assertEqual(result['commands'], expected_commands) - else: - result = self.execute_module(changed=True) - expected_commands = [ - 'logging facility local0', - 'logging host 172.16.10.16 udp-port 2500', - 'logging host ipv6 2001:db8::1 udp-port 5000' - ] - self.assertEqual(result['commands'], expected_commands) - - def test_icx_logging_set_aggregate_remove(self): - aggregate = [ - dict(dest='host', name='172.16.10.55', udp_port=2500, facility='local0'), - dict(dest='host', name='2001:db8::1', udp_port=5500) - ] - set_module_args(dict(aggregate=aggregate, state='absent')) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - expected_commands = [ - 'no logging facility', - 'no logging host 172.16.10.55 udp-port 2500', - 'no logging host ipv6 2001:db8::1 udp-port 5500' - ] - - self.assertEqual(result['commands'], expected_commands) - else: - result = self.execute_module(changed=True) - expected_commands = [ - 'no logging facility', - 'no logging host 172.16.10.55 udp-port 2500', - 'no logging host ipv6 2001:db8::1 udp-port 5500' - ] - - self.assertEqual(result['commands'], expected_commands) - - def test_icx_logging_compare(self): - set_module_args(dict(dest='host', name='172.16.10.21', check_running_config=True)) - if self.get_running_config(compare=True): - if not self.ENV_ICX_USE_DIFF: - self.execute_module(changed=False) - else: - self.execute_module(changed=False) diff --git a/test/units/modules/network/icx/test_icx_ping.py b/test/units/modules/network/icx/test_icx_ping.py deleted file mode 100644 index c9b99d8be1..0000000000 --- a/test/units/modules/network/icx/test_icx_ping.py +++ /dev/null @@ -1,86 +0,0 @@ -# Copyright: (c) 2019, Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.icx import icx_ping -from units.modules.utils import set_module_args -from .icx_module import TestICXModule, load_fixture - - -class TestICXPingModule(TestICXModule): - ''' Class used for Unit Tests agains icx_ping module ''' - module = icx_ping - - def setUp(self): - super(TestICXPingModule, self).setUp() - self.mock_run_commands = patch('ansible.modules.network.icx.icx_ping.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestICXPingModule, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - def load_from_file(*args, **kwargs): - module = args - commands = kwargs['commands'] - output = list() - - for command in commands: - filename = str(command).split(' | ')[0].replace(' ', '_') - output.append(load_fixture('icx_ping_%s' % filename)) - return output - - self.run_commands.side_effect = load_from_file - - def test_icx_ping_expected_success(self): - ''' Test for successful pings when destination should be reachable ''' - set_module_args(dict(count=2, dest="8.8.8.8")) - commands = ['ping 8.8.8.8 count 2'] - fields = {'packets_tx': 2} - self.execute_module(commands=commands, fields=fields) - - def test_icx_ping_expected_failure(self): - ''' Test for unsuccessful pings when destination should not be reachable ''' - set_module_args(dict(count=2, dest="10.255.255.250", state="absent")) - self.execute_module() - - def test_icx_ping_unexpected_success(self): - ''' Test for successful pings when destination should not be reachable - FAIL. ''' - set_module_args(dict(count=2, dest="8.8.8.8", state="absent")) - self.execute_module(failed=True) - - def test_icx_ping_unexpected_failure(self): - ''' Test for unsuccessful pings when destination should be reachable - FAIL. ''' - set_module_args(dict(count=2, dest="10.255.255.250", timeout=45)) - fields = {'packets_tx': 1, 'packets_rx': 0, 'packet_loss': '100%', 'rtt': {'max': 0, 'avg': 0, 'min': 0}} - self.execute_module(failed=True, fields=fields) - - def test_icx_ping_expected_success_cmd(self): - ''' Test for successful pings when destination should be reachable ''' - set_module_args(dict(count=5, dest="8.8.8.8", ttl=70)) - commands = ['ping 8.8.8.8 count 5 ttl 70'] - self.execute_module(commands=commands) - - def test_icx_ping_invalid_ttl(self): - ''' Test for invalid range of ttl for reachable ''' - set_module_args(dict(dest="8.8.8.8", ttl=300)) - commands = ['ping 8.8.8.8 ttl 300'] - self.execute_module(failed=True, sort=False) - - def test_icx_ping_invalid_timeout(self): - ''' Test for invalid range of timeout for reachable ''' - set_module_args(dict(dest="8.8.8.8", timeout=4294967296)) - self.execute_module(failed=True, sort=False) - - def test_icx_ping_invalid_count(self): - ''' Test for invalid range of count for reachable ''' - set_module_args(dict(dest="8.8.8.8", count=4294967296)) - self.execute_module(failed=True, sort=False) - - def test_icx_ping_invalid_size(self): - '''Test for invalid range of size for reachable ''' - set_module_args(dict(dest="8.8.8.8", size=10001)) - self.execute_module(failed=True, sort=False) diff --git a/test/units/modules/network/icx/test_icx_static_route.py b/test/units/modules/network/icx/test_icx_static_route.py deleted file mode 100644 index 9ec5034668..0000000000 --- a/test/units/modules/network/icx/test_icx_static_route.py +++ /dev/null @@ -1,122 +0,0 @@ -# Copyright: (c) 2019, Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type -from units.compat.mock import patch -from ansible.modules.network.icx import icx_static_route -from units.modules.utils import set_module_args -from .icx_module import TestICXModule, load_fixture - - -class TestICXStaticRouteModule(TestICXModule): - - module = icx_static_route - - def setUp(self): - super(TestICXStaticRouteModule, self).setUp() - self.mock_get_config = patch('ansible.modules.network.icx.icx_static_route.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch('ansible.modules.network.icx.icx_static_route.load_config') - self.load_config = self.mock_load_config.start() - self.set_running_config() - - def tearDown(self): - super(TestICXStaticRouteModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None): - compares = None - - def load_file(*args, **kwargs): - module = args - for arg in args: - if arg.params['check_running_config'] is True: - return load_fixture('icx_static_route_config.txt').strip() - else: - return '' - - self.get_config.side_effect = load_file - self.load_config.return_value = None - - def test_icx_static_route_config(self): - set_module_args(dict(prefix='192.126.23.0/24', next_hop='10.10.14.3')) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - expected_commands = [ - 'ip route 192.126.23.0 255.255.255.0 10.10.14.3' - ] - self.assertEqual(result['commands'], expected_commands) - else: - result = self.execute_module(changed=True) - expected_commands = [ - 'ip route 192.126.23.0 255.255.255.0 10.10.14.3' - ] - self.assertEqual(result['commands'], expected_commands) - - def test_icx_static_route_config_compare(self): - set_module_args(dict(prefix='172.16.10.0/24', next_hop='10.0.0.8', check_running_config=True)) - if self.get_running_config(compare=True): - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=False) - expected_commands = [ - ] - self.assertEqual(result['commands'], expected_commands) - else: - result = self.execute_module(changed=False) - expected_commands = [ - ] - self.assertEqual(result['commands'], expected_commands) - - def test_icx_static_route_distance_config(self): - set_module_args(dict(prefix='192.126.0.0', mask='255.255.0.0', next_hop='10.10.14.3', admin_distance='40')) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - expected_commands = [ - 'ip route 192.126.0.0 255.255.0.0 10.10.14.3 distance 40' - ] - self.assertEqual(result['commands'], expected_commands) - else: - result = self.execute_module(changed=True) - expected_commands = [ - 'ip route 192.126.0.0 255.255.0.0 10.10.14.3 distance 40' - ] - self.assertEqual(result['commands'], expected_commands) - - def test_icx_static_route_aggregate(self): - aggregate = [ - dict(prefix='192.126.23.0/24', next_hop='10.10.14.3'), - dict(prefix='192.126.0.0', mask='255.255.0.0', next_hop='10.10.14.3', admin_distance='40') - ] - set_module_args(dict(aggregate=aggregate)) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - expected_commands = [ - 'ip route 192.126.23.0 255.255.255.0 10.10.14.3', - 'ip route 192.126.0.0 255.255.0.0 10.10.14.3 distance 40' - ] - self.assertEqual(result['commands'], expected_commands) - else: - result = self.execute_module(changed=True) - expected_commands = [ - 'ip route 192.126.23.0 255.255.255.0 10.10.14.3', - 'ip route 192.126.0.0 255.255.0.0 10.10.14.3 distance 40' - ] - self.assertEqual(result['commands'], expected_commands) - - def test_icx_static_route_remove(self): - set_module_args(dict(prefix='172.16.10.0/24', next_hop='10.0.0.8', state='absent')) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - expected_commands = [ - 'no ip route 172.16.10.0 255.255.255.0 10.0.0.8', - ] - self.assertEqual(result['commands'], expected_commands) - - else: - result = self.execute_module(changed=True) - expected_commands = [ - 'no ip route 172.16.10.0 255.255.255.0 10.0.0.8', - ] - self.assertEqual(result['commands'], expected_commands) diff --git a/test/units/modules/network/icx/test_icx_system.py b/test/units/modules/network/icx/test_icx_system.py deleted file mode 100644 index 3a42d48b46..0000000000 --- a/test/units/modules/network/icx/test_icx_system.py +++ /dev/null @@ -1,164 +0,0 @@ -# Copyright: (c) 2019, Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json - -from units.compat.mock import patch -from ansible.modules.network.icx import icx_system -from units.modules.utils import set_module_args -from .icx_module import TestICXModule, load_fixture - - -class TestICXSystemModule(TestICXModule): - - module = icx_system - - def setUp(self): - super(TestICXSystemModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.icx.icx_system.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch('ansible.modules.network.icx.icx_system.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_exec_command = patch('ansible.modules.network.icx.icx_system.exec_command') - self.exec_command = self.mock_exec_command.start() - self.set_running_config() - - def tearDown(self): - super(TestICXSystemModule, self).tearDown() - - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_exec_command.stop() - - def load_fixtures(self, commands=None): - compares = None - - def load_file(*args, **kwargs): - module = args - for arg in args: - if arg.params['check_running_config'] is True: - return load_fixture('icx_system.txt').strip() - else: - return '' - - self.get_config.side_effect = load_file - self.load_config.return_value = None - - def test_icx_system_set_config(self): - set_module_args(dict(hostname='ruckus', name_servers=['172.16.10.2', '11.22.22.4'], domain_search=['ansible.com', 'redhat.com'])) - if not self.ENV_ICX_USE_DIFF: - commands = [ - 'hostname ruckus', - 'ip dns domain-list ansible.com', - 'ip dns domain-list redhat.com', - 'ip dns server-address 11.22.22.4', - 'ip dns server-address 172.16.10.2' - ] - self.execute_module(changed=True, commands=commands) - - else: - commands = [ - 'hostname ruckus', - 'ip dns domain-list ansible.com', - 'ip dns domain-list redhat.com', - 'ip dns server-address 11.22.22.4', - 'ip dns server-address 172.16.10.2', - 'no ip dns domain-list ansib.eg.com', - 'no ip dns domain-list red.com', - 'no ip dns domain-list test1.com', - 'no ip dns server-address 10.22.22.64', - 'no ip dns server-address 172.22.22.64' - ] - self.execute_module(changed=True, commands=commands) - - def test_icx_system_remove_config(self): - set_module_args(dict(name_servers=['10.22.22.64', '11.22.22.4'], domain_search=['ansib.eg.com', 'redhat.com'], state='absent')) - if not self.ENV_ICX_USE_DIFF: - commands = [ - 'no ip dns domain-list ansib.eg.com', - 'no ip dns domain-list redhat.com', - 'no ip dns server-address 10.22.22.64', - 'no ip dns server-address 11.22.22.4' - ] - self.execute_module(changed=True, commands=commands) - - else: - commands = [ - 'no ip dns domain-list ansib.eg.com', - 'no ip dns server-address 10.22.22.64', - ] - self.execute_module(changed=True, commands=commands) - - def test_icx_system_remove_config_compare(self): - set_module_args( - dict( - name_servers=[ - '10.22.22.64', - '11.22.22.4'], - domain_search=[ - 'ansib.eg.com', - 'redhat.com'], - state='absent', - check_running_config=True)) - if self.get_running_config(compare=True): - if not self.ENV_ICX_USE_DIFF: - commands = [ - 'no ip dns domain-list ansib.eg.com', - 'no ip dns server-address 10.22.22.64', - ] - self.execute_module(changed=True, commands=commands) - else: - commands = [ - 'no ip dns domain-list ansib.eg.com', - 'no ip dns server-address 10.22.22.64', - ] - self.execute_module(changed=True, commands=commands) - - def test_icx_aaa_servers_radius_set(self): - radius = [ - dict( - type='radius', - hostname='2001:db8::1', - auth_port_type='auth-port', - auth_port_num='1821', - acct_port_num='1321', - acct_type='accounting-only', - auth_key='radius', - auth_key_type=[ - 'mac-auth']), - dict( - type='radius', - hostname='172.16.10.24', - auth_port_type='auth-port', - auth_port_num='2001', - acct_port_num='5000', - acct_type='authentication-only', - auth_key='radius-server'), - dict( - type='tacacs', - hostname='ansible.com')] - set_module_args(dict(hostname='ruckus', aaa_servers=radius)) - if not self.ENV_ICX_USE_DIFF: - commands = [ - 'hostname ruckus', - 'radius-server host 172.16.10.24 auth-port 2001 acct-port 5000 authentication-only key radius-server', - 'radius-server host ipv6 2001:db8::1 auth-port 1821 acct-port 1321 accounting-only key radius mac-auth', - 'tacacs-server host ansible.com' - ] - self.execute_module(changed=True, commands=commands) - - else: - commands = [ - 'hostname ruckus', - 'no radius-server host 172.16.20.14', - 'no tacacs-server host 182.16.10.20', - 'radius-server host 172.16.10.24 auth-port 2001 acct-port 5000 authentication-only key radius-server', - 'radius-server host ipv6 2001:db8::1 auth-port 1821 acct-port 1321 accounting-only key radius mac-auth', - 'tacacs-server host ansible.com' - ] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/icx/test_icx_user.py b/test/units/modules/network/icx/test_icx_user.py deleted file mode 100644 index ff8f291cb6..0000000000 --- a/test/units/modules/network/icx/test_icx_user.py +++ /dev/null @@ -1,197 +0,0 @@ -# Copyright: (c) 2019, Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.icx import icx_user -from units.modules.utils import set_module_args -from .icx_module import TestICXModule, load_fixture - - -class TestICXSCPModule(TestICXModule): - - module = icx_user - - def setUp(self): - super(TestICXSCPModule, self).setUp() - self.mock_get_config = patch('ansible.modules.network.icx.icx_user.get_config') - self.get_config = self.mock_get_config.start() - self.mock_load_config = patch('ansible.modules.network.icx.icx_user.load_config') - self.load_config = self.mock_load_config.start() - self.mock_exec_command = patch('ansible.modules.network.icx.icx_user.exec_command') - self.exec_command = self.mock_exec_command.start() - self.set_running_config() - - def tearDown(self): - super(TestICXSCPModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_exec_command.stop() - - def load_fixtures(self, commands=None): - compares = None - - def load_file(*args, **kwargs): - module = args - for arg in args: - if arg.params['check_running_config'] is True: - return load_fixture('show_running-config_include_username.txt').strip() - else: - return '' - self.get_config.side_effect = load_file - self.load_config.return_value = None - - def test_icx_user_create_new_with_password(self): - set_module_args(dict(name='ale6', configured_password='alethea123')) - if not self.ENV_ICX_USE_DIFF: - commands = ['username ale6 password alethea123'] - self.execute_module(commands=commands, changed=True) - else: - commands = ['username ale6 password alethea123'] - self.execute_module(commands=commands, changed=True) - - def test_icx_user_create_new_with_password_and_privilege(self): - set_module_args(dict(name='ale6', privilege="5", configured_password='alethea123')) - if not self.ENV_ICX_USE_DIFF: - commands = ['username ale6 privilege 5 password alethea123'] - self.execute_module(commands=commands, changed=True) - else: - commands = ['username ale6 privilege 5 password alethea123'] - self.execute_module(commands=commands, changed=True) - - def test_icx_user_update_privilege(self): - set_module_args(dict(name='ale1', privilege="0", configured_password='alethea123')) - if not self.ENV_ICX_USE_DIFF: - commands = ['username ale1 privilege 0 password alethea123'] - self.execute_module(commands=commands, changed=True) - else: - commands = ['username ale1 privilege 0 password alethea123'] - self.execute_module(commands=commands, changed=True) - - def test_icx_user_update_password(self): - set_module_args(dict(name='ale1', configured_password='alethea123')) - if not self.ENV_ICX_USE_DIFF: - commands = ['username ale1 password alethea123'] # previous privilage will be added - self.execute_module(commands=commands, changed=True) - else: - commands = ['username ale1 privilege 5 password alethea123'] # previous privilage will be added - self.execute_module(commands=commands, changed=True) - - def test_icx_user_update_password_compare(self): - set_module_args(dict(name='ale1', configured_password='alethea123', check_running_config=True)) - if not self.ENV_ICX_USE_DIFF: - commands = ['username ale1 privilege 5 password alethea123'] # previous privilage will be added - self.execute_module(commands=commands, changed=True) - else: - commands = ['username ale1 privilege 5 password alethea123'] # previous privilage will be added - self.execute_module(commands=commands, changed=True) - - def test_icx_user_delete_user(self): - set_module_args(dict(name='ale1', state="absent")) - if not self.ENV_ICX_USE_DIFF: - commands = ['no username ale1'] - self.execute_module(commands=commands, changed=True) - else: - commands = ['no username ale1'] - self.execute_module(commands=commands, changed=True) - - def test_icx_user_agregate(self): - set_module_args(dict(aggregate=[ - { - "name": 'ale6', - "configured_password": 'alethea123' - }, - { - "name": 'ale7', - "configured_password": 'alethea123' - } - ])) - if not self.ENV_ICX_USE_DIFF: - commands = [ - 'username ale6 password alethea123', - 'username ale7 password alethea123' - ] - self.execute_module(commands=commands, changed=True) - else: - commands = [ - 'username ale6 password alethea123', - 'username ale7 password alethea123' - ] - self.execute_module(commands=commands, changed=True) - - def test_icx_user_not_update_old_user_password(self): - set_module_args(dict(aggregate=[ - { - "name": 'ale6', - "configured_password": 'alethea123' - }, - { - "name": 'ale1', - "configured_password": 'alethea123', - }, - ], - update_password='on_create' - )) - if not self.ENV_ICX_USE_DIFF: - commands = [ - 'username ale1 password alethea123', - 'username ale6 password alethea123', - ] - self.execute_module(commands=commands, changed=True) - else: - commands = [ - 'username ale6 password alethea123', - ] - self.execute_module(commands=commands, changed=True) - - def test_icx_user_only_update_changed_settings(self): - set_module_args(dict(aggregate=[ - { - "name": 'ale1' - }, - { - "name": 'ale2', - "privilege": 5, - "configured_password": "ale123" - }, - { - "name": 'ale3', - "privilege": 4, - "configured_password": "ale123" - } - ], - update_password="on_create" - )) - if not self.ENV_ICX_USE_DIFF: - commands = [ - 'username ale2 privilege 5 password ale123', - 'username ale3 privilege 4 password ale123' - ] - self.execute_module(commands=commands, changed=True) - else: - commands = [ - 'username ale3 privilege 4 password ale123' - ] - self.execute_module(commands=commands, changed=True) - - def test_icx_user_purge(self): - set_module_args(dict(aggregate=[ - { - "name": 'ale1' - } - ], - purge=True - )) - if not self.ENV_ICX_USE_DIFF: - commands = [ - - ] - self.execute_module(commands=commands, changed=False) - else: - commands = [ - 'no username ale2', - 'no username ale3', - 'no username ale4' - ] - self.execute_module(commands=commands, changed=True) diff --git a/test/units/modules/network/icx/test_icx_vlan.py b/test/units/modules/network/icx/test_icx_vlan.py deleted file mode 100644 index 42fff68eec..0000000000 --- a/test/units/modules/network/icx/test_icx_vlan.py +++ /dev/null @@ -1,279 +0,0 @@ -# Copyright: (c) 2019, Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type -from units.compat.mock import patch -from ansible.modules.network.icx import icx_vlan -from units.modules.utils import set_module_args -from .icx_module import TestICXModule, load_fixture - - -class TestICXVlanModule(TestICXModule): - - module = icx_vlan - - def setUp(self): - super(TestICXVlanModule, self).setUp() - self.mock_exec_command = patch('ansible.modules.network.icx.icx_vlan.exec_command') - self.exec_command = self.mock_exec_command.start() - - self.mock_load_config = patch('ansible.modules.network.icx.icx_vlan.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_config = patch('ansible.modules.network.icx.icx_vlan.get_config') - self.get_config = self.mock_get_config.start() - - self.set_running_config() - - def tearDown(self): - super(TestICXVlanModule, self).tearDown() - self.mock_exec_command.stop() - self.mock_load_config.stop() - self.mock_get_config.stop() - - def load_fixtures(self, commands=None): - compares = None - - def load_file(*args, **kwargs): - module = args - for arg in args: - if arg.params['check_running_config'] is True: - self.exec_command.return_value = (0, load_fixture('icx_vlan_config').strip(), None) - return load_fixture('icx_banner_show_banner.txt').strip() - else: - self.exec_command.return_value = (0, ''.strip(), None) - return '' - - self.get_config.side_effect = load_file - self.load_config.return_value = None - - def test_icx_vlan_set_tagged_port(self): - set_module_args(dict(name='test_vlan', vlan_id=5, tagged=dict(name=['ethernet 1/1/40 to 1/1/43', 'lag 44']))) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - expected_commands = [ - 'vlan 5', - 'vlan 5 name test_vlan', - 'tagged ethernet 1/1/40 to 1/1/43', - 'tagged lag 44' - ] - self.assertEqual(result['commands'], expected_commands) - else: - result = self.execute_module(changed=True) - expected_commands = [ - 'vlan 5', - 'vlan 5 name test_vlan', - 'tagged ethernet 1/1/40 to 1/1/43', - 'tagged lag 44' - ] - self.assertEqual(result['commands'], expected_commands) - - def test_icx_vlan_add_untagged_port(self): - set_module_args(dict(name='test_vlan', vlan_id=3, interfaces=dict(name=['ethernet 1/1/10', 'lag 5']))) - - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - expected_commands = [ - 'vlan 3', - 'vlan 3 name test_vlan', - 'untagged lag 5', - 'untagged ethernet 1/1/10' - ] - self.assertEqual(set(result['commands']), set(expected_commands)) - else: - result = self.execute_module(changed=True) - expected_commands = [ - 'vlan 3', - 'vlan 3 name test_vlan', - 'untagged lag 5', - 'untagged ethernet 1/1/10' - ] - self.assertEqual(set(result['commands']), set(expected_commands)) - - def test_icx_vlan_purge_tagged_port(self): - set_module_args(dict(vlan_id=3, tagged=dict(name=['ethernet 1/1/40 to 1/1/42', 'lag 44'], purge=True))) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - expected_commands = [ - 'vlan 3', - 'tagged ethernet 1/1/40 to 1/1/43', - 'tagged lag 44' - ] - self.assertEqual(result['commands'], expected_commands) - else: - result = self.execute_module(changed=True) - expected_commands = [ - 'vlan 3', - 'no tagged ethernet 1/1/31', - 'no tagged ethernet 1/1/9', - 'no tagged ethernet 1/1/11', - 'no tagged lag 13', - 'no tagged ethernet 1/1/10', - 'tagged ethernet 1/1/40', - 'tagged ethernet 1/1/41', - 'tagged ethernet 1/1/42', - 'tagged lag 44' - ] - self.assertEqual(set(result['commands']), set(expected_commands)) - - def test_icx_vlan_enable_ip_arp_inspection(self): - set_module_args(dict(vlan_id=5, ip_arp_inspection=True)) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - expected_commands = [ - 'vlan 5', - 'ip arp inspection vlan 5' - ] - self.assertEqual(result['commands'], expected_commands) - else: - result = self.execute_module(changed=True) - expected_commands = [ - 'vlan 5', - 'ip arp inspection vlan 5' - ] - self.assertEqual(result['commands'], expected_commands) - - def test_icx_vlan_enable_ip_dhcp_snooping(self): - set_module_args(dict(vlan_id=5, ip_dhcp_snooping=True)) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - expected_commands = [ - 'vlan 5', - 'ip dhcp snooping vlan 5' - ] - self.assertEqual(result['commands'], expected_commands) - else: - result = self.execute_module(changed=True) - expected_commands = [ - 'vlan 5', - 'ip dhcp snooping vlan 5' - ] - self.assertEqual(result['commands'], expected_commands) - - def test_icx_vlan_aggregate(self): - aggregate = [ - dict(vlan_id=9, name='vlan_9', interfaces=dict(name=['ethernet 1/1/40 to 1/1/43', 'ethernet 1/1/44']), ip_arp_inspection=True), - dict(vlan_id=7, name='vlan_7', interfaces=dict(name=['ethernet 1/1/20 to 1/1/23', 'ethernet 1/1/24']), ip_dhcp_snooping=True), - ] - set_module_args(dict(aggregate=aggregate)) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - expected_commands = [ - 'vlan 9', - 'vlan 9 name vlan_9', - 'untagged ethernet 1/1/40 to 1/1/43', - 'untagged ethernet 1/1/44', - 'ip arp inspection vlan 9', - 'vlan 7', - 'vlan 7 name vlan_7', - 'untagged ethernet 1/1/20 to 1/1/23', - 'untagged ethernet 1/1/24', - 'ip dhcp snooping vlan 7', - ] - self.assertEqual(result['commands'], expected_commands) - else: - result = self.execute_module(changed=True) - expected_commands = [ - 'vlan 9', - 'vlan 9 name vlan_9', - 'untagged ethernet 1/1/40 to 1/1/43', - 'untagged ethernet 1/1/44', - 'ip arp inspection vlan 9', - 'vlan 7', - 'vlan 7 name vlan_7', - 'untagged ethernet 1/1/20 to 1/1/23', - 'untagged ethernet 1/1/24', - 'ip dhcp snooping vlan 7', - ] - self.assertEqual(result['commands'], expected_commands) - - def test_icx_vlan_interfaces_cndt(self): - set_module_args(dict(vlan_id=3, associated_interfaces=['ethernet 1/1/20 to 1/1/22', 'ethernet 1/1/27', 'lag 11 to 12'])) - if not self.ENV_ICX_USE_DIFF: - self.execute_module(failed=True) - else: - self.execute_module(changed=False) - - def test_icx_vlan_tagged_cndt(self): - set_module_args(dict(vlan_id=3, associated_tagged=['ethernet 1/1/9 to 1/1/11', 'ethernet 1/1/31', 'lag 13'])) - if not self.ENV_ICX_USE_DIFF: - self.execute_module(failed=True) - else: - self.execute_module(changed=False) - - def test_icx_vlan_purge(self): - set_module_args(dict(vlan_id=3, purge=True)) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=False) - expected_commands = [] - self.assertEqual(result['commands'], expected_commands) - else: - result = self.execute_module(changed=True) - expected_commands = [ - 'no vlan 6', - 'no vlan 10', - 'no vlan 21' - ] - self.assertEqual(result['commands'], expected_commands) - - def test_icx_vlan_stp_802_1w(self): - stp_spec = dict(dict(type='802-1w', priority='20', enabled=True)) - set_module_args(dict(vlan_id=3, interfaces=dict(name=['ethernet 1/1/40']), stp=stp_spec)) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - expected_commands = [ - 'vlan 3', - 'untagged ethernet 1/1/40', - 'spanning-tree 802-1w', - 'spanning-tree 802-1w priority 20' - ] - self.assertEqual(result['commands'], expected_commands) - else: - result = self.execute_module(changed=True) - expected_commands = [ - 'vlan 3', - 'untagged ethernet 1/1/40', - 'spanning-tree 802-1w', - 'spanning-tree 802-1w priority 20' - ] - self.assertEqual(result['commands'], expected_commands) - - def test_icx_vlan_stp_rstp_absent(self): - stp_spec = dict(dict(type='rstp', enabled=False)) - set_module_args(dict(vlan_id=3, interfaces=dict(name=['ethernet 1/1/40']), stp=stp_spec)) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - expected_commands = [ - 'vlan 3', - 'untagged ethernet 1/1/40', - 'no spanning-tree' - ] - self.assertEqual(result['commands'], expected_commands) - else: - result = self.execute_module(changed=True) - expected_commands = [ - 'vlan 3', - 'untagged ethernet 1/1/40', - 'no spanning-tree' - ] - self.assertEqual(result['commands'], expected_commands) - - def test_icx_vlan_stp_802_1w_absent(self): - stp_spec = dict(dict(type='802-1w', enabled=False)) - set_module_args(dict(vlan_id=3, stp=stp_spec)) - if not self.ENV_ICX_USE_DIFF: - result = self.execute_module(changed=True) - expected_commands = [ - 'vlan 3', - 'no spanning-tree 802-1w', - 'no spanning-tree' - ] - self.assertEqual(result['commands'], expected_commands) - else: - result = self.execute_module(changed=True) - expected_commands = [ - 'vlan 3', - 'no spanning-tree 802-1w', - 'no spanning-tree' - ] - self.assertEqual(result['commands'], expected_commands) diff --git a/test/units/modules/network/ingate/fixtures/test_ig_config_add.json b/test/units/modules/network/ingate/fixtures/test_ig_config_add.json deleted file mode 100644 index 84ad945bb4..0000000000 --- a/test/units/modules/network/ingate/fixtures/test_ig_config_add.json +++ /dev/null @@ -1,10 +0,0 @@ -[ - { - "href": "http://192.168.1.1/api/v1/misc/dns_servers/1", - "data": { - "number": "1", - "server": "192.168.1.20" - }, - "id": 1 - } -] diff --git a/test/units/modules/network/ingate/fixtures/test_ig_config_delete.json b/test/units/modules/network/ingate/fixtures/test_ig_config_delete.json deleted file mode 100644 index 75bd4bcf19..0000000000 --- a/test/units/modules/network/ingate/fixtures/test_ig_config_delete.json +++ /dev/null @@ -1,18 +0,0 @@ -[ - { - "table": "misc.dns_servers", - "data": { - "number": "1", - "server": "192.168.1.20" - }, - "id": 1 - }, - { - "table": "misc.dns_servers", - "data": { - "number": "2", - "server": "192.168.1.30" - }, - "id": 2 - } -] diff --git a/test/units/modules/network/ingate/fixtures/test_ig_config_download.json b/test/units/modules/network/ingate/fixtures/test_ig_config_download.json deleted file mode 100644 index 5e2c2d9ec4..0000000000 --- a/test/units/modules/network/ingate/fixtures/test_ig_config_download.json +++ /dev/null @@ -1,9 +0,0 @@ -[ - { - "download-config": { - "mimetype": "application/x-config-database", - "config": "-----BEGIN CONFIGURATION-DATABASE-----\r\nContent-transfer-encoding: base64\r\nUnitname: \r\nProduct: Software SIParator/Firewall\r\nVersion: 6.2.90\r\nProduct-type: F\r\nProduct-subtype: \r\nSerial: IG-200-840-5001-0\r\nInterfaces: eth0 eth1 eth2 eth3 eth4 eth5\r\nModules: failover vpn sip qturn ems qos rsc voipsm idsips siptrunk sipswitch\r\nTimestamp: 2018-10-25 11:53:09\r\n\r\nZGJ2ZXJzaW9uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAADAwMDA2NDQAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDAwMDA2ADEzMzYxNDAx\r\nNDQ3ADAxMTQ3MQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2LjIuMAoAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAGRiLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDAwNjMAMDAwMDA2MwAwMDAw\r\nMDAwMDAwMAAxMzM2MTQwMjExNAAwMTA0MjIAIDUAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nZGIvZGIuZmVudAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAADAwMDA2NDQAMDAwMDA2MwAwMDAwMDYzADAwMDAwMDAxNjM3ADEzMzYxNDAx\r\nNDQ3ADAxMTcwNAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIFRoaXMgZmlsZSBpcyBh\r\nIHN0cmljdCBmb3JtYXQgY29uZmlndXJhdGlvbiBmaWxlLgojIEVkaXQgY2FyZWZ1\r\nbGx5IG9yIG5vdCBhdCBhbGwuCipTRUNUSU9OIGRiLmZlbnQuYWx3YXlzX2ZlbnQK\r\nZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJs\r\nZWQ6IG9mZgoqU0VDVElPTiBkYi5mZW50LmFsd2F5c19mZW50X2V4Y2VwdGlvbnMK\r\nZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLmZlbnQuYWx3\r\nYXlzX2ZlbnRfaW50ZXJmYWNlcwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDAK\r\nKlNFQ1RJT04gZGIuZmVudC5mZW50CmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDog\r\nMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJT04gZGIuZmVudC5m\r\nZW50X2tlZXBhbGl2ZQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cK\r\ncm93aWQ6IDEKdGNwX3RpbWVvdXQ6IDE1MAp0eXBlOiBvcHRpb25zCnVkcF90aW1l\r\nb3V0OiAyMAoqU0VDVElPTiBkYi5mZW50Lm1hcF9zaWduYWxfYWRkcmVzcwpnZW5l\r\ncmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKbGlzdGVuX2lw\r\nOiAtCmxpc3Rlbl9wb3J0OiAKc2VuZF9pcDogLQoqU0VDVElPTiBkYi5mZW50Lm1l\r\nZGlhX3JlbGVhc2UKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJv\r\nd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5mZW50LnJlc2V0X2ZyaWVu\r\nZApnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5h\r\nYmxlZDogb2ZmCipTRUNUSU9OIGRiLmZlbnQuc3R1bgpnZW5lcmF0aW9uOiAwCmxh\r\nc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCnBvcnQxOiAz\r\nNDc4CnBvcnQyOiAKc2VydmVyMTogLQpzZXJ2ZXIyOiAtCipTRUNUSU9OIEVPRgoA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nZGIvZGIuaXBzZWMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAADAwMDA2NDQAMDAwMDA2MwAwMDAwMDYzADAwMDAwMDExMjEzADEzMzYxNDAx\r\nNDQ3ADAxMjA0MgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIFRoaXMgZmlsZSBpcyBh\r\nIHN0cmljdCBmb3JtYXQgY29uZmlndXJhdGlvbiBmaWxlLgojIEVkaXQgY2FyZWZ1\r\nbGx5IG9yIG5vdCBhdCBhbGwuCipTRUNUSU9OIGRiLmlwc2VjLmJsYWNrbGlzdGVk\r\nX3BhY2tldHMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lk\r\nOiAxCmFjdGlvbjogZGlzY2FyZApsb2djbGFzczogTG9jYWwKKlNFQ1RJT04gZGIu\r\naXBzZWMuYmxhY2tsaXN0aW5nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoq\r\nKlJPVwpyb3dpZDogMQpkdXJhdGlvbjogMzAKbG9nY2xhc3M6IExvY2FsCipTRUNU\r\nSU9OIGRiLmlwc2VjLmNyeXB0b19kZWYKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lk\r\nOiAxNgoqKlJPVwpyb3dpZDogMQphdXRoOiBtZDUKZW5jcnlwdGlvbjogM2Rlcwpu\r\nYW1lOiAzREVTLU1ENQoqKlJPVwpyb3dpZDogMgphdXRoOiBzaGExCmVuY3J5cHRp\r\nb246IDNkZXMKbmFtZTogM0RFUy1TSEExCioqUk9XCnJvd2lkOiAzCmF1dGg6IHNo\r\nYTJfMjU2CmVuY3J5cHRpb246IDNkZXMKbmFtZTogM0RFUy1TSEEyNTYKKipST1cK\r\ncm93aWQ6IDQKYXV0aDogc2hhMl81MTIKZW5jcnlwdGlvbjogM2RlcwpuYW1lOiAz\r\nREVTLVNIQTUxMgoqKlJPVwpyb3dpZDogNQphdXRoOiBtZDUKZW5jcnlwdGlvbjog\r\nYWVzMTI4Cm5hbWU6IEFFUzEyOC1NRDUKKipST1cKcm93aWQ6IDYKYXV0aDogc2hh\r\nMQplbmNyeXB0aW9uOiBhZXMxMjgKbmFtZTogQUVTMTI4LVNIQTEKKipST1cKcm93\r\naWQ6IDcKYXV0aDogc2hhMl8yNTYKZW5jcnlwdGlvbjogYWVzMTI4Cm5hbWU6IEFF\r\nUzEyOC1TSEEyNTYKKipST1cKcm93aWQ6IDgKYXV0aDogc2hhMl81MTIKZW5jcnlw\r\ndGlvbjogYWVzMTI4Cm5hbWU6IEFFUzEyOC1TSEE1MTIKKipST1cKcm93aWQ6IDkK\r\nYXV0aDogbWQ1CmVuY3J5cHRpb246IGFlczE5MgpuYW1lOiBBRVMxOTItTUQ1Cioq\r\nUk9XCnJvd2lkOiAxMAphdXRoOiBzaGExCmVuY3J5cHRpb246IGFlczE5MgpuYW1l\r\nOiBBRVMxOTItU0hBMQoqKlJPVwpyb3dpZDogMTEKYXV0aDogc2hhMl8yNTYKZW5j\r\ncnlwdGlvbjogYWVzMTkyCm5hbWU6IEFFUzE5Mi1TSEEyNTYKKipST1cKcm93aWQ6\r\nIDEyCmF1dGg6IHNoYTJfNTEyCmVuY3J5cHRpb246IGFlczE5MgpuYW1lOiBBRVMx\r\nOTItU0hBNTEyCioqUk9XCnJvd2lkOiAxMwphdXRoOiBtZDUKZW5jcnlwdGlvbjog\r\nYWVzMjU2Cm5hbWU6IEFFUzI1Ni1NRDUKKipST1cKcm93aWQ6IDE0CmF1dGg6IHNo\r\nYTEKZW5jcnlwdGlvbjogYWVzMjU2Cm5hbWU6IEFFUzI1Ni1TSEExCioqUk9XCnJv\r\nd2lkOiAxNQphdXRoOiBzaGEyXzI1NgplbmNyeXB0aW9uOiBhZXMyNTYKbmFtZTog\r\nQUVTMjU2LVNIQTI1NgoqKlJPVwpyb3dpZDogMTYKYXV0aDogc2hhMl81MTIKZW5j\r\ncnlwdGlvbjogYWVzMjU2Cm5hbWU6IEFFUzI1Ni1TSEE1MTIKKlNFQ1RJT04gZGIu\r\naXBzZWMuZXNwX3Byb3Bvc2FscwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEw\r\nCioqUk9XCnJvd2lkOiAxCmNyeXB0bzogQUVTMTI4LVNIQTI1NgpuYW1lOiBBRVMK\r\nbnVtYmVyOiAxCioqUk9XCnJvd2lkOiAyCmNyeXB0bzogQUVTMTI4LVNIQTUxMgpu\r\nYW1lOiBBRVMKbnVtYmVyOiAyCioqUk9XCnJvd2lkOiAzCmNyeXB0bzogQUVTMjU2\r\nLVNIQTI1NgpuYW1lOiBBRVMKbnVtYmVyOiAzCioqUk9XCnJvd2lkOiA0CmNyeXB0\r\nbzogQUVTMjU2LVNIQTUxMgpuYW1lOiBBRVMKbnVtYmVyOiA0CioqUk9XCnJvd2lk\r\nOiA1CmNyeXB0bzogQUVTMTI4LVNIQTI1NgpuYW1lOiBBRVMvM0RFUwpudW1iZXI6\r\nIDUKKipST1cKcm93aWQ6IDYKY3J5cHRvOiBBRVMxMjgtU0hBMQpuYW1lOiBBRVMv\r\nM0RFUwpudW1iZXI6IDYKKipST1cKcm93aWQ6IDcKY3J5cHRvOiBBRVMxMjgtTUQ1\r\nCm5hbWU6IEFFUy8zREVTCm51bWJlcjogNwoqKlJPVwpyb3dpZDogOApjcnlwdG86\r\nIDNERVMtU0hBMjU2Cm5hbWU6IEFFUy8zREVTCm51bWJlcjogOAoqKlJPVwpyb3dp\r\nZDogOQpjcnlwdG86IDNERVMtU0hBMQpuYW1lOiBBRVMvM0RFUwpudW1iZXI6IDkK\r\nKipST1cKcm93aWQ6IDEwCmNyeXB0bzogM0RFUy1NRDUKbmFtZTogQUVTLzNERVMK\r\nbnVtYmVyOiAxMAoqU0VDVElPTiBkYi5pcHNlYy5lc3BhaF9sb2djbGFzcwpnZW5l\r\ncmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKbG9nY2xhc3M6\r\nIC0KKlNFQ1RJT04gZGIuaXBzZWMuaWtlX2xvZ2NsYXNzCmdlbmVyYXRpb246IDAK\r\nbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2djbGFzczogTG9jYWwKKlNF\r\nQ1RJT04gZGIuaXBzZWMuaWtlX3Byb3Bvc2FscwpnZW5lcmF0aW9uOiAwCmxhc3Rf\r\ncm93aWQ6IDE4CioqUk9XCnJvd2lkOiAxCmNyeXB0bzogQUVTMjU2LVNIQTI1Ngpn\r\ncm91cDogbW9kcDIwNDgKbmFtZTogQUVTCm51bWJlcjogMQoqKlJPVwpyb3dpZDog\r\nMgpjcnlwdG86IEFFUzI1Ni1TSEE1MTIKZ3JvdXA6IG1vZHAyMDQ4Cm5hbWU6IEFF\r\nUwpudW1iZXI6IDIKKipST1cKcm93aWQ6IDMKY3J5cHRvOiBBRVMxMjgtU0hBMjU2\r\nCmdyb3VwOiBtb2RwMjA0OApuYW1lOiBBRVMKbnVtYmVyOiAzCioqUk9XCnJvd2lk\r\nOiA0CmNyeXB0bzogQUVTMTI4LVNIQTUxMgpncm91cDogbW9kcDIwNDgKbmFtZTog\r\nQUVTCm51bWJlcjogNAoqKlJPVwpyb3dpZDogNQpjcnlwdG86IEFFUzEyOC1TSEEy\r\nNTYKZ3JvdXA6IG1vZHAyMDQ4Cm5hbWU6IEFFUy8zREVTCm51bWJlcjogNQoqKlJP\r\nVwpyb3dpZDogNgpjcnlwdG86IEFFUzEyOC1TSEEyNTYKZ3JvdXA6IG1vZHAxNTM2\r\nCm5hbWU6IEFFUy8zREVTCm51bWJlcjogNgoqKlJPVwpyb3dpZDogNwpjcnlwdG86\r\nIEFFUzEyOC1TSEEyNTYKZ3JvdXA6IG1vZHAxMDI0Cm5hbWU6IEFFUy8zREVTCm51\r\nbWJlcjogNwoqKlJPVwpyb3dpZDogOApjcnlwdG86IEFFUzEyOC1TSEExCmdyb3Vw\r\nOiBtb2RwMTUzNgpuYW1lOiBBRVMvM0RFUwpudW1iZXI6IDgKKipST1cKcm93aWQ6\r\nIDkKY3J5cHRvOiBBRVMxMjgtU0hBMQpncm91cDogbW9kcDEwMjQKbmFtZTogQUVT\r\nLzNERVMKbnVtYmVyOiA5CioqUk9XCnJvd2lkOiAxMApjcnlwdG86IEFFUzEyOC1N\r\nRDUKZ3JvdXA6IG1vZHAxNTM2Cm5hbWU6IEFFUy8zREVTCm51bWJlcjogMTAKKipS\r\nT1cKcm93aWQ6IDExCmNyeXB0bzogQUVTMTI4LU1ENQpncm91cDogbW9kcDEwMjQK\r\nbmFtZTogQUVTLzNERVMKbnVtYmVyOiAxMQoqKlJPVwpyb3dpZDogMTIKY3J5cHRv\r\nOiAzREVTLVNIQTI1Ngpncm91cDogbW9kcDIwNDgKbmFtZTogQUVTLzNERVMKbnVt\r\nYmVyOiAxMgoqKlJPVwpyb3dpZDogMTMKY3J5cHRvOiAzREVTLVNIQTI1Ngpncm91\r\ncDogbW9kcDE1MzYKbmFtZTogQUVTLzNERVMKbnVtYmVyOiAxMwoqKlJPVwpyb3dp\r\nZDogMTQKY3J5cHRvOiAzREVTLVNIQTI1Ngpncm91cDogbW9kcDEwMjQKbmFtZTog\r\nQUVTLzNERVMKbnVtYmVyOiAxNAoqKlJPVwpyb3dpZDogMTUKY3J5cHRvOiAzREVT\r\nLVNIQTEKZ3JvdXA6IG1vZHAxNTM2Cm5hbWU6IEFFUy8zREVTCm51bWJlcjogMTUK\r\nKipST1cKcm93aWQ6IDE2CmNyeXB0bzogM0RFUy1TSEExCmdyb3VwOiBtb2RwMTAy\r\nNApuYW1lOiBBRVMvM0RFUwpudW1iZXI6IDE2CioqUk9XCnJvd2lkOiAxNwpjcnlw\r\ndG86IDNERVMtTUQ1Cmdyb3VwOiBtb2RwMTUzNgpuYW1lOiBBRVMvM0RFUwpudW1i\r\nZXI6IDE3CioqUk9XCnJvd2lkOiAxOApjcnlwdG86IDNERVMtTUQ1Cmdyb3VwOiBt\r\nb2RwMTAyNApuYW1lOiBBRVMvM0RFUwpudW1iZXI6IDE4CipTRUNUSU9OIGRiLmlw\r\nc2VjLmludGVyb3AKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJv\r\nd2lkOiAxCmVuYWJsZV9wc2tfcnc6IG9mZgplbmFibGVfbm9uX3VuaXF1ZV9wZWVy\r\nOiBvZmYKKlNFQ1RJT04gZGIuaXBzZWMuaXBzZWNfbmV0cwpnZW5lcmF0aW9uOiAw\r\nCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIuaXBzZWMubmF0X3Rfa2VlcGFsaXZl\r\nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQppbnRl\r\ncnZhbDogNjAKKlNFQ1RJT04gZGIuaXBzZWMucGVlcnMKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLmlwc2VjLnBsdXRvX2xvZ2NsYXNzCmdl\r\nbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2djbGFz\r\nczogTG9jYWwKKlNFQ1RJT04gZGIuaXBzZWMucGx1dG92ZXJib3NlX2xvZ2NsYXNz\r\nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2dj\r\nbGFzczogLQoqU0VDVElPTiBkYi5pcHNlYy5yYWRpdXNhdXRoX3NlcnZlcgpnZW5l\r\ncmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKY2VydDogLQpp\r\ncDogLQpwb3J0OiA0NDMKdGxzOiBUTFN2MS54CipTRUNUSU9OIGRiLmlwc2VjLnR1\r\nbm5lbGVkX25ldHMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9O\r\nIGRiLmlwc2VjLnBlZXJzX2FkdmFuY2VkCmdlbmVyYXRpb246IDAKbGFzdF9yb3dp\r\nZDogMAoqU0VDVElPTiBkYi5pcHNlYy54YXV0aF91c2VycwpnZW5lcmF0aW9uOiAw\r\nCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIuaXBzZWMubW9kZWNmZwpnZW5lcmF0\r\naW9uOiAwCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIuaXBzZWMudXNlcmF1dGhf\r\nbG9nY2xhc3MKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lk\r\nOiAxCmxvZ2NsYXNzOiBMb2NhbAoqU0VDVElPTiBkYi5pcHNlYy54NTA5X2NhY2Vy\r\ndHMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLmlwc2Vj\r\nLng1MDlfY2VydApnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93\r\naWQ6IDEKY2VydDogLQoqU0VDVElPTiBFT0YKAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAGRiL2RiLnNpcHN3aXRjaAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDAwNjMAMDAwMDA2MwAwMDAw\r\nMDAxMDE3NAAxMzM2MTQwMjQ2NwAwMTI3NjQAIDAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nIyBUaGlzIGZpbGUgaXMgYSBzdHJpY3QgZm9ybWF0IGNvbmZpZ3VyYXRpb24gZmls\r\nZS4KIyBFZGl0IGNhcmVmdWxseSBvciBub3QgYXQgYWxsLgoqU0VDVElPTiBkYi5z\r\naXBzd2l0Y2guYWNjb3VudHMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipT\r\nRUNUSU9OIGRiLnNpcHN3aXRjaC5iMmJ1YV90cmFuc2Zlcl9lbmFibGUKZ2VuZXJh\r\ndGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmFsd2F5czogb2Zm\r\nCmNsaWVudHNfbGFja19yZWZlcjogb2ZmCmNsaWVudHNfbGFja19yZXBsYWNlOiBv\r\nZmYKdXNlX2Zyb21fdXJpOiBvZmYKdXNlX3VzZXJfYWdlbnQ6IG9mZgoqU0VDVElP\r\nTiBkYi5zaXBzd2l0Y2guYjJidWFfdHJhbnNmZXJfZm9yX2NsaWVudApnZW5lcmF0\r\naW9uOiAwCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIuc2lwc3dpdGNoLmIyYnVh\r\nX3RyYW5zZmVyX2Zyb21fdXNlcgpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDAK\r\nKlNFQ1RJT04gZGIuc2lwc3dpdGNoLmRpYWxfcGxhbgpnZW5lcmF0aW9uOiAwCmxh\r\nc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIuc2lwc3dpdGNoLmRpYWxfcGxhbl9lbmFi\r\nbGUKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVu\r\nYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5zaXBzd2l0Y2guZGlhbF9wbGFuX21ldGhv\r\nZHMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiA2CioqUk9XCnJvd2lkOiAxCm1l\r\ndGhvZDogSU5WSVRFCioqUk9XCnJvd2lkOiAyCm1ldGhvZDogT1BUSU9OUwoqKlJP\r\nVwpyb3dpZDogMwptZXRob2Q6IFNVQlNDUklCRQoqKlJPVwpyb3dpZDogNAptZXRo\r\nb2Q6IE1FU1NBR0UKKipST1cKcm93aWQ6IDUKbWV0aG9kOiBSRUZFUgoqKlJPVwpy\r\nb3dpZDogNgptZXRob2Q6IE5PVElGWQoqU0VDVElPTiBkYi5zaXBzd2l0Y2guZW51\r\nbV9yb290CmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDog\r\nMQpuYW1lOiBlMTY0LmFycGEuCm51bWJlcjogMQpyb290OiBlMTY0LmFycGEuCipT\r\nRUNUSU9OIGRiLnNpcHN3aXRjaC5mb3J3YXJkX3RvCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMAoqU0VDVElPTiBkYi5zaXBzd2l0Y2guaW5jb21pbmdfdW5hdXRo\r\nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5zaXBzd2l0\r\nY2gucmVxdWVzdF9mcm9tCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VD\r\nVElPTiBkYi5zaXBzd2l0Y2gucmVxdWVzdF90bwpnZW5lcmF0aW9uOiAwCmxhc3Rf\r\ncm93aWQ6IDAKKlNFQ1RJT04gZGIuc2lwc3dpdGNoLnRydW5rX21haW5fbGluZXMK\r\nZ2VuZXJhdGlvbjogMQpsYXN0X3Jvd2lkOiAyCioqUk9XCnJvd2lkOiAxCmFsaWFz\r\nZXM6IAphdXRoX25hbWU6IApmcm9tX2RuOiAKZnJvbV91c2VyOiAKZndkOiAKaXNf\r\ncmVnOiBvZmYKbnVtYmVyOiAxCnBfYXNzZXJ0ZWRfaWRlbnRpdHk6IApwYXNzd29y\r\nZDogCnRydW5rOiAxCnVzZXI6IAoqKlJPVwpyb3dpZDogMgphbGlhc2VzOiAKYXV0\r\naF9uYW1lOiAKZnJvbV9kbjogCmZyb21fdXNlcjogCmZ3ZDogCmlzX3JlZzogb2Zm\r\nCm51bWJlcjogMQpwX2Fzc2VydGVkX2lkZW50aXR5OiAKcGFzc3dvcmQ6IAp0cnVu\r\nazogMgp1c2VyOiAKKlNFQ1RJT04gZGIuc2lwc3dpdGNoLnRydW5rX3BhcmFtcwpn\r\nZW5lcmF0aW9uOiAxCmxhc3Rfcm93aWQ6IDIKKipST1cKcm93aWQ6IDEKYWxpYXNf\r\naXA6IC0KZG9tYWluOiAKZG9tYWluX2lkOiAKZW5hYmxlZDogb24KZnJvbV9kb21h\r\naW46IHBkb21haW4KZnJvbV9kb21haW5fc3RyOiAKZndkX3JlZmVyOiBvZmYKZ2lu\r\nX3JlZzogb2ZmCmhpZGVfcnI6IG9mZgpoaWRlX3RvX3RhZ3M6IG9mZgppdHNwX2hv\r\nc3RfYWRkcnM6IC0KbHRydW5rX2dyb3VwX3BhcmFtOiAKbHRydW5rX2dyb3VwX3Vz\r\nYWdlOiAtCm1heF9jYWxsc19wZXJfbGluZTogCm1heF9jYWxsc190b3RhbDogCm5h\r\nbWU6IApvdXRib3VuZF9ndzogLQpvdXRib3VuZF9wcm94eTogCnBvcnQ6IApwcmVz\r\nZXJ2ZV9tYXhfZm9yd2FyZHM6IG9mZgpyZWRpcmVjdF9jYWxsZXJfZG9tYWluOiBv\r\nZmYKcmVkaXJlY3RfaG9tZV9kb21haW46IG9mZgpyZWZlcnRvX2RvbWFpbjogCnJl\r\nbGF5X21lZGlhOiBvZmYKcmVtb3ZlX3ZpYTogb2ZmCnJlbW92ZV92aWRlbzogb2Zm\r\nCnJvdXRlX2luY29taW5nOiBydXJpCnNlbmRfZHRtZl92aWFfc2lwX2luZm86IG9m\r\nZgp0cmFuc3BvcnQ6IC0KdHJ1bms6IDEKdHJ1bmtfZ3JvdXBfcGFyYW06IAp0cnVu\r\na19ncm91cF91c2FnZTogLQp0cnVzdGVkX25ldHdvcmtzX2VuYWJsZTogb2ZmCnVz\r\nZV9wcmVmZXJyZWRfaWRlbnRpdHk6IG9mZgoqKlJPVwpyb3dpZDogMgphbGlhc19p\r\ncDogLQpkb21haW46IApkb21haW5faWQ6IAplbmFibGVkOiBvbgpmcm9tX2RvbWFp\r\nbjogcGRvbWFpbgpmcm9tX2RvbWFpbl9zdHI6IApmd2RfcmVmZXI6IG9mZgpnaW5f\r\ncmVnOiBvZmYKaGlkZV9ycjogb2ZmCmhpZGVfdG9fdGFnczogb2ZmCml0c3BfaG9z\r\ndF9hZGRyczogLQpsdHJ1bmtfZ3JvdXBfcGFyYW06IApsdHJ1bmtfZ3JvdXBfdXNh\r\nZ2U6IC0KbWF4X2NhbGxzX3Blcl9saW5lOiAKbWF4X2NhbGxzX3RvdGFsOiAKbmFt\r\nZTogCm91dGJvdW5kX2d3OiAtCm91dGJvdW5kX3Byb3h5OiAKcG9ydDogCnByZXNl\r\ncnZlX21heF9mb3J3YXJkczogb2ZmCnJlZGlyZWN0X2NhbGxlcl9kb21haW46IG9m\r\nZgpyZWRpcmVjdF9ob21lX2RvbWFpbjogb2ZmCnJlZmVydG9fZG9tYWluOiAKcmVs\r\nYXlfbWVkaWE6IG9mZgpyZW1vdmVfdmlhOiBvZmYKcmVtb3ZlX3ZpZGVvOiBvZmYK\r\ncm91dGVfaW5jb21pbmc6IHJ1cmkKc2VuZF9kdG1mX3ZpYV9zaXBfaW5mbzogb2Zm\r\nCnRyYW5zcG9ydDogLQp0cnVuazogMgp0cnVua19ncm91cF9wYXJhbTogCnRydW5r\r\nX2dyb3VwX3VzYWdlOiAtCnRydXN0ZWRfbmV0d29ya3NfZW5hYmxlOiBvZmYKdXNl\r\nX3ByZWZlcnJlZF9pZGVudGl0eTogb2ZmCipTRUNUSU9OIGRiLnNpcHN3aXRjaC50\r\ncnVua19wYngKZ2VuZXJhdGlvbjogMQpsYXN0X3Jvd2lkOiAyCioqUk9XCnJvd2lk\r\nOiAxCmFsaWFzX2lwOiAtCmF1dGhfbmFtZTogCmNvbW1vbl91c2VyX3N1ZmZpeDog\r\nCmRvbWFpbjogCmVuYWJsZWQ6IG9uCmZyb21fbWF0Y2hpbmc6IGZyb21fdXJpCmZy\r\nb21fbWF0Y2hpbmdfc3RyOiAKZndkX3JlZmVyOiBvZmYKaW5jb21pbmdfZndkX3Bv\r\ncnQ6IAppbmNvbWluZ19md2RfdHJhbnNwb3J0OiAtCmlwYWRkcl9kbnM6IAppcGFk\r\nZHJfZXJyOiAKaXBhZGRyX2lwOiAKbHRydW5rX2dyb3VwX3VzYWdlOiAtCm5hbWU6\r\nIApwYXNzd29yZDogCnBieF9ob3N0X2FkZHJzOiAtCnJlZmVydG9fZG9tYWluOiAK\r\nc2VuZF9kdG1mX3ZpYV9zaXBfaW5mbzogb2ZmCnRvX3N0cjogCnRvX3R5cGU6IHJ1\r\ncmkKdHJ1bms6IDEKdHJ1bmtfZ3JvdXBfdXNhZ2U6IC0KdXJpOiAKKipST1cKcm93\r\naWQ6IDIKYWxpYXNfaXA6IC0KYXV0aF9uYW1lOiAKY29tbW9uX3VzZXJfc3VmZml4\r\nOiAKZG9tYWluOiAKZW5hYmxlZDogb24KZnJvbV9tYXRjaGluZzogZnJvbV91cmkK\r\nZnJvbV9tYXRjaGluZ19zdHI6IApmd2RfcmVmZXI6IG9mZgppbmNvbWluZ19md2Rf\r\ncG9ydDogCmluY29taW5nX2Z3ZF90cmFuc3BvcnQ6IC0KaXBhZGRyX2RuczogCmlw\r\nYWRkcl9lcnI6IAppcGFkZHJfaXA6IApsdHJ1bmtfZ3JvdXBfdXNhZ2U6IC0KbmFt\r\nZTogCnBhc3N3b3JkOiAKcGJ4X2hvc3RfYWRkcnM6IC0KcmVmZXJ0b19kb21haW46\r\nIApzZW5kX2R0bWZfdmlhX3NpcF9pbmZvOiBvZmYKdG9fc3RyOiAKdG9fdHlwZTog\r\ncnVyaQp0cnVuazogMgp0cnVua19ncm91cF91c2FnZTogLQp1cmk6IAoqU0VDVElP\r\nTiBkYi5zaXBzd2l0Y2gudHJ1bmtfcGJ4X2xpbmVzCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMAoqU0VDVElPTiBkYi5zaXBzd2l0Y2gudHJ1bmtfc2lwX2xpbmVz\r\nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5zaXBzd2l0\r\nY2gudHJ1bmtzCmdlbmVyYXRpb246IDEKbGFzdF9yb3dpZDogMgoqKlJPVwpyb3dp\r\nZDogMQplbmFibGVkOiBvZmYKaWQ6IDEKcGFyYW1zOiAtCnBieDogLQoqKlJPVwpy\r\nb3dpZDogMgplbmFibGVkOiBvZmYKaWQ6IDIKcGFyYW1zOiAtCnBieDogLQoqU0VD\r\nVElPTiBkYi5zaXBzd2l0Y2gudXNlcl9yb3V0aW5nCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMAoqU0VDVElPTiBkYi5zaXBzd2l0Y2gudXNlcnMKZ2VuZXJhdGlv\r\nbjogMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLnNpcHN3aXRjaC52b2ljZW1h\r\naWwKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIEVPRgoAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nZGIvZGIucHB0cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAADAwMDA2NDQAMDAwMDA2MwAwMDAwMDYzADAwMDAwMDAxNTEyADEzMzYxNDAx\r\nNDQ3ADAxMTcyMwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIFRoaXMgZmlsZSBpcyBh\r\nIHN0cmljdCBmb3JtYXQgY29uZmlndXJhdGlvbiBmaWxlLgojIEVkaXQgY2FyZWZ1\r\nbGx5IG9yIG5vdCBhdCBhbGwuCipTRUNUSU9OIGRiLnBwdHAuZ3JlX2xvZ2NsYXNz\r\nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2dj\r\nbGFzczogLQoqU0VDVElPTiBkYi5wcHRwLnBwdHBfZW5hYmxlCmdlbmVyYXRpb246\r\nIDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNF\r\nQ1RJT04gZGIucHB0cC5wcHRwX2xvZ2NsYXNzCmdlbmVyYXRpb246IDAKbGFzdF9y\r\nb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2djbGFzczogTG9jYWwKKlNFQ1RJT04g\r\nZGIucHB0cC5wcHRwX25ldHMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioq\r\nUk9XCnJvd2lkOiAxCmNsaWVudF9uZXRncm91cDogLQpkbnMxX2RuczogCmRuczFf\r\nZXJyOiAKZG5zMV9pcDogCmRuczJfZG5zOiAKZG5zMl9lcnI6IApkbnMyX2lwOiAK\r\nbGNwX2VjaG9faW50ZXJ2YWw6IApsb2NhbF9hZGRyOiAtCndpbnMxX2RuczogCndp\r\nbnMxX2VycjogCndpbnMxX2lwOiAKd2luczJfZG5zOiAKd2luczJfZXJyOiAKd2lu\r\nczJfaXA6IAoqU0VDVElPTiBkYi5wcHRwLnBwdHBfc2VydmVyaXAKZ2VuZXJhdGlv\r\nbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmlwOiAtCipTRUNUSU9O\r\nIGRiLnBwdHAucHB0cF91c2VycwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDAK\r\nKlNFQ1RJT04gZGIucHB0cC5wcHRwbmVnX2xvZ2NsYXNzCmdlbmVyYXRpb246IDAK\r\nbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2djbGFzczogTG9jYWwKKlNF\r\nQ1RJT04gRU9GCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nZGIvZGIudGxzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAADAwMDA2NDQAMDAwMDA2MwAwMDAwMDYzADAwMDAwMDEwNTA3ADEzMzYxNDAx\r\nNDQ3ADAxMTU0NgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIFRoaXMgZmlsZSBpcyBh\r\nIHN0cmljdCBmb3JtYXQgY29uZmlndXJhdGlvbiBmaWxlLgojIEVkaXQgY2FyZWZ1\r\nbGx5IG9yIG5vdCBhdCBhbGwuCipTRUNUSU9OIGRiLnRscy5jaXBoZXJzCmdlbmVy\r\nYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpjaXBoZXJzOiBI\r\nSUdIOiFhTlVMTDohTUQ1Cm5hbWU6IEhJR0gKKlNFQ1RJT04gZGIudGxzLmRocGFy\r\nYW1zCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogNAoqKlJPVwpyb3dpZDogMQpk\r\naHBhcmFtOiAtLS0tLUJFR0lOIERIIFBBUkFNRVRFUlMtLS0tLVxuTUlHSEFvR0JB\r\nUC8vLy8vLy8vLy95US9hb2lGb3dqVEV4bUtMZ053YzBTa0NUZ2lLWjh4MEFndStw\r\nanNUbXlKUlxuU2doNWpqUUUzZStWR2JQTk9rTWJNQ3NLYmZKZkZEZFA0VFZ0YlZI\r\nQ1JlU0Z0WFppWG43RzlFeEM2YVkzN1dzTFxuLzF5MjlBYTM3ZTQ0YS90YWlaK2xy\r\ncDhrRVh4TEgrWkpLR1pSN09aVGdmLy8vLy8vLy8vL0FnRUNcbi0tLS0tRU5EIERI\r\nIFBBUkFNRVRFUlMtLS0tLVxuCm5hbWU6IE1PRFAxMDI0IChHcm91cCAyKQoqKlJP\r\nVwpyb3dpZDogMgpkaHBhcmFtOiAtLS0tLUJFR0lOIERIIFBBUkFNRVRFUlMtLS0t\r\nLVxuTUlJQkNBS0NBUUVBLy8vLy8vLy8vLy9KRDlxaUlXakNOTVRHWW91QTNCelJL\r\nUUpPQ0lwbnpIUUNDNzZtT3hPYlxuSWxGS0NIbU9OQVRkNzVVWnM4MDZReHN3S3dw\r\ndDhsOFVOMC9oTlcxdFVjSkY1SVcxZG1KZWZzYjBURUxwcGpmdFxuYXd2L1hMYjBC\r\ncmZ0N2pocisxcUpuNld1bnlRUmZFc2Y1a2tvWmxIczVGczl3Z0I4dUtGanZ3V1ky\r\na2cySEZYVFxubW1rV1A2ajlKTTlmZzJWZEk5eWpyWlljWXZOV0lJVlN1NTdWS1Fk\r\nd2xwWnRad3cxVGtxOG1BVHhkR3dJeWhnaFxuZkRLUVhrWXVOczQ3NDU1M0xCZ09o\r\nZ09iSjRPaTdBZWlqN1hGWGZCdlRGTEozaXZMOXBWWUZ4ZzVsVWw4NnBWcVxuNVJY\r\nU0poaVkrZ1VRRlhLT1dvcXNxbWovLy8vLy8vLy8vd0lCQWc9PVxuLS0tLS1FTkQg\r\nREggUEFSQU1FVEVSUy0tLS0tXG4KbmFtZTogTU9EUDIwNDggKEdyb3VwIDE0KQoq\r\nKlJPVwpyb3dpZDogMwpkaHBhcmFtOiAtLS0tLUJFR0lOIERIIFBBUkFNRVRFUlMt\r\nLS0tLVxuTUlJQ0NBS0NBZ0VBLy8vLy8vLy8vLy9KRDlxaUlXakNOTVRHWW91QTNC\r\nelJLUUpPQ0lwbnpIUUNDNzZtT3hPYlxuSWxGS0NIbU9OQVRkNzVVWnM4MDZReHN3\r\nS3dwdDhsOFVOMC9oTlcxdFVjSkY1SVcxZG1KZWZzYjBURUxwcGpmdFxuYXd2L1hM\r\nYjBCcmZ0N2pocisxcUpuNld1bnlRUmZFc2Y1a2tvWmxIczVGczl3Z0I4dUtGanZ3\r\nV1kya2cySEZYVFxubW1rV1A2ajlKTTlmZzJWZEk5eWpyWlljWXZOV0lJVlN1NTdW\r\nS1Fkd2xwWnRad3cxVGtxOG1BVHhkR3dJeWhnaFxuZkRLUVhrWXVOczQ3NDU1M0xC\r\nZ09oZ09iSjRPaTdBZWlqN1hGWGZCdlRGTEozaXZMOXBWWUZ4ZzVsVWw4NnBWcVxu\r\nNVJYU0poaVkrZ1VRRlhLT1dvcXF4QzJ0TXhjTkJGQjZNNmhWSWF2ZkhMcGs3UHVG\r\nQkZqYjd3cUs2bkZYWFFZTVxuZmJPWEQ0V200ZVRIcS9XdWpOc0pNOWNlakpUZ1Np\r\nVmhuYzdqMGlZYTB1NXI4Uy82QnRtS0NHVFlkZ0p6UHNocVxuWkZJZkt4Z1hleUFN\r\ndStFWFYzcGhYV3gzQ1lqQXV0bEc0Z2ppVDZCMDVhc3hROXRiL09EOUVJNUxndEVn\r\ncVNFSVxuQVJweVBCS25oK2JYaUhHYUVMMjZXeWFad3ljWWF2VGlQQnFVYURTMkZR\r\ndmFKWVBweWlyVVRPamJ1OExiQk42T1xuK1M2Ty9CUWZ2c3FtS0h4WlIwNXJ3RjJa\r\nc3BaUG9KRERvaU03b1laUlcrZnRIMkVwY003aTE2KzRHOTEySVhCSVxuSE5BR2tT\r\nZlZzRnFwazdUcW1JMlAzY0dHLzdmY2tLYkFqMDMwTmNrMEJqR1ovLy8vLy8vLy8v\r\nOENBUUk9XG4tLS0tLUVORCBESCBQQVJBTUVURVJTLS0tLS1cbgpuYW1lOiBNT0RQ\r\nNDA5NiAoR3JvdXAgMTYpCioqUk9XCnJvd2lkOiA0CmRocGFyYW06IC0tLS0tQkVH\r\nSU4gREggUEFSQU1FVEVSUy0tLS0tXG5NSUlFQ0FLQ0JBRUEvLy8vLy8vLy8vL0pE\r\nOXFpSVdqQ05NVEdZb3VBM0J6UktRSk9DSXBuekhRQ0M3Nm1PeE9iXG5JbEZLQ0ht\r\nT05BVGQ3NVVaczgwNlF4c3dLd3B0OGw4VU4wL2hOVzF0VWNKRjVJVzFkbUplZnNi\r\nMFRFTHBwamZ0XG5hd3YvWExiMEJyZnQ3amhyKzFxSm42V3VueVFSZkVzZjVra29a\r\nbEhzNUZzOXdnQjh1S0ZqdndXWTJrZzJIRlhUXG5tbWtXUDZqOUpNOWZnMlZkSTl5\r\nanJaWWNZdk5XSUlWU3U1N1ZLUWR3bHBadFp3dzFUa3E4bUFUeGRHd0l5aGdoXG5m\r\nREtRWGtZdU5zNDc0NTUzTEJnT2hnT2JKNE9pN0FlaWo3WEZYZkJ2VEZMSjNpdkw5\r\ncFZZRnhnNWxVbDg2cFZxXG41UlhTSmhpWStnVVFGWEtPV29xcXhDMnRNeGNOQkZC\r\nNk02aFZJYXZmSExwazdQdUZCRmpiN3dxSzZuRlhYUVlNXG5mYk9YRDRXbTRlVEhx\r\nL1d1ak5zSk05Y2VqSlRnU2lWaG5jN2owaVlhMHU1cjhTLzZCdG1LQ0dUWWRnSnpQ\r\nc2hxXG5aRklmS3hnWGV5QU11K0VYVjNwaFhXeDNDWWpBdXRsRzRnamlUNkIwNWFz\r\neFE5dGIvT0Q5RUk1TGd0RWdxU0VJXG5BUnB5UEJLbmgrYlhpSEdhRUwyNld5YVp3\r\neWNZYXZUaVBCcVVhRFMyRlF2YUpZUHB5aXJVVE9qYnU4TGJCTjZPXG4rUzZPL0JR\r\nZnZzcW1LSHhaUjA1cndGMlpzcFpQb0pERG9pTTdvWVpSVytmdEgyRXBjTTdpMTYr\r\nNEc5MTJJWEJJXG5ITkFHa1NmVnNGcXBrN1RxbUkyUDNjR0cvN2Zja0tiQWowMzBO\r\nY2swQW9TU05zUDZ0Tko4Y0NiQjFOeXlZQ1pHXG4zc2wxSG5ZOXVqZTkrUCtVQnEy\r\nZVV3N2wyemd2UVRBQnJyQnFVKzJRSjlneEY1Y25zSVphaVJqYVB0dnJ6NXNVXG43\r\nVVRPYkxyTzFMc2IyMzhVUitiTUpVc3pJRkZSSzlldlFtKzQ5QUUzak5LL1dZUEtB\r\nY1pMa3V6d011b1YwWElkXG5BL1NDMTg1dWRQNzIxVjV3TDBhWURJSzFxRUF4a0Fz\r\nY25sbm55WCsreCtqekk2bDZmamJNaUw0UEhVVzMvMWhhXG54VXZVQjdJclFWU3F6\r\nSTl0ZnI5STRkZ1V6RjdTRDRBMzRLZVhGZTd5bStNb0JxSFZpN2ZGMm5iMVVLbzlp\r\naCsvXG44T3NaekxHakU5VmMybGJKN0M3eWxqSTRmK2pYYmp3RWFBUStqMlkvU0dE\r\ndUVyOHRXd3QwZE5ibWxQa2ViYjRSXG5XWFNqa204Uy91WGtPSGQ4dHFreTM0ell2\r\nc1RRYzdreHVqdklNcmFObmRNQWRCK252NHI4UiswbGR2YVRhNlFrXG5aanFyWTV4\r\nYTVQVm9OQ08wZEN2eHlYZ2pqeGJMNDUxbExlUDl1TDc4aElyWklpSXVCS1FEZkFj\r\nVDYxZW9HaVB3XG54elJ6L0dSczZqQnJTOHZJaGkrRGhkMzZuVXQvb3NDSDZIbG9N\r\nd1B0VzkwNkJpczg5Yk9pZUtadEtoUDRQMFQ0XG5MZDh4RHVCMHEybzJSWmZvbWFB\r\nbFhjRms4eHpGQ0VhRkhmbXJTQmxkN1g2aHNkVVF2WDduVFhQNjgydkRIcytpXG5h\r\nRFdRUnZUcmg1K1NRQWxEaTBnY2JOZUltZ0F1MWU0NEs4a1pEYWI4QW01SGxWamtS\r\nMVozNmFxZU1GRGlkbGFVXG4zOGdmVnVpQXVXNXhZTW1BM1pqdDA5Ly8vLy8vLy8v\r\nLy93SUJBZz09XG4tLS0tLUVORCBESCBQQVJBTUVURVJTLS0tLS1cbgpuYW1lOiBN\r\nT0RQODE5MiAoR3JvdXAgMTgpCipTRUNUSU9OIGRiLnRscy5wcm90b2NvbHMKZ2Vu\r\nZXJhdGlvbjogMApsYXN0X3Jvd2lkOiA5CioqUk9XCnJvd2lkOiAxCm5hbWU6IERU\r\nTFN2MS54CnByb3RvY29sOiBEVExTdjEKKipST1cKcm93aWQ6IDIKbmFtZTogRFRM\r\nU3YxLngKcHJvdG9jb2w6IERUTFN2MV8yCioqUk9XCnJvd2lkOiAzCm5hbWU6IFNT\r\nTHYzLjAKcHJvdG9jb2w6IFNTTHYzCioqUk9XCnJvd2lkOiA0Cm5hbWU6IFRMU3Yx\r\nLnggJiBTU0x2My4wCnByb3RvY29sOiBTU0x2MwoqKlJPVwpyb3dpZDogNQpuYW1l\r\nOiBUTFN2MS54ICYgU1NMdjMuMApwcm90b2NvbDogVExTdjEKKipST1cKcm93aWQ6\r\nIDYKbmFtZTogVExTdjEueCAmIFNTTHYzLjAKcHJvdG9jb2w6IFRMU3YxXzEKKipS\r\nT1cKcm93aWQ6IDcKbmFtZTogVExTdjEueCAmIFNTTHYzLjAKcHJvdG9jb2w6IFRM\r\nU3YxXzIKKipST1cKcm93aWQ6IDgKbmFtZTogVExTdjEueApwcm90b2NvbDogVExT\r\ndjFfMQoqKlJPVwpyb3dpZDogOQpuYW1lOiBUTFN2MS54CnByb3RvY29sOiBUTFN2\r\nMV8yCipTRUNUSU9OIGRiLnRscy50bHMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lk\r\nOiA0CioqUk9XCnJvd2lkOiAxCmNpcGhlcnM6IEhJR0gKZGhwYXJhbTogTU9EUDIw\r\nNDggKEdyb3VwIDE0KQplY2RoOiBwcmltZTI1NnYxCm5hbWU6IERUTFN2MS54CnBy\r\nb3RvY29sczogRFRMU3YxLngKKipST1cKcm93aWQ6IDIKY2lwaGVyczogSElHSApk\r\naHBhcmFtOiBNT0RQMjA0OCAoR3JvdXAgMTQpCmVjZGg6IHByaW1lMjU2djEKbmFt\r\nZTogU1NMdjMuMApwcm90b2NvbHM6IFNTTHYzLjAKKipST1cKcm93aWQ6IDMKY2lw\r\naGVyczogSElHSApkaHBhcmFtOiBNT0RQMjA0OCAoR3JvdXAgMTQpCmVjZGg6IHBy\r\naW1lMjU2djEKbmFtZTogVExTdjEueCAmIFNTTHYzLjAKcHJvdG9jb2xzOiBUTFN2\r\nMS54ICYgU1NMdjMuMAoqKlJPVwpyb3dpZDogNApjaXBoZXJzOiBISUdICmRocGFy\r\nYW06IE1PRFAyMDQ4IChHcm91cCAxNCkKZWNkaDogcHJpbWUyNTZ2MQpuYW1lOiBU\r\nTFN2MS54CnByb3RvY29sczogVExTdjEueAoqU0VDVElPTiBFT0YKAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkYi9kYi5taXNjAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAw\r\nMDYzADAwMDAwNjMAMDAwMDAwMDYyMzYAMTMzNjQzMjYxMzIAMDExNzAzACAwAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAHVzdGFyICAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAACMgVGhpcyBmaWxlIGlzIGEgc3RyaWN0IGZvcm1hdCBj\r\nb25maWd1cmF0aW9uIGZpbGUuCiMgRWRpdCBjYXJlZnVsbHkgb3Igbm90IGF0IGFs\r\nbC4KKlNFQ1RJT04gZGIubWlzYy5jbG91ZHlfZGVidWdfbG9nY2xhc3MKZ2VuZXJh\r\ndGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmxvZ2NsYXNzOiAt\r\nCipTRUNUSU9OIGRiLm1pc2MuY2xvdWR5X2Vycm9yX2xvZ2NsYXNzCmdlbmVyYXRp\r\nb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2djbGFzczogTG9j\r\nYWwKKlNFQ1RJT04gZGIubWlzYy5jbG91ZHlfaW5mb19sb2djbGFzcwpnZW5lcmF0\r\naW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKbG9nY2xhc3M6IExv\r\nY2FsCipTRUNUSU9OIGRiLm1pc2MuY29ubnRyYWNrX3RpbWVvdXRzCmdlbmVyYXRp\r\nb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQppY21wOiAzMAppY21w\r\nNjogMzAKdGNwX2VzdGFibGlzaGVkOiA0MzIwMDAKdWRwOiAxMAp1ZHBfc3RyZWFt\r\nOiAxODAKKlNFQ1RJT04gZGIubWlzYy5kZWZhdWx0X2RvbWFpbgpnZW5lcmF0aW9u\r\nOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZG9tYWluOiAuCipTRUNU\r\nSU9OIGRiLm1pc2MuZGhjcF9zZXJ2ZXIKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lk\r\nOiAwCipTRUNUSU9OIGRiLm1pc2MuZGhjcF9zZXJ2ZXJfZGF0YV90eXBlCmdlbmVy\r\nYXRpb246IDAKbGFzdF9yb3dpZDogMTEKKipST1cKcm93aWQ6IDEKbmFtZTogQm9v\r\nbGVhbgpvcmRlcjogMQp0eXBlOiBCT09MRUFOCioqUk9XCnJvd2lkOiAyCm5hbWU6\r\nIFVuc2lnbmVkIEludGVnZXIgKDgpCm9yZGVyOiAxCnR5cGU6IFVJTlQ4CioqUk9X\r\nCnJvd2lkOiAzCm5hbWU6IFVuc2lnbmVkIEludGVnZXIgKDE2KQpvcmRlcjogMQp0\r\neXBlOiBVSU5UMTYKKipST1cKcm93aWQ6IDQKbmFtZTogVW5zaWduZWQgSW50ZWdl\r\nciAoMzIpCm9yZGVyOiAxCnR5cGU6IFVJTlQzMgoqKlJPVwpyb3dpZDogNQpuYW1l\r\nOiBJbnRlZ2VyICg4KQpvcmRlcjogMQp0eXBlOiBJTlQ4CioqUk9XCnJvd2lkOiA2\r\nCm5hbWU6IEludGVnZXIgKDE2KQpvcmRlcjogMQp0eXBlOiBJTlQxNgoqKlJPVwpy\r\nb3dpZDogNwpuYW1lOiBJbnRlZ2VyICgzMikKb3JkZXI6IDEKdHlwZTogSU5UMzIK\r\nKipST1cKcm93aWQ6IDgKbmFtZTogSVB2NCBhZGRyZXNzCm9yZGVyOiAxCnR5cGU6\r\nIElQdjQKKipST1cKcm93aWQ6IDkKbmFtZTogSVB2NiBhZGRyZXNzCm9yZGVyOiAx\r\nCnR5cGU6IElQdjYKKipST1cKcm93aWQ6IDEwCm5hbWU6IFRleHQKb3JkZXI6IDEK\r\ndHlwZTogVEVYVAoqKlJPVwpyb3dpZDogMTEKbmFtZTogU3RyaW5nCm9yZGVyOiAx\r\nCnR5cGU6IFNUUklORwoqU0VDVElPTiBkYi5taXNjLmRoY3Bfc2VydmVyX2Ruc19z\r\nZXJ2ZXJzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5t\r\naXNjLmRoY3Bfc2VydmVyX2RvbWFpbgpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6\r\nIDEKKipST1cKcm93aWQ6IDEKZG9tYWluOgoqU0VDVElPTiBkYi5taXNjLmRoY3Bf\r\nc2VydmVyX2dpdmVfbnMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9X\r\nCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5taXNjLmRoY3Bfc2Vy\r\ndmVyX2xlYXNldGltZQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cK\r\ncm93aWQ6IDEKZGVmYXVsdDogNDMyMDAKbWF4OiA4NjQwMAptaW46IDYwCipTRUNU\r\nSU9OIGRiLm1pc2MuZGhjcF9zZXJ2ZXJfbmV0Ymlvc19lbmFibGVkCmdlbmVyYXRp\r\nb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiAtCipT\r\nRUNUSU9OIGRiLm1pc2MuZGhjcF9zZXJ2ZXJfbmV0Ymlvc19ub2RldHlwZQpnZW5l\r\ncmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKdHlwZTogLQoq\r\nU0VDVElPTiBkYi5taXNjLmRoY3Bfc2VydmVyX29wdGlvbnMKZ2VuZXJhdGlvbjog\r\nMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLm1pc2MuZGhjcF9zZXJ2ZXJfc3Rh\r\ndHVzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpl\r\nbmFibGVkOiBvZmYKKlNFQ1RJT04gZGIubWlzYy5kaGNwX3NlcnZlcl93aW5zX3Nl\r\ncnZlcnMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLm1p\r\nc2MuZG5zX3ByZWZlcmVuY2UKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioq\r\nUk9XCnJvd2lkOiAxCnByZWZlcmVuY2U6IGF1dG8KKlNFQ1RJT04gZGIubWlzYy5k\r\nbnNfc2VydmVycwpnZW5lcmF0aW9uOiA0Cmxhc3Rfcm93aWQ6IDIKKlNFQ1RJT04g\r\nZGIubWlzYy5keW5kbnMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9X\r\nCnJvd2lkOiAxCmJhY2t1cDogb2ZmCmNhOiAtCmVuYWJsZWQ6IG9mZgppcDogLQpt\r\neDoKb2ZmbGluZTogb2ZmCnBhc3N3b3JkOgpzZXJ2aWNlOiAtCnVzZXI6CndpbGRj\r\nYXJkOiBvZmYKKlNFQ1RJT04gZGIubWlzYy5keW5kbnNfbmFtZQpnZW5lcmF0aW9u\r\nOiAwCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIubWlzYy5mb3JjZV9ubGNrCmdl\r\nbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVk\r\nOiBvZmYKKlNFQ1RJT04gZGIubWlzYy5mdmVyc2lvbgpnZW5lcmF0aW9uOiAwCmxh\r\nc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipTRUNUSU9O\r\nIGRiLm1pc2MubnRwX3NlcnZlcnMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAw\r\nCipTRUNUSU9OIGRiLm1pc2Mub3B0aW9ucwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93\r\naWQ6IDAKKlNFQ1RJT04gZGIubWlzYy5yYWR2ZF9pbnRlcmZhY2Vfc2V0dGluZ3MK\r\nZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLm1pc2MucmFk\r\ndmRfcHJlZml4X3NldHRpbmdzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoq\r\nU0VDVElPTiBkYi5taXNjLnJhZHZkX3ByZWZpeGVzCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMAoqU0VDVElPTiBkYi5taXNjLnJhZHZkX3N0YXR1cwpnZW5lcmF0\r\naW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2Zm\r\nCipTRUNUSU9OIGRiLm1pc2MudW5pdG5hbWUKZ2VuZXJhdGlvbjogMApsYXN0X3Jv\r\nd2lkOiAxCioqUk9XCnJvd2lkOiAxCnVuaXRuYW1lOgoqU0VDVElPTiBkYi5taXNj\r\nLnVzZV9udHAKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lk\r\nOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBFT0YKAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nZGIvZGIucW9zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAADAwMDA2NDQAMDAwMDA2MwAwMDAwMDYzADAwMDAwMDA1NjcwADEzMzYxNDAy\r\nNDY3ADAxMTU1NgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIFRoaXMgZmlsZSBpcyBh\r\nIHN0cmljdCBmb3JtYXQgY29uZmlndXJhdGlvbiBmaWxlLgojIEVkaXQgY2FyZWZ1\r\nbGx5IG9yIG5vdCBhdCBhbGwuCipTRUNUSU9OIGRiLnFvcy5iYW5kd2lkdGhzCmdl\r\nbmVyYXRpb246IDEKbGFzdF9yb3dpZDogNgoqKlJPVwpyb3dpZDogMQplZ3Jlc3Nf\r\nYmFuZHdpZHRoOiAKZWdyZXNzX2VuYWJsZWQ6IG9mZgplZ3Jlc3NfcmVzZXJ2ZV9z\r\naXBfbWVkaWE6IAplZ3Jlc3NfcmVzZXJ2ZV9zaXBfbWVkaWFfZW1lcmdlbmN5OiAK\r\naW5ncmVzc19iYW5kd2lkdGg6IAppbmdyZXNzX2VuYWJsZWQ6IG9mZgppbmdyZXNz\r\nX3Jlc2VydmVfc2lwX21lZGlhOiAKaW5ncmVzc19yZXNlcnZlX3NpcF9tZWRpYV9l\r\nbWVyZ2VuY3k6IAppbnRlcmZhY2U6IGV0aDAKKipST1cKcm93aWQ6IDIKZWdyZXNz\r\nX2JhbmR3aWR0aDogCmVncmVzc19lbmFibGVkOiBvZmYKZWdyZXNzX3Jlc2VydmVf\r\nc2lwX21lZGlhOiAKZWdyZXNzX3Jlc2VydmVfc2lwX21lZGlhX2VtZXJnZW5jeTog\r\nCmluZ3Jlc3NfYmFuZHdpZHRoOiAKaW5ncmVzc19lbmFibGVkOiBvZmYKaW5ncmVz\r\nc19yZXNlcnZlX3NpcF9tZWRpYTogCmluZ3Jlc3NfcmVzZXJ2ZV9zaXBfbWVkaWFf\r\nZW1lcmdlbmN5OiAKaW50ZXJmYWNlOiBldGgxCioqUk9XCnJvd2lkOiAzCmVncmVz\r\nc19iYW5kd2lkdGg6IAplZ3Jlc3NfZW5hYmxlZDogb2ZmCmVncmVzc19yZXNlcnZl\r\nX3NpcF9tZWRpYTogCmVncmVzc19yZXNlcnZlX3NpcF9tZWRpYV9lbWVyZ2VuY3k6\r\nIAppbmdyZXNzX2JhbmR3aWR0aDogCmluZ3Jlc3NfZW5hYmxlZDogb2ZmCmluZ3Jl\r\nc3NfcmVzZXJ2ZV9zaXBfbWVkaWE6IAppbmdyZXNzX3Jlc2VydmVfc2lwX21lZGlh\r\nX2VtZXJnZW5jeTogCmludGVyZmFjZTogZXRoMgoqKlJPVwpyb3dpZDogNAplZ3Jl\r\nc3NfYmFuZHdpZHRoOiAKZWdyZXNzX2VuYWJsZWQ6IG9mZgplZ3Jlc3NfcmVzZXJ2\r\nZV9zaXBfbWVkaWE6IAplZ3Jlc3NfcmVzZXJ2ZV9zaXBfbWVkaWFfZW1lcmdlbmN5\r\nOiAKaW5ncmVzc19iYW5kd2lkdGg6IAppbmdyZXNzX2VuYWJsZWQ6IG9mZgppbmdy\r\nZXNzX3Jlc2VydmVfc2lwX21lZGlhOiAKaW5ncmVzc19yZXNlcnZlX3NpcF9tZWRp\r\nYV9lbWVyZ2VuY3k6IAppbnRlcmZhY2U6IGV0aDMKKipST1cKcm93aWQ6IDUKZWdy\r\nZXNzX2JhbmR3aWR0aDogCmVncmVzc19lbmFibGVkOiBvZmYKZWdyZXNzX3Jlc2Vy\r\ndmVfc2lwX21lZGlhOiAKZWdyZXNzX3Jlc2VydmVfc2lwX21lZGlhX2VtZXJnZW5j\r\neTogCmluZ3Jlc3NfYmFuZHdpZHRoOiAKaW5ncmVzc19lbmFibGVkOiBvZmYKaW5n\r\ncmVzc19yZXNlcnZlX3NpcF9tZWRpYTogCmluZ3Jlc3NfcmVzZXJ2ZV9zaXBfbWVk\r\naWFfZW1lcmdlbmN5OiAKaW50ZXJmYWNlOiBldGg0CioqUk9XCnJvd2lkOiA2CmVn\r\ncmVzc19iYW5kd2lkdGg6IAplZ3Jlc3NfZW5hYmxlZDogb2ZmCmVncmVzc19yZXNl\r\ncnZlX3NpcF9tZWRpYTogCmVncmVzc19yZXNlcnZlX3NpcF9tZWRpYV9lbWVyZ2Vu\r\nY3k6IAppbmdyZXNzX2JhbmR3aWR0aDogCmluZ3Jlc3NfZW5hYmxlZDogb2ZmCmlu\r\nZ3Jlc3NfcmVzZXJ2ZV9zaXBfbWVkaWE6IAppbmdyZXNzX3Jlc2VydmVfc2lwX21l\r\nZGlhX2VtZXJnZW5jeTogCmludGVyZmFjZTogZXRoNQoqU0VDVElPTiBkYi5xb3Mu\r\nY2xhc3NlcwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6\r\nIDEKY2xpZW50X25ldGdyb3VwOiAtCmRzY3A6IAptYXhfcGFja2V0X3NpemU6IApt\r\naW5fcGFja2V0X3NpemU6IApuYW1lOiBTSVAgU2lnbmFsaW5nCm51bWJlcjogMQpz\r\nZXJ2ZXJfbmV0Z3JvdXA6IC0Kc2VydmljZTogLQpzaXA6IHNpZ25hbGluZwp0b3M6\r\nIC0KKlNFQ1RJT04gZGIucW9zLmVncmVzc19kZWZhdWx0X3F1ZXVlaW5nCmdlbmVy\r\nYXRpb246IDEKbGFzdF9yb3dpZDogNgoqKlJPVwpyb3dpZDogMQppbnRlcmZhY2U6\r\nIGV0aDAKbGltaXQ6IApxdWV1ZTogcHJpbzgKcmF0ZTogCioqUk9XCnJvd2lkOiAy\r\nCmludGVyZmFjZTogZXRoMQpsaW1pdDogCnF1ZXVlOiBwcmlvOApyYXRlOiAKKipS\r\nT1cKcm93aWQ6IDMKaW50ZXJmYWNlOiBldGgyCmxpbWl0OiAKcXVldWU6IHByaW84\r\nCnJhdGU6IAoqKlJPVwpyb3dpZDogNAppbnRlcmZhY2U6IGV0aDMKbGltaXQ6IApx\r\ndWV1ZTogcHJpbzgKcmF0ZTogCioqUk9XCnJvd2lkOiA1CmludGVyZmFjZTogZXRo\r\nNApsaW1pdDogCnF1ZXVlOiBwcmlvOApyYXRlOiAKKipST1cKcm93aWQ6IDYKaW50\r\nZXJmYWNlOiBldGg1CmxpbWl0OiAKcXVldWU6IHByaW84CnJhdGU6IAoqU0VDVElP\r\nTiBkYi5xb3MuZWdyZXNzX3F1ZXVlaW5nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dp\r\nZDogMAoqU0VDVElPTiBkYi5xb3MuaW5ncmVzc19kZWZhdWx0X3F1ZXVlaW5nCmdl\r\nbmVyYXRpb246IDEKbGFzdF9yb3dpZDogNgoqKlJPVwpyb3dpZDogMQppbnRlcmZh\r\nY2U6IGV0aDAKbGltaXQ6IApxdWV1ZTogcHJpbzgKcmF0ZTogCioqUk9XCnJvd2lk\r\nOiAyCmludGVyZmFjZTogZXRoMQpsaW1pdDogCnF1ZXVlOiBwcmlvOApyYXRlOiAK\r\nKipST1cKcm93aWQ6IDMKaW50ZXJmYWNlOiBldGgyCmxpbWl0OiAKcXVldWU6IHBy\r\naW84CnJhdGU6IAoqKlJPVwpyb3dpZDogNAppbnRlcmZhY2U6IGV0aDMKbGltaXQ6\r\nIApxdWV1ZTogcHJpbzgKcmF0ZTogCioqUk9XCnJvd2lkOiA1CmludGVyZmFjZTog\r\nZXRoNApsaW1pdDogCnF1ZXVlOiBwcmlvOApyYXRlOiAKKipST1cKcm93aWQ6IDYK\r\naW50ZXJmYWNlOiBldGg1CmxpbWl0OiAKcXVldWU6IHByaW84CnJhdGU6IAoqU0VD\r\nVElPTiBkYi5xb3MuaW5ncmVzc19xdWV1ZWluZwpnZW5lcmF0aW9uOiAwCmxhc3Rf\r\ncm93aWQ6IDAKKlNFQ1RJT04gZGIucW9zLnNpcF9jYWMKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElP\r\nTiBkYi5xb3Muc3RhdHVzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJP\r\nVwpyb3dpZDogMQpwcmlvX3NhdmU6IDAKdHlwZTogcHJpb3JpdHkKKlNFQ1RJT04g\r\nZGIucW9zLnRhZ2dpbmcKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNU\r\nSU9OIEVPRgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkYi9kYi5jZXJ0AAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAw\r\nMDYzADAwMDAwNjMAMDAwMDAwMDAzMTAAMTMzNjE0MDE0NDcAMDExNjcwACAwAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAHVzdGFyICAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAACMgVGhpcyBmaWxlIGlzIGEgc3RyaWN0IGZvcm1hdCBj\r\nb25maWd1cmF0aW9uIGZpbGUuCiMgRWRpdCBjYXJlZnVsbHkgb3Igbm90IGF0IGFs\r\nbC4KKlNFQ1RJT04gZGIuY2VydC5jYXMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lk\r\nOiAwCipTRUNUSU9OIGRiLmNlcnQub3duX2NlcnRzCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMAoqU0VDVElPTiBFT0YKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nZGIvZGIucnVudGltZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAADAwMDA2NDQAMDAwMDA2MwAwMDAwMDYzADAwMDAwMDAwNDIwADEzMzYxNDAx\r\nNDQ3ADAxMjQyMAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIFRoaXMgZmlsZSBpcyBh\r\nIHN0cmljdCBmb3JtYXQgY29uZmlndXJhdGlvbiBmaWxlLgojIEVkaXQgY2FyZWZ1\r\nbGx5IG9yIG5vdCBhdCBhbGwuCipTRUNUSU9OIGRiLnJ1bnRpbWUuYWN0aXZlX3Jv\r\ndXRlcnMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAx\r\nCmRlZnJvdXRlcnM6IAoqU0VDVElPTiBkYi5ydW50aW1lLmR5bmlwX2xlYXNlcwpn\r\nZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKbGVhc2Vz\r\nOiAKKlNFQ1RJT04gRU9GCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAGRiL2RiLnF0dXJuAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDAwNjMAMDAwMDA2MwAwMDAw\r\nMDAwMjM0NgAxMzM2MTQwMTQ0NwAwMTIxMTcAIDAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nIyBUaGlzIGZpbGUgaXMgYSBzdHJpY3QgZm9ybWF0IGNvbmZpZ3VyYXRpb24gZmls\r\nZS4KIyBFZGl0IGNhcmVmdWxseSBvciBub3QgYXQgYWxsLgoqU0VDVElPTiBkYi5x\r\ndHVybi5hY2NvdW50aW5nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJP\r\nVwpyb3dpZDogMQpsZXZlbDogb2ZmCipTRUNUSU9OIGRiLnF0dXJuLmFjdGl2ZQpn\r\nZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxl\r\nZDogb2ZmCipTRUNUSU9OIGRiLnF0dXJuLmFsbG93X3VuYXV0aGVudGljYXRlZApn\r\nZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKY2xpZW50\r\nX25ldGdyb3VwOiAtCipTRUNUSU9OIGRiLnF0dXJuLmNlcnQKZ2VuZXJhdGlvbjog\r\nMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmNlcnQ6IC0KKlNFQ1RJT04g\r\nZGIucXR1cm4uZGVidWdfbGV2ZWwKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAx\r\nCioqUk9XCnJvd2lkOiAxCmxldmVsOiAwCipTRUNUSU9OIGRiLnF0dXJuLmRlZmF1\r\nbHRfcGFzc3dvcmQKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJv\r\nd2lkOiAxCnBhc3N3b3JkOgoqU0VDVElPTiBkYi5xdHVybi5saXN0ZW4KZ2VuZXJh\r\ndGlvbjogMApsYXN0X3Jvd2lkOiA0CioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9u\r\nCnBvcnQ6IDM0NzgKdHJhbnNwb3J0OiB1ZHAKY29tbWVudDoKKipST1cKcm93aWQ6\r\nIDIKZW5hYmxlZDogb24KcG9ydDogMzQ3OAp0cmFuc3BvcnQ6IHRjcApjb21tZW50\r\nOgoqKlJPVwpyb3dpZDogMwplbmFibGVkOiBvZmYKcG9ydDogNTM0OQp0cmFuc3Bv\r\ncnQ6IHRscwpjb21tZW50OgoqKlJPVwpyb3dpZDogNAplbmFibGVkOiBvZmYKcG9y\r\ndDogNTM0OQp0cmFuc3BvcnQ6IGR0bHMKY29tbWVudDoKKlNFQ1RJT04gZGIucXR1\r\ncm4ubWVkaWFfcG9ydHMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9X\r\nCnJvd2lkOiAxCnBvcnRzX2xvd2VyOiA0OTE1Mgpwb3J0c191cHBlcjogNTY5OTkK\r\nKlNFQ1RJT04gZGIucXR1cm4ucmVsYXlfZGV2aWNlCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQppbnRlcmZhY2U6IC0KKlNFQ1RJT04g\r\nZGIucXR1cm4uc2lnbmFsaW5nX2FjbApnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6\r\nIDEKKipST1cKcm93aWQ6IDEKY2xpZW50X25ldGdyb3VwOiAtCipTRUNUSU9OIGRi\r\nLnF0dXJuLnVzZXJzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElP\r\nTiBFT0YKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nZGIvZGIuZmlyZXdhbGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAADAwMDA2NDQAMDAwMDA2MwAwMDAwMDYzADAwMDAwMDI2NzIzADEzMzYxNDAx\r\nNDQ3ADAxMjU2MAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIFRoaXMgZmlsZSBpcyBh\r\nIHN0cmljdCBmb3JtYXQgY29uZmlndXJhdGlvbiBmaWxlLgojIEVkaXQgY2FyZWZ1\r\nbGx5IG9yIG5vdCBhdCBhbGwuCipTRUNUSU9OIGRiLmZpcmV3YWxsLmJsaW5kX3Jv\r\ndXRlX3BvbGljeQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93\r\naWQ6IDEKYWN0aW9uOiBkaXNjYXJkCipTRUNUSU9OIGRiLmZpcmV3YWxsLmJyb2Fk\r\nY2FzdF9sb2djbGFzcwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cK\r\ncm93aWQ6IDEKbG9nY2xhc3M6IC0KKlNFQ1RJT04gZGIuZmlyZXdhbGwuZGVmYXVs\r\ndF9wb2xpY3kKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lk\r\nOiAxCmFjdGlvbjogZGlzY2FyZAoqU0VDVElPTiBkYi5maXJld2FsbC5kaGNwX2xv\r\nZ2NsYXNzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDog\r\nMQpsb2djbGFzczogTG9jYWwKKlNFQ1RJT04gZGIuZmlyZXdhbGwudHVubmVsX2xv\r\nZ2NsYXNzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDog\r\nMQpsb2djbGFzczogLQoqU0VDVElPTiBkYi5maXJld2FsbC5uZF9sb2djbGFzcwpn\r\nZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKbG9nY2xh\r\nc3M6IC0KKlNFQ1RJT04gZGIuZmlyZXdhbGwuY2xvdWRfbG9nY2xhc3MKZ2VuZXJh\r\ndGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmxvZ2NsYXNzOiAt\r\nCipTRUNUSU9OIGRiLmZpcmV3YWxsLmRoY3BfcmVsYXkKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgppbnRlcmZh\r\nY2U6IC0KcG9ydDogNjcKc2VydmVyX2RuczoKc2VydmVyX2VycjoKc2VydmVyX2lw\r\nOgoqU0VDVElPTiBkYi5maXJld2FsbC5mb3J3YXJkaW5nX3J1bGVzCmdlbmVyYXRp\r\nb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5maXJld2FsbC5tYXN0ZXJf\r\nbG9nY2xhc3MKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lk\r\nOiAxCmxvZ2NsYXNzOiBMb2NhbApvdmVycmlkZTogbWFya2VkCipTRUNUSU9OIGRi\r\nLmZpcmV3YWxsLm5ldHdvcmtfZ3JvdXBzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dp\r\nZDogMAoqU0VDVElPTiBkYi5maXJld2FsbC5vd25fbG9nY2xhc3MKZ2VuZXJhdGlv\r\nbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmxvZ2NsYXNzOiBMb2Nh\r\nbAoqU0VDVElPTiBkYi5maXJld2FsbC5waW5nX3BvbGljeQpnZW5lcmF0aW9uOiAw\r\nCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKcG9saWN5OiBuZXZlcgoqU0VD\r\nVElPTiBkYi5maXJld2FsbC5wb2xpY3lfbG9nY2xhc3MKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmxvZ2NsYXNzOiBMb2NhbAoqU0VD\r\nVElPTiBkYi5maXJld2FsbC5wcm90b2NvbHMKZ2VuZXJhdGlvbjogMApsYXN0X3Jv\r\nd2lkOiA4CioqUk9XCnJvd2lkOiAxCm5hbWU6IEFICnByb3RvY29sOiA1MQoqKlJP\r\nVwpyb3dpZDogMgpuYW1lOiBFU1AKcHJvdG9jb2w6IDUwCioqUk9XCnJvd2lkOiAz\r\nCm5hbWU6IEdSRQpwcm90b2NvbDogNDcKKipST1cKcm93aWQ6IDQKbmFtZTogSUNN\r\nUApwcm90b2NvbDogMQoqKlJPVwpyb3dpZDogNQpuYW1lOiBJR01QCnByb3RvY29s\r\nOiAyCioqUk9XCnJvd2lkOiA2Cm5hbWU6IElQdjYKcHJvdG9jb2w6IDQxCioqUk9X\r\nCnJvd2lkOiA3Cm5hbWU6IFRDUApwcm90b2NvbDogNgoqKlJPVwpyb3dpZDogOApu\r\nYW1lOiBVRFAKcHJvdG9jb2w6IDE3CioqUk9XCnJvd2lkOiA5Cm5hbWU6IElDTVB2\r\nNgpwcm90b2NvbDogNTgKKlNFQ1RJT04gZGIuZmlyZXdhbGwucmVsYXlzCmdlbmVy\r\nYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5maXJld2FsbC5zZXJ2\r\naWNlcwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDcyCioqUk9XCnJvd2lkOiAx\r\nCmNsaWVudF9wb3J0czoKZGF0YV9wb3J0czoKZnd0eXBlOiBzdGF0aWMKaXhtcHR5\r\ncGU6Cm5hbWU6IGFoCnByb3RvY29sOiBBSApzZXJ2ZXJfcG9ydHM6CnN1Ymdyb3Vw\r\nOiAtCioqUk9XCnJvd2lkOiAyCmNsaWVudF9wb3J0czogMTAyNC02NTUzNQpkYXRh\r\nX3BvcnRzOgpmd3R5cGU6IGR5bmFtaWMKaXhtcHR5cGU6Cm5hbWU6IGRheXRpbWUK\r\ncHJvdG9jb2w6IFRDUApzZXJ2ZXJfcG9ydHM6IDEzCnN1Ymdyb3VwOiAtCioqUk9X\r\nCnJvd2lkOiAzCmNsaWVudF9wb3J0czogNjgKZGF0YV9wb3J0czoKZnd0eXBlOiBz\r\ndGF0aWMKaXhtcHR5cGU6Cm5hbWU6IGRoY3AKcHJvdG9jb2w6IFVEUApzZXJ2ZXJf\r\ncG9ydHM6IDY3CnN1Ymdyb3VwOiAtCioqUk9XCnJvd2lkOiA0CmNsaWVudF9wb3J0\r\nczogNTMsMTAyNC02NTUzNQpkYXRhX3BvcnRzOgpmd3R5cGU6IHN0YXRpYwppeG1w\r\ndHlwZToKbmFtZTogZG5zCnByb3RvY29sOiBVRFAKc2VydmVyX3BvcnRzOiA1Mwpz\r\ndWJncm91cDogLQoqKlJPVwpyb3dpZDogNQpjbGllbnRfcG9ydHM6IDUzCmRhdGFf\r\ncG9ydHM6CmZ3dHlwZTogc3RhdGljCml4bXB0eXBlOgpuYW1lOiBkbnMtcmVwbHkK\r\ncHJvdG9jb2w6IFVEUApzZXJ2ZXJfcG9ydHM6IDUzLDEwMjQtNjU1MzUKc3ViZ3Jv\r\ndXA6IC0KKipST1cKcm93aWQ6IDYKY2xpZW50X3BvcnRzOiA1MywxMDI0LTY1NTM1\r\nCmRhdGFfcG9ydHM6CmZ3dHlwZTogZHluYW1pYwppeG1wdHlwZToKbmFtZTogZG5z\r\nLXRjcApwcm90b2NvbDogVENQCnNlcnZlcl9wb3J0czogNTMKc3ViZ3JvdXA6IC0K\r\nKipST1cKcm93aWQ6IDcKY2xpZW50X3BvcnRzOgpkYXRhX3BvcnRzOgpmd3R5cGU6\r\nIHN0YXRpYwppeG1wdHlwZTogMApuYW1lOiBlY2hvLXJlcGx5CnByb3RvY29sOiBJ\r\nQ01QCnNlcnZlcl9wb3J0czoKc3ViZ3JvdXA6IC0KKipST1cKcm93aWQ6IDgKY2xp\r\nZW50X3BvcnRzOgpkYXRhX3BvcnRzOgpmd3R5cGU6IHN0YXRpYwppeG1wdHlwZTog\r\nOApuYW1lOiBlY2hvLXJlcXVlc3QKcHJvdG9jb2w6IElDTVAKc2VydmVyX3BvcnRz\r\nOgpzdWJncm91cDogLQoqKlJPVwpyb3dpZDogOQpjbGllbnRfcG9ydHM6CmRhdGFf\r\ncG9ydHM6CmZ3dHlwZTogc3RhdGljCml4bXB0eXBlOgpuYW1lOiBlc3AKcHJvdG9j\r\nb2w6IEVTUApzZXJ2ZXJfcG9ydHM6CnN1Ymdyb3VwOiAtCioqUk9XCnJvd2lkOiAx\r\nMApjbGllbnRfcG9ydHM6IDEwMjQtNjU1MzUKZGF0YV9wb3J0czoKZnd0eXBlOiBk\r\neW5hbWljCml4bXB0eXBlOgpuYW1lOiBmaW5nZXIKcHJvdG9jb2w6IFRDUApzZXJ2\r\nZXJfcG9ydHM6IDc5CnN1Ymdyb3VwOiAtCioqUk9XCnJvd2lkOiAxMQpjbGllbnRf\r\ncG9ydHM6IDEwMjQtNjU1MzUKZGF0YV9wb3J0czoKZnd0eXBlOiBmdHAKaXhtcHR5\r\ncGU6Cm5hbWU6IGZ0cApwcm90b2NvbDogVENQCnNlcnZlcl9wb3J0czogMjEKc3Vi\r\nZ3JvdXA6IC0KKipST1cKcm93aWQ6IDEyCmNsaWVudF9wb3J0czogMTAyNC02NTUz\r\nNQpkYXRhX3BvcnRzOgpmd3R5cGU6IGR5bmFtaWMKaXhtcHR5cGU6Cm5hbWU6IGhp\r\nZ2gtaGlnaApwcm90b2NvbDogVENQCnNlcnZlcl9wb3J0czogMTAyNC02NTUzNQpz\r\ndWJncm91cDogLQoqKlJPVwpyb3dpZDogMTMKY2xpZW50X3BvcnRzOiAxMDI0LTY1\r\nNTM1CmRhdGFfcG9ydHM6CmZ3dHlwZTogZHluYW1pYwppeG1wdHlwZToKbmFtZTog\r\naHR0cApwcm90b2NvbDogVENQCnNlcnZlcl9wb3J0czogODAKc3ViZ3JvdXA6IC0K\r\nKipST1cKcm93aWQ6IDE0CmNsaWVudF9wb3J0czogMTAyNC02NTUzNQpkYXRhX3Bv\r\ncnRzOgpmd3R5cGU6IGR5bmFtaWMKaXhtcHR5cGU6Cm5hbWU6IGh0dHBzCnByb3Rv\r\nY29sOiBUQ1AKc2VydmVyX3BvcnRzOiA0NDMKc3ViZ3JvdXA6IC0KKipST1cKcm93\r\naWQ6IDE1CmNsaWVudF9wb3J0czoKZGF0YV9wb3J0czoKZnd0eXBlOiBzdGF0aWMK\r\naXhtcHR5cGU6IDAtMTIwCm5hbWU6IGljbXAKcHJvdG9jb2w6IElDTVAKc2VydmVy\r\nX3BvcnRzOgpzdWJncm91cDogLQoqKlJPVwpyb3dpZDogMTYKY2xpZW50X3BvcnRz\r\nOiAxMDI0LTY1NTM1CmRhdGFfcG9ydHM6CmZ3dHlwZTogZHluYW1pYwppeG1wdHlw\r\nZToKbmFtZTogaWRlbnQKcHJvdG9jb2w6IFRDUApzZXJ2ZXJfcG9ydHM6IDExMwpz\r\ndWJncm91cDogLQoqKlJPVwpyb3dpZDogMTcKY2xpZW50X3BvcnRzOiAxMDI0LTY1\r\nNTM1CmRhdGFfcG9ydHM6CmZ3dHlwZTogZHluYW1pYwppeG1wdHlwZToKbmFtZTog\r\naW1hcApwcm90b2NvbDogVENQCnNlcnZlcl9wb3J0czogMTQzCnN1Ymdyb3VwOiAt\r\nCioqUk9XCnJvd2lkOiAxOApjbGllbnRfcG9ydHM6IDEwMjQtNjU1MzUKZGF0YV9w\r\nb3J0czoKZnd0eXBlOiBkeW5hbWljCml4bXB0eXBlOgpuYW1lOiBpbWFwcwpwcm90\r\nb2NvbDogVENQCnNlcnZlcl9wb3J0czogOTkzCnN1Ymdyb3VwOiAtCioqUk9XCnJv\r\nd2lkOiAxOQpjbGllbnRfcG9ydHM6CmRhdGFfcG9ydHM6CmZ3dHlwZTogc3RhdGlj\r\nCml4bXB0eXBlOgpuYW1lOiBpcHY2dG80CnByb3RvY29sOiBJUHY2CnNlcnZlcl9w\r\nb3J0czoKc3ViZ3JvdXA6IC0KKipST1cKcm93aWQ6IDIwCmNsaWVudF9wb3J0czog\r\nMTAyNC02NTUzNQpkYXRhX3BvcnRzOgpmd3R5cGU6IGR5bmFtaWMKaXhtcHR5cGU6\r\nCm5hbWU6IG5mcy10Y3AKcHJvdG9jb2w6IFRDUApzZXJ2ZXJfcG9ydHM6IDIwNDkK\r\nc3ViZ3JvdXA6IC0KKipST1cKcm93aWQ6IDIxCmNsaWVudF9wb3J0czogMTAyNC02\r\nNTUzNQpkYXRhX3BvcnRzOgpmd3R5cGU6IHN0YXRpYwppeG1wdHlwZToKbmFtZTog\r\nbmZzLXVkcApwcm90b2NvbDogVURQCnNlcnZlcl9wb3J0czogMjA0OQpzdWJncm91\r\ncDogLQoqKlJPVwpyb3dpZDogMjIKY2xpZW50X3BvcnRzOiAxMDI0LTY1NTM1CmRh\r\ndGFfcG9ydHM6CmZ3dHlwZTogZHluYW1pYwppeG1wdHlwZToKbmFtZTogbm50cApw\r\ncm90b2NvbDogVENQCnNlcnZlcl9wb3J0czogMTE5CnN1Ymdyb3VwOiAtCioqUk9X\r\nCnJvd2lkOiAyMwpjbGllbnRfcG9ydHM6IDEyMwpkYXRhX3BvcnRzOgpmd3R5cGU6\r\nIHN0YXRpYwppeG1wdHlwZToKbmFtZTogbnRwCnByb3RvY29sOiBVRFAKc2VydmVy\r\nX3BvcnRzOiAxMjMKc3ViZ3JvdXA6IC0KKipST1cKcm93aWQ6IDI0CmNsaWVudF9w\r\nb3J0czogMTAyNC02NTUzNQpkYXRhX3BvcnRzOgpmd3R5cGU6IGR5bmFtaWMKaXht\r\ncHR5cGU6Cm5hbWU6IHBvcDMKcHJvdG9jb2w6IFRDUApzZXJ2ZXJfcG9ydHM6IDEx\r\nMApzdWJncm91cDogLQoqKlJPVwpyb3dpZDogMjUKY2xpZW50X3BvcnRzOiAxMDI0\r\nLTY1NTM1CmRhdGFfcG9ydHM6CmZ3dHlwZTogZHluYW1pYwppeG1wdHlwZToKbmFt\r\nZTogcG9wM3MKcHJvdG9jb2w6IFRDUApzZXJ2ZXJfcG9ydHM6IDk5NQpzdWJncm91\r\ncDogLQoqKlJPVwpyb3dpZDogMjYKY2xpZW50X3BvcnRzOiAxMDI0LTY1NTM1CmRh\r\ndGFfcG9ydHM6CmZ3dHlwZTogZHluYW1pYwppeG1wdHlwZToKbmFtZTogc210cApw\r\ncm90b2NvbDogVENQCnNlcnZlcl9wb3J0czogMjUKc3ViZ3JvdXA6IC0KKipST1cK\r\ncm93aWQ6IDI3CmNsaWVudF9wb3J0czogMTAyNC02NTUzNQpkYXRhX3BvcnRzOgpm\r\nd3R5cGU6IGR5bmFtaWMKaXhtcHR5cGU6Cm5hbWU6IHNzaApwcm90b2NvbDogVENQ\r\nCnNlcnZlcl9wb3J0czogMjIKc3ViZ3JvdXA6IC0KKipST1cKcm93aWQ6IDI4CmNs\r\naWVudF9wb3J0czogMC02NTUzNQpkYXRhX3BvcnRzOgpmd3R5cGU6IGR5bmFtaWMK\r\naXhtcHR5cGU6Cm5hbWU6IHRjcApwcm90b2NvbDogVENQCnNlcnZlcl9wb3J0czog\r\nMC02NTUzNQpzdWJncm91cDogLQoqKlJPVwpyb3dpZDogMjkKY2xpZW50X3BvcnRz\r\nOiAxMDI0LTY1NTM1CmRhdGFfcG9ydHM6CmZ3dHlwZTogZHluYW1pYwppeG1wdHlw\r\nZToKbmFtZTogdGVsbmV0CnByb3RvY29sOiBUQ1AKc2VydmVyX3BvcnRzOiAyMwpz\r\ndWJncm91cDogLQoqKlJPVwpyb3dpZDogMzAKY2xpZW50X3BvcnRzOgpkYXRhX3Bv\r\ncnRzOgpmd3R5cGU6IHN0YXRpYwppeG1wdHlwZTogMTEKbmFtZTogdGltZS1leGNl\r\nZWRlZApwcm90b2NvbDogSUNNUApzZXJ2ZXJfcG9ydHM6CnN1Ymdyb3VwOiAtCioq\r\nUk9XCnJvd2lkOiAzMQpjbGllbnRfcG9ydHM6IDEwMjQtNjU1MzUKZGF0YV9wb3J0\r\nczoKZnd0eXBlOiBzdGF0aWMKaXhtcHR5cGU6Cm5hbWU6IHRyYWNlcm91dGUKcHJv\r\ndG9jb2w6IFVEUApzZXJ2ZXJfcG9ydHM6IDMzNDM0LTMzNjkwCnN1Ymdyb3VwOiAt\r\nCioqUk9XCnJvd2lkOiAzMgpjbGllbnRfcG9ydHM6CmRhdGFfcG9ydHM6CmZ3dHlw\r\nZTogc3RhdGljCml4bXB0eXBlOiAzLDExCm5hbWU6IHRyYWNlcm91dGUtcmVwbHkK\r\ncHJvdG9jb2w6IElDTVAKc2VydmVyX3BvcnRzOgpzdWJncm91cDogLQoqKlJPVwpy\r\nb3dpZDogMzMKY2xpZW50X3BvcnRzOiAwLTY1NTM1CmRhdGFfcG9ydHM6CmZ3dHlw\r\nZTogZHluYW1pYwppeG1wdHlwZToKbmFtZTogdWRwCnByb3RvY29sOiBVRFAKc2Vy\r\ndmVyX3BvcnRzOiAwLTY1NTM1CnN1Ymdyb3VwOiAtCioqUk9XCnJvd2lkOiAzNApj\r\nbGllbnRfcG9ydHM6CmRhdGFfcG9ydHM6CmZ3dHlwZTogLQppeG1wdHlwZToKbmFt\r\nZTogd3d3CnByb3RvY29sOiAtCnNlcnZlcl9wb3J0czoKc3ViZ3JvdXA6IGh0dHAK\r\nKipST1cKcm93aWQ6IDM1CmNsaWVudF9wb3J0czoKZGF0YV9wb3J0czoKZnd0eXBl\r\nOiAtCml4bXB0eXBlOgpuYW1lOiB3d3cKcHJvdG9jb2w6IC0Kc2VydmVyX3BvcnRz\r\nOgpzdWJncm91cDogaHR0cHMKKipST1cKcm93aWQ6IDM2CmNsaWVudF9wb3J0czog\r\nMTAyNC02NTUzNQpkYXRhX3BvcnRzOgpmd3R5cGU6IGR5bmFtaWMKaXhtcHR5cGU6\r\nCm5hbWU6IHgxMS1kaXNwbGF5MApwcm90b2NvbDogVENQCnNlcnZlcl9wb3J0czog\r\nNjAwMApzdWJncm91cDogLQoqKlJPVwpyb3dpZDogMzcKY2xpZW50X3BvcnRzOgpk\r\nYXRhX3BvcnRzOgpmd3R5cGU6IC0KaXhtcHR5cGU6Cm5hbWU6IGljbXAvdWRwL3Rj\r\ncApwcm90b2NvbDogLQpzZXJ2ZXJfcG9ydHM6CnN1Ymdyb3VwOiBpY21wCioqUk9X\r\nCnJvd2lkOiAzOApjbGllbnRfcG9ydHM6CmRhdGFfcG9ydHM6CmZ3dHlwZTogLQpp\r\neG1wdHlwZToKbmFtZTogaWNtcC91ZHAvdGNwCnByb3RvY29sOiAtCnNlcnZlcl9w\r\nb3J0czoKc3ViZ3JvdXA6IHVkcAoqKlJPVwpyb3dpZDogMzkKY2xpZW50X3BvcnRz\r\nOgpkYXRhX3BvcnRzOgpmd3R5cGU6IC0KaXhtcHR5cGU6Cm5hbWU6IGljbXAvdWRw\r\nL3RjcApwcm90b2NvbDogLQpzZXJ2ZXJfcG9ydHM6CnN1Ymdyb3VwOiB0Y3AKKipS\r\nT1cKcm93aWQ6IDQwCmNsaWVudF9wb3J0czogMTAyNC02NTUzNQpkYXRhX3BvcnRz\r\nOgpmd3R5cGU6IGR5bmFtaWMKaXhtcHR5cGU6Cm5hbWU6IGtlcmJlcm9zLXVkcApw\r\ncm90b2NvbDogVURQCnNlcnZlcl9wb3J0czogODgKc3ViZ3JvdXA6IC0KKipST1cK\r\ncm93aWQ6IDQxCmNsaWVudF9wb3J0czogMTAyNC02NTUzNQpkYXRhX3BvcnRzOgpm\r\nd3R5cGU6IGR5bmFtaWMKaXhtcHR5cGU6Cm5hbWU6IGtlcmJlcm9zLXRjcApwcm90\r\nb2NvbDogVENQCnNlcnZlcl9wb3J0czogODgKc3ViZ3JvdXA6IC0KKipST1cKcm93\r\naWQ6IDQyCmNsaWVudF9wb3J0czoKZGF0YV9wb3J0czoKZnd0eXBlOiAtCml4bXB0\r\neXBlOgpuYW1lOiBrZXJiZXJvcwpwcm90b2NvbDogLQpzZXJ2ZXJfcG9ydHM6CnN1\r\nYmdyb3VwOiBrZXJiZXJvcy11ZHAKKipST1cKcm93aWQ6IDQzCmNsaWVudF9wb3J0\r\nczoKZGF0YV9wb3J0czoKZnd0eXBlOiAtCml4bXB0eXBlOgpuYW1lOiBrZXJiZXJv\r\ncwpwcm90b2NvbDogLQpzZXJ2ZXJfcG9ydHM6CnN1Ymdyb3VwOiBrZXJiZXJvcy10\r\nY3AKKipST1cKcm93aWQ6IDQ0CmNsaWVudF9wb3J0czogMTAyNC02NTUzNQpkYXRh\r\nX3BvcnRzOgpmd3R5cGU6IGR5bmFtaWMKaXhtcHR5cGU6Cm5hbWU6IGxkYXAtdWRw\r\nCnByb3RvY29sOiBVRFAKc2VydmVyX3BvcnRzOiAzODkKc3ViZ3JvdXA6IC0KKipS\r\nT1cKcm93aWQ6IDQ1CmNsaWVudF9wb3J0czogMTAyNC02NTUzNQpkYXRhX3BvcnRz\r\nOgpmd3R5cGU6IGR5bmFtaWMKaXhtcHR5cGU6Cm5hbWU6IGxkYXAtdGNwCnByb3Rv\r\nY29sOiBUQ1AKc2VydmVyX3BvcnRzOiAzODkKc3ViZ3JvdXA6IC0KKipST1cKcm93\r\naWQ6IDQ2CmNsaWVudF9wb3J0czoKZGF0YV9wb3J0czoKZnd0eXBlOiAtCml4bXB0\r\neXBlOgpuYW1lOiBsZGFwCnByb3RvY29sOiAtCnNlcnZlcl9wb3J0czoKc3ViZ3Jv\r\ndXA6IGxkYXAtdWRwCioqUk9XCnJvd2lkOiA0NwpjbGllbnRfcG9ydHM6CmRhdGFf\r\ncG9ydHM6CmZ3dHlwZTogLQppeG1wdHlwZToKbmFtZTogbGRhcApwcm90b2NvbDog\r\nLQpzZXJ2ZXJfcG9ydHM6CnN1Ymdyb3VwOiBsZGFwLXRjcAoqKlJPVwpyb3dpZDog\r\nNDgKY2xpZW50X3BvcnRzOiAxMDI0LTY1NTM1CmRhdGFfcG9ydHM6CmZ3dHlwZTog\r\nZHluYW1pYwppeG1wdHlwZToKbmFtZTogbXMtcnBjCnByb3RvY29sOiBUQ1AKc2Vy\r\ndmVyX3BvcnRzOiAxMzUKc3ViZ3JvdXA6IC0KKipST1cKcm93aWQ6IDQ5CmNsaWVu\r\ndF9wb3J0czogMTAyNC02NTUzNQpkYXRhX3BvcnRzOgpmd3R5cGU6IHBwdHAKaXht\r\ncHR5cGU6Cm5hbWU6IHBwdHAKcHJvdG9jb2w6IFRDUApzZXJ2ZXJfcG9ydHM6IDE3\r\nMjMKc3ViZ3JvdXA6IC0KKipST1cKcm93aWQ6IDUwCmNsaWVudF9wb3J0czogMTAy\r\nNC02NTUzNQpkYXRhX3BvcnRzOgpmd3R5cGU6IGR5bmFtaWMKaXhtcHR5cGU6Cm5h\r\nbWU6IHJkcApwcm90b2NvbDogVENQCnNlcnZlcl9wb3J0czogMzM4OQpzdWJncm91\r\ncDogLQoqKlJPVwpyb3dpZDogNTEKY2xpZW50X3BvcnRzOiAxMDI0LTY1NTM1CmRh\r\ndGFfcG9ydHM6CmZ3dHlwZTogZHluYW1pYwppeG1wdHlwZToKbmFtZTogc21iCnBy\r\nb3RvY29sOiBUQ1AKc2VydmVyX3BvcnRzOiA0NDUKc3ViZ3JvdXA6IC0KKipST1cK\r\ncm93aWQ6IDUyCmNsaWVudF9wb3J0czoKZGF0YV9wb3J0czoKZnd0eXBlOiAtCml4\r\nbXB0eXBlOgpuYW1lOiB3d3cvZG5zCnByb3RvY29sOiAtCnNlcnZlcl9wb3J0czoK\r\nc3ViZ3JvdXA6IHd3dwoqKlJPVwpyb3dpZDogNTMKY2xpZW50X3BvcnRzOgpkYXRh\r\nX3BvcnRzOgpmd3R5cGU6IC0KaXhtcHR5cGU6Cm5hbWU6IHd3dy9kbnMKcHJvdG9j\r\nb2w6IC0Kc2VydmVyX3BvcnRzOgpzdWJncm91cDogZG5zCioqUk9XCnJvd2lkOiA1\r\nNApjbGllbnRfcG9ydHM6CmRhdGFfcG9ydHM6CmZ3dHlwZTogLQppeG1wdHlwZToK\r\nbmFtZTogd3d3L2Rucwpwcm90b2NvbDogLQpzZXJ2ZXJfcG9ydHM6CnN1Ymdyb3Vw\r\nOiBkbnMtdGNwCioqUk9XCnJvd2lkOiA1NQpjbGllbnRfcG9ydHM6IDEwMjQtNjU1\r\nMzUKZGF0YV9wb3J0czoKZnd0eXBlOiBydHNwCml4bXB0eXBlOgpuYW1lOiBydHNw\r\nCnByb3RvY29sOiBUQ1AKc2VydmVyX3BvcnRzOiA1NTQKc3ViZ3JvdXA6IC0KKipS\r\nT1cKcm93aWQ6IDU2CmNsaWVudF9wb3J0czogMTAyNC02NTUzNQpkYXRhX3BvcnRz\r\nOgpmd3R5cGU6IHRmdHAKaXhtcHR5cGU6Cm5hbWU6IHRmdHAKcHJvdG9jb2w6IFVE\r\nUApzZXJ2ZXJfcG9ydHM6IDY5CnN1Ymdyb3VwOiAtCioqUk9XCnJvd2lkOiA1Nwpj\r\nbGllbnRfcG9ydHM6CmRhdGFfcG9ydHM6CmZ3dHlwZTogc3RhdGljCml4bXB0eXBl\r\nOiAwLTE5OQpuYW1lOiBpY21wdjYKcHJvdG9jb2w6IElDTVB2NgpzZXJ2ZXJfcG9y\r\ndHM6CnN1Ymdyb3VwOiAtCioqUk9XCnJvd2lkOiA1OApjbGllbnRfcG9ydHM6CmRh\r\ndGFfcG9ydHM6CmZ3dHlwZTogLQppeG1wdHlwZToKbmFtZTogaWNtcC91ZHAvdGNw\r\nCnByb3RvY29sOiAtCnNlcnZlcl9wb3J0czoKc3ViZ3JvdXA6IGljbXB2NgoqKlJP\r\nVwpyb3dpZDogNTkKY2xpZW50X3BvcnRzOgpkYXRhX3BvcnRzOgpmd3R5cGU6IHN0\r\nYXRpYwppeG1wdHlwZTogMTI5Cm5hbWU6IGVjaG8tcmVwbHkKcHJvdG9jb2w6IElD\r\nTVB2NgpzZXJ2ZXJfcG9ydHM6CnN1Ymdyb3VwOiAtCioqUk9XCnJvd2lkOiA2MApj\r\nbGllbnRfcG9ydHM6CmRhdGFfcG9ydHM6CmZ3dHlwZTogc3RhdGljCml4bXB0eXBl\r\nOiAxMjgKbmFtZTogZWNoby1yZXF1ZXN0CnByb3RvY29sOiBJQ01QdjYKc2VydmVy\r\nX3BvcnRzOgpzdWJncm91cDogLQoqKlJPVwpyb3dpZDogNjEKY2xpZW50X3BvcnRz\r\nOgpkYXRhX3BvcnRzOgpmd3R5cGU6IHN0YXRpYwppeG1wdHlwZTogMQpuYW1lOiBk\r\nZXN0aW5hdGlvbi11bnJlYWNoYWJsZTYKcHJvdG9jb2w6IElDTVB2NgpzZXJ2ZXJf\r\ncG9ydHM6CnN1Ymdyb3VwOiAtCioqUk9XCnJvd2lkOiA2MgpjbGllbnRfcG9ydHM6\r\nCmRhdGFfcG9ydHM6CmZ3dHlwZTogc3RhdGljCml4bXB0eXBlOiAyCm5hbWU6IHBh\r\nY2tldC10b28tYmlnNgpwcm90b2NvbDogSUNNUHY2CnNlcnZlcl9wb3J0czoKc3Vi\r\nZ3JvdXA6IC0KKipST1cKcm93aWQ6IDYzCmNsaWVudF9wb3J0czoKZGF0YV9wb3J0\r\nczoKZnd0eXBlOiBzdGF0aWMKaXhtcHR5cGU6IDMKbmFtZTogdGltZS1leGNlZWRl\r\nZDYKcHJvdG9jb2w6IElDTVB2NgpzZXJ2ZXJfcG9ydHM6CnN1Ymdyb3VwOiAtCioq\r\nUk9XCnJvd2lkOiA2NApjbGllbnRfcG9ydHM6CmRhdGFfcG9ydHM6CmZ3dHlwZTog\r\nc3RhdGljCml4bXB0eXBlOiA0Cm5hbWU6IHBhcmFtZXRlci1wcm9ibGVtNgpwcm90\r\nb2NvbDogSUNNUHY2CnNlcnZlcl9wb3J0czoKc3ViZ3JvdXA6IC0KKipST1cKcm93\r\naWQ6IDY1CmNsaWVudF9wb3J0czoKZGF0YV9wb3J0czoKZnd0eXBlOiAtCml4bXB0\r\neXBlOgpuYW1lOiBpY21wdjZfcmZjXzQ4OTAKcHJvdG9jb2w6IC0Kc2VydmVyX3Bv\r\ncnRzOgpzdWJncm91cDogZGVzdGluYXRpb24tdW5yZWFjaGFibGU2CioqUk9XCnJv\r\nd2lkOiA2NgpjbGllbnRfcG9ydHM6CmRhdGFfcG9ydHM6CmZ3dHlwZTogLQppeG1w\r\ndHlwZToKbmFtZTogaWNtcHY2X3JmY180ODkwCnByb3RvY29sOiAtCnNlcnZlcl9w\r\nb3J0czoKc3ViZ3JvdXA6IHBhY2tldC10b28tYmlnNgoqKlJPVwpyb3dpZDogNjcK\r\nY2xpZW50X3BvcnRzOgpkYXRhX3BvcnRzOgpmd3R5cGU6IC0KaXhtcHR5cGU6Cm5h\r\nbWU6IGljbXB2Nl9yZmNfNDg5MApwcm90b2NvbDogLQpzZXJ2ZXJfcG9ydHM6CnN1\r\nYmdyb3VwOiBwYXJhbWV0ZXItcHJvYmxlbTYKKipST1cKcm93aWQ6IDY4CmNsaWVu\r\ndF9wb3J0czoKZGF0YV9wb3J0czoKZnd0eXBlOiAtCml4bXB0eXBlOgpuYW1lOiBp\r\nY21wdjZfcmZjXzQ4OTAKcHJvdG9jb2w6IC0Kc2VydmVyX3BvcnRzOgpzdWJncm91\r\ncDogdGltZS1leGNlZWRlZDYKKipST1cKcm93aWQ6IDY5CmNsaWVudF9wb3J0czoK\r\nZGF0YV9wb3J0czoKZnd0eXBlOiBzdGF0aWMKaXhtcHR5cGU6IDEyOApuYW1lOiBl\r\nY2hvLXJlcXVlc3Q2CnByb3RvY29sOiBJQ01QdjYKc2VydmVyX3BvcnRzOgpzdWJn\r\ncm91cDogLQoqKlJPVwpyb3dpZDogNzAKY2xpZW50X3BvcnRzOgpkYXRhX3BvcnRz\r\nOgpmd3R5cGU6IHN0YXRpYwppeG1wdHlwZTogMTI5Cm5hbWU6IGVjaG8tcmVzcG9u\r\nc2U2CnByb3RvY29sOiBJQ01QdjYKc2VydmVyX3BvcnRzOgpzdWJncm91cDogLQoq\r\nKlJPVwpyb3dpZDogNzEKY2xpZW50X3BvcnRzOgpkYXRhX3BvcnRzOgpmd3R5cGU6\r\nIC0KaXhtcHR5cGU6Cm5hbWU6IGljbXB2Nl9yZmNfNDg5MApwcm90b2NvbDogLQpz\r\nZXJ2ZXJfcG9ydHM6CnN1Ymdyb3VwOiBlY2hvLXJlcXVlc3Q2CioqUk9XCnJvd2lk\r\nOiA3MgpjbGllbnRfcG9ydHM6CmRhdGFfcG9ydHM6CmZ3dHlwZTogLQppeG1wdHlw\r\nZToKbmFtZTogaWNtcHY2X3JmY180ODkwCnByb3RvY29sOiAtCnNlcnZlcl9wb3J0\r\nczoKc3ViZ3JvdXA6IGVjaG8tcmVzcG9uc2U2CipTRUNUSU9OIGRiLmZpcmV3YWxs\r\nLnNwb29maW5nX2xvZ2NsYXNzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoq\r\nKlJPVwpyb3dpZDogMQpsb2djbGFzczogTG9jYWwKKlNFQ1RJT04gZGIuZmlyZXdh\r\nbGwudGltZWNsYXNzZXMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9X\r\nCnJvd2lkOiAxCmZyb21fZGF5OiBtb25kYXkKZnJvbV90aW1lOiAwMDowMApuYW1l\r\nOiAyNC83CnRvX2RheTogc3VuZGF5CnRvX3RpbWU6IDI0OjAwCipTRUNUSU9OIGRi\r\nLmZpcmV3YWxsLmFsbG93X2ljbXB2Nl9yZmM0ODkwCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvbgoqU0VDVElPTiBF\r\nT0YKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nZGIvZGIudm9pcHNtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAADAwMDA2NDQAMDAwMDA2MwAwMDAwMDYzADAwMDAwMDAwNTcyADEzMzYxNDAx\r\nNDQ3ADAxMjI2MgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIFRoaXMgZmlsZSBpcyBh\r\nIHN0cmljdCBmb3JtYXQgY29uZmlndXJhdGlvbiBmaWxlLgojIEVkaXQgY2FyZWZ1\r\nbGx5IG9yIG5vdCBhdCBhbGwuCipTRUNUSU9OIGRiLnZvaXBzbS52b2lwc20KZ2Vu\r\nZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmFyZWFjb2Rl\r\nOiAKY2FjaGV0dGw6IDE0CmVuYWJsZWQ6IG9mZgptYXhucmxlbjogCnJlZ2lzdHJh\r\ndGlvbl90aW1lOiA2MAp0aW1lb3V0OiAxODAKKlNFQ1RJT04gZGIudm9pcHNtLnZv\r\naXBzbV9kb21haW5zCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElP\r\nTiBkYi52b2lwc20udm9pcHNtX3BzdG5fZ2F0ZXdheXMKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAwCipTRUNUSU9OIEVPRgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAGRiL2RiLmZhaWxvdmVyAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDAwNjMAMDAwMDA2MwAwMDAw\r\nMDAwMDMzMgAxMzM2MTQwMTQ0NwAwMTI1NDYAIDAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nIyBUaGlzIGZpbGUgaXMgYSBzdHJpY3QgZm9ybWF0IGNvbmZpZ3VyYXRpb24gZmls\r\nZS4KIyBFZGl0IGNhcmVmdWxseSBvciBub3QgYXQgYWxsLgoqU0VDVElPTiBkYi5m\r\nYWlsb3Zlci5pZmFjZV9yZWZfaG9zdHMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lk\r\nOiAwCipTRUNUSU9OIGRiLmZhaWxvdmVyLnNlcnZlcnMKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAwCipTRUNUSU9OIEVPRgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkYi9kYi5lbXMAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAw\r\nMDYzADAwMDAwNjMAMDAwMDAwMDI0NjIAMTMzNjE0MDE0NDcAMDExNTMxACAwAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAHVzdGFyICAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAACMgVGhpcyBmaWxlIGlzIGEgc3RyaWN0IGZvcm1hdCBj\r\nb25maWd1cmF0aW9uIGZpbGUuCiMgRWRpdCBjYXJlZnVsbHkgb3Igbm90IGF0IGFs\r\nbC4KKlNFQ1RJT04gZGIuZW1zLmVtc19hY3RpdmUKZ2VuZXJhdGlvbjogMApsYXN0\r\nX3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBk\r\nYi5lbXMuY3dtcF9hY3MKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9X\r\nCnJvd2lkOiAxCmFjc191c2VybmFtZToKYWNzX3Bhc3N3b3JkOgpwYXRoOgpwb3J0\r\nOiA3NTQ3CnVyaXNjaGVtZTogLQpzZXJ2ZXJfZG5zOgpzZXJ2ZXJfZXJyOgpzZXJ2\r\nZXJfaXA6CnNzbHZlcjogLQpjYWNlcnQ6IC0KKlNFQ1RJT04gZGIuZW1zLmN3bXBf\r\nYWNzX21pc2MKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lk\r\nOiAxCnBfZW5hYmxlOiBvZmYKcF9pbnRlcnZhbDogMzYwMApwX3RpbWU6CipTRUNU\r\nSU9OIGRiLmVtcy5jd21wX2Fjc19oaWRkZW4KZ2VuZXJhdGlvbjogMApsYXN0X3Jv\r\nd2lkOiAxCioqUk9XCnJvd2lkOiAxCnBhcmFtZXRlcmtleToKKlNFQ1RJT04gZGIu\r\nZW1zLmN3bXBfY3BlCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpy\r\nb3dpZDogMQpsb2NhbF9pcDogLQpsb2NhbF9wb3J0OiA3NTQ3CmNyX3VzZXJuYW1l\r\nOgpjcl9wYXNzd29yZDoKcHJpdmNlcnQ6IC0KKlNFQ1RJT04gZGIuZW1zLmN3bXBf\r\nY3BlX21pc2MKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lk\r\nOiAxCmJrbF9tYXg6IDEwCmJrbF9pbnRlcnZhbDogMzAKYmtsX2R1cmF0aW9uOiAz\r\nMDAKKlNFQ1RJT04gZGIuZW1zLmN3bXBfY3BlX2d1aV9hY2Nlc3NfYWN0aXZlCmdl\r\nbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVk\r\nOiBvZmYKKlNFQ1RJT04gZGIuZW1zLmN3bXBfY3BlX2d1aV9hY2Nlc3MKZ2VuZXJh\r\ndGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCnVyaXNjaGVtZTog\r\nLQpsb2NhbF9pcDogLQpsb2NhbF9wb3J0OiA4MAphY2Nlc3NfdHlwZTogcm8KKlNF\r\nQ1RJT04gZGIuZW1zLmN3bXBfZGVidWdfbG9nY2xhc3MKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmxvZ2NsYXNzOiAtCipTRUNUSU9O\r\nIGRiLmVtcy5jd21wX2Vycm9yX2xvZ2NsYXNzCmdlbmVyYXRpb246IDAKbGFzdF9y\r\nb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2djbGFzczogTG9jYWwKKlNFQ1RJT04g\r\nZGIuZW1zLmN3bXBfaW5mb19sb2djbGFzcwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93\r\naWQ6IDEKKipST1cKcm93aWQ6IDEKbG9nY2xhc3M6IExvY2FsCipTRUNUSU9OIEVP\r\nRgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAGRiL2RiLm5ldHdvcmsAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDAwNjMAMDAwMDA2MwAwMDAw\r\nMDAwNDE1MwAxMzM2MTQwMjU0MgAwMTI0MzIAIDAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nIyBUaGlzIGZpbGUgaXMgYSBzdHJpY3QgZm9ybWF0IGNvbmZpZ3VyYXRpb24gZmls\r\nZS4KIyBFZGl0IGNhcmVmdWxseSBvciBub3QgYXQgYWxsLgoqU0VDVElPTiBkYi5u\r\nZXR3b3JrLmFsaWFzX2FkZHJlc3NlcwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6\r\nIDAKKlNFQ1RJT04gZGIubmV0d29yay5kaXNjYXJkX3dlaXJkX2ZyYWdtZW50cwpn\r\nZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxl\r\nZDogb24KKlNFQ1RJT04gZGIubmV0d29yay5leHRyYV9kZWZhdWx0X2dhdGV3YXlz\r\nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5uZXR3b3Jr\r\nLmludGVyZmFjZXMKZ2VuZXJhdGlvbjogMgpsYXN0X3Jvd2lkOiA2CioqUk9XCnJv\r\nd2lkOiAxCmF1dG9uZWc6IGF1dG8KZW5hYmxlZDogb24KaW50ZXJmYWNlOiBldGgw\r\nCm5hbWU6IEV0aGVybmV0MAoqKlJPVwpyb3dpZDogMgphdXRvbmVnOiBhdXRvCmVu\r\nYWJsZWQ6IG9mZgppbnRlcmZhY2U6IGV0aDEKbmFtZTogRXRoZXJuZXQxCioqUk9X\r\nCnJvd2lkOiAzCmF1dG9uZWc6IGF1dG8KZW5hYmxlZDogb2ZmCmludGVyZmFjZTog\r\nZXRoMgpuYW1lOiBFdGhlcm5ldDIKKipST1cKcm93aWQ6IDQKYXV0b25lZzogYXV0\r\nbwplbmFibGVkOiBvZmYKaW50ZXJmYWNlOiBldGgzCm5hbWU6IEV0aGVybmV0Mwoq\r\nKlJPVwpyb3dpZDogNQphdXRvbmVnOiBhdXRvCmVuYWJsZWQ6IG9mZgppbnRlcmZh\r\nY2U6IGV0aDQKbmFtZTogRXRoZXJuZXQ0CioqUk9XCnJvd2lkOiA2CmF1dG9uZWc6\r\nIGF1dG8KZW5hYmxlZDogb2ZmCmludGVyZmFjZTogZXRoNQpuYW1lOiBFdGhlcm5l\r\ndDUKKlNFQ1RJT04gZGIubmV0d29yay5sb2NhbF9uZXRzCmdlbmVyYXRpb246IDIK\r\nbGFzdF9yb3dpZDogMgoqKlJPVwpyb3dpZDogMgphZGRyZXNzX2RuczogMTAuNDgu\r\nMjguNzgKYWRkcmVzc19lcnI6IAphZGRyZXNzX2lwOiAxMC40OC4yOC43OAphZGRy\r\nZXNzX21hc2s6IDI1NS4yNTUuMC4wCmFkZHJlc3NfdHlwZTogc3RhdGljCmludGVy\r\nZmFjZTogZXRoMApuYW1lOiBldGgwCnZsYW5pZDogCipTRUNUSU9OIGRiLm5ldHdv\r\ncmsubWFzcXVlcmFkaW5nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VD\r\nVElPTiBkYi5uZXR3b3JrLnBvcnRfYWxsb2NhdGlvbnMKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmF1dG9fbG93ZXI6IDEwMjQKYXV0\r\nb191cHBlcjogMzI3NjcKZnRwX2xvd2VyOiA1NzAwMApmdHBfdXBwZXI6IDU4MDIz\r\nCm5hdF9sb3dlcjogNjEwMDAKbmF0X3VwcGVyOiA2NTA5Ngpsb2NhbF9sb3dlcjog\r\nNjUwOTcKbG9jYWxfdXBwZXI6IDY1MjAwCipTRUNUSU9OIGRiLm5ldHdvcmsucHBw\r\nb2UKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmxj\r\ncF9lY2hvX2ludGVydmFsOiAxMApsb2djbGFzczogTG9jYWwKcGFzc3dvcmQ6CnNl\r\ncnZpY2U6CnVzZXI6CipTRUNUSU9OIGRiLm5ldHdvcmsucHJveHlfYXJwCmdlbmVy\r\nYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5uZXR3b3JrLnJvdXRl\r\nX3Rlc3Rfc2VydmVycwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJ\r\nT04gZGIubmV0d29yay5yb3V0ZXMKZ2VuZXJhdGlvbjogMQpsYXN0X3Jvd2lkOiAx\r\nCioqUk9XCnJvd2lkOiAxCmRlc3RpbmF0aW9uX2RuczogMC4wLjAuMApkZXN0aW5h\r\ndGlvbl9lcnI6IApkZXN0aW5hdGlvbl9pcDogMC4wLjAuMApkZXN0aW5hdGlvbl9t\r\nYXNrOiAwLjAuMC4wCmdhdGV3YXlfZG5zOiAxMC40OC4yNTUuMQpnYXRld2F5X2R5\r\nbjogLQpnYXRld2F5X2VycjogCmdhdGV3YXlfaXA6IDEwLjQ4LjI1NS4xCmludGVy\r\nZmFjZTogZXRoMApwcmlvcml0eTogCipTRUNUSU9OIGRiLm5ldHdvcmsudHVubmVs\r\nc182aW40CmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5u\r\nZXR3b3JrLnR1bm5lbHNfNnJkCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoq\r\nU0VDVElPTiBkYi5uZXR3b3JrLnR1bm5lbHNfNnRvNApnZW5lcmF0aW9uOiAwCmxh\r\nc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIubmV0d29yay51bnJlYWNoYWJsZQpnZW5l\r\ncmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIubmV0d29yay52bGFu\r\ncwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gRU9GCgAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAGRiL19fZ2VuZXJhdGlvbl9fAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDAwNjMAMDAwMDA2MwAwMDAw\r\nMDAwMDAwMgAxMzM2NDMyNjEzMgAwMTMyNzQAIDAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nNwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkYi9kYi5jb25maWcAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAw\r\nMDYzADAwMDAwNjMAMDAwMDAwMDIxMjMAMTMzNjE0MDI1NzQAMDEyMjA2ACAwAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAHVzdGFyICAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAACMgVGhpcyBmaWxlIGlzIGEgc3RyaWN0IGZvcm1hdCBj\r\nb25maWd1cmF0aW9uIGZpbGUuCiMgRWRpdCBjYXJlZnVsbHkgb3Igbm90IGF0IGFs\r\nbC4KKlNFQ1RJT04gZGIuY29uZmlnLmFsbG93X2NvbmZpZwpnZW5lcmF0aW9uOiAz\r\nCmxhc3Rfcm93aWQ6IDIKKipST1cKcm93aWQ6IDIKY2xpZW50X25ldHdvcmtfZG5z\r\nOiAwLjAuMC4wCmNsaWVudF9uZXR3b3JrX2VycjogCmNsaWVudF9uZXR3b3JrX2lw\r\nOiAwLjAuMC4wCmNsaWVudF9uZXR3b3JrX21hc2s6IDAuMC4wLjAKZnJvbV90dW5u\r\nZWw6IC0KaHR0cDogb24KaHR0cHM6IG9mZgpsb2djbGFzczogLQpudW1iZXI6IDEK\r\ncmVzdGFwaTogb24Kc3NoOiBvZmYKKlNFQ1RJT04gZGIuY29uZmlnLmFsbG93X3Zp\r\nYV9pbnRlcmZhY2UKZ2VuZXJhdGlvbjogMgpsYXN0X3Jvd2lkOiAyCioqUk9XCnJv\r\nd2lkOiAyCmNvbmZpZ19vbjogb24KaW50ZXJmYWNlOiBldGgwCipTRUNUSU9OIGRi\r\nLmNvbmZpZy5hdXRoX2xvZ2NsYXNzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDog\r\nMQoqKlJPVwpyb3dpZDogMQpsb2djbGFzczogTG9jYWwKKlNFQ1RJT04gZGIuY29u\r\nZmlnLmF1dGhlbnRpY2F0aW9uCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoq\r\nKlJPVwpyb3dpZDogMQphdXRoX3R5cGU6IGxvY2FsCipTRUNUSU9OIGRiLmNvbmZp\r\nZy5hdXRoZW50aWNhdGlvbl9zZXNzaW9uCmdlbmVyYXRpb246IDEKbGFzdF9yb3dp\r\nZDogMQoqKlJPVwpyb3dpZDogMQpwd2RfdGltZW91dDogMjg4MDAKdG9rZW5fdGlt\r\nZW91dDogMzYwMAoqU0VDVElPTiBkYi5jb25maWcubWdtdF9sb2djbGFzcwpnZW5l\r\ncmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKbG9nY2xhc3M6\r\nIExvY2FsCipTRUNUSU9OIGRiLmNvbmZpZy5zZXJ2ZXJzCmdlbmVyYXRpb246IDEK\r\nbGFzdF9yb3dpZDogNgoqKlJPVwpyb3dpZDogNApjZXJ0OiAtCmlwOiBldGgwCnBv\r\ncnQ6IDgwCnByb3RvY29sOiBodHRwCnRsczogLQoqKlJPVwpyb3dpZDogNQpjZXJ0\r\nOiAtCmlwOiAtCnBvcnQ6IDQ0Mwpwcm90b2NvbDogaHR0cHMKdGxzOiAtCioqUk9X\r\nCnJvd2lkOiA2CmNlcnQ6IC0KaXA6IC0KcG9ydDogMjIKcHJvdG9jb2w6IHNzaAp0\r\nbHM6IC0KKlNFQ1RJT04gRU9GCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAGRiL2RiLm1vbml0b3IAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDAwNjMAMDAwMDA2MwAwMDAw\r\nMDAwNTE2NAAxMzM2MTQwMjQ2NwAwMTI0NDEAIDAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nIyBUaGlzIGZpbGUgaXMgYSBzdHJpY3QgZm9ybWF0IGNvbmZpZ3VyYXRpb24gZmls\r\nZS4KIyBFZGl0IGNhcmVmdWxseSBvciBub3QgYXQgYWxsLgoqU0VDVElPTiBkYi5t\r\nb25pdG9yLmNwdWxvYWRfbGV2ZWxfYWxhcm0KZ2VuZXJhdGlvbjogMApsYXN0X3Jv\r\nd2lkOiAxCioqUk9XCnJvd2lkOiAxCm1heF9jcHVsb2FkOgpva19jcHVsb2FkOgoq\r\nU0VDVElPTiBkYi5tb25pdG9yLmVtYWlsX2FsZXJ0X2xvZ2NsYXNzCmdlbmVyYXRp\r\nb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2djbGFzczogTG9j\r\nYWwKKlNFQ1RJT04gZGIubW9uaXRvci5lbWFpbF9zZXJ2ZXIKZ2VuZXJhdGlvbjog\r\nMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCnNlcnZlcl9kbnM6CnNlcnZl\r\ncl9lcnI6CnNlcnZlcl9pcDoKKlNFQ1RJT04gZGIubW9uaXRvci5mYW5fbGV2ZWxf\r\nYWxhcm1zCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMwoqKlJPVwpyb3dpZDog\r\nMQphbGFybWJ5OiA3MApyZXN1bWVieTogODAKKipST1cKcm93aWQ6IDIKYWxhcm1i\r\neTogNTAKcmVzdW1lYnk6IDYwCioqUk9XCnJvd2lkOiAzCmFsYXJtYnk6IDAKcmVz\r\ndW1lYnk6IDEwCipTRUNUSU9OIGRiLm1vbml0b3IuaGFyZHdhcmVfbG9nY2xhc3MK\r\nZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmxvZ2Ns\r\nYXNzOiBMb2NhbAoqU0VDVElPTiBkYi5tb25pdG9yLmxvZ2NsYXNzZXMKZ2VuZXJh\r\ndGlvbjogMApsYXN0X3Jvd2lkOiAzCioqUk9XCnJvd2lkOiAxCmVtYWlsOgpmYWNp\r\nbGl0eTogLQpsZXZlbDogLQpsb2NhbDogb24KbmFtZTogTG9jYWwKKipST1cKcm93\r\naWQ6IDIKZW1haWw6CmZhY2lsaXR5OiBBdXRoCmxldmVsOiBOb3RpY2UKbG9jYWw6\r\nIG9uCm5hbWU6IExvY2FsK1N5c2xvZwoqKlJPVwpyb3dpZDogMwplbWFpbDoKZmFj\r\naWxpdHk6IEF1dGgKbGV2ZWw6IE5vdGljZQpsb2NhbDogb2ZmCm5hbWU6IFN5c2xv\r\nZwoqU0VDVElPTiBkYi5tb25pdG9yLm1lbW9yeV9sZXZlbF9hbGFybQpnZW5lcmF0\r\naW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKbWF4X21lbW9yeToK\r\nb2tfbWVtb3J5OgoqU0VDVElPTiBkYi5tb25pdG9yLnJhZGl1c19lcnJvcnNfbG9n\r\nY2xhc3MKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAx\r\nCmxvZ2NsYXNzOiBMb2NhbAoqU0VDVElPTiBkYi5tb25pdG9yLnNpcF9sZXZlbF9h\r\nbGFybXMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAx\r\nCm1heF9yZWdpc3RlcmVkX3VzZXJzOgptYXhfc2Vzc2lvbnM6Cm9rX3JlZ2lzdGVy\r\nZWRfdXNlcnM6Cm9rX3Nlc3Npb25zOgoqU0VDVElPTiBkYi5tb25pdG9yLnNubXBf\r\nYWdlbnRfYWRkcmVzcwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cK\r\ncm93aWQ6IDEKc25tcGFnZW50aXA6IC0KKlNFQ1RJT04gZGIubW9uaXRvci5zbm1w\r\nX2FnZW50X2xvZ2NsYXNzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJP\r\nVwpyb3dpZDogMQpsb2djbGFzczogTG9jYWwKKlNFQ1RJT04gZGIubW9uaXRvci5z\r\nbm1wX2NvbnRhY3RfcGVyc29uCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoq\r\nKlJPVwpyb3dpZDogMQpzbm1wX2NvbnRhY3RfcGVyc29uOgoqU0VDVElPTiBkYi5t\r\nb25pdG9yLnNubXBfbWFuYWdlbWVudF9zdGF0aW9ucwpnZW5lcmF0aW9uOiAwCmxh\r\nc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKY2xpZW50X25ldGdyb3VwOiAtCipT\r\nRUNUSU9OIGRiLm1vbml0b3Iuc25tcF9ub2RlX2xvY2F0aW9uCmdlbmVyYXRpb246\r\nIDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpzbm1wX25vZGVfbG9jYXRp\r\nb246CipTRUNUSU9OIGRiLm1vbml0b3Iuc25tcF9wYWNrZXRfbG9nY2xhc3MKZ2Vu\r\nZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmxvZ2NsYXNz\r\nOiBMb2NhbAoqU0VDVElPTiBkYi5tb25pdG9yLnNubXBfdHJhcF9jd21wX3NlbmRp\r\nbmcKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVu\r\nYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5tb25pdG9yLnNubXBfdHJhcF9yZWNlaXZl\r\ncnMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLm1vbml0\r\nb3Iuc25tcF90cmFwX3NlbmRpbmcKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAx\r\nCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5tb25pdG9y\r\nLnNubXBfdjF2MmNfYWNjZXNzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoq\r\nKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJT04gZGIubW9uaXRvci5z\r\nbm1wX3YxdjJjX2F1dGgKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNU\r\nSU9OIGRiLm1vbml0b3Iuc25tcF92M19hY2Nlc3MKZ2VuZXJhdGlvbjogMApsYXN0\r\nX3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBk\r\nYi5tb25pdG9yLnNubXBfdjNfYXV0aApnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6\r\nIDAKKlNFQ1RJT04gZGIubW9uaXRvci5zeXNsb2dfc2VydmVycwpnZW5lcmF0aW9u\r\nOiAwCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIubW9uaXRvci53YXRjaGRvZ3MK\r\nZ2VuZXJhdGlvbjogMQpsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJs\r\nZWQ6IG9mZgpzZXJ2aWNlOiBzaXBmdwoqU0VDVElPTiBFT0YKAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nZGIvZGIuc2lwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAADAwMDA2NDQAMDAwMDA2MwAwMDAwMDYzADAwMDAwMDQ0NDA1ADEzMzYxNDAx\r\nNDQ3ADAxMTU0MwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIFRoaXMgZmlsZSBpcyBh\r\nIHN0cmljdCBmb3JtYXQgY29uZmlndXJhdGlvbiBmaWxlLgojIEVkaXQgY2FyZWZ1\r\nbGx5IG9yIG5vdCBhdCBhbGwuCipTRUNUSU9OIGRiLnNpcC5hY2NlbGVyYXRlZF90\r\nbHMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVu\r\nYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5zaXAuYWN0aXZlCmdlbmVyYXRpb246IDAK\r\nbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJ\r\nT04gZGIuc2lwLmFkZF9kdG1mX2FkZHJzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dp\r\nZDogMAoqU0VDVElPTiBkYi5zaXAuYWRkX2R0bWZfcHQKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCnB0OgoqU0VDVElPTiBkYi5zaXAu\r\nYWRkX2V4cGlyZV9oZWFkZXIKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioq\r\nUk9XCnJvd2lkOiAxCmFjdGlvbjogbmV2ZXIKKlNFQ1RJT04gZGIuc2lwLmFsbG93\r\nZWRfY29kZWNzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMTQKKipST1cKcm93\r\naWQ6IDEKYWxsb3c6IG9uCmJhbmR3aWR0aDogODAKbmFtZTogcGNtdQp0eXBlOiBh\r\ndWRpbwoqKlJPVwpyb3dpZDogMgphbGxvdzogb24KYmFuZHdpZHRoOiA4MApuYW1l\r\nOiBwY21hCnR5cGU6IGF1ZGlvCioqUk9XCnJvd2lkOiAzCmFsbG93OiBvbgpiYW5k\r\nd2lkdGg6IDI0Cm5hbWU6IGc3MjkKdHlwZTogYXVkaW8KKipST1cKcm93aWQ6IDQK\r\nYWxsb3c6IG9uCmJhbmR3aWR0aDogMjQKbmFtZTogZzcyOWEKdHlwZTogYXVkaW8K\r\nKipST1cKcm93aWQ6IDUKYWxsb3c6IG9uCmJhbmR3aWR0aDogMjkKbmFtZTogZ3Nt\r\nCnR5cGU6IGF1ZGlvCioqUk9XCnJvd2lkOiA2CmFsbG93OiBvbgpiYW5kd2lkdGg6\r\nIDE4Cm5hbWU6IGc3MjMKdHlwZTogYXVkaW8KKipST1cKcm93aWQ6IDcKYWxsb3c6\r\nIG9uCmJhbmR3aWR0aDogMzIKbmFtZTogZzcyNi0xNgp0eXBlOiBhdWRpbwoqKlJP\r\nVwpyb3dpZDogOAphbGxvdzogb24KYmFuZHdpZHRoOiA0MApuYW1lOiBnNzI2LTI0\r\nCnR5cGU6IGF1ZGlvCioqUk9XCnJvd2lkOiA5CmFsbG93OiBvbgpiYW5kd2lkdGg6\r\nIDQ4Cm5hbWU6IGc3MjYtMzIKdHlwZTogYXVkaW8KKipST1cKcm93aWQ6IDEwCmFs\r\nbG93OiBvbgpiYW5kd2lkdGg6IDU2Cm5hbWU6IGc3MjYtNDAKdHlwZTogYXVkaW8K\r\nKipST1cKcm93aWQ6IDExCmFsbG93OiBvbgpiYW5kd2lkdGg6IDYwCm5hbWU6IHNw\r\nZWV4CnR5cGU6IGF1ZGlvCioqUk9XCnJvd2lkOiAxMgphbGxvdzogb24KYmFuZHdp\r\nZHRoOiAzMgpuYW1lOiBpbGJjCnR5cGU6IGF1ZGlvCioqUk9XCnJvd2lkOiAxMwph\r\nbGxvdzogb2ZmCmJhbmR3aWR0aDoKbmFtZTogKgp0eXBlOiBhdWRpbwoqKlJPVwpy\r\nb3dpZDogMTQKYWxsb3c6IG9mZgpiYW5kd2lkdGg6Cm5hbWU6ICoKdHlwZTogdmlk\r\nZW8KKlNFQ1RJT04gZGIuc2lwLmFsbG93ZWRfbWVkaWEKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAyCioqUk9XCnJvd2lkOiAxCnRyYW5zcG9ydDogdWRwCnBvcnRz\r\nX2xvd2VyOiAxMDI0CnBvcnRzX3VwcGVyOiA2NTUzNQoqKlJPVwpyb3dpZDogMgp0\r\ncmFuc3BvcnQ6IHRjcApwb3J0c19sb3dlcjogMTAyNApwb3J0c191cHBlcjogNjU1\r\nMzUKKlNFQ1RJT04gZGIuc2lwLmFsbG93ZWRfb3JpZ2lucwpnZW5lcmF0aW9uOiAw\r\nCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIuc2lwLmFsd2F5c19yZWxheV9tZWRp\r\nYQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5h\r\nYmxlZDogb2ZmCipTRUNUSU9OIGRiLnNpcC5hc3NlcnRlZF9pZGVudGl0eQpnZW5l\r\ncmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDog\r\nb2ZmCipTRUNUSU9OIGRiLnNpcC5hc3NpZ25faXBfYWxpYXNfYnlfdXNlcgpnZW5l\r\ncmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDog\r\nb2ZmCipTRUNUSU9OIGRiLnNpcC5hdXRoX21ldGhvZHMKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAxNAoqKlJPVwpyb3dpZDogMQphbGxvdzogb24KYXV0aDogb2Zm\r\nCm1ldGhvZDogQllFCnRyYWZmaWNfdG86IGJvdGgKKipST1cKcm93aWQ6IDIKYWxs\r\nb3c6IG9uCmF1dGg6IG9mZgptZXRob2Q6IEZFQVRVUkUKdHJhZmZpY190bzogYm90\r\naAoqKlJPVwpyb3dpZDogMwphbGxvdzogb24KYXV0aDogb2ZmCm1ldGhvZDogSU5G\r\nTwp0cmFmZmljX3RvOiBib3RoCioqUk9XCnJvd2lkOiA0CmFsbG93OiBvbgphdXRo\r\nOiBvZmYKbWV0aG9kOiBJTlZJVEUKdHJhZmZpY190bzogYm90aAoqKlJPVwpyb3dp\r\nZDogNQphbGxvdzogb24KYXV0aDogb2ZmCm1ldGhvZDogTUVTU0FHRQp0cmFmZmlj\r\nX3RvOiBib3RoCioqUk9XCnJvd2lkOiA2CmFsbG93OiBvbgphdXRoOiBvZmYKbWV0\r\naG9kOiBOT1RJRlkKdHJhZmZpY190bzogYm90aAoqKlJPVwpyb3dpZDogNwphbGxv\r\ndzogb24KYXV0aDogb2ZmCm1ldGhvZDogT1BUSU9OUwp0cmFmZmljX3RvOiBib3Ro\r\nCioqUk9XCnJvd2lkOiA4CmFsbG93OiBvbgphdXRoOiBvZmYKbWV0aG9kOiBQUkFD\r\nSwp0cmFmZmljX3RvOiBib3RoCioqUk9XCnJvd2lkOiA5CmFsbG93OiBvbgphdXRo\r\nOiBvZmYKbWV0aG9kOiBQVUJMSVNICnRyYWZmaWNfdG86IGJvdGgKKipST1cKcm93\r\naWQ6IDEwCmFsbG93OiBvbgphdXRoOiBvZmYKbWV0aG9kOiBSRUZFUgp0cmFmZmlj\r\nX3RvOiBib3RoCioqUk9XCnJvd2lkOiAxMQphbGxvdzogb24KYXV0aDogb2ZmCm1l\r\ndGhvZDogUkVHSVNURVIKdHJhZmZpY190bzogYm90aAoqKlJPVwpyb3dpZDogMTIK\r\nYWxsb3c6IG9uCmF1dGg6IG9mZgptZXRob2Q6IFNFUlZJQ0UKdHJhZmZpY190bzog\r\nYm90aAoqKlJPVwpyb3dpZDogMTMKYWxsb3c6IG9uCmF1dGg6IG9mZgptZXRob2Q6\r\nIFNVQlNDUklCRQp0cmFmZmljX3RvOiBib3RoCioqUk9XCnJvd2lkOiAxNAphbGxv\r\ndzogb24KYXV0aDogb2ZmCm1ldGhvZDogVVBEQVRFCnRyYWZmaWNfdG86IGJvdGgK\r\nKlNFQ1RJT04gZGIuc2lwLmIyYnVhX2Fuc3dlcl9wdF9jaGFuZ2VzCmdlbmVyYXRp\r\nb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpjb25kOiBmaXJzdAoq\r\nU0VDVElPTiBkYi5zaXAuYjJidWFfZGV0ZWN0X25vb3Bfc2RwCmdlbmVyYXRpb246\r\nIDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNF\r\nQ1RJT04gZGIuc2lwLmIyYnVhX2Z3ZF8zeHhfaGRycwpnZW5lcmF0aW9uOiAwCmxh\r\nc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIuc2lwLmIyYnVhX29mZmVyX2Zyb21fdGVt\r\ncGxhdGUKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAx\r\nCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5zaXAuYjJidWFfb2ZmZXJfaW5faW52\r\naXRlCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpl\r\nbmFibGVkOiBvZmYKKlNFQ1RJT04gZGIuc2lwLmIyYnVhX3BlbmRpbmdfdGltZW91\r\ndApnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKdGlt\r\nZW91dDogMAoqU0VDVElPTiBkYi5zaXAuYjJidWFfcmVpbnZpdGVzX2VuZF90b19l\r\nbmQKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVu\r\nYWJsZWQ6IG9uCipTRUNUSU9OIGRiLnNpcC5icmVha19mcmllbmRzaGlwcwpnZW5l\r\ncmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDog\r\nb2ZmCipTRUNUSU9OIGRiLnNpcC5jYWxsX2NvbnRyb2wKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCnZlcmJvc2U6IG9mZgoqU0VDVElP\r\nTiBkYi5zaXAuY2FsbF9jb250cm9sX2NhcwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93\r\naWQ6IDAKKlNFQ1RJT04gZGIuc2lwLmNhbGxfY29udHJvbF9zZXJ2ZXJzCmdlbmVy\r\nYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5zaXAuY29kZWNfZmls\r\ndGVyaW5nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDog\r\nMQplbmFibGVkOiBvZmYKKlNFQ1RJT04gZGIuc2lwLmRhdGFfaW50ZXJmYWNlcwpn\r\nZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIuc2lwLmRlZmF1\r\nbHRfZ2F0ZXdheQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93\r\naWQ6IDEKZ2F0ZXdheTogLQoqU0VDVElPTiBkYi5zaXAuZGlhbGluZ19kb21haW5z\r\nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5zaXAuZG5z\r\nX292ZXJyaWRlX29uX3JlY3Vyc2lvbgpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6\r\nIDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb24KKlNFQ1RJT04gZGIuc2lwLmVt\r\nZXJnZW5jeQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6\r\nIDEKZW1lcmdlbmN5OiA5MTEKKlNFQ1RJT04gZGIuc2lwLmV4dGVybl9yYWRpdXNf\r\nZGIKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmNs\r\naWVudF9uZXRncm91cDogLQpkYl90eXBlOiBsb2NhbAoqU0VDVElPTiBkYi5zaXAu\r\nZXh0ZXJuYWxfcmVsYXkKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNU\r\nSU9OIGRiLnNpcC5mYWtlX3Byb3h5X3N1cHBvcnRlZF9wcml2YWN5CmdlbmVyYXRp\r\nb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYK\r\nKlNFQ1RJT04gZGIuc2lwLmZpeF9maWxlX3RyYW5zZmVyX3BvcnQKZ2VuZXJhdGlv\r\nbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoq\r\nU0VDVElPTiBkYi5zaXAuZm9yY2VfMzI2NF9ob2xkCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJT04g\r\nZGIuc2lwLmZvcmNlX21vZGlmeQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDAK\r\nKlNFQ1RJT04gZGIuc2lwLmZvcndhcmRfY2FuY2VsX2JvZHkKZ2VuZXJhdGlvbjog\r\nMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VD\r\nVElPTiBkYi5zaXAuZm9yd2FyZF90b19oZWFkZXIKZ2VuZXJhdGlvbjogMApsYXN0\r\nX3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBk\r\nYi5zaXAuZm9yd2FyZF91c2VyX2FnZW50CmdlbmVyYXRpb246IDAKbGFzdF9yb3dp\r\nZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJT04gZGIuc2lw\r\nLmdsb2JhbF9wb2xpY2llcwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipS\r\nT1cKcm93aWQ6IDEKc2lwX3BvbGljeTogcHJvY2VzcwpzaXBhdXRoX2FsbG93X3Jm\r\nYzIwNjk6IG9mZgpzaXBhdXRoX2VuYWJsZWQ6IG9mZgpzaXBhdXRoX3JlYWxtOgoq\r\nU0VDVElPTiBkYi5zaXAuaGVhZGVyX2ZpbHRlcl9kZWZhdWx0CmdlbmVyYXRpb246\r\nIDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQphY3Rpb246IHByb2Nlc3MK\r\nKlNFQ1RJT04gZGIuc2lwLmhlYWRlcl9maWx0ZXJfcnVsZXMKZ2VuZXJhdGlvbjog\r\nMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLnNpcC5pZ25vcmVfdXJpX3BvcnRf\r\nd2hlbl9tYWRkcgpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93\r\naWQ6IDEKZW5hYmxlZDogb2ZmCipTRUNUSU9OIGRiLnNpcC5pbmhpYml0X2hvbGQK\r\nZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmFjdGlv\r\nbjogbm8KKlNFQ1RJT04gZGIuc2lwLmxhcmdlX3VkcApnZW5lcmF0aW9uOiAwCmxh\r\nc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipTRUNUSU9O\r\nIGRiLnNpcC5saXN0ZW4KZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAyCioqUk9X\r\nCnJvd2lkOiAxCmVuYWJsZWQ6IG9uCnBvcnQ6IDUwNjAKdHJhbnNwb3J0OiB1ZHAs\r\ndGNwCnRyYW5zcGFyZW50OiBvbgpjb21tZW50OiBTdGFuZGFyZCBTSVAgcG9ydAoq\r\nKlJPVwpyb3dpZDogMgplbmFibGVkOiBvZmYKcG9ydDogNTA2MQp0cmFuc3BvcnQ6\r\nIHRscwp0cmFuc3BhcmVudDogb24KY29tbWVudDogU3RhbmRhcmQgVExTIHBvcnQK\r\nKlNFQ1RJT04gZGIuc2lwLmxvY2FsX2RvbWFpbnMKZ2VuZXJhdGlvbjogMApsYXN0\r\nX3Jvd2lkOiAwCipTRUNUSU9OIGRiLnNpcC5sb29zZV9yZWZlcl90bwpnZW5lcmF0\r\naW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2Zm\r\nCipTRUNUSU9OIGRiLnNpcC5sb29zZV91c2VyX25hbWVfY2hlY2sKZ2VuZXJhdGlv\r\nbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoq\r\nU0VDVElPTiBkYi5zaXAubHJfdHJ1ZQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6\r\nIDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipTRUNUSU9OIGRiLnNpcC5t\r\nZWRpYV9lbmNyeXB0aW9uX3BvbGljeQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6\r\nIDEKKipST1cKcm93aWQ6IDEKYWxsb3dfdHJhbnNjb2Rpbmc6IG9mZgphbGxvd2Vk\r\nX3N1aXRlczogLQoqU0VDVElPTiBkYi5zaXAubWVkaWFfZW5jcnlwdGlvbl9ydWxl\r\ncwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIuc2lwLm1l\r\nZGlhX2VuY3J5cHRpb25fc2V0dGluZ3MKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lk\r\nOiAxCioqUk9XCnJvd2lkOiAxCmIyYnVhOiBvbgplbmFibGVkOiBvZmYKbXVsdGlf\r\ncHJvZmlsZTogb2ZmCnJlcXVpcmVfdGxzOiBvZmYKdXNlX2xhc3RfY29tcHV0ZWQ6\r\nIG9mZgpwcmVmZXJfcnRwX3NhdnA6IGF2cAoqU0VDVElPTiBkYi5zaXAubWVkaWFf\r\nZW5jcnlwdGlvbl9kdGxzX3NydHAKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAx\r\nCioqUk9XCnJvd2lkOiAxCmNlcnQ6IC0KZHRsczogRFRMU3YxLngKaWduX2NlcnRf\r\nZGF0ZXM6IG9mZgphZGRfY2xpZW50X2lwOiBvbgoqU0VDVElPTiBkYi5zaXAubWVk\r\naWFfZW5jcnlwdGlvbl9zdWl0ZQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDkK\r\nKipST1cKcm93aWQ6IDEKbmFtZTogQ2xlYXJ0ZXh0CnN1aXRlOiBjbGVhcnRleHQK\r\nKipST1cKcm93aWQ6IDIKbmFtZTogRW5jcnlwdGVkICh0cmFuc2NvZGFibGUpCnN1\r\naXRlOiBzZGVzY3JpcHRpb25zLUFFU19DTV8xMjhfSE1BQ19TSEExXzMyCioqUk9X\r\nCnJvd2lkOiAzCm5hbWU6IEVuY3J5cHRlZCAodHJhbnNjb2RhYmxlKQpzdWl0ZTog\r\nc2Rlc2NyaXB0aW9ucy1BRVNfQ01fMTI4X0hNQUNfU0hBMV84MAoqKlJPVwpyb3dp\r\nZDogNApuYW1lOiBTUlRQCnN1aXRlOiBzZGVzY3JpcHRpb25zLUFFU19DTV8xMjhf\r\nSE1BQ19TSEExXzMyCioqUk9XCnJvd2lkOiA1Cm5hbWU6IFNSVFAKc3VpdGU6IHNk\r\nZXNjcmlwdGlvbnMtQUVTX0NNXzEyOF9ITUFDX1NIQTFfODAKKipST1cKcm93aWQ6\r\nIDYKbmFtZTogU1JUUApzdWl0ZTogc2Rlc2NyaXB0aW9ucy1GOF8xMjhfSE1BQ19T\r\nSEExXzgwCioqUk9XCnJvd2lkOiA3Cm5hbWU6IEFueSAodHJhbnNjb2RhYmxlKQpz\r\ndWl0ZTogY2xlYXJ0ZXh0CioqUk9XCnJvd2lkOiA4Cm5hbWU6IEFueSAodHJhbnNj\r\nb2RhYmxlKQpzdWl0ZTogc2Rlc2NyaXB0aW9ucy1BRVNfQ01fMTI4X0hNQUNfU0hB\r\nMV8zMgoqKlJPVwpyb3dpZDogOQpuYW1lOiBBbnkgKHRyYW5zY29kYWJsZSkKc3Vp\r\ndGU6IHNkZXNjcmlwdGlvbnMtQUVTX0NNXzEyOF9ITUFDX1NIQTFfODAKKlNFQ1RJ\r\nT04gZGIuc2lwLm1lZGlhX3BvcnRzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDog\r\nMQoqKlJPVwpyb3dpZDogMQpwb3J0c19sb3dlcjogNTgwMjQKcG9ydHNfdXBwZXI6\r\nIDYwOTk5CipTRUNUSU9OIGRiLnNpcC5tZWRpYV9wcm94eQpnZW5lcmF0aW9uOiAw\r\nCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCmZvcmNl\r\nOiBvZmYKKlNFQ1RJT04gZGIuc2lwLm1lZGlhX3Jlc3RyaWN0aW9uCmdlbmVyYXRp\r\nb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQptYXhfc2VuZGVyczog\r\nMTAKbWVkaWFsb2NrOiBsb2NrCipTRUNUSU9OIGRiLnNpcC5tZWRpYV9zdHJlYW1f\r\nbGluZ2VyCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDog\r\nMQp0aW1lOiAwCipTRUNUSU9OIGRiLnNpcC5tZWRpYV90aW1lb3V0cwpnZW5lcmF0\r\naW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKb25ld2F5OgpydGNw\r\nOgpydHA6CnRlYXJfZG93bjogb2ZmCipTRUNUSU9OIGRiLnNpcC5tZWRpYV90cmFu\r\nc2NvZGluZwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6\r\nIDEKZW5hYmxlZDogb2ZmCipTRUNUSU9OIGRiLnNpcC5tZWRpYV90cmFuc2NvZGlu\r\nZ19ydWxlcwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIu\r\nc2lwLm1lZGlhX3RyYW5zY29kaW5nX2NvZGVjcwpnZW5lcmF0aW9uOiAwCmxhc3Rf\r\ncm93aWQ6IDAKKlNFQ1RJT04gZGIuc2lwLm1lZGlhX3RyYW5zY29kaW5nX29wdGlv\r\nbnMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLnNpcC5t\r\nZXNzYWdlCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDog\r\nMQptYXhfbWVzc2FnZV9zaXplOiAxMzEwNzIKbGltaXRfbWF4X2ZvcndhcmRzOiA3\r\nMApzZXJ2ZXJuYW1lOiAlcHJvZHVjdC8ldmVyc2lvbgoqU0VDVElPTiBkYi5zaXAu\r\nbWZ1bGwKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAx\r\nCmVuYWJsZWQ6IG9uCipTRUNUSU9OIGRiLnNpcC5taW1ldHlwZXMKZ2VuZXJhdGlv\r\nbjogMApsYXN0X3Jvd2lkOiAxNgoqKlJPVwpyb3dpZDogMQphbGxvd2VkOiBvZmYK\r\nbWltZXR5cGU6IGFwcGxpY2F0aW9uL1NPQVAreG1sCioqUk9XCnJvd2lkOiAyCmFs\r\nbG93ZWQ6IG9mZgptaW1ldHlwZTogYXBwbGljYXRpb24vcGlkZit4bWwKKipST1cK\r\ncm93aWQ6IDMKYWxsb3dlZDogb2ZmCm1pbWV0eXBlOiBhcHBsaWNhdGlvbi92bmQt\r\nbWljcm9zb2Z0LXJvYW1pbmctYWNscyt4bWwKKipST1cKcm93aWQ6IDQKYWxsb3dl\r\nZDogb2ZmCm1pbWV0eXBlOiBhcHBsaWNhdGlvbi92bmQtbWljcm9zb2Z0LXJvYW1p\r\nbmctY29udGFjdHMreG1sCioqUk9XCnJvd2lkOiA1CmFsbG93ZWQ6IG9mZgptaW1l\r\ndHlwZTogYXBwbGljYXRpb24vdm5kLW1pY3Jvc29mdC1yb2FtaW5nLXByb3Zpc2lv\r\nbmluZyt4bWwKKipST1cKcm93aWQ6IDYKYWxsb3dlZDogb2ZmCm1pbWV0eXBlOiBh\r\ncHBsaWNhdGlvbi94bWwKKipST1cKcm93aWQ6IDcKYWxsb3dlZDogb2ZmCm1pbWV0\r\neXBlOiBpbWFnZS9qcGVnCioqUk9XCnJvd2lkOiA4CmFsbG93ZWQ6IG9mZgptaW1l\r\ndHlwZTogdGV4dC9odG1sCioqUk9XCnJvd2lkOiA5CmFsbG93ZWQ6IG9mZgptaW1l\r\ndHlwZTogdGV4dC9scGlkZgoqKlJPVwpyb3dpZDogMTAKYWxsb3dlZDogb2ZmCm1p\r\nbWV0eXBlOiB0ZXh0L3BsYWluCioqUk9XCnJvd2lkOiAxMQphbGxvd2VkOiBvZmYK\r\nbWltZXR5cGU6IHRleHQveG1sCioqUk9XCnJvd2lkOiAxMgphbGxvd2VkOiBvZmYK\r\nbWltZXR5cGU6IHRleHQveG1sK21zcnRjLnBpZGYKKipST1cKcm93aWQ6IDEzCmFs\r\nbG93ZWQ6IG9mZgptaW1ldHlwZTogdGV4dC94bWwrbXNydGMud3BlbmRpbmcKKipS\r\nT1cKcm93aWQ6IDE0CmFsbG93ZWQ6IG9mZgptaW1ldHlwZTogYXBwbGljYXRpb24v\r\nYWRybCt4bWwKKipST1cKcm93aWQ6IDE1CmFsbG93ZWQ6IG9mZgptaW1ldHlwZTog\r\nbWVzc2FnZS9zaXBmcmFnCioqUk9XCnJvd2lkOiAxNgphbGxvd2VkOiBvbgptaW1l\r\ndHlwZTogKi8qCipTRUNUSU9OIGRiLnNpcC5tb2RpZnlfcmVmZXJ0bwpnZW5lcmF0\r\naW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb24K\r\nKlNFQ1RJT04gZGIuc2lwLm1vbml0b3Jfc2VydmVyCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMAoqU0VDVElPTiBkYi5zaXAubXVzaWNfb25faG9sZApnZW5lcmF0\r\naW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2Zm\r\nCipTRUNUSU9OIGRiLnNpcC5tdXNpY19vbl9ob2xkX3NlcnZlcnMKZ2VuZXJhdGlv\r\nbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCnBvcnQ6CnRyYW5zcG9y\r\ndDogLQp1c2VyZG9tYWluOgoqU0VDVElPTiBkYi5zaXAubm9fc2lwX3RvX25hdApn\r\nZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxl\r\nZDogb2ZmCipTRUNUSU9OIGRiLnNpcC5vcHRpb25fdGltZW91dApnZW5lcmF0aW9u\r\nOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKdGltZW91dDogNDEKKlNF\r\nQ1RJT04gZGIuc2lwLm91dGJvdW5kX3Byb3h5CmdlbmVyYXRpb246IDAKbGFzdF9y\r\nb3dpZDogMAoqU0VDVElPTiBkYi5zaXAucGFpX3VzZV9mcm9tCmdlbmVyYXRpb246\r\nIDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNF\r\nQ1RJT04gZGIuc2lwLnBlcmNlbnQyMF90b193aGl0ZXNwYWNlCmdlbmVyYXRpb246\r\nIDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNF\r\nQ1RJT04gZGIuc2lwLnByZXNlcnZlXzI1NDNfaG9sZApnZW5lcmF0aW9uOiAwCmxh\r\nc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipTRUNUSU9O\r\nIGRiLnNpcC5wcmVsb2FkZWRfcm91dGVfcnVsZXMKZ2VuZXJhdGlvbjogMApsYXN0\r\nX3Jvd2lkOiAwCipTRUNUSU9OIGRiLnNpcC5wcmVsb2FkZWRfcm91dGVfZGVmYXVs\r\ndApnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKYWN0\r\naW9uOiByZWplY3QKKlNFQ1RJT04gZGIuc2lwLnB1YmxpY19pcApnZW5lcmF0aW9u\r\nOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKaXBfZG5zOgppcF9lcnI6\r\nCmlwX2lwOgoqU0VDVElPTiBkYi5zaXAucmFkaXVzX2FjY3QKZ2VuZXJhdGlvbjog\r\nMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmRpdmVyc2lvbjogb2ZmCmVu\r\nYWJsZWQ6IG9mZgptZWRpYTogb2ZmCnBfYXNzZXJ0ZWRfaWRlbnRpdHk6IG9mZgpy\r\nZW1vdGVfcGFydHlfaWQ6IG9mZgoqU0VDVElPTiBkYi5zaXAucmFkaXVzX2FjY3Rf\r\naW50ZXJmYWNlcwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04g\r\nZGIuc2lwLnJlY3Vyc2Vfb25fM3h4X2luX2IyYnVhCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJT04g\r\nZGIuc2lwLnJlZGlyZWN0X3NlcnZlcgpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6\r\nIDEKKipST1cKcm93aWQ6IDEKc2VydmVyX2RuczoKc2VydmVyX2VycjoKc2VydmVy\r\nX2lwOgoqU0VDVElPTiBkYi5zaXAucmVmZXJ0b19yZXBsYWNlbWVudApnZW5lcmF0\r\naW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZG9tYWluOgp0eXBl\r\nOiBuZXZlcgoqU0VDVElPTiBkYi5zaXAucmVmZXJ0b193aXRoX2IyYnVhX2NhbGxp\r\nZApnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5h\r\nYmxlZDogb24KKlNFQ1RJT04gZGIuc2lwLnJlZ19jdF91cmlfcGFyYW1zCmdlbmVy\r\nYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5zaXAucmVnaXN0ZXJf\r\nZm9yY2VfYW9yX3VzZXIKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9X\r\nCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5zaXAucmVnaXN0cmFy\r\nX2xpbWl0cwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6\r\nIDEKbWF4X3JlZ2lzdHJhdGlvbnM6IDUKbWF4X3VzZXJzOgpyZWdpc3RyYXRpb25f\r\ndGltZW91dDogMzYwMAoqU0VDVElPTiBkYi5zaXAucmVsYXlfcnVsZXMKZ2VuZXJh\r\ndGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLnNpcC5yZW1vdmVfdmlh\r\nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5zaXAucmVt\r\nb3ZlX3ZpYV9hbGwKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJv\r\nd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5zaXAucmVwbHlfY29uZmln\r\nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpjbGFz\r\nczM6IGFsbAoqU0VDVElPTiBkYi5zaXAucmV3cml0ZV90b19mb3JfcmVnaXN0ZXJf\r\naW5fZHAKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAx\r\nCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5zaXAucmV3cml0ZV9mcm9tX2Zvcl9y\r\nZWdpc3Rlcl9pbl9kcApnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cK\r\ncm93aWQ6IDEKZW5hYmxlZDogb2ZmCipTRUNUSU9OIGRiLnNpcC5yaW5nYmFjawpn\r\nZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKYWN0aW9u\r\nOiBuZXZlcgp0b25lX3R5cGU6IHVzCipTRUNUSU9OIGRiLnNpcC5yb3V0ZTE4MApn\r\nZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxl\r\nZDogb2ZmCipTRUNUSU9OIGRiLnNpcC5yb3V0ZV91c2Vfc3BvcnQKZ2VuZXJhdGlv\r\nbjogMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLnNpcC5yb3V0aW5nX29yZGVy\r\nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMwoqKlJPVwpyb3dpZDogMQpmdW5j\r\ndGlvbjogZG5zX292ZXJyaWRlCm51bWJlcjogMQoqKlJPVwpyb3dpZDogMgpmdW5j\r\ndGlvbjogcmVnaXN0cmFyCm51bWJlcjogMgoqKlJPVwpyb3dpZDogMwpmdW5jdGlv\r\nbjogZGlhbHBsYW4KbnVtYmVyOiAzCipTRUNUSU9OIGRiLnNpcC5yZXVzZV9tZWRp\r\nYV9wb3J0CmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDog\r\nMQppZ25vcmVfbWVkaWE6IG9mZgppbl9zZXNzaW9uOiBvZmYKKlNFQ1RJT04gZGIu\r\nc2lwLnJyb3V0ZV9hbHdheXMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioq\r\nUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5zaXAucnJvdXRl\r\nX291dGJvdW5kCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dp\r\nZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJT04gZGIuc2lwLnNlc3Npb25fbGltaXRz\r\nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQptYXhf\r\nc2lwc2Vzc2lvbnM6Cm1heF9zdHJlYW1zX3Blcl9yZXE6IDYKc2Vzc2lvbl90aW1l\r\nb3V0OiAxNDQwMAoqU0VDVElPTiBkYi5zaXAuc2lnbmFsX2FkZHJlc3NfZm9yX2Rl\r\nc3RpbmF0aW9uCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBk\r\nYi5zaXAuc2lwX2FsaWFzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VD\r\nVElPTiBkYi5zaXAuc2lwX2Vycm9yc19sb2djbGFzcwpnZW5lcmF0aW9uOiAwCmxh\r\nc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKbG9nY2xhc3M6IExvY2FsCipTRUNU\r\nSU9OIGRiLnNpcC5zaXBfaWRzaXBzX2xvZ2NsYXNzCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2djbGFzczogTG9jYWwKKlNFQ1RJ\r\nT04gZGIuc2lwLnNpcF9saWNlbnNlX2xvZ2NsYXNzCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2djbGFzczogTG9jYWwKKlNFQ1RJ\r\nT04gZGIuc2lwLnNpcF9tZWRpYV9sb2djbGFzcwpnZW5lcmF0aW9uOiAwCmxhc3Rf\r\ncm93aWQ6IDEKKipST1cKcm93aWQ6IDEKbG9nY2xhc3M6IExvY2FsCipTRUNUSU9O\r\nIGRiLnNpcC5zaXBfbWVzc2FnZV9sb2djbGFzcwpnZW5lcmF0aW9uOiAwCmxhc3Rf\r\ncm93aWQ6IDEKKipST1cKcm93aWQ6IDEKbG9nY2xhc3M6IExvY2FsCipTRUNUSU9O\r\nIGRiLnNpcC5zaXBfc2lnbmFsaW5nX2xvZ2NsYXNzCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2djbGFzczogTG9jYWwKKlNFQ1RJ\r\nT04gZGIuc2lwLnNpcF92ZXJib3NlX2xvZ2NsYXNzCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2djbGFzczogLQoqU0VDVElPTiBk\r\nYi5zaXAuc3RfdHlwZQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cK\r\ncm93aWQ6IDEKc3RfdHlwZTogc3RhbmRhbG9uZQoqU0VDVElPTiBkYi5zaXAuc3Ry\r\naXBfaWNlX2F0dHJpYnV0ZXMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioq\r\nUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5zaXAuYWRkX2lj\r\nZV9jYW5kaWRhdGVzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpy\r\nb3dpZDogMQplbmFibGVkOiBvbgoqU0VDVElPTiBkYi5zaXAuc3RyaXBfc2RwX2xp\r\nbmVzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5zaXAu\r\nc3Vycm91bmRpbmdzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElP\r\nTiBkYi5zaXAudGNwX3RpbWVvdXQKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAx\r\nCioqUk9XCnJvd2lkOiAxCnRjcF90aW1lb3V0OiA5MAoqU0VDVElPTiBkYi5zaXAu\r\ndGVsX3RvX291dGJvdW5kX3Byb3h5CmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDog\r\nMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJT04gZGIuc2lwLnRl\r\nc3R1YQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEK\r\nZGlzcGxheV9uYW1lOgp1cmk6IHNpcDp0ZXN0YWdlbnRAYW5vbnltb3VzLmludmFs\r\naWQKKlNFQ1RJT04gZGIuc2lwLnRlc3R1YV9hY2wKZ2VuZXJhdGlvbjogMApsYXN0\r\nX3Jvd2lkOiAwCipTRUNUSU9OIGRiLnNpcC50ZXN0dWFfYWN0aXZlCmdlbmVyYXRp\r\nb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYK\r\nKlNFQ1RJT04gZGIuc2lwLnRlc3R1YV9jbGllbnQKZ2VuZXJhdGlvbjogMApsYXN0\r\nX3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmNhbGxfZHVyYXRpb246IDMwCmNhbGxf\r\naW50ZXJ2YWw6IDM2MDAKY2FsbF9wcmVmZXJyZWRfcHQ6IHBjbXUKY2FsbF9wdGlt\r\nZTogMjAKY2FsbF90bzoKKlNFQ1RJT04gZGIuc2lwLnRlc3R1YV9jbGllbnRfYWN0\r\naXZlCmdlbmVyYXRpb246IDAKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipT\r\nRUNUSU9OIGRiLnNpcC50ZXN0dWFfc2VydmVyX2FjdGl2ZQpnZW5lcmF0aW9uOiAw\r\nCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipTRUNU\r\nSU9OIGRiLnNpcC50bHNfY2FjZXJ0cwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6\r\nIDAKKlNFQ1RJT04gZGIuc2lwLnRsc19jbGllbnRfY2ZnCmdlbmVyYXRpb246IDAK\r\nbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpkZWZhdWx0X2NlcnQ6IC0KdGxz\r\nOiBUTFN2MS54CipTRUNUSU9OIGRiLnNpcC50bHNfc2VydmVyX2NmZwpnZW5lcmF0\r\naW9uOiAwCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIuc2lwLnRsc19zZXR0aW5n\r\ncwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKY2hl\r\nY2tfeDUwOV9zZXJ2ZXJfc3ViamVjdDogb24KY2hlY2tfeDUwOV9zZXJ2ZXJfd2ls\r\nZGNhcmQ6IG9mZgplbmFibGVkOiBvZmYKKlNFQ1RJT04gZGIuc2lwLnRoaXJkcGNj\r\nX2NvZGVjcwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDMKKipST1cKcm93aWQ6\r\nIDEKbnVtYmVyOiAxCm5hbWU6IFBDTVUKcHQ6CnJhdGU6CnBhcmFtczoKZm10cDoK\r\nKipST1cKcm93aWQ6IDIKbnVtYmVyOiAyCm5hbWU6IEc3MjkKcHQ6CnJhdGU6CnBh\r\ncmFtczoKZm10cDogYW5uZXhiPXllcwoqKlJPVwpyb3dpZDogMwpudW1iZXI6IDMK\r\nbmFtZTogdGVsZXBob25lLWV2ZW50CnB0OiA5NgpyYXRlOiA4MDAwCnBhcmFtczoK\r\nZm10cDogMC0xNQoqU0VDVElPTiBkYi5zaXAudHJhbnNhY3Rpb25fY29uZmlnCmdl\r\nbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpkZWZhdWx0\r\nX3RpbWVvdXQ6IDE4MAppbnZfcnQ6IDYKbWF4X3RpbWVvdXQ6IDMwMApuaW52X3J0\r\nOiAxMAp0aW1lcl9hOiAwLjUKKlNFQ1RJT04gZGIuc2lwLnRydXN0ZWRfZG9tYWlu\r\nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5zaXAudWFf\r\ncmVnaXN0ZXIKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lk\r\nOiAxCmV4cGlyZXM6IDM2MDAKcmV0cnlfdGltZTogMzAwCnJlZ19yZXRyaWVzOiBv\r\nZmYKKlNFQ1RJT04gZGIuc2lwLnVyaV9lbmNvZGluZwpnZW5lcmF0aW9uOiAwCmxh\r\nc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKdHlwZTogZW5jcnlwdAoqU0VDVElP\r\nTiBkYi5zaXAudXJpX2VuY29kZV91cGRhdGVfb25fcmVmZXJfdG8KZ2VuZXJhdGlv\r\nbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoq\r\nU0VDVElPTiBkYi5zaXAudXNlX2NhbmNlbF9ib2R5X2luX2FjawpnZW5lcmF0aW9u\r\nOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipT\r\nRUNUSU9OIGRiLnNpcC51c2VfcnRjcF9hdHRyaWJ1dGUKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElP\r\nTiBkYi5zaXAudXNlcm5hbWVfaXNfY29uc2VjdXRpdmVfbnVtYmVycwpnZW5lcmF0\r\naW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2Zm\r\nCipTRUNUSU9OIGRiLnNpcC5maXhfYnllX3JvdXRlX3NldApnZW5lcmF0aW9uOiAw\r\nCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipTRUNU\r\nSU9OIGRiLnNpcC5maXhfYmFkX3JvdXRlX3NldApnZW5lcmF0aW9uOiAwCmxhc3Rf\r\ncm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipTRUNUSU9OIGRi\r\nLnNpcC5maW5kX2dydXVfbG9jYWxseQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6\r\nIDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipTRUNUSU9OIGRiLnNpcC5h\r\nbHdheXNfYWRkX3BhdGgKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9X\r\nCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5zaXAudGVybWluYXRl\r\nX3RyYW5zZmVyb3Jfb25fMTgzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoq\r\nKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJT04gZGIuc2lwLmZvcmNl\r\nX2luYWN0aXZlX2hvbGQKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9X\r\nCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5zaXAuaXNfbXVsdGlw\r\nbGVfMnh4X21lZGlhCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpy\r\nb3dpZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJT04gZGIuc2lwLmhpZGVfcnIKZ2Vu\r\nZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLnNpcC5oaWRlX3Jy\r\nX2FsbApnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEK\r\nZW5hYmxlZDogb2ZmCipTRUNUSU9OIGRiLnNpcC5md19zaXBhcmF0b3JfbmF0Cmdl\r\nbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVk\r\nOiBvZmYKKlNFQ1RJT04gZGIuc2lwLmIyYnVhX3JlY2VpdmVfcHJhY2sKZ2VuZXJh\r\ndGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9u\r\nCipTRUNUSU9OIGRiLnNpcC5iMmJ1YV9zZW5kX3ByYWNrCmdlbmVyYXRpb246IDAK\r\nbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvbgoqU0VDVElP\r\nTiBkYi5zaXAuYnBjX2F1dGgKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioq\r\nUk9XCnJvd2lkOiAxCmludGVydmFsOgptYXhfYXR0ZW1wdHM6Cm5vcmVzcDoKc2l6\r\nZTogMTI4CipTRUNUSU9OIGRiLnNpcC5zaWduYWxpbmdfYWNsCmdlbmVyYXRpb246\r\nIDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpjbGllbnRfbmV0Z3JvdXA6\r\nIC0KKlNFQ1RJT04gZGIuc2lwLnJlcV9zYW1lX3NpZ25hbF9tZWRpYV9ncnAKZ2Vu\r\nZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6\r\nIG9uCipTRUNUSU9OIGRiLnNpcC5yZWludml0ZXNfZGlzYWJsZQpnZW5lcmF0aW9u\r\nOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipT\r\nRUNUSU9OIGRiLnNpcC5zdXBwb3J0ZWRfZGlzYWJsZQpnZW5lcmF0aW9uOiAwCmxh\r\nc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipTRUNUSU9O\r\nIGRiLnNpcC5mb3JjZV9wdGltZQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEK\r\nKipST1cKcm93aWQ6IDEKcHRpbWU6CipTRUNUSU9OIGRiLnNpcC5yZWdpc3Rlcl93\r\nYWl0CmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpk\r\nZWxheToKKlNFQ1RJT04gZGIuc2lwLnJlbW92ZV9zZHBfZnJvbV8xeHgKZ2VuZXJh\r\ndGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9m\r\nZgoqU0VDVElPTiBkYi5zaXAuaGlkZV9zZW5zaXRpdmUKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9uCipTRUNUSU9O\r\nIGRiLnNpcC5hZGRfaW5jb21pbmdfcG9ydF90b19ydXJpCmdlbmVyYXRpb246IDAK\r\nbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJ\r\nT04gZGIuc2lwLnVzZV9lbmRwb2ludF9zZXNzaW9uX2lkCmdlbmVyYXRpb246IDAK\r\nbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJ\r\nT04gZGIuc2lwLnJlc29sdmVfZG9tYWluc19pbl9zZHAKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElP\r\nTiBkYi5zaXAuY29udmVydF81eHhfdG9fNTAzCmdlbmVyYXRpb246IDAKbGFzdF9y\r\nb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJT04gZGIu\r\nc2lwLmFsbG93X3J0cF9iZWZvcmVfYW5zd2VyX3NkcApnZW5lcmF0aW9uOiAwCmxh\r\nc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipTRUNUSU9O\r\nIEVPRgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAGRiL2RiLnVzZXJkYgAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDAwNjMAMDAwMDA2MwAwMDAw\r\nMDAwMDQ1NQAxMzM2MTQwMTQ0NwAwMTIyMzEAIDAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nIyBUaGlzIGZpbGUgaXMgYSBzdHJpY3QgZm9ybWF0IGNvbmZpZ3VyYXRpb24gZmls\r\nZS4KIyBFZGl0IGNhcmVmdWxseSBvciBub3QgYXQgYWxsLgoqU0VDVElPTiBkYi51\r\nc2VyZGIucmFkaXVzX2xvY2FsX2VuZHBvaW50CmdlbmVyYXRpb246IDAKbGFzdF9y\r\nb3dpZDogMQoqKlJPVwpyb3dpZDogMQpuYXNfaWRlbnRpZmllcjogCnJhZGl1c19s\r\nb2NhbF9pcDogLQp1c2VfbmFzX2lwX2FkZHJlc3M6IG9uCipTRUNUSU9OIGRiLnVz\r\nZXJkYi5yYWRpdXNfc2VydmVycwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDAK\r\nKlNFQ1RJT04gRU9GCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkYi9kYi5pZHNpcHMAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAw\r\nMDYzADAwMDAwNjMAMDAwMDAwMDE2MzYAMTMzNjE0MDE0NDcAMDEyMjQyACAwAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAHVzdGFyICAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAACMgVGhpcyBmaWxlIGlzIGEgc3RyaWN0IGZvcm1hdCBj\r\nb25maWd1cmF0aW9uIGZpbGUuCiMgRWRpdCBjYXJlZnVsbHkgb3Igbm90IGF0IGFs\r\nbC4KKlNFQ1RJT04gZGIuaWRzaXBzLmFjdGl2ZQpnZW5lcmF0aW9uOiAwCmxhc3Rf\r\ncm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb24KKlNFQ1RJT04gZGIu\r\naWRzaXBzLmxpbWl0cwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cK\r\ncm93aWQ6IDEKbWF4X2xvYWQ6IDgwCipTRUNUSU9OIGRiLmlkc2lwcy5wYWNrZXRf\r\nZmlsdGVyaW5nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dp\r\nZDogMQphY3Rpb246IGRpc2NhcmQKZW5hYmxlZDogb24KbWF0Y2g6IFNjYW5uZXJz\r\nCm5hbWU6IFNjYW5uZXJzCm51bWJlcjogMQoqU0VDVElPTiBkYi5pZHNpcHMucGFj\r\na2V0X21hdGNoaW5nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpy\r\nb3dpZDogMQpjYXNlOiBvZmYKbWVzc2FnZTogcmVxdWVzdApuYW1lOiBTY2FubmVy\r\ncwpuZWc6IG9mZgpwYXJ0OiBoZWFkZXIKcmVnZXhwOiBVc2VyLUFnZW50Oi4qKGZy\r\naWVuZGx5LXNjYW5uZXJ8c3VuZGF5ZGRyfHNpcHZpY2lvdXN8c2lwY2xpKS4qCnNv\r\ndXJjZTogLQp0cmFuc3BvcnQ6IC0KKlNFQ1RJT04gZGIuaWRzaXBzLnJhdGVfbGlt\r\naXRpbmcKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAyCioqUk9XCnJvd2lkOiAx\r\nCmF1dG86IG9uCmJsYWNrbGlzdDogMzAwCmNjOiBvZmYKZW5hYmxlZDogb2ZmCmhp\r\ndHM6IDUwMAptYXRjaDogLQpuYW1lOiBEZWZhdWx0IGF1dG8Kd2luZG93OiAxMAoq\r\nKlJPVwpyb3dpZDogMgphdXRvOiBvZmYKYmxhY2tsaXN0OiAzMDAKY2M6IG9mZgpl\r\nbmFibGVkOiBvZmYKaGl0czogNTAwCm1hdGNoOiAtCm5hbWU6IERlZmF1bHQgbm90\r\nIGF1dG8Kd2luZG93OiAxMAoqU0VDVElPTiBFT0YKAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=\r\n-----END CONFIGURATION-DATABASE-----\r\n", - "filename": "config_2018-10-25T115310.cfg" - } - } -] diff --git a/test/units/modules/network/ingate/fixtures/test_ig_config_factory.json b/test/units/modules/network/ingate/fixtures/test_ig_config_factory.json deleted file mode 100644 index a632b46b9f..0000000000 --- a/test/units/modules/network/ingate/fixtures/test_ig_config_factory.json +++ /dev/null @@ -1,7 +0,0 @@ -[ - { - "load-factory": { - "msg": "reverted the configuration to the factory configuration." - } - } -] diff --git a/test/units/modules/network/ingate/fixtures/test_ig_config_get.json b/test/units/modules/network/ingate/fixtures/test_ig_config_get.json deleted file mode 100644 index 4ae518d9f9..0000000000 --- a/test/units/modules/network/ingate/fixtures/test_ig_config_get.json +++ /dev/null @@ -1,20 +0,0 @@ -[ - { - "table": "misc.dns_servers", - "href": "http://10.48.28.78/api/v1/misc/dns_servers/1", - "data": { - "number": "1", - "server": "192.168.1.20" - }, - "id": 1 - }, - { - "table": "misc.dns_servers", - "href": "http://10.48.28.78/api/v1/misc/dns_servers/2", - "data": { - "number": "2", - "server": "192.168.1.30" - }, - "id": 2 - } -] diff --git a/test/units/modules/network/ingate/fixtures/test_ig_config_modify.json b/test/units/modules/network/ingate/fixtures/test_ig_config_modify.json deleted file mode 100644 index 99bd4ef7b8..0000000000 --- a/test/units/modules/network/ingate/fixtures/test_ig_config_modify.json +++ /dev/null @@ -1,10 +0,0 @@ -[ - { - "table": "misc.unitname", - "href": "http://10.48.28.78/api/v1/misc/unitname/1", - "data": { - "unitname": "\"Testapi - 1541699806\"" - }, - "id": 1 - } -] diff --git a/test/units/modules/network/ingate/fixtures/test_ig_config_return_rowid.json b/test/units/modules/network/ingate/fixtures/test_ig_config_return_rowid.json deleted file mode 100644 index 7660873d10..0000000000 --- a/test/units/modules/network/ingate/fixtures/test_ig_config_return_rowid.json +++ /dev/null @@ -1 +0,0 @@ -[1] diff --git a/test/units/modules/network/ingate/fixtures/test_ig_config_revert.json b/test/units/modules/network/ingate/fixtures/test_ig_config_revert.json deleted file mode 100644 index c8314ab394..0000000000 --- a/test/units/modules/network/ingate/fixtures/test_ig_config_revert.json +++ /dev/null @@ -1,7 +0,0 @@ -[ - { - "revert-edits": { - "msg": "reverted the configuration to the last applied configuration." - } - } -] diff --git a/test/units/modules/network/ingate/fixtures/test_ig_config_store.json b/test/units/modules/network/ingate/fixtures/test_ig_config_store.json deleted file mode 100644 index 3915eaba41..0000000000 --- a/test/units/modules/network/ingate/fixtures/test_ig_config_store.json +++ /dev/null @@ -1,7 +0,0 @@ -[ - { - "store-edit": { - "msg": "Successfully applied and saved the configuration." - } - } -] diff --git a/test/units/modules/network/ingate/fixtures/test_ig_unit_information.json b/test/units/modules/network/ingate/fixtures/test_ig_unit_information.json deleted file mode 100644 index dc5e451c17..0000000000 --- a/test/units/modules/network/ingate/fixtures/test_ig_unit_information.json +++ /dev/null @@ -1,21 +0,0 @@ -[ - { - "unit-information": { - "lic_email": "dev@ingate.com", - "lang": "en", - "product": "Software SIParator/Firewall", - "installid": "any", - "patches": [], - "lic_mac": "any", - "unitname": "testname", - "interfaces": "eth0 eth1 eth2 eth3 eth4 eth5", - "modules": "failover vpn sip qturn ems qos rsc voipsm idsips siptrunk sipswitch", - "lic_name": "Ingate", - "macaddr": "52:54:00:4c:e2:07", - "version": "6.2.0-erik", - "systemid": "IG-200-840-5001-0", - "mode": "Firewall", - "serial": "IG-200-840-5001-0" - } - } -] diff --git a/test/units/modules/network/ingate/ingate_module.py b/test/units/modules/network/ingate/ingate_module.py deleted file mode 100644 index 64d24ebd37..0000000000 --- a/test/units/modules/network/ingate/ingate_module.py +++ /dev/null @@ -1,84 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2018, Ingate Systems AB -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json - -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase - - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(name): - path = os.path.join(fixture_path, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as file_desc: - data = file_desc.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class TestIngateModule(ModuleTestCase): - - def execute_module(self, failed=False, changed=False, fixture=None, - command=None): - - self.load_fixtures(fixture, command, changed) - - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - return result - - def failed(self): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def changed(self, changed=False): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertEqual(result['changed'], changed, result) - return result - - def load_fixtures(self, fixture=None, command=None, changed=False): - pass diff --git a/test/units/modules/network/ingate/test_ig_config.py b/test/units/modules/network/ingate/test_ig_config.py deleted file mode 100644 index 7dcb8637d7..0000000000 --- a/test/units/modules/network/ingate/test_ig_config.py +++ /dev/null @@ -1,241 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2018, Ingate Systems AB -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os - -from units.compat.mock import patch -from ansible.modules.network.ingate import ig_config -from units.modules.utils import set_module_args -from .ingate_module import TestIngateModule, load_fixture - - -class TestConfigModule(TestIngateModule): - - module = ig_config - - def setUp(self): - super(TestConfigModule, self).setUp() - - self.mock_make_request = patch('ansible.modules.network.ingate.' - 'ig_config.make_request') - self.make_request = self.mock_make_request.start() - # ATM the Ingate Python SDK is not needed in this unit test. - self.module.HAS_INGATESDK = True - - def tearDown(self): - super(TestConfigModule, self).tearDown() - self.mock_make_request.stop() - - def load_fixtures(self, fixture=None, command=None, changed=False): - self.make_request.side_effect = [(changed, command, - load_fixture(fixture))] - - def test_ig_config_add(self): - """Test adding a row to a table. - """ - command = 'add' - set_module_args(dict( - client=dict( - version='v1', - address='127.0.0.1', - scheme='http', - username='alice', - password='foobar' - ), - add=True, - table='misc.dns_servers', - columns=dict( - server='192.168.1.23' - ))) - fixture = '%s_%s.%s' % (os.path.basename(__file__).split('.')[0], - command, 'json') - result = self.execute_module(changed=True, fixture=fixture, - command=command) - self.assertTrue(command in result) - - def test_ig_config_delete(self): - """Test deleting all rows in a table. - """ - command = 'delete' - set_module_args(dict( - client=dict( - version='v1', - address='127.0.0.1', - scheme='http', - username='alice', - password='foobar' - ), - delete=True, - table='misc.dns_servers', - )) - fixture = '%s_%s.%s' % (os.path.basename(__file__).split('.')[0], - command, 'json') - result = self.execute_module(changed=True, fixture=fixture, - command=command) - self.assertTrue(command in result) - - def test_ig_config_get(self): - """Test returning all rows in a table. - """ - command = 'get' - set_module_args(dict( - client=dict( - version='v1', - address='127.0.0.1', - scheme='http', - username='alice', - password='foobar' - ), - get=True, - table='misc.dns_servers', - )) - fixture = '%s_%s.%s' % (os.path.basename(__file__).split('.')[0], - command, 'json') - result = self.execute_module(changed=True, fixture=fixture, - command=command) - self.assertTrue(command in result) - - def test_ig_config_modify(self): - """Test modifying a row. - """ - command = 'modify' - set_module_args(dict( - client=dict( - version='v1', - address='127.0.0.1', - scheme='http', - username='alice', - password='foobar' - ), - modify=True, - table='misc.unitname', - columns=dict( - unitname='"Testapi - 1541699806"' - ))) - fixture = '%s_%s.%s' % (os.path.basename(__file__).split('.')[0], - command, 'json') - result = self.execute_module(changed=True, fixture=fixture, - command=command) - self.assertTrue(command in result) - - def test_ig_config_revert(self): - """Test reverting the preliminary configuration. - """ - command = 'revert' - set_module_args(dict( - client=dict( - version='v1', - address='127.0.0.1', - scheme='http', - username='alice', - password='foobar' - ), - revert=True - )) - fixture = '%s_%s.%s' % (os.path.basename(__file__).split('.')[0], - command, 'json') - result = self.execute_module(changed=True, fixture=fixture, - command=command) - self.assertTrue(command in result) - - def test_ig_config_factory(self): - """Test loading factory defaults. - """ - command = 'factory' - set_module_args(dict( - client=dict( - version='v1', - address='127.0.0.1', - scheme='http', - username='alice', - password='foobar' - ), - factory=True - )) - fixture = '%s_%s.%s' % (os.path.basename(__file__).split('.')[0], - command, 'json') - result = self.execute_module(changed=True, fixture=fixture, - command=command) - self.assertTrue(command in result) - - def test_ig_config_store(self): - """Test storing the preliminary configuration. - """ - command = 'store' - set_module_args(dict( - client=dict( - version='v1', - address='127.0.0.1', - scheme='http', - username='alice', - password='foobar' - ), - store=True - )) - fixture = '%s_%s.%s' % (os.path.basename(__file__).split('.')[0], - command, 'json') - result = self.execute_module(changed=True, fixture=fixture, - command=command) - self.assertTrue(command in result) - - def test_ig_config_download(self): - """Test doing backup of configuration database. - """ - command = 'store' - set_module_args(dict( - client=dict( - version='v1', - address='127.0.0.1', - scheme='http', - username='alice', - password='foobar' - ), - download=True - )) - fixture = '%s_%s.%s' % (os.path.basename(__file__).split('.')[0], - command, 'json') - result = self.execute_module(changed=True, fixture=fixture, - command=command) - self.assertTrue(command in result) - - def test_ig_config_return_rowid(self): - """Test retrieving a row id. - """ - command = 'return_rowid' - set_module_args(dict( - client=dict( - version='v1', - address='127.0.0.1', - scheme='http', - username='alice', - password='foobar' - ), - return_rowid=True, - table='network.local_nets', - columns=dict( - interface='eth0' - ))) - fixture = '%s_%s.%s' % (os.path.basename(__file__).split('.')[0], - command, 'json') - result = self.execute_module(changed=True, fixture=fixture, - command=command) - self.assertTrue(command in result) diff --git a/test/units/modules/network/ingate/test_ig_unit_information.py b/test/units/modules/network/ingate/test_ig_unit_information.py deleted file mode 100644 index 21d6268d4b..0000000000 --- a/test/units/modules/network/ingate/test_ig_unit_information.py +++ /dev/null @@ -1,56 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright: (c) 2018, Ingate Systems AB -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os - -from units.compat.mock import patch -from ansible.modules.network.ingate import ig_unit_information -from units.modules.utils import set_module_args -from .ingate_module import TestIngateModule, load_fixture - - -class TestUnitInformationModule(TestIngateModule): - - module = ig_unit_information - - def setUp(self): - super(TestUnitInformationModule, self).setUp() - - self.mock_make_request = patch('ansible.modules.network.ingate.' - 'ig_unit_information.make_request') - self.make_request = self.mock_make_request.start() - - self.mock_is_ingatesdk_installed = patch('ansible.modules.network.ingate.' - 'ig_unit_information.is_ingatesdk_installed') - self.is_ingatesdk_installed = self.mock_is_ingatesdk_installed.start() - - def tearDown(self): - super(TestUnitInformationModule, self).tearDown() - self.mock_make_request.stop() - self.mock_is_ingatesdk_installed.stop() - - def load_fixtures(self, fixture=None, command=None, changed=False): - self.make_request.side_effect = [load_fixture(fixture)] - self.is_ingatesdk_installed.return_value = True - - def test_ig_unit_information(self): - set_module_args( - dict( - client=dict( - version='v1', - address='127.0.0.1', - scheme='http', - username='alice', - password='foobar' - ) - ) - ) - - fixture = '%s.%s' % (os.path.basename(__file__).split('.')[0], 'json') - result = self.execute_module(fixture=fixture) - self.assertTrue('unit-information' in result) diff --git a/test/units/modules/network/ironware/fixtures/dir b/test/units/modules/network/ironware/fixtures/dir deleted file mode 100644 index 8d328d45cc..0000000000 --- a/test/units/modules/network/ironware/fixtures/dir +++ /dev/null @@ -1 +0,0 @@ -Directory of /flash/ diff --git a/test/units/modules/network/ironware/fixtures/ironware_config_config.cfg b/test/units/modules/network/ironware/fixtures/ironware_config_config.cfg deleted file mode 100644 index 6a509a3e0b..0000000000 --- a/test/units/modules/network/ironware/fixtures/ironware_config_config.cfg +++ /dev/null @@ -1,12 +0,0 @@ -! -hostname router -! -interface ethernet 1/1 - ip address 1.2.3.4 255.255.255.0 - port-name test string - enable -! -interface ethernet 1/2 - ip address 6.7.8.9 255.255.255.0 - port-name test string -! diff --git a/test/units/modules/network/ironware/fixtures/ironware_config_defaults.cfg b/test/units/modules/network/ironware/fixtures/ironware_config_defaults.cfg deleted file mode 100644 index b60e1c9413..0000000000 --- a/test/units/modules/network/ironware/fixtures/ironware_config_defaults.cfg +++ /dev/null @@ -1,13 +0,0 @@ -! -hostname router -! -interface ethernet 1/1 - ip address 1.2.3.4 255.255.255.0 - port-name test string - enable -! -interface ethernet 1/2 - ip address 6.7.8.9 255.255.255.0 - port-name test string - disable -! diff --git a/test/units/modules/network/ironware/fixtures/ironware_config_src.cfg b/test/units/modules/network/ironware/fixtures/ironware_config_src.cfg deleted file mode 100644 index 1ca1d600ad..0000000000 --- a/test/units/modules/network/ironware/fixtures/ironware_config_src.cfg +++ /dev/null @@ -1,10 +0,0 @@ -! -hostname foo -! -interface ethernet 1/1 - no ip address -! -interface ethernet 1/2 - ip address 6.7.8.9 255.255.255.0 - port-name test string -! diff --git a/test/units/modules/network/ironware/fixtures/show_chassis b/test/units/modules/network/ironware/fixtures/show_chassis deleted file mode 100644 index 05ee95111a..0000000000 --- a/test/units/modules/network/ironware/fixtures/show_chassis +++ /dev/null @@ -1,45 +0,0 @@ -*** MLXe 4-slot Chassis *** - ----POWERS --- -Power 1: (23-0000129-02 BMG2J50F014 - AC 1800W): Installed (OK) -Power 2: ( 32006000 113186101409 - AC 1200W): Installed (OK) -Power 3: not present -Power 4: not present -Total power budget for chassis = 3000 W -Total power used by system core = 450 W -Total power used by LPs = 406 W -Total power available = 2144 W -Slot Power-On Priority and Power Usage: -Slot1 pri=1 module type=NI-MLX-10Gx8-M 8-port 10GbE (M) Module power usage=246W -Slot2 pri=1 module type=BR-MLX-1GFx24-X 24-port 1GbE SFP Module power usage=160W - ---- FANS --- -Back fan A-1: Status = OK, Speed = LOW (50%) -Back fan A-2: Status = OK, Speed = LOW (50%) -Back fan B-1: Status = OK, Speed = LOW (50%) -Back fan B-2: Status = OK, Speed = LOW (50%) -Back fan C-1: Status = OK, Speed = LOW (50%) -Back fan C-2: Status = OK, Speed = LOW (50%) -Back fan D-1: Status = OK, Speed = LOW (50%) -Back fan D-2: Status = OK, Speed = LOW (50%) - ---- TEMPERATURE READINGS --- -Active Mgmt Module: 33.500C 44.375C -Standby Mgmt Module: 35.500C 47.250C -SFM1: FE1:34.625C -SFM2: FE1:37.0C -SFM3: not present -LP1 Sensor1: 37.500C -LP1 Sensor2: 38.375C -LP1 Sensor3: 34.750C -LP1 Sensor4: 33.0C -LP1 Sensor5: 39.125C -LP1 Sensor6: 39.0C -LP1 Sensor7: 43.0C -LP2 Sensor1: 47.500C -LP2 Sensor2: 43.500C -LP2 Sensor3: 38.625C -Fans are in auto mode (current speed is LOW (50%)). Temperature monitoring poll period is 60 seconds. - ---- MISC INFO --- -Backplane EEPROM MAC Address: 0024.38ae.ff00 diff --git a/test/units/modules/network/ironware/fixtures/show_interfaces b/test/units/modules/network/ironware/fixtures/show_interfaces deleted file mode 100644 index f54e3a10bc..0000000000 --- a/test/units/modules/network/ironware/fixtures/show_interfaces +++ /dev/null @@ -1,1053 +0,0 @@ -10GigabitEthernet1/1 is down, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is 10GigabitEthernet, address is 0024.38ae.ff00 (bia 0024.38ae.ff00) - Configured speed 10Gbit, actual unknown, configured duplex fdx, actual unknown - Member of Control VLAN 4095, VLAN 4040 (untagged), port is in untagged mode, port state is Disabled - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Member of active trunk ports 1/1, primary port - Member of configured trunk ports 1/1, primary port - No port name - Port is not enabled to receive all vlan packets for pbr - Internet address is 10.69.1.6/30, MTU 9216 bytes, encapsulation ethernet - Configured BW is 10000000 kbps - Openflow: Disabled, Openflow Index 1 - Cluster L2 protocol forwarding enabled - 30 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 30 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 305252868 packets input, 43293167239 bytes, 0 no buffer - Received 75 broadcasts, 23206249 multicasts, 282046544 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 305252868 packets, Sent to TM 305252569 packets - NP Ingress dropped 299 packets - 294473220 packets output, 27084980920 bytes, 0 underruns - Transmitted 93593 broadcasts, 3157540 multicasts, 291222087 unicasts - 0 output errors, 0 collisions - NP transmitted 294473223 packets, Received from TM 294473223 packets -10GigabitEthernet1/2 is up, line protocol is up - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is 10GigabitEthernet, address is 0024.38ae.ff01 (bia 0024.38ae.ff01) - Configured speed 10Gbit, actual 10Gbit, configured duplex fdx, actual fdx - Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Forwarding - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - Port name is To ces01.lab e2/1 - Port is not enabled to receive all vlan packets for pbr - Internet address is 10.69.1.77/30, MTU 9216 bytes, encapsulation ethernet - Configured BW is 10000000 kbps - Openflow: Disabled, Openflow Index 2 - Cluster L2 protocol forwarding enabled - 30 second input rate: 1316 bits/sec, 1 packets/sec, 0.00% utilization - 30 second output rate: 529 bits/sec, 0 packets/sec, 0.00% utilization - 28253040 packets input, 3837442974 bytes, 0 no buffer - Received 36030 broadcasts, 1176576 multicasts, 27040434 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 28253040 packets, Sent to TM 28252946 packets - NP Ingress dropped 94 packets - 38399732 packets output, 4357868636 bytes, 0 underruns - Transmitted 36067 broadcasts, 1676300 multicasts, 36687365 unicasts - 0 output errors, 0 collisions - NP transmitted 38399732 packets, Received from TM 38399732 packets -10GigabitEthernet1/3 is down, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is 10GigabitEthernet, address is 0024.38ae.ff02 (bia 0024.38ae.ff02) - Configured speed 10Gbit, actual unknown, configured duplex fdx, actual unknown - Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - Port name is To ces02.lab e2/1 - Port is not enabled to receive all vlan packets for pbr - Internet address is 10.69.1.73/30, MTU 9216 bytes, encapsulation ethernet - Configured BW is 10000000 kbps - Openflow: Disabled, Openflow Index 3 - Cluster L2 protocol forwarding enabled - 30 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 30 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 4586556 packets input, 412859576 bytes, 0 no buffer - Received 10388 broadcasts, 326374 multicasts, 4249794 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 4586556 packets, Sent to TM 4586556 packets - NP Ingress dropped 0 packets - 4913588 packets output, 475340051 bytes, 0 underruns - Transmitted 10390 broadcasts, 326389 multicasts, 4576809 unicasts - 0 output errors, 0 collisions - NP transmitted 4913590 packets, Received from TM 4913590 packets -10GigabitEthernet1/4 is down, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is 10GigabitEthernet, address is 0024.38ae.ff03 (bia 0024.38ae.ff03) - Configured speed 10Gbit, actual unknown, configured duplex fdx, actual unknown - Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Enabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 10000000 kbps - Openflow: Disabled, Openflow Index 4 - Cluster L2 protocol forwarding enabled - 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 895100 packets input, 98673879 bytes, 0 no buffer - Received 141 broadcasts, 522145 multicasts, 372814 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 895100 packets, Sent to TM 895074 packets - NP Ingress dropped 26 packets - 279669 packets output, 27849215 bytes, 0 underruns - Transmitted 7104 broadcasts, 17011 multicasts, 255554 unicasts - 0 output errors, 0 collisions - NP transmitted 279669 packets, Received from TM 779636 packets -10GigabitEthernet1/5 is disabled, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is 10GigabitEthernet, address is 0024.38ae.ff04 (bia 0024.38ae.ff04) - Configured speed 10Gbit, actual unknown, configured duplex fdx, actual unknown - Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 10000000 kbps - Openflow: Disabled, Openflow Index 5 - Cluster L2 protocol forwarding enabled - 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 0 packets input, 0 bytes, 0 no buffer - Received 0 broadcasts, 0 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 0 packets, Sent to TM 0 packets - NP Ingress dropped 0 packets - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 0 packets, Received from TM 0 packets -10GigabitEthernet1/6 is disabled, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is 10GigabitEthernet, address is 0024.38ae.ff05 (bia 0024.38ae.ff05) - Configured speed 10Gbit, actual unknown, configured duplex fdx, actual unknown - Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 10000000 kbps - Openflow: Disabled, Openflow Index 6 - Cluster L2 protocol forwarding enabled - 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 0 packets input, 0 bytes, 0 no buffer - Received 0 broadcasts, 0 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 0 packets, Sent to TM 0 packets - NP Ingress dropped 0 packets - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 0 packets, Received from TM 0 packets -10GigabitEthernet1/7 is disabled, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is 10GigabitEthernet, address is 0024.38ae.ff06 (bia 0024.38ae.ff06) - Configured speed 10Gbit, actual unknown, configured duplex fdx, actual unknown - Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 10000000 kbps - Openflow: Disabled, Openflow Index 7 - Cluster L2 protocol forwarding enabled - 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 0 packets input, 0 bytes, 0 no buffer - Received 0 broadcasts, 0 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 0 packets, Sent to TM 0 packets - NP Ingress dropped 0 packets - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 0 packets, Received from TM 0 packets -10GigabitEthernet1/8 is disabled, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is 10GigabitEthernet, address is 0024.38ae.ff07 (bia 0024.38ae.ff07) - Configured speed 10Gbit, actual unknown, configured duplex fdx, actual unknown - Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 10000000 kbps - Openflow: Disabled, Openflow Index 8 - Cluster L2 protocol forwarding enabled - 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 0 packets input, 0 bytes, 0 no buffer - Received 0 broadcasts, 0 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 0 packets, Sent to TM 0 packets - NP Ingress dropped 0 packets - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 0 packets, Received from TM 0 packets -GigabitEthernet2/1 is up, line protocol is up - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is GigabitEthernet, address is 0024.38ae.ff30 (bia 0024.38ae.ff30) - Configured fiber speed auto, configured copper speed auto, actual 1Gbit, configured fiber duplex fdx, configured copper duplex fdx, actual fdx - Member of Control VLAN 4095, 5 L2 VLAN(S) (tagged), port is in tagged mode, port state is Forwarding - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor enabled (input and output) - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 1000000 kbps - Openflow: Disabled, Openflow Index 49 - Cluster L2 protocol forwarding enabled - 300 second input rate: 195 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 34 bits/sec, 0 packets/sec, 0.00% utilization - 132989 packets input, 46356032 bytes, 0 no buffer - Received 6505 broadcasts, 126484 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 132988 packets, Sent to TM 54470 packets - NP Ingress dropped 78518 packets - 54203 packets output, 7100593 bytes, 0 underruns - Transmitted 0 broadcasts, 54203 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 54203 packets, Received from TM 54203 packets -GigabitEthernet2/2 is up, line protocol is up - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is GigabitEthernet, address is 0024.38ae.ff31 (bia 0024.38ae.ff31) - Configured fiber speed auto, configured copper speed auto, actual 1Gbit, configured fiber duplex fdx, configured copper duplex fdx, actual fdx - Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Forwarding - STP configured to OFF, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - Port name is To MikroTik-04 - ether1 - 10.69.5.44 - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 1000000 kbps - Openflow: Disabled, Openflow Index 50 - Cluster L2 protocol forwarding enabled - 30 second input rate: 65 bits/sec, 0 packets/sec, 0.00% utilization - 30 second output rate: 844 bits/sec, 0 packets/sec, 0.00% utilization - 486528 packets input, 60646920 bytes, 0 no buffer - Received 94393 broadcasts, 377560 multicasts, 14575 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 486504 packets, Sent to TM 475558 packets - NP Ingress dropped 10946 packets - 1451686 packets output, 152474031 bytes, 0 underruns - Transmitted 92204 broadcasts, 1344911 multicasts, 14571 unicasts - 0 output errors, 0 collisions - NP transmitted 1451686 packets, Received from TM 1451686 packets -GigabitEthernet2/3 is disabled, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is GigabitEthernet, address is 0024.38ae.ff32 (bia 0024.38ae.ff32) - Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown - Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled - STP configured to OFF, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 1000000 kbps - Openflow: Disabled, Openflow Index 51 - Cluster L2 protocol forwarding enabled - 30 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 30 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 0 packets input, 0 bytes, 0 no buffer - Received 0 broadcasts, 0 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 0 packets, Sent to TM 0 packets - NP Ingress dropped 0 packets - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 0 packets, Received from TM 0 packets -GigabitEthernet2/4 is down, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is GigabitEthernet, address is 0024.38ae.ff33 (bia 0024.38ae.ff33) - Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown - Member of Control VLAN 4095, VLAN 5 (untagged), 1 L2 VLANS (tagged), - port is in dual mode, port state is Disabled - STP configured to OFF, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - Port name is CANCELLATION TEST - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 1000000 kbps - Openflow: Disabled, Openflow Index 52 - Cluster L2 protocol forwarding enabled - 30 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 30 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 0 packets input, 0 bytes, 0 no buffer - Received 0 broadcasts, 0 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 0 packets, Sent to TM 0 packets - NP Ingress dropped 0 packets - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 0 packets, Received from TM 0 packets -GigabitEthernet2/5 is disabled, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is GigabitEthernet, address is 0024.38ae.ff34 (bia 0024.38ae.ff34) - Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown - Member of Control VLAN 4095, 1 L2 VLAN(S) (tagged), port is in tagged mode, port state is Disabled - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 1000000 kbps - Openflow: Disabled, Openflow Index 53 - Cluster L2 protocol forwarding enabled - 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 0 packets input, 0 bytes, 0 no buffer - Received 0 broadcasts, 0 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 0 packets, Sent to TM 0 packets - NP Ingress dropped 0 packets - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 0 packets, Received from TM 0 packets -GigabitEthernet2/6 is disabled, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is GigabitEthernet, address is 0024.38ae.ff35 (bia 0024.38ae.ff35) - Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown - Member of Control VLAN 4095, 1 L2 VLAN(S) (tagged), port is in tagged mode, port state is Disabled - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 1000000 kbps - Openflow: Disabled, Openflow Index 54 - Cluster L2 protocol forwarding enabled - 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 0 packets input, 0 bytes, 0 no buffer - Received 0 broadcasts, 0 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 0 packets, Sent to TM 0 packets - NP Ingress dropped 0 packets - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 0 packets, Received from TM 0 packets -GigabitEthernet2/7 is disabled, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is GigabitEthernet, address is 0024.38ae.ff36 (bia 0024.38ae.ff36) - Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown - Member of Control VLAN 4095, VLAN 6 (untagged), port is in untagged mode, port state is Disabled - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 1000000 kbps - Openflow: Disabled, Openflow Index 55 - Cluster L2 protocol forwarding enabled - 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 0 packets input, 0 bytes, 0 no buffer - Received 0 broadcasts, 0 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 0 packets, Sent to TM 0 packets - NP Ingress dropped 0 packets - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 0 packets, Received from TM 0 packets -GigabitEthernet2/8 is disabled, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is GigabitEthernet, address is 0024.38ae.ff37 (bia 0024.38ae.ff37) - Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown - Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 1000000 kbps - Openflow: Disabled, Openflow Index 56 - Cluster L2 protocol forwarding enabled - 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 0 packets input, 0 bytes, 0 no buffer - Received 0 broadcasts, 0 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 0 packets, Sent to TM 0 packets - NP Ingress dropped 0 packets - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 0 packets, Received from TM 0 packets -GigabitEthernet2/9 is disabled, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is GigabitEthernet, address is 0024.38ae.ff38 (bia 0024.38ae.ff38) - Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown - Member of Control VLAN 4095, 1 L2 VLAN(S) (tagged), port is in tagged mode, port state is Disabled - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 1000000 kbps - Openflow: Disabled, Openflow Index 57 - Cluster L2 protocol forwarding enabled - 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 0 packets input, 0 bytes, 0 no buffer - Received 0 broadcasts, 0 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 0 packets, Sent to TM 0 packets - NP Ingress dropped 0 packets - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 0 packets, Received from TM 0 packets -GigabitEthernet2/10 is disabled, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is GigabitEthernet, address is 0024.38ae.ff39 (bia 0024.38ae.ff39) - Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown - Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 1000000 kbps - Openflow: Disabled, Openflow Index 58 - Cluster L2 protocol forwarding enabled - 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 0 packets input, 0 bytes, 0 no buffer - Received 0 broadcasts, 0 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 0 packets, Sent to TM 0 packets - NP Ingress dropped 0 packets - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 0 packets, Received from TM 0 packets -GigabitEthernet2/11 is disabled, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is GigabitEthernet, address is 0024.38ae.ff3a (bia 0024.38ae.ff3a) - Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown - Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 1000000 kbps - Openflow: Disabled, Openflow Index 59 - Cluster L2 protocol forwarding enabled - 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 0 packets input, 0 bytes, 0 no buffer - Received 0 broadcasts, 0 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 0 packets, Sent to TM 0 packets - NP Ingress dropped 0 packets - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 0 packets, Received from TM 0 packets -GigabitEthernet2/12 is disabled, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is GigabitEthernet, address is 0024.38ae.ff3b (bia 0024.38ae.ff3b) - Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown - Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 1000000 kbps - Openflow: Disabled, Openflow Index 60 - Cluster L2 protocol forwarding enabled - 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 0 packets input, 0 bytes, 0 no buffer - Received 0 broadcasts, 0 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 0 packets, Sent to TM 0 packets - NP Ingress dropped 0 packets - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 0 packets, Received from TM 0 packets -GigabitEthernet2/13 is down, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is GigabitEthernet, address is 0024.38ae.ff3c (bia 0024.38ae.ff3c) - Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown - Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 1000000 kbps - Openflow: Disabled, Openflow Index 61 - Cluster L2 protocol forwarding enabled - 30 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 30 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 0 packets input, 0 bytes, 0 no buffer - Received 0 broadcasts, 0 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 0 packets, Sent to TM 0 packets - NP Ingress dropped 0 packets - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 0 packets, Received from TM 0 packets -GigabitEthernet2/14 is disabled, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is GigabitEthernet, address is 0024.38ae.ff3d (bia 0024.38ae.ff3d) - Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown - Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 1000000 kbps - Openflow: Disabled, Openflow Index 62 - Cluster L2 protocol forwarding enabled - 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 0 packets input, 0 bytes, 0 no buffer - Received 0 broadcasts, 0 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 0 packets, Sent to TM 0 packets - NP Ingress dropped 0 packets - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 0 packets, Received from TM 0 packets -GigabitEthernet2/15 is disabled, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is GigabitEthernet, address is 0024.38ae.ff3e (bia 0024.38ae.ff3e) - Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown - Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 1000000 kbps - Openflow: Disabled, Openflow Index 63 - Cluster L2 protocol forwarding enabled - 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 0 packets input, 0 bytes, 0 no buffer - Received 0 broadcasts, 0 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 0 packets, Sent to TM 0 packets - NP Ingress dropped 0 packets - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 0 packets, Received from TM 0 packets -GigabitEthernet2/16 is disabled, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is GigabitEthernet, address is 0024.38ae.ff3f (bia 0024.38ae.ff3f) - Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown - Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 1000000 kbps - Openflow: Disabled, Openflow Index 64 - Cluster L2 protocol forwarding enabled - 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 0 packets input, 0 bytes, 0 no buffer - Received 0 broadcasts, 0 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 0 packets, Sent to TM 0 packets - NP Ingress dropped 0 packets - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 0 packets, Received from TM 0 packets -GigabitEthernet2/17 is disabled, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is GigabitEthernet, address is 0024.38ae.ff40 (bia 0024.38ae.ff40) - Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown - Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 1000000 kbps - Openflow: Disabled, Openflow Index 65 - Cluster L2 protocol forwarding enabled - 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 0 packets input, 0 bytes, 0 no buffer - Received 0 broadcasts, 0 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 0 packets, Sent to TM 0 packets - NP Ingress dropped 0 packets - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 0 packets, Received from TM 0 packets -GigabitEthernet2/18 is disabled, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is GigabitEthernet, address is 0024.38ae.ff41 (bia 0024.38ae.ff41) - Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown - Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 1000000 kbps - Openflow: Disabled, Openflow Index 66 - Cluster L2 protocol forwarding enabled - 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 0 packets input, 0 bytes, 0 no buffer - Received 0 broadcasts, 0 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 0 packets, Sent to TM 0 packets - NP Ingress dropped 0 packets - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 0 packets, Received from TM 0 packets -GigabitEthernet2/19 is disabled, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is GigabitEthernet, address is 0024.38ae.ff42 (bia 0024.38ae.ff42) - Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown - Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 1000000 kbps - Openflow: Disabled, Openflow Index 67 - Cluster L2 protocol forwarding enabled - 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 0 packets input, 0 bytes, 0 no buffer - Received 0 broadcasts, 0 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 0 packets, Sent to TM 0 packets - NP Ingress dropped 0 packets - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 0 packets, Received from TM 0 packets -GigabitEthernet2/20 is up, line protocol is up - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is GigabitEthernet, address is 0024.38ae.ff43 (bia 0024.38ae.ff43) - Configured fiber speed auto, configured copper speed auto, actual 1Gbit, configured fiber duplex fdx, configured copper duplex fdx, actual fdx - Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Forwarding - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror enabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 1000000 kbps - Openflow: Disabled, Openflow Index 68 - Cluster L2 protocol forwarding enabled - 300 second input rate: 35 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 168 bits/sec, 0 packets/sec, 0.00% utilization - 54203 packets input, 7154796 bytes, 0 no buffer - Received 0 broadcasts, 54203 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 54203 packets, Sent to TM 54203 packets - NP Ingress dropped 0 packets - 162876 packets output, 34244811 bytes, 0 underruns - Transmitted 0 broadcasts, 162876 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 162876 packets, Received from TM 162876 packets -GigabitEthernet2/21 is up, line protocol is up - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is GigabitEthernet, address is 0024.38ae.ff44 (bia 0024.38ae.ff44) - Configured fiber speed auto, configured copper speed auto, actual 1Gbit, configured fiber duplex fdx, configured copper duplex fdx, actual fdx - Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Forwarding - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 1000000 kbps - Openflow: Disabled, Openflow Index 69 - Cluster L2 protocol forwarding enabled - 300 second input rate: 168 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 35 bits/sec, 0 packets/sec, 0.00% utilization - 162876 packets input, 34244811 bytes, 0 no buffer - Received 0 broadcasts, 162876 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 162876 packets, Sent to TM 162876 packets - NP Ingress dropped 0 packets - 54203 packets output, 7154796 bytes, 0 underruns - Transmitted 0 broadcasts, 54203 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 54203 packets, Received from TM 54203 packets -GigabitEthernet2/22 is disabled, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is GigabitEthernet, address is 0024.38ae.ff45 (bia 0024.38ae.ff45) - Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown - Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 1000000 kbps - Openflow: Disabled, Openflow Index 70 - Cluster L2 protocol forwarding enabled - 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 0 packets input, 0 bytes, 0 no buffer - Received 0 broadcasts, 0 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 0 packets, Sent to TM 0 packets - NP Ingress dropped 0 packets - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 0 packets, Received from TM 0 packets -GigabitEthernet2/23 is disabled, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is GigabitEthernet, address is 0024.38ae.ff46 (bia 0024.38ae.ff46) - Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown - Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 1000000 kbps - Openflow: Disabled, Openflow Index 71 - Cluster L2 protocol forwarding enabled - 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 0 packets input, 0 bytes, 0 no buffer - Received 0 broadcasts, 0 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 0 packets, Sent to TM 0 packets - NP Ingress dropped 0 packets - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 0 packets, Received from TM 0 packets -GigabitEthernet2/24 is up, line protocol is up - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is GigabitEthernet, address is 0024.38ae.ff47 (bia 0024.38ae.ff47) - Configured fiber speed auto, configured copper speed auto, actual 1Gbit, configured fiber duplex fdx, configured copper duplex fdx, actual fdx - Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Forwarding - STP configured to ON, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - mirror disabled, monitor disabled - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 9216 bytes, encapsulation ethernet - Configured BW is 1000000 kbps - Openflow: Disabled, Openflow Index 72 - Cluster L2 protocol forwarding enabled - 300 second input rate: 194 bits/sec, 0 packets/sec, 0.00% utilization - 300 second output rate: 35 bits/sec, 0 packets/sec, 0.00% utilization - 586851 packets input, 45550574 bytes, 0 no buffer - Received 523921 broadcasts, 62930 multicasts, 0 unicasts - 0 input errors, 0 CRC, 0 frame, 0 ignored - 0 runts, 0 giants - NP received 586839 packets, Sent to TM 586839 packets - NP Ingress dropped 0 packets - 54203 packets output, 7154796 bytes, 0 underruns - Transmitted 0 broadcasts, 54203 multicasts, 0 unicasts - 0 output errors, 0 collisions - NP transmitted 54203 packets, Received from TM 54203 packets -Ethernetmgmt1 is disabled, line protocol is down - Loopback: None - STP Root Guard is disabled, STP BPDU Guard is disabled - Hardware is Ethernet, address is 0024.38ae.ff00 (bia 0024.38ae.ff00) - Configured speed 1Gbit, actual unknown, configured duplex fdx, actual unknown - Member of VLAN 0 (untagged), port is in untagged mode, port state is Disabled - STP configured to OFF, Priority is level0, flow control enabled - Priority force disabled, Drop precedence level 0, Drop precedence force disabled - dhcp-snooping-trust configured to OFF - LACP BPDU Forwarding:Disabled - LLDP BPDU Forwarding:Disabled - Not member of any active trunks - Not member of any configured trunks - No port name - Port is not enabled to receive all vlan packets for pbr - MTU 1548 bytes, encapsulation ethernet - Openflow: Disabled, Openflow Index 1537 - Cluster L2 protocol forwarding disabled - 300 second input rate: 1136 bits/sec, 1 packets/sec, 0.00% utilization - 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization - 33204752 packets input, 2448695549 bytes, 0 no buffer - Received 1788642 broadcasts, 29469988 multicasts, 1946122 unicasts - 0 packets output, 0 bytes, 0 underruns - Transmitted 0 broadcasts, 0 multicasts, 0 unicasts -Loopback1 is up, line protocol is up - Hardware is Loopback - No port name - Internet address is 10.69.0.6/32, IP MTU 1500 bytes, encapsulation LOOPBACK diff --git a/test/units/modules/network/ironware/fixtures/show_ipv6_interface b/test/units/modules/network/ironware/fixtures/show_ipv6_interface deleted file mode 100644 index 51e293b755..0000000000 --- a/test/units/modules/network/ironware/fixtures/show_ipv6_interface +++ /dev/null @@ -1,5 +0,0 @@ -Type Codes - I:ISIS O:OSPF R:RIP -Interface Status/Protocol IGPs IPv6 Address VRF -eth 1/1 up/up fe80::224:38ff:feae:ff00 default-vrf - 2001:db8::1/64 - 2001:db8::/64[Anycast] diff --git a/test/units/modules/network/ironware/fixtures/show_lldp_neighbors b/test/units/modules/network/ironware/fixtures/show_lldp_neighbors deleted file mode 100644 index 3958a555ab..0000000000 --- a/test/units/modules/network/ironware/fixtures/show_lldp_neighbors +++ /dev/null @@ -1,3 +0,0 @@ -Total number of LLDP neighbors on all ports: 6 -Lcl Port Chassis ID Port ID Port Description System Name -1/2 748e.f863.3600 748e.f863.3631 10GigabitEthernet2/1 ces01.lab diff --git a/test/units/modules/network/ironware/fixtures/show_memory b/test/units/modules/network/ironware/fixtures/show_memory deleted file mode 100644 index 5a7a84af49..0000000000 --- a/test/units/modules/network/ironware/fixtures/show_memory +++ /dev/null @@ -1,30 +0,0 @@ -==================================================================== -NetIron MLX active MP slot 5: -Total SDRAM : 4294967295 bytes -Available Memory : 3806097408 bytes -Available Memory (%): 88 percent -Free Physical Pages : 925008 pages - -Malloc statistics: total 633606628 -OS malloc count: 2437418082 -OS malloc fail: 0 -OS free count: 2437404486 -OS free fail: 0 -diff: 13596 -==================================================================== -NetIron MLX standby MP slot 6: -Total SDRAM : 4294967295 bytes -Available Memory : 3784171520 bytes -Available Memory (%): 88 percent -Free Physical Pages : 917843 pages - -==================================================================== -NetIron MLX LP SL 1: -Total SDRAM : 1073741824 bytes -Available Memory : 485294080 bytes -Available Memory (%): 45 percent -==================================================================== -NetIron MLX LP SL 2: -Total SDRAM : 1073741824 bytes -Available Memory : 561364992 bytes -Available Memory (%): 52 percent diff --git a/test/units/modules/network/ironware/fixtures/show_mpls_lsp_detail b/test/units/modules/network/ironware/fixtures/show_mpls_lsp_detail deleted file mode 100644 index 7f2e7de947..0000000000 --- a/test/units/modules/network/ironware/fixtures/show_mpls_lsp_detail +++ /dev/null @@ -1,32 +0,0 @@ -LSP LSP1, to 192.0.2.1 - From: (n/a), admin: DOWN, status: DOWN - revert timer: 300 seconds - Times primary LSP goes up since enabled: 1 - Metric: 0, Adaptive - Maximum retries: NONE, no. of retries: 0 - Pri. path: NONE, up: no, active: no - Setup priority: 7, hold priority: 0, cos 1 - Max rate: 0 kbps, mean rate: 0 kbps, max burst: 0 bytes - CSPF-computation-mode configured: use te-metric(global) - ReoptimizeTimer configured 1800 - Tie breaking: random, hop limit: 0 - LDP tunneling enabled: yes - Soft preemption enabled: no - Active Path attributes: - Fast Reroute: facility backup desired, node protection desired - Backup LSP: DOWN - Global revertiveness enabled with hold time 5 secs - FRR Forwarding State: Pri(down), Backup(down) -LSP LSP3, to 192.0.2.3 - From: (n/a), admin: DOWN, status: DOWN - Times primary LSP goes up since enabled: 0 - Metric: 0 - Maximum retries: NONE, no. of retries: 0 - Pri. path: NONE, up: no, active: no - Setup priority: 7, hold priority: 0 - Max rate: 0 kbps, mean rate: 0 kbps, max burst: 0 bytes - CSPF-computation-mode configured: use te-metric(global) - Tie breaking: random, hop limit: 0 - LDP tunneling enabled: no - Soft preemption enabled: no - Active Path attributes: diff --git a/test/units/modules/network/ironware/fixtures/show_mpls_vll-local_detail b/test/units/modules/network/ironware/fixtures/show_mpls_vll-local_detail deleted file mode 100644 index d4a3b918eb..0000000000 --- a/test/units/modules/network/ironware/fixtures/show_mpls_vll-local_detail +++ /dev/null @@ -1,7 +0,0 @@ -VLL TEST-LOCAL VLL-ID 1 IFL-ID -- - State: DOWN - endpoint port is down - End-point 1: untagged e 2/8 - COS: -- - End-point 2: tagged vlan 5 e 2/9 - COS: -- - Extended Counters: Enabled diff --git a/test/units/modules/network/ironware/fixtures/show_mpls_vll_detail b/test/units/modules/network/ironware/fixtures/show_mpls_vll_detail deleted file mode 100644 index e010042e91..0000000000 --- a/test/units/modules/network/ironware/fixtures/show_mpls_vll_detail +++ /dev/null @@ -1,19 +0,0 @@ -VLL TEST-VLL, VC-ID 111, VLL-INDEX 4 - - End-point : tagged vlan 2005 e 2/1 - End-Point state : Up - MCT state : None - IFL-ID : -- - Local VC type : untag - Local VC MTU : 9190 - COS : 1 - Extended Counters: Enabled - - Vll-Peer : 192.0.2.1 - State : DOWN - PW is Down (Reason:Wait for peer label) - Remote VC type : -- Remote VC MTU : -- - Local label : -- Remote label : -- - Local group-id : 0 Remote group-id: -- - Tunnel LSP : lsp1 (tnl1) - MCT Status TLV : -- - LSPs assigned : No LSPs assigned diff --git a/test/units/modules/network/ironware/fixtures/show_mpls_vpls_detail b/test/units/modules/network/ironware/fixtures/show_mpls_vpls_detail deleted file mode 100644 index 33fa9414b8..0000000000 --- a/test/units/modules/network/ironware/fixtures/show_mpls_vpls_detail +++ /dev/null @@ -1,21 +0,0 @@ -VPLS TEST-VPLS, Id 333, Max mac entries: 2048 - Total vlans: 2, Tagged ports: 2 (0 Up), Untagged ports 2 (0 Up) - IFL-ID: n/a - Vlan 5 - L2 Protocol: NONE - Untagged: ethe 2/4 - Vlan 6 - L2 Protocol: NONE - Tagged: ethe 2/5 to 2/6 - Untagged: ethe 2/7 - VC-Mode: Raw - Total VPLS peers: 1 (0 Operational) - Peer address: 192.0.2.3, State: Wait for functional local ports - Tnnl in use: tnl1(3)[RSVP] Peer Index:0 - Local VC lbl: N/A, Remote VC lbl: N/A - Local VC MTU: 9190, Remote VC MTU: 0 - Local VC-Type: Ethernet(0x05), Remote VC-Type: UNKNOWN - CPU-Protection: OFF - Local Switching: Enabled - Extended Counter: ON - Multicast Snooping: Disabled diff --git a/test/units/modules/network/ironware/fixtures/show_running-config b/test/units/modules/network/ironware/fixtures/show_running-config deleted file mode 100644 index de2d82609c..0000000000 --- a/test/units/modules/network/ironware/fixtures/show_running-config +++ /dev/null @@ -1,291 +0,0 @@ -!Current configuration: -! -ver V5.8.0fT163 -module 1 ni-mlx-8-port-10g-m -module 2 br-mlx-24-port-1gf-x -! -! -mirror ethernet 2/20 -! -lag "LAG" dynamic id 3 - ports ethernet 1/1 - primary-port 1/1 - lacp-timeout short - deploy -! -! -! - -! -no spanning-tree -! -! -vlan 1 name DEFAULT-VLAN - no untagged ethe 2/1 to 2/2 ethe 2/4 to 2/9 -! -vlan 150 -! -vlan 666 name LACP_ISOLATION_CUSTOMER -! -vlan 1000 -! -vlan 2007 - tagged ethe 2/1 -! -vlan 4040 - untagged ethe 1/1 -! - -! -! -qos-mapping -! -default-max-frame-size 9216 -cpu-usage on -aaa authentication login default tacacs+ local enable -tacacs-server host 192.0.2.5 -tacacs-server key 2 $X3FSZjgzKGzPIXVd -! -! -enable password-display -enable super-user-password 8 $1$WV1..Pi2$B6acbjDxeHsof2BKrpyqQ0 -enable aaa console -logging host 192.0.2.5 -logging facility local7 -logging buffered 5000 -logging console -username admin password 8 $1$MF/..XD4$MYUy7kcm/1eAuqXnVyvVO1 -username admin history $1$MF/..XD4$MYUy7kcm/1eAuqXnVyvVO1 $1$KE/..Cs2$WlfErdta9.sG9v5QmbaTd/ -! -tag-type 9100 ethe 1/4 -tag-type 9100 ethe 2/2 -tag-type 9100 ethe 2/24 -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -snmp-server -snmp-server community 2 $YkAtaSs/fFE6Sz97 ro -snmp-server max-ifindex-per-module 64 -snmp-server cache size 128 -hostname mlx01.lab -no transceiver-type-check -! -netconf server -! -router isis - net 49.0001.0100.6900.0006.00 - fast-flood 4 - no hello padding - is-type level-2 - log adjacency - address-family ipv4 unicast - metric-style wide - redistribute connected - exit-address-family - - address-family ipv6 unicast - no adjacency-check - exit-address-family - -! -! -! -! -! -qos-policy -! -policy-map CUST-100Mb - cir 99992032 cbs 3125000 -! -policy-map core-to-core-interface -! -! -hqos scheduler-policy core-to-core-interface-4.2G level level-0 - shaper-rate 4193280 - shaper-burst-size 256 - scheduler-type strict -! -! -! -hqos scheduler-policy P5 level level-1 - shaper-rate 10000000 - shaper-burst-size 10 - scheduler-type strict -! -! -! -! -interface loopback 1 - ip address 10.69.0.6/32 - no ip redirect -! -! -interface ethernet 1/1 - enable - load-interval 30 - bfd interval 100 min-rx 100 multiplier 5 - ip router isis - ip address 10.69.1.6/30 - ip mtu 9198 - ipv6 address 2001:db8::1/64 - isis bfd - isis circuit-type level-2 - isis metric 500 - isis point-to-point -! -interface ethernet 1/2 - port-name foo - enable - load-interval 30 - bfd interval 100 min-rx 100 multiplier 5 - ip router isis - ip address 10.69.1.77/30 - ip mtu 9198 - isis circuit-type level-2 - isis ipv6 metric 250 - isis point-to-point -! -interface ethernet 1/3 -enable -forward-lacp -! -interface ethernet 1/4 - enable - forward-lacp -! -interface ethernet 2/1 - enable - mon ethernet 2/20 both -! -interface ethernet 2/2 - enable - load-interval 30 - rate-limit input broadcast unknown-unicast multicast 521216 64000 - no spanning-tree -! -interface ethernet 2/3 - load-interval 30 - rate-limit input broadcast unknown-unicast multicast 521216 64000 - no fdp enable - no cdp enable - no spanning-tree -! -interface ethernet 2/4 - enable - load-interval 30 - rate-limit input broadcast unknown-unicast multicast 521216 64000 - no fdp enable - no cdp enable - no spanning-tree -! -interface ethernet 2/13 - enable - load-interval 30 -! -interface ethernet 2/20 - enable -! -interface ethernet 2/21 - enable -! -interface ethernet 2/24 - enable -! -ip tacacs source-interface loopback 1 -! -! -router mpls - bfd - - dynamic-bypass - enable - reoptimize-timer 1800 - - - policy - traffic-eng isis level-2 - handle-isis-neighbor-down - cspf-computation-mode use-te-metric - - rsvp - rsvp-reliable-messaging - - ldp - tunnel-metric 10 - - mpls-interface e1/1 - rsvp-reliable-messaging - dynamic-bypass - enable - name-prefix dyn - adaptive - cos 1 - - mpls-interface e1/2 - rsvp-reliable-messaging - dynamic-bypass - enable - name-prefix dyn - adaptive - cos 1 - - lsp LSP1 - to 192.0.2.1 - no cspf - adaptive - enable - - lsp LSP3 - to 192.0.2.3 - shortcuts isis level2 - adaptive - reoptimize-timer 1800 - frr - facility-backup - revert-timer 300 - enable - - vll TEST-VLL 111 raw-mode cos 1 - vll-peer 192.0.2.1 - vlan 2005 - tagged e 2/1 - - vll-local TEST-LOCAL - extended-counters on - untag e 2/8 - vlan 5 - tag e 2/9 - - vpls TEST-VPLS 333 - vpls-peer 192.0.2.3 - vlan 5 - untagged ethe 2/4 - vlan 6 - tagged ethe 2/5 to 2/6 - untagged ethe 2/7 - -! -! -! -lldp enable ports ethe 1/1 to 1/8 ethe 2/1 to 2/24 -lldp run -! -! -! -! -! -end diff --git a/test/units/modules/network/ironware/fixtures/show_version b/test/units/modules/network/ironware/fixtures/show_version deleted file mode 100644 index 2b578a8b88..0000000000 --- a/test/units/modules/network/ironware/fixtures/show_version +++ /dev/null @@ -1,92 +0,0 @@ -System Mode: MLX -Chassis: MLXe 4-slot (Serial #: BGD2503J01F, Part #: 40-1000363-04) -NI-X-HSF Switch Fabric Module 1 (Serial #: BEW0444H01V, Part #: 60-1001512-10) -FE 1: Type fe600, Version 1 -Switch Fabric Module 1 Up Time is 203 days 4 hours 44 minutes 54 seconds -NI-X-HSF Switch Fabric Module 2 (Serial #: BEW0432H06S, Part #: 60-1001512-10) -FE 1: Type fe600, Version 1 -Switch Fabric Module 2 Up Time is 203 days 4 hours 44 minutes 54 seconds -========================================================================== -SL M1: BR-MLX-MR2-M Management Module Active (Serial #: BVP0425L02W, Part #: 60-1002374-07): -Boot : Version 5.8.0T165 Copyright (c) 1996-2014 Brocade Communications Systems, Inc. -Compiled on May 18 2015 at 13:02:10 labeled as xmprm05800 - (521590 bytes) from boot flash -Monitor : Version 5.8.0T165 Copyright (c) 1996-2014 Brocade Communications Systems, Inc. -Compiled on May 18 2015 at 13:01:40 labeled as xmb05800 - (539721 bytes) from code flash -IronWare : Version 5.8.0fT163 Copyright (c) 1996-2014 Brocade Communications Systems, Inc. -Compiled on Feb 24 2017 at 02:54:38 labeled as xmr05800fb - (9983317 bytes) from Primary -Board ID : 00 MBRIDGE Revision : 37 -1666 MHz Power PC processor 7448 (version 8004/0202) 166 MHz bus -512 KB Boot Flash (MX29LV040C), 128 MB Code Flash (MT28F256J3) -4096 MB DRAM INSTALLED -4096 MB DRAM ADDRESSABLE -Active Management uptime is 203 days 4 hours 44 minutes 54 seconds -========================================================================== -SL M2: BR-MLX-MR2-M Management Module Standby (Serial #: BVP0407L00D, Part #: 60-1002374-07): -Boot : Version 5.8.0T165 Copyright (c) 1996-2014 Brocade Communications Systems, Inc. -Compiled on May 18 2015 at 13:02:10 labeled as xmprm05800 - (521590 bytes) from boot flash -Monitor : Version 5.8.0T165 Copyright (c) 1996-2014 Brocade Communications Systems, Inc. -Compiled on May 18 2015 at 13:01:40 labeled as xmb05800 - (539721 bytes) from code flash -IronWare : Version 5.8.0fT163 Copyright (c) 1996-2014 Brocade Communications Systems, Inc. -Compiled on Feb 24 2017 at 02:54:38 labeled as xmr05800fb - (9983317 bytes) from Primary -Board ID : 00 MBRIDGE Revision : 37 -1666 MHz Power PC processor 7448 (version 8004/0202) 166 MHz bus -512 KB Boot Flash (MX29LV040C), 128 MB Code Flash (MT28F256J3) -4096 MB DRAM INSTALLED -4096 MB DRAM ADDRESSABLE -Standby Management uptime is 203 days 4 hours 44 minutes 15 seconds -========================================================================== -SL 1: NI-MLX-10Gx8-M 8-port 10GbE (M) Module (Serial #: BEQ0403G05E, Part #: 60-1001587-13) -(LID: dgsFJFIiFKg) -Boot : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc. -Compiled on May 18 2015 at 13:02:24 labeled as xmlprm05800 - (449481 bytes) from boot flash -Monitor : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc. -Compiled on May 18 2015 at 13:02:40 labeled as xmlb05800 - (568745 bytes) from code flash -IronWare : Version 5.8.0fT177 Copyright (c) 1996-2014 Brocade Communications Systems, Inc. -Compiled on Feb 24 2017 at 03:02:10 labeled as xmlp05800fb - (9304807 bytes) from Primary -FPGA versions: -Valid PBIF Version = 2.24, Build Time = 4/7/2016 14:16:00 - -Valid XPP Version = 0.08, Build Time = 6/27/2016 10:36:00 - -MACXPP40G 0 -MACXPP40G 1 -1333 MHz MPC MPC8548 (version 8021/0022) 533 MHz bus -512 KB Boot Flash (MX29LV040C), 64 MB Code Flash (MT28F256J3) -1024 MB DRAM, 8 KB SRAM -LP Slot 1 uptime is 203 days 4 hours 44 minutes 12 seconds -========================================================================== -SL 2: BR-MLX-1GFx24-X 24-port 1GbE SFP Module (Serial #: BND0415H003, Part #: 60-1001892-11) -License: (LID: dpfFJGKjFFI) -Boot : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc. -Compiled on May 18 2015 at 13:02:24 labeled as xmlprm05800 - (449481 bytes) from boot flash -Monitor : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc. -Compiled on May 18 2015 at 13:02:40 labeled as xmlb05800 - (568745 bytes) from code flash -IronWare : Version 5.8.0fT177 Copyright (c) 1996-2014 Brocade Communications Systems, Inc. -Compiled on Feb 24 2017 at 03:02:10 labeled as xmlp05800fb - (9304807 bytes) from Primary -FPGA versions: -Valid PBIF Version = 4.04, Build Time = 11/10/2014 22:10:00 - -Valid XPP Version = 1.03, Build Time = 6/30/2016 10:37:00 - -Valid STATS Version = 0.09, Build Time = 11/21/2010 14:52:00 - -BCM56512GMAC 0 -BCM56512GMAC 1 -666 MHz MPC MPC8541E (version 8020/0020) 333 MHz bus -512 KB Boot Flash (MX29LV040C), 16 MB Code Flash (MT28F128J3) -1024 MB DRAM, 8 KB SRAM -LP Slot 2 uptime is 21 days 20 hours 23 minutes 19 seconds -========================================================================== -All show version done diff --git a/test/units/modules/network/ironware/ironware_module.py b/test/units/modules/network/ironware/ironware_module.py deleted file mode 100644 index 06ff63f989..0000000000 --- a/test/units/modules/network/ironware/ironware_module.py +++ /dev/null @@ -1,88 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json - -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase - - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(name): - path = os.path.join(fixture_path, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as f: - data = f.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class TestIronwareModule(ModuleTestCase): - - def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False): - - self.load_fixtures(commands) - - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - if commands is not None: - if sort: - self.assertEqual(sorted(commands), sorted(result['commands']), result['commands']) - else: - self.assertEqual(commands, result['commands'], result['commands']) - - return result - - def failed(self): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def changed(self, changed=False): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertEqual(result['changed'], changed, result) - return result - - def load_fixtures(self, commands=None): - pass diff --git a/test/units/modules/network/ironware/test_ironware_command.py b/test/units/modules/network/ironware/test_ironware_command.py deleted file mode 100644 index e86f59b045..0000000000 --- a/test/units/modules/network/ironware/test_ironware_command.py +++ /dev/null @@ -1,100 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from units.modules.utils import set_module_args -from ansible.modules.network.ironware import ironware_command -from .ironware_module import TestIronwareModule, load_fixture - - -class TestIronwareCommandModule(TestIronwareModule): - - module = ironware_command - - def setUp(self): - super(TestIronwareCommandModule, self).setUp() - self.mock_run_commands = patch('ansible.modules.network.ironware.ironware_command.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestIronwareCommandModule, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for command in commands: - filename = str(command).replace(' ', '_') - output.append(load_fixture(filename)) - return output - - self.run_commands.side_effect = load_from_file - - def test_ironware_command_simple(self): - set_module_args(dict(commands=['show version'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 1) - self.assertTrue(result['stdout'][0].startswith('System Mode: MLX')) - - def test_ironware_command_multiple(self): - set_module_args(dict(commands=['show version', 'show version'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 2) - self.assertTrue(result['stdout'][0].startswith('System Mode: MLX')) - - def test_ironware_command_wait_for(self): - wait_for = 'result[0] contains "IronWare"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module() - - def test_ironware_command_wait_for_fails(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 10) - - def test_ironware_command_retries(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show version'], wait_for=wait_for, retries=2)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 2) - - def test_ironware_command_match_any(self): - wait_for = ['result[0] contains "IronWare"', - 'result[0] contains "test string"'] - set_module_args(dict(commands=['show version'], wait_for=wait_for, match='any')) - self.execute_module() - - def test_ironware_command_match_all(self): - wait_for = ['result[0] contains "IronWare"', - 'result[0] contains "uptime is"'] - set_module_args(dict(commands=['show version'], wait_for=wait_for, match='all')) - self.execute_module() - - def test_ironware_command_match_all_failure(self): - wait_for = ['result[0] contains "IronWare"', - 'result[0] contains "test string"'] - commands = ['show version', 'show version'] - set_module_args(dict(commands=commands, wait_for=wait_for, match='all')) - self.execute_module(failed=True) diff --git a/test/units/modules/network/ironware/test_ironware_config.py b/test/units/modules/network/ironware/test_ironware_config.py deleted file mode 100644 index 2b7b6abb6c..0000000000 --- a/test/units/modules/network/ironware/test_ironware_config.py +++ /dev/null @@ -1,165 +0,0 @@ -# -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from units.modules.utils import set_module_args -from ansible.modules.network.ironware import ironware_config -from .ironware_module import TestIronwareModule, load_fixture - - -class TestIronwareConfigModule(TestIronwareModule): - - module = ironware_config - - def setUp(self): - super(TestIronwareConfigModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.ironware.ironware_config.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch('ansible.modules.network.ironware.ironware_config.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_run_commands = patch('ansible.modules.network.ironware.ironware_config.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestIronwareConfigModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - config_file = 'ironware_config_config.cfg' - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - - def execute_module(self, failed=False, changed=False, updates=None, sort=True, defaults=False): - - self.load_fixtures(updates) - - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - if updates is not None: - if sort: - self.assertEqual(sorted(updates), sorted(result['updates']), result['updates']) - else: - self.assertEqual(updates, result['updates'], result['updates']) - - return result - - def test_ironware_config_unchanged(self): - src = load_fixture('ironware_config_config.cfg') - set_module_args(dict(src=src)) - self.execute_module() - - def test_ironware_config_src(self): - src = load_fixture('ironware_config_src.cfg') - set_module_args(dict(src=src)) - updates = ['hostname foo', 'interface ethernet 1/1', - 'no ip address'] - self.execute_module(changed=True, updates=updates) - - def test_ironware_config_backup(self): - set_module_args(dict(backup=True)) - result = self.execute_module() - self.assertIn('__backup__', result) - - def test_ironware_config_save_always(self): - self.run_commands.return_value = "hostname foobar" - set_module_args(dict(save_when='always')) - self.execute_module(changed=True) - self.assertEqual(self.run_commands.call_count, 1) - self.assertEqual(self.get_config.call_count, 1) - self.assertEqual(self.load_config.call_count, 0) - - def test_ironware_config_lines_wo_parents(self): - set_module_args(dict(lines=['hostname foobar'])) - updates = ['hostname foobar'] - self.execute_module(changed=True, updates=updates) - - def test_ironware_config_lines_w_parents(self): - set_module_args(dict(lines=['disable'], parents=['interface ethernet 1/1'])) - updates = ['interface ethernet 1/1', 'disable'] - self.execute_module(changed=True, updates=updates) - - def test_ironware_config_before(self): - set_module_args(dict(lines=['hostname foo'], before=['test1', 'test2'])) - updates = ['test1', 'test2', 'hostname foo'] - self.execute_module(changed=True, updates=updates, sort=False) - - def test_ironware_config_after(self): - set_module_args(dict(lines=['hostname foo'], after=['test1', 'test2'])) - updates = ['hostname foo', 'test1', 'test2'] - self.execute_module(changed=True, updates=updates, sort=False) - - def test_ironware_config_before_after_no_change(self): - set_module_args(dict(lines=['hostname router'], - before=['test1', 'test2'], - after=['test3', 'test4'])) - self.execute_module() - - def test_ironware_config_config(self): - config = 'hostname localhost' - set_module_args(dict(lines=['hostname router'], config=config)) - updates = ['hostname router'] - self.execute_module(changed=True, updates=updates) - - def test_ironware_config_replace_block(self): - lines = ['port-name test string', 'test string'] - parents = ['interface ethernet 1/1'] - set_module_args(dict(lines=lines, replace='block', parents=parents)) - updates = parents + lines - self.execute_module(changed=True, updates=updates) - - def test_ironware_config_match_none(self): - lines = ['hostname router'] - set_module_args(dict(lines=lines, match='none')) - self.execute_module(changed=True, updates=lines) - - def test_ironware_config_match_none_parents(self): - lines = ['ip address 1.2.3.4 255.255.255.0', 'port-name test string'] - parents = ['interface ethernet 1/1'] - set_module_args(dict(lines=lines, parents=parents, match='none')) - updates = parents + lines - self.execute_module(changed=True, updates=updates, sort=False) - - def test_ironware_config_match_strict(self): - lines = ['ip address 1.2.3.4 255.255.255.0', 'port-name test string', - 'disable'] - parents = ['interface ethernet 1/1'] - set_module_args(dict(lines=lines, parents=parents, match='strict')) - updates = parents + ['disable'] - self.execute_module(changed=True, updates=updates, sort=False) - - def test_ironware_config_match_exact(self): - lines = ['ip address 1.2.3.4 255.255.255.0', 'port-name test string', - 'disable'] - parents = ['interface ethernet 1/1'] - set_module_args(dict(lines=lines, parents=parents, match='exact')) - updates = parents + lines - self.execute_module(changed=True, updates=updates, sort=False) diff --git a/test/units/modules/network/ironware/test_ironware_facts.py b/test/units/modules/network/ironware/test_ironware_facts.py deleted file mode 100644 index ab0f16b555..0000000000 --- a/test/units/modules/network/ironware/test_ironware_facts.py +++ /dev/null @@ -1,102 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json - -from units.compat.mock import patch -from units.modules.utils import set_module_args -from ansible.modules.network.ironware import ironware_facts -from .ironware_module import TestIronwareModule, load_fixture - - -class TestIronwareFacts(TestIronwareModule): - - module = ironware_facts - - def setUp(self): - super(TestIronwareFacts, self).setUp() - self.mock_run_commands = patch( - 'ansible.modules.network.ironware.ironware_facts.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestIronwareFacts, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for item in commands: - try: - obj = json.loads(item) - command = obj['command'] - except ValueError: - command = item - filename = str(command).split(' | ')[0].replace(' ', '_').replace('/', '7') - output.append(load_fixture(filename)) - return output - - self.run_commands.side_effect = load_from_file - - def test_ironware_facts_gather_subset_default(self): - set_module_args(dict()) - result = self.execute_module() - ansible_facts = result['ansible_facts'] - self.assertIn('hardware', ansible_facts['ansible_net_gather_subset']) - self.assertIn('default', ansible_facts['ansible_net_gather_subset']) - self.assertIn('interfaces', ansible_facts['ansible_net_gather_subset']) - self.assertEqual(['/flash/'], ansible_facts['ansible_net_filesystems']) - self.assertIn('1/1', ansible_facts['ansible_net_interfaces'].keys()) - self.assertIn('10.69.1.6', ansible_facts['ansible_net_all_ipv4_addresses']) - self.assertIn('2001:db8::1', ansible_facts['ansible_net_all_ipv6_addresses']) - self.assertIn('ansible_net_neighbors', ansible_facts) - self.assertIn('1/2', ansible_facts['ansible_net_neighbors'].keys()) - self.assertEqual(4096, ansible_facts['ansible_net_memtotal_mb']) - self.assertEqual(3630, ansible_facts['ansible_net_memfree_mb']) - self.assertEqual('5.8.0fT163', ansible_facts['ansible_net_version']) - self.assertEqual('MLXe 4-slot Chassis', ansible_facts['ansible_net_model']) - self.assertEqual('BGD2503J01F', ansible_facts['ansible_net_serialnum']) - - def test_ironware_facts_gather_subset_config(self): - set_module_args({'gather_subset': 'config'}) - result = self.execute_module() - ansible_facts = result['ansible_facts'] - self.assertIn('default', ansible_facts['ansible_net_gather_subset']) - self.assertIn('config', ansible_facts['ansible_net_gather_subset']) - self.assertIn('ansible_net_config', ansible_facts) - - def test_ironware_facts_gather_subset_mpls(self): - set_module_args({'gather_subset': 'mpls'}) - result = self.execute_module() - ansible_facts = result['ansible_facts'] - self.assertIn('default', ansible_facts['ansible_net_gather_subset']) - self.assertIn('mpls', ansible_facts['ansible_net_gather_subset']) - self.assertIn('ansible_net_mpls_lsps', ansible_facts) - self.assertIn('ansible_net_mpls_vll', ansible_facts) - self.assertIn('ansible_net_mpls_vll_local', ansible_facts) - self.assertIn('ansible_net_mpls_vpls', ansible_facts) - self.assertIn('LSP1', ansible_facts['ansible_net_mpls_lsps'].keys()) - self.assertIn('TEST-VLL', ansible_facts['ansible_net_mpls_vll'].keys()) - self.assertIn('TEST-LOCAL', ansible_facts['ansible_net_mpls_vll_local'].keys()) - self.assertIn('TEST-VPLS', ansible_facts['ansible_net_mpls_vpls'].keys()) diff --git a/test/units/modules/network/itential/test_iap_start_workflow.py b/test/units/modules/network/itential/test_iap_start_workflow.py deleted file mode 100644 index 050fddd1d0..0000000000 --- a/test/units/modules/network/itential/test_iap_start_workflow.py +++ /dev/null @@ -1,914 +0,0 @@ -""" -iap_token unit tests -""" -# -*- coding: utf-8 -*- - -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# pylint: disable=invalid-name,protected-access,function-redefined,unused-argument -# pylint: disable=unused-import,redundant-unittest-assert - -from __future__ import (absolute_import, division, print_function) - -__metaclass__ = type - -import mock -import unittest -from ansible.modules.network.itential import iap_start_workflow - - -class TestWorkflowModule(unittest.TestCase): - - @mock.patch('ansible.modules.network.itential.iap_start_workflow.start_workflow') - def test_iap_workflow(self, iap_workflow): - params = {"description": "NewTestAnsible", - "https": "false", - "iap_fqdn": "localhost", - "iap_port": "3000", - "token_key": "NDM2OGJlMzg5MjRlMTQyNzc0YmZmNmQ5ZWRkYzcyYTE=", - "validate_certs": "false", - "variables": { - "value": "3333" - }, - "workflow_name": "DummyWF"} - - module = {"params": params} - return_response = { - "_id": "e17646fc7a8f4a6a9e691fe4", - "created": "2018-09-15T21:57:50.388Z", - "created_by": "5b8fe4fcb3f8b800134ea5fd", - "description": "NewTestAnsible", - "font_size": 12, - "groups": [], - "last_updated": "2019-02-22T15:55:40.197Z", - "last_updated_by": "5b8fe4fcb3f8b800134ea5fd", - "locked": 'false', - "metrics": { - "progress": 0, - "start_time": 1551043499742, - "user": "5b8fe4fcb3f8b800134ea5fd" - }, - "name": "DummyWF", - "status": "running", - "tasks": { - "10d1": { - "_id": "1ca495e4-dc86-41df-b3ca-8c215920ec91", - "app": "WorkFlowEngine", - "deprecated": 'false', - "description": "Create a new Job variable by Job ID and assign it a value.", - "displayName": "WorkFlowEngine", - "groups": [], - "iterations": [ - "1ca495e4-dc86-41df-b3ca-8c215920ec91" - ], - "job": { - "_id": "e17646fc7a8f4a6a9e691fe4", - "description": "NewTestAnsible", - "index": 0, - "name": "DummyWF", - "task": "10d1" - }, - "location": "Application", - "locked": 'false', - "matched": [ - { - "highlightString": "<span class='highlight-string'>new</span>Variable", - "key": "name" - }, - { - "highlightString": "Create a <span class='highlight-string'>new</span> " - "Job variable by Job ID and assign it a value.", - "key": "description" - } - ], - "metrics": { - "owner": "" - }, - "name": "newVariable", - "status": "incomplete", - "summary": "Create a Job Variable", - "type": "operation", - "variables": { - "incoming": { - "name": "anyVar", - "value": { - "hello": "hello_from_the_other" - } - }, - "outgoing": { - "value": 'null' - } - }, - "x": 0.24, - "y": 0.3904899135446686 - }, - "50c1": { - "_id": "33a32349-c151-4b67-b1cb-d5df2147772f", - "actor": "Pronghorn", - "app": "StringMethods", - "deprecated": 'false', - "description": "Concatenates a string with a second string(s). The second parameter can be a " - "string or array.", - "displayName": "String", - "groups": [], - "iterations": [ - "33a32349-c151-4b67-b1cb-d5df2147772f" - ], - "job": { - "_id": "e17646fc7a8f4a6a9e691fe4", - "description": "NewTestAnsible", - "index": 0, - "name": "DummyWF", - "task": "50c1" - }, - "location": "Application", - "locked": 'false', - "matched": [ - { - "highlightString": "<span class='highlight-string'>Strin</span>gMethods", - "key": "app" - }, - { - "highlightString": "Concatenates <span class='highlight-string'>" - "strin</span>gs together.", - "key": "summary" - }, - { - "highlightString": "Concatenates a <span class='highlight-string'>strin</span>g " - "with a second string(s). The second parameter " - "can be a string or array.", - "key": "description" - } - ], - "metrics": { - "owner": "" - }, - "name": "concat", - "scheduled": 'false', - "status": "incomplete", - "summary": "Concatenates strings together.", - "type": "automatic", - "variables": { - "error": "", - "incoming": { - "str": "$var.5023.return_data", - "stringN": [ - "_side" - ] - }, - "outgoing": { - "combinedStrings": 'null' - } - }, - "x": 0.37, - "y": 0.17002881844380405 - }, - "5023": { - "_id": "56396de1-c7b5-495e-aff8-342fe168a2b1", - "app": "WorkFlowEngine", - "deprecated": 'false', - "description": "Query data using a dot/bracket notation string and a matching key/value pair.", - "displayName": "WorkFlowEngine", - "groups": [], - "iterations": [ - "56396de1-c7b5-495e-aff8-342fe168a2b1" - ], - "job": { - "_id": "e17646fc7a8f4a6a9e691fe4", - "description": "NewTestAnsible", - "index": 0, - "name": "DummyWF", - "task": "5023" - }, - "location": "Application", - "locked": 'false', - "matched": [ - { - "highlightString": "<span class='highlight-string'>query</span>", - "key": "name" - }, - { - "highlightString": "<span class='highlight-string'>Query</span> Data Using " - "'json-query' Format", - "key": "summary" - }, - { - "highlightString": "<span class='highlight-string'>Query</span> data using a " - "dot/bracket notation string and a matching key/value pair.", - "key": "description" - } - ], - "metrics": { - "owner": "" - }, - "name": "query", - "scheduled": 'false', - "status": "incomplete", - "summary": "Query Data Using 'json-query' Format", - "type": "operation", - "variables": { - "error": "", - "incoming": { - "obj": "$var.10d1.value", - "pass_on_'null'": 'false', - "query": "hello" - }, - "outgoing": { - "return_data": 'null' - } - }, - "x": 0.2630769230769231, - "y": 0.2420749279538905 - }, - "7cd4": { - "_id": "dc132a1a-4ac8-4bfe-b75d-ea95eac84d09", - "actor": "job", - "app": "WorkFlowEngine", - "deprecated": 'false', - "description": "Run a child Job inside a Workflow", - "displayName": "WorkFlowEngine", - "groups": [], - "iterations": [ - "dc132a1a-4ac8-4bfe-b75d-ea95eac84d09" - ], - "job": { - "_id": "e17646fc7a8f4a6a9e691fe4", - "description": "NewTestAnsible", - "index": 0, - "name": "DummyWF", - "task": "7cd4" - }, - "location": "Application", - "locked": 'false', - "matched": [ - { - "highlightString": "<span class='highlight-string'>child</span>Job", - "key": "name" - }, - { - "highlightString": "Run <span class='highlight-string'>Child</span> Job", - "key": "summary" - }, - { - "highlightString": "Run a <span class='highlight-string'>child</span>" - " Job inside a Workflow", - "key": "description" - } - ], - "metrics": { - "owner": "" - }, - "name": "childJob", - "status": "incomplete", - "summary": "Run Child Job", - "type": "operation", - "variables": { - "incoming": { - "task": "", - "variables": { - "child1_body": { - "task": "50c1", - "value": "combinedStrings", - "variable": "" - } - }, - "workflow": "child1" - }, - "outgoing": { - "job_details": 'null' - } - }, - "x": 0.6146153846153846, - "y": 0.40634005763688763 - }, - "87f4": { - "_id": "1f5da682-b377-4739-a60d-31d897c59863", - "app": "MOP", - "deprecated": 'false', - "description": "MOP confirm Task", - "displayName": "MOP", - "groups": [ - "5b8fe4fcb3f8b800134ea5fc" - ], - "iterations": [ - "1f5da682-b377-4739-a60d-31d897c59863" - ], - "job": { - "_id": "e17646fc7a8f4a6a9e691fe4", - "description": "NewTestAnsible", - "index": 0, - "name": "DummyWF", - "task": "87f4" - }, - "location": "Application", - "locked": 'false', - "matched": [ - { - "highlightString": "<span class='highlight-string'>confirm</span>Task", - "key": "name" - }, - { - "highlightString": "MOP <span class='highlight-string'>confirm</span> Task", - "key": "summary" - }, - { - "highlightString": "MOP <span class='highlight-string'>confirm</span> Task", - "key": "description" - } - ], - "metrics": { - "owner": "" - }, - "name": "confirmTask", - "scheduled": 'false', - "status": "incomplete", - "summary": "MOP confirm Task", - "type": "manual", - "variables": { - "error": "", - "incoming": { - "body": "<!value_output!>", - "title": "Run Time Var", - "variables": "$var.f97e.value" - }, - "outgoing": {} - }, - "view": "/mop/task/confirmTask", - "x": 0.6961538461538461, - "y": 0.06772334293948126 - }, - "f97e": { - "_id": "38017b10-5e26-4161-bccb-c2f983dcf1ca", - "app": "WorkFlowEngine", - "deprecated": 'false', - "description": "Create a new Job variable by Job ID and assign it a value.", - "displayName": "WorkFlowEngine", - "groups": [], - "iterations": [ - "38017b10-5e26-4161-bccb-c2f983dcf1ca" - ], - "job": { - "_id": "e17646fc7a8f4a6a9e691fe4", - "description": "NewTestAnsible", - "index": 0, - "name": "DummyWF", - "task": "f97e" - }, - "location": "Application", - "locked": 'false', - "matched": [ - { - "highlightString": "<span class='highlight-string'>new</span>Variable", - "key": "name" - }, - { - "highlightString": "Create a <span class='highlight-string'>new</span>" - " Job variable by Job ID and assign it a value.", - "key": "description" - } - ], - "metrics": { - "owner": "" - }, - "name": "newVariable", - "status": "incomplete", - "summary": "Create a Job Variable", - "type": "operation", - "variables": { - "incoming": { - "name": "run_time", - "value": { - "value_output": "I am RunTime Variable" - } - }, - "outgoing": { - "value": 'null' - } - }, - "x": 0.45615384615384613, - "y": -0.04755043227665706 - }, - "workflow_end": { - "groups": [], - "name": "workflow_end", - "status": "incomplete", - "x": 0.9, - "y": 0.5979827089337176 - }, - "workflow_start": { - "groups": [], - "metrics": { - "finish_state": "success", - "start_time": 1551043499742, - "user": "5b8fe4fcb3f8b800134ea5fd" - }, - "name": "workflow_start", - "status": "complete", - "x": 0.04692307692307692, - "y": 0.6023054755043228 - } - }, - "transitions": { - "10d1": { - "5023": { - "state": "success", - "type": "standard" - } - }, - "5023": { - "50c1": { - "state": "success", - "type": "standard" - } - }, - "50c1": { - "f97e": { - "state": "success", - "type": "standard" - } - }, - "7cd4": { - "workflow_end": { - "state": "success", - "type": "standard" - } - }, - "87f4": { - "7cd4": { - "state": "success", - "type": "standard" - } - }, - "f97e": { - "87f4": { - "state": "success", - "type": "standard" - } - }, - "workflow_end": {}, - "workflow_start": { - "10d1": { - "state": "success", - "type": "standard" - } - } - }, - "type": "automation", - "variables": { - "_id": "e17646fc7a8f4a6a9e691fe4", - "initiator": "admin@pronghorn", - "value": "3333" - }, - "watchers": [ - "5b8fe4fcb3f8b800134ea5fd" - ] - } - iap_workflow.return_value = { - "_id": "e17646fc7a8f4a6a9e691fe4", - "created": "2018-09-15T21:57:50.388Z", - "created_by": "5b8fe4fcb3f8b800134ea5fd", - "description": "NewTestAnsible", - "font_size": 12, - "groups": [], - "last_updated": "2019-02-22T15:55:40.197Z", - "last_updated_by": "5b8fe4fcb3f8b800134ea5fd", - "locked": 'false', - "metrics": { - "progress": 0, - "start_time": 1551043499742, - "user": "5b8fe4fcb3f8b800134ea5fd" - }, - "name": "DummyWF", - "status": "running", - "tasks": { - "10d1": { - "_id": "1ca495e4-dc86-41df-b3ca-8c215920ec91", - "app": "WorkFlowEngine", - "deprecated": 'false', - "description": "Create a new Job variable by Job ID and assign it a value.", - "displayName": "WorkFlowEngine", - "groups": [], - "iterations": [ - "1ca495e4-dc86-41df-b3ca-8c215920ec91" - ], - "job": { - "_id": "e17646fc7a8f4a6a9e691fe4", - "description": "NewTestAnsible", - "index": 0, - "name": "DummyWF", - "task": "10d1" - }, - "location": "Application", - "locked": 'false', - "matched": [ - { - "highlightString": "<span class='highlight-string'>new</span>Variable", - "key": "name" - }, - { - "highlightString": "Create a <span class='highlight-string'>new</span> " - "Job variable by Job ID and assign it a value.", - "key": "description" - } - ], - "metrics": { - "owner": "" - }, - "name": "newVariable", - "status": "incomplete", - "summary": "Create a Job Variable", - "type": "operation", - "variables": { - "incoming": { - "name": "anyVar", - "value": { - "hello": "hello_from_the_other" - } - }, - "outgoing": { - "value": 'null' - } - }, - "x": 0.24, - "y": 0.3904899135446686 - }, - "5023": { - "_id": "56396de1-c7b5-495e-aff8-342fe168a2b1", - "app": "WorkFlowEngine", - "deprecated": 'false', - "description": "Query data using a dot/bracket notation string and a matching key/value pair.", - "displayName": "WorkFlowEngine", - "groups": [], - "iterations": [ - "56396de1-c7b5-495e-aff8-342fe168a2b1" - ], - "job": { - "_id": "e17646fc7a8f4a6a9e691fe4", - "description": "NewTestAnsible", - "index": 0, - "name": "DummyWF", - "task": "5023" - }, - "location": "Application", - "locked": 'false', - "matched": [ - { - "highlightString": "<span class='highlight-string'>query</span>", - "key": "name" - }, - { - "highlightString": "<span class='highlight-string'>Query</span> " - "Data Using 'json-query' Format", - "key": "summary" - }, - { - "highlightString": "<span class='highlight-string'>Query</span> " - "data using a dot/bracket notation string and a " - "matching key/value pair.", - "key": "description" - } - ], - "metrics": { - "owner": "" - }, - "name": "query", - "scheduled": 'false', - "status": "incomplete", - "summary": "Query Data Using 'json-query' Format", - "type": "operation", - "variables": { - "error": "", - "incoming": { - "obj": "$var.10d1.value", - "pass_on_'null'": 'false', - "query": "hello" - }, - "outgoing": { - "return_data": 'null' - } - }, - "x": 0.2630769230769231, - "y": 0.2420749279538905 - }, - "50c1": { - "_id": "33a32349-c151-4b67-b1cb-d5df2147772f", - "actor": "Pronghorn", - "app": "StringMethods", - "deprecated": 'false', - "description": "Concatenates a string with a second string(s). " - "The second parameter can be a string or array.", - "displayName": "String", - "groups": [], - "iterations": [ - "33a32349-c151-4b67-b1cb-d5df2147772f" - ], - "job": { - "_id": "e17646fc7a8f4a6a9e691fe4", - "description": "NewTestAnsible", - "index": 0, - "name": "DummyWF", - "task": "50c1" - }, - "location": "Application", - "locked": 'false', - "matched": [ - { - "highlightString": "<span class='highlight-string'>Strin</span>gMethods", - "key": "app" - }, - { - "highlightString": "Concatenates <span class='highlight-string'>strin</span>gs together.", - "key": "summary" - }, - { - "highlightString": "Concatenates a <span class='highlight-string'>strin</span>g " - "with a second string(s). The second parameter " - "can be a string or array.", - "key": "description" - } - ], - "metrics": { - "owner": "" - }, - "name": "concat", - "scheduled": 'false', - "status": "incomplete", - "summary": "Concatenates strings together.", - "type": "automatic", - "variables": { - "error": "", - "incoming": { - "str": "$var.5023.return_data", - "stringN": [ - "_side" - ] - }, - "outgoing": { - "combinedStrings": 'null' - } - }, - "x": 0.37, - "y": 0.17002881844380405 - }, - "7cd4": { - "_id": "dc132a1a-4ac8-4bfe-b75d-ea95eac84d09", - "actor": "job", - "app": "WorkFlowEngine", - "deprecated": 'false', - "description": "Run a child Job inside a Workflow", - "displayName": "WorkFlowEngine", - "groups": [], - "iterations": [ - "dc132a1a-4ac8-4bfe-b75d-ea95eac84d09" - ], - "job": { - "_id": "e17646fc7a8f4a6a9e691fe4", - "description": "NewTestAnsible", - "index": 0, - "name": "DummyWF", - "task": "7cd4" - }, - "location": "Application", - "locked": 'false', - "matched": [ - { - "highlightString": "<span class='highlight-string'>child</span>Job", - "key": "name" - }, - { - "highlightString": "Run <span class='highlight-string'>Child</span> Job", - "key": "summary" - }, - { - "highlightString": "Run a <span class='highlight-string'>child</span> " - "Job inside a Workflow", - "key": "description" - } - ], - "metrics": { - "owner": "" - }, - "name": "childJob", - "status": "incomplete", - "summary": "Run Child Job", - "type": "operation", - "variables": { - "incoming": { - "task": "", - "variables": { - "child1_body": { - "task": "50c1", - "value": "combinedStrings", - "variable": "" - } - }, - "workflow": "child1" - }, - "outgoing": { - "job_details": 'null' - } - }, - "x": 0.6146153846153846, - "y": 0.40634005763688763 - }, - "87f4": { - "_id": "1f5da682-b377-4739-a60d-31d897c59863", - "app": "MOP", - "deprecated": 'false', - "description": "MOP confirm Task", - "displayName": "MOP", - "groups": [ - "5b8fe4fcb3f8b800134ea5fc" - ], - "iterations": [ - "1f5da682-b377-4739-a60d-31d897c59863" - ], - "job": { - "_id": "e17646fc7a8f4a6a9e691fe4", - "description": "NewTestAnsible", - "index": 0, - "name": "DummyWF", - "task": "87f4" - }, - "location": "Application", - "locked": 'false', - "matched": [ - { - "highlightString": "<span class='highlight-string'>confirm</span>Task", - "key": "name" - }, - { - "highlightString": "MOP <span class='highlight-string'>confirm</span> Task", - "key": "summary" - }, - { - "highlightString": "MOP <span class='highlight-string'>confirm</span> Task", - "key": "description" - } - ], - "metrics": { - "owner": "" - }, - "name": "confirmTask", - "scheduled": 'false', - "status": "incomplete", - "summary": "MOP confirm Task", - "type": "manual", - "variables": { - "error": "", - "incoming": { - "body": "<!value_output!>", - "title": "Run Time Var", - "variables": "$var.f97e.value" - }, - "outgoing": {} - }, - "view": "/mop/task/confirmTask", - "x": 0.6961538461538461, - "y": 0.06772334293948126 - }, - "f97e": { - "_id": "38017b10-5e26-4161-bccb-c2f983dcf1ca", - "app": "WorkFlowEngine", - "deprecated": 'false', - "description": "Create a new Job variable by Job ID and assign it a value.", - "displayName": "WorkFlowEngine", - "groups": [], - "iterations": [ - "38017b10-5e26-4161-bccb-c2f983dcf1ca" - ], - "job": { - "_id": "e17646fc7a8f4a6a9e691fe4", - "description": "NewTestAnsible", - "index": 0, - "name": "DummyWF", - "task": "f97e" - }, - "location": "Application", - "locked": 'false', - "matched": [ - { - "highlightString": "<span class='highlight-string'>new</span>Variable", - "key": "name" - }, - { - "highlightString": "Create a <span class='highlight-string'>new</span> " - "Job variable by Job ID and assign it a value.", - "key": "description" - } - ], - "metrics": { - "owner": "" - }, - "name": "newVariable", - "status": "incomplete", - "summary": "Create a Job Variable", - "type": "operation", - "variables": { - "incoming": { - "name": "run_time", - "value": { - "value_output": "I am RunTime Variable" - } - }, - "outgoing": { - "value": 'null' - } - }, - "x": 0.45615384615384613, - "y": -0.04755043227665706 - }, - "workflow_end": { - "groups": [], - "name": "workflow_end", - "status": "incomplete", - "x": 0.9, - "y": 0.5979827089337176 - }, - "workflow_start": { - "groups": [], - "metrics": { - "finish_state": "success", - "start_time": 1551043499742, - "user": "5b8fe4fcb3f8b800134ea5fd" - }, - "name": "workflow_start", - "status": "complete", - "x": 0.04692307692307692, - "y": 0.6023054755043228 - } - }, - "transitions": { - "10d1": { - "5023": { - "state": "success", - "type": "standard" - } - }, - "5023": { - "50c1": { - "state": "success", - "type": "standard" - } - }, - "50c1": { - "f97e": { - "state": "success", - "type": "standard" - } - }, - "7cd4": { - "workflow_end": { - "state": "success", - "type": "standard" - } - }, - "87f4": { - "7cd4": { - "state": "success", - "type": "standard" - } - }, - "f97e": { - "87f4": { - "state": "success", - "type": "standard" - } - }, - "workflow_end": {}, - "workflow_start": { - "10d1": { - "state": "success", - "type": "standard" - } - } - }, - "type": "automation", - "variables": { - "_id": "e17646fc7a8f4a6a9e691fe4", - "initiator": "admin@pronghorn", - "value": "3333" - }, - "watchers": [ - "5b8fe4fcb3f8b800134ea5fd" - ] - } - result = iap_start_workflow.start_workflow(module) - self.assertEqual(result, return_response) - - -if __name__ == '__main__': - unittest.main() diff --git a/test/units/modules/network/itential/test_iap_token.py b/test/units/modules/network/itential/test_iap_token.py deleted file mode 100644 index 490097907e..0000000000 --- a/test/units/modules/network/itential/test_iap_token.py +++ /dev/null @@ -1,51 +0,0 @@ -""" -iap_token unit tests -""" -# -*- coding: utf-8 -*- - -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# pylint: disable=invalid-name,protected-access,function-redefined,unused-argument -# pylint: disable=unused-import,redundant-unittest-assert - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - - -import unittest - - -class TestClass(unittest.TestCase): - """ - Test cases - """ - def _assert_incident_api(self, module, url, method, headers): - """ - Setup Test - """ - self.assertTrue('http://localhost:4007/login' in url, 'token') - return Response(), {'status': 200} - - def test_incident_url(self): - self.assertTrue(True, True) - - -class Response(object): - """ - Setup Response - """ - def read(self): - return '{"token": "ljhklj%3D"}' diff --git a/test/units/modules/network/netact/test_netact_cm_command.py b/test/units/modules/network/netact/test_netact_cm_command.py deleted file mode 100644 index 727b710923..0000000000 --- a/test/units/modules/network/netact/test_netact_cm_command.py +++ /dev/null @@ -1,172 +0,0 @@ -""" -netact_cm_command unit tests -""" - -# -*- coding: utf-8 -*- - -# (c) 2017, Nokia -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# pylint: disable=invalid-name,protected-access,function-redefined,unused-argument -# pylint: disable=unused-import,redundant-unittest-assert - -from __future__ import (absolute_import, division, print_function) - -__metaclass__ = type - -from units.compat import unittest -from ansible.module_utils import basic -from ansible.modules.network.netact import netact_cm_command -from units.compat.mock import patch - -from units.modules.utils import set_module_args, AnsibleExitJson, AnsibleFailJson - - -class AnsibleExitJson(Exception): - """Exception class to be raised by module.exit_json and caught by the test case""" - pass - - -class AnsibleFailJson(Exception): - """Exception class to be raised by module.fail_json and caught by the test case""" - pass - - -def exit_json(*args, **kwargs): - """function to patch over exit_json; package return data into an exception""" - if 'changed' not in kwargs: - kwargs['changed'] = False - raise AnsibleExitJson(kwargs) - - -def fail_json(*args, **kwargs): - """function to patch over fail_json; package return data into an exception""" - kwargs['failed'] = True - raise AnsibleFailJson(kwargs) - - -def get_bin_path(self, arg, required=False): - """Mock AnsibleModule.get_bin_path""" - if arg.endswith('netact_cm_command'): - return '/usr/bin/my_command' - else: - if required: - fail_json(msg='%r not found !' % arg) - - -class TestClass(unittest.TestCase): - """ - Test cases - """ - - def setUp(self): - self.mock_module_helper = patch.multiple(basic.AnsibleModule, - exit_json=exit_json, - fail_json=fail_json, - get_bin_path=get_bin_path) - self.mock_module_helper.start() - self.addCleanup(self.mock_module_helper.stop) - - def test_module_fail_when_required_args_missing(self): - """ - Testing that command is failing if args are missing - :return: - """ - with self.assertRaises(AnsibleFailJson): - set_module_args({}) - netact_cm_command.main() - self.assertTrue(False) - - def test_ensure_command_called(self): - """ - Testing that command is executed with correct args - :return: - """ - set_module_args({ - 'operation': "Upload", - 'opsName': 'Uploading_testi', - 'DN': "PLMN-PLMN/MRBTS-746", - }) - - with patch.object(basic.AnsibleModule, 'run_command') as mock_run_command: - stdout = 'configuration updated' - stderr = '' - return_code = 0 - mock_run_command.return_value = return_code, stdout, stderr # successful execution - - with self.assertRaises(AnsibleExitJson) as result: - netact_cm_command.main() - print(result.exception.args) - self.assertTrue(result.exception.args[0]['changed']) # ensure result is changed - - mock_run_command.assert_called_once_with( - ['/opt/oss/bin/racclimx.sh', '-op', 'Upload', '-opsName', 'Uploading_testi', - '-DN', 'PLMN-PLMN/MRBTS-746'], - check_rc=True) - - def test_ensure_backupPlanName_outputs_correctly(self): - """ - Testing that command is executed with correct args - :return: - """ - set_module_args({ - 'operation': "Provision", - 'opsName': 'Provision_test', - 'WS': "PLMN-PLMN/MRBTS-746", - 'createBackupPlan': "Yes", - 'backupPlanName': "backupPlanName" - }) - - with patch.object(basic.AnsibleModule, 'run_command') as mock_run_command: - stdout = 'configuration updated' - stderr = '' - return_code = 0 - mock_run_command.return_value = return_code, stdout, stderr # successful execution - - with self.assertRaises(AnsibleExitJson) as result: - netact_cm_command.main() - print(result.exception.args) - self.assertTrue(result.exception.args[0]['changed']) # ensure result is changed - - mock_run_command.assert_called_once_with( - ['/opt/oss/bin/racclimx.sh', '-op', 'Provision', '-opsName', 'Provision_test', - '-WS', 'PLMN-PLMN/MRBTS-746', '-createBackupPlan', 'true', '-backupPlanName', 'backupPlanName'], - check_rc=True) - - def test_withwrongargs(self): - """ - Testing that wrong attribute causing error - :return: - """ - set_module_args({ - 'operation': "Upload", - 'opsName': 'Uploading_testi', - 'MR': "PLMN-PLMN/MRBTS-746", - 'abc': 'abc' - }) - - with self.assertRaises(AnsibleFailJson): - with patch.object(basic.AnsibleModule, 'run_command') as mock_run_command: - stdout = 'configuration updated' - stderr = '' - return_code = 0 - mock_run_command.return_value = return_code, stdout, stderr # successful execution - - with self.assertRaises(AnsibleExitJson) as result: - netact_cm_command.main() - self.assertTrue(result.exception.args[0]['changed']) # ensure result is changed - - self.assertFalse(True) # ensure result is changed diff --git a/test/units/modules/network/netscaler/netscaler_module.py b/test/units/modules/network/netscaler/netscaler_module.py deleted file mode 100644 index d9650502df..0000000000 --- a/test/units/modules/network/netscaler/netscaler_module.py +++ /dev/null @@ -1,44 +0,0 @@ -import sys - -from units.compat.mock import patch, Mock -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase - -base_modules_mock = Mock() -nitro_service_mock = Mock() -nitro_exception_mock = Mock() - - -base_modules_to_mock = { - 'nssrc': base_modules_mock, - 'nssrc.com': base_modules_mock, - 'nssrc.com.citrix': base_modules_mock, - 'nssrc.com.citrix.netscaler': base_modules_mock, - 'nssrc.com.citrix.netscaler.nitro': base_modules_mock, - 'nssrc.com.citrix.netscaler.nitro.resource': base_modules_mock, - 'nssrc.com.citrix.netscaler.nitro.resource.config': base_modules_mock, - 'nssrc.com.citrix.netscaler.nitro.exception': base_modules_mock, - 'nssrc.com.citrix.netscaler.nitro.exception.nitro_exception': base_modules_mock, - 'nssrc.com.citrix.netscaler.nitro.exception.nitro_exception.nitro_exception': nitro_exception_mock, - 'nssrc.com.citrix.netscaler.nitro.service': base_modules_mock, - 'nssrc.com.citrix.netscaler.nitro.service.nitro_service': base_modules_mock, - 'nssrc.com.citrix.netscaler.nitro.service.nitro_service.nitro_service': nitro_service_mock, -} - -nitro_base_patcher = patch.dict(sys.modules, base_modules_to_mock) - - -class TestModule(ModuleTestCase): - def failed(self): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def exited(self, changed=False): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - return result diff --git a/test/units/modules/network/netscaler/test_netscaler_cs_action.py b/test/units/modules/network/netscaler/test_netscaler_cs_action.py deleted file mode 100644 index aa1c772c8b..0000000000 --- a/test/units/modules/network/netscaler/test_netscaler_cs_action.py +++ /dev/null @@ -1,636 +0,0 @@ - -# Copyright (c) 2017 Citrix Systems -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# - -from units.compat.mock import patch, Mock, MagicMock, call -from units.modules.utils import set_module_args -from .netscaler_module import TestModule, nitro_base_patcher - -import sys - -if sys.version_info[:2] != (2, 6): - import requests - - -class TestNetscalerCSActionModule(TestModule): - - @classmethod - def setUpClass(cls): - class MockException(Exception): - pass - - cls.MockException = MockException - - m = MagicMock() - cls.cs_action_mock = MagicMock() - cls.cs_action_mock.__class__ = MagicMock(add=Mock()) - nssrc_modules_mock = { - 'nssrc.com.citrix.netscaler.nitro.resource.config.cs': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.cs.csaction': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.cs.csaction.csaction': cls.cs_action_mock, - } - - cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock) - cls.nitro_base_patcher = nitro_base_patcher - - @classmethod - def tearDownClass(cls): - cls.nitro_base_patcher.stop() - cls.nitro_specific_patcher.stop() - - def setUp(self): - super(TestNetscalerCSActionModule, self).setUp() - - self.nitro_base_patcher.start() - self.nitro_specific_patcher.start() - - # Setup minimal required arguments to pass AnsibleModule argument parsing - - def tearDown(self): - super(TestNetscalerCSActionModule, self).tearDown() - - self.nitro_base_patcher.stop() - self.nitro_specific_patcher.stop() - - def test_graceful_nitro_api_import_error(self): - # Stop nitro api patching to cause ImportError - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - self.nitro_base_patcher.stop() - self.nitro_specific_patcher.stop() - from ansible.modules.network.netscaler import netscaler_cs_action - self.module = netscaler_cs_action - result = self.failed() - self.assertEqual(result['msg'], 'Could not load nitro python sdk') - - def test_graceful_nitro_error_on_login(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_cs_action - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - client_mock = Mock() - client_mock.login = Mock(side_effect=MockException) - m = Mock(return_value=client_mock) - with patch('ansible.modules.network.netscaler.netscaler_cs_action.get_nitro_client', m): - with patch('ansible.modules.network.netscaler.netscaler_cs_action.nitro_exception', MockException): - self.module = netscaler_cs_action - result = self.failed() - self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly') - - def test_graceful_no_connection_error(self): - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_cs_action - - class MockException(Exception): - pass - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.ConnectionError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_action', - get_nitro_client=m, - nitro_exception=MockException, - ): - self.module = netscaler_cs_action - result = self.failed() - self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully') - - def test_graceful_login_error(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_cs_action - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - - class MockException(Exception): - pass - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.SSLError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_action', - get_nitro_client=m, - nitro_exception=MockException, - ): - self.module = netscaler_cs_action - result = self.failed() - self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully') - - def test_save_config_called_on_state_present(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_cs_action - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - cs_action_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_action', - get_nitro_client=m, - action_exists=Mock(side_effect=[False, True]), - ensure_feature_is_enabled=Mock(return_value=True), - diff_list=Mock(return_value={}), - ConfigProxy=Mock(return_value=cs_action_proxy_mock), - ): - self.module = netscaler_cs_action - self.exited() - self.assertIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_called_on_state_absent(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_cs_action - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - cs_action_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_action', - get_nitro_client=m, - action_exists=Mock(side_effect=[True, False]), - ensure_feature_is_enabled=Mock(return_value=True), - ConfigProxy=Mock(return_value=cs_action_proxy_mock), - ): - self.module = netscaler_cs_action - self.exited() - self.assertIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_not_called_on_state_present(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_cs_action - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - cs_action_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_action', - get_nitro_client=m, - action_exists=Mock(side_effect=[False, True]), - diff_list=Mock(return_value={}), - ensure_feature_is_enabled=Mock(return_value=True), - ConfigProxy=Mock(return_value=cs_action_proxy_mock), - ): - self.module = netscaler_cs_action - self.exited() - self.assertNotIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_not_called_on_state_absent(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_cs_action - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - cs_action_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_action', - get_nitro_client=m, - action_exists=Mock(side_effect=[True, False]), - ensure_feature_is_enabled=Mock(return_value=True), - ConfigProxy=Mock(return_value=cs_action_proxy_mock), - ): - self.module = netscaler_cs_action - self.exited() - self.assertNotIn(call.save_config(), client_mock.mock_calls) - - def test_new_cs_action_execution_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_cs_action - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - cs_action_proxy_mock = Mock() - cs_action_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=cs_action_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_action', - get_nitro_client=m, - action_exists=Mock(side_effect=[False, True]), - action_identical=Mock(side_effect=[True]), - ensure_feature_is_enabled=Mock(return_value=True), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_cs_action - self.exited() - cs_action_proxy_mock.assert_has_calls([call.add()]) - - def test_modified_cs_action_execution_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_cs_action - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - cs_action_proxy_mock = Mock() - cs_action_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=cs_action_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_action', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - action_exists=Mock(side_effect=[True, True]), - action_identical=Mock(side_effect=[False, True]), - ensure_feature_is_enabled=Mock(return_value=True), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_cs_action - self.exited() - cs_action_proxy_mock.assert_has_calls([call.update()]) - - def test_absent_cs_action_execution_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_cs_action - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - cs_action_proxy_mock = Mock() - cs_action_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=cs_action_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_action', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - action_exists=Mock(side_effect=[True, False]), - action_identical=Mock(side_effect=[False, True]), - ensure_feature_is_enabled=Mock(return_value=True), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_cs_action - self.exited() - cs_action_proxy_mock.assert_has_calls([call.delete()]) - - def test_present_cs_action_identical_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_cs_action - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - cs_action_proxy_mock = Mock() - cs_action_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=cs_action_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_action', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - action_exists=Mock(side_effect=[True, True]), - action_identical=Mock(side_effect=[True, True]), - ensure_feature_is_enabled=Mock(return_value=True), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_cs_action - self.exited() - cs_action_proxy_mock.assert_not_called() - - def test_absent_cs_action_noop_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_cs_action - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - cs_action_proxy_mock = Mock() - cs_action_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=cs_action_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_action', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - action_exists=Mock(side_effect=[False, False]), - action_identical=Mock(side_effect=[False, False]), - ensure_feature_is_enabled=Mock(return_value=True), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_cs_action - self.exited() - cs_action_proxy_mock.assert_not_called() - - def test_present_cs_action_failed_update(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_cs_action - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - cs_action_proxy_mock = Mock() - cs_action_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=cs_action_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_action', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - action_exists=Mock(side_effect=[True, True]), - action_identical=Mock(side_effect=[False, False]), - ensure_feature_is_enabled=Mock(return_value=True), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_cs_action - result = self.failed() - self.assertEqual(result['msg'], 'Content switching action differs from configured') - self.assertTrue(result['failed']) - - def test_present_cs_action_failed_create(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_cs_action - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - cs_action_proxy_mock = Mock() - cs_action_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=cs_action_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_action', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - action_exists=Mock(side_effect=[False, False]), - action_identical=Mock(side_effect=[False, False]), - ensure_feature_is_enabled=Mock(return_value=True), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_cs_action - result = self.failed() - self.assertEqual(result['msg'], 'Content switching action does not exist') - self.assertTrue(result['failed']) - - def test_present_cs_action_update_immutable_attribute(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_cs_action - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - cs_action_proxy_mock = Mock() - cs_action_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=cs_action_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_action', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=['domain']), - action_exists=Mock(side_effect=[True, True]), - action_identical=Mock(side_effect=[False, False]), - ensure_feature_is_enabled=Mock(return_value=True), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_cs_action - result = self.failed() - self.assertEqual(result['msg'], 'Cannot update immutable attributes [\'domain\']') - self.assertTrue(result['failed']) - - def test_absent_cs_action_failed_delete(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_cs_action - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - cs_action_proxy_mock = Mock() - cs_action_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=cs_action_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_action', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - action_exists=Mock(side_effect=[True, True]), - action_identical=Mock(side_effect=[False, False]), - ensure_feature_is_enabled=Mock(return_value=True), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_cs_action - result = self.failed() - self.assertEqual(result['msg'], 'Content switching action still exists') - self.assertTrue(result['failed']) - - def test_graceful_nitro_exception_state_present(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_cs_action - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - m = Mock(side_effect=MockException) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_action', - action_exists=m, - ensure_feature_is_enabled=Mock(return_value=True), - nitro_exception=MockException - ): - self.module = netscaler_cs_action - result = self.failed() - self.assertTrue( - result['msg'].startswith('nitro exception'), - msg='Nitro exception not caught on operation absent' - ) - - def test_graceful_nitro_exception_state_absent(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_cs_action - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - m = Mock(side_effect=MockException) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_action', - action_exists=m, - ensure_feature_is_enabled=Mock(return_value=True), - nitro_exception=MockException - ): - self.module = netscaler_cs_action - result = self.failed() - self.assertTrue( - result['msg'].startswith('nitro exception'), - msg='Nitro exception not caught on operation absent' - ) diff --git a/test/units/modules/network/netscaler/test_netscaler_cs_policy.py b/test/units/modules/network/netscaler/test_netscaler_cs_policy.py deleted file mode 100644 index 0cb0ab65e8..0000000000 --- a/test/units/modules/network/netscaler/test_netscaler_cs_policy.py +++ /dev/null @@ -1,329 +0,0 @@ - -# Copyright (c) 2017 Citrix Systems -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# - -from units.compat.mock import patch, Mock, MagicMock, call - -import sys - -if sys.version_info[:2] != (2, 6): - import requests - - -from units.modules.utils import set_module_args -from .netscaler_module import TestModule, nitro_base_patcher - - -class TestNetscalerCSPolicyModule(TestModule): - - @classmethod - def setUpClass(cls): - class MockException(Exception): - pass - cls.MockException = MockException - m = MagicMock() - nssrc_modules_mock = { - 'nssrc.com.citrix.netscaler.nitro.resource.config.cs': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.cs.cspolicy': m, - } - - cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock) - cls.nitro_base_patcher = nitro_base_patcher - - @classmethod - def tearDownClass(cls): - cls.nitro_base_patcher.stop() - cls.nitro_specific_patcher.stop() - - def set_module_state(self, state): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state=state, - )) - - def setUp(self): - super(TestNetscalerCSPolicyModule, self).setUp() - - self.nitro_base_patcher.start() - self.nitro_specific_patcher.start() - - def tearDown(self): - super(TestNetscalerCSPolicyModule, self).tearDown() - - self.nitro_base_patcher.stop() - self.nitro_specific_patcher.stop() - - def test_graceful_nitro_api_import_error(self): - # Stop nitro api patching to cause ImportError - self.set_module_state('present') - self.nitro_base_patcher.stop() - self.nitro_specific_patcher.stop() - from ansible.modules.network.netscaler import netscaler_cs_policy - self.module = netscaler_cs_policy - result = self.failed() - self.assertEqual(result['msg'], 'Could not load nitro python sdk') - - def test_graceful_nitro_error_on_login(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_cs_policy - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - client_mock = Mock() - client_mock.login = Mock(side_effect=MockException) - m = Mock(return_value=client_mock) - with patch('ansible.modules.network.netscaler.netscaler_cs_policy.get_nitro_client', m): - with patch('ansible.modules.network.netscaler.netscaler_cs_policy.nitro_exception', MockException): - self.module = netscaler_cs_policy - result = self.failed() - self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly') - - def test_graceful_no_connection_error(self): - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_cs_policy - - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.ConnectionError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_policy', - get_nitro_client=m, - nitro_exception=self.MockException, - ): - self.module = netscaler_cs_policy - result = self.failed() - self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully') - - def test_graceful_login_error(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_cs_policy - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - - class MockException(Exception): - pass - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.SSLError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_policy', - get_nitro_client=m, - nitro_exception=MockException, - ): - self.module = netscaler_cs_policy - result = self.failed() - self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully') - - def test_create_non_existing_cs_policy(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_cs_policy - cs_policy_mock = MagicMock() - attrs = { - 'diff_object.return_value': {}, - } - cs_policy_mock.configure_mock(**attrs) - - m = MagicMock(return_value=cs_policy_mock) - policy_exists_mock = Mock(side_effect=[False, True]) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_policy', - ConfigProxy=m, - policy_exists=policy_exists_mock, - nitro_exception=self.MockException, - ensure_feature_is_enabled=Mock(), - ): - self.module = netscaler_cs_policy - result = self.exited() - cs_policy_mock.assert_has_calls([call.add()]) - self.assertTrue(result['changed'], msg='Change not recorded') - - def test_update_cs_policy_when_cs_policy_differs(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_cs_policy - cs_policy_mock = MagicMock() - attrs = { - 'diff_object.return_value': {}, - } - cs_policy_mock.configure_mock(**attrs) - - m = MagicMock(return_value=cs_policy_mock) - policy_exists_mock = Mock(side_effect=[True, True]) - policy_identical_mock = Mock(side_effect=[False, True]) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_policy', - ConfigProxy=m, - policy_exists=policy_exists_mock, - policy_identical=policy_identical_mock, - ensure_feature_is_enabled=Mock(), - nitro_exception=self.MockException, - ): - self.module = netscaler_cs_policy - result = self.exited() - cs_policy_mock.assert_has_calls([call.update()]) - self.assertTrue(result['changed'], msg='Change not recorded') - - def test_no_change_to_module_when_all_identical(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_cs_policy - cs_policy_mock = MagicMock() - attrs = { - 'diff_object.return_value': {}, - } - cs_policy_mock.configure_mock(**attrs) - - m = MagicMock(return_value=cs_policy_mock) - policy_exists_mock = Mock(side_effect=[True, True]) - policy_identical_mock = Mock(side_effect=[True, True]) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_policy', - ConfigProxy=m, - policy_exists=policy_exists_mock, - policy_identical=policy_identical_mock, - ensure_feature_is_enabled=Mock(), - nitro_exception=self.MockException, - ): - self.module = netscaler_cs_policy - result = self.exited() - self.assertFalse(result['changed'], msg='Erroneous changed status update') - - def test_absent_operation(self): - self.set_module_state('absent') - from ansible.modules.network.netscaler import netscaler_cs_policy - cs_policy_mock = MagicMock() - attrs = { - 'diff_object.return_value': {}, - } - cs_policy_mock.configure_mock(**attrs) - - m = MagicMock(return_value=cs_policy_mock) - policy_exists_mock = Mock(side_effect=[True, False]) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_policy', - ConfigProxy=m, - policy_exists=policy_exists_mock, - nitro_exception=self.MockException, - ensure_feature_is_enabled=Mock(), - - ): - self.module = netscaler_cs_policy - result = self.exited() - cs_policy_mock.assert_has_calls([call.delete()]) - self.assertTrue(result['changed'], msg='Changed status not set correctly') - - def test_absent_operation_no_change(self): - self.set_module_state('absent') - from ansible.modules.network.netscaler import netscaler_cs_policy - cs_policy_mock = MagicMock() - attrs = { - 'diff_object.return_value': {}, - } - cs_policy_mock.configure_mock(**attrs) - - m = MagicMock(return_value=cs_policy_mock) - policy_exists_mock = Mock(side_effect=[False, False]) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_policy', - ConfigProxy=m, - policy_exists=policy_exists_mock, - nitro_exception=self.MockException, - ensure_feature_is_enabled=Mock(), - - ): - self.module = netscaler_cs_policy - result = self.exited() - cs_policy_mock.assert_not_called() - self.assertFalse(result['changed'], msg='Changed status not set correctly') - - def test_graceful_nitro_exception_operation_present(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_cs_policy - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - m = Mock(side_effect=MockException) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_policy', - policy_exists=m, - ensure_feature_is_enabled=Mock(), - nitro_exception=MockException - ): - self.module = netscaler_cs_policy - result = self.failed() - self.assertTrue( - result['msg'].startswith('nitro exception'), - msg='Nitro exception not caught on operation present' - ) - - def test_graceful_nitro_exception_operation_absent(self): - self.set_module_state('absent') - from ansible.modules.network.netscaler import netscaler_cs_policy - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - m = Mock(side_effect=MockException) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_policy', - policy_exists=m, - nitro_exception=MockException, - ensure_feature_is_enabled=Mock(), - ): - self.module = netscaler_cs_policy - result = self.failed() - self.assertTrue( - result['msg'].startswith('nitro exception'), - msg='Nitro exception not caught on operation absent' - ) - - def test_ensure_feature_is_enabled_called(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_cs_policy - - client_mock = Mock() - ensure_feature_is_enabled_mock = Mock() - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_policy', - get_nitro_client=Mock(return_value=client_mock), - policy_exists=Mock(side_effect=[True, True]), - nitro_exception=self.MockException, - ensure_feature_is_enabled=ensure_feature_is_enabled_mock, - ): - self.module = netscaler_cs_policy - result = self.exited() - ensure_feature_is_enabled_mock.assert_has_calls([call(client_mock, 'CS')]) diff --git a/test/units/modules/network/netscaler/test_netscaler_cs_vserver.py b/test/units/modules/network/netscaler/test_netscaler_cs_vserver.py deleted file mode 100644 index b264661b65..0000000000 --- a/test/units/modules/network/netscaler/test_netscaler_cs_vserver.py +++ /dev/null @@ -1,765 +0,0 @@ - -# Copyright (c) 2017 Citrix Systems -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# - -from units.compat.mock import patch, Mock, MagicMock, call -from units.modules.utils import set_module_args -from .netscaler_module import TestModule, nitro_base_patcher - -import sys - -if sys.version_info[:2] != (2, 6): - import requests - - -class TestNetscalerCSVserverModule(TestModule): - - @classmethod - def setUpClass(cls): - class MockException(Exception): - pass - - cls.MockException = MockException - - m = MagicMock() - cls.cs_vserver_mock = MagicMock() - cls.cs_vserver_mock.__class__ = MagicMock(add=Mock()) - nssrc_modules_mock = { - 'nssrc.com.citrix.netscaler.nitro.resource.config.cs': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.cs.csvserver': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.cs.csvserver.csvserver': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.cs.csvserver_cspolicy_binding': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.cs.csvserver_cspolicy_binding.csvserver_cspolicy_binding': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.cs.csvserver_lbvserver_binding': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.cs.csvserver_lbvserver_binding.csvserver_lbvserver_binding': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.ssl': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.ssl.sslvserver_sslcertkey_binding': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.ssl.sslvserver_sslcertkey_binding.sslvserver_sslcertkey_binding': m, - } - - cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock) - cls.nitro_base_patcher = nitro_base_patcher - - @classmethod - def tearDownClass(cls): - cls.nitro_base_patcher.stop() - cls.nitro_specific_patcher.stop() - - def setUp(self): - super(TestNetscalerCSVserverModule, self).setUp() - - self.nitro_base_patcher.start() - self.nitro_specific_patcher.start() - - # Setup minimal required arguments to pass AnsibleModule argument parsing - - def tearDown(self): - super(TestNetscalerCSVserverModule, self).tearDown() - - self.nitro_base_patcher.stop() - self.nitro_specific_patcher.stop() - - def test_graceful_nitro_api_import_error(self): - # Stop nitro api patching to cause ImportError - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - self.nitro_base_patcher.stop() - self.nitro_specific_patcher.stop() - from ansible.modules.network.netscaler import netscaler_cs_vserver - self.module = netscaler_cs_vserver - result = self.failed() - self.assertEqual(result['msg'], 'Could not load nitro python sdk') - - def test_graceful_nitro_error_on_login(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_cs_vserver - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - client_mock = Mock() - client_mock.login = Mock(side_effect=MockException) - m = Mock(return_value=client_mock) - with patch('ansible.modules.network.netscaler.netscaler_cs_vserver.get_nitro_client', m): - with patch('ansible.modules.network.netscaler.netscaler_cs_vserver.nitro_exception', MockException): - self.module = netscaler_cs_vserver - result = self.failed() - self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly') - - def test_graceful_no_connection_error(self): - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_cs_vserver - - class MockException(Exception): - pass - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.ConnectionError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_vserver', - get_nitro_client=m, - nitro_exception=MockException, - ): - self.module = netscaler_cs_vserver - result = self.failed() - self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully') - - def test_graceful_login_error(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_cs_vserver - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - - class MockException(Exception): - pass - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.SSLError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_vserver', - get_nitro_client=m, - nitro_exception=MockException, - ): - self.module = netscaler_cs_vserver - result = self.failed() - self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully') - - def test_save_config_called_on_state_present(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_cs_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - cs_vserver_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_vserver', - get_nitro_client=m, - cs_vserver_exists=Mock(side_effect=[False, True]), - cs_vserver_identical=Mock(side_effect=[True]), - ensure_feature_is_enabled=Mock(return_value=True), - diff_list=Mock(return_value={}), - nitro_exception=self.MockException, - do_state_change=Mock(return_value=Mock(errorcode=0)), - ConfigProxy=Mock(return_value=cs_vserver_proxy_mock), - ): - self.module = netscaler_cs_vserver - self.exited() - self.assertIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_called_on_state_absent(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_cs_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - cs_vserver_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_vserver', - get_nitro_client=m, - cs_vserver_exists=Mock(side_effect=[True, False]), - ensure_feature_is_enabled=Mock(return_value=True), - ConfigProxy=Mock(return_value=cs_vserver_proxy_mock), - ): - self.module = netscaler_cs_vserver - self.exited() - self.assertIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_not_called_on_state_present(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_cs_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - cs_vserver_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_vserver', - get_nitro_client=m, - cs_vserver_exists=Mock(side_effect=[False, True]), - cs_vserver_identical=Mock(side_effect=[True]), - diff_list=Mock(return_value={}), - ensure_feature_is_enabled=Mock(return_value=True), - do_state_change=Mock(return_value=Mock(errorcode=0)), - nitro_exception=self.MockException, - ConfigProxy=Mock(return_value=cs_vserver_proxy_mock), - ): - self.module = netscaler_cs_vserver - self.exited() - self.assertNotIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_not_called_on_state_absent(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_cs_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - cs_vserver_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_vserver', - get_nitro_client=m, - cs_vserver_exists=Mock(side_effect=[True, False]), - ensure_feature_is_enabled=Mock(return_value=True), - ConfigProxy=Mock(return_value=cs_vserver_proxy_mock), - ): - self.module = netscaler_cs_vserver - self.exited() - self.assertNotIn(call.save_config(), client_mock.mock_calls) - - def test_new_cs_vserver_execution_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_cs_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - cs_vserver_proxy_mock = Mock() - cs_vserver_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=cs_vserver_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_vserver', - get_nitro_client=m, - cs_vserver_exists=Mock(side_effect=[False, True]), - cs_vserver_identical=Mock(side_effect=[True]), - ensure_feature_is_enabled=Mock(return_value=True), - ConfigProxy=config_proxy_mock, - nitro_exception=self.MockException, - do_state_change=Mock(return_value=Mock(errorcode=0)), - ): - self.module = netscaler_cs_vserver - self.exited() - cs_vserver_proxy_mock.assert_has_calls([call.add()]) - - def test_modified_cs_vserver_execution_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_cs_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - cs_vserver_proxy_mock = Mock() - cs_vserver_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=cs_vserver_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_vserver', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - cs_vserver_exists=Mock(side_effect=[True, True]), - cs_vserver_identical=Mock(side_effect=[False, True]), - ensure_feature_is_enabled=Mock(return_value=True), - nitro_exception=self.MockException, - do_state_change=Mock(return_value=Mock(errorcode=0)), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_cs_vserver - self.exited() - cs_vserver_proxy_mock.assert_has_calls([call.update()]) - - def test_absent_cs_vserver_execution_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_cs_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - cs_vserver_proxy_mock = Mock() - cs_vserver_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=cs_vserver_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_vserver', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - cs_vserver_exists=Mock(side_effect=[True, False]), - cs_vserver_identical=Mock(side_effect=[False, True]), - ensure_feature_is_enabled=Mock(return_value=True), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_cs_vserver - self.exited() - cs_vserver_proxy_mock.assert_has_calls([call.delete()]) - - def test_present_cs_vserver_identical_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_cs_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - cs_vserver_proxy_mock = Mock() - cs_vserver_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=cs_vserver_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_vserver', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - cs_vserver_exists=Mock(side_effect=[True, True]), - cs_vserver_identical=Mock(side_effect=[True, True]), - ensure_feature_is_enabled=Mock(return_value=True), - do_state_change=Mock(return_value=Mock(errorcode=0)), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_cs_vserver - self.exited() - cs_vserver_proxy_mock.assert_not_called() - - def test_absent_cs_vserver_noop_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_cs_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - cs_vserver_proxy_mock = Mock() - cs_vserver_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=cs_vserver_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_vserver', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - cs_vserver_exists=Mock(side_effect=[False, False]), - cs_vserver_identical=Mock(side_effect=[False, False]), - ensure_feature_is_enabled=Mock(return_value=True), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_cs_vserver - self.exited() - cs_vserver_proxy_mock.assert_not_called() - - def test_present_cs_vserver_failed_update(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_cs_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - cs_vserver_proxy_mock = Mock() - cs_vserver_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=cs_vserver_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_vserver', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - cs_vserver_exists=Mock(side_effect=[True, True]), - cs_vserver_identical=Mock(side_effect=[False, False]), - ensure_feature_is_enabled=Mock(return_value=True), - do_state_change=Mock(return_value=Mock(errorcode=0)), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_cs_vserver - result = self.failed() - self.assertEqual(result['msg'], 'CS vserver differs from configured') - self.assertTrue(result['failed']) - - def test_present_cs_vserver_failed_create(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_cs_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - cs_vserver_proxy_mock = Mock() - cs_vserver_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=cs_vserver_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_vserver', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - cs_vserver_exists=Mock(side_effect=[False, False]), - cs_vserver_identical=Mock(side_effect=[False, False]), - ensure_feature_is_enabled=Mock(return_value=True), - do_state_change=Mock(return_value=Mock(errorcode=0)), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_cs_vserver - result = self.failed() - self.assertEqual(result['msg'], 'CS vserver does not exist') - self.assertTrue(result['failed']) - - def test_present_cs_vserver_update_immutable_attribute(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_cs_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - cs_vserver_proxy_mock = Mock() - cs_vserver_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=cs_vserver_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_vserver', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=['domain']), - cs_vserver_exists=Mock(side_effect=[True, True]), - cs_vserver_identical=Mock(side_effect=[False, False]), - ensure_feature_is_enabled=Mock(return_value=True), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_cs_vserver - result = self.failed() - self.assertEqual(result['msg'], 'Cannot update immutable attributes [\'domain\']') - self.assertTrue(result['failed']) - - def test_absent_cs_vserver_failed_delete(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_cs_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - cs_vserver_proxy_mock = Mock() - cs_vserver_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=cs_vserver_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_vserver', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - cs_vserver_exists=Mock(side_effect=[True, True]), - cs_vserver_identical=Mock(side_effect=[False, False]), - ensure_feature_is_enabled=Mock(return_value=True), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_cs_vserver - result = self.failed() - self.assertEqual(result['msg'], 'CS vserver still exists') - self.assertTrue(result['failed']) - - def test_graceful_nitro_exception_state_present(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_cs_vserver - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - m = Mock(side_effect=MockException) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_vserver', - cs_vserver_exists=m, - ensure_feature_is_enabled=Mock(return_value=True), - nitro_exception=MockException - ): - self.module = netscaler_cs_vserver - result = self.failed() - self.assertTrue( - result['msg'].startswith('nitro exception'), - msg='Nitro exception not caught on operation absent' - ) - - def test_graceful_nitro_exception_state_absent(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_cs_vserver - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - m = Mock(side_effect=MockException) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_vserver', - cs_vserver_exists=m, - ensure_feature_is_enabled=Mock(return_value=True), - nitro_exception=MockException - ): - self.module = netscaler_cs_vserver - result = self.failed() - self.assertTrue( - result['msg'].startswith('nitro exception'), - msg='Nitro exception not caught on operation absent' - ) - - def test_disabled_state_change_called(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - - from ansible.modules.network.netscaler import netscaler_cs_vserver - - cs_vserver_proxy_mock = Mock() - - do_state_change_mock = Mock(return_value=Mock(errorcode=0)) - client_mock = Mock() - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_vserver', - get_nitro_client=Mock(return_value=client_mock), - ConfigProxy=Mock(return_value=cs_vserver_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - cs_vserver_exists=Mock(side_effect=[True, True]), - cs_vserver_identical=Mock(side_effect=[True, True]), - nitro_exception=self.MockException, - do_state_change=do_state_change_mock, - ): - self.module = netscaler_cs_vserver - self.exited() - self.assertTrue(len(do_state_change_mock.mock_calls) > 0, msg='Did not call state change') - - def test_cs_vserver_ssl_called(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - servicetype='SSL', - )) - from ansible.modules.network.netscaler import netscaler_cs_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - cs_vserver_proxy_mock = Mock() - cs_vserver_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=cs_vserver_proxy_mock) - ssl_certkey_bindings_sync_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_vserver', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - cs_vserver_exists=Mock(side_effect=[True, True]), - cs_vserver_identical=Mock(side_effect=[False, True]), - ensure_feature_is_enabled=Mock(return_value=True), - ssl_certkey_bindings_identical=Mock(side_effect=[False, True]), - ssl_certkey_bindings_sync=ssl_certkey_bindings_sync_mock, - do_state_change=Mock(return_value=Mock(errorcode=0)), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_cs_vserver - result = self.exited() - self.assertTrue(result['changed']) - self.assertTrue(ssl_certkey_bindings_sync_mock.called) - - def test_cs_vserver_ssl_not_called(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_cs_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - cs_vserver_proxy_mock = Mock() - cs_vserver_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=cs_vserver_proxy_mock) - ssl_certkey_bindings_sync_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_cs_vserver', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - cs_vserver_exists=Mock(side_effect=[True, True]), - cs_vserver_identical=Mock(side_effect=[False, True]), - ensure_feature_is_enabled=Mock(return_value=True), - ssl_certkey_bindings_identical=Mock(side_effect=[False, True]), - ssl_certkey_bindings_sync=ssl_certkey_bindings_sync_mock, - do_state_change=Mock(return_value=Mock(errorcode=0)), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_cs_vserver - result = self.exited() - self.assertTrue(result['changed']) - self.assertFalse(ssl_certkey_bindings_sync_mock.called) diff --git a/test/units/modules/network/netscaler/test_netscaler_gslb_service.py b/test/units/modules/network/netscaler/test_netscaler_gslb_service.py deleted file mode 100644 index 44bf299ba1..0000000000 --- a/test/units/modules/network/netscaler/test_netscaler_gslb_service.py +++ /dev/null @@ -1,735 +0,0 @@ - -# Copyright (c) 2017 Citrix Systems -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# - -from units.compat.mock import patch, Mock, MagicMock, call -from units.modules.utils import set_module_args -from .netscaler_module import TestModule, nitro_base_patcher - -import sys - -if sys.version_info[:2] != (2, 6): - import requests - - -class TestNetscalerGSLBSiteModule(TestModule): - - @classmethod - def setUpClass(cls): - class MockException(Exception): - pass - - cls.MockException = MockException - - m = MagicMock() - nssrc_modules_mock = { - 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbservice': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbservice.gslbservice': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbservice_lbmonitor_binding': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbservice_lbmonitor_binding.gslbservice_lbmonitor_binding': m, - - # The following are needed because of monkey_patch_nitro_api() - 'nssrc.com.citrix.netscaler.nitro.resource.base': m, - 'nssrc.com.citrix.netscaler.nitro.resource.base.Json': m, - 'nssrc.com.citrix.netscaler.nitro.resource.base.Json.Json': m, - 'nssrc.com.citrix.netscaler.nitro.util': m, - 'nssrc.com.citrix.netscaler.nitro.util.nitro_util': m, - 'nssrc.com.citrix.netscaler.nitro.util.nitro_util.nitro_util': m, - } - - cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock) - cls.nitro_base_patcher = nitro_base_patcher - - @classmethod - def tearDownClass(cls): - cls.nitro_base_patcher.stop() - cls.nitro_specific_patcher.stop() - - def setUp(self): - super(TestNetscalerGSLBSiteModule, self).setUp() - - self.nitro_base_patcher.start() - self.nitro_specific_patcher.start() - - # Setup minimal required arguments to pass AnsibleModule argument parsing - - def tearDown(self): - super(TestNetscalerGSLBSiteModule, self).tearDown() - - self.nitro_base_patcher.stop() - self.nitro_specific_patcher.stop() - - def test_graceful_nitro_api_import_error(self): - # Stop nitro api patching to cause ImportError - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - self.nitro_base_patcher.stop() - self.nitro_specific_patcher.stop() - from ansible.modules.network.netscaler import netscaler_gslb_service - self.module = netscaler_gslb_service - result = self.failed() - self.assertEqual(result['msg'], 'Could not load nitro python sdk') - - def test_graceful_nitro_error_on_login(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_service - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - client_mock = Mock() - client_mock.login = Mock(side_effect=MockException) - m = Mock(return_value=client_mock) - with patch('ansible.modules.network.netscaler.netscaler_gslb_service.get_nitro_client', m): - with patch('ansible.modules.network.netscaler.netscaler_gslb_service.nitro_exception', MockException): - self.module = netscaler_gslb_service - result = self.failed() - self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly') - - def test_graceful_no_connection_error(self): - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_service - - class MockException(Exception): - pass - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.ConnectionError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_service', - get_nitro_client=m, - nitro_exception=MockException, - ): - self.module = netscaler_gslb_service - result = self.failed() - self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully') - - def test_graceful_login_error(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_service - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - - class MockException(Exception): - pass - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.SSLError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_service', - get_nitro_client=m, - monkey_patch_nitro_api=Mock(), - nitro_exception=MockException, - ): - self.module = netscaler_gslb_service - result = self.failed() - self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully') - - def test_ensure_feature_is_enabled_called(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_service - - gslb_service_proxy_mock = Mock() - ensure_feature_is_enabled_mock = Mock() - client_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_service', - get_nitro_client=Mock(return_value=client_mock), - gslb_service_exists=Mock(side_effect=[False, True]), - gslb_service_identical=Mock(side_effect=[True]), - nitro_exception=self.MockException, - ensure_feature_is_enabled=ensure_feature_is_enabled_mock, - monkey_patch_nitro_api=Mock(), - ConfigProxy=Mock(return_value=gslb_service_proxy_mock), - ): - self.module = netscaler_gslb_service - self.exited() - ensure_feature_is_enabled_mock.assert_called_with(client_mock, 'GSLB') - - def test_save_config_called_on_state_present(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_service - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - gslb_service_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_service', - get_nitro_client=m, - gslb_service_exists=Mock(side_effect=[False, True]), - gslb_service_identical=Mock(side_effect=[True]), - nitro_exception=self.MockException, - ensure_feature_is_enabled=Mock(), - monkey_patch_nitro_api=Mock(), - ConfigProxy=Mock(return_value=gslb_service_proxy_mock), - ): - self.module = netscaler_gslb_service - self.exited() - self.assertIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_called_on_state_absent(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_gslb_service - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - gslb_service_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_service', - get_nitro_client=m, - gslb_service_exists=Mock(side_effect=[True, False]), - nitro_exception=self.MockException, - ensure_feature_is_enabled=Mock(), - monkey_patch_nitro_api=Mock(), - ConfigProxy=Mock(return_value=gslb_service_proxy_mock), - ): - self.module = netscaler_gslb_service - self.exited() - self.assertIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_not_called_on_state_present(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_gslb_service - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - gslb_service_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_service', - get_nitro_client=m, - gslb_service_exists=Mock(side_effect=[False, True]), - gslb_service_identical=Mock(side_effect=[True]), - nitro_exception=self.MockException, - ensure_feature_is_enabled=Mock(), - monkey_patch_nitro_api=Mock(), - ConfigProxy=Mock(return_value=gslb_service_proxy_mock), - ): - self.module = netscaler_gslb_service - self.exited() - self.assertNotIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_not_called_on_state_absent(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_gslb_service - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - gslb_service_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_service', - get_nitro_client=m, - gslb_service_exists=Mock(side_effect=[True, False]), - nitro_exception=self.MockException, - ensure_feature_is_enabled=Mock(), - monkey_patch_nitro_api=Mock(), - ConfigProxy=Mock(return_value=gslb_service_proxy_mock), - ): - self.module = netscaler_gslb_service - self.exited() - self.assertNotIn(call.save_config(), client_mock.mock_calls) - - def test_new_gslb_site_execution_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_service - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_service_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_service_proxy_mock = Mock() - gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_service_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_service', - get_nitro_client=m, - gslb_service_exists=Mock(side_effect=[False, True]), - gslb_service_identical=Mock(side_effect=[True]), - nitro_exception=self.MockException, - ensure_feature_is_enabled=Mock(), - monkey_patch_nitro_api=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_service - self.exited() - gslb_service_proxy_mock.assert_has_calls([call.add()]) - - def test_modified_gslb_site_execution_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_service - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_service_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_service_proxy_mock = Mock() - gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_service_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_service', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - gslb_service_exists=Mock(side_effect=[True, True]), - gslb_service_identical=Mock(side_effect=[False, False, True]), - monitor_bindings_identical=Mock(side_effect=[True, True, True]), - ensure_feature_is_enabled=Mock(), - monkey_patch_nitro_api=Mock(), - nitro_exception=self.MockException, - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_service - self.exited() - gslb_service_proxy_mock.assert_has_calls([call.update()]) - - def test_absent_gslb_site_execution_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_gslb_service - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_service_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_service_proxy_mock = Mock() - gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_service_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_service', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - gslb_service_exists=Mock(side_effect=[True, False]), - gslb_service_identical=Mock(side_effect=[False, True]), - ensure_feature_is_enabled=Mock(), - monkey_patch_nitro_api=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_service - self.exited() - gslb_service_proxy_mock.assert_has_calls([call.delete()]) - - def test_present_gslb_service_identical_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_service - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_service_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_service_proxy_mock = Mock() - gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_service_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_service', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - gslb_service_exists=Mock(side_effect=[True, True]), - gslb_service_identical=Mock(side_effect=[True, True]), - nitro_exception=self.MockException, - ensure_feature_is_enabled=Mock(), - monkey_patch_nitro_api=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_service - self.exited() - gslb_service_proxy_mock.assert_not_called() - - def test_absent_gslb_site_noop_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_gslb_service - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_service_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_service_proxy_mock = Mock() - gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_service_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_service', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - gslb_service_exists=Mock(side_effect=[False, False]), - gslb_service_identical=Mock(side_effect=[False, False]), - nitro_exception=self.MockException, - ensure_feature_is_enabled=Mock(), - monkey_patch_nitro_api=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_service - self.exited() - gslb_service_proxy_mock.assert_not_called() - - def test_present_gslb_site_failed_update(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_service - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_service_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_service_proxy_mock = Mock() - gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_service_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_service', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - gslb_service_exists=Mock(side_effect=[True, True]), - gslb_service_identical=Mock(side_effect=[False, False, False]), - monitor_bindings_identical=Mock(side_effect=[True, True, True]), - ensure_feature_is_enabled=Mock(), - monkey_patch_nitro_api=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_service - result = self.failed() - self.assertEqual(result['msg'], 'GSLB service differs from configured') - self.assertTrue(result['failed']) - - def test_present_gslb_site_failed_monitor_bindings_update(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_service - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_service_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_service_proxy_mock = Mock() - gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_service_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_service', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - gslb_service_exists=Mock(side_effect=[True, True]), - gslb_service_identical=Mock(side_effect=[False, False, True]), - monitor_bindings_identical=Mock(side_effect=[False, False, False]), - ensure_feature_is_enabled=Mock(), - monkey_patch_nitro_api=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_service - result = self.failed() - self.assertEqual(result['msg'], 'Monitor bindings differ from configured') - self.assertTrue(result['failed']) - - def test_present_gslb_site_failed_create(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_service - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_service_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_service_proxy_mock = Mock() - gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_service_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_service', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - gslb_service_exists=Mock(side_effect=[False, False]), - gslb_service_identical=Mock(side_effect=[False, False]), - ensure_feature_is_enabled=Mock(), - monkey_patch_nitro_api=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_service - result = self.failed() - self.assertEqual(result['msg'], 'GSLB service does not exist') - self.assertTrue(result['failed']) - - def test_present_gslb_site_update_immutable_attribute(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_service - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_service_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_service_proxy_mock = Mock() - gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_service_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_service', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=['domain']), - gslb_service_exists=Mock(side_effect=[True, True]), - gslb_service_identical=Mock(side_effect=[False, False]), - ensure_feature_is_enabled=Mock(), - monkey_patch_nitro_api=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_service - result = self.failed() - self.assertEqual(result['msg'], 'Cannot update immutable attributes [\'domain\']') - self.assertTrue(result['failed']) - - def test_absent_gslb_site_failed_delete(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_gslb_service - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_service_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_service_proxy_mock = Mock() - gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_service_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_service', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - gslb_service_exists=Mock(side_effect=[True, True]), - gslb_service_identical=Mock(side_effect=[False, False]), - ensure_feature_is_enabled=Mock(), - monkey_patch_nitro_api=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_service - result = self.failed() - self.assertEqual(result['msg'], 'GSLB service still exists') - self.assertTrue(result['failed']) - - def test_graceful_nitro_exception_state_present(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_service - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - m = Mock(side_effect=MockException) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_service', - gslb_service_exists=m, - ensure_feature_is_enabled=Mock(), - monkey_patch_nitro_api=Mock(), - nitro_exception=MockException - ): - self.module = netscaler_gslb_service - result = self.failed() - self.assertTrue( - result['msg'].startswith('nitro exception'), - msg='Nitro exception not caught on operation absent' - ) - - def test_graceful_nitro_exception_state_absent(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_gslb_service - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - m = Mock(side_effect=MockException) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_service', - gslb_service_exists=m, - ensure_feature_is_enabled=Mock(), - monkey_patch_nitro_api=Mock(), - nitro_exception=MockException - ): - self.module = netscaler_gslb_service - result = self.failed() - self.assertTrue( - result['msg'].startswith('nitro exception'), - msg='Nitro exception not caught on operation absent' - ) diff --git a/test/units/modules/network/netscaler/test_netscaler_gslb_site.py b/test/units/modules/network/netscaler/test_netscaler_gslb_site.py deleted file mode 100644 index a9ed138b92..0000000000 --- a/test/units/modules/network/netscaler/test_netscaler_gslb_site.py +++ /dev/null @@ -1,668 +0,0 @@ - -# Copyright (c) 2017 Citrix Systems -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# - -from units.compat.mock import patch, Mock, MagicMock, call -from units.modules.utils import set_module_args -from .netscaler_module import TestModule, nitro_base_patcher - -import sys - -if sys.version_info[:2] != (2, 6): - import requests - - -class TestNetscalerGSLBSiteModule(TestModule): - - @classmethod - def setUpClass(cls): - class MockException(Exception): - pass - - cls.MockException = MockException - - m = MagicMock() - nssrc_modules_mock = { - 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbsite': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbsite.gslbsite': m, - } - - cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock) - cls.nitro_base_patcher = nitro_base_patcher - - @classmethod - def tearDownClass(cls): - cls.nitro_base_patcher.stop() - cls.nitro_specific_patcher.stop() - - def setUp(self): - super(TestNetscalerGSLBSiteModule, self).setUp() - - self.nitro_base_patcher.start() - self.nitro_specific_patcher.start() - - # Setup minimal required arguments to pass AnsibleModule argument parsing - - def tearDown(self): - super(TestNetscalerGSLBSiteModule, self).tearDown() - - self.nitro_base_patcher.stop() - self.nitro_specific_patcher.stop() - - def test_graceful_nitro_api_import_error(self): - # Stop nitro api patching to cause ImportError - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - self.nitro_base_patcher.stop() - self.nitro_specific_patcher.stop() - from ansible.modules.network.netscaler import netscaler_gslb_site - self.module = netscaler_gslb_site - result = self.failed() - self.assertEqual(result['msg'], 'Could not load nitro python sdk') - - def test_graceful_nitro_error_on_login(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_site - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - client_mock = Mock() - client_mock.login = Mock(side_effect=MockException) - m = Mock(return_value=client_mock) - with patch('ansible.modules.network.netscaler.netscaler_gslb_site.get_nitro_client', m): - with patch('ansible.modules.network.netscaler.netscaler_gslb_site.nitro_exception', MockException): - self.module = netscaler_gslb_site - result = self.failed() - self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly') - - def test_graceful_no_connection_error(self): - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_site - - class MockException(Exception): - pass - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.ConnectionError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_site', - get_nitro_client=m, - nitro_exception=MockException, - ): - self.module = netscaler_gslb_site - result = self.failed() - self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully') - - def test_graceful_login_error(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_site - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - - class MockException(Exception): - pass - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.SSLError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_site', - get_nitro_client=m, - nitro_exception=MockException, - ): - self.module = netscaler_gslb_site - result = self.failed() - self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully') - - def test_ensure_feature_is_enabled_called(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_site - - gslb_site_proxy_mock = Mock() - ensure_feature_is_enabled_mock = Mock() - client_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_site', - get_nitro_client=Mock(return_value=client_mock), - gslb_site_exists=Mock(side_effect=[False, True]), - gslb_site_identical=Mock(side_effect=[True]), - nitro_exception=self.MockException, - ensure_feature_is_enabled=ensure_feature_is_enabled_mock, - ConfigProxy=Mock(return_value=gslb_site_proxy_mock), - ): - self.module = netscaler_gslb_site - self.exited() - ensure_feature_is_enabled_mock.assert_called_with(client_mock, 'GSLB') - - def test_save_config_called_on_state_present(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_site - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - gslb_site_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_site', - get_nitro_client=m, - gslb_site_exists=Mock(side_effect=[False, True]), - gslb_site_identical=Mock(side_effect=[True]), - nitro_exception=self.MockException, - ensure_feature_is_enabled=Mock(), - ConfigProxy=Mock(return_value=gslb_site_proxy_mock), - ): - self.module = netscaler_gslb_site - self.exited() - self.assertIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_called_on_state_absent(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_gslb_site - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - gslb_site_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_site', - get_nitro_client=m, - gslb_site_exists=Mock(side_effect=[True, False]), - nitro_exception=self.MockException, - ensure_feature_is_enabled=Mock(), - ConfigProxy=Mock(return_value=gslb_site_proxy_mock), - ): - self.module = netscaler_gslb_site - self.exited() - self.assertIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_not_called_on_state_present(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_gslb_site - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - gslb_site_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_site', - get_nitro_client=m, - gslb_site_exists=Mock(side_effect=[False, True]), - gslb_site_identical=Mock(side_effect=[True]), - nitro_exception=self.MockException, - ensure_feature_is_enabled=Mock(), - ConfigProxy=Mock(return_value=gslb_site_proxy_mock), - ): - self.module = netscaler_gslb_site - self.exited() - self.assertNotIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_not_called_on_state_absent(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_gslb_site - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - gslb_site_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_site', - get_nitro_client=m, - gslb_site_exists=Mock(side_effect=[True, False]), - nitro_exception=self.MockException, - ensure_feature_is_enabled=Mock(), - ConfigProxy=Mock(return_value=gslb_site_proxy_mock), - ): - self.module = netscaler_gslb_site - self.exited() - self.assertNotIn(call.save_config(), client_mock.mock_calls) - - def test_new_gslb_site_execution_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_site - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_site_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_site_proxy_mock = Mock() - gslb_site_proxy_mock.configure_mock(**glsb_site_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_site_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_site', - get_nitro_client=m, - gslb_site_exists=Mock(side_effect=[False, True]), - gslb_site_identical=Mock(side_effect=[True]), - nitro_exception=self.MockException, - ensure_feature_is_enabled=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_site - self.exited() - gslb_site_proxy_mock.assert_has_calls([call.add()]) - - def test_modified_gslb_site_execution_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_site - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_site_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_site_proxy_mock = Mock() - gslb_site_proxy_mock.configure_mock(**glsb_site_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_site_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_site', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - gslb_site_exists=Mock(side_effect=[True, True]), - gslb_site_identical=Mock(side_effect=[False, True]), - ensure_feature_is_enabled=Mock(), - nitro_exception=self.MockException, - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_site - self.exited() - gslb_site_proxy_mock.assert_has_calls([call.update()]) - - def test_absent_gslb_site_execution_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_gslb_site - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_site_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_site_proxy_mock = Mock() - gslb_site_proxy_mock.configure_mock(**glsb_site_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_site_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_site', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - gslb_site_exists=Mock(side_effect=[True, False]), - gslb_site_identical=Mock(side_effect=[False, True]), - ensure_feature_is_enabled=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_site - self.exited() - gslb_site_proxy_mock.assert_has_calls([call.delete()]) - - def test_present_gslb_site_identical_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_site - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_site_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_site_proxy_mock = Mock() - gslb_site_proxy_mock.configure_mock(**glsb_site_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_site_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_site', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - gslb_site_exists=Mock(side_effect=[True, True]), - gslb_site_identical=Mock(side_effect=[True, True]), - nitro_exception=self.MockException, - ensure_feature_is_enabled=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_site - self.exited() - gslb_site_proxy_mock.assert_not_called() - - def test_absent_gslb_site_noop_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_gslb_site - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_site_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_site_proxy_mock = Mock() - gslb_site_proxy_mock.configure_mock(**glsb_site_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_site_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_site', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - gslb_site_exists=Mock(side_effect=[False, False]), - gslb_site_identical=Mock(side_effect=[False, False]), - nitro_exception=self.MockException, - ensure_feature_is_enabled=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_site - self.exited() - gslb_site_proxy_mock.assert_not_called() - - def test_present_gslb_site_failed_update(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_site - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_site_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_site_proxy_mock = Mock() - gslb_site_proxy_mock.configure_mock(**glsb_site_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_site_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_site', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - gslb_site_exists=Mock(side_effect=[True, True]), - gslb_site_identical=Mock(side_effect=[False, False]), - ensure_feature_is_enabled=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_site - result = self.failed() - self.assertEqual(result['msg'], 'GSLB site differs from configured') - self.assertTrue(result['failed']) - - def test_present_gslb_site_failed_create(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_site - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_site_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_site_proxy_mock = Mock() - gslb_site_proxy_mock.configure_mock(**glsb_site_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_site_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_site', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - gslb_site_exists=Mock(side_effect=[False, False]), - gslb_site_identical=Mock(side_effect=[False, False]), - ensure_feature_is_enabled=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_site - result = self.failed() - self.assertEqual(result['msg'], 'GSLB site does not exist') - self.assertTrue(result['failed']) - - def test_present_gslb_site_update_immutable_attribute(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_site - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_site_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_site_proxy_mock = Mock() - gslb_site_proxy_mock.configure_mock(**glsb_site_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_site_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_site', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=['domain']), - gslb_site_exists=Mock(side_effect=[True, True]), - gslb_site_identical=Mock(side_effect=[False, False]), - ensure_feature_is_enabled=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_site - result = self.failed() - self.assertEqual(result['msg'], 'Cannot update immutable attributes [\'domain\']') - self.assertTrue(result['failed']) - - def test_absent_gslb_site_failed_delete(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_gslb_site - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_site_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_site_proxy_mock = Mock() - gslb_site_proxy_mock.configure_mock(**glsb_site_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_site_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_site', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - gslb_site_exists=Mock(side_effect=[True, True]), - gslb_site_identical=Mock(side_effect=[False, False]), - ensure_feature_is_enabled=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_site - result = self.failed() - self.assertEqual(result['msg'], 'GSLB site still exists') - self.assertTrue(result['failed']) - - def test_graceful_nitro_exception_state_present(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_site - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - m = Mock(side_effect=MockException) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_site', - gslb_site_exists=m, - ensure_feature_is_enabled=Mock(), - nitro_exception=MockException - ): - self.module = netscaler_gslb_site - result = self.failed() - self.assertTrue( - result['msg'].startswith('nitro exception'), - msg='Nitro exception not caught on operation absent' - ) - - def test_graceful_nitro_exception_state_absent(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_gslb_site - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - m = Mock(side_effect=MockException) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_site', - gslb_site_exists=m, - ensure_feature_is_enabled=Mock(), - nitro_exception=MockException - ): - self.module = netscaler_gslb_site - result = self.failed() - self.assertTrue( - result['msg'].startswith('nitro exception'), - msg='Nitro exception not caught on operation absent' - ) diff --git a/test/units/modules/network/netscaler/test_netscaler_gslb_vserver.py b/test/units/modules/network/netscaler/test_netscaler_gslb_vserver.py deleted file mode 100644 index acf9782eec..0000000000 --- a/test/units/modules/network/netscaler/test_netscaler_gslb_vserver.py +++ /dev/null @@ -1,758 +0,0 @@ - -# Copyright (c) 2017 Citrix Systems -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# - -from units.compat.mock import patch, Mock, MagicMock, call -from units.modules.utils import set_module_args -from .netscaler_module import TestModule, nitro_base_patcher - -import sys - -if sys.version_info[:2] != (2, 6): - import requests - - -class TestNetscalerGSLBVserverModule(TestModule): - - @classmethod - def setUpClass(cls): - class MockException(Exception): - pass - - cls.MockException = MockException - - m = MagicMock() - nssrc_modules_mock = { - 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbvserver': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbvserver.gslbvserver': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbvserver_gslbservice_binding': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbvserver_gslbservice_binding.gslbvserver_gslbservice_binding': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbvserver_domain_binding': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbvserver_domain_binding.gslbvserver_domain_binding': m, - } - - cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock) - cls.nitro_base_patcher = nitro_base_patcher - - @classmethod - def tearDownClass(cls): - cls.nitro_base_patcher.stop() - cls.nitro_specific_patcher.stop() - - def setUp(self): - super(TestNetscalerGSLBVserverModule, self).setUp() - - self.nitro_base_patcher.start() - self.nitro_specific_patcher.start() - - # Setup minimal required arguments to pass AnsibleModule argument parsing - - def tearDown(self): - super(TestNetscalerGSLBVserverModule, self).tearDown() - - self.nitro_base_patcher.stop() - self.nitro_specific_patcher.stop() - - def test_graceful_nitro_api_import_error(self): - # Stop nitro api patching to cause ImportError - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - self.nitro_base_patcher.stop() - self.nitro_specific_patcher.stop() - from ansible.modules.network.netscaler import netscaler_gslb_vserver - self.module = netscaler_gslb_vserver - result = self.failed() - self.assertEqual(result['msg'], 'Could not load nitro python sdk') - - def test_graceful_nitro_error_on_login(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_vserver - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - client_mock = Mock() - client_mock.login = Mock(side_effect=MockException) - m = Mock(return_value=client_mock) - with patch('ansible.modules.network.netscaler.netscaler_gslb_vserver.get_nitro_client', m): - with patch('ansible.modules.network.netscaler.netscaler_gslb_vserver.nitro_exception', MockException): - self.module = netscaler_gslb_vserver - result = self.failed() - self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly') - - def test_graceful_no_connection_error(self): - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_vserver - - class MockException(Exception): - pass - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.ConnectionError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_vserver', - get_nitro_client=m, - nitro_exception=MockException, - ): - self.module = netscaler_gslb_vserver - result = self.failed() - self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully') - - def test_graceful_login_error(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_vserver - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - - class MockException(Exception): - pass - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.SSLError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_vserver', - get_nitro_client=m, - nitro_exception=MockException, - ): - self.module = netscaler_gslb_vserver - result = self.failed() - self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully') - - def test_ensure_feature_is_enabled_called(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_vserver - - gslb_service_proxy_mock = Mock() - ensure_feature_is_enabled_mock = Mock() - client_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_vserver', - get_nitro_client=Mock(return_value=client_mock), - gslb_vserver_exists=Mock(side_effect=[False, True]), - gslb_vserver_identical=Mock(side_effect=[True]), - nitro_exception=self.MockException, - ensure_feature_is_enabled=ensure_feature_is_enabled_mock, - do_state_change=Mock(return_value=Mock(errorcode=0)), - ConfigProxy=Mock(return_value=gslb_service_proxy_mock), - ): - self.module = netscaler_gslb_vserver - self.exited() - ensure_feature_is_enabled_mock.assert_called_with(client_mock, 'GSLB') - - def test_save_config_called_on_state_present(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - gslb_service_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_vserver', - get_nitro_client=m, - gslb_vserver_exists=Mock(side_effect=[False, True]), - gslb_vserver_identical=Mock(side_effect=[True]), - do_state_change=Mock(return_value=Mock(errorcode=0)), - nitro_exception=self.MockException, - ensure_feature_is_enabled=Mock(), - ConfigProxy=Mock(return_value=gslb_service_proxy_mock), - ): - self.module = netscaler_gslb_vserver - self.exited() - self.assertIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_called_on_state_absent(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_gslb_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - gslb_service_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_vserver', - get_nitro_client=m, - gslb_vserver_exists=Mock(side_effect=[True, False]), - nitro_exception=self.MockException, - ensure_feature_is_enabled=Mock(), - ConfigProxy=Mock(return_value=gslb_service_proxy_mock), - ): - self.module = netscaler_gslb_vserver - self.exited() - self.assertIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_not_called_on_state_present(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_gslb_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - gslb_service_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_vserver', - get_nitro_client=m, - gslb_vserver_exists=Mock(side_effect=[False, True]), - gslb_vserver_identical=Mock(side_effect=[True]), - nitro_exception=self.MockException, - do_state_change=Mock(return_value=Mock(errorcode=0)), - ensure_feature_is_enabled=Mock(), - ConfigProxy=Mock(return_value=gslb_service_proxy_mock), - ): - self.module = netscaler_gslb_vserver - self.exited() - self.assertNotIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_not_called_on_state_absent(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_gslb_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - gslb_service_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_vserver', - get_nitro_client=m, - gslb_vserver_exists=Mock(side_effect=[True, False]), - nitro_exception=self.MockException, - ensure_feature_is_enabled=Mock(), - ConfigProxy=Mock(return_value=gslb_service_proxy_mock), - ): - self.module = netscaler_gslb_vserver - self.exited() - self.assertNotIn(call.save_config(), client_mock.mock_calls) - - def test_new_gslb_vserver_execution_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_service_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_service_proxy_mock = Mock() - gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_service_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_vserver', - get_nitro_client=m, - gslb_vserver_exists=Mock(side_effect=[False, True]), - gslb_vserver_identical=Mock(side_effect=[True]), - nitro_exception=self.MockException, - do_state_change=Mock(return_value=Mock(errorcode=0)), - ensure_feature_is_enabled=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_vserver - self.exited() - gslb_service_proxy_mock.assert_has_calls([call.add()]) - - def test_modified_gslb_vserver_execution_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_service_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_service_proxy_mock = Mock() - gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_service_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_vserver', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - gslb_vserver_exists=Mock(side_effect=[True, True]), - gslb_vserver_identical=Mock(side_effect=[False, False, True]), - ensure_feature_is_enabled=Mock(), - domain_bindings_identical=Mock(side_effect=[True, True, True]), - service_bindings_identical=Mock(side_effect=[True, True, True]), - do_state_change=Mock(return_value=Mock(errorcode=0)), - nitro_exception=self.MockException, - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_vserver - self.exited() - gslb_service_proxy_mock.assert_has_calls([call.update()]) - - def test_absent_gslb_vserver_execution_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_gslb_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_service_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_service_proxy_mock = Mock() - gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_service_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_vserver', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - gslb_vserver_exists=Mock(side_effect=[True, False]), - gslb_vserver_identical=Mock(side_effect=[False, True]), - ensure_feature_is_enabled=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_vserver - self.exited() - gslb_service_proxy_mock.assert_has_calls([call.delete()]) - - def test_present_gslb_vserver_identical_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_service_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_service_proxy_mock = Mock() - gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_service_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_vserver', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - gslb_vserver_exists=Mock(side_effect=[True, True]), - gslb_vserver_identical=Mock(side_effect=[True, True]), - do_state_change=Mock(return_value=Mock(errorcode=0)), - nitro_exception=self.MockException, - ensure_feature_is_enabled=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_vserver - self.exited() - gslb_service_proxy_mock.assert_not_called() - - def test_present_gslb_vserver_domain_bindings_error_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_service_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_service_proxy_mock = Mock() - gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_service_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_vserver', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - gslb_vserver_exists=Mock(side_effect=[True, True]), - gslb_vserver_identical=Mock(side_effect=[True, True, True]), - domain_bindings_identical=Mock(side_effect=[False, False, False]), - do_state_change=Mock(return_value=Mock(errorcode=0)), - nitro_exception=self.MockException, - ensure_feature_is_enabled=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_vserver - result = self.failed() - self.assertEqual(result['msg'], 'Domain bindings differ from configured') - self.assertTrue(result['failed']) - - def test_present_gslb_vserver_service_bindings_error_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_service_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_service_proxy_mock = Mock() - gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_service_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_vserver', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - gslb_vserver_exists=Mock(side_effect=[True, True]), - gslb_vserver_identical=Mock(side_effect=[True, True, True]), - service_bindings_identical=Mock(side_effect=[False, False, False]), - do_state_change=Mock(return_value=Mock(errorcode=0)), - nitro_exception=self.MockException, - ensure_feature_is_enabled=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_vserver - result = self.failed() - self.assertEqual(result['msg'], 'Service bindings differ from configured') - self.assertTrue(result['failed']) - - def test_absent_gslb_vserver_noop_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_gslb_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_service_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_service_proxy_mock = Mock() - gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_service_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_vserver', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - gslb_vserver_exists=Mock(side_effect=[False, False]), - gslb_vserver_identical=Mock(side_effect=[False, False]), - nitro_exception=self.MockException, - ensure_feature_is_enabled=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_vserver - self.exited() - gslb_service_proxy_mock.assert_not_called() - - def test_present_gslb_vserver_failed_update(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_service_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_service_proxy_mock = Mock() - gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_service_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_vserver', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - gslb_vserver_exists=Mock(side_effect=[True, True]), - gslb_vserver_identical=Mock(side_effect=[False, False, False]), - do_state_change=Mock(return_value=Mock(errorcode=0)), - ensure_feature_is_enabled=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_vserver - result = self.failed() - self.assertEqual(result['msg'], 'GSLB Vserver differs from configured') - self.assertTrue(result['failed']) - - def test_present_gslb_vserver_failed_create(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_service_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_service_proxy_mock = Mock() - gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_service_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_vserver', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - do_state_change=Mock(return_value=Mock(errorcode=0)), - gslb_vserver_exists=Mock(side_effect=[False, False]), - gslb_vserver_identical=Mock(side_effect=[False, False]), - ensure_feature_is_enabled=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_vserver - result = self.failed() - self.assertEqual(result['msg'], 'GSLB Vserver does not exist') - self.assertTrue(result['failed']) - - def test_present_gslb_vserver_update_immutable_attribute(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_service_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_service_proxy_mock = Mock() - gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_service_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_vserver', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=['domain']), - gslb_vserver_exists=Mock(side_effect=[True, True]), - gslb_vserver_identical=Mock(side_effect=[False, False]), - ensure_feature_is_enabled=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_vserver - result = self.failed() - self.assertEqual(result['msg'], 'Cannot update immutable attributes [\'domain\']') - self.assertTrue(result['failed']) - - def test_absent_gslb_vserver_failed_delete(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_gslb_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - glsb_service_proxy_attrs = { - 'diff_object.return_value': {}, - } - gslb_service_proxy_mock = Mock() - gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs) - config_proxy_mock = Mock(return_value=gslb_service_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_vserver', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - gslb_vserver_exists=Mock(side_effect=[True, True]), - gslb_vserver_identical=Mock(side_effect=[False, False]), - ensure_feature_is_enabled=Mock(), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_gslb_vserver - result = self.failed() - self.assertEqual(result['msg'], 'GSLB Vserver still exists') - self.assertTrue(result['failed']) - - def test_graceful_nitro_exception_state_present(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_gslb_vserver - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - m = Mock(side_effect=MockException) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_vserver', - gslb_vserver_exists=m, - ensure_feature_is_enabled=Mock(), - nitro_exception=MockException - ): - self.module = netscaler_gslb_vserver - result = self.failed() - self.assertTrue( - result['msg'].startswith('nitro exception'), - msg='Nitro exception not caught on operation absent' - ) - - def test_graceful_nitro_exception_state_absent(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_gslb_vserver - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - m = Mock(side_effect=MockException) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_gslb_vserver', - gslb_vserver_exists=m, - ensure_feature_is_enabled=Mock(), - nitro_exception=MockException - ): - self.module = netscaler_gslb_vserver - result = self.failed() - self.assertTrue( - result['msg'].startswith('nitro exception'), - msg='Nitro exception not caught on operation absent' - ) diff --git a/test/units/modules/network/netscaler/test_netscaler_lb_monitor.py b/test/units/modules/network/netscaler/test_netscaler_lb_monitor.py deleted file mode 100644 index e405e77645..0000000000 --- a/test/units/modules/network/netscaler/test_netscaler_lb_monitor.py +++ /dev/null @@ -1,518 +0,0 @@ - -# Copyright (c) 2017 Citrix Systems -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# - -from units.compat.mock import patch, Mock, MagicMock, call -from units.modules.utils import set_module_args -from .netscaler_module import TestModule, nitro_base_patcher - -import sys - -if sys.version_info[:2] != (2, 6): - import requests - - -class TestNetscalerLBVServerModule(TestModule): - - @classmethod - def setUpClass(cls): - class MockException(Exception): - pass - - cls.MockException = MockException - - m = MagicMock() - nssrc_modules_mock = { - 'nssrc.com.citrix.netscaler.nitro.resource.config.lb': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbmonitor': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbmonitor.lbvmonitor': m, - } - - cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock) - cls.nitro_base_patcher = nitro_base_patcher - - @classmethod - def tearDownClass(cls): - cls.nitro_base_patcher.stop() - cls.nitro_specific_patcher.stop() - - def setUp(self): - super(TestNetscalerLBVServerModule, self).setUp() - - self.nitro_base_patcher.start() - self.nitro_specific_patcher.start() - - # Setup minimal required arguments to pass AnsibleModule argument parsing - - def tearDown(self): - super(TestNetscalerLBVServerModule, self).tearDown() - - self.nitro_base_patcher.stop() - self.nitro_specific_patcher.stop() - - def test_graceful_nitro_api_import_error(self): - # Stop nitro api patching to cause ImportError - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - self.nitro_base_patcher.stop() - self.nitro_specific_patcher.stop() - from ansible.modules.network.netscaler import netscaler_lb_monitor - self.module = netscaler_lb_monitor - result = self.failed() - self.assertEqual(result['msg'], 'Could not load nitro python sdk') - - def test_graceful_nitro_error_on_login(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_lb_monitor - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - client_mock = Mock() - client_mock.login = Mock(side_effect=MockException) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_monitor', - get_nitro_client=m, - nitro_exception=MockException, - ): - self.module = netscaler_lb_monitor - result = self.failed() - self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly') - - def test_graceful_no_connection_error(self): - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_lb_monitor - - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.ConnectionError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_monitor', - get_nitro_client=m, - nitro_exception=self.MockException, - ): - self.module = netscaler_lb_monitor - result = self.failed() - self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully') - - def test_graceful_login_error(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_lb_monitor - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.SSLError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_monitor', - get_nitro_client=m, - nitro_exception=self.MockException, - ): - self.module = netscaler_lb_monitor - result = self.failed() - self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully') - - def test_save_config_called_on_state_present(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_lb_monitor - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={})) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_monitor', - get_nitro_client=m, - lbmonitor_exists=Mock(side_effect=[False, True]), - ConfigProxy=Mock(return_value=lb_monitor_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - ): - self.module = netscaler_lb_monitor - self.exited() - self.assertIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_called_on_state_absent(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_lb_monitor - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={})) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_monitor', - get_nitro_client=m, - lbmonitor_exists=Mock(side_effect=[True, False]), - ConfigProxy=Mock(return_value=lb_monitor_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - ): - self.module = netscaler_lb_monitor - self.exited() - self.assertIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_not_called_on_state_present(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_lb_monitor - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={})) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_monitor', - get_nitro_client=m, - lbmonitor_exists=Mock(side_effect=[False, True]), - ConfigProxy=Mock(return_value=lb_monitor_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - ): - self.module = netscaler_lb_monitor - self.exited() - self.assertNotIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_not_called_on_state_absent(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_lb_monitor - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={})) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_monitor', - get_nitro_client=m, - lbmonitor_exists=Mock(side_effect=[True, False]), - ConfigProxy=Mock(return_value=lb_monitor_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - ): - self.module = netscaler_lb_monitor - self.exited() - self.assertNotIn(call.save_config(), client_mock.mock_calls) - - def test_ensure_feature_is_enabled_called(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_lb_monitor - - client_mock = Mock() - - lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={})) - feature_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_monitor', - get_nitro_client=Mock(return_value=client_mock), - lbmonitor_exists=Mock(side_effect=[True, True]), - lbmonitor_identical=Mock(side_effect=[True, True]), - - ConfigProxy=Mock(return_value=lb_monitor_proxy_mock), - ensure_feature_is_enabled=feature_mock, - ): - self.module = netscaler_lb_monitor - self.exited() - feature_mock.assert_called_with(client_mock, 'LB') - - def test_ensure_feature_is_enabled_nitro_exception_caught(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_lb_monitor - - client_mock = Mock() - - lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={})) - errorcode = 10 - message = 'mock error' - - class MockException(Exception): - def __init__(self): - self.errorcode = errorcode - self.message = message - - feature_mock = Mock(side_effect=MockException) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_monitor', - get_nitro_client=Mock(return_value=client_mock), - lbmonitor_exists=Mock(side_effect=[True, True]), - lbmonitor_identical=Mock(side_effect=[True, True]), - - ConfigProxy=Mock(return_value=lb_monitor_proxy_mock), - ensure_feature_is_enabled=feature_mock, - nitro_exception=MockException, - ): - self.module = netscaler_lb_monitor - result = self.failed() - expected_msg = 'nitro exception errorcode=%s, message=%s' % (errorcode, message) - self.assertEqual(result['msg'], expected_msg, 'Failed to handle nitro exception') - - def test_create_new_lb_monitor_workflow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_lb_monitor - - lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={})) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_monitor', - get_nitro_client=Mock(return_value=Mock()), - lbmonitor_exists=Mock(side_effect=[False, True]), - lbmonitor_identical=Mock(side_effect=[True]), - - ConfigProxy=Mock(return_value=lb_monitor_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - ): - self.module = netscaler_lb_monitor - result = self.exited() - lb_monitor_proxy_mock.assert_has_calls([call.add()]) - self.assertTrue(result['changed']) - - def test_update_lb_monitor_workflow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_lb_monitor - - lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={})) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_monitor', - get_nitro_client=Mock(return_value=Mock()), - lbmonitor_exists=Mock(side_effect=[True, True]), - lbmonitor_identical=Mock(side_effect=[False, True]), - - ConfigProxy=Mock(return_value=lb_monitor_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - get_immutables_intersection=Mock(return_value=[]), - diff_list=Mock(return_value={}), - ): - self.module = netscaler_lb_monitor - result = self.exited() - lb_monitor_proxy_mock.assert_has_calls([call.update()]) - self.assertTrue(result['changed']) - - def test_lb_monitor_exists_sanity_check(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_lb_monitor - - lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={})) - - client_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_monitor', - get_nitro_client=Mock(return_value=client_mock), - lbmonitor_exists=Mock(side_effect=[False, False]), - lbmonitor_identical=Mock(side_effect=[False, True]), - ConfigProxy=Mock(return_value=lb_monitor_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - nitro_exception=self.MockException, - ): - self.module = netscaler_lb_monitor - result = self.failed() - self.assertEqual(result['msg'], 'lb monitor does not exist') - - def test_lb_monitor_identical_sanity_check(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_lb_monitor - - lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={})) - - client_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_monitor', - get_nitro_client=Mock(return_value=client_mock), - lbmonitor_exists=Mock(side_effect=[True, True]), - lbmonitor_identical=Mock(side_effect=[False, False]), - ConfigProxy=Mock(return_value=lb_monitor_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - get_immutables_intersection=(Mock(return_value=[])), - nitro_exception=self.MockException, - diff_list=Mock(return_value={}), - ): - self.module = netscaler_lb_monitor - result = self.failed() - self.assertEqual(result['msg'], 'lb monitor is not configured correctly') - - def test_absent_state_workflow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_lb_monitor - - lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={})) - - client_mock = Mock() - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_monitor', - get_nitro_client=Mock(return_value=client_mock), - ConfigProxy=Mock(return_value=lb_monitor_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - lbmonitor_exists=Mock(side_effect=[True, False]), - ): - self.module = netscaler_lb_monitor - result = self.exited() - lb_monitor_proxy_mock.assert_has_calls([call.delete()]) - self.assertTrue(result['changed']) - - def test_absent_state_sanity_check(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_lb_monitor - - lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={})) - - client_mock = Mock() - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_monitor', - get_nitro_client=Mock(return_value=client_mock), - ConfigProxy=Mock(return_value=lb_monitor_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - lbmonitor_exists=Mock(side_effect=[True, True]), - nitro_exception=self.MockException, - ): - self.module = netscaler_lb_monitor - result = self.failed() - lb_monitor_proxy_mock.assert_has_calls([call.delete()]) - self.assertEqual(result['msg'], 'lb monitor still exists') - - def test_get_immutables_failure(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - - from ansible.modules.network.netscaler import netscaler_lb_monitor - - lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={})) - - client_mock = Mock() - m = Mock(return_value=['some']) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_monitor', - get_nitro_client=Mock(return_value=client_mock), - ConfigProxy=Mock(return_value=lb_monitor_proxy_mock), - ensure_feature_is_enabled=Mock(), - lbmonitor_exists=Mock(side_effect=[True, True]), - lbmonitor_identical=Mock(side_effect=[False, True]), - get_immutables_intersection=m, - diff_list=Mock(return_value={}), - nitro_exception=self.MockException, - ): - self.module = netscaler_lb_monitor - result = self.failed() - self.assertTrue( - result['msg'].startswith('Cannot update immutable attributes'), - msg='Did not handle immutables error correctly', - ) diff --git a/test/units/modules/network/netscaler/test_netscaler_lb_vserver.py b/test/units/modules/network/netscaler/test_netscaler_lb_vserver.py deleted file mode 100644 index 1f95f861bf..0000000000 --- a/test/units/modules/network/netscaler/test_netscaler_lb_vserver.py +++ /dev/null @@ -1,840 +0,0 @@ - -# Copyright (c) 2017 Citrix Systems -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# - -from units.compat.mock import patch, Mock, MagicMock, call -from units.modules.utils import set_module_args -from .netscaler_module import TestModule, nitro_base_patcher - -import sys - -if sys.version_info[:2] != (2, 6): - import requests - - -class TestNetscalerLBVServerModule(TestModule): - - @classmethod - def setUpClass(cls): - class MockException(Exception): - pass - - cls.MockException = MockException - - m = MagicMock() - cls.server_mock = MagicMock() - cls.server_mock.__class__ = MagicMock(add=Mock()) - nssrc_modules_mock = { - 'nssrc.com.citrix.netscaler.nitro.resource.config.lb': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbvserver': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbvserver.lbvserver': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbvserver_service_binding': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbvserver_service_binding.lbvserver_service_binding': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbvserver_servicegroup_binding': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbvserver_servicegroup_binding.lbvserver_servicegroup_binding': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.ssl': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.ssl.sslvserver_sslcertkey_binding': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.ssl.sslvserver_sslcertkey_binding.sslvserver_sslcertkey_binding': m, - } - - cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock) - cls.nitro_base_patcher = nitro_base_patcher - - @classmethod - def tearDownClass(cls): - cls.nitro_base_patcher.stop() - cls.nitro_specific_patcher.stop() - - def setUp(self): - super(TestNetscalerLBVServerModule, self).setUp() - self.nitro_base_patcher.start() - self.nitro_specific_patcher.start() - - # Setup minimal required arguments to pass AnsibleModule argument parsing - - def tearDown(self): - super(TestNetscalerLBVServerModule, self).tearDown() - - self.nitro_base_patcher.stop() - self.nitro_specific_patcher.stop() - - def test_graceful_nitro_api_import_error(self): - # Stop nitro api patching to cause ImportError - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - self.nitro_base_patcher.stop() - self.nitro_specific_patcher.stop() - from ansible.modules.network.netscaler import netscaler_lb_vserver - self.module = netscaler_lb_vserver - result = self.failed() - self.assertEqual(result['msg'], 'Could not load nitro python sdk') - - def test_graceful_nitro_error_on_login(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_lb_vserver - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - client_mock = Mock() - client_mock.login = Mock(side_effect=MockException) - m = Mock(return_value=client_mock) - with patch('ansible.modules.network.netscaler.netscaler_lb_vserver.get_nitro_client', m): - with patch('ansible.modules.network.netscaler.netscaler_lb_vserver.nitro_exception', MockException): - self.module = netscaler_lb_vserver - result = self.failed() - self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly') - - def test_graceful_no_connection_error(self): - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_lb_vserver - - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.ConnectionError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_vserver', - get_nitro_client=m, - nitro_exception=self.MockException, - ): - self.module = netscaler_lb_vserver - result = self.failed() - self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully') - - def test_graceful_login_error(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_lb_vserver - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.SSLError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_vserver', - get_nitro_client=m, - nitro_exception=self.MockException, - do_state_change=Mock(return_value=Mock(errorcode=0)), - ): - self.module = netscaler_lb_vserver - result = self.failed() - self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully') - - def test_save_config_called_on_state_present(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_lb_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - lb_vserver_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_vserver', - get_nitro_client=m, - lb_vserver_exists=Mock(side_effect=[False, True]), - ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - do_state_change=Mock(return_value=Mock(errorcode=0)), - ): - self.module = netscaler_lb_vserver - self.exited() - self.assertIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_called_on_state_absent(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_lb_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - lb_vserver_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_vserver', - get_nitro_client=m, - lb_vserver_exists=Mock(side_effect=[True, False]), - ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - do_state_change=Mock(return_value=Mock(errorcode=0)), - ): - self.module = netscaler_lb_vserver - self.exited() - self.assertIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_not_called_on_state_present(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_lb_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - lb_vserver_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_vserver', - get_nitro_client=m, - lb_vserver_exists=Mock(side_effect=[False, True]), - ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - do_state_change=Mock(return_value=Mock(errorcode=0)), - ): - self.module = netscaler_lb_vserver - self.exited() - self.assertNotIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_not_called_on_state_absent(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_lb_vserver - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - lb_vserver_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_vserver', - get_nitro_client=m, - lb_vserver_exists=Mock(side_effect=[True, False]), - ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - do_state_change=Mock(return_value=Mock(errorcode=0)), - ): - self.module = netscaler_lb_vserver - self.exited() - self.assertNotIn(call.save_config(), client_mock.mock_calls) - - def test_ensure_feature_is_enabled_called(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_lb_vserver - - client_mock = Mock() - - lb_vserver_proxy_mock = Mock() - feature_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_vserver', - get_nitro_client=Mock(return_value=client_mock), - lb_vserver_exists=Mock(side_effect=[True, True]), - lb_vserver_identical=Mock(side_effect=[True, True]), - servicegroup_bindings_identical=Mock(side_effect=[True, True]), - service_bindings_identical=Mock(side_effect=[True, True]), - - ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), - ensure_feature_is_enabled=feature_mock, - do_state_change=Mock(return_value=Mock(errorcode=0)), - ): - self.module = netscaler_lb_vserver - self.exited() - feature_mock.assert_called_with(client_mock, 'LB') - - def test_ensure_feature_is_enabled_nitro_exception_caught(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_lb_vserver - - client_mock = Mock() - - lb_vserver_proxy_mock = Mock() - errorcode = 10 - message = 'mock error' - - class MockException(Exception): - def __init__(self): - self.errorcode = errorcode - self.message = message - - feature_mock = Mock(side_effect=MockException) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_vserver', - get_nitro_client=Mock(return_value=client_mock), - lb_vserver_exists=Mock(side_effect=[True, True]), - lb_vserver_identical=Mock(side_effect=[True, True]), - servicegroup_bindings_identical=Mock(side_effect=[True, True]), - service_bindings_identical=Mock(side_effect=[True, True]), - - ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), - ensure_feature_is_enabled=feature_mock, - nitro_exception=MockException, - ): - self.module = netscaler_lb_vserver - result = self.failed() - expected_msg = 'nitro exception errorcode=%s, message=%s' % (errorcode, message) - self.assertEqual(result['msg'], expected_msg, 'Failed to handle nitro exception') - - def test_create_new_lb_vserver_workflow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_lb_vserver - - lb_vserver_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_vserver', - get_nitro_client=Mock(return_value=Mock()), - lb_vserver_exists=Mock(side_effect=[False, True]), - lb_vserver_identical=Mock(side_effect=[True]), - servicegroup_bindings_identical=Mock(side_effect=[True, True]), - service_bindings_identical=Mock(side_effect=[True, True]), - do_state_change=Mock(return_value=Mock(errorcode=0)), - - ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - ): - self.module = netscaler_lb_vserver - result = self.exited() - lb_vserver_proxy_mock.assert_has_calls([call.add()]) - self.assertTrue(result['changed']) - - def test_update_lb_vserver_workflow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_lb_vserver - - lb_vserver_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_vserver', - get_nitro_client=Mock(return_value=Mock()), - lb_vserver_exists=Mock(side_effect=[True, True]), - lb_vserver_identical=Mock(side_effect=[False, True]), - servicegroup_bindings_identical=Mock(side_effect=[True, True]), - service_bindings_identical=Mock(side_effect=[True, True]), - - ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - do_state_change=Mock(return_value=Mock(errorcode=0)), - get_immutables_intersection=Mock(return_value=[]), - ): - self.module = netscaler_lb_vserver - result = self.exited() - lb_vserver_proxy_mock.assert_has_calls([call.update()]) - self.assertTrue(result['changed']) - - def test_service_bindings_handling(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_lb_vserver - - lb_vserver_proxy_mock = Mock() - configured_dict = { - 'first': Mock(), - 'second': Mock(has_equal_attributes=Mock(return_value=False)), - } - - actual_dict = { - 'second': Mock(), - 'third': Mock(), - } - - client_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_vserver', - get_nitro_client=Mock(return_value=client_mock), - lb_vserver_exists=Mock(side_effect=[True, True]), - lb_vserver_identical=Mock(side_effect=[False, True]), - servicegroup_bindings_identical=Mock(side_effect=[True, True]), - service_bindings_identical=Mock(side_effect=[False, True]), - get_configured_service_bindings=Mock(return_value=configured_dict), - get_actual_service_bindings=Mock(return_value=actual_dict), - - ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - do_state_change=Mock(return_value=Mock(errorcode=0)), - get_immutables_intersection=(Mock(return_value=[])), - ): - self.module = netscaler_lb_vserver - result = self.exited() - configured_dict['first'].assert_has_calls([call.add()]) - - configured_dict['second'].assert_has_calls([call.has_equal_attributes(actual_dict['second']), call.add()]) - - actual_dict['second'].assert_has_calls([call.delete(client_mock, actual_dict['second'])]) - - actual_dict['third'].assert_has_calls([call.delete(client_mock, actual_dict['third'])]) - - self.assertTrue(result['changed']) - - def test_servicegroup_bindings_handling(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_lb_vserver - - lb_vserver_proxy_mock = Mock() - configured_dict = { - 'first': Mock(), - 'second': Mock(has_equal_attributes=Mock(return_value=False)), - } - - actual_dict = { - 'second': Mock(), - 'third': Mock(), - } - - client_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_vserver', - get_nitro_client=Mock(return_value=client_mock), - lb_vserver_exists=Mock(side_effect=[True, True]), - lb_vserver_identical=Mock(side_effect=[False, True]), - servicegroup_bindings_identical=Mock(side_effect=[False, True]), - service_bindings_identical=Mock(side_effect=[True, True]), - get_configured_servicegroup_bindings=Mock(return_value=configured_dict), - get_actual_servicegroup_bindings=Mock(return_value=actual_dict), - - ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - do_state_change=Mock(return_value=Mock(errorcode=0)), - get_immutables_intersection=(Mock(return_value=[])), - ): - self.module = netscaler_lb_vserver - result = self.exited() - configured_dict['first'].assert_has_calls([call.add()]) - - configured_dict['second'].assert_has_calls([call.has_equal_attributes(actual_dict['second']), call.add()]) - - actual_dict['second'].assert_has_calls([call.delete(client_mock, actual_dict['second'])]) - - actual_dict['third'].assert_has_calls([call.delete(client_mock, actual_dict['third'])]) - - self.assertTrue(result['changed']) - - def test_ssl_bindings_handling(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - save_config=False, - servicetype='SSL', - )) - from ansible.modules.network.netscaler import netscaler_lb_vserver - - lb_vserver_proxy_mock = Mock() - ssl_sync_mock = Mock() - - client_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_vserver', - get_nitro_client=Mock(return_value=client_mock), - lb_vserver_exists=Mock(side_effect=[True, True]), - lb_vserver_identical=Mock(side_effect=[False, True]), - servicegroup_bindings_identical=Mock(side_effect=[True, True]), - service_bindings_identical=Mock(side_effect=[True, True]), - ssl_certkey_bindings_identical=Mock(side_effect=[False, True]), - ssl_certkey_bindings_sync=ssl_sync_mock, - ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - do_state_change=Mock(return_value=Mock(errorcode=0)), - get_immutables_intersection=(Mock(return_value=[])), - nitro_exception=self.MockException, - ): - self.module = netscaler_lb_vserver - result = self.exited() - self.assertTrue(len(ssl_sync_mock.mock_calls) > 0, msg='ssl cert_key bindings not called') - self.assertTrue(result['changed']) - - def test_ssl_bindings_not_called_for_non_ssl_service(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - save_config=False, - servicetype='HTTP', - )) - from ansible.modules.network.netscaler import netscaler_lb_vserver - - lb_vserver_proxy_mock = Mock() - ssl_sync_mock = Mock() - - client_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_vserver', - get_nitro_client=Mock(return_value=client_mock), - lb_vserver_exists=Mock(side_effect=[True, True]), - lb_vserver_identical=Mock(side_effect=[False, True]), - servicegroup_bindings_identical=Mock(side_effect=[True, True]), - service_bindings_identical=Mock(side_effect=[True, True]), - ssl_certkey_bindings_identical=Mock(side_effect=[False, True]), - ssl_certkey_bindings_sync=ssl_sync_mock, - ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - do_state_change=Mock(return_value=Mock(errorcode=0)), - get_immutables_intersection=(Mock(return_value=[])), - ): - self.module = netscaler_lb_vserver - result = self.exited() - ssl_sync_mock.assert_not_called() - self.assertTrue(result['changed']) - - def test_server_exists_sanity_check(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_lb_vserver - - lb_vserver_proxy_mock = Mock() - ssl_sync_mock = Mock() - - client_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_vserver', - get_nitro_client=Mock(return_value=client_mock), - lb_vserver_exists=Mock(side_effect=[False, False]), - lb_vserver_identical=Mock(side_effect=[False, True]), - servicegroup_bindings_identical=Mock(side_effect=[True, True]), - service_bindings_identical=Mock(side_effect=[True, True]), - ssl_certkey_bindings_identical=Mock(side_effect=[False, True]), - ssl_certkey_bindings_sync=ssl_sync_mock, - ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - do_state_change=Mock(return_value=Mock(errorcode=0)), - nitro_exception=self.MockException, - ): - self.module = netscaler_lb_vserver - result = self.failed() - self.assertEqual(result['msg'], 'Did not create lb vserver') - - def test_server_identical_sanity_check(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_lb_vserver - - lb_vserver_proxy_mock = Mock() - ssl_sync_mock = Mock() - - client_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_vserver', - get_nitro_client=Mock(return_value=client_mock), - lb_vserver_exists=Mock(side_effect=[True, True]), - lb_vserver_identical=Mock(side_effect=[False, False]), - servicegroup_bindings_identical=Mock(side_effect=[True, True]), - service_bindings_identical=Mock(side_effect=[True, True]), - ssl_certkey_bindings_identical=Mock(side_effect=[False, True]), - ssl_certkey_bindings_sync=ssl_sync_mock, - ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - do_state_change=Mock(return_value=Mock(errorcode=0)), - get_immutables_intersection=(Mock(return_value=[])), - nitro_exception=self.MockException, - ): - self.module = netscaler_lb_vserver - result = self.failed() - self.assertEqual(result['msg'], 'lb vserver is not configured correctly') - - def test_service_bindings_sanity_check(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_lb_vserver - - lb_vserver_proxy_mock = Mock() - - client_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_vserver', - get_nitro_client=Mock(return_value=client_mock), - lb_vserver_exists=Mock(side_effect=[True, True]), - lb_vserver_identical=Mock(side_effect=[False, True]), - servicegroup_bindings_identical=Mock(side_effect=[True, True]), - service_bindings_identical=Mock(side_effect=[False, False]), - ssl_certkey_bindings_identical=Mock(side_effect=[False, False]), - ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - do_state_change=Mock(return_value=Mock(errorcode=0)), - get_immutables_intersection=(Mock(return_value=[])), - nitro_exception=self.MockException, - ): - self.module = netscaler_lb_vserver - result = self.failed() - self.assertEqual(result['msg'], 'service bindings are not identical') - - def test_servicegroup_bindings_sanity_check(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_lb_vserver - - lb_vserver_proxy_mock = Mock() - - client_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_vserver', - get_nitro_client=Mock(return_value=client_mock), - lb_vserver_exists=Mock(side_effect=[True, True]), - lb_vserver_identical=Mock(side_effect=[False, True]), - servicegroup_bindings_identical=Mock(side_effect=[False, False]), - service_bindings_identical=Mock(side_effect=[True, True]), - ssl_certkey_bindings_identical=Mock(side_effect=[False, False]), - ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - do_state_change=Mock(return_value=Mock(errorcode=0)), - get_immutables_intersection=(Mock(return_value=[])), - nitro_exception=self.MockException, - ): - self.module = netscaler_lb_vserver - result = self.failed() - self.assertEqual(result['msg'], 'servicegroup bindings are not identical') - - def test_server_servicegroup_bindings_sanity_check(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_lb_vserver - - lb_vserver_proxy_mock = Mock() - - client_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_vserver', - get_nitro_client=Mock(return_value=client_mock), - lb_vserver_exists=Mock(side_effect=[True, True]), - lb_vserver_identical=Mock(side_effect=[False, True]), - servicegroup_bindings_identical=Mock(side_effect=[False, False]), - service_bindings_identical=Mock(side_effect=[True, True]), - ssl_certkey_bindings_identical=Mock(side_effect=[False, False]), - ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - do_state_change=Mock(return_value=Mock(errorcode=0)), - get_immutables_intersection=(Mock(return_value=[])), - nitro_exception=self.MockException, - ): - self.module = netscaler_lb_vserver - result = self.failed() - self.assertEqual(result['msg'], 'servicegroup bindings are not identical') - - def test_absent_state_workflow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_lb_vserver - - lb_vserver_proxy_mock = Mock() - - client_mock = Mock() - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_vserver', - get_nitro_client=Mock(return_value=client_mock), - ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - lb_vserver_exists=Mock(side_effect=[True, False]), - ): - self.module = netscaler_lb_vserver - result = self.exited() - lb_vserver_proxy_mock.assert_has_calls([call.delete()]) - self.assertTrue(result['changed']) - - def test_absent_state_sanity_check(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_lb_vserver - - lb_vserver_proxy_mock = Mock() - - client_mock = Mock() - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_vserver', - get_nitro_client=Mock(return_value=client_mock), - ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - lb_vserver_exists=Mock(side_effect=[True, True]), - nitro_exception=self.MockException, - ): - self.module = netscaler_lb_vserver - result = self.failed() - lb_vserver_proxy_mock.assert_has_calls([call.delete()]) - self.assertEqual(result['msg'], 'lb vserver still exists') - - def test_disabled_state_change_called(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - - from ansible.modules.network.netscaler import netscaler_lb_vserver - - lb_vserver_proxy_mock = Mock() - - do_state_change_mock = Mock(return_value=Mock(errorcode=0)) - client_mock = Mock() - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_vserver', - get_nitro_client=Mock(return_value=client_mock), - ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), - ensure_feature_is_enabled=Mock(return_value=True), - lb_vserver_exists=Mock(side_effect=[True, True]), - nitro_exception=self.MockException, - do_state_change=do_state_change_mock, - ): - self.module = netscaler_lb_vserver - self.exited() - self.assertTrue(len(do_state_change_mock.mock_calls) > 0, msg='Did not call state change') - - def test_get_immutables_failure(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - - from ansible.modules.network.netscaler import netscaler_lb_vserver - - lb_vserver_proxy_mock = Mock() - - client_mock = Mock() - m = Mock(return_value=['some']) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_lb_vserver', - get_nitro_client=Mock(return_value=client_mock), - ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), - ensure_feature_is_enabled=Mock(), - lb_vserver_exists=Mock(side_effect=[True, True]), - lb_vserver_identical=Mock(side_effect=[False]), - do_state_change=Mock(return_value=Mock(errorcode=0)), - get_immutables_intersection=m, - nitro_exception=self.MockException, - ): - self.module = netscaler_lb_vserver - result = self.failed() - self.assertTrue( - result['msg'].startswith('Cannot update immutable attributes'), - msg='Did not handle immutables error correctly', - ) diff --git a/test/units/modules/network/netscaler/test_netscaler_nitro_request.py b/test/units/modules/network/netscaler/test_netscaler_nitro_request.py deleted file mode 100644 index cf0bf548b1..0000000000 --- a/test/units/modules/network/netscaler/test_netscaler_nitro_request.py +++ /dev/null @@ -1,340 +0,0 @@ - -# Copyright (c) 2017 Citrix Systems -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# - -from units.compat.mock import patch, Mock, call -from .netscaler_module import TestModule -import copy -import tempfile -import json -import codecs - -from ansible.modules.network.netscaler import netscaler_nitro_request - -module_arguments = dict( - nsip=None, - nitro_user=None, - nitro_pass=None, - nitro_protocol=None, - validate_certs=None, - nitro_auth_token=None, - resource=None, - name=None, - attributes=None, - args=None, - filter=None, - operation=None, - expected_nitro_errorcode=None, - action=None, - instance_ip=None, - instance_name=None, - instance_id=None, -) - - -class TestNetscalerNitroRequestModule(TestModule): - - @classmethod - def setUpClass(cls): - class MockException(Exception): - pass - - cls.MockException = MockException - - # This has code in a parent class - def setUp(self): - pass - - def test_fail_on_conflicting_authentication_methods(self): - args = copy.deepcopy(module_arguments) - args.update(dict( - nitro_user='nsroot', - nitro_pass='nsroot', - nitro_auth_token='##DDASKLFDJ', - )) - mock_module_instance = Mock(params=args) - expected_calls = [ - call.fail_json( - changed=False, - failed=True, - msg='Cannot define both authentication token and username/password' - ) - ] - module_mock = Mock(return_value=mock_module_instance) - with patch('ansible.modules.network.netscaler.netscaler_nitro_request.AnsibleModule', module_mock): - netscaler_nitro_request.NitroAPICaller() - mock_module_instance.assert_has_calls(expected_calls) - - def test_nitro_user_pass_credentials(self): - args = copy.deepcopy(module_arguments) - args.update(dict( - nitro_user='nsroot', - nitro_pass='nsroot', - )) - mock_module_instance = Mock(params=args) - expected_headers = { - 'Content-Type': 'application/json', - 'X-NITRO-USER': 'nsroot', - 'X-NITRO-PASS': 'nsroot', - } - module_mock = Mock(return_value=mock_module_instance) - with patch('ansible.modules.network.netscaler.netscaler_nitro_request.AnsibleModule', module_mock): - instance = netscaler_nitro_request.NitroAPICaller() - self.assertDictEqual(instance._headers, expected_headers) - - def test_mas_login_headers(self): - args = copy.deepcopy(module_arguments) - args.update(dict( - nitro_user='nsroot', - nitro_pass='nsroot', - operation='mas_login', - )) - mock_module_instance = Mock(params=args) - expected_headers = { - 'Content-Type': 'application/json', - } - module_mock = Mock(return_value=mock_module_instance) - with patch('ansible.modules.network.netscaler.netscaler_nitro_request.AnsibleModule', module_mock): - instance = netscaler_nitro_request.NitroAPICaller() - self.assertDictEqual(instance._headers, expected_headers) - - def test_mas_proxy_call_headers_instance_ip(self): - args = copy.deepcopy(module_arguments) - args.update(dict( - nitro_auth_token='##ABDB', - operation='add', - instance_ip='192.168.1.1', - )) - mock_module_instance = Mock(params=args) - expected_headers = { - 'Content-Type': 'application/json', - '_MPS_API_PROXY_MANAGED_INSTANCE_IP': args['instance_ip'], - 'Cookie': 'NITRO_AUTH_TOKEN=%s' % args['nitro_auth_token'], - } - module_mock = Mock(return_value=mock_module_instance) - with patch('ansible.modules.network.netscaler.netscaler_nitro_request.AnsibleModule', module_mock): - instance = netscaler_nitro_request.NitroAPICaller() - self.assertDictEqual(instance._headers, expected_headers) - - def test_mas_proxy_call_headers_instance_id(self): - args = copy.deepcopy(module_arguments) - args.update(dict( - nitro_auth_token='##ABDB', - operation='add', - instance_id='myid', - )) - mock_module_instance = Mock(params=args) - expected_headers = { - 'Content-Type': 'application/json', - '_MPS_API_PROXY_MANAGED_INSTANCE_ID': args['instance_id'], - 'Cookie': 'NITRO_AUTH_TOKEN=%s' % args['nitro_auth_token'], - } - module_mock = Mock(return_value=mock_module_instance) - with patch('ansible.modules.network.netscaler.netscaler_nitro_request.AnsibleModule', module_mock): - instance = netscaler_nitro_request.NitroAPICaller() - self.assertDictEqual(instance._headers, expected_headers) - - def test_mas_proxy_call_headers_instance_name(self): - args = copy.deepcopy(module_arguments) - args.update(dict( - nitro_auth_token='##ABDB', - operation='add', - instance_name='myname', - )) - mock_module_instance = Mock(params=args) - expected_headers = { - 'Content-Type': 'application/json', - '_MPS_API_PROXY_MANAGED_INSTANCE_NAME': args['instance_name'], - 'Cookie': 'NITRO_AUTH_TOKEN=%s' % args['nitro_auth_token'], - } - module_mock = Mock(return_value=mock_module_instance) - with patch('ansible.modules.network.netscaler.netscaler_nitro_request.AnsibleModule', module_mock): - instance = netscaler_nitro_request.NitroAPICaller() - self.assertDictEqual(instance._headers, expected_headers) - - def test_edit_response_data_no_body_success_status(self): - with patch('ansible.modules.network.netscaler.netscaler_nitro_request.AnsibleModule'): - instance = netscaler_nitro_request.NitroAPICaller() - r = None - info = { - 'status': 200, - } - result = {} - success_status = 200 - - expected_result = { - 'nitro_errorcode': 0, - 'nitro_message': 'Success', - 'nitro_severity': 'NONE', - 'http_response_body': '', - 'http_response_data': info, - } - instance.edit_response_data(r, info, result, success_status) - self.assertDictEqual(result, expected_result) - - def test_edit_response_data_no_body_fail_status(self): - with patch('ansible.modules.network.netscaler.netscaler_nitro_request.AnsibleModule'): - instance = netscaler_nitro_request.NitroAPICaller() - r = None - info = { - 'status': 201, - } - result = {} - success_status = 200 - - expected_result = { - 'nitro_errorcode': -1, - 'nitro_message': 'HTTP status %s' % info['status'], - 'nitro_severity': 'ERROR', - 'http_response_body': '', - 'http_response_data': info, - } - instance.edit_response_data(r, info, result, success_status) - self.assertDictEqual(result, expected_result) - - def test_edit_response_data_actual_body_data(self): - args = copy.deepcopy(module_arguments) - args.update(dict( - nitro_user='nsroot', - nitro_pass='nsroot', - nitro_auth_token='##DDASKLFDJ', - )) - module_mock = Mock(params=args, from_json=json.loads) - with patch('ansible.modules.network.netscaler.netscaler_nitro_request.AnsibleModule', Mock(return_value=module_mock)): - with tempfile.TemporaryFile() as r: - actual_body = { - 'errorcode': 258, - 'message': 'Some error', - 'severity': 'ERROR', - } - r.write(codecs.encode(json.dumps(actual_body), 'utf-8')) - r.seek(0) - - instance = netscaler_nitro_request.NitroAPICaller() - info = { - 'status': 200, - } - result = {} - success_status = 200 - - expected_result = { - 'http_response_body': json.dumps(actual_body), - 'http_response_data': info, - } - nitro_data = {} - for key, value in actual_body.items(): - nitro_data['nitro_%s' % key] = value - expected_result.update(nitro_data) - - instance.edit_response_data(r, info, result, success_status) - self.assertDictEqual(result, expected_result) - - def test_edit_response_data_actual_body_data_irrelevant(self): - args = copy.deepcopy(module_arguments) - args.update(dict( - nitro_user='nsroot', - nitro_pass='nsroot', - nitro_auth_token='##DDASKLFDJ', - )) - module_mock = Mock(params=args, from_json=json.loads) - with patch('ansible.modules.network.netscaler.netscaler_nitro_request.AnsibleModule', Mock(return_value=module_mock)): - with tempfile.TemporaryFile() as r: - actual_body = {} - r.write(codecs.encode(json.dumps(actual_body), 'utf-8')) - r.seek(0) - - instance = netscaler_nitro_request.NitroAPICaller() - info = { - 'status': 200, - } - result = {} - success_status = 200 - - expected_result = { - 'http_response_body': json.dumps(actual_body), - 'http_response_data': info, - 'nitro_errorcode': 0, - 'nitro_message': 'Success', - 'nitro_severity': 'NONE', - } - - instance.edit_response_data(r, info, result, success_status) - self.assertDictEqual(result, expected_result) - - def test_edit_response_data_body_in_info(self): - args = copy.deepcopy(module_arguments) - args.update(dict( - nitro_user='nsroot', - nitro_pass='nsroot', - )) - module_mock = Mock(params=args, from_json=json.loads) - with patch('ansible.modules.network.netscaler.netscaler_nitro_request.AnsibleModule', Mock(return_value=module_mock)): - body = { - 'errorcode': 258, - 'message': 'Numerical error 258', - 'severity': 'ERROR' - } - instance = netscaler_nitro_request.NitroAPICaller() - r = None - info = { - 'status': 200, - 'body': codecs.encode(json.dumps(body), 'utf-8'), - } - result = {} - success_status = 200 - - expected_result = { - 'http_response_body': json.dumps(body), - 'http_response_data': info, - } - - nitro_data = {} - for key, value in body.items(): - nitro_data['nitro_%s' % key] = value - - expected_result.update(nitro_data) - instance.edit_response_data(r, info, result, success_status) - self.assertDictEqual(result, expected_result) - - def test_handle_get_return_object(self): - resource = 'lbvserver' - args = copy.deepcopy(module_arguments) - args.update(dict( - nitro_user='nsroot', - nitro_pass='nsroot', - resource=resource, - )) - resource_data = { - 'property1': 'value1', - 'property2': 'value2', - } - module_mock = Mock(params=args, from_json=json.loads) - with patch('ansible.modules.network.netscaler.netscaler_nitro_request.AnsibleModule', Mock(return_value=module_mock)): - instance = netscaler_nitro_request.NitroAPICaller() - - data = {resource: resource_data} - result = { - 'nitro_errorcode': 0, - 'http_response_body': json.dumps(data), - } - expected_result = { - 'nitro_object': resource_data - } - expected_result.update(result) - instance.handle_get_return_object(result) - self.assertDictEqual(result, expected_result) diff --git a/test/units/modules/network/netscaler/test_netscaler_save_config.py b/test/units/modules/network/netscaler/test_netscaler_save_config.py deleted file mode 100644 index fa0067990a..0000000000 --- a/test/units/modules/network/netscaler/test_netscaler_save_config.py +++ /dev/null @@ -1,148 +0,0 @@ - -# Copyright (c) 2017 Citrix Systems -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# - -from units.compat.mock import patch, Mock, call -from units.modules.utils import set_module_args -from .netscaler_module import TestModule, nitro_base_patcher - -import sys - -if sys.version_info[:2] != (2, 6): - import requests - - -class TestNetscalerSaveConfigModule(TestModule): - - @classmethod - def setUpClass(cls): - class MockException(Exception): - pass - - cls.MockException = MockException - - cls.nitro_base_patcher = nitro_base_patcher - - @classmethod - def tearDownClass(cls): - cls.nitro_base_patcher.stop() - - def setUp(self): - super(TestNetscalerSaveConfigModule, self).setUp() - self.nitro_base_patcher.start() - - def tearDown(self): - super(TestNetscalerSaveConfigModule, self).tearDown() - self.nitro_base_patcher.stop() - - def test_graceful_nitro_error_on_login(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - )) - from ansible.modules.network.netscaler import netscaler_save_config - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - client_mock = Mock() - client_mock.login = Mock(side_effect=MockException) - m = Mock(return_value=client_mock) - with patch('ansible.modules.network.netscaler.netscaler_save_config.get_nitro_client', m): - with patch('ansible.modules.network.netscaler.netscaler_save_config.nitro_exception', MockException): - self.module = netscaler_save_config - result = self.failed() - self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly') - - def test_graceful_no_connection_error(self): - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - )) - from ansible.modules.network.netscaler import netscaler_save_config - - class MockException(Exception): - pass - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.ConnectionError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_save_config', - get_nitro_client=m, - nitro_exception=MockException, - ): - self.module = netscaler_save_config - result = self.failed() - self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully') - - def test_graceful_login_error(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - )) - from ansible.modules.network.netscaler import netscaler_save_config - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - - class MockException(Exception): - pass - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.SSLError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_save_config', - get_nitro_client=m, - nitro_exception=MockException, - ): - self.module = netscaler_save_config - result = self.failed() - self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully') - - def test_save_config_called(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - )) - - class MockException(Exception): - pass - - from ansible.modules.network.netscaler import netscaler_save_config - client_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_save_config', - get_nitro_client=Mock(return_value=client_mock), - nitro_exception=MockException, - ): - self.module = netscaler_save_config - self.exited() - call_sequence = [call.login(), call.save_config(), call.logout()] - client_mock.assert_has_calls(call_sequence) diff --git a/test/units/modules/network/netscaler/test_netscaler_server.py b/test/units/modules/network/netscaler/test_netscaler_server.py deleted file mode 100644 index 040ffce9be..0000000000 --- a/test/units/modules/network/netscaler/test_netscaler_server.py +++ /dev/null @@ -1,696 +0,0 @@ - -# Copyright (c) 2017 Citrix Systems -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# - -from units.compat.mock import patch, Mock, MagicMock, call -from units.modules.utils import set_module_args -from .netscaler_module import TestModule, nitro_base_patcher - -import sys - -if sys.version_info[:2] != (2, 6): - import requests - - -class TestNetscalerServerModule(TestModule): - - @classmethod - def setUpClass(cls): - class MockException(Exception): - pass - - cls.MockException = MockException - - m = MagicMock() - cls.server_mock = MagicMock() - cls.server_mock.__class__ = MagicMock(add=Mock()) - nssrc_modules_mock = { - 'nssrc.com.citrix.netscaler.nitro.resource.config.basic': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.basic.server': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.basic.server.server': cls.server_mock, - } - - cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock) - cls.nitro_base_patcher = nitro_base_patcher - - @classmethod - def tearDownClass(cls): - cls.nitro_base_patcher.stop() - cls.nitro_specific_patcher.stop() - - def setUp(self): - super(TestNetscalerServerModule, self).setUp() - self.nitro_base_patcher.start() - self.nitro_specific_patcher.start() - - # Setup minimal required arguments to pass AnsibleModule argument parsing - - def tearDown(self): - super(TestNetscalerServerModule, self).tearDown() - self.nitro_base_patcher.stop() - self.nitro_specific_patcher.stop() - - def test_graceful_nitro_api_import_error(self): - # Stop nitro api patching to cause ImportError - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - self.nitro_base_patcher.stop() - self.nitro_specific_patcher.stop() - from ansible.modules.network.netscaler import netscaler_server - self.module = netscaler_server - result = self.failed() - self.assertEqual(result['msg'], 'Could not load nitro python sdk') - - def test_graceful_nitro_error_on_login(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_server - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - client_mock = Mock() - client_mock.login = Mock(side_effect=MockException) - m = Mock(return_value=client_mock) - with patch('ansible.modules.network.netscaler.netscaler_server.get_nitro_client', m): - with patch('ansible.modules.network.netscaler.netscaler_server.nitro_exception', MockException): - self.module = netscaler_server - result = self.failed() - self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly') - - def test_graceful_no_connection_error(self): - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_server - - class MockException(Exception): - pass - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.ConnectionError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_server', - get_nitro_client=m, - nitro_exception=MockException, - ): - self.module = netscaler_server - result = self.failed() - self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully') - - def test_graceful_login_error(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_server - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - - class MockException(Exception): - pass - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.SSLError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_server', - get_nitro_client=m, - nitro_exception=MockException, - ): - self.module = netscaler_server - result = self.failed() - self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully') - - def test_save_config_called_on_state_present(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_server - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_server', - get_nitro_client=m, - server_exists=Mock(side_effect=[False, True]), - ConfigProxy=Mock(return_value=server_proxy_mock), - diff_list=Mock(return_value={}), - do_state_change=Mock(return_value=Mock(errorcode=0)) - ): - self.module = netscaler_server - self.exited() - self.assertIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_called_on_state_absent(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_server - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_server', - get_nitro_client=m, - server_exists=Mock(side_effect=[True, False]), - ConfigProxy=Mock(return_value=server_proxy_mock), - diff_list=Mock(return_value={}), - do_state_change=Mock(return_value=Mock(errorcode=0)) - ): - self.module = netscaler_server - self.exited() - self.assertIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_not_called_on_state_present(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_server - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_server', - get_nitro_client=m, - server_exists=Mock(side_effect=[False, True]), - ConfigProxy=Mock(return_value=server_proxy_mock), - diff_list=Mock(return_value={}), - do_state_change=Mock(return_value=Mock(errorcode=0)) - ): - self.module = netscaler_server - self.exited() - self.assertNotIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_not_called_on_state_absent(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_server - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_server', - get_nitro_client=m, - server_exists=Mock(side_effect=[True, False]), - ConfigProxy=Mock(return_value=server_proxy_mock), - do_state_change=Mock(return_value=Mock(errorcode=0)) - ): - self.module = netscaler_server - self.exited() - self.assertNotIn(call.save_config(), client_mock.mock_calls) - - def test_do_state_change_fail(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_server - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_server', - nitro_exception=self.MockException, - get_nitro_client=m, - server_exists=Mock(side_effect=[True, False]), - ConfigProxy=Mock(return_value=server_proxy_mock), - diff_list=Mock(return_value={}), - do_state_change=Mock(return_value=Mock(errorcode=1, message='Failed on purpose')) - ): - self.module = netscaler_server - result = self.failed() - self.assertEqual(result['msg'], 'Error when setting disabled state. errorcode: 1 message: Failed on purpose') - - def test_disable_server_graceful(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - disabled=True, - graceful=True - )) - from ansible.modules.network.netscaler import netscaler_server - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_mock = Mock() - - d = { - 'graceful': True, - 'delay': 20, - } - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_server', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value=d), - get_immutables_intersection=Mock(return_value=[]), - server_exists=Mock(side_effect=[True, True]), - ConfigProxy=Mock(return_value=server_proxy_mock), - do_state_change=Mock(return_value=Mock(errorcode=0)) - ): - self.module = netscaler_server - result = self.exited() - self.assertEqual(d, {}, 'Graceful disable options were not discarded from the diff_list with the actual object') - - def test_new_server_execution_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_server - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - server_proxy_mock = Mock() - server_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=server_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_server', - get_nitro_client=m, - server_exists=Mock(side_effect=[False, True]), - server_identical=Mock(side_effect=[True]), - ConfigProxy=config_proxy_mock, - do_state_change=Mock(return_value=Mock(errorcode=0)) - ): - self.module = netscaler_server - self.exited() - server_proxy_mock.assert_has_calls([call.add()]) - - def test_modified_server_execution_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_server - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - server_proxy_mock = Mock() - server_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=server_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_server', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - server_exists=Mock(side_effect=[True, True]), - server_identical=Mock(side_effect=[False, True]), - ConfigProxy=config_proxy_mock, - do_state_change=Mock(return_value=Mock(errorcode=0)) - ): - self.module = netscaler_server - self.exited() - server_proxy_mock.assert_has_calls([call.update()]) - - def test_absent_server_execution_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_server - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - server_proxy_mock = Mock() - server_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=server_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_server', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - server_exists=Mock(side_effect=[True, False]), - server_identical=Mock(side_effect=[False, True]), - ConfigProxy=config_proxy_mock, - do_state_change=Mock(return_value=Mock(errorcode=0)) - ): - self.module = netscaler_server - self.exited() - server_proxy_mock.assert_has_calls([call.delete()]) - - def test_present_server_identical_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_server - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - server_proxy_mock = Mock() - server_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=server_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_server', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - server_exists=Mock(side_effect=[True, True]), - server_identical=Mock(side_effect=[True, True]), - ConfigProxy=config_proxy_mock, - do_state_change=Mock(return_value=Mock(errorcode=0)) - ): - self.module = netscaler_server - self.exited() - server_proxy_mock.assert_not_called() - - def test_absent_server_noop_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_server - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - server_proxy_mock = Mock() - server_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=server_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_server', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - server_exists=Mock(side_effect=[False, False]), - server_identical=Mock(side_effect=[False, False]), - ConfigProxy=config_proxy_mock, - do_state_change=Mock(return_value=Mock(errorcode=0)) - ): - self.module = netscaler_server - self.exited() - server_proxy_mock.assert_not_called() - - def test_present_server_failed_update(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_server - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - server_proxy_mock = Mock() - server_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=server_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_server', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - server_exists=Mock(side_effect=[True, True]), - server_identical=Mock(side_effect=[False, False]), - ConfigProxy=config_proxy_mock, - do_state_change=Mock(return_value=Mock(errorcode=0)) - ): - self.module = netscaler_server - result = self.failed() - self.assertEqual(result['msg'], 'Server is not configured according to parameters given') - self.assertTrue(result['failed']) - - def test_present_server_failed_create(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_server - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - server_proxy_mock = Mock() - server_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=server_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_server', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - server_exists=Mock(side_effect=[False, False]), - server_identical=Mock(side_effect=[False, False]), - ConfigProxy=config_proxy_mock, - do_state_change=Mock(return_value=Mock(errorcode=0)) - ): - self.module = netscaler_server - result = self.failed() - self.assertEqual(result['msg'], 'Server does not seem to exist') - self.assertTrue(result['failed']) - - def test_present_server_update_immutable_attribute(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_server - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - server_proxy_mock = Mock() - server_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=server_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_server', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=['domain']), - server_exists=Mock(side_effect=[True, True]), - server_identical=Mock(side_effect=[False, False]), - ConfigProxy=config_proxy_mock, - do_state_change=Mock(return_value=Mock(errorcode=0)) - ): - self.module = netscaler_server - result = self.failed() - self.assertEqual(result['msg'], 'Cannot update immutable attributes [\'domain\']') - self.assertTrue(result['failed']) - - def test_absent_server_failed_delete(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_server - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - server_proxy_attrs = { - 'diff_object.return_value': {}, - } - server_proxy_mock = Mock() - server_proxy_mock.configure_mock(**server_proxy_attrs) - config_proxy_mock = Mock(return_value=server_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_server', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - server_exists=Mock(side_effect=[True, True]), - server_identical=Mock(side_effect=[False, False]), - ConfigProxy=config_proxy_mock, - do_state_change=Mock(return_value=Mock(errorcode=0)) - ): - self.module = netscaler_server - result = self.failed() - self.assertEqual(result['msg'], 'Server seems to be present') - self.assertTrue(result['failed']) - - def test_graceful_nitro_exception_state_present(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_server - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - m = Mock(side_effect=MockException) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_server', - server_exists=m, - nitro_exception=MockException - ): - self.module = netscaler_server - result = self.failed() - self.assertTrue( - result['msg'].startswith('nitro exception'), - msg='Nitro exception not caught on operation absent' - ) - - def test_graceful_nitro_exception_state_absent(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_server - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - m = Mock(side_effect=MockException) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_server', - server_exists=m, - nitro_exception=MockException - ): - self.module = netscaler_server - result = self.failed() - self.assertTrue( - result['msg'].startswith('nitro exception'), - msg='Nitro exception not caught on operation absent' - ) diff --git a/test/units/modules/network/netscaler/test_netscaler_service.py b/test/units/modules/network/netscaler/test_netscaler_service.py deleted file mode 100644 index 6d7fa95335..0000000000 --- a/test/units/modules/network/netscaler/test_netscaler_service.py +++ /dev/null @@ -1,350 +0,0 @@ - -# Copyright (c) 2017 Citrix Systems -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# - -from units.compat.mock import patch, Mock, MagicMock, call - -import sys - -if sys.version_info[:2] != (2, 6): - import requests - - -from units.modules.utils import set_module_args -from .netscaler_module import TestModule, nitro_base_patcher - - -class TestNetscalerServiceModule(TestModule): - - @classmethod - def setUpClass(cls): - m = MagicMock() - cls.service_mock = MagicMock() - cls.service_mock.__class__ = MagicMock() - cls.service_lbmonitor_binding_mock = MagicMock() - cls.lbmonitor_service_binding_mock = MagicMock() - nssrc_modules_mock = { - 'nssrc.com.citrix.netscaler.nitro.resource.config.basic': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.basic.service': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.basic.service.service': cls.service_mock, - 'nssrc.com.citrix.netscaler.nitro.resource.config.basic.service_lbmonitor_binding': cls.service_lbmonitor_binding_mock, - 'nssrc.com.citrix.netscaler.nitro.resource.config.basic.service_lbmonitor_binding.service_lbmonitor_binding': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.lb': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbmonitor_service_binding': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbmonitor_service_binding.lbmonitor_service_binding': cls.lbmonitor_service_binding_mock, - } - - cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock) - cls.nitro_base_patcher = nitro_base_patcher - - @classmethod - def tearDownClass(cls): - cls.nitro_base_patcher.stop() - cls.nitro_specific_patcher.stop() - - def set_module_state(self, state): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state=state, - )) - - def setUp(self): - super(TestNetscalerServiceModule, self).setUp() - self.nitro_base_patcher.start() - self.nitro_specific_patcher.start() - - # Setup minimal required arguments to pass AnsibleModule argument parsing - - def tearDown(self): - super(TestNetscalerServiceModule, self).tearDown() - self.nitro_base_patcher.stop() - self.nitro_specific_patcher.stop() - - def test_graceful_nitro_api_import_error(self): - # Stop nitro api patching to cause ImportError - self.set_module_state('present') - self.nitro_base_patcher.stop() - self.nitro_specific_patcher.stop() - from ansible.modules.network.netscaler import netscaler_service - self.module = netscaler_service - result = self.failed() - self.assertEqual(result['msg'], 'Could not load nitro python sdk') - - def test_graceful_nitro_error_on_login(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_service - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - client_mock = Mock() - client_mock.login = Mock(side_effect=MockException) - m = Mock(return_value=client_mock) - with patch('ansible.modules.network.netscaler.netscaler_service.get_nitro_client', m): - with patch('ansible.modules.network.netscaler.netscaler_service.nitro_exception', MockException): - self.module = netscaler_service - result = self.failed() - self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly') - - def test_graceful_no_connection_error(self): - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_service - - class MockException(Exception): - pass - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.ConnectionError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_service', - get_nitro_client=m, - nitro_exception=MockException, - ): - self.module = netscaler_service - result = self.failed() - self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully') - - def test_graceful_login_error(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_service - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - - class MockException(Exception): - pass - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.SSLError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_service', - get_nitro_client=m, - nitro_exception=MockException, - ): - self.module = netscaler_service - result = self.failed() - self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully') - - def test_create_non_existing_service(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_service - service_proxy_mock = MagicMock() - attrs = { - 'diff_object.return_value': {}, - } - service_proxy_mock.configure_mock(**attrs) - - m = MagicMock(return_value=service_proxy_mock) - service_exists_mock = Mock(side_effect=[False, True]) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_service', - ConfigProxy=m, - service_exists=service_exists_mock, - do_state_change=Mock(return_value=Mock(errorcode=0)), - ): - self.module = netscaler_service - result = self.exited() - service_proxy_mock.assert_has_calls([call.add()]) - self.assertTrue(result['changed'], msg='Change not recorded') - - def test_update_service_when_service_differs(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_service - service_proxy_mock = MagicMock() - attrs = { - 'diff_object.return_value': {}, - } - service_proxy_mock.configure_mock(**attrs) - - m = MagicMock(return_value=service_proxy_mock) - service_exists_mock = Mock(side_effect=[True, True]) - service_identical_mock = Mock(side_effect=[False, True]) - monitor_bindings_identical_mock = Mock(side_effect=[True, True]) - all_identical_mock = Mock(side_effect=[False]) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_service', - ConfigProxy=m, - service_exists=service_exists_mock, - service_identical=service_identical_mock, - monitor_bindings_identical=monitor_bindings_identical_mock, - all_identical=all_identical_mock, - do_state_change=Mock(return_value=Mock(errorcode=0)), - ): - self.module = netscaler_service - result = self.exited() - service_proxy_mock.assert_has_calls([call.update()]) - self.assertTrue(result['changed'], msg='Change not recorded') - - def test_update_service_when_monitor_bindings_differ(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_service - service_proxy_mock = MagicMock() - attrs = { - 'diff_object.return_value': {}, - } - service_proxy_mock.configure_mock(**attrs) - - m = MagicMock(return_value=service_proxy_mock) - service_exists_mock = Mock(side_effect=[True, True]) - service_identical_mock = Mock(side_effect=[True, True]) - monitor_bindings_identical_mock = Mock(side_effect=[False, True]) - all_identical_mock = Mock(side_effect=[False]) - sync_monitor_bindings_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_service', - ConfigProxy=m, - service_exists=service_exists_mock, - service_identical=service_identical_mock, - monitor_bindings_identical=monitor_bindings_identical_mock, - all_identical=all_identical_mock, - sync_monitor_bindings=sync_monitor_bindings_mock, - do_state_change=Mock(return_value=Mock(errorcode=0)), - ): - self.module = netscaler_service - result = self.exited() - # poor man's assert_called_once since python3.5 does not implement that mock method - self.assertEqual(len(sync_monitor_bindings_mock.mock_calls), 1, msg='sync monitor bindings not called once') - self.assertTrue(result['changed'], msg='Change not recorded') - - def test_no_change_to_module_when_all_identical(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_service - service_proxy_mock = MagicMock() - attrs = { - 'diff_object.return_value': {}, - } - service_proxy_mock.configure_mock(**attrs) - - m = MagicMock(return_value=service_proxy_mock) - service_exists_mock = Mock(side_effect=[True, True]) - service_identical_mock = Mock(side_effect=[True, True]) - monitor_bindings_identical_mock = Mock(side_effect=[True, True]) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_service', - ConfigProxy=m, - service_exists=service_exists_mock, - service_identical=service_identical_mock, - monitor_bindings_identical=monitor_bindings_identical_mock, - do_state_change=Mock(return_value=Mock(errorcode=0)), - ): - self.module = netscaler_service - result = self.exited() - self.assertFalse(result['changed'], msg='Erroneous changed status update') - - def test_absent_operation(self): - self.set_module_state('absent') - from ansible.modules.network.netscaler import netscaler_service - service_proxy_mock = MagicMock() - attrs = { - 'diff_object.return_value': {}, - } - service_proxy_mock.configure_mock(**attrs) - - m = MagicMock(return_value=service_proxy_mock) - service_exists_mock = Mock(side_effect=[True, False]) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_service', - ConfigProxy=m, - service_exists=service_exists_mock, - - ): - self.module = netscaler_service - result = self.exited() - service_proxy_mock.assert_has_calls([call.delete()]) - self.assertTrue(result['changed'], msg='Changed status not set correctly') - - def test_absent_operation_no_change(self): - self.set_module_state('absent') - from ansible.modules.network.netscaler import netscaler_service - service_proxy_mock = MagicMock() - attrs = { - 'diff_object.return_value': {}, - } - service_proxy_mock.configure_mock(**attrs) - - m = MagicMock(return_value=service_proxy_mock) - service_exists_mock = Mock(side_effect=[False, False]) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_service', - ConfigProxy=m, - service_exists=service_exists_mock, - - ): - self.module = netscaler_service - result = self.exited() - service_proxy_mock.assert_not_called() - self.assertFalse(result['changed'], msg='Changed status not set correctly') - - def test_graceful_nitro_exception_operation_present(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_service - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - m = Mock(side_effect=MockException) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_service', - service_exists=m, - nitro_exception=MockException - ): - self.module = netscaler_service - result = self.failed() - self.assertTrue( - result['msg'].startswith('nitro exception'), - msg='Nitro exception not caught on operation present' - ) - - def test_graceful_nitro_exception_operation_absent(self): - self.set_module_state('absent') - from ansible.modules.network.netscaler import netscaler_service - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - m = Mock(side_effect=MockException) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_service', - service_exists=m, - nitro_exception=MockException - ): - self.module = netscaler_service - result = self.failed() - self.assertTrue( - result['msg'].startswith('nitro exception'), - msg='Nitro exception not caught on operation absent' - ) diff --git a/test/units/modules/network/netscaler/test_netscaler_servicegroup.py b/test/units/modules/network/netscaler/test_netscaler_servicegroup.py deleted file mode 100644 index b9729c4546..0000000000 --- a/test/units/modules/network/netscaler/test_netscaler_servicegroup.py +++ /dev/null @@ -1,537 +0,0 @@ - -# Copyright (c) 2017 Citrix Systems -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# - -from units.compat.mock import patch, Mock, MagicMock, call - -import sys - -if sys.version_info[:2] != (2, 6): - import requests - - -from units.modules.utils import set_module_args -from .netscaler_module import TestModule, nitro_base_patcher - - -class TestNetscalerServicegroupModule(TestModule): - - @classmethod - def setUpClass(cls): - class MockException(Exception): - pass - cls.MockException = MockException - m = MagicMock() - cls.servicegroup_mock = MagicMock() - cls.servicegroup_mock.__class__ = MagicMock() - nssrc_modules_mock = { - 'nssrc.com.citrix.netscaler.nitro.resource.config.basic': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.basic.servicegroup': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.basic.servicegroup.servicegroup': cls.servicegroup_mock, - 'nssrc.com.citrix.netscaler.nitro.resource.config.basic.servicegroup_servicegroupmember_binding': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.basic.servicegroup_servicegroupmember_binding.servicegroup_servicegroupmember_binding': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.basic.servicegroup_lbmonitor_binding': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.basic.servicegroup_lbmonitor_binding.servicegroup_lbmonitor_binding': m, - - 'nssrc.com.citrix.netscaler.nitro.resource.config.lb': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbmonitor_servicegroup_binding': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbmonitor_servicegroup_binding.lbmonitor_servicegroup_binding': m - } - - cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock) - cls.nitro_base_patcher = nitro_base_patcher - - @classmethod - def tearDownClass(cls): - cls.nitro_base_patcher.stop() - cls.nitro_specific_patcher.stop() - - def set_module_state(self, state): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state=state, - )) - - def setUp(self): - super(TestNetscalerServicegroupModule, self).setUp() - self.nitro_base_patcher.start() - self.nitro_specific_patcher.start() - - # Setup minimal required arguments to pass AnsibleModule argument parsing - - def tearDown(self): - super(TestNetscalerServicegroupModule, self).tearDown() - self.nitro_base_patcher.stop() - self.nitro_specific_patcher.stop() - - def test_graceful_nitro_api_import_error(self): - # Stop nitro api patching to cause ImportError - self.set_module_state('present') - self.nitro_base_patcher.stop() - self.nitro_specific_patcher.stop() - from ansible.modules.network.netscaler import netscaler_servicegroup - self.module = netscaler_servicegroup - result = self.failed() - self.assertEqual(result['msg'], 'Could not load nitro python sdk') - - def test_graceful_nitro_error_on_login(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_servicegroup - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - client_mock = Mock() - client_mock.login = Mock(side_effect=MockException) - m = Mock(return_value=client_mock) - with patch('ansible.modules.network.netscaler.netscaler_servicegroup.get_nitro_client', m): - with patch('ansible.modules.network.netscaler.netscaler_servicegroup.nitro_exception', MockException): - self.module = netscaler_servicegroup - result = self.failed() - self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly') - - def test_graceful_no_connection_error(self): - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_servicegroup - - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.ConnectionError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_servicegroup', - get_nitro_client=m, - nitro_exception=self.MockException, - ): - self.module = netscaler_servicegroup - result = self.failed() - self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully') - - def test_graceful_login_error(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_servicegroup - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.SSLError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_servicegroup', - get_nitro_client=m, - nitro_exception=self.MockException, - ): - self.module = netscaler_servicegroup - result = self.failed() - self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully') - - def test_create_non_existing_servicegroup(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_servicegroup - servicegroup_proxy_mock = MagicMock() - attrs = { - 'diff_object.return_value': {}, - } - servicegroup_proxy_mock.configure_mock(**attrs) - - m = MagicMock(return_value=servicegroup_proxy_mock) - servicegroup_exists_mock = Mock(side_effect=[False, True]) - - servicegroup_servicegroupmember_binding_mock = Mock(count=Mock(return_value=0)) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_servicegroup', - ConfigProxy=m, - servicegroup_exists=servicegroup_exists_mock, - servicemembers_identical=Mock(side_effect=[False, True]), - do_state_change=Mock(return_value=Mock(errorcode=0)), - servicegroup_servicegroupmember_binding=servicegroup_servicegroupmember_binding_mock, - nitro_exception=self.MockException, - ): - self.module = netscaler_servicegroup - result = self.exited() - servicegroup_proxy_mock.assert_has_calls([call.add()]) - self.assertTrue(result['changed'], msg='Change not recorded') - - def test_update_servicegroup_when_servicegroup_differs(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_servicegroup - servicegroup_proxy_mock = MagicMock() - attrs = { - 'diff_object.return_value': {}, - } - servicegroup_proxy_mock.configure_mock(**attrs) - - m = MagicMock(return_value=servicegroup_proxy_mock) - servicegroup_exists_mock = Mock(side_effect=[True, True]) - servicegroup_identical_mock = Mock(side_effect=[False, True]) - monitor_bindings_identical_mock = Mock(side_effect=[True, True]) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_servicegroup', - ConfigProxy=m, - servicegroup_exists=servicegroup_exists_mock, - servicegroup_identical=servicegroup_identical_mock, - monitor_bindings_identical=monitor_bindings_identical_mock, - servicemembers_identical=Mock(side_effect=[True, True]), - do_state_change=Mock(return_value=Mock(errorcode=0)), - nitro_exception=self.MockException, - ): - self.module = netscaler_servicegroup - result = self.exited() - servicegroup_proxy_mock.assert_has_calls([call.update()]) - self.assertTrue(result['changed'], msg='Change not recorded') - - def test_update_servicegroup_when_monitor_bindings_differ(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_servicegroup - servicegroup_proxy_mock = MagicMock() - attrs = { - 'diff_object.return_value': {}, - } - servicegroup_proxy_mock.configure_mock(**attrs) - - m = MagicMock(return_value=servicegroup_proxy_mock) - servicegroup_exists_mock = Mock(side_effect=[True, True]) - servicegroup_identical_mock = Mock(side_effect=[True, True]) - monitor_bindings_identical_mock = Mock(side_effect=[False, True]) - sync_monitor_bindings_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_servicegroup', - ConfigProxy=m, - servicegroup_exists=servicegroup_exists_mock, - servicegroup_identical=servicegroup_identical_mock, - monitor_bindings_identical=monitor_bindings_identical_mock, - nitro_exception=self.MockException, - servicemembers_identical=Mock(side_effect=[True, True]), - sync_monitor_bindings=sync_monitor_bindings_mock, - do_state_change=Mock(return_value=Mock(errorcode=0)), - ): - self.module = netscaler_servicegroup - result = self.exited() - # poor man's assert_called_once since python3.5 does not implement that mock method - self.assertEqual(len(sync_monitor_bindings_mock.mock_calls), 1, msg='sync monitor bindings not called once') - self.assertTrue(result['changed'], msg='Change not recorded') - - def test_update_servicegroup_when_service_members_differ(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_servicegroup - servicegroup_proxy_mock = MagicMock() - attrs = { - 'diff_object.return_value': {}, - } - servicegroup_proxy_mock.configure_mock(**attrs) - - m = MagicMock(return_value=servicegroup_proxy_mock) - sync_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_servicegroup', - ConfigProxy=m, - servicegroup_exists=Mock(side_effect=[True, True]), - servicegroup_identical=Mock(side_effect=[True, True]), - monitor_bindings_identical=Mock(side_effect=[True, True]), - sync_monitor_bindings=Mock(), - servicemembers_identical=Mock(side_effect=[False, True]), - sync_service_members=sync_mock, - do_state_change=Mock(return_value=Mock(errorcode=0)), - ): - self.module = netscaler_servicegroup - result = self.exited() - # poor man's assert_called_once since python3.5 does not implement that mock method - self.assertEqual(len(sync_mock.mock_calls), 1, msg='sync monitor bindings not called once') - self.assertTrue(result['changed'], msg='Change not recorded') - - def test_immutables_changed(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_servicegroup - servicegroup_proxy_mock = MagicMock() - attrs = { - 'diff_object.return_value': {}, - } - servicegroup_proxy_mock.configure_mock(**attrs) - - m = MagicMock(return_value=servicegroup_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_servicegroup', - ConfigProxy=m, - servicegroup_exists=Mock(side_effect=[True, True]), - servicegroup_identical=Mock(side_effect=[False, True]), - get_immutables_intersection=Mock(return_value=['some']), - nitro_exception=self.MockException, - - ): - self.module = netscaler_servicegroup - result = self.failed() - self.assertTrue(result['msg'].startswith('Cannot update immutable attributes')) - - def test_servicegroup_exists_sanity(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_servicegroup - servicegroup_proxy_mock = MagicMock() - attrs = { - 'diff_object.return_value': {}, - } - servicegroup_proxy_mock.configure_mock(**attrs) - - m = MagicMock(return_value=servicegroup_proxy_mock) - sync_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_servicegroup', - ConfigProxy=m, - servicegroup_exists=Mock(side_effect=[False, False]), - servicegroup_identical=Mock(side_effect=[False, False]), - monitor_bindings_identical=Mock(side_effect=[True, True]), - sync_monitor_bindings=Mock(), - servicemembers_identical=Mock(side_effect=[False, True]), - nitro_exception=self.MockException, - sync_service_members=sync_mock, - do_state_change=Mock(return_value=Mock(errorcode=0)), - ): - self.module = netscaler_servicegroup - result = self.failed() - self.assertEqual(result['msg'], 'Service group is not present') - - def test_servicegroup_differ_sanity(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_servicegroup - servicegroup_proxy_mock = MagicMock() - attrs = { - 'diff_object.return_value': {}, - } - servicegroup_proxy_mock.configure_mock(**attrs) - - m = MagicMock(return_value=servicegroup_proxy_mock) - sync_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_servicegroup', - ConfigProxy=m, - servicegroup_exists=Mock(side_effect=[True, True]), - servicegroup_identical=Mock(side_effect=[False, False]), - monitor_bindings_identical=Mock(side_effect=[True, True]), - sync_monitor_bindings=Mock(), - servicemembers_identical=Mock(side_effect=[False, True]), - nitro_exception=self.MockException, - sync_service_members=sync_mock, - do_state_change=Mock(return_value=Mock(errorcode=0)), - ): - self.module = netscaler_servicegroup - result = self.failed() - self.assertEqual(result['msg'], 'Service group is not identical to configuration') - - def test_servicegroup_servicemembers_differ_sanity(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_servicegroup - servicegroup_proxy_mock = MagicMock() - attrs = { - 'diff_object.return_value': {}, - } - servicegroup_proxy_mock.configure_mock(**attrs) - - m = MagicMock(return_value=servicegroup_proxy_mock) - sync_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_servicegroup', - ConfigProxy=m, - servicegroup_exists=Mock(side_effect=[True, True]), - servicegroup_identical=Mock(side_effect=[True, True]), - monitor_bindings_identical=Mock(side_effect=[True, True]), - sync_monitor_bindings=Mock(), - servicemembers_identical=Mock(side_effect=[False, False]), - nitro_exception=self.MockException, - sync_service_members=sync_mock, - do_state_change=Mock(return_value=Mock(errorcode=0)), - ): - self.module = netscaler_servicegroup - result = self.failed() - self.assertEqual(result['msg'], 'Service group members differ from configuration') - - def test_servicegroup_monitor_bindings_sanity(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_servicegroup - servicegroup_proxy_mock = MagicMock() - attrs = { - 'diff_object.return_value': {}, - } - servicegroup_proxy_mock.configure_mock(**attrs) - - m = MagicMock(return_value=servicegroup_proxy_mock) - sync_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_servicegroup', - ConfigProxy=m, - servicegroup_exists=Mock(side_effect=[True, True]), - servicegroup_identical=Mock(side_effect=[True, True]), - monitor_bindings_identical=Mock(side_effect=[False, False]), - sync_monitor_bindings=Mock(), - servicemembers_identical=Mock(side_effect=[True, True]), - nitro_exception=self.MockException, - sync_service_members=sync_mock, - do_state_change=Mock(return_value=Mock(errorcode=0)), - ): - self.module = netscaler_servicegroup - result = self.failed() - self.assertEqual(result['msg'], 'Monitor bindings are not identical') - - def test_no_change_to_module_when_all_identical(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_servicegroup - servicegroup_proxy_mock = MagicMock() - attrs = { - 'diff_object.return_value': {}, - } - servicegroup_proxy_mock.configure_mock(**attrs) - - m = MagicMock(return_value=servicegroup_proxy_mock) - servicegroup_exists_mock = Mock(side_effect=[True, True]) - servicegroup_identical_mock = Mock(side_effect=[True, True]) - monitor_bindings_identical_mock = Mock(side_effect=[True, True]) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_servicegroup', - ConfigProxy=m, - servicegroup_exists=servicegroup_exists_mock, - servicegroup_identical=servicegroup_identical_mock, - servicemembers_identical=Mock(side_effect=[True, True]), - monitor_bindings_identical=monitor_bindings_identical_mock, - do_state_change=Mock(return_value=Mock(errorcode=0)), - nitro_exception=self.MockException, - ): - self.module = netscaler_servicegroup - result = self.exited() - self.assertFalse(result['changed'], msg='Erroneous changed status update') - - def test_absent_operation(self): - self.set_module_state('absent') - from ansible.modules.network.netscaler import netscaler_servicegroup - servicegroup_proxy_mock = MagicMock() - attrs = { - 'diff_object.return_value': {}, - } - servicegroup_proxy_mock.configure_mock(**attrs) - - m = MagicMock(return_value=servicegroup_proxy_mock) - servicegroup_exists_mock = Mock(side_effect=[True, False]) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_servicegroup', - ConfigProxy=m, - servicegroup_exists=servicegroup_exists_mock, - - ): - self.module = netscaler_servicegroup - result = self.exited() - servicegroup_proxy_mock.assert_has_calls([call.delete()]) - self.assertTrue(result['changed'], msg='Changed status not set correctly') - - def test_absent_operation_no_change(self): - self.set_module_state('absent') - from ansible.modules.network.netscaler import netscaler_servicegroup - servicegroup_proxy_mock = MagicMock() - attrs = { - 'diff_object.return_value': {}, - } - servicegroup_proxy_mock.configure_mock(**attrs) - - m = MagicMock(return_value=servicegroup_proxy_mock) - servicegroup_exists_mock = Mock(side_effect=[False, False]) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_servicegroup', - ConfigProxy=m, - servicegroup_exists=servicegroup_exists_mock, - - ): - self.module = netscaler_servicegroup - result = self.exited() - servicegroup_proxy_mock.assert_not_called() - self.assertFalse(result['changed'], msg='Changed status not set correctly') - - def test_absent_operation_sanity(self): - self.set_module_state('absent') - from ansible.modules.network.netscaler import netscaler_servicegroup - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_servicegroup', - ConfigProxy=MagicMock(), - servicegroup_exists=Mock(side_effect=[True, True]), - nitro_exception=self.MockException, - - ): - self.module = netscaler_servicegroup - result = self.failed() - self.assertEqual(result['msg'], 'Service group is present') - - def test_graceful_nitro_exception_operation_present(self): - self.set_module_state('present') - from ansible.modules.network.netscaler import netscaler_servicegroup - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - m = Mock(side_effect=MockException) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_servicegroup', - servicegroup_exists=m, - nitro_exception=MockException - ): - self.module = netscaler_servicegroup - result = self.failed() - self.assertTrue( - result['msg'].startswith('nitro exception'), - msg='Nitro exception not caught on operation present' - ) - - def test_graceful_nitro_exception_operation_absent(self): - self.set_module_state('absent') - from ansible.modules.network.netscaler import netscaler_servicegroup - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - m = Mock(side_effect=MockException) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_servicegroup', - servicegroup_exists=m, - nitro_exception=MockException - ): - self.module = netscaler_servicegroup - result = self.failed() - self.assertTrue( - result['msg'].startswith('nitro exception'), - msg='Nitro exception not caught on operation absent' - ) diff --git a/test/units/modules/network/netscaler/test_netscaler_ssl_certkey.py b/test/units/modules/network/netscaler/test_netscaler_ssl_certkey.py deleted file mode 100644 index da751aac34..0000000000 --- a/test/units/modules/network/netscaler/test_netscaler_ssl_certkey.py +++ /dev/null @@ -1,621 +0,0 @@ - -# Copyright (c) 2017 Citrix Systems -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# - -from units.compat.mock import patch, Mock, MagicMock, call -from units.modules.utils import set_module_args -from .netscaler_module import TestModule, nitro_base_patcher - -import sys - -if sys.version_info[:2] != (2, 6): - import requests - - -class TestNetscalerSSLCertkeyModule(TestModule): - - @classmethod - def setUpClass(cls): - class MockException(Exception): - pass - - cls.MockException = MockException - - m = MagicMock() - cls.server_mock = MagicMock() - cls.server_mock.__class__ = MagicMock(add=Mock()) - nssrc_modules_mock = { - 'nssrc.com.citrix.netscaler.nitro.resource.config.ssl': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.ssl.sslcertkey': m, - 'nssrc.com.citrix.netscaler.nitro.resource.config.ssl.sslcertkey.sslcertkey': m, - } - - cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock) - cls.nitro_base_patcher = nitro_base_patcher - - @classmethod - def tearDownClass(cls): - cls.nitro_base_patcher.stop() - cls.nitro_specific_patcher.stop() - - def setUp(self): - super(TestNetscalerSSLCertkeyModule, self).setUp() - self.nitro_base_patcher.start() - self.nitro_specific_patcher.start() - - # Setup minimal required arguments to pass AnsibleModule argument parsing - - def tearDown(self): - super(TestNetscalerSSLCertkeyModule, self).tearDown() - self.nitro_base_patcher.stop() - self.nitro_specific_patcher.stop() - - def test_graceful_nitro_api_import_error(self): - # Stop nitro api patching to cause ImportError - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - self.nitro_base_patcher.stop() - self.nitro_specific_patcher.stop() - from ansible.modules.network.netscaler import netscaler_ssl_certkey - self.module = netscaler_ssl_certkey - result = self.failed() - self.assertEqual(result['msg'], 'Could not load nitro python sdk') - - def test_graceful_nitro_error_on_login(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_ssl_certkey - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - client_mock = Mock() - client_mock.login = Mock(side_effect=MockException) - m = Mock(return_value=client_mock) - with patch('ansible.modules.network.netscaler.netscaler_ssl_certkey.get_nitro_client', m): - with patch('ansible.modules.network.netscaler.netscaler_ssl_certkey.nitro_exception', MockException): - self.module = netscaler_ssl_certkey - result = self.failed() - self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly') - - def test_graceful_no_connection_error(self): - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_ssl_certkey - - class MockException(Exception): - pass - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.ConnectionError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_ssl_certkey', - get_nitro_client=m, - nitro_exception=MockException, - ): - self.module = netscaler_ssl_certkey - result = self.failed() - self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully') - - def test_graceful_login_error(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_ssl_certkey - - if sys.version_info[:2] == (2, 6): - self.skipTest('requests library not available under python2.6') - - class MockException(Exception): - pass - client_mock = Mock() - attrs = {'login.side_effect': requests.exceptions.SSLError} - client_mock.configure_mock(**attrs) - m = Mock(return_value=client_mock) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_ssl_certkey', - get_nitro_client=m, - nitro_exception=MockException, - ): - self.module = netscaler_ssl_certkey - result = self.failed() - self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully') - - def test_save_config_called_on_state_present(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_ssl_certkey - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - ssl_certkey_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_ssl_certkey', - get_nitro_client=m, - key_exists=Mock(side_effect=[False, True]), - key_identical=Mock(side_effect=[True]), - ConfigProxy=Mock(return_value=ssl_certkey_proxy_mock), - nitro_exception=self.MockException, - ): - self.module = netscaler_ssl_certkey - self.exited() - self.assertIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_called_on_state_absent(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_ssl_certkey - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - ssl_certkey_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_ssl_certkey', - get_nitro_client=m, - key_exists=Mock(side_effect=[True, False]), - ConfigProxy=Mock(return_value=ssl_certkey_proxy_mock), - ): - self.module = netscaler_ssl_certkey - self.exited() - self.assertIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_not_called_on_state_present(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_ssl_certkey - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - ssl_certkey_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_ssl_certkey', - get_nitro_client=m, - key_exists=Mock(side_effect=[False, True]), - key_identical=Mock(side_effect=[True]), - ConfigProxy=Mock(return_value=ssl_certkey_proxy_mock), - nitro_exception=self.MockException, - ): - self.module = netscaler_ssl_certkey - self.exited() - self.assertNotIn(call.save_config(), client_mock.mock_calls) - - def test_save_config_not_called_on_state_absent(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - save_config=False, - )) - from ansible.modules.network.netscaler import netscaler_ssl_certkey - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - ssl_certkey_proxy_mock = Mock() - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_ssl_certkey', - get_nitro_client=m, - key_exists=Mock(side_effect=[True, False]), - ConfigProxy=Mock(return_value=ssl_certkey_proxy_mock), - ): - self.module = netscaler_ssl_certkey - self.exited() - self.assertNotIn(call.save_config(), client_mock.mock_calls) - - def test_new_ssl_certkey_execution_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_ssl_certkey - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - ssl_certkey_proxy_attrs = { - 'diff_object.return_value': {}, - } - ssl_certkey_proxy_mock = Mock() - ssl_certkey_proxy_mock.configure_mock(**ssl_certkey_proxy_attrs) - config_proxy_mock = Mock(return_value=ssl_certkey_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_ssl_certkey', - get_nitro_client=m, - key_exists=Mock(side_effect=[False, True]), - key_identical=Mock(side_effect=[True]), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_ssl_certkey - self.exited() - ssl_certkey_proxy_mock.assert_has_calls([call.add()]) - - def test_modified_server_execution_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_ssl_certkey - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - ssl_certkey_proxy_attrs = { - 'diff_object.return_value': {}, - } - ssl_certkey_proxy_mock = Mock() - ssl_certkey_proxy_mock.configure_mock(**ssl_certkey_proxy_attrs) - config_proxy_mock = Mock(return_value=ssl_certkey_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_ssl_certkey', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - key_exists=Mock(side_effect=[True, True]), - key_identical=Mock(side_effect=[False, True]), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_ssl_certkey - self.exited() - ssl_certkey_proxy_mock.assert_has_calls([call.update()]) - - def test_absent_server_execution_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_ssl_certkey - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - ssl_certkey_proxy_attrs = { - 'diff_object.return_value': {}, - } - ssl_certkey_proxy_mock = Mock() - ssl_certkey_proxy_mock.configure_mock(**ssl_certkey_proxy_attrs) - config_proxy_mock = Mock(return_value=ssl_certkey_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_ssl_certkey', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - key_exists=Mock(side_effect=[True, False]), - key_identical=Mock(side_effect=[False, True]), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_ssl_certkey - self.exited() - ssl_certkey_proxy_mock.assert_has_calls([call.delete()]) - - def test_present_key_identical_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_ssl_certkey - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - ssl_certkey_proxy_attrs = { - 'diff_object.return_value': {}, - } - ssl_certkey_proxy_mock = Mock() - ssl_certkey_proxy_mock.configure_mock(**ssl_certkey_proxy_attrs) - config_proxy_mock = Mock(return_value=ssl_certkey_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_ssl_certkey', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - key_exists=Mock(side_effect=[True, True]), - key_identical=Mock(side_effect=[True, True]), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_ssl_certkey - self.exited() - ssl_certkey_proxy_mock.assert_not_called() - - def test_absent_server_noop_flow(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_ssl_certkey - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - ssl_certkey_proxy_attrs = { - 'diff_object.return_value': {}, - } - ssl_certkey_proxy_mock = Mock() - ssl_certkey_proxy_mock.configure_mock(**ssl_certkey_proxy_attrs) - config_proxy_mock = Mock(return_value=ssl_certkey_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_ssl_certkey', - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - key_exists=Mock(side_effect=[False, False]), - key_identical=Mock(side_effect=[False, False]), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_ssl_certkey - self.exited() - ssl_certkey_proxy_mock.assert_not_called() - - def test_present_server_failed_update(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_ssl_certkey - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - ssl_certkey_proxy_attrs = { - 'diff_object.return_value': {}, - } - ssl_certkey_proxy_mock = Mock() - ssl_certkey_proxy_mock.configure_mock(**ssl_certkey_proxy_attrs) - config_proxy_mock = Mock(return_value=ssl_certkey_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_ssl_certkey', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - key_exists=Mock(side_effect=[True, True]), - key_identical=Mock(side_effect=[False, False]), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_ssl_certkey - result = self.failed() - self.assertEqual(result['msg'], 'SSL certkey differs from configured') - self.assertTrue(result['failed']) - - def test_present_server_failed_create(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_ssl_certkey - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - ssl_certkey_proxy_attrs = { - 'diff_object.return_value': {}, - } - ssl_certkey_proxy_mock = Mock() - ssl_certkey_proxy_mock.configure_mock(**ssl_certkey_proxy_attrs) - config_proxy_mock = Mock(return_value=ssl_certkey_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_ssl_certkey', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - key_exists=Mock(side_effect=[False, False]), - key_identical=Mock(side_effect=[False, False]), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_ssl_certkey - result = self.failed() - self.assertEqual(result['msg'], 'SSL certkey does not exist') - self.assertTrue(result['failed']) - - def test_present_server_update_immutable_attribute(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_ssl_certkey - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - ssl_certkey_proxy_attrs = { - 'diff_object.return_value': {}, - } - ssl_certkey_proxy_mock = Mock() - ssl_certkey_proxy_mock.configure_mock(**ssl_certkey_proxy_attrs) - config_proxy_mock = Mock(return_value=ssl_certkey_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_ssl_certkey', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=['domain']), - key_exists=Mock(side_effect=[True, True]), - key_identical=Mock(side_effect=[False, False]), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_ssl_certkey - result = self.failed() - self.assertEqual(result['msg'], 'Cannot update immutable attributes [\'domain\']') - self.assertTrue(result['failed']) - - def test_absent_server_failed_delete(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_ssl_certkey - - client_mock = Mock() - - m = Mock(return_value=client_mock) - - ssl_certkey_proxy_attrs = { - 'diff_object.return_value': {}, - } - ssl_certkey_proxy_mock = Mock() - ssl_certkey_proxy_mock.configure_mock(**ssl_certkey_proxy_attrs) - config_proxy_mock = Mock(return_value=ssl_certkey_proxy_mock) - - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_ssl_certkey', - nitro_exception=self.MockException, - get_nitro_client=m, - diff_list=Mock(return_value={}), - get_immutables_intersection=Mock(return_value=[]), - key_exists=Mock(side_effect=[True, True]), - key_identical=Mock(side_effect=[False, False]), - ConfigProxy=config_proxy_mock, - ): - self.module = netscaler_ssl_certkey - result = self.failed() - self.assertEqual(result['msg'], 'SSL certkey still exists') - self.assertTrue(result['failed']) - - def test_graceful_nitro_exception_state_present(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='present', - )) - from ansible.modules.network.netscaler import netscaler_ssl_certkey - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - m = Mock(side_effect=MockException) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_ssl_certkey', - key_exists=m, - nitro_exception=MockException - ): - self.module = netscaler_ssl_certkey - result = self.failed() - self.assertTrue( - result['msg'].startswith('nitro exception'), - msg='Nitro exception not caught on operation absent' - ) - - def test_graceful_nitro_exception_state_absent(self): - set_module_args(dict( - nitro_user='user', - nitro_pass='pass', - nsip='192.0.2.1', - state='absent', - )) - from ansible.modules.network.netscaler import netscaler_ssl_certkey - - class MockException(Exception): - def __init__(self, *args, **kwargs): - self.errorcode = 0 - self.message = '' - - m = Mock(side_effect=MockException) - with patch.multiple( - 'ansible.modules.network.netscaler.netscaler_ssl_certkey', - key_exists=m, - nitro_exception=MockException - ): - self.module = netscaler_ssl_certkey - result = self.failed() - self.assertTrue( - result['msg'].startswith('nitro exception'), - msg='Nitro exception not caught on operation absent' - ) diff --git a/test/units/modules/network/netvisor/nvos_module.py b/test/units/modules/network/netvisor/nvos_module.py deleted file mode 100644 index 5c2d635fd9..0000000000 --- a/test/units/modules/network/netvisor/nvos_module.py +++ /dev/null @@ -1,108 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json -import tempfile - -from units.compat import unittest -from units.compat.mock import patch -from ansible.module_utils import basic - - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(name): - path = os.path.join(fixture_path, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as f: - data = f.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class AnsibleExitJson(Exception): - pass - - -class AnsibleFailJson(Exception): - pass - - -class TestNvosModule(unittest.TestCase): - def setUp(self): - super(TestNvosModule, self).setUp() - - self.test_log = tempfile.mkstemp(prefix='ansible-test-nvos-module-', suffix='.log')[1] - - def tearDown(self): - super(TestNvosModule, self).tearDown() - - os.remove(self.test_log) - - def execute_module(self, failed=False, changed=False, commands=None, - sort=True, defaults=False, state=None): - - self.load_fixtures(commands, state) - - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - if commands is not None: - if sort: - self.assertEqual(sorted(commands), sorted(result['commands']), - result['commands']) - else: - self.assertEqual(commands, result['commands'], - result['commands']) - - return result - - def failed(self): - def fail_json(*args, **kwargs): - kwargs['failed'] = True - raise AnsibleFailJson(kwargs) - - with patch.object(basic.AnsibleModule, 'fail_json', fail_json): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def changed(self, changed=False): - def exit_json(*args, **kwargs): - if 'changed' not in kwargs: - kwargs['changed'] = False - raise AnsibleExitJson(kwargs) - - with patch.object(basic.AnsibleModule, 'exit_json', exit_json): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertEqual(result['changed'], changed, result) - return result - - def load_fixtures(self, commands=None): - pass diff --git a/test/units/modules/network/netvisor/test_pn_access_list_ip.py b/test/units/modules/network/netvisor/test_pn_access_list_ip.py deleted file mode 100644 index 244a6b2fa9..0000000000 --- a/test/units/modules/network/netvisor/test_pn_access_list_ip.py +++ /dev/null @@ -1,59 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_access_list_ip -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestAccessListIpModule(TestNvosModule): - - module = pn_access_list_ip - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_access_list_ip.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_access_list_ip.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['present'] == 'access-list-ip-add': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['absent'] == 'access-list-ip-remove': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'present': - self.run_check_cli.return_value = False - if state == 'absent': - self.run_check_cli.return_value = True - - def test_access_list_ip_add(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'pn_ip': '172.16.3.1', 'state': 'present'}) - result = self.execute_module(changed=True, state='present') - expected_cmd = ' switch sw01 access-list-ip-add name foo ip 172.16.3.1' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_access_list_ip_remove(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'pn_ip': '172.16.3.1', 'state': 'absent'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 access-list-ip-remove name foo ip 172.16.3.1' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_admin_service.py b/test/units/modules/network/netvisor/test_pn_admin_service.py deleted file mode 100644 index 4032d8dc3a..0000000000 --- a/test/units/modules/network/netvisor/test_pn_admin_service.py +++ /dev/null @@ -1,54 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_admin_service -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestAdminServiceModule(TestNvosModule): - - module = pn_admin_service - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_admin_service.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['update'] == 'admin-service-modify': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - - def test_admin_service_modify_t1(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn__if': 'mgmt', - 'pn_web': 'False', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 admin-service-modify if mgmt no-web ' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_admin_service_modify_t2(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn__if': 'mgmt', - 'pn_snmp': 'True', 'pn_net_api': 'True', 'pn_ssh': 'True', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 admin-service-modify if mgmt snmp ssh net-api ' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_admin_service_modify_t3(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn__if': 'data', - 'pn_web_port': '8080', 'pn_net_api': 'True', 'pn_web_log': 'True', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 admin-service-modify if data web-port 8080 net-api web-log ' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_admin_session_timeout.py b/test/units/modules/network/netvisor/test_pn_admin_session_timeout.py deleted file mode 100644 index c31c107600..0000000000 --- a/test/units/modules/network/netvisor/test_pn_admin_session_timeout.py +++ /dev/null @@ -1,54 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_admin_session_timeout -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestAdminServiceModule(TestNvosModule): - - module = pn_admin_session_timeout - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_admin_session_timeout.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['update'] == 'admin-session-timeout-modify': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - - def test_admin_session_timeout_modify_t1(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_timeout': '61s', - 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 admin-session-timeout-modify timeout 61s' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_admin_session_timeout_modify_t2(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_timeout': '1d', - 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 admin-session-timeout-modify timeout 1d' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_admin_session_timeout_modify_t3(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_timeout': '10d20m3h15s', - 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 admin-session-timeout-modify timeout 10d20m3h15s' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_admin_syslog.py b/test/units/modules/network/netvisor/test_pn_admin_syslog.py deleted file mode 100644 index 25ed5631cd..0000000000 --- a/test/units/modules/network/netvisor/test_pn_admin_syslog.py +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_admin_syslog -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestAdminSyslogModule(TestNvosModule): - - module = pn_admin_syslog - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_admin_syslog.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_admin_syslog.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['present'] == 'admin-syslog-create': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['absent'] == 'admin-syslog-delete': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['update'] == 'admin-syslog-modify': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'present': - self.run_check_cli.return_value = False - if state == 'absent': - self.run_check_cli.return_value = True - if state == 'update': - self.run_check_cli.return_value = True - - def test_admin_syslog_create(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'pn_scope': 'local', 'pn_host': '166.68.224.46', 'pn_message_format': 'structured', 'state': 'present'}) - result = self.execute_module(changed=True, state='present') - expected_cmd = ' switch sw01 admin-syslog-create name foo scope local host 166.68.224.46 ' - expected_cmd += 'transport udp message-format structured' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_admin_syslog_delete(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'state': 'absent'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 admin-syslog-delete name foo ' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_admin_syslog_update(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'state': 'update'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 admin-syslog-modify name foo transport udp' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_connection_stats_settings.py b/test/units/modules/network/netvisor/test_pn_connection_stats_settings.py deleted file mode 100644 index 521da134b3..0000000000 --- a/test/units/modules/network/netvisor/test_pn_connection_stats_settings.py +++ /dev/null @@ -1,63 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_connection_stats_settings -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestAdminServiceModule(TestNvosModule): - - module = pn_connection_stats_settings - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_connection_stats_settings.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['update'] == 'connection-stats-settings-modify': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - - def test_connection_stats_settings_modify_t1(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_enable': False, - 'pn_fabric_connection_max_memory': '1000', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 connection-stats-settings-modify disable fabric-connection-max-memory 1000' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_connection_stats_settings_modify_t2(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_enable': True, - 'pn_connection_stats_log_enable': False, 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 connection-stats-settings-modify enable connection-stats-log-disable ' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_connection_stats_settings_modify_t3(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_client_server_stats_max_memory': '60M', - 'pn_client_server_stats_log_disk_space': '40M', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 connection-stats-settings-modify client-server-stats-max-memory ' - expected_cmd += '60M client-server-stats-log-disk-space 40M' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_connection_stats_settings_modify_t4(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_connection_stats_max_memory': '45M', - 'pn_fabric_connection_backup_enable': False, 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 connection-stats-settings-modify ' - expected_cmd += ' fabric-connection-backup-disable connection-stats-max-memory 45M' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_cpu_class.py b/test/units/modules/network/netvisor/test_pn_cpu_class.py deleted file mode 100644 index 63138db4d1..0000000000 --- a/test/units/modules/network/netvisor/test_pn_cpu_class.py +++ /dev/null @@ -1,68 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_cpu_class -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestCpuClassModule(TestNvosModule): - - module = pn_cpu_class - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_cpu_class.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_cpu_class.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['present'] == 'cpu-class-create': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['absent'] == 'cpu-class-delete': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'present': - self.run_check_cli.return_value = False - if state == 'absent': - self.run_check_cli.return_value = True - if state == 'update': - self.run_check_cli.return_value = True - - def test_cpu_class_create(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'icmp', - 'pn_scope': 'local', 'pn_rate_limit': '1000', 'state': 'present'}) - result = self.execute_module(changed=True, state='present') - expected_cmd = ' switch sw01 cpu-class-create name icmp scope local rate-limit 1000 ' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_cpu_class_delete(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'icmp', - 'state': 'absent'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 cpu-class-delete name icmp ' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_cpu_class_update(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'icmp', - 'pn_rate_limit': '2000', 'state': 'update'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 cpu-class-modify name icmp rate-limit 2000 ' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_cpu_mgmt_class.py b/test/units/modules/network/netvisor/test_pn_cpu_mgmt_class.py deleted file mode 100644 index be1dbd6ed4..0000000000 --- a/test/units/modules/network/netvisor/test_pn_cpu_mgmt_class.py +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_cpu_mgmt_class -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestCpuMgmtClassModule(TestNvosModule): - - module = pn_cpu_mgmt_class - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_cpu_mgmt_class.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['update'] == 'cpu-mgmt-class-modify': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - - def test_cpu_mgmt_class_modify_t1(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'icmp', - 'pn_rate_limit': '10000', 'pn_burst_size': '14000', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 cpu-mgmt-class-modify name icmp burst-size 14000 rate-limit 10000' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_cpu_mgmt_class_modify_t2(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'ssh', - 'pn_rate_limit': '10000', 'pn_burst_size': '100000', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 cpu-mgmt-class-modify name ssh burst-size 100000 rate-limit 10000' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_dhcp_filter.py b/test/units/modules/network/netvisor/test_pn_dhcp_filter.py deleted file mode 100644 index accb11182b..0000000000 --- a/test/units/modules/network/netvisor/test_pn_dhcp_filter.py +++ /dev/null @@ -1,73 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_dhcp_filter -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestDhcpFilterModule(TestNvosModule): - - module = pn_dhcp_filter - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_dhcp_filter.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_dhcp_filter.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['present'] == 'dhcp-filter-create': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['absent'] == 'dhcp-filter-delete': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['update'] == 'dhcp-filter-modify': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'present': - self.run_check_cli.return_value = False - if state == 'absent': - self.run_check_cli.return_value = True - if state == 'update': - self.run_check_cli.return_value = True - - def test_dhcp_filter_create(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'pn_trusted_ports': '1', 'state': 'present'}) - result = self.execute_module(changed=True, state='present') - expected_cmd = ' switch sw01 dhcp-filter-create name foo trusted-ports 1' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_dhcp_filter_delete(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'state': 'absent'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 dhcp-filter-delete name foo ' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_dhcp_filter_update(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'pn_trusted_ports': '2', 'state': 'update'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 dhcp-filter-modify name foo trusted-ports 2' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_dscp_map.py b/test/units/modules/network/netvisor/test_pn_dscp_map.py deleted file mode 100644 index 07ad9c33ce..0000000000 --- a/test/units/modules/network/netvisor/test_pn_dscp_map.py +++ /dev/null @@ -1,59 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_dscp_map -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestDscpMapModule(TestNvosModule): - - module = pn_dscp_map - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_dscp_map.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_dscp_map.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['present'] == 'dscp-map-create': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['absent'] == 'dscp-map-delete': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'present': - self.run_check_cli.return_value = False - if state == 'absent': - self.run_check_cli.return_value = True - - def test_dscp_map_create(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'pn_scope': 'local', 'state': 'present'}) - result = self.execute_module(changed=True, state='present') - expected_cmd = ' switch sw01 dscp-map-create name foo scope local' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_dscp_map_delete(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'state': 'absent'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 dscp-map-delete name foo ' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_dscp_map_pri_map.py b/test/units/modules/network/netvisor/test_pn_dscp_map_pri_map.py deleted file mode 100644 index 33dc90a48f..0000000000 --- a/test/units/modules/network/netvisor/test_pn_dscp_map_pri_map.py +++ /dev/null @@ -1,60 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_dscp_map_pri_map -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestCpuClassModule(TestNvosModule): - - module = pn_dscp_map_pri_map - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_dscp_map_pri_map.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_dscp_map_pri_map.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - self.mock_run_check_cli.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['update'] == 'dscp-map-pri-map-modify': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'update': - self.run_check_cli.return_value = True - - def test_dscp_map_pri_map_t1(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'pn_pri': '0', 'pn_dsmap': '40', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 dscp-map-pri-map-modify pri 0 name foo dsmap 40' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_dscp_map_pri_map_t2(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'pn_pri': '1', 'pn_dsmap': '8,10,12,14', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 dscp-map-pri-map-modify pri 1 name foo dsmap 8,10,12,14' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_dscp_map_pri_map_t3(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'pn_pri': '2', 'pn_dsmap': '25', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 dscp-map-pri-map-modify pri 2 name foo dsmap 25' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_fabric_local.py b/test/units/modules/network/netvisor/test_pn_fabric_local.py deleted file mode 100644 index 6dde01100f..0000000000 --- a/test/units/modules/network/netvisor/test_pn_fabric_local.py +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_fabric_local -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestFabricLocalModule(TestNvosModule): - - module = pn_fabric_local - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_fabric_local.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['update'] == 'fabric-local-modify': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - - def test_fabric_local_modify_t1(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_fabric_advertisement_network': 'mgmt-only', - 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 fabric-local-modify fabric-network mgmt fabric-advertisement-network mgmt-only' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_fabric_local_modify_t2(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_fabric_network': 'mgmt', - 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 fabric-local-modify fabric-network mgmt' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_igmp_snooping.py b/test/units/modules/network/netvisor/test_pn_igmp_snooping.py deleted file mode 100644 index 4cacbed7cd..0000000000 --- a/test/units/modules/network/netvisor/test_pn_igmp_snooping.py +++ /dev/null @@ -1,55 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_igmp_snooping -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestAdminServiceModule(TestNvosModule): - - module = pn_igmp_snooping - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_igmp_snooping.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['update'] == 'igmp-snooping-modify': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - - def test_igmp_snooping_modify_t1(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_vxlan': True, - 'pn_enable_vlans': '1-399,401-4092', 'pn_no_snoop_linklocal_vlans': 'none', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 igmp-snooping-modify vxlan enable-vlans ' - expected_cmd += '1-399,401-4092 no-snoop-linklocal-vlans none' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_igmp_snooping_modify_t2(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_scope': 'local', - 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 igmp-snooping-modify scope local' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_igmp_snooping_modify_t3(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_vxlan': False, - 'pn_enable_vlans': '1-399', 'pn_igmpv3_vlans': '1-399', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 igmp-snooping-modify no-vxlan igmpv3-vlans 1-399 enable-vlans 1-399' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_ipv6security_raguard.py b/test/units/modules/network/netvisor/test_pn_ipv6security_raguard.py deleted file mode 100644 index fc0e7c4ae5..0000000000 --- a/test/units/modules/network/netvisor/test_pn_ipv6security_raguard.py +++ /dev/null @@ -1,73 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_ipv6security_raguard -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestIPV6SecurityRaguardModule(TestNvosModule): - - module = pn_ipv6security_raguard - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_ipv6security_raguard.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_ipv6security_raguard.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['present'] == 'ipv6security-raguard-create': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['absent'] == 'ipv6security-raguard-delete': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['update'] == 'ipv6security-raguard-modify': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'present': - self.run_check_cli.return_value = False - if state == 'absent': - self.run_check_cli.return_value = True - if state == 'update': - self.run_check_cli.return_value = True - - def test_ipv6security_raguard_create(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'pn_device': 'host'}) - result = self.execute_module(changed=True, state='present') - expected_cmd = ' switch sw01 ipv6security-raguard-create name foo device host' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_ipv6security_raguard_delete(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'state': 'absent'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 ipv6security-raguard-delete name foo ' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_ipv6security_raguard_modify(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'pn_device': 'router', 'pn_router_priority': 'medium', 'state': 'update'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 ipv6security-raguard-modify name foo device router router-priority medium' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_ipv6security_raguard_port.py b/test/units/modules/network/netvisor/test_pn_ipv6security_raguard_port.py deleted file mode 100644 index adc9b56db7..0000000000 --- a/test/units/modules/network/netvisor/test_pn_ipv6security_raguard_port.py +++ /dev/null @@ -1,60 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_ipv6security_raguard_port -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestIPV6SecurityRaguardPortModule(TestNvosModule): - - module = pn_ipv6security_raguard_port - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_ipv6security_raguard_port.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_ipv6security_raguard_port.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - self.mock_run_check_cli.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['present'] == 'ipv6security-raguard-port-add': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['absent'] == 'ipv6security-raguard-port-remove': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'present': - self.run_check_cli.return_value = True - if state == 'absent': - self.run_check_cli.return_value = True - - def test_ipv6security_raguard_port_add(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'pn_ports': '1'}) - result = self.execute_module(changed=True, state='present') - expected_cmd = ' switch sw01 ipv6security-raguard-port-add name foo ports 1' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_ipv6security_raguard_port_remove(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'pn_ports': '1', 'state': 'absent'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 ipv6security-raguard-port-remove name foo ports 1' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_ipv6security_raguard_vlan.py b/test/units/modules/network/netvisor/test_pn_ipv6security_raguard_vlan.py deleted file mode 100644 index 58b2dac688..0000000000 --- a/test/units/modules/network/netvisor/test_pn_ipv6security_raguard_vlan.py +++ /dev/null @@ -1,60 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_ipv6security_raguard_vlan -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestIPV6SecurityReguardVlanModule(TestNvosModule): - - module = pn_ipv6security_raguard_vlan - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_ipv6security_raguard_vlan.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_ipv6security_raguard_vlan.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - self.mock_run_check_cli.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['present'] == 'ipv6security-raguard-vlan-add': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['absent'] == 'ipv6security-raguard-vlan-add': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'present': - self.run_check_cli.return_value = True - if state == 'absent': - self.run_check_cli.return_value = True - - def test_ipv6security_reguard_vlan_add(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'pn_vlans': '100-105', 'state': 'present'}) - result = self.execute_module(changed=True, state='present') - expected_cmd = ' switch sw01 ipv6security-raguard-vlan-add name foo vlans 100-105' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_ipv6security_reguard_vlan_remove(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'pn_vlans': '100-105', 'state': 'absent'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 ipv6security-raguard-vlan-remove name foo vlans 100-105' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_log_audit_exception.py b/test/units/modules/network/netvisor/test_pn_log_audit_exception.py deleted file mode 100644 index 635f253f7b..0000000000 --- a/test/units/modules/network/netvisor/test_pn_log_audit_exception.py +++ /dev/null @@ -1,62 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_log_audit_exception -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule, load_fixture - - -class TestLogAuditExceptionModule(TestNvosModule): - - module = pn_log_audit_exception - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_log_audit_exception.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_log_audit_exception.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - self.mock_run_check_cli.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['present'] == 'log-audit-exception-create': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['absent'] == 'log-audit-exception-delete': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'present': - self.run_check_cli.return_value = False - if state == 'absent': - self.run_check_cli.return_value = True - - def test_log_audit_exception_create(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_audit_type': 'cli', - 'pn_pattern': 'test', 'pn_scope': 'local', 'pn_access': 'any', 'state': 'present'}) - result = self.execute_module(changed=True, state='present') - expected_cmd = ' switch sw01 log-audit-exception-create cli pattern test any scope local ' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_log_audit_exception_delete(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_audit_type': 'cli', - 'pn_pattern': 'test', 'pn_access': 'any', 'state': 'absent'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 log-audit-exception-delete cli pattern test any' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_port_config.py b/test/units/modules/network/netvisor/test_pn_port_config.py deleted file mode 100644 index 514f831643..0000000000 --- a/test/units/modules/network/netvisor/test_pn_port_config.py +++ /dev/null @@ -1,61 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_port_config -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestPortConfigModule(TestNvosModule): - - module = pn_port_config - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_port_config.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['update'] == 'port-config-modify': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - - def test_pn_port_config_modify_t1(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_port': '1,2', - 'pn_speed': '10g', 'pn_jumbo': True, 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 port-config-modify speed 10g port 1,2 jumbo ' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_pn_port_config_modify_t2(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_port': 'all', - 'pn_host_enable': True, 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 port-config-modify port all host-enable ' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_pn_port_config_modify_t3(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_port': '5', - 'pn_crc_check_enable': True, 'pn_vxlan_termination': False, 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 port-config-modify port 5 crc-check-enable no-vxlan-termination ' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_pn_port_config_modify_t4(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_port': '10,11,12', - 'pn_pause': False, 'pn_enable': True, 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 port-config-modify port 10,11,12 no-pause enable ' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_port_cos_bw.py b/test/units/modules/network/netvisor/test_pn_port_cos_bw.py deleted file mode 100644 index 65d9b1417e..0000000000 --- a/test/units/modules/network/netvisor/test_pn_port_cos_bw.py +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_port_cos_bw -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestAdminServiceModule(TestNvosModule): - - module = pn_port_cos_bw - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_port_cos_bw.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['update'] == 'port-cos-bw-modify': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - - def test_pn_port_cos_bw_modify_t1(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_port': '1', - 'pn_cos': '0', 'pn_min_bw_guarantee': '60', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 port-cos-bw-modify cos 0 port 1 min-bw-guarantee 60' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_pn_port_cos_bw_modify_t2(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_port': 'all', - 'pn_cos': '1', 'pn_weight': 'priority', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 port-cos-bw-modify cos 1 port all weight priority' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_port_cos_rate_setting.py b/test/units/modules/network/netvisor/test_pn_port_cos_rate_setting.py deleted file mode 100644 index 450e7d9d0f..0000000000 --- a/test/units/modules/network/netvisor/test_pn_port_cos_rate_setting.py +++ /dev/null @@ -1,49 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_port_cos_rate_setting -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestPortCosRateSettingModule(TestNvosModule): - - module = pn_port_cos_rate_setting - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_port_cos_rate_setting.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['update'] == 'port-cos-rate-setting-modify': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - - def test_pn_port_cos_rate_setting_modify_t1(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_port': 'control-port', - 'pn_cos1_rate': '4000', 'pn_cos2_rate': '4000', 'pn_cos3_rate': '4000', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 port-cos-rate-setting-modify cos1-rate 4000 cos2-rate 4000 ' - expected_cmd += 'cos3-rate 4000 port control-port' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_pn_port_cos_rate_setting_modify_t2(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_port': 'data-port', - 'pn_cos1_rate': '2000', 'pn_cos5_rate': '3000', 'pn_cos2_rate': '4000', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 port-cos-rate-setting-modify cos1-rate 2000 cos5-rate 3000 ' - expected_cmd += 'cos2-rate 4000 port data-port' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_prefix_list.py b/test/units/modules/network/netvisor/test_pn_prefix_list.py deleted file mode 100644 index 2c4d3e4388..0000000000 --- a/test/units/modules/network/netvisor/test_pn_prefix_list.py +++ /dev/null @@ -1,60 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_prefix_list -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestPrefixListModule(TestNvosModule): - - module = pn_prefix_list - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_prefix_list.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_prefix_list.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - self.mock_run_check_cli.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['present'] == 'prefix-list-create': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['absent'] == 'prefix-list-delete': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'present': - self.run_check_cli.return_value = False - if state == 'absent': - self.run_check_cli.return_value = True - - def test_prefix_list_create(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'pn_scope': 'local', 'state': 'present'}) - result = self.execute_module(changed=True, state='present') - expected_cmd = ' switch sw01 prefix-list-create name foo scope local ' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_prefix_list_delete(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'state': 'absent'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 prefix-list-delete name foo ' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_prefix_list_network.py b/test/units/modules/network/netvisor/test_pn_prefix_list_network.py deleted file mode 100644 index 1eb9dbfe76..0000000000 --- a/test/units/modules/network/netvisor/test_pn_prefix_list_network.py +++ /dev/null @@ -1,60 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_prefix_list_network -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestPrefixListNetworkModule(TestNvosModule): - - module = pn_prefix_list_network - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_prefix_list_network.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_prefix_list_network.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - self.mock_run_check_cli.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['present'] == 'prefix-list-network-add': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['absent'] == 'prefix-list-network-remove': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'present': - self.run_check_cli.return_value = False - if state == 'absent': - self.run_check_cli.return_value = True - - def test_prefix_list_network_add(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'pn_network': '172.16.3.1', 'pn_netmask': '24', 'state': 'present'}) - result = self.execute_module(changed=True, state='present') - expected_cmd = ' switch sw01 prefix-list-network-add name foo network 172.16.3.1 netmask 24' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_prefix_list_network_remove(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'pn_network': '172.16.3.1', 'pn_netmask': '24', 'state': 'absent'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 prefix-list-network-remove name foo network 172.16.3.1 netmask 24' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_role.py b/test/units/modules/network/netvisor/test_pn_role.py deleted file mode 100644 index 781418c2d0..0000000000 --- a/test/units/modules/network/netvisor/test_pn_role.py +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_role -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestRoleModule(TestNvosModule): - - module = pn_role - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_role.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_role.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - self.run_check_cli.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['present'] == 'role-create': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['absent'] == 'role-delete': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['update'] == 'role-modify': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'present': - self.run_check_cli.return_value = False - if state == 'absent': - self.run_check_cli.return_value = True - if state == 'update': - self.run_check_cli.return_value = True - - def test_role_create(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'pn_scope': 'local', 'pn_access': 'read-only', 'state': 'present'}) - result = self.execute_module(changed=True, state='present') - expected_cmd = ' switch sw01 role-create name foo scope local access read-only' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_role_delete(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'state': 'absent'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 role-delete name foo ' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_role_update(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'pn_access': 'read-write', 'pn_sudo': True, 'pn_shell': True, 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 role-modify name foo access read-write shell sudo ' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_snmp_community.py b/test/units/modules/network/netvisor/test_pn_snmp_community.py deleted file mode 100644 index fd4886a98d..0000000000 --- a/test/units/modules/network/netvisor/test_pn_snmp_community.py +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_snmp_community -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestSnmpCommunityModule(TestNvosModule): - - module = pn_snmp_community - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_snmp_community.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_snmp_community.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - self.run_check_cli.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['present'] == 'snmp-community-create': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['absent'] == 'snmp-community-delete': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['update'] == 'snmp-community-modify': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'present': - self.run_check_cli.return_value = False - if state == 'absent': - self.run_check_cli.return_value = True - if state == 'update': - self.run_check_cli.return_value = True - - def test_snmp_community_create(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_community_string': 'foo', - 'pn_community_type': 'read-write', 'state': 'present'}) - result = self.execute_module(changed=True, state='present') - expected_cmd = ' switch sw01 snmp-community-create community-string foo community-type read-write' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_snmp_community_delete(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_community_string': 'foo', - 'state': 'absent'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 snmp-community-delete community-string foo ' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_snmp_community_update(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_community_string': 'foo', - 'pn_community_type': 'read-only', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 snmp-community-modify community-string foo community-type read-only' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_snmp_trap_sink.py b/test/units/modules/network/netvisor/test_pn_snmp_trap_sink.py deleted file mode 100644 index 85a12f0255..0000000000 --- a/test/units/modules/network/netvisor/test_pn_snmp_trap_sink.py +++ /dev/null @@ -1,61 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_snmp_trap_sink -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestSnmpTrapSinkModule(TestNvosModule): - - module = pn_snmp_trap_sink - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_snmp_trap_sink.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_snmp_trap_sink.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - self.run_check_cli.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['present'] == 'snmp-trap-sink-create': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['absent'] == 'snmp-trap-sink-delete': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'present': - self.run_check_cli.return_value = False - if state == 'absent': - self.run_check_cli.return_value = True - - def test_snmp_trap_sink_create(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_community': 'foo', - 'pn_dest_host': '192.168.67.8', 'pn_type': 'TRAP_TYPE_V2_INFORM', 'state': 'present'}) - result = self.execute_module(changed=True, state='present') - expected_cmd = ' switch sw01 snmp-trap-sink-create type TRAP_TYPE_V2_INFORM dest-host 192.168.67.8 ' - expected_cmd += 'community foo dest-port 162' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_snmp_trap_sink_delete(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_community': 'foo', - 'pn_dest_host': '192.168.67.8', 'pn_type': 'TRAP_TYPE_V2_INFORM', 'state': 'absent'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 snmp-trap-sink-delete community foo dest-host 192.168.67.8 dest-port 162' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_snmp_vacm.py b/test/units/modules/network/netvisor/test_pn_snmp_vacm.py deleted file mode 100644 index 593ce9a68b..0000000000 --- a/test/units/modules/network/netvisor/test_pn_snmp_vacm.py +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_snmp_vacm -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestSnmpVacmModule(TestNvosModule): - - module = pn_snmp_vacm - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_snmp_vacm.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_snmp_vacm.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - self.run_check_cli.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['present'] == 'snmp-vacm-create': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['absent'] == 'snmp-vacm-delete': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['update'] == 'snmp-vacm-modify': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'present': - self.run_check_cli.return_value = False - if state == 'absent': - self.run_check_cli.return_value = True - if state == 'update': - self.run_check_cli.return_value = True - - def test_snmp_vacm_create(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_user_name': 'foo', - 'pn_user_type': 'rouser', 'state': 'present'}) - result = self.execute_module(changed=True, state='present') - expected_cmd = ' switch sw01 snmp-vacm-create user-name foo user-type rouser' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_snmp_vacm_delete(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_user_name': 'foo', - 'state': 'absent'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 snmp-vacm-delete user-name foo ' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_snmp_vacm_modify(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_user_name': 'foo', - 'pn_user_type': 'rwuser', 'state': 'absent'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 snmp-vacm-delete user-name foo ' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_stp.py b/test/units/modules/network/netvisor/test_pn_stp.py deleted file mode 100644 index ebbb0827b0..0000000000 --- a/test/units/modules/network/netvisor/test_pn_stp.py +++ /dev/null @@ -1,49 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_stp -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestStpModule(TestNvosModule): - - module = pn_stp - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_stp.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['update'] == 'stp-modify': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - - def test_stp_modify_t1(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_hello_time': '3', - 'pn_stp_mode': 'rstp', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 stp-modify hello-time 3 root-guard-wait-time 20 mst-max-hops 20 max-age 20 ' - expected_cmd += 'stp-mode rstp forwarding-delay 15 bridge-priority 32768' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_stp_modify_t2(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_root_guard_wait_time': '50', - 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 stp-modify hello-time 2 root-guard-wait-time 50 mst-max-hops 20 ' - expected_cmd += 'max-age 20 forwarding-delay 15 bridge-priority 32768' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_stp_port.py b/test/units/modules/network/netvisor/test_pn_stp_port.py deleted file mode 100644 index ffe7c73444..0000000000 --- a/test/units/modules/network/netvisor/test_pn_stp_port.py +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_stp_port -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestStpPortModule(TestNvosModule): - - module = pn_stp_port - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_stp_port.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['update'] == 'stp-port-modify': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - - def test_stp_port_modify_t1(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_port': '1', - 'pn_filter': True, 'pn_priority': '144', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 stp-port-modify priority 144 cost 2000 port 1 filter ' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_stp_port_modify_t2(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_port': '1,2', - 'pn_cost': '200', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 stp-port-modify priority 128 cost 200 port 1,2' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_switch_setup.py b/test/units/modules/network/netvisor/test_pn_switch_setup.py deleted file mode 100644 index 34c8339cb2..0000000000 --- a/test/units/modules/network/netvisor/test_pn_switch_setup.py +++ /dev/null @@ -1,63 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_switch_setup -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestSwitchSetupModule(TestNvosModule): - - module = pn_switch_setup - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_switch_setup.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['update'] == 'switch-setup-modify': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - - def test_pn_switch_setup_modify_t1(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_timezone': 'America/New_York', - 'pn_in_band_ip': '20.20.1.1', 'pn_in_band_netmask': '24', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 switch-setup-modify timezone America/New_York ' - expected_cmd += 'in-band-netmask 24 in-band-ip 20.20.1.1' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_pn_switch_setup_modify_t2(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_in_band_ip6': '2001:0db8:85a3::8a2e:0370:7334', - 'pn_in_band_netmask_ip6': '127', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 switch-setup-modify in-band-ip6 2001:0db8:85a3::8a2e:0370:7334 ' - expected_cmd += 'in-band-netmask-ip6 127' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_pn_switch_setup_modify_t3(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_date': '2019-01-11', - 'pn_loopback_ip': '10.10.10.1', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 switch-setup-modify date 2019-01-11 loopback-ip 10.10.10.1' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_pn_switch_setup_modify_t4(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_dns_ip': '172.16.5.5', - 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 switch-setup-modify dns-ip 172.16.5.5' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_user.py b/test/units/modules/network/netvisor/test_pn_user.py deleted file mode 100644 index 9a37fa9326..0000000000 --- a/test/units/modules/network/netvisor/test_pn_user.py +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_user -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestUserModule(TestNvosModule): - - module = pn_user - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_user.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_user.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - self.run_check_cli.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['present'] == 'user-create': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['absent'] == 'user-delete': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['update'] == 'user-modify': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'present': - self.run_check_cli.return_value = False - if state == 'absent': - self.run_check_cli.return_value = True - if state == 'update': - self.run_check_cli.return_value = True - - def test_user_create(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'pn_scope': 'local', 'pn_password': 'test123', 'state': 'present'}) - result = self.execute_module(changed=True, state='present') - expected_cmd = ' switch sw01 user-create name foo scope local password test123' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_user_delete(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'state': 'absent'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 user-delete name foo ' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_user_modify(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'pn_password': 'test1234', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 user-modify name foo password test1234' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_vflow_table_profile.py b/test/units/modules/network/netvisor/test_pn_vflow_table_profile.py deleted file mode 100644 index d31c0f8d48..0000000000 --- a/test/units/modules/network/netvisor/test_pn_vflow_table_profile.py +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_vflow_table_profile -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestVflowTableProfileModule(TestNvosModule): - - module = pn_vflow_table_profile - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_vflow_table_profile.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['update'] == 'vflow-table-profile-modify': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - - def test_vflow_table_profile_modify_t1(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_profile': 'ipv6', - 'pn_hw_tbl': 'switch-main', 'pn_enable': True, 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 vflow-table-profile-modify profile ipv6 hw-tbl switch-main enable ' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_vflow_table_profile_modify_t2(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_profile': 'qos', - 'pn_hw_tbl': 'switch-main', 'pn_enable': False, 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 vflow-table-profile-modify profile qos hw-tbl switch-main disable ' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_vrouter_bgp.py b/test/units/modules/network/netvisor/test_pn_vrouter_bgp.py deleted file mode 100644 index ca20c9eb34..0000000000 --- a/test/units/modules/network/netvisor/test_pn_vrouter_bgp.py +++ /dev/null @@ -1,73 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_vrouter_bgp -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestVrouterBGPModule(TestNvosModule): - - module = pn_vrouter_bgp - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_vrouter_bgp.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_vrouter_bgp.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['present'] == 'vrouter-bgp-add': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['absent'] == 'vrouter-bgp-remove': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['update'] == 'vrouter-bgp-modify': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'present': - self.run_check_cli.return_value = True, False - if state == 'absent': - self.run_check_cli.return_value = True, True - if state == 'update': - self.run_check_cli.return_value = True, True - - def test_vrouter_bgp_add(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'sw01-vrouter', - 'pn_neighbor': '105.104.104.1', 'pn_remote_as': '65000', 'pn_bfd': True, 'state': 'present'}) - result = self.execute_module(changed=True, state='present') - expected_cmd = ' switch sw01 vrouter-bgp-add vrouter-name sw01-vrouter neighbor 105.104.104.1 remote-as 65000 bfd ' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_vrouter_bgp_remove(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'sw01-vrouter', - 'pn_neighbor': '105.104.104.1', 'state': 'absent'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 vrouter-bgp-remove vrouter-name sw01-vrouter neighbor 105.104.104.1 ' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_vrouter_bgp_modify(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'sw01-vrouter', 'pn_neighbor': '105.104.104.1', - 'pn_remote_as': '65000', 'pn_bfd': False, 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 vrouter-bgp-modify vrouter-name sw01-vrouter neighbor 105.104.104.1 remote-as 65000 no-bfd ' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_vrouter_bgp_network.py b/test/units/modules/network/netvisor/test_pn_vrouter_bgp_network.py deleted file mode 100644 index 4b7ee6a744..0000000000 --- a/test/units/modules/network/netvisor/test_pn_vrouter_bgp_network.py +++ /dev/null @@ -1,61 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_vrouter_bgp_network -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestVrouterBGPNetworkModule(TestNvosModule): - - module = pn_vrouter_bgp_network - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_vrouter_bgp_network.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_vrouter_bgp_network.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - self.mock_run_check_cli.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['present'] == 'vrouter-bgp-network-add': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['absent'] == 'vrouter-bgp-network-remove': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'present': - self.run_check_cli.return_value = False, '' - if state == 'absent': - self.run_check_cli.return_value = True, '' - - def test_vrouter_bgp_network_add(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'foo-vrouter', - 'pn_network': '10.10.10.10', 'pn_netmask': '31', 'state': 'present'}) - result = self.execute_module(changed=True, state='present') - expected_cmd = ' switch sw01 vrouter-bgp-network-add vrouter-name foo-vrouter netmask 31 ' - expected_cmd += 'network 10.10.10.10' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_vrouter_bgp_network_remove(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'foo-vrouter', - 'pn_network': '10.10.10.10', 'state': 'absent'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 vrouter-bgp-network-remove vrouter-name foo-vrouter network 10.10.10.10' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_vrouter_interface_ip.py b/test/units/modules/network/netvisor/test_pn_vrouter_interface_ip.py deleted file mode 100644 index 1e4e360b74..0000000000 --- a/test/units/modules/network/netvisor/test_pn_vrouter_interface_ip.py +++ /dev/null @@ -1,62 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_vrouter_interface_ip -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestVrouterInterfaceIpModule(TestNvosModule): - - module = pn_vrouter_interface_ip - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_vrouter_interface_ip.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_vrouter_interface_ip.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - self.mock_run_check_cli.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['present'] == 'vrouter-interface-ip-add': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['absent'] == 'vrouter-interface-ip-remove': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'present': - self.run_check_cli.return_value = True, False, True - if state == 'absent': - self.run_check_cli.return_value = True, True, True - - def test_vrouter_interface_ip_add(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'foo-vrouter', - 'pn_ip': '2620:0:1651:1::30', 'pn_netmask': '127', 'pn_nic': 'eth0.4092', 'state': 'present'}) - result = self.execute_module(changed=True, state='present') - expected_cmd = ' switch sw01 vrouter-interface-ip-add vrouter-name foo-vrouter nic eth0.4092 ' - expected_cmd += 'ip 2620:0:1651:1::30 netmask 127' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_vrouter_interface_ip_remove(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'foo-vrouter', - 'pn_ip': '2620:0:1651:1::30', 'pn_nic': 'eth0.4092', 'state': 'absent'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 vrouter-interface-ip-remove vrouter-name foo-vrouter nic eth0.4092 ' - expected_cmd += 'ip 2620:0:1651:1::30 ' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_vrouter_loopback_interface.py b/test/units/modules/network/netvisor/test_pn_vrouter_loopback_interface.py deleted file mode 100644 index 9bb2ba8dff..0000000000 --- a/test/units/modules/network/netvisor/test_pn_vrouter_loopback_interface.py +++ /dev/null @@ -1,60 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_vrouter_loopback_interface -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestVrouterLoopbackInterfaceModule(TestNvosModule): - - module = pn_vrouter_loopback_interface - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_vrouter_loopback_interface.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_vrouter_loopback_interface.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - self.mock_run_check_cli.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['present'] == 'vrouter-loopback-interface-add': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['absent'] == 'vrouter-loopback-remove': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'present': - self.run_check_cli.return_value = True, False - if state == 'absent': - self.run_check_cli.return_value = True, True - - def test_vrouter_loopback_interface_add(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'foo-vrouter', - 'pn_ip': '192.168.10.1', 'state': 'present'}) - result = self.execute_module(changed=True, state='present') - expected_cmd = ' switch sw01 vrouter-loopback-interface-add vrouter-name foo-vrouter ip 192.168.10.1' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_vrouter_loopback_interface_remove(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'foo-vrouter', - 'pn_ip': '192.168.10.1', 'pn_index': '1', 'state': 'absent'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 vrouter-loopback-interface-remove vrouter-name foo-vrouter index 1' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_vrouter_ospf.py b/test/units/modules/network/netvisor/test_pn_vrouter_ospf.py deleted file mode 100644 index d9d9fd5e29..0000000000 --- a/test/units/modules/network/netvisor/test_pn_vrouter_ospf.py +++ /dev/null @@ -1,59 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_vrouter_ospf -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestVrouterOSPFModule(TestNvosModule): - - module = pn_vrouter_ospf - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_vrouter_ospf.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_vrouter_ospf.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['present'] == 'vrouter-ospf-add': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['absent'] == 'vrouter-ospf-remove': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'present': - self.run_check_cli.return_value = True, False - if state == 'absent': - self.run_check_cli.return_value = True, True - - def test_vrouter_ospf_add(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'sw01-vrouter', - 'pn_network': '105.104.104.1', 'pn_netmask': '24', 'pn_ospf_area': '0', 'state': 'present'}) - result = self.execute_module(changed=True, state='present') - expected_cmd = ' switch sw01 vrouter-ospf-add vrouter-name sw01-vrouter network 105.104.104.1 netmask 24 ospf-area 0' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_vrouter_ospf_remove(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'sw01-vrouter', - 'pn_network': '105.104.104.1', 'state': 'absent'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 vrouter-ospf-remove vrouter-name sw01-vrouter network 105.104.104.1' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_vrouter_ospf6.py b/test/units/modules/network/netvisor/test_pn_vrouter_ospf6.py deleted file mode 100644 index 512348224a..0000000000 --- a/test/units/modules/network/netvisor/test_pn_vrouter_ospf6.py +++ /dev/null @@ -1,60 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_vrouter_ospf6 -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestVrouterOSPF6Module(TestNvosModule): - - module = pn_vrouter_ospf6 - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_vrouter_ospf6.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_vrouter_ospf6.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - self.mock_run_check_cli.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['present'] == 'vrouter-ospf6-add': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['absent'] == 'vrouter-ospf6-remove': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'present': - self.run_check_cli.return_value = True, False - if state == 'absent': - self.run_check_cli.return_value = True, True - - def test_vrouter_ospf6_add(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'foo-vrouter', - 'pn_nic': 'eth0.4092', 'pn_ospf6_area': '0.0.0.0', 'state': 'present'}) - result = self.execute_module(changed=True, state='present') - expected_cmd = ' switch sw01 vrouter-ospf6-add vrouter-name foo-vrouter nic eth0.4092 ospf6-area 0.0.0.0 ' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_vrouter_ospf6_remove(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'foo-vrouter', - 'pn_nic': 'eth0.4092', 'state': 'absent'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 vrouter-ospf6-remove vrouter-name foo-vrouter nic eth0.4092' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_vrouter_packet_relay.py b/test/units/modules/network/netvisor/test_pn_vrouter_packet_relay.py deleted file mode 100644 index 6258daedea..0000000000 --- a/test/units/modules/network/netvisor/test_pn_vrouter_packet_relay.py +++ /dev/null @@ -1,60 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_vrouter_packet_relay -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestVrouterPacketRelayModule(TestNvosModule): - - module = pn_vrouter_packet_relay - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_vrouter_packet_relay.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_vrouter_packet_relay.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - self.mock_run_check_cli.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['present'] == 'vrouter-packet-relay-add': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['absent'] == 'vrouter-packet-relay-remove': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'present': - self.run_check_cli.return_value = True, True - if state == 'absent': - self.run_check_cli.return_value = True, True - - def test_vrouter_packet_relay_add(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'foo-vrouter', - 'pn_forward_ip': '192.168.1.10', 'pn_nic': 'eth0.4092', 'state': 'present'}) - result = self.execute_module(changed=True, state='present') - expected_cmd = ' switch sw01 vrouter-packet-relay-add vrouter-name foo-vrouter nic eth0.4092 forward-proto dhcp forward-ip 192.168.1.10' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_vrouter_packet_relay_remove(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'foo-vrouter', - 'pn_forward_ip': '192.168.1.10', 'pn_nic': 'eth0.4092', 'state': 'absent'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 vrouter-packet-relay-remove vrouter-name foo-vrouter nic eth0.4092 forward-proto dhcp forward-ip 192.168.1.10' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_vrouter_pim_config.py b/test/units/modules/network/netvisor/test_pn_vrouter_pim_config.py deleted file mode 100644 index 46261af923..0000000000 --- a/test/units/modules/network/netvisor/test_pn_vrouter_pim_config.py +++ /dev/null @@ -1,55 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_vrouter_pim_config -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule - - -class TestVrouterPimConfigModule(TestNvosModule): - - module = pn_vrouter_pim_config - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_vrouter_pim_config.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_vrouter_pim_config.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - self.mock_run_check_cli.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['update'] == 'vrouter-pim-config-modify': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'update': - self.run_check_cli.return_value = True - - def test_vrouter_pim_config_t1(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_query_interval': '10', - 'pn_querier_timeout': '30', 'pn_vrouter_name': 'foo-vrouter', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 vrouter-pim-config-modify vrouter-name foo-vrouter ' - expected_cmd += 'querier-timeout 30 query-interval 10' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_vrouter_pim_config_t2(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_query_interval': '30', - 'pn_hello_interval': '120', 'pn_vrouter_name': 'foo-vrouter', 'state': 'update'}) - result = self.execute_module(changed=True, state='update') - expected_cmd = ' switch sw01 vrouter-pim-config-modify vrouter-name foo-vrouter ' - expected_cmd += 'hello-interval 120 query-interval 30' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/netvisor/test_pn_vtep.py b/test/units/modules/network/netvisor/test_pn_vtep.py deleted file mode 100644 index bbe829becf..0000000000 --- a/test/units/modules/network/netvisor/test_pn_vtep.py +++ /dev/null @@ -1,63 +0,0 @@ -# Copyright: (c) 2018, Pluribus Networks -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json - -from units.compat.mock import patch -from ansible.modules.network.netvisor import pn_vtep -from units.modules.utils import set_module_args -from .nvos_module import TestNvosModule, load_fixture - - -class TestVtepModule(TestNvosModule): - - module = pn_vtep - - def setUp(self): - self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_vtep.run_cli') - self.run_nvos_commands = self.mock_run_nvos_commands.start() - - self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_vtep.check_cli') - self.run_check_cli = self.mock_run_check_cli.start() - - def tearDown(self): - self.mock_run_nvos_commands.stop() - self.mock_run_check_cli.stop() - - def run_cli_patch(self, module, cli, state_map): - if state_map['present'] == 'vtep-create': - results = dict( - changed=True, - cli_cmd=cli - ) - elif state_map['absent'] == 'vtep-delete': - results = dict( - changed=True, - cli_cmd=cli - ) - module.exit_json(**results) - - def load_fixtures(self, commands=None, state=None, transport='cli'): - self.run_nvos_commands.side_effect = self.run_cli_patch - if state == 'present': - self.run_check_cli.return_value = False - if state == 'absent': - self.run_check_cli.return_value = True - - def test_vtep_create(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'pn_vrouter_name': 'sw01-vrouter', 'pn_location': 'sw01', 'pn_ip': '192.168.1.10', - 'pn_virtual_ip': '192.168.1.9', 'state': 'present'}) - result = self.execute_module(changed=True, state='present') - expected_cmd = ' switch sw01 vtep-create name foo vrouter-name sw01-vrouter ip 192.168.1.10 location sw01 virtual-ip 192.168.1.9 ' - self.assertEqual(result['cli_cmd'], expected_cmd) - - def test_vtep_delete(self): - set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo', - 'state': 'absent'}) - result = self.execute_module(changed=True, state='absent') - expected_cmd = ' switch sw01 vtep-delete name foo ' - self.assertEqual(result['cli_cmd'], expected_cmd) diff --git a/test/units/modules/network/nos/fixtures/nos_config_config.cfg b/test/units/modules/network/nos/fixtures/nos_config_config.cfg deleted file mode 100644 index dec739a4fa..0000000000 --- a/test/units/modules/network/nos/fixtures/nos_config_config.cfg +++ /dev/null @@ -1,31 +0,0 @@ -! -hostname router -! -interface TenGigabitEthernet 104/0/0 - ip address 1.2.3.4 255.255.255.0 - description test string -! -interface TenGigabitEthernet 104/0/1 - ip address 6.7.8.9 255.255.255.0 - description test string - shutdown -! -interface TenGigabitEthernet 104/0/10 - channel-group 20 mode active - description Channel Group Member -! -interface TenGigabitEthernet 104/0/11 - channel-group 20 mode active - description Channel Group Member -! -interface Port-channel 20 -! -interface TenGigabitEthernet 104/0/9 - ip address 172.16.128.99 255.255.255.0 - ipv6 address dead::beaf/64 - description Bleh -! -protocol lldp - system-description An Extreme VDX Device - disable -! diff --git a/test/units/modules/network/nos/fixtures/nos_config_src.cfg b/test/units/modules/network/nos/fixtures/nos_config_src.cfg deleted file mode 100644 index 81c7c69896..0000000000 --- a/test/units/modules/network/nos/fixtures/nos_config_src.cfg +++ /dev/null @@ -1,11 +0,0 @@ -! -hostname foo -! -interface TenGigabitEthernet 104/0/0 - no ip address -! -interface TenGigabitEthernet 104/0/1 - ip address 6.7.8.9 255.255.255.0 - description test string - shutdown -! diff --git a/test/units/modules/network/nos/fixtures/nos_facts_show_inventory_chassis b/test/units/modules/network/nos/fixtures/nos_facts_show_inventory_chassis deleted file mode 100644 index 5ca10241e4..0000000000 --- a/test/units/modules/network/nos/fixtures/nos_facts_show_inventory_chassis +++ /dev/null @@ -1,3 +0,0 @@ -NAME: Chassis DESCR:System Chassis -SID:BR-VDX6740 SwitchType:131 -PN:40-1000927-06 SN:CPL2541K01E diff --git a/test/units/modules/network/nos/fixtures/nos_facts_show_running-config b/test/units/modules/network/nos/fixtures/nos_facts_show_running-config deleted file mode 100644 index 3c80c59bf5..0000000000 --- a/test/units/modules/network/nos/fixtures/nos_facts_show_running-config +++ /dev/null @@ -1 +0,0 @@ - switch-attributes host-name LEAF4 diff --git a/test/units/modules/network/nos/fixtures/nos_facts_show_version b/test/units/modules/network/nos/fixtures/nos_facts_show_version deleted file mode 100644 index 1accd8191e..0000000000 --- a/test/units/modules/network/nos/fixtures/nos_facts_show_version +++ /dev/null @@ -1,17 +0,0 @@ -Network Operating System Software -Network Operating System Version: 7.2.0 -Copyright (c) 1995-2017 Brocade Communications Systems, Inc. -Firmware name: 7.2.0 -Build Time: 10:52:47 Jul 10, 2017 -Install Time: 01:32:03 Jan 5, 2018 -Kernel: 2.6.34.6 - -BootProm: 1.0.1 -Control Processor: e500mc with 4096 MB of memory - -Slot Name Primary/Secondary Versions Status ---------------------------------------------------------------------------- -SW/0 NOS 7.2.0 ACTIVE* - 7.2.0 -SW/1 NOS 7.2.0 STANDBY - 7.2.0 diff --git a/test/units/modules/network/nos/fixtures/show_version b/test/units/modules/network/nos/fixtures/show_version deleted file mode 100644 index 1accd8191e..0000000000 --- a/test/units/modules/network/nos/fixtures/show_version +++ /dev/null @@ -1,17 +0,0 @@ -Network Operating System Software -Network Operating System Version: 7.2.0 -Copyright (c) 1995-2017 Brocade Communications Systems, Inc. -Firmware name: 7.2.0 -Build Time: 10:52:47 Jul 10, 2017 -Install Time: 01:32:03 Jan 5, 2018 -Kernel: 2.6.34.6 - -BootProm: 1.0.1 -Control Processor: e500mc with 4096 MB of memory - -Slot Name Primary/Secondary Versions Status ---------------------------------------------------------------------------- -SW/0 NOS 7.2.0 ACTIVE* - 7.2.0 -SW/1 NOS 7.2.0 STANDBY - 7.2.0 diff --git a/test/units/modules/network/nos/nos_module.py b/test/units/modules/network/nos/nos_module.py deleted file mode 100644 index 80a24f01fc..0000000000 --- a/test/units/modules/network/nos/nos_module.py +++ /dev/null @@ -1,87 +0,0 @@ -# (c) 2018 Extreme Networks Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json - -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase - - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(name): - path = os.path.join(fixture_path, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as file_desc: - data = file_desc.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class TestNosModule(ModuleTestCase): - - def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False): - - self.load_fixtures(commands) - - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - if commands is not None: - if sort: - self.assertEqual(sorted(commands), sorted(result['commands']), result['commands']) - else: - self.assertEqual(commands, result['commands'], result['commands']) - - return result - - def failed(self): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def changed(self, changed=False): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertEqual(result['changed'], changed, result) - return result - - def load_fixtures(self, commands=None): - pass diff --git a/test/units/modules/network/nos/test_nos_command.py b/test/units/modules/network/nos/test_nos_command.py deleted file mode 100644 index 53bfb5bd5a..0000000000 --- a/test/units/modules/network/nos/test_nos_command.py +++ /dev/null @@ -1,121 +0,0 @@ -# -# (c) 2018 Extreme Networks Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json - -from units.compat.mock import patch -from units.modules.utils import set_module_args -from ansible.modules.network.nos import nos_command -from .nos_module import TestNosModule, load_fixture - - -class TestNosCommandModule(TestNosModule): - - module = nos_command - - def setUp(self): - super(TestNosCommandModule, self).setUp() - - self.mock_run_commands = patch('ansible.modules.network.nos.nos_command.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestNosCommandModule, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for item in commands: - try: - obj = json.loads(item['command']) - command = obj['command'] - except ValueError: - command = item['command'] - filename = str(command).replace(' ', '_') - output.append(load_fixture(filename)) - return output - - self.run_commands.side_effect = load_from_file - - def test_nos_command_simple(self): - set_module_args(dict(commands=['show version'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 1) - self.assertTrue(result['stdout'][0].startswith('Network Operating System Software')) - - def test_nos_command_multiple(self): - set_module_args(dict(commands=['show version', 'show version'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 2) - self.assertTrue(result['stdout'][0].startswith('Network Operating System Software')) - - def test_nos_command_wait_for(self): - wait_for = 'result[0] contains "Network Operating System Software"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module() - - def test_nos_command_wait_for_fails(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 10) - - def test_nos_command_retries(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show version'], wait_for=wait_for, retries=2)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 2) - - def test_nos_command_match_any(self): - wait_for = ['result[0] contains "Network"', - 'result[0] contains "test string"'] - set_module_args(dict(commands=['show version'], wait_for=wait_for, match='any')) - self.execute_module() - - def test_nos_command_match_all(self): - wait_for = ['result[0] contains "Network"', - 'result[0] contains "Network Operating System Software"'] - set_module_args(dict(commands=['show version'], wait_for=wait_for, match='all')) - self.execute_module() - - def test_nos_command_match_all_failure(self): - wait_for = ['result[0] contains "Network Operating System Software"', - 'result[0] contains "test string"'] - commands = ['show version', 'show version'] - set_module_args(dict(commands=commands, wait_for=wait_for, match='all')) - self.execute_module(failed=True) - - def test_nos_command_configure_error(self): - commands = ['configure terminal'] - set_module_args({ - 'commands': commands, - '_ansible_check_mode': True, - }) - result = self.execute_module(failed=True) - self.assertEqual( - result['msg'], - 'nos_command does not support running config mode commands. ' - 'Please use nos_config instead' - ) diff --git a/test/units/modules/network/nos/test_nos_config.py b/test/units/modules/network/nos/test_nos_config.py deleted file mode 100644 index 5fb7b9215e..0000000000 --- a/test/units/modules/network/nos/test_nos_config.py +++ /dev/null @@ -1,167 +0,0 @@ -# -# (c) 2018 Extreme Networks Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from units.modules.utils import set_module_args -from ansible.modules.network.nos import nos_config -from .nos_module import TestNosModule, load_fixture - - -class TestNosConfigModule(TestNosModule): - - module = nos_config - - def setUp(self): - super(TestNosConfigModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.nos.nos_config.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch('ansible.modules.network.nos.nos_config.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_run_commands = patch('ansible.modules.network.nos.nos_config.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestNosConfigModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - config_file = 'nos_config_config.cfg' - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - - def test_nos_config_unchanged(self): - src = load_fixture('nos_config_config.cfg') - set_module_args(dict(src=src)) - self.execute_module() - - def test_nos_config_src(self): - src = load_fixture('nos_config_src.cfg') - set_module_args(dict(src=src)) - commands = ['hostname foo', 'interface TenGigabitEthernet 104/0/0', - 'no ip address'] - self.execute_module(changed=True, commands=commands) - - def test_nos_config_backup(self): - set_module_args(dict(backup=True)) - result = self.execute_module() - self.assertIn('__backup__', result) - - def test_nos_config_lines_wo_parents(self): - set_module_args(dict(lines=['hostname foo'])) - commands = ['hostname foo'] - self.execute_module(changed=True, commands=commands) - - def test_nos_config_lines_w_parents(self): - set_module_args(dict(lines=['shutdown'], parents=['interface TenGigabitEthernet 104/0/0'])) - commands = ['interface TenGigabitEthernet 104/0/0', 'shutdown'] - self.execute_module(changed=True, commands=commands) - - def test_nos_config_before(self): - set_module_args(dict(lines=['hostname foo'], before=['test1', 'test2'])) - commands = ['test1', 'test2', 'hostname foo'] - self.execute_module(changed=True, commands=commands, sort=False) - - def test_nos_config_after(self): - set_module_args(dict(lines=['hostname foo'], after=['test1', 'test2'])) - commands = ['hostname foo', 'test1', 'test2'] - self.execute_module(changed=True, commands=commands, sort=False) - - def test_nos_config_before_after_no_change(self): - set_module_args(dict(lines=['hostname router'], - before=['test1', 'test2'], - after=['test3', 'test4'])) - self.execute_module() - - def test_nos_config_config(self): - config = 'hostname localhost' - set_module_args(dict(lines=['hostname router'], config=config)) - commands = ['hostname router'] - self.execute_module(changed=True, commands=commands) - - def test_nos_config_replace_block(self): - lines = ['description test string', 'test string'] - parents = ['interface TenGigabitEthernet 104/0/0'] - set_module_args(dict(lines=lines, replace='block', parents=parents)) - commands = parents + lines - self.execute_module(changed=True, commands=commands) - - def test_nos_config_match_none(self): - lines = ['hostname router'] - set_module_args(dict(lines=lines, match='none')) - self.execute_module(changed=True, commands=lines) - - def test_nos_config_match_none_parents(self): - lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string'] - parents = ['interface TenGigabitEthernet 104/0/0'] - set_module_args(dict(lines=lines, parents=parents, match='none')) - commands = parents + lines - self.execute_module(changed=True, commands=commands, sort=False) - - def test_nos_config_match_strict(self): - lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string', - 'shutdown'] - parents = ['interface TenGigabitEthernet 104/0/0'] - set_module_args(dict(lines=lines, parents=parents, match='strict')) - commands = parents + ['shutdown'] - self.execute_module(changed=True, commands=commands, sort=False) - - def test_nos_config_match_exact(self): - lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string', - 'shutdown'] - parents = ['interface TenGigabitEthernet 104/0/0'] - set_module_args(dict(lines=lines, parents=parents, match='exact')) - commands = parents + lines - self.execute_module(changed=True, commands=commands, sort=False) - - def test_nos_config_src_and_lines_fails(self): - args = dict(src='foo', lines='foo') - set_module_args(args) - self.execute_module(failed=True) - - def test_nos_config_src_and_parents_fails(self): - args = dict(src='foo', parents='foo') - set_module_args(args) - self.execute_module(failed=True) - - def test_nos_config_match_exact_requires_lines(self): - args = dict(match='exact') - set_module_args(args) - self.execute_module(failed=True) - - def test_nos_config_match_strict_requires_lines(self): - args = dict(match='strict') - set_module_args(args) - self.execute_module(failed=True) - - def test_nos_config_replace_block_requires_lines(self): - args = dict(replace='block') - set_module_args(args) - self.execute_module(failed=True) - - def test_nos_config_replace_config_requires_src(self): - args = dict(replace='config') - set_module_args(args) - self.execute_module(failed=True) diff --git a/test/units/modules/network/nos/test_nos_facts.py b/test/units/modules/network/nos/test_nos_facts.py deleted file mode 100644 index c8af1e6b47..0000000000 --- a/test/units/modules/network/nos/test_nos_facts.py +++ /dev/null @@ -1,61 +0,0 @@ -# -# (c) 2018 Extreme Networks Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from units.modules.utils import set_module_args -from ansible.modules.network.nos import nos_facts -from .nos_module import TestNosModule, load_fixture - - -class TestNosFactsModule(TestNosModule): - - module = nos_facts - - def setUp(self): - super(TestNosFactsModule, self).setUp() - self.mock_run_commands = patch('ansible.modules.network.nos.nos_facts.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestNosFactsModule, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - def load_from_file(*args, **kwargs): - commands = args[1] - output = list() - - for command in commands: - filename = str(command).split(' | ')[0].replace(' ', '_') - output.append(load_fixture('nos_facts_%s' % filename)) - return output - - self.run_commands.side_effect = load_from_file - - def test_nos_facts(self): - set_module_args(dict(gather_subset='default')) - result = self.execute_module() - self.assertEqual( - result['ansible_facts']['ansible_net_model'], 'BR-VDX6740' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_serialnum'], 'CPL2541K01E' - ) diff --git a/test/units/modules/network/nso/fixtures/complex_schema.json b/test/units/modules/network/nso/fixtures/complex_schema.json deleted file mode 100644 index 49a1176557..0000000000 --- a/test/units/modules/network/nso/fixtures/complex_schema.json +++ /dev/null @@ -1,212 +0,0 @@ -{ - "meta": { - "prefix": "ansible", - "namespace": "http://example.com/ansible", - "types": { - }, - "keypath": "/ansible:action/complex" - }, - "data": { - "kind": "action", - "mandatory": true, - "name": "complex", - "qname": "ansible:complex", - "access": { - "read": false, - "create": false, - "execute": true, - "update": false, - "delete": false - }, - "children": [ - { - "kind": "leaf", - "is_action_input": true, - "name": "number", - "qname": "ansible:number", - "access": { - "read": false, - "create": false, - "execute": false, - "update": true, - "delete": false - }, - "type": { - "primitive": true, - "name": "uint8" - } - }, - { - "kind": "container", - "is_action_input": true, - "mandatory": true, - "name": "ansible", - "qname": "ansible:ansible", - "access": { - "read": false, - "create": false, - "execute": false, - "update": true, - "delete": false - }, - "children": [ - { - "kind": "choice", - "cases": [ - { - "kind": "case", - "name": "version", - "children": [ - { - "kind": "leaf", - "is_action_input": true, - "name": "version", - "qname": "ansible:version", - "access": { - "read": false, - "create": false, - "execute": false, - "update": true, - "delete": false - }, - "type": { - "primitive": true, - "name": "string" - } - } - ] - }, - { - "kind": "case", - "name": "release", - "children": [ - { - "kind": "container", - "is_action_input": true, - "mandatory": true, - "name": "release", - "qname": "ansible:release", - "access": { - "read": false, - "create": false, - "execute": false, - "update": true, - "delete": false - }, - "children": [ - { - "kind": "leaf", - "is_action_input": true, - "name": "major", - "qname": "ansible:major", - "access": { - "read": false, - "create": false, - "execute": false, - "update": true, - "delete": false - }, - "type": { - "primitive": true, - "name": "uint8" - } - }, - { - "kind": "leaf", - "is_action_input": true, - "name": "minor", - "qname": "ansible:minor", - "access": { - "read": false, - "create": false, - "execute": false, - "update": true, - "delete": false - }, - "type": { - "primitive": true, - "name": "uint8" - } - } - ] - } - ] - } - ], - "name": "version-releae-choice" - } - ] - }, - { - "kind": "choice", - "cases": [ - { - "kind": "case", - "name": "version", - "children": [ - { - "kind": "list", - "min_elements": 0, - "name": "version", - "max_elements": "unbounded", - "qname": "ansible:version", - "access": { - "read": false, - "create": false, - "execute": false, - "update": false, - "delete": false - }, - "mandatory": true, - "children": [ - { - "kind": "leaf", - "name": "name", - "qname": "ansible:name", - "access": { - "read": false, - "create": false, - "execute": false, - "update": false, - "delete": false - }, - "type": { - "primitive": true, - "name": "string" - }, - "is_action_output": true - } - ], - "is_action_output": true - } - ] - }, - { - "kind": "case", - "name": "release", - "children": [ - { - "kind": "leaf", - "name": "release", - "qname": "ansible:release", - "access": { - "read": false, - "create": false, - "execute": false, - "update": false, - "delete": false - }, - "type": { - "primitive": true, - "name": "string" - }, - "is_action_output": true - } - ] - } - ], - "name": "version-release-choice" - } - ] - } -} diff --git a/test/units/modules/network/nso/fixtures/config_config.json b/test/units/modules/network/nso/fixtures/config_config.json deleted file mode 100644 index b7318586b5..0000000000 --- a/test/units/modules/network/nso/fixtures/config_config.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "l3vpn:vpn": { - "l3vpn": [ - { - "name": "company", - "route-distinguisher": 999, - "endpoint": [ - { - "id": "branch-office1", - "ce-device": "ce6", - "ce-interface": "GigabitEthernet0/12", - "ip-network": "10.10.1.0/24", - "bandwidth": 12000000, - "as-number": 65101 - } - ] - } - ] - } -} diff --git a/test/units/modules/network/nso/fixtures/config_config_changes.json b/test/units/modules/network/nso/fixtures/config_config_changes.json deleted file mode 100644 index 3ef234b7ff..0000000000 --- a/test/units/modules/network/nso/fixtures/config_config_changes.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "changes": [ - { - "path": "/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/ce-device", - "old": "", - "value": "ce6", - "op": "value_set" - }, - { - "path": "/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/ip-network", - "old": "", - "value": "10.10.1.0/24", - "op": "value_set" - }, - { - "path": "/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/as-number", - "old": "", - "value": "65101", - "op": "value_set" - }, - { - "path": "/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/ce-interface", - "old": "", - "value": "GigabitEthernet0/12", - "op": "value_set" - }, - { - "path": "/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/bandwidth", - "old": "", - "value": "12000000", - "op": "value_set" - }, - { - "path": "/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}", - "old": "", - "value": "", - "op": "created" - }, - { - "path": "/l3vpn:vpn/l3vpn{company}", - "old": "", - "value": "", - "op": "modified" - } - ] -} diff --git a/test/units/modules/network/nso/fixtures/config_empty_data.json b/test/units/modules/network/nso/fixtures/config_empty_data.json deleted file mode 100644 index 0967ef424b..0000000000 --- a/test/units/modules/network/nso/fixtures/config_empty_data.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/test/units/modules/network/nso/fixtures/description_schema.json b/test/units/modules/network/nso/fixtures/description_schema.json deleted file mode 100644 index 2680a484ad..0000000000 --- a/test/units/modules/network/nso/fixtures/description_schema.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "meta": { - "prefix": "ncs", - "namespace": "http://tail-f.com/ns/ncs", - "types": { - }, - "keypath": "/ncs:devices/device{ce0}/description" - }, - "data": { - "info": { - "string": "Free form textual description" - }, - "kind": "leaf", - "name": "description", - "qname": "ncs:description", - "access": { - "read": true, - "create": true, - "execute": false, - "update": true, - "delete": true - }, - "type": { - "primitive": true, - "name": "string" - } - } -} diff --git a/test/units/modules/network/nso/fixtures/device_schema.json b/test/units/modules/network/nso/fixtures/device_schema.json deleted file mode 100644 index d3bd2ac363..0000000000 --- a/test/units/modules/network/nso/fixtures/device_schema.json +++ /dev/null @@ -1 +0,0 @@ -{"meta": {"prefix": "ncs", "namespace": "http://tail-f.com/ns/ncs", "types": {"http://tail-f.com/ns/ncs:t85": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t85"}], "leaf_type": [{"name": "string"}]}], "urn:ietf:params:xml:ns:yang:ietf-inet-types:port-number": [{"range": {"value": [["0", "65535"]]}, "name": "urn:ietf:params:xml:ns:yang:ietf-inet-types:port-number"}, {"name": "uint16"}], "http://tail-f.com/ns/ncs:t83": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t83"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:node-name": [{"name": "http://tail-f.com/ns/ncs:node-name"}, {"max-length": {"value": 253}, "min-length": {"value": 1}, "name": "urn:ietf:params:xml:ns:yang:ietf-inet-types:domain-name", "pattern": {"value": "((([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.)*([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.?)|\\."}}, {"name": "string"}], "http://tail-f.com/ns/ncs:t29": [{"range": {"value": [["1", "4294967"]]}, "name": "http://tail-f.com/ns/ncs:t29"}, {"name": "uint32"}], "http://tail-f.com/ns/ncs:t101": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t101"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t43": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t43"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t27": [{"range": {"value": [["1", "4294967"]]}, "name": "http://tail-f.com/ns/ncs:t27"}, {"name": "uint32"}], "http://tail-f.com/ns/ncs:t40": [{"name": "http://tail-f.com/ns/ncs:t40", "enumeration": [{"label": "reject"}, {"label": "accept"}]}, {"name": "string"}], "http://tail-f.com/ns/ncs:t47": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t47"}], "leaf_type": [{"name": "string"}]}], "urn:ietf:params:xml:ns:yang:ietf-inet-types:host": [{"union": [[{"name": "urn:ietf:params:xml:ns:yang:ietf-inet-types:ip-address"}, {"name": "ip-address"}], [{"max-length": {"value": 253}, "min-length": {"value": 1}, "name": "urn:ietf:params:xml:ns:yang:ietf-inet-types:domain-name", "pattern": {"value": "((([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.)*([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.?)|\\."}}, {"name": "string"}]]}], "http://tail-f.com/ns/ncs:t45": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t45"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t49": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t49"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:trace-flag": [{"name": "http://tail-f.com/ns/ncs:trace-flag", "enumeration": [{"info": "Trace is disabled", "label": "false"}, {"info": "Raw, unformatted data", "label": "raw"}, {"info": "Pretty-printed data", "label": "pretty"}]}, {"name": "string"}], "http://tail-f.com/ns/ncs:t28": [{"range": {"value": [["1", "4294967"]]}, "name": "http://tail-f.com/ns/ncs:t28"}, {"name": "uint32"}]}, "keypath": "/ncs:devices/device"}, "data": {"info": {"string": "The list of managed devices"}, "kind": "list", "leafref_groups": [["remote-node"], ["authgroup"], ["device-profile"]], "mandatory": true, "name": "device", "max_elements": "unbounded", "contains_when_statement": true, "qname": "ncs:device", "children": [{"info": {"string": "A string uniquely identifying the managed device"}, "kind": "key", "mandatory": true, "name": "name", "qname": "ncs:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"info": {"string": "IP address or host name for the management interface"}, "kind": "leaf", "name": "address", "qname": "ncs:address", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", "name": "host"}}, {"info": {"string": "Port for the management interface"}, "kind": "leaf", "name": "port", "qname": "ncs:port", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", "name": "port-number"}}, {"info": {"string": "Name of remote node which connects to device"}, "kind": "leaf", "name": "remote-node", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "node-name"}, "qname": "ncs:remote-node", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/ncs:cluster/remote-node/name", "is_leafref": true}, {"info": {"string": "SSH connection configuration"}, "kind": "container", "mandatory": true, "name": "ssh", "qname": "ncs:ssh", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Free form textual description"}, "kind": "leaf", "name": "description", "qname": "ncs:description", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"primitive": true, "name": "string"}}, {"info": {"string": "Physical location of devices in the group"}, "kind": "container", "mandatory": true, "name": "location", "qname": "ncs:location", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Authentication credentials for the device"}, "kind": "leaf", "name": "authgroup", "type": {"primitive": true, "name": "string"}, "qname": "ncs:authgroup", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/ncs:devices/authgroups/group/name", "is_leafref": true}, {"info": {"string": "Management protocol for the device"}, "kind": "container", "mandatory": true, "name": "device-type", "qname": "ncs:device-type", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"kind": "leaf", "name": "device-profile", "type": {"primitive": true, "name": "string"}, "qname": "ncs:device-profile", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/ncs:devices/profiles/profile/name", "is_leafref": true}, {"info": {"string": "Timeout in seconds for new connections"}, "kind": "leaf", "name": "connect-timeout", "qname": "ncs:connect-timeout", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "units": "seconds", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t27"}}, {"info": {"string": "Timeout in seconds used when reading data"}, "kind": "leaf", "name": "read-timeout", "qname": "ncs:read-timeout", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "units": "seconds", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t28"}}, {"info": {"string": "Timeout in seconds used when writing data"}, "kind": "leaf", "name": "write-timeout", "qname": "ncs:write-timeout", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "units": "seconds", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t29"}}, {"info": {"string": "Controls SSH keep alive settings"}, "kind": "container", "mandatory": true, "name": "ssh-keep-alive", "qname": "ncs:ssh-keep-alive", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Trace the southbound communication to devices"}, "kind": "leaf", "name": "trace", "qname": "ncs:trace", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "trace-flag"}}, {"info": {"string": "Control which device capabilities NCS uses"}, "kind": "container", "mandatory": true, "name": "ned-settings", "qname": "ncs:ned-settings", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Control settings for the commit-queue"}, "kind": "container", "mandatory": true, "name": "commit-queue", "qname": "ncs:commit-queue", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Control how sessions to related devices can be pooled."}, "kind": "container", "mandatory": true, "name": "session-pool", "qname": "ncs:session-pool", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Control settings for no-overwrite sync check"}, "kind": "container", "mandatory": true, "name": "no-overwrite", "qname": "ncs:no-overwrite", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Specifies the behaviour of a commit operation involving a\ndevice that is out of sync with NCS. Value accept assumes that\nthe device's sync state is unknown and it is cleared on commit.\nThe default behaviour is to reject such commits."}, "kind": "leaf", "name": "out-of-sync-commit-behaviour", "qname": "ncs:out-of-sync-commit-behaviour", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t40"}}, {"default": "use-lsa", "kind": "choice", "cases": [{"kind": "case", "name": "use-lsa", "children": [{"info": {"string": "Handle the LSA nodes as such. This is the default"}, "kind": "leaf", "name": "use-lsa", "qname": "ncs:use-lsa", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"primitive": true, "name": "empty"}}]}, {"kind": "case", "name": "no-lsa", "children": [{"info": {"string": "Do not handle any of the LSA nodes as such. These nodes\nwill be handled as any other device. This has the same\nresult as adding the commit flag 'no-lsa' to every commit."}, "kind": "leaf", "name": "no-lsa", "qname": "ncs:no-lsa", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"primitive": true, "name": "empty"}}]}], "name": "choice-lsa"}, {"info": {"string": "Show all active settings for the device"}, "kind": "container", "mandatory": true, "name": "active-settings", "qname": "ncs:active-settings", "is_config_false_callpoint": true, "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "Additional protocols for the live-tree (read-only)"}, "kind": "list", "leafref_groups": [["authgroup"]], "min_elements": 0, "name": "live-status-protocol", "max_elements": "unbounded", "qname": "ncs:live-status-protocol", "children": [{"kind": "key", "mandatory": true, "name": "name", "qname": "ncs:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"info": {"string": "IP Address for the management interface"}, "kind": "leaf", "name": "address", "qname": "ncs:address", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", "name": "host"}}, {"info": {"string": "Port for the management interface"}, "kind": "leaf", "name": "port", "qname": "ncs:port", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", "name": "port-number"}}, {"info": {"string": "SSH host key configuration"}, "kind": "container", "name": "ssh", "presence": true, "qname": "ncs:ssh", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}}, {"info": {"string": "Authentication credentials for the device"}, "kind": "leaf", "name": "authgroup", "type": {"primitive": true, "name": "string"}, "qname": "ncs:authgroup", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/ncs:devices/authgroups/group/name", "is_leafref": true}, {"info": {"string": "Management protocol for the device"}, "kind": "container", "mandatory": true, "name": "device-type", "qname": "ncs:device-type", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Operational State for the live protocol"}, "kind": "container", "mandatory": true, "name": "state", "qname": "ncs:state", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "List of capabillities supported by the device"}, "kind": "list", "min_elements": 0, "name": "capability", "max_elements": "unbounded", "qname": "ncs:capability", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "key": ["uri"], "mandatory": true, "config": false, "children": [{"info": {"string": "Capability URI"}, "kind": "key", "mandatory": true, "name": "uri", "type": {"primitive": true, "name": "string"}, "qname": "ncs:uri", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "Capability revision"}, "kind": "leaf", "name": "revision", "type": {"primitive": true, "name": "string"}, "qname": "ncs:revision", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "Capability module"}, "kind": "leaf", "name": "module", "type": {"primitive": true, "name": "string"}, "qname": "ncs:module", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "Capability features"}, "kind": "leaf-list", "name": "feature", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t83"}, "qname": "ncs:feature", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "Capability deviations"}, "kind": "leaf-list", "name": "deviation", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t85"}, "qname": "ncs:deviation", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}]}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["name"], "mandatory": true, "leafrefGroups": [["authgroup"]]}, {"info": {"string": "Show states for the device"}, "kind": "container", "mandatory": true, "name": "state", "qname": "ncs:state", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "How the device was added to NCS"}, "kind": "container", "mandatory": true, "name": "source", "qname": "ncs:source", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "A list of capabilities supported by the device"}, "kind": "list", "min_elements": 0, "name": "capability", "max_elements": "unbounded", "qname": "ncs:capability", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "key": ["uri"], "mandatory": true, "config": false, "children": [{"kind": "key", "mandatory": true, "name": "uri", "type": {"primitive": true, "name": "string"}, "qname": "ncs:uri", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"kind": "leaf", "name": "revision", "config": false, "qname": "ncs:revision", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf", "name": "module", "config": false, "qname": "ncs:module", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf-list", "name": "feature", "config": false, "qname": "ncs:feature", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t43"}}, {"kind": "leaf-list", "name": "deviation", "config": false, "qname": "ncs:deviation", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t45"}}, {"info": {"string": "This action removes a capability from the list of capabilities.\nIf leaf module is set then corresponding module is attempted to\nbe removed from the list of modules for this device. This action\nis only intended to be used for pre-provisioning: it is not\npossible to override capabilities and modules provided by the\nNED implementation using this action."}, "kind": "action", "mandatory": true, "name": "remove", "qname": "ncs:remove", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}]}, {"info": {"string": "This is a list of the YANG modules supported by the device.\n\nThis list is populated the first time NCS connects to the\ndevice."}, "kind": "list", "min_elements": 0, "name": "module", "max_elements": "unbounded", "qname": "ncs:module", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "key": ["name"], "mandatory": true, "config": false, "children": [{"kind": "key", "mandatory": true, "name": "name", "type": {"primitive": true, "name": "string"}, "qname": "ncs:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"kind": "leaf", "name": "revision", "config": false, "qname": "ncs:revision", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf-list", "name": "feature", "config": false, "qname": "ncs:feature", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t47"}}, {"kind": "leaf-list", "name": "deviation", "config": false, "qname": "ncs:deviation", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t49"}}]}, {"info": {"string": "Contains vendor-specific information for\nidentifying the system platform.\n\nNEDs MAY augment this container with more device-specific\nnodes."}, "kind": "container", "mandatory": true, "name": "platform", "qname": "ncs:platform", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "NCS copy of the device configuration"}, "kind": "container", "mandatory": true, "name": "config", "qname": "ncs:config", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Status data fetched from the device"}, "kind": "container", "mandatory": true, "name": "live-status", "qname": "ncs:live-status", "is_config_false_callpoint": true, "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "RPCs from the device"}, "kind": "container", "mandatory": true, "name": "rpc", "qname": "ncs:rpc", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "NETCONF notifications from the device"}, "kind": "container", "mandatory": true, "name": "netconf-notifications", "qname": "ncs:netconf-notifications", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Show services that use this device"}, "kind": "leaf-list", "name": "service-list", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t101"}, "qname": "ncs:service-list", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "Notification address if different from device address"}, "kind": "leaf", "name": "snmp-notification-address", "qname": "ncs:snmp-notification-address", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", "name": "host"}}, {"info": {"string": "Device specific information"}, "kind": "container", "name": "platform", "presence": true, "when_targets": ["/ncs:devices/device/device-type/cli/ned-id"], "qname": "alu-meta:platform", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}}, {"info": {"string": "A summary of all active alarms per device."}, "kind": "container", "mandatory": true, "name": "alarm-summary", "qname": "al:alarm-summary", "is_config_false_callpoint": true, "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "Note: this action overwrites existing list of capabilities.\n\nThis action copies the list of capabilities and the list of modules\nfrom another device or profile. When used on a device, this action\nis only intended to be used for pre-provisioning: it is not possible\nto override capabilities and modules provided by the\nNED implementation using this action."}, "kind": "action", "mandatory": true, "name": "copy-capabilities", "qname": "ncs:copy-capabilities", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Note: this action overwrites existing list of capabilities.\n\nThis action populates the list of capabilities based on the\nconfigured ned-id for this device, if possible. NCS will look up\nthe package corresponding to the ned-id and add all the modules\nfrom this packages to the list of this device's capabilities and\nlist of modules. It is the responsibility of the caller to verify\nthat the automatically populated list of capabilities matches actual\ndevice's capabilities. The list of capabilities can then be\nfine-tuned using add-capability and capability/remove actions.\nCurrently this approach will only work for CLI and generic devices.\nThis action is only intended to be used for pre-provisioning:\nit is not possible to override capabilities and modules provided\nby the NED implementation using this action."}, "kind": "action", "mandatory": true, "name": "find-capabilities", "qname": "ncs:find-capabilities", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "This action adds a capability to the list of capabilities.\nIf uri is specified, then it is parsed as YANG capability string\nand module, revision, feature and deviation parameters are derived\nfrom the string. If module is specified, then the namespace is\nlooked up in the list of loaded namespaces and capability string\nconstructed automatically. If the module is specified and the\nattempt to look it up failed, then the action does nothing.\nIf module is specified or can be derived from capability string,\nthen the module is also added/replaced in the list of modules. This\naction is only intended to be used for pre-provisioning: it is not\npossible to override capabilities and modules provided by the NED\nimplementation using this action."}, "kind": "action", "mandatory": true, "name": "add-capability", "qname": "ncs:add-capability", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Take a named template and copy it here"}, "kind": "action", "mandatory": true, "name": "apply-template", "leafrefGroups": [["template-name"]], "qname": "ncs:apply-template", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "leafref_groups": [["template-name"]]}, {"info": {"string": "Instantiate the config for the device from existing device"}, "kind": "action", "mandatory": true, "name": "instantiate-from-other-device", "leafrefGroups": [["device-name"]], "qname": "ncs:instantiate-from-other-device", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "leafref_groups": [["device-name"]]}, {"info": {"string": "Compare the actual device config with the NCS copy"}, "kind": "action", "mandatory": true, "name": "compare-config", "qname": "ncs:compare-config", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Synchronize the config by pulling from the device"}, "kind": "action", "mandatory": true, "name": "sync-from", "qname": "ncs:sync-from", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Synchronize the config by pushing to the device"}, "kind": "action", "mandatory": true, "name": "sync-to", "qname": "ncs:sync-to", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Check if the NCS config is in sync with the device"}, "kind": "action", "mandatory": true, "name": "check-sync", "qname": "ncs:check-sync", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Check if NCS and the device have compatible YANG modules"}, "kind": "action", "mandatory": true, "name": "check-yang-modules", "qname": "ncs:check-yang-modules", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Connect to the device"}, "kind": "action", "mandatory": true, "name": "connect", "qname": "ncs:connect", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Close all sessions to the device"}, "kind": "action", "mandatory": true, "name": "disconnect", "qname": "ncs:disconnect", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "ICMP ping the device"}, "kind": "action", "mandatory": true, "name": "ping", "qname": "ncs:ping", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Delete the config in NCS without deleting it in the device"}, "kind": "action", "mandatory": true, "name": "delete-config", "qname": "ncs:delete-config", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Secure copy file to the device"}, "kind": "action", "mandatory": true, "name": "scp-to", "qname": "ncs:scp-to", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Secure copy file to the device"}, "kind": "action", "mandatory": true, "name": "scp-from", "qname": "ncs:scp-from", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["name"], "min_elements": 0, "leafrefGroups": [["remote-node"], ["authgroup"], ["device-profile"]]}} diff --git a/test/units/modules/network/nso/fixtures/devices_schema.json b/test/units/modules/network/nso/fixtures/devices_schema.json deleted file mode 100644 index 541ba01067..0000000000 --- a/test/units/modules/network/nso/fixtures/devices_schema.json +++ /dev/null @@ -1 +0,0 @@ -{"meta": {"prefix": "ncs", "namespace": "http://tail-f.com/ns/ncs", "types": {"http://tail-f.com/ns/ncs:t68": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t68"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t85": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t85"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t83": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t83"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t60": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t60"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t101": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t101"}], "leaf_type": [{"name": "string"}]}], "urn:ietf:params:xml:ns:yang:ietf-inet-types:host": [{"union": [[{"name": "urn:ietf:params:xml:ns:yang:ietf-inet-types:ip-address"}, {"name": "ip-address"}], [{"max-length": {"value": 253}, "min-length": {"value": 1}, "name": "urn:ietf:params:xml:ns:yang:ietf-inet-types:domain-name", "pattern": {"value": "((([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.)*([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.?)|\\."}}, {"name": "string"}]]}], "http://tail-f.com/ns/ncs:trace-flag": [{"name": "http://tail-f.com/ns/ncs:trace-flag", "enumeration": [{"info": "Trace is disabled", "label": "false"}, {"info": "Raw, unformatted data", "label": "raw"}, {"info": "Pretty-printed data", "label": "pretty"}]}, {"name": "string"}], "http://tail-f.com/ns/ncs:t43": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t43"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t27": [{"range": {"value": [["1", "4294967"]]}, "name": "http://tail-f.com/ns/ncs:t27"}, {"name": "uint32"}], "http://tail-f.com/ns/ncs:t40": [{"name": "http://tail-f.com/ns/ncs:t40", "enumeration": [{"label": "reject"}, {"label": "accept"}]}, {"name": "string"}], "http://tail-f.com/ns/ncs:t47": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t47"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t45": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t45"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t49": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t49"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t29": [{"range": {"value": [["1", "4294967"]]}, "name": "http://tail-f.com/ns/ncs:t29"}, {"name": "uint32"}], "http://tail-f.com/ns/ncs:t28": [{"range": {"value": [["1", "4294967"]]}, "name": "http://tail-f.com/ns/ncs:t28"}, {"name": "uint32"}], "http://tail-f.com/ns/ncs:node-name": [{"name": "http://tail-f.com/ns/ncs:node-name"}, {"max-length": {"value": 253}, "min-length": {"value": 1}, "name": "urn:ietf:params:xml:ns:yang:ietf-inet-types:domain-name", "pattern": {"value": "((([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.)*([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.?)|\\."}}, {"name": "string"}], "http://tail-f.com/ns/ncs:t74": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t74"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t72": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t72"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t70": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t70"}], "leaf_type": [{"name": "string"}]}], "urn:ietf:params:xml:ns:yang:ietf-inet-types:port-number": [{"range": {"value": [["0", "65535"]]}, "name": "urn:ietf:params:xml:ns:yang:ietf-inet-types:port-number"}, {"name": "uint16"}], "http://tail-f.com/ns/ncs:t56": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t56"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t58": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t58"}], "leaf_type": [{"name": "string"}]}]}, "keypath": "/ncs:devices"}, "data": {"info": {"string": "The managed devices and device communication settings"}, "kind": "container", "mandatory": true, "name": "devices", "contains_when_statement": true, "qname": "ncs:devices", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "children": [{"info": {"string": "Global settings for all managed devices."}, "kind": "container", "mandatory": true, "name": "global-settings", "qname": "ncs:global-settings", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Device profile parameters"}, "kind": "container", "mandatory": true, "name": "profiles", "qname": "ncs:profiles", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Authentication for managed devices"}, "kind": "container", "mandatory": true, "name": "authgroups", "qname": "ncs:authgroups", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Named configuration templates for devices"}, "kind": "list", "min_elements": 0, "name": "template", "max_elements": "unbounded", "qname": "ncs:template", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["name"], "mandatory": true, "children": [{"info": {"string": "The name of a specific template configuration."}, "kind": "key", "mandatory": true, "name": "name", "qname": "ncs:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"info": {"string": "This container is augmented with data models from the devices."}, "kind": "container", "mandatory": true, "name": "config", "qname": "ncs:config", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}]}, {"info": {"string": "Groups of devices"}, "kind": "list", "leafref_groups": [["device-name"], ["device-group"], ["member"]], "min_elements": 0, "name": "device-group", "max_elements": "unbounded", "qname": "ncs:device-group", "children": [{"kind": "key", "mandatory": true, "name": "name", "qname": "ncs:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"info": {"string": "Physical location of devices in the group"}, "kind": "container", "mandatory": true, "name": "location", "qname": "ncs:location", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Device within group"}, "kind": "leaf-list", "name": "device-name", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t56"}, "qname": "ncs:device-name", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/ncs:devices/device/name", "is_leafref": true}, {"info": {"string": "Group within group"}, "kind": "leaf-list", "name": "device-group", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t58"}, "qname": "ncs:device-group", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/ncs:devices/device-group/name", "is_leafref": true}, {"info": {"string": "Flattened list of all members"}, "kind": "leaf-list", "name": "member", "is_leafref": true, "qname": "ncs:member", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "leafref_target": "/ncs:devices/device/name", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t60"}, "config": false}, {"info": {"string": "RPCs from the device's"}, "kind": "container", "mandatory": true, "name": "rpc", "qname": "ncs:rpc", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "A summary of all active alarms per device group."}, "kind": "container", "mandatory": true, "name": "alarm-summary", "qname": "al:alarm-summary", "is_config_false_callpoint": true, "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "Set up sessions to all unlocked devices"}, "kind": "action", "mandatory": true, "name": "connect", "qname": "ncs:connect", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Synchronize the config by pushing to the devices"}, "kind": "action", "mandatory": true, "name": "sync-to", "qname": "ncs:sync-to", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Synchronize the config by pulling from the devices"}, "kind": "action", "mandatory": true, "name": "sync-from", "qname": "ncs:sync-from", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Check if the NCS config is in sync with the device"}, "kind": "action", "mandatory": true, "name": "check-sync", "qname": "ncs:check-sync", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Check if NCS and the devices have compatible YANG modules"}, "kind": "action", "mandatory": true, "name": "check-yang-modules", "qname": "ncs:check-yang-modules", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Retrieve SSH host keys from all devices"}, "kind": "action", "mandatory": true, "name": "fetch-ssh-host-keys", "qname": "ncs:fetch-ssh-host-keys", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Take a named template and copy it here"}, "kind": "action", "mandatory": true, "name": "apply-template", "leafrefGroups": [["template-name"]], "qname": "ncs:apply-template", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "leafref_groups": [["template-name"]]}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["name"], "mandatory": true, "leafrefGroups": [["device-name"], ["device-group"], ["member"]]}, {"info": {"string": "A list of named groups of MIBs"}, "kind": "list", "leafref_groups": [["mib-group"]], "min_elements": 0, "name": "mib-group", "max_elements": "unbounded", "qname": "ncs:mib-group", "children": [{"info": {"string": "An arbitrary name of the MIB group."}, "kind": "key", "mandatory": true, "name": "name", "qname": "ncs:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"info": {"string": "MIB module names or name prefixes"}, "kind": "leaf-list", "name": "mib-module", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t68"}, "qname": "ncs:mib-module", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/ncs:devices/device-module/mib-module", "is_leafref": true}, {"info": {"string": "A list of MIB groups contained in this MIB group"}, "kind": "leaf-list", "name": "mib-group", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t70"}, "qname": "ncs:mib-group", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/ncs:devices/mib-group/name", "is_leafref": true}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["name"], "mandatory": true, "leafrefGroups": [["mib-group"]]}, {"info": {"string": "List the devices and supported modules"}, "kind": "list", "min_elements": 0, "name": "device-module", "max_elements": "unbounded", "qname": "ncs:device-module", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "key": ["name"], "mandatory": true, "config": false, "children": [{"info": {"string": "The module name"}, "kind": "key", "mandatory": true, "name": "name", "type": {"primitive": true, "name": "string"}, "qname": "ncs:name", "is_config_false_callpoint": true, "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "The module revision"}, "kind": "leaf-list", "name": "revision", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t72"}, "qname": "ncs:revision", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "The XML namespace uri for the module"}, "kind": "leaf", "name": "uri", "type": {"primitive": true, "name": "string"}, "qname": "ncs:uri", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "The names of the devices that support this module"}, "kind": "leaf-list", "name": "devices", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t74"}, "qname": "ncs:devices", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}]}, {"info": {"string": "The list of managed devices"}, "kind": "list", "leafref_groups": [["remote-node"], ["authgroup"], ["device-profile"]], "min_elements": 0, "name": "device", "max_elements": "unbounded", "qname": "ncs:device", "children": [{"info": {"string": "A string uniquely identifying the managed device"}, "kind": "key", "mandatory": true, "name": "name", "qname": "ncs:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"info": {"string": "IP address or host name for the management interface"}, "kind": "leaf", "name": "address", "qname": "ncs:address", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", "name": "host"}}, {"info": {"string": "Port for the management interface"}, "kind": "leaf", "name": "port", "qname": "ncs:port", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", "name": "port-number"}}, {"info": {"string": "Name of remote node which connects to device"}, "kind": "leaf", "name": "remote-node", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "node-name"}, "qname": "ncs:remote-node", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/ncs:cluster/remote-node/name", "is_leafref": true}, {"info": {"string": "SSH connection configuration"}, "kind": "container", "mandatory": true, "name": "ssh", "qname": "ncs:ssh", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Free form textual description"}, "kind": "leaf", "name": "description", "qname": "ncs:description", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"primitive": true, "name": "string"}}, {"info": {"string": "Physical location of devices in the group"}, "kind": "container", "mandatory": true, "name": "location", "qname": "ncs:location", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Authentication credentials for the device"}, "kind": "leaf", "name": "authgroup", "type": {"primitive": true, "name": "string"}, "qname": "ncs:authgroup", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/ncs:devices/authgroups/group/name", "is_leafref": true}, {"info": {"string": "Management protocol for the device"}, "kind": "container", "mandatory": true, "name": "device-type", "qname": "ncs:device-type", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"kind": "leaf", "name": "device-profile", "type": {"primitive": true, "name": "string"}, "qname": "ncs:device-profile", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/ncs:devices/profiles/profile/name", "is_leafref": true}, {"info": {"string": "Timeout in seconds for new connections"}, "kind": "leaf", "name": "connect-timeout", "qname": "ncs:connect-timeout", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "units": "seconds", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t27"}}, {"info": {"string": "Timeout in seconds used when reading data"}, "kind": "leaf", "name": "read-timeout", "qname": "ncs:read-timeout", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "units": "seconds", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t28"}}, {"info": {"string": "Timeout in seconds used when writing data"}, "kind": "leaf", "name": "write-timeout", "qname": "ncs:write-timeout", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "units": "seconds", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t29"}}, {"info": {"string": "Controls SSH keep alive settings"}, "kind": "container", "mandatory": true, "name": "ssh-keep-alive", "qname": "ncs:ssh-keep-alive", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Trace the southbound communication to devices"}, "kind": "leaf", "name": "trace", "qname": "ncs:trace", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "trace-flag"}}, {"info": {"string": "Control which device capabilities NCS uses"}, "kind": "container", "mandatory": true, "name": "ned-settings", "qname": "ncs:ned-settings", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Control settings for the commit-queue"}, "kind": "container", "mandatory": true, "name": "commit-queue", "qname": "ncs:commit-queue", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Control how sessions to related devices can be pooled."}, "kind": "container", "mandatory": true, "name": "session-pool", "qname": "ncs:session-pool", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Control settings for no-overwrite sync check"}, "kind": "container", "mandatory": true, "name": "no-overwrite", "qname": "ncs:no-overwrite", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Specifies the behaviour of a commit operation involving a\ndevice that is out of sync with NCS. Value accept assumes that\nthe device's sync state is unknown and it is cleared on commit.\nThe default behaviour is to reject such commits."}, "kind": "leaf", "name": "out-of-sync-commit-behaviour", "qname": "ncs:out-of-sync-commit-behaviour", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t40"}}, {"default": "use-lsa", "kind": "choice", "cases": [{"kind": "case", "name": "use-lsa", "children": [{"info": {"string": "Handle the LSA nodes as such. This is the default"}, "kind": "leaf", "name": "use-lsa", "qname": "ncs:use-lsa", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"primitive": true, "name": "empty"}}]}, {"kind": "case", "name": "no-lsa", "children": [{"info": {"string": "Do not handle any of the LSA nodes as such. These nodes\nwill be handled as any other device. This has the same\nresult as adding the commit flag 'no-lsa' to every commit."}, "kind": "leaf", "name": "no-lsa", "qname": "ncs:no-lsa", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"primitive": true, "name": "empty"}}]}], "name": "choice-lsa"}, {"info": {"string": "Show all active settings for the device"}, "kind": "container", "mandatory": true, "name": "active-settings", "qname": "ncs:active-settings", "is_config_false_callpoint": true, "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "Additional protocols for the live-tree (read-only)"}, "kind": "list", "leafref_groups": [["authgroup"]], "min_elements": 0, "name": "live-status-protocol", "max_elements": "unbounded", "qname": "ncs:live-status-protocol", "children": [{"kind": "key", "mandatory": true, "name": "name", "qname": "ncs:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"info": {"string": "IP Address for the management interface"}, "kind": "leaf", "name": "address", "qname": "ncs:address", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", "name": "host"}}, {"info": {"string": "Port for the management interface"}, "kind": "leaf", "name": "port", "qname": "ncs:port", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", "name": "port-number"}}, {"info": {"string": "SSH host key configuration"}, "kind": "container", "name": "ssh", "presence": true, "qname": "ncs:ssh", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}}, {"info": {"string": "Authentication credentials for the device"}, "kind": "leaf", "name": "authgroup", "type": {"primitive": true, "name": "string"}, "qname": "ncs:authgroup", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/ncs:devices/authgroups/group/name", "is_leafref": true}, {"info": {"string": "Management protocol for the device"}, "kind": "container", "mandatory": true, "name": "device-type", "qname": "ncs:device-type", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Operational State for the live protocol"}, "kind": "container", "mandatory": true, "name": "state", "qname": "ncs:state", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "List of capabillities supported by the device"}, "kind": "list", "min_elements": 0, "name": "capability", "max_elements": "unbounded", "qname": "ncs:capability", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "key": ["uri"], "mandatory": true, "config": false, "children": [{"info": {"string": "Capability URI"}, "kind": "key", "mandatory": true, "name": "uri", "type": {"primitive": true, "name": "string"}, "qname": "ncs:uri", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "Capability revision"}, "kind": "leaf", "name": "revision", "type": {"primitive": true, "name": "string"}, "qname": "ncs:revision", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "Capability module"}, "kind": "leaf", "name": "module", "type": {"primitive": true, "name": "string"}, "qname": "ncs:module", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "Capability features"}, "kind": "leaf-list", "name": "feature", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t83"}, "qname": "ncs:feature", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "Capability deviations"}, "kind": "leaf-list", "name": "deviation", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t85"}, "qname": "ncs:deviation", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}]}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["name"], "mandatory": true, "leafrefGroups": [["authgroup"]]}, {"info": {"string": "Show states for the device"}, "kind": "container", "mandatory": true, "name": "state", "qname": "ncs:state", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "How the device was added to NCS"}, "kind": "container", "mandatory": true, "name": "source", "qname": "ncs:source", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "A list of capabilities supported by the device"}, "kind": "list", "min_elements": 0, "name": "capability", "max_elements": "unbounded", "qname": "ncs:capability", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "key": ["uri"], "mandatory": true, "config": false, "children": [{"kind": "key", "mandatory": true, "name": "uri", "type": {"primitive": true, "name": "string"}, "qname": "ncs:uri", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"kind": "leaf", "name": "revision", "config": false, "qname": "ncs:revision", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf", "name": "module", "config": false, "qname": "ncs:module", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf-list", "name": "feature", "config": false, "qname": "ncs:feature", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t43"}}, {"kind": "leaf-list", "name": "deviation", "config": false, "qname": "ncs:deviation", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t45"}}, {"info": {"string": "This action removes a capability from the list of capabilities.\nIf leaf module is set then corresponding module is attempted to\nbe removed from the list of modules for this device. This action\nis only intended to be used for pre-provisioning: it is not\npossible to override capabilities and modules provided by the\nNED implementation using this action."}, "kind": "action", "mandatory": true, "name": "remove", "qname": "ncs:remove", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}]}, {"info": {"string": "This is a list of the YANG modules supported by the device.\n\nThis list is populated the first time NCS connects to the\ndevice."}, "kind": "list", "min_elements": 0, "name": "module", "max_elements": "unbounded", "qname": "ncs:module", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "key": ["name"], "mandatory": true, "config": false, "children": [{"kind": "key", "mandatory": true, "name": "name", "type": {"primitive": true, "name": "string"}, "qname": "ncs:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"kind": "leaf", "name": "revision", "config": false, "qname": "ncs:revision", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf-list", "name": "feature", "config": false, "qname": "ncs:feature", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t47"}}, {"kind": "leaf-list", "name": "deviation", "config": false, "qname": "ncs:deviation", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t49"}}]}, {"info": {"string": "Contains vendor-specific information for\nidentifying the system platform.\n\nNEDs MAY augment this container with more device-specific\nnodes."}, "kind": "container", "mandatory": true, "name": "platform", "qname": "ncs:platform", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "NCS copy of the device configuration"}, "kind": "container", "mandatory": true, "name": "config", "qname": "ncs:config", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Status data fetched from the device"}, "kind": "container", "mandatory": true, "name": "live-status", "qname": "ncs:live-status", "is_config_false_callpoint": true, "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "RPCs from the device"}, "kind": "container", "mandatory": true, "name": "rpc", "qname": "ncs:rpc", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "NETCONF notifications from the device"}, "kind": "container", "mandatory": true, "name": "netconf-notifications", "qname": "ncs:netconf-notifications", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Show services that use this device"}, "kind": "leaf-list", "name": "service-list", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t101"}, "qname": "ncs:service-list", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "Notification address if different from device address"}, "kind": "leaf", "name": "snmp-notification-address", "qname": "ncs:snmp-notification-address", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", "name": "host"}}, {"info": {"string": "Device specific information"}, "kind": "container", "name": "platform", "presence": true, "when_targets": ["/ncs:devices/device/device-type/cli/ned-id"], "qname": "alu-meta:platform", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}}, {"info": {"string": "A summary of all active alarms per device."}, "kind": "container", "mandatory": true, "name": "alarm-summary", "qname": "al:alarm-summary", "is_config_false_callpoint": true, "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "Note: this action overwrites existing list of capabilities.\n\nThis action copies the list of capabilities and the list of modules\nfrom another device or profile. When used on a device, this action\nis only intended to be used for pre-provisioning: it is not possible\nto override capabilities and modules provided by the\nNED implementation using this action."}, "kind": "action", "mandatory": true, "name": "copy-capabilities", "qname": "ncs:copy-capabilities", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Note: this action overwrites existing list of capabilities.\n\nThis action populates the list of capabilities based on the\nconfigured ned-id for this device, if possible. NCS will look up\nthe package corresponding to the ned-id and add all the modules\nfrom this packages to the list of this device's capabilities and\nlist of modules. It is the responsibility of the caller to verify\nthat the automatically populated list of capabilities matches actual\ndevice's capabilities. The list of capabilities can then be\nfine-tuned using add-capability and capability/remove actions.\nCurrently this approach will only work for CLI and generic devices.\nThis action is only intended to be used for pre-provisioning:\nit is not possible to override capabilities and modules provided\nby the NED implementation using this action."}, "kind": "action", "mandatory": true, "name": "find-capabilities", "qname": "ncs:find-capabilities", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "This action adds a capability to the list of capabilities.\nIf uri is specified, then it is parsed as YANG capability string\nand module, revision, feature and deviation parameters are derived\nfrom the string. If module is specified, then the namespace is\nlooked up in the list of loaded namespaces and capability string\nconstructed automatically. If the module is specified and the\nattempt to look it up failed, then the action does nothing.\nIf module is specified or can be derived from capability string,\nthen the module is also added/replaced in the list of modules. This\naction is only intended to be used for pre-provisioning: it is not\npossible to override capabilities and modules provided by the NED\nimplementation using this action."}, "kind": "action", "mandatory": true, "name": "add-capability", "qname": "ncs:add-capability", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Take a named template and copy it here"}, "kind": "action", "mandatory": true, "name": "apply-template", "leafrefGroups": [["template-name"]], "qname": "ncs:apply-template", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "leafref_groups": [["template-name"]]}, {"info": {"string": "Instantiate the config for the device from existing device"}, "kind": "action", "mandatory": true, "name": "instantiate-from-other-device", "leafrefGroups": [["device-name"]], "qname": "ncs:instantiate-from-other-device", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "leafref_groups": [["device-name"]]}, {"info": {"string": "Compare the actual device config with the NCS copy"}, "kind": "action", "mandatory": true, "name": "compare-config", "qname": "ncs:compare-config", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Synchronize the config by pulling from the device"}, "kind": "action", "mandatory": true, "name": "sync-from", "qname": "ncs:sync-from", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Synchronize the config by pushing to the device"}, "kind": "action", "mandatory": true, "name": "sync-to", "qname": "ncs:sync-to", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Check if the NCS config is in sync with the device"}, "kind": "action", "mandatory": true, "name": "check-sync", "qname": "ncs:check-sync", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Check if NCS and the device have compatible YANG modules"}, "kind": "action", "mandatory": true, "name": "check-yang-modules", "qname": "ncs:check-yang-modules", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Connect to the device"}, "kind": "action", "mandatory": true, "name": "connect", "qname": "ncs:connect", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Close all sessions to the device"}, "kind": "action", "mandatory": true, "name": "disconnect", "qname": "ncs:disconnect", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "ICMP ping the device"}, "kind": "action", "mandatory": true, "name": "ping", "qname": "ncs:ping", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Delete the config in NCS without deleting it in the device"}, "kind": "action", "mandatory": true, "name": "delete-config", "qname": "ncs:delete-config", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Secure copy file to the device"}, "kind": "action", "mandatory": true, "name": "scp-to", "qname": "ncs:scp-to", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Secure copy file to the device"}, "kind": "action", "mandatory": true, "name": "scp-from", "qname": "ncs:scp-from", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["name"], "mandatory": true, "leafrefGroups": [["remote-node"], ["authgroup"], ["device-profile"]]}, {"info": {"string": "List of queued and completed commits"}, "kind": "container", "mandatory": true, "name": "commit-queue", "qname": "ncs:commit-queue", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "List of pooled NED sessions"}, "kind": "container", "mandatory": true, "name": "session-pool", "qname": "ncs:session-pool", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "Set up sessions to all unlocked devices"}, "kind": "action", "mandatory": true, "name": "connect", "leafrefGroups": [["device"]], "qname": "ncs:connect", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "leafref_groups": [["device"]]}, {"info": {"string": "Synchronize the config by pushing to the devices"}, "kind": "action", "mandatory": true, "name": "sync-to", "leafrefGroups": [["device"]], "qname": "ncs:sync-to", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "leafref_groups": [["device"]]}, {"info": {"string": "Synchronize the config by pulling from the devices"}, "kind": "action", "mandatory": true, "name": "sync-from", "leafrefGroups": [["device"]], "qname": "ncs:sync-from", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "leafref_groups": [["device"]]}, {"info": {"string": "Close all sessions to all devices"}, "kind": "action", "mandatory": true, "name": "disconnect", "qname": "ncs:disconnect", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Check if the NCS config is in sync with the device"}, "kind": "action", "mandatory": true, "name": "check-sync", "leafrefGroups": [["device"]], "qname": "ncs:check-sync", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "leafref_groups": [["device"]]}, {"info": {"string": "Check if NCS and the devices have compatible YANG modules"}, "kind": "action", "mandatory": true, "name": "check-yang-modules", "leafrefGroups": [["device"]], "qname": "ncs:check-yang-modules", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "leafref_groups": [["device"]]}, {"info": {"string": "Retrieve SSH host keys from all devices"}, "kind": "action", "mandatory": true, "name": "fetch-ssh-host-keys", "leafrefGroups": [["device"]], "qname": "ncs:fetch-ssh-host-keys", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "leafref_groups": [["device"]]}, {"info": {"string": "Clear all trace files"}, "kind": "action", "mandatory": true, "name": "clear-trace", "qname": "ncs:clear-trace", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Synchronize parts of the devices' configuration by pulling from\nthe network."}, "kind": "action", "mandatory": true, "name": "partial-sync-from", "qname": "ncs:partial-sync-from", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}]}} diff --git a/test/units/modules/network/nso/fixtures/l3vpn_l3vpn_endpoint_schema.json b/test/units/modules/network/nso/fixtures/l3vpn_l3vpn_endpoint_schema.json deleted file mode 100644 index 0330aeb9b9..0000000000 --- a/test/units/modules/network/nso/fixtures/l3vpn_l3vpn_endpoint_schema.json +++ /dev/null @@ -1 +0,0 @@ -{"meta": {"prefix": "l3vpn", "namespace": "http://com/example/l3vpn", "types": {}, "keypath": "/l3vpn:vpn/l3vpn/endpoint"}, "data": {"kind": "list", "leafref_groups": [["ce-device"]], "min_elements": 0, "name": "endpoint", "max_elements": "unbounded", "qname": "l3vpn:endpoint", "children": [{"info": {"string": "Endpoint identifier"}, "kind": "key", "mandatory": true, "name": "id", "qname": "l3vpn:id", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf", "mandatory": true, "name": "ce-device", "type": {"primitive": true, "name": "string"}, "qname": "l3vpn:ce-device", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "leafref_target": "/ncs:devices/device/name", "is_leafref": true}, {"kind": "leaf", "mandatory": true, "name": "ce-interface", "qname": "l3vpn:ce-interface", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf", "mandatory": true, "name": "ip-network", "qname": "l3vpn:ip-network", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "ip-prefix"}}, {"info": {"string": "Bandwidth in bps"}, "kind": "leaf", "mandatory": true, "name": "bandwidth", "qname": "l3vpn:bandwidth", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "uint32"}}, {"info": {"string": "CE Router as-number"}, "kind": "leaf", "name": "as-number", "qname": "l3vpn:as-number", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"primitive": true, "name": "uint32"}}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["id"], "mandatory": true, "leafrefGroups": [["ce-device"]]}} diff --git a/test/units/modules/network/nso/fixtures/l3vpn_l3vpn_schema.json b/test/units/modules/network/nso/fixtures/l3vpn_l3vpn_schema.json deleted file mode 100644 index 2737e7a547..0000000000 --- a/test/units/modules/network/nso/fixtures/l3vpn_l3vpn_schema.json +++ /dev/null @@ -1 +0,0 @@ -{"meta": {"prefix": "l3vpn", "namespace": "http://com/example/l3vpn", "types": {"http://com/example/l3vpn:t19": [{"list_type": [{"leaf-list": true, "name": "http://com/example/l3vpn:t19"}], "leaf_type": [{"name": "instance-identifier"}]}], "urn:ietf:params:xml:ns:yang:ietf-inet-types:port-number": [{"range": {"value": [["0", "65535"]]}, "name": "urn:ietf:params:xml:ns:yang:ietf-inet-types:port-number"}, {"name": "uint16"}], "http://tail-f.com/ns/ncs:outformat-deep-check-sync": [{"name": "http://tail-f.com/ns/ncs:outformat-deep-check-sync", "enumeration": [{"info": "The CLI config that would have to be applied\nto the device(s) in order for the service to\nbecome in sync with the network.", "label": "cli"}, {"info": "The XML (NETCONF format) that would have to be\napplied to the device(s) in order for the service to\nbecome in sync with the network.", "label": "xml"}, {"info": "Returns if the service is in sync or not.", "label": "boolean"}]}, {"name": "string"}], "http://com/example/l3vpn:t21": [{"list_type": [{"leaf-list": true, "name": "http://com/example/l3vpn:t21"}], "leaf_type": [{"name": "string"}]}], "http://com/example/l3vpn:t15": [{"list_type": [{"leaf-list": true, "name": "http://com/example/l3vpn:t15"}], "leaf_type": [{"name": "string"}]}], "http://com/example/l3vpn:protocol-type": [{"name": "http://com/example/l3vpn:protocol-type", "enumeration": [{"label": "icmp"}, {"label": "igmp"}, {"label": "ipip"}, {"label": "tcp"}, {"label": "egp"}, {"label": "udp"}, {"label": "rsvp"}, {"label": "gre"}, {"label": "esp"}, {"label": "ah"}, {"label": "icmp6"}, {"label": "ospf"}, {"label": "pim"}, {"label": "sctp"}]}, {"name": "string"}], "http://com/example/l3vpn:t17": [{"list_type": [{"leaf-list": true, "name": "http://com/example/l3vpn:t17"}], "leaf_type": [{"name": "instance-identifier"}]}], "http://com/example/l3vpn:t23": [{"list_type": [{"leaf-list": true, "name": "http://com/example/l3vpn:t23"}], "leaf_type": [{"name": "string"}]}], "http://com/example/l3vpn:t11": [{"list_type": [{"leaf-list": true, "name": "http://com/example/l3vpn:t11"}], "leaf_type": [{"name": "instance-identifier"}]}], "http://com/example/l3vpn:t13": [{"list_type": [{"leaf-list": true, "name": "http://com/example/l3vpn:t13"}], "leaf_type": [{"name": "instance-identifier"}]}], "http://com/example/l3vpn:t24": [{"name": "http://com/example/l3vpn:t24", "enumeration": [{"label": "waiting"}, {"label": "executing"}, {"label": "blocking"}, {"label": "blocked"}, {"label": "failed"}, {"label": "admin-cleared"}, {"label": "commit-queue-failed"}]}, {"name": "string"}], "http://tail-f.com/ns/ncs:log-entry-t": [{"info": "This leaf identifies the specific log entry.", "name": "http://tail-f.com/ns/ncs:log-entry-t", "enumeration": [{"label": "device-modified"}, {"label": "service-modified"}]}, {"name": "identityref"}], "http://com/example/l3vpn:t7": [{"name": "http://com/example/l3vpn:t7", "enumeration": [{"label": "async"}, {"label": "timeout"}, {"label": "deleted"}]}, {"name": "string"}], "http://com/example/l3vpn:qos-match-type": [{"union": [[{"name": "ipv4-address-and-prefix-length"}], [{"name": "http://com/example/l3vpn:t2", "enumeration": [{"label": "any"}]}, {"name": "string"}]]}], "http://com/example/l3vpn:t9": [{"list_type": [{"leaf-list": true, "name": "http://com/example/l3vpn:t9"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:outformat4": [{"name": "http://tail-f.com/ns/ncs:outformat4", "enumeration": [{"info": "NCS CLI curly bracket format.", "label": "cli"}, {"info": "NETCONF XML edit-config format, i.e., the edit-config that\nwould be applied locally (at NCS) to get a config\nthat is equal to that of the managed device.", "label": "xml"}, {"info": "The actual data in native format that would be sent to\nthe device", "label": "native"}, {"label": "boolean"}]}, {"name": "string"}], "http://tail-f.com/ns/ncs:log-entry-level-t": [{"info": "Levels used for identifying the severity of an event.\nLevels are organized from least specific to most where\n'all' is least specific and 'error' is most specific.", "name": "http://tail-f.com/ns/ncs:log-entry-level-t", "enumeration": [{"label": "all"}, {"label": "trace"}, {"label": "debug"}, {"label": "info"}, {"label": "warn"}, {"label": "error"}]}, {"name": "string"}], "http://tail-f.com/ns/ncs:outformat2": [{"name": "http://tail-f.com/ns/ncs:outformat2", "enumeration": [{"info": "NCS CLI curly bracket format.", "label": "cli"}, {"info": "NETCONF XML edit-config format, i.e., the edit-config that\nwould be applied locally (at NCS) to get a config\nthat is equal to that of the managed device.", "label": "xml"}]}, {"name": "string"}]}, "keypath": "/l3vpn:vpn/l3vpn"}, "data": {"kind": "list", "leafref_groups": [["used-by-customer-service"]], "min_elements": 0, "name": "l3vpn", "max_elements": "unbounded", "qname": "l3vpn:l3vpn", "children": [{"info": {"string": "Unique service id"}, "kind": "key", "mandatory": true, "name": "name", "qname": "l3vpn:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"info": {"string": "Devices and other services this service modified directly or\nindirectly."}, "kind": "container", "mandatory": true, "name": "modified", "leafrefGroups": [["devices"]], "qname": "l3vpn:modified", "is_config_false_callpoint": true, "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "leafref_groups": [["devices"]], "config": false, "children": [{"info": {"string": "Devices this service modified directly or indirectly"}, "kind": "leaf-list", "name": "devices", "is_leafref": true, "qname": "l3vpn:devices", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "leafref_target": "/ncs:devices/device/name", "type": {"namespace": "http://com/example/l3vpn", "name": "t9"}, "config": false}, {"info": {"string": "Services this service modified directly or indirectly"}, "kind": "leaf-list", "name": "services", "type": {"namespace": "http://com/example/l3vpn", "name": "t11"}, "qname": "l3vpn:services", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "Services residing on remote LSA nodes this service\nhas modified directly or indirectly."}, "kind": "leaf-list", "name": "lsa-services", "type": {"namespace": "http://com/example/l3vpn", "name": "t13"}, "qname": "l3vpn:lsa-services", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}]}, {"info": {"string": "Devices and other services this service has explicitly\nmodified."}, "kind": "container", "mandatory": true, "name": "directly-modified", "leafrefGroups": [["devices"]], "qname": "l3vpn:directly-modified", "is_config_false_callpoint": true, "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "leafref_groups": [["devices"]], "config": false, "children": [{"info": {"string": "Devices this service has explicitly modified."}, "kind": "leaf-list", "name": "devices", "is_leafref": true, "qname": "l3vpn:devices", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "leafref_target": "/ncs:devices/device/name", "type": {"namespace": "http://com/example/l3vpn", "name": "t15"}, "config": false}, {"info": {"string": "Services this service has explicitly modified."}, "kind": "leaf-list", "name": "services", "type": {"namespace": "http://com/example/l3vpn", "name": "t17"}, "qname": "l3vpn:services", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "Services residing on remote LSA nodes this service\nhas explicitly modified."}, "kind": "leaf-list", "name": "lsa-services", "type": {"namespace": "http://com/example/l3vpn", "name": "t19"}, "qname": "l3vpn:lsa-services", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}]}, {"info": {"string": "A list of devices this service instance has manipulated"}, "kind": "leaf-list", "name": "device-list", "type": {"namespace": "http://com/example/l3vpn", "name": "t21"}, "qname": "l3vpn:device-list", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "Customer facing services using this service"}, "kind": "leaf-list", "name": "used-by-customer-service", "is_leafref": true, "qname": "l3vpn:used-by-customer-service", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "leafref_target": "/ncs:services/customer-service/object-id", "type": {"namespace": "http://com/example/l3vpn", "name": "t23"}, "config": false}, {"kind": "container", "mandatory": true, "name": "commit-queue", "qname": "l3vpn:commit-queue", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false, "children": [{"kind": "list", "min_elements": 0, "name": "queue-item", "max_elements": "unbounded", "qname": "l3vpn:queue-item", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "key": ["id"], "mandatory": true, "config": false, "children": [{"kind": "key", "mandatory": true, "name": "id", "type": {"primitive": true, "name": "uint64"}, "qname": "l3vpn:id", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"kind": "leaf", "name": "status", "type": {"namespace": "http://com/example/l3vpn", "name": "t24"}, "qname": "l3vpn:status", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"kind": "list", "leafref_groups": [["name"]], "min_elements": 0, "name": "failed-device", "max_elements": "unbounded", "qname": "l3vpn:failed-device", "children": [{"kind": "key", "mandatory": true, "name": "name", "is_leafref": true, "qname": "l3vpn:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "leafref_target": "/ncs:devices/device/name", "type": {"primitive": true, "name": "string"}, "config": false}, {"kind": "leaf", "name": "time", "config": false, "qname": "l3vpn:time", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"primitive": true, "name": "date-and-time"}}, {"kind": "leaf", "name": "config-data", "is_cli_preformatted": true, "type": {"primitive": true, "name": "string"}, "qname": "l3vpn:config-data", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"kind": "leaf", "name": "error", "config": false, "qname": "l3vpn:error", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"primitive": true, "name": "string"}}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "key": ["name"], "mandatory": true, "config": false, "leafrefGroups": [["name"]]}, {"access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "kind": "action", "mandatory": true, "name": "admin-clear", "qname": "l3vpn:admin-clear"}, {"access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "kind": "action", "mandatory": true, "name": "delete", "qname": "l3vpn:delete"}]}, {"access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "kind": "action", "mandatory": true, "name": "clear", "qname": "l3vpn:clear"}]}, {"kind": "container", "mandatory": true, "name": "log", "qname": "l3vpn:log", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false, "children": [{"kind": "list", "min_elements": 0, "name": "log-entry", "max_elements": "unbounded", "qname": "l3vpn:log-entry", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "key": ["when"], "mandatory": true, "config": false, "children": [{"kind": "key", "mandatory": true, "name": "when", "type": {"primitive": true, "name": "date-and-time"}, "qname": "l3vpn:when", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"kind": "leaf", "mandatory": true, "name": "type", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "log-entry-t"}, "qname": "l3vpn:type", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"kind": "leaf", "mandatory": true, "name": "level", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "log-entry-level-t"}, "qname": "l3vpn:level", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"kind": "leaf", "name": "message", "config": false, "qname": "l3vpn:message", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"primitive": true, "name": "string"}}]}, {"info": {"string": "Remove log entries"}, "kind": "action", "mandatory": true, "name": "purge", "qname": "l3vpn:purge", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}]}, {"kind": "leaf", "mandatory": true, "name": "route-distinguisher", "qname": "l3vpn:route-distinguisher", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "uint32"}}, {"kind": "list", "leafref_groups": [["ce-device"]], "min_elements": 0, "name": "endpoint", "max_elements": "unbounded", "qname": "l3vpn:endpoint", "children": [{"info": {"string": "Endpoint identifier"}, "kind": "key", "mandatory": true, "name": "id", "qname": "l3vpn:id", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf", "mandatory": true, "name": "ce-device", "type": {"primitive": true, "name": "string"}, "qname": "l3vpn:ce-device", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "leafref_target": "/ncs:devices/device/name", "is_leafref": true}, {"kind": "leaf", "mandatory": true, "name": "ce-interface", "qname": "l3vpn:ce-interface", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf", "mandatory": true, "name": "ip-network", "qname": "l3vpn:ip-network", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "ip-prefix"}}, {"info": {"string": "Bandwidth in bps"}, "kind": "leaf", "mandatory": true, "name": "bandwidth", "qname": "l3vpn:bandwidth", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "uint32"}}, {"info": {"string": "CE Router as-number"}, "kind": "leaf", "name": "as-number", "qname": "l3vpn:as-number", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"primitive": true, "name": "uint32"}}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["id"], "mandatory": true, "leafrefGroups": [["ce-device"]]}, {"kind": "container", "mandatory": true, "name": "qos", "leafrefGroups": [["qos-policy"]], "qname": "l3vpn:qos", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "leafref_groups": [["qos-policy"]], "children": [{"kind": "leaf", "name": "qos-policy", "type": {"primitive": true, "name": "string"}, "qname": "l3vpn:qos-policy", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/l3vpn:qos/qos-policy/name", "is_leafref": true}, {"kind": "list", "leafref_groups": [["qos-class"]], "min_elements": 0, "name": "custom-qos-match", "max_elements": "unbounded", "qname": "l3vpn:custom-qos-match", "children": [{"kind": "key", "mandatory": true, "name": "name", "qname": "l3vpn:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf", "mandatory": true, "name": "qos-class", "type": {"primitive": true, "name": "string"}, "qname": "l3vpn:qos-class", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "leafref_target": "/l3vpn:qos/qos-class/name", "is_leafref": true}, {"access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "kind": "leaf", "type": {"namespace": "http://com/example/l3vpn", "name": "qos-match-type"}, "name": "source-ip", "qname": "l3vpn:source-ip"}, {"access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "kind": "leaf", "type": {"namespace": "http://com/example/l3vpn", "name": "qos-match-type"}, "name": "destination-ip", "qname": "l3vpn:destination-ip"}, {"info": {"string": "Destination IP port"}, "kind": "leaf", "name": "port-start", "qname": "l3vpn:port-start", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", "name": "port-number"}}, {"info": {"string": "Destination IP port"}, "kind": "leaf", "name": "port-end", "qname": "l3vpn:port-end", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", "name": "port-number"}}, {"info": {"string": "Source IP protocol"}, "kind": "leaf", "name": "protocol", "qname": "l3vpn:protocol", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "http://com/example/l3vpn", "name": "protocol-type"}}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["name"], "mandatory": true, "leafrefGroups": [["qos-class"]]}]}, {"info": {"string": "Check if device config is according to the service"}, "kind": "action", "mandatory": true, "name": "check-sync", "qname": "l3vpn:check-sync", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "children": [{"kind": "leaf", "is_action_input": true, "name": "outformat", "default": "boolean", "qname": "l3vpn:outformat", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "outformat4"}}, {"default": "deep", "kind": "choice", "cases": [{"kind": "case", "name": "deep", "children": [{"kind": "leaf", "is_action_input": true, "name": "deep", "qname": "l3vpn:deep", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}, {"kind": "case", "name": "shallow", "children": [{"kind": "leaf", "is_action_input": true, "name": "shallow", "qname": "l3vpn:shallow", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}], "name": "depth"}, {"info": {"string": "Return list only contains negatives"}, "kind": "leaf", "is_action_input": true, "name": "suppress-positive-result", "qname": "l3vpn:suppress-positive-result", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}, {"kind": "choice", "cases": [{"kind": "case", "name": "use-lsa", "children": [{"kind": "leaf", "is_action_input": true, "name": "use-lsa", "qname": "l3vpn:use-lsa", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}, {"kind": "case", "name": "no-lsa", "children": [{"kind": "leaf", "is_action_input": true, "name": "no-lsa", "qname": "l3vpn:no-lsa", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}], "name": "choice-lsa"}, {"kind": "choice", "cases": [{"kind": "case", "name": "in-sync", "children": [{"kind": "leaf", "name": "in-sync", "qname": "l3vpn:in-sync", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "type": {"primitive": true, "name": "boolean"}, "is_action_output": true}]}, {"kind": "case", "name": "case-xml", "children": [{"kind": "container", "mandatory": true, "name": "result-xml", "qname": "l3vpn:result-xml", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}, {"kind": "case", "name": "case-cli", "children": [{"kind": "container", "mandatory": true, "name": "cli", "qname": "l3vpn:cli", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}, {"kind": "case", "name": "case-native", "children": [{"kind": "container", "mandatory": true, "name": "native", "qname": "l3vpn:native", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}], "name": "outformat"}]}, {"info": {"string": "Check if device config is according to the service"}, "kind": "action", "mandatory": true, "name": "deep-check-sync", "qname": "l3vpn:deep-check-sync", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "children": [{"kind": "leaf", "is_action_input": true, "name": "outformat", "default": "boolean", "qname": "l3vpn:outformat", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "outformat-deep-check-sync"}}, {"info": {"string": "Return list only contains negatives"}, "kind": "leaf", "is_action_input": true, "name": "suppress-positive-result", "qname": "l3vpn:suppress-positive-result", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}, {"kind": "choice", "cases": [{"kind": "case", "name": "use-lsa", "children": [{"kind": "leaf", "is_action_input": true, "name": "use-lsa", "qname": "l3vpn:use-lsa", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}, {"kind": "case", "name": "no-lsa", "children": [{"kind": "leaf", "is_action_input": true, "name": "no-lsa", "qname": "l3vpn:no-lsa", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}], "name": "choice-lsa"}, {"kind": "choice", "cases": [{"kind": "case", "name": "case-xml", "children": [{"kind": "container", "mandatory": true, "name": "result-xml", "qname": "l3vpn:result-xml", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}, {"kind": "case", "name": "case-cli", "children": [{"kind": "container", "mandatory": true, "name": "cli", "qname": "l3vpn:cli", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}, {"kind": "case", "name": "case-sync", "children": [{"kind": "container", "mandatory": true, "name": "sync-result", "qname": "l3vpn:sync-result", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}], "name": "outformat"}]}, {"info": {"string": "Run/Dryrun the service logic again"}, "kind": "action", "mandatory": true, "name": "re-deploy", "qname": "l3vpn:re-deploy", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "children": [{"kind": "container", "is_action_input": true, "name": "dry-run", "presence": true, "qname": "l3vpn:dry-run", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}}, {"kind": "leaf", "is_action_input": true, "name": "no-revision-drop", "qname": "l3vpn:no-revision-drop", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}, {"kind": "leaf", "is_action_input": true, "name": "no-networking", "qname": "l3vpn:no-networking", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}, {"kind": "choice", "cases": [{"kind": "case", "name": "no-overwrite", "children": [{"kind": "leaf", "is_action_input": true, "name": "no-overwrite", "qname": "l3vpn:no-overwrite", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}, {"kind": "case", "name": "no-out-of-sync-check", "children": [{"kind": "leaf", "is_action_input": true, "name": "no-out-of-sync-check", "qname": "l3vpn:no-out-of-sync-check", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}], "name": "choice-sync-check"}, {"kind": "container", "is_action_input": true, "name": "commit-queue", "presence": true, "qname": "l3vpn:commit-queue", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}}, {"kind": "choice", "cases": [{"kind": "case", "name": "use-lsa", "children": [{"kind": "leaf", "is_action_input": true, "name": "use-lsa", "qname": "l3vpn:use-lsa", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}, {"kind": "case", "name": "no-lsa", "children": [{"kind": "leaf", "is_action_input": true, "name": "no-lsa", "qname": "l3vpn:no-lsa", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}], "name": "choice-lsa"}, {"default": "deep", "kind": "choice", "cases": [{"kind": "case", "name": "deep", "children": [{"kind": "leaf", "is_action_input": true, "name": "deep", "qname": "l3vpn:deep", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}, {"kind": "case", "name": "shallow", "children": [{"kind": "leaf", "is_action_input": true, "name": "shallow", "qname": "l3vpn:shallow", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}], "name": "depth"}, {"kind": "container", "is_action_input": true, "name": "reconcile", "presence": true, "qname": "l3vpn:reconcile", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}}, {"kind": "choice", "cases": [{"kind": "case", "name": "case-xml", "children": [{"kind": "container", "mandatory": true, "name": "result-xml", "qname": "l3vpn:result-xml", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}, {"kind": "case", "name": "case-cli", "children": [{"kind": "container", "mandatory": true, "name": "cli", "qname": "l3vpn:cli", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}, {"kind": "case", "name": "case-native", "children": [{"kind": "container", "mandatory": true, "name": "native", "qname": "l3vpn:native", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}], "name": "outformat"}, {"kind": "container", "mandatory": true, "name": "commit-queue", "qname": "l3vpn:commit-queue", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}, {"kind": "leaf", "name": "id", "type": {"primitive": true, "name": "uint64"}, "qname": "l3vpn:id", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "leafref_target": "/ncs:devices/commit-queue/queue-item/id", "is_leafref": true, "is_action_output": true}, {"kind": "leaf", "name": "tag", "qname": "l3vpn:tag", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "type": {"primitive": true, "name": "string"}, "is_action_output": true}, {"kind": "leaf", "name": "status", "qname": "l3vpn:status", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "type": {"namespace": "http://com/example/l3vpn", "name": "t7"}, "is_action_output": true}]}, {"info": {"string": "Reactive redeploy of service logic"}, "kind": "action", "mandatory": true, "name": "reactive-re-deploy", "qname": "l3vpn:reactive-re-deploy", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "children": [{"kind": "leaf", "name": "id", "type": {"primitive": true, "name": "uint64"}, "qname": "l3vpn:id", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "leafref_target": "/ncs:devices/commit-queue/queue-item/id", "is_leafref": true, "is_action_output": true}, {"kind": "leaf", "name": "tag", "qname": "l3vpn:tag", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "type": {"primitive": true, "name": "string"}, "is_action_output": true}, {"kind": "leaf", "name": "status", "qname": "l3vpn:status", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "type": {"namespace": "http://com/example/l3vpn", "name": "t7"}, "is_action_output": true}]}, {"info": {"string": "Touch a service"}, "kind": "action", "mandatory": true, "name": "touch", "qname": "l3vpn:touch", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "children": []}, {"info": {"string": "Get the data this service created"}, "kind": "action", "mandatory": true, "name": "get-modifications", "qname": "l3vpn:get-modifications", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "children": [{"kind": "leaf", "is_action_input": true, "name": "outformat", "qname": "l3vpn:outformat", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "outformat2"}}, {"kind": "leaf", "is_action_input": true, "name": "reverse", "qname": "l3vpn:reverse", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}, {"default": "deep", "kind": "choice", "cases": [{"kind": "case", "name": "deep", "children": [{"kind": "leaf", "is_action_input": true, "name": "deep", "qname": "l3vpn:deep", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}, {"kind": "case", "name": "shallow", "children": [{"kind": "leaf", "is_action_input": true, "name": "shallow", "qname": "l3vpn:shallow", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}], "name": "depth"}, {"kind": "choice", "cases": [{"kind": "case", "name": "use-lsa", "children": [{"kind": "leaf", "is_action_input": true, "name": "use-lsa", "qname": "l3vpn:use-lsa", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}, {"kind": "case", "name": "no-lsa", "children": [{"kind": "leaf", "is_action_input": true, "name": "no-lsa", "qname": "l3vpn:no-lsa", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}], "name": "choice-lsa"}, {"kind": "choice", "cases": [{"kind": "case", "name": "case-xml", "children": [{"kind": "container", "mandatory": true, "name": "result-xml", "qname": "l3vpn:result-xml", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}, {"kind": "case", "name": "case-cli", "children": [{"kind": "container", "mandatory": true, "name": "cli", "qname": "l3vpn:cli", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}], "name": "outformat"}]}, {"info": {"string": "Undo the effects of this service"}, "kind": "action", "mandatory": true, "name": "un-deploy", "qname": "l3vpn:un-deploy", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "children": [{"kind": "container", "is_action_input": true, "name": "dry-run", "presence": true, "qname": "l3vpn:dry-run", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}}, {"kind": "leaf", "is_action_input": true, "name": "no-revision-drop", "qname": "l3vpn:no-revision-drop", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}, {"kind": "leaf", "is_action_input": true, "name": "no-networking", "qname": "l3vpn:no-networking", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}, {"kind": "choice", "cases": [{"kind": "case", "name": "no-overwrite", "children": [{"kind": "leaf", "is_action_input": true, "name": "no-overwrite", "qname": "l3vpn:no-overwrite", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}, {"kind": "case", "name": "no-out-of-sync-check", "children": [{"kind": "leaf", "is_action_input": true, "name": "no-out-of-sync-check", "qname": "l3vpn:no-out-of-sync-check", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}], "name": "choice-sync-check"}, {"kind": "container", "is_action_input": true, "name": "commit-queue", "presence": true, "qname": "l3vpn:commit-queue", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}}, {"kind": "choice", "cases": [{"kind": "case", "name": "use-lsa", "children": [{"kind": "leaf", "is_action_input": true, "name": "use-lsa", "qname": "l3vpn:use-lsa", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}, {"kind": "case", "name": "no-lsa", "children": [{"kind": "leaf", "is_action_input": true, "name": "no-lsa", "qname": "l3vpn:no-lsa", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}], "name": "choice-lsa"}, {"kind": "leaf", "is_action_input": true, "name": "ignore-refcount", "qname": "l3vpn:ignore-refcount", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}, {"kind": "choice", "cases": [{"kind": "case", "name": "case-xml", "children": [{"kind": "container", "mandatory": true, "name": "result-xml", "qname": "l3vpn:result-xml", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}, {"kind": "case", "name": "case-cli", "children": [{"kind": "container", "mandatory": true, "name": "cli", "qname": "l3vpn:cli", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}, {"kind": "case", "name": "case-native", "children": [{"kind": "container", "mandatory": true, "name": "native", "qname": "l3vpn:native", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}], "name": "outformat"}, {"kind": "container", "mandatory": true, "name": "commit-queue", "qname": "l3vpn:commit-queue", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}, {"kind": "leaf", "name": "id", "type": {"primitive": true, "name": "uint64"}, "qname": "l3vpn:id", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "leafref_target": "/ncs:devices/commit-queue/queue-item/id", "is_leafref": true, "is_action_output": true}, {"kind": "leaf", "name": "tag", "qname": "l3vpn:tag", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "type": {"primitive": true, "name": "string"}, "is_action_output": true}, {"kind": "leaf", "name": "status", "qname": "l3vpn:status", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "type": {"namespace": "http://com/example/l3vpn", "name": "t7"}, "is_action_output": true}]}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["name"], "mandatory": true, "leafrefGroups": [["used-by-customer-service"]]}} diff --git a/test/units/modules/network/nso/fixtures/l3vpn_schema.json b/test/units/modules/network/nso/fixtures/l3vpn_schema.json deleted file mode 100644 index 0e7e370382..0000000000 --- a/test/units/modules/network/nso/fixtures/l3vpn_schema.json +++ /dev/null @@ -1 +0,0 @@ -{"meta": {"prefix": "l3vpn", "namespace": "http://com/example/l3vpn", "types": {"http://com/example/l3vpn:t21": [{"list_type": [{"leaf-list": true, "name": "http://com/example/l3vpn:t21"}], "leaf_type": [{"name": "string"}]}], "http://com/example/l3vpn:t23": [{"list_type": [{"leaf-list": true, "name": "http://com/example/l3vpn:t23"}], "leaf_type": [{"name": "string"}]}]}, "keypath": "/l3vpn:vpn"}, "data": {"kind": "container", "mandatory": true, "name": "vpn", "qname": "l3vpn:vpn", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "children": [{"kind": "list", "leafref_groups": [["used-by-customer-service"]], "min_elements": 0, "name": "l3vpn", "max_elements": "unbounded", "qname": "l3vpn:l3vpn", "children": [{"info": {"string": "Unique service id"}, "kind": "key", "mandatory": true, "name": "name", "qname": "l3vpn:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"info": {"string": "Devices and other services this service modified directly or\nindirectly."}, "kind": "container", "mandatory": true, "name": "modified", "leafrefGroups": [["devices"]], "qname": "l3vpn:modified", "is_config_false_callpoint": true, "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "leafref_groups": [["devices"]], "config": false}, {"info": {"string": "Devices and other services this service has explicitly\nmodified."}, "kind": "container", "mandatory": true, "name": "directly-modified", "leafrefGroups": [["devices"]], "qname": "l3vpn:directly-modified", "is_config_false_callpoint": true, "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "leafref_groups": [["devices"]], "config": false}, {"info": {"string": "A list of devices this service instance has manipulated"}, "kind": "leaf-list", "name": "device-list", "type": {"namespace": "http://com/example/l3vpn", "name": "t21"}, "qname": "l3vpn:device-list", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "Customer facing services using this service"}, "kind": "leaf-list", "name": "used-by-customer-service", "is_leafref": true, "qname": "l3vpn:used-by-customer-service", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "leafref_target": "/ncs:services/customer-service/object-id", "type": {"namespace": "http://com/example/l3vpn", "name": "t23"}, "config": false}, {"kind": "container", "mandatory": true, "name": "commit-queue", "qname": "l3vpn:commit-queue", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"kind": "container", "mandatory": true, "name": "log", "qname": "l3vpn:log", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"kind": "leaf", "mandatory": true, "name": "route-distinguisher", "qname": "l3vpn:route-distinguisher", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "uint32"}}, {"kind": "list", "leafref_groups": [["ce-device"]], "min_elements": 0, "name": "endpoint", "max_elements": "unbounded", "qname": "l3vpn:endpoint", "children": [{"info": {"string": "Endpoint identifier"}, "kind": "key", "mandatory": true, "name": "id", "qname": "l3vpn:id", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf", "mandatory": true, "name": "ce-device", "type": {"primitive": true, "name": "string"}, "qname": "l3vpn:ce-device", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "leafref_target": "/ncs:devices/device/name", "is_leafref": true}, {"kind": "leaf", "mandatory": true, "name": "ce-interface", "qname": "l3vpn:ce-interface", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf", "mandatory": true, "name": "ip-network", "qname": "l3vpn:ip-network", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "ip-prefix"}}, {"info": {"string": "Bandwidth in bps"}, "kind": "leaf", "mandatory": true, "name": "bandwidth", "qname": "l3vpn:bandwidth", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "uint32"}}, {"info": {"string": "CE Router as-number"}, "kind": "leaf", "name": "as-number", "qname": "l3vpn:as-number", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"primitive": true, "name": "uint32"}}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["id"], "mandatory": true, "leafrefGroups": [["ce-device"]]}, {"kind": "container", "mandatory": true, "name": "qos", "leafrefGroups": [["qos-policy"]], "qname": "l3vpn:qos", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "leafref_groups": [["qos-policy"]]}, {"info": {"string": "Check if device config is according to the service"}, "kind": "action", "mandatory": true, "name": "check-sync", "qname": "l3vpn:check-sync", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Check if device config is according to the service"}, "kind": "action", "mandatory": true, "name": "deep-check-sync", "qname": "l3vpn:deep-check-sync", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Run/Dryrun the service logic again"}, "kind": "action", "mandatory": true, "name": "re-deploy", "qname": "l3vpn:re-deploy", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Reactive redeploy of service logic"}, "kind": "action", "mandatory": true, "name": "reactive-re-deploy", "qname": "l3vpn:reactive-re-deploy", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Touch a service"}, "kind": "action", "mandatory": true, "name": "touch", "qname": "l3vpn:touch", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Get the data this service created"}, "kind": "action", "mandatory": true, "name": "get-modifications", "qname": "l3vpn:get-modifications", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Undo the effects of this service"}, "kind": "action", "mandatory": true, "name": "un-deploy", "qname": "l3vpn:un-deploy", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["name"], "mandatory": true, "leafrefGroups": [["used-by-customer-service"]]}]}} diff --git a/test/units/modules/network/nso/fixtures/sync_from_schema.json b/test/units/modules/network/nso/fixtures/sync_from_schema.json deleted file mode 100644 index dc2206d499..0000000000 --- a/test/units/modules/network/nso/fixtures/sync_from_schema.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "meta": { - "prefix": "ncs", - "namespace": "http://tail-f.com/ns/ncs", - "types": { - "http://tail-f.com/ns/ncs:outformat2": [ - { - "name": "http://tail-f.com/ns/ncs:outformat2", - "enumeration": [ - { - "info": "NCS CLI curly bracket format.", - "label": "cli" - }, - { - "info": "NETCONF XML edit-config format, i.e., the edit-config that\nwould be applied locally (at NCS) to get a config\nthat is equal to that of the managed device.", - "label": "xml" - } - ] - }, - { - "name": "string" - } - ] - }, - "keypath": "/ncs:devices/device{ce0}/sync-from" - }, - "data": { - "info": { - "string": "Synchronize the config by pulling from the device" - }, - "kind": "action", - "mandatory": true, - "name": "sync-from", - "qname": "ncs:sync-from", - "access": { - "read": false, - "create": false, - "execute": true, - "update": false, - "delete": false - }, - "children": [ - { - "kind": "container", - "is_action_input": true, - "name": "dry-run", - "presence": true, - "qname": "ncs:dry-run", - "access": { - "read": false, - "create": false, - "execute": false, - "update": true, - "delete": false - }, - "children": [ - { - "info": { - "string": "Report what would be done towards CDB, without\nactually doing anything." - }, - "kind": "leaf", - "is_action_input": true, - "name": "outformat", - "qname": "ncs:outformat", - "access": { - "read": false, - "create": false, - "execute": false, - "update": true, - "delete": false - }, - "type": { - "namespace": "http://tail-f.com/ns/ncs", - "name": "outformat2" - } - } - ] - }, - { - "kind": "choice", - "cases": [ - { - "kind": "case", - "name": "result", - "children": [ - { - "kind": "leaf", - "name": "result", - "qname": "ncs:result", - "access": { - "read": false, - "create": false, - "execute": false, - "update": false, - "delete": false - }, - "type": { - "primitive": true, - "name": "boolean" - }, - "is_action_output": true - } - ] - }, - { - "kind": "case", - "name": "result-xml", - "children": [ - { - "kind": "leaf", - "name": "result-xml", - "is_cli_preformatted": true, - "qname": "ncs:result-xml", - "access": { - "read": false, - "create": false, - "execute": false, - "update": false, - "delete": false - }, - "type": { - "primitive": true, - "name": "string" - }, - "is_action_output": true - } - ] - }, - { - "kind": "case", - "name": "cli", - "children": [ - { - "kind": "leaf", - "name": "cli", - "is_cli_preformatted": true, - "qname": "ncs:cli", - "access": { - "read": false, - "create": false, - "execute": false, - "update": false, - "delete": false - }, - "type": { - "primitive": true, - "name": "string" - }, - "is_action_output": true - } - ] - } - ], - "name": "outformat" - }, - { - "info": { - "string": "If present, contains additional information about the result." - }, - "kind": "leaf", - "name": "info", - "qname": "ncs:info", - "access": { - "read": false, - "create": false, - "execute": false, - "update": false, - "delete": false - }, - "type": { - "primitive": true, - "name": "string" - }, - "is_action_output": true - } - ] - } -} diff --git a/test/units/modules/network/nso/fixtures/verify_violation_data.json b/test/units/modules/network/nso/fixtures/verify_violation_data.json deleted file mode 100644 index 05742c11d7..0000000000 --- a/test/units/modules/network/nso/fixtures/verify_violation_data.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "tailf-ncs:devices": { - "device": [ - { - "name": "ce0", - "description": "Example Device" - } - ] - } -} diff --git a/test/units/modules/network/nso/nso_module.py b/test/units/modules/network/nso/nso_module.py deleted file mode 100644 index 72a28e02e6..0000000000 --- a/test/units/modules/network/nso/nso_module.py +++ /dev/null @@ -1,131 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -from __future__ import (absolute_import, division, print_function) - -import os -import json - -from units.compat import unittest -from units.compat.mock import patch -from ansible.module_utils import basic - - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(name): - path = os.path.join(fixture_path, name) - if path not in fixture_data: - with open(path) as f: - data = json.load(f) - fixture_data[path] = data - return fixture_data[path] - - -class MockResponse(object): - def __init__(self, method, params, code, body, headers=None): - if headers is None: - headers = {} - - self.method = method - self.params = params - - self.code = code - self.body = body - self.headers = dict(headers) - - def read(self): - return self.body - - -def mock_call(calls, url, timeout, validate_certs, data=None, headers=None, method=None): - if len(calls) == 0: - raise ValueError('no call mock for method {0}({1})'.format( - url, data)) - - result = calls[0] - del calls[0] - - request = json.loads(data) - if result.method != request['method']: - raise ValueError('expected method {0}({1}), got {2}({3})'.format( - result.method, result.params, - request['method'], request['params'])) - - for key, value in result.params.items(): - if key not in request['params']: - raise ValueError('{0} not in parameters'.format(key)) - if value != request['params'][key]: - raise ValueError('expected {0} to be {1}, got {2}'.format( - key, value, request['params'][key])) - - return result - - -class AnsibleExitJson(Exception): - pass - - -class AnsibleFailJson(Exception): - pass - - -class TestNsoModule(unittest.TestCase): - - def execute_module(self, failed=False, changed=False, **kwargs): - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - for key, value in kwargs.items(): - if key not in result: - self.fail("{0} not in result {1}".format(key, result)) - self.assertEqual(value, result[key]) - - return result - - def failed(self): - def fail_json(*args, **kwargs): - kwargs['failed'] = True - raise AnsibleFailJson(kwargs) - - with patch.object(basic.AnsibleModule, 'fail_json', fail_json): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def changed(self, changed=False): - def exit_json(*args, **kwargs): - if 'changed' not in kwargs: - kwargs['changed'] = False - raise AnsibleExitJson(kwargs) - - with patch.object(basic.AnsibleModule, 'exit_json', exit_json): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertEqual(result['changed'], changed, result) - return result diff --git a/test/units/modules/network/nso/test_nso_action.py b/test/units/modules/network/nso/test_nso_action.py deleted file mode 100644 index 5d7f34ec5d..0000000000 --- a/test/units/modules/network/nso/test_nso_action.py +++ /dev/null @@ -1,166 +0,0 @@ -# -# Copyright (c) 2017 Cisco and/or its affiliates. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -from __future__ import (absolute_import, division, print_function) - -import json - -from units.compat.mock import patch -from ansible.modules.network.nso import nso_action -from . import nso_module -from .nso_module import MockResponse - -from units.modules.utils import set_module_args - - -class TestNsoAction(nso_module.TestNsoModule): - module = nso_action - - @patch('ansible.module_utils.network.nso.nso.open_url') - def test_nso_action_missing(self, open_url_mock): - action_input = {} - path = '/ncs:devices/device{ce0}/missing' - calls = [ - MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}), - MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5.0"}'), - MockResponse('new_trans', {'mode': 'read'}, 200, '{"result": {"th": 1}}'), - MockResponse('get_schema', {'path': path}, 200, '{"error": {"data": {"param": "path"}, "type": "rpc.method.invalid_params"}}'), - MockResponse('logout', {}, 200, '{"result": {}}'), - ] - open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs) - - set_module_args({ - 'username': 'user', 'password': 'password', - 'url': 'http://localhost:8080/jsonrpc', - 'path': path, - 'input': action_input, - 'validate_certs': False - }) - self.execute_module(failed=True, msg='NSO get_schema invalid params. path = /ncs:devices/device{ce0}/missing') - - self.assertEqual(0, len(calls)) - - @patch('ansible.module_utils.network.nso.nso.open_url') - def test_nso_action_not_action(self, open_url_mock): - action_input = {} - path = '/ncs:devices/device{ce0}/description' - schema = nso_module.load_fixture('description_schema.json') - calls = [ - MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}), - MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5.0"}'), - MockResponse('new_trans', {'mode': 'read'}, 200, '{"result": {"th": 1}}'), - MockResponse('get_schema', {'path': path}, 200, '{"result": %s}' % (json.dumps(schema, ))), - MockResponse('logout', {}, 200, '{"result": {}}'), - ] - open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs) - - set_module_args({ - 'username': 'user', 'password': 'password', - 'url': 'http://localhost:8080/jsonrpc', - 'path': path, - 'input': action_input, - 'validate_certs': False - }) - self.execute_module(failed=True, msg='/ncs:devices/device{ce0}/description is not an action') - - self.assertEqual(0, len(calls)) - - @patch('ansible.module_utils.network.nso.nso.open_url') - def test_nso_action_ok(self, open_url_mock): - action_input = {} - path = '/ncs:devices/device{ce0}/sync-from' - output = {"result": True} - schema = nso_module.load_fixture('sync_from_schema.json') - calls = [ - MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}), - MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5.0"}'), - MockResponse('new_trans', {'mode': 'read'}, 200, '{"result": {"th": 1}}'), - MockResponse('get_schema', {'path': path}, 200, '{"result": %s}' % (json.dumps(schema, ))), - MockResponse('run_action', {'path': path, 'params': action_input}, 200, '{"result": {"result": true}}'), - MockResponse('logout', {}, 200, '{"result": {}}'), - ] - open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs) - - set_module_args({ - 'username': 'user', 'password': 'password', - 'url': 'http://localhost:8080/jsonrpc', - 'path': path, - 'input': action_input, - 'validate_certs': False - }) - self.execute_module(changed=True, output=output) - - self.assertEqual(0, len(calls)) - - @patch('ansible.module_utils.network.nso.nso.open_url') - def test_nso_action_validate_ok(self, open_url_mock): - action_input = {} - path = '/test:action' - output = {'version': [{'name': 'v1'}, {'name': 'v2'}]} - schema = nso_module.load_fixture('complex_schema.json') - calls = [ - MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}), - MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5.0"}'), - MockResponse('new_trans', {'mode': 'read'}, 200, '{"result": {"th": 1}}'), - MockResponse('get_schema', {'path': path}, 200, '{"result": %s}' % (json.dumps(schema, ))), - MockResponse('run_action', {'path': path, 'params': action_input}, 200, - '{"result": {"version": [{"name": "v1"}, {"name": "v2"}]}}'), - MockResponse('logout', {}, 200, '{"result": {}}'), - ] - open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs) - - set_module_args({ - 'username': 'user', 'password': 'password', - 'url': 'http://localhost:8080/jsonrpc', - 'path': path, - 'input': action_input, - 'output_required': output, - 'validate_certs': False - }) - self.execute_module(changed=True, output=output) - - self.assertEqual(0, len(calls)) - - @patch('ansible.module_utils.network.nso.nso.open_url') - def test_nso_action_validate_failed(self, open_url_mock): - action_input = {} - path = '/test:action' - output_mismatch = {'version': [{'name': 'v1'}, {'name': 'v3'}]} - schema = nso_module.load_fixture('complex_schema.json') - calls = [ - MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}), - MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5.0"}'), - MockResponse('new_trans', {'mode': 'read'}, 200, '{"result": {"th": 1}}'), - MockResponse('get_schema', {'path': path}, 200, '{"result": %s}' % (json.dumps(schema, ))), - MockResponse('run_action', {'path': path, 'params': action_input}, 200, - '{"result": {"version": [{"name": "v1"}, {"name": "v2"}]}}'), - MockResponse('logout', {}, 200, '{"result": {}}'), - ] - open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs) - - set_module_args({ - 'username': 'user', 'password': 'password', - 'url': 'http://localhost:8080/jsonrpc', - 'path': path, - 'input': action_input, - 'output_required': output_mismatch, - 'validate_certs': False - }) - self.execute_module(failed=True, msg="version value mismatch. expected [{'name': 'v1'}, {'name': 'v3'}] got [{'name': 'v1'}, {'name': 'v2'}]") - - self.assertEqual(0, len(calls)) diff --git a/test/units/modules/network/nso/test_nso_config.py b/test/units/modules/network/nso/test_nso_config.py deleted file mode 100644 index 64ed8f56c1..0000000000 --- a/test/units/modules/network/nso/test_nso_config.py +++ /dev/null @@ -1,137 +0,0 @@ -# -# Copyright (c) 2017 Cisco and/or its affiliates. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -from __future__ import (absolute_import, division, print_function) - -import json - -from units.compat.mock import patch -from ansible.modules.network.nso import nso_config -from units.modules.utils import set_module_args -from . import nso_module -from .nso_module import MockResponse - - -class TestNsoConfig(nso_module.TestNsoModule): - module = nso_config - - @patch('ansible.module_utils.network.nso.nso.open_url') - def test_nso_config_invalid_version_short(self, open_url_mock): - self._test_invalid_version(open_url_mock, '3.3') - - @patch('ansible.module_utils.network.nso.nso.open_url') - def test_nso_config_invalid_version_long(self, open_url_mock): - self._test_invalid_version(open_url_mock, '3.3.2') - - def _test_invalid_version(self, open_url_mock, version): - calls = [ - MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}), - MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "%s"}' % (version, )), - MockResponse('logout', {}, 200, '{"result": {}}'), - ] - open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs) - - data = nso_module.load_fixture('config_config.json') - set_module_args({ - 'username': 'user', 'password': 'password', - 'url': 'http://localhost:8080/jsonrpc', 'data': data, - 'validate_certs': False - }) - self.execute_module(failed=True) - - self.assertEqual(0, len(calls)) - - @patch('ansible.module_utils.network.nso.nso.open_url') - def test_nso_config_valid_version_short(self, open_url_mock): - self._test_valid_version(open_url_mock, '4.5') - - @patch('ansible.module_utils.network.nso.nso.open_url') - def test_nso_config_valid_version_long(self, open_url_mock): - self._test_valid_version(open_url_mock, '4.4.3') - - def _test_valid_version(self, open_url_mock, version): - calls = [ - MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}), - MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "%s"}' % (version, )), - MockResponse('new_trans', {}, 200, '{"result": {"th": 1}}'), - MockResponse('get_trans_changes', {}, 200, '{"result": {"changes": []}}'), - MockResponse('delete_trans', {}, 200, '{"result": {}}'), - MockResponse('logout', {}, 200, '{"result": {}}'), - ] - open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs) - - data = nso_module.load_fixture('config_empty_data.json') - set_module_args({ - 'username': 'user', 'password': 'password', - 'url': 'http://localhost:8080/jsonrpc', 'data': data, - 'validate_certs': False - }) - self.execute_module(changed=False, changes=[], diffs=[]) - - self.assertEqual(0, len(calls)) - - @patch('ansible.module_utils.network.nso.nso.open_url') - def test_nso_config_changed(self, open_url_mock): - vpn_schema = nso_module.load_fixture('l3vpn_schema.json') - l3vpn_schema = nso_module.load_fixture('l3vpn_l3vpn_schema.json') - endpoint_schema = nso_module.load_fixture('l3vpn_l3vpn_endpoint_schema.json') - changes = nso_module.load_fixture('config_config_changes.json') - - calls = [ - MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}), - MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5.1"}'), - MockResponse('get_module_prefix_map', {}, 200, '{"result": {"l3vpn": "l3vpn"}}'), - MockResponse('new_trans', {'mode': 'read'}, 200, '{"result": {"th": 1}}'), - MockResponse('get_schema', {'path': '/l3vpn:vpn'}, 200, '{"result": %s}' % (json.dumps(vpn_schema, ))), - MockResponse('get_schema', {'path': '/l3vpn:vpn/l3vpn'}, 200, '{"result": %s}' % (json.dumps(l3vpn_schema, ))), - MockResponse('exists', {'path': '/l3vpn:vpn/l3vpn{company}'}, 200, '{"result": {"exists": true}}'), - MockResponse('get_schema', {'path': '/l3vpn:vpn/l3vpn/endpoint'}, 200, '{"result": %s}' % (json.dumps(endpoint_schema, ))), - MockResponse('exists', {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}'}, 200, '{"result": {"exists": false}}'), - MockResponse('new_trans', {'mode': 'read_write'}, 200, '{"result": {"th": 2}}'), - MockResponse('create', {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}'}, 200, '{"result": {}}'), - MockResponse('set_value', {'path': '/l3vpn:vpn/l3vpn{company}/route-distinguisher', 'value': 999}, 200, '{"result": {}}'), - MockResponse('set_value', {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/as-number', 'value': 65101}, 200, '{"result": {}}'), - MockResponse('set_value', {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/bandwidth', 'value': 12000000}, 200, '{"result": {}}'), - MockResponse('set_value', {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/ce-device', 'value': 'ce6'}, 200, '{"result": {}}'), - MockResponse('set_value', {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/ce-interface', - 'value': 'GigabitEthernet0/12'}, 200, '{"result": {}}'), - MockResponse('set_value', {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/ip-network', - 'value': '10.10.1.0/24'}, 200, '{"result": {}}'), - MockResponse('get_trans_changes', {}, 200, '{"result": %s}' % (json.dumps(changes), )), - MockResponse('validate_commit', {}, 200, '{"result": {}}'), - MockResponse('commit', {}, 200, '{"result": {}}'), - MockResponse('logout', {}, 200, '{"result": {}}'), - ] - open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs) - - data = nso_module.load_fixture('config_config.json') - set_module_args({ - 'username': 'user', 'password': 'password', - 'url': 'http://localhost:8080/jsonrpc', 'data': data, - 'validate_certs': False - }) - self.execute_module(changed=True, changes=[ - {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/ce-device', 'type': 'set', 'from': None, 'to': 'ce6'}, - {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/ip-network', 'type': 'set', 'from': None, 'to': '10.10.1.0/24'}, - {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/as-number', 'type': 'set', 'from': None, 'to': '65101'}, - {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/ce-interface', 'type': 'set', 'from': None, 'to': 'GigabitEthernet0/12'}, - {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/bandwidth', 'type': 'set', 'from': None, 'to': '12000000'}, - {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}', 'type': 'create'}, - ], diffs=[]) - - self.assertEqual(0, len(calls)) diff --git a/test/units/modules/network/nso/test_nso_query.py b/test/units/modules/network/nso/test_nso_query.py deleted file mode 100644 index 02ee963654..0000000000 --- a/test/units/modules/network/nso/test_nso_query.py +++ /dev/null @@ -1,56 +0,0 @@ -# -# Copyright (c) 2017 Cisco and/or its affiliates. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -from __future__ import (absolute_import, division, print_function) - -from units.compat.mock import patch -from ansible.modules.network.nso import nso_query -from . import nso_module -from .nso_module import MockResponse - -from units.modules.utils import set_module_args - - -class TestNsoQuery(nso_module.TestNsoModule): - module = nso_query - - @patch('ansible.module_utils.network.nso.nso.open_url') - def test_nso_query(self, open_url_mock): - xpath = '/packages/package' - fields = ['name', 'package-version'] - calls = [ - MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}), - MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5"}'), - MockResponse('new_trans', {'mode': 'read'}, 200, '{"result": {"th": 1}}'), - MockResponse('query', - {'xpath_expr': xpath, 'selection': fields}, 200, - '{"result": {"results": [["test", "1.0"]]}}'), - MockResponse('logout', {}, 200, '{"result": {}}'), - ] - open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs) - - set_module_args({ - 'username': 'user', 'password': 'password', - 'url': 'http://localhost:8080/jsonrpc', - 'xpath': xpath, - 'fields': fields, - 'validate_certs': False - }) - self.execute_module(changed=False, output=[["test", "1.0"]]) - - self.assertEqual(0, len(calls)) diff --git a/test/units/modules/network/nso/test_nso_show.py b/test/units/modules/network/nso/test_nso_show.py deleted file mode 100644 index b1eac80a25..0000000000 --- a/test/units/modules/network/nso/test_nso_show.py +++ /dev/null @@ -1,97 +0,0 @@ -# -# Copyright (c) 2017 Cisco and/or its affiliates. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -from __future__ import (absolute_import, division, print_function) - -from units.compat.mock import patch -from ansible.modules.network.nso import nso_show -from . import nso_module -from .nso_module import MockResponse - -from units.modules.utils import set_module_args - - -class TestNsoShow(nso_module.TestNsoModule): - module = nso_show - - @patch('ansible.module_utils.network.nso.nso.open_url') - def test_nso_show_missing(self, open_url_mock): - path = '/ncs:devices/device{ce0}/missing' - calls = [ - MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}), - MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5"}'), - MockResponse('new_trans', {'mode': 'read'}, 200, '{"result": {"th": 1}}'), - MockResponse('show_config', - {'path': path, 'result_as': 'json'}, 200, - '{"error": {"data": {"param": "path"}, "type": "rpc.method.invalid_params"}}'), - MockResponse('logout', {}, 200, '{"result": {}}'), - ] - open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs) - - set_module_args({ - 'username': 'user', 'password': 'password', - 'url': 'http://localhost:8080/jsonrpc', - 'path': path - }) - self.execute_module(failed=True, msg='NSO show_config invalid params. path = /ncs:devices/device{ce0}/missing') - - self.assertEqual(0, len(calls)) - - @patch('ansible.module_utils.network.nso.nso.open_url') - def test_nso_show_config(self, open_url_mock): - path = '/ncs:devices/device{ce0}' - calls = [ - MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}), - MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5"}'), - MockResponse('new_trans', {'mode': 'read'}, 200, '{"result": {"th": 1}}'), - MockResponse('show_config', {'path': path, 'result_as': 'json'}, 200, '{"result": {"data": {}}}'), - MockResponse('logout', {}, 200, '{"result": {}}'), - ] - open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs) - - set_module_args({ - 'username': 'user', 'password': 'password', - 'url': 'http://localhost:8080/jsonrpc', - 'path': path, - 'operational': False - }) - self.execute_module(changed=False, output={"data": {}}) - self.assertEqual(0, len(calls)) - - @patch('ansible.module_utils.network.nso.nso.open_url') - def test_nso_show_config_and_oper(self, open_url_mock): - path = '/ncs:devices/device{ce0}/sync-from' - calls = [ - MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}), - MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5"}'), - MockResponse('new_trans', {'mode': 'read'}, 200, '{"result": {"th": 1}}'), - MockResponse('show_config', {'path': path, 'result_as': 'json'}, 200, '{"result": {"data": {}}}'), - MockResponse('logout', {}, 200, '{"result": {}}'), - ] - open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs) - - set_module_args({ - 'username': 'user', 'password': 'password', - 'url': 'http://localhost:8080/jsonrpc', - 'path': path, - 'operational': True, - 'validate_certs': False - }) - self.execute_module(changed=False, output={"data": {}}) - - self.assertEqual(0, len(calls)) diff --git a/test/units/modules/network/nso/test_nso_verify.py b/test/units/modules/network/nso/test_nso_verify.py deleted file mode 100644 index b39e9eef46..0000000000 --- a/test/units/modules/network/nso/test_nso_verify.py +++ /dev/null @@ -1,109 +0,0 @@ -# -# Copyright (c) 2017 Cisco and/or its affiliates. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -from __future__ import (absolute_import, division, print_function) - -import json - -from units.compat.mock import patch -from ansible.modules.network.nso import nso_verify -from . import nso_module -from .nso_module import MockResponse - -from units.modules.utils import set_module_args - - -class TestNsoVerify(nso_module.TestNsoModule): - module = nso_verify - - @patch('ansible.module_utils.network.nso.nso.open_url') - def test_nso_verify_empty_data(self, open_url_mock): - calls = [ - MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}), - MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.4.3"}'), - MockResponse('logout', {}, 200, '{"result": {}}'), - ] - open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs) - - data = {} - set_module_args({ - 'username': 'user', 'password': 'password', - 'url': 'http://localhost:8080/jsonrpc', 'data': data - }) - self.execute_module(changed=False) - - self.assertEqual(0, len(calls)) - - @patch('ansible.module_utils.network.nso.nso.open_url') - def test_nso_verify_violation(self, open_url_mock): - devices_schema = nso_module.load_fixture('devices_schema.json') - device_schema = nso_module.load_fixture('device_schema.json') - description_schema = nso_module.load_fixture('description_schema.json') - - calls = [ - MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}), - MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5.0"}'), - MockResponse('get_module_prefix_map', {}, 200, '{"result": {"tailf-ncs": "ncs"}}'), - MockResponse('new_trans', {'mode': 'read'}, 200, '{"result": {"th": 1}}'), - MockResponse('get_schema', {'path': '/ncs:devices'}, 200, '{"result": %s}' % (json.dumps(devices_schema, ))), - MockResponse('get_schema', {'path': '/ncs:devices/device'}, 200, '{"result": %s}' % (json.dumps(device_schema, ))), - MockResponse('exists', {'path': '/ncs:devices/device{ce0}'}, 200, '{"result": {"exists": true}}'), - MockResponse('get_value', {'path': '/ncs:devices/device{ce0}/description'}, 200, '{"result": {"value": "In Violation"}}'), - MockResponse('get_schema', {'path': '/ncs:devices/device/description'}, 200, '{"result": %s}' % (json.dumps(description_schema, ))), - MockResponse('logout', {}, 200, '{"result": {}}'), - ] - open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs) - - data = nso_module.load_fixture('verify_violation_data.json') - set_module_args({ - 'username': 'user', 'password': 'password', - 'url': 'http://localhost:8080/jsonrpc', 'data': data - }) - self.execute_module(failed=True, violations=[ - {'path': '/ncs:devices/device{ce0}/description', 'expected-value': 'Example Device', 'value': 'In Violation'}, - ]) - - self.assertEqual(0, len(calls)) - - @patch('ansible.module_utils.network.nso.nso.open_url') - def test_nso_verify_ok(self, open_url_mock): - devices_schema = nso_module.load_fixture('devices_schema.json') - device_schema = nso_module.load_fixture('device_schema.json') - - calls = [ - MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}), - MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5.0"}'), - MockResponse('get_module_prefix_map', {}, 200, '{"result": {"tailf-ncs": "ncs"}}'), - MockResponse('new_trans', {'mode': 'read'}, 200, '{"result": {"th": 1}}'), - MockResponse('get_schema', {'path': '/ncs:devices'}, 200, '{"result": %s}' % (json.dumps(devices_schema, ))), - MockResponse('get_schema', {'path': '/ncs:devices/device'}, 200, '{"result": %s}' % (json.dumps(device_schema, ))), - MockResponse('exists', {'path': '/ncs:devices/device{ce0}'}, 200, '{"result": {"exists": true}}'), - MockResponse('get_value', {'path': '/ncs:devices/device{ce0}/description'}, 200, '{"result": {"value": "Example Device"}}'), - MockResponse('logout', {}, 200, '{"result": {}}'), - ] - open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs) - - data = nso_module.load_fixture('verify_violation_data.json') - set_module_args({ - 'username': 'user', 'password': 'password', - 'url': 'http://localhost:8080/jsonrpc', 'data': data, - 'validate_certs': False - }) - self.execute_module(changed=False) - - self.assertEqual(0, len(calls)) diff --git a/test/units/modules/network/nuage/nuage_module.py b/test/units/modules/network/nuage/nuage_module.py deleted file mode 100644 index 8ded2fd989..0000000000 --- a/test/units/modules/network/nuage/nuage_module.py +++ /dev/null @@ -1,71 +0,0 @@ -# -*- coding: utf-8 -*- - -# (c) 2017, Nokia -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -from units.compat.mock import patch -from units.modules.utils import set_module_args as _set_module_args, ModuleTestCase - -import pytest - -try: - from vspk import v5_0 as vsdk - from bambou import nurest_session -except ImportError: - pytestmark = pytest.mark.skip('Nuage Ansible modules requires the vspk and bambou python libraries') - - -def set_module_args(args): - if 'auth' not in args: - args['auth'] = { - 'api_username': 'csproot', - 'api_password': 'csproot', - 'api_enterprise': 'csp', - 'api_url': 'https://localhost:8443', - 'api_version': 'v5_0' - } - return _set_module_args(args) - - -class MockNuageResponse(object): - def __init__(self, status_code, reason, errors): - self.status_code = status_code - self.reason = reason - self.errors = errors - - -class MockNuageConnection(object): - def __init__(self, status_code, reason, errors): - self.response = MockNuageResponse(status_code, reason, errors) - - -class TestNuageModule(ModuleTestCase): - - def setUp(self): - super(TestNuageModule, self).setUp() - - def session_start(self): - self._root_object = vsdk.NUMe() - self._root_object.enterprise_id = 'enterprise-id' - nurest_session._NURESTSessionCurrentContext.session = self - return self - - self.session_mock = patch('vspk.v5_0.NUVSDSession.start', new=session_start) - self.session_mock.start() - - def tearDown(self): - super(TestNuageModule, self).tearDown() - self.session_mock.stop() diff --git a/test/units/modules/network/nuage/test_nuage_vspk.py b/test/units/modules/network/nuage/test_nuage_vspk.py deleted file mode 100644 index adebd78461..0000000000 --- a/test/units/modules/network/nuage/test_nuage_vspk.py +++ /dev/null @@ -1,1421 +0,0 @@ -# -*- coding: utf-8 -*- - -# (c) 2017, Nokia -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -import sys - -import pytest - -pytestmark = [] - -if not(sys.version_info[0] == 2 and sys.version_info[1] >= 7): - pytestmark.append(pytest.mark.skip('Nuage Ansible modules requires Python 2.7')) - -try: - from vspk import v5_0 as vsdk - from bambou.exceptions import BambouHTTPError - from ansible.modules.network.nuage import nuage_vspk -except ImportError: - pytestmark.append(pytest.mark.skip('Nuage Ansible modules requires the vspk and bambou python libraries')) - -from units.compat.mock import patch -from units.modules.utils import set_module_args, AnsibleExitJson, AnsibleFailJson -from .nuage_module import MockNuageConnection, TestNuageModule - -_LOOP_COUNTER = 0 - - -class TestNuageVSPKModule(TestNuageModule): - - def setUp(self): - super(TestNuageVSPKModule, self).setUp() - - self.patches = [] - - def enterprises_get(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True, - callback=None, **kwargs): - group_by = [] if group_by is None else group_by - - if 'unknown' in filter: - return [] - - result = [vsdk.NUEnterprise(id='enterprise-id', name='test-enterprise')] - if filter == '' or filter == 'name == "test%"': - result.append(vsdk.NUEnterprise(id='enterprise-id-2', name='test-enterprise-2')) - return result - - self.enterprises_get_mock = patch('vspk.v5_0.fetchers.NUEnterprisesFetcher.get', new=enterprises_get) - self.enterprises_get_mock.start() - self.patches.append(self.enterprises_get_mock) - - def enterprises_get_first(self, filter=None, order_by=None, group_by=None, query_parameters=None, commit=False, callback=None, **kwargs): - group_by = [] if group_by is None else group_by - - if filter == 'name == "test-enterprise-create"' or 'unknown' in filter: - return None - return vsdk.NUEnterprise(id='enterprise-id', name='test-enterprise') - - self.enterprises_get_first_mock = patch('vspk.v5_0.fetchers.NUEnterprisesFetcher.get_first', new=enterprises_get_first) - self.enterprises_get_first_mock.start() - self.patches.append(self.enterprises_get_first_mock) - - def enterprise_delete(self, response_choice=1, callback=None, **kwargs): - pass - - self.enterprise_delete_mock = patch('vspk.v5_0.NUEnterprise.delete', new=enterprise_delete) - self.enterprise_delete_mock.start() - self.patches.append(self.enterprise_delete_mock) - - def enterprise_fetch(self, callback=None, **kwargs): - self.id = 'enterprise-id' - self.name = 'test-enterprise' - - self.enterprise_fetch_mock = patch('vspk.v5_0.NUEnterprise.fetch', new=enterprise_fetch) - self.enterprise_fetch_mock.start() - self.patches.append(self.enterprise_fetch_mock) - - def enterprise_save(self, response_choice=None, callback=None, **kwargs): - self.id = 'enterprise-id' - self.name = 'test-enterprise-update' - - self.enterprise_save_mock = patch('vspk.v5_0.NUEnterprise.save', new=enterprise_save) - self.enterprise_save_mock.start() - self.patches.append(self.enterprise_save_mock) - - def enterprise_create_child(self, nurest_object, response_choice=None, callback=None, commit=True, **kwargs): - nurest_object.id = 'user-id-create' - return nurest_object - - self.enterprise_create_child_mock = patch('vspk.v5_0.NUEnterprise.create_child', new=enterprise_create_child) - self.enterprise_create_child_mock.start() - self.patches.append(self.enterprise_create_child_mock) - - def me_create_child(self, nurest_object, response_choice=None, callback=None, commit=True, **kwargs): - nurest_object.id = 'enterprise-id-create' - return nurest_object - - self.me_create_child_mock = patch('vspk.v5_0.NUMe.create_child', new=me_create_child) - self.me_create_child_mock.start() - self.patches.append(self.me_create_child_mock) - - def user_fetch(self, callback=None, **kwargs): - self.id = 'user-id' - self.first_name = 'John' - self.last_name = 'Doe' - self.email = 'john.doe@localhost' - self.user_name = 'johndoe' - self.password = '' - - self.user_fetch_mock = patch('vspk.v5_0.NUUser.fetch', new=user_fetch) - self.user_fetch_mock.start() - self.patches.append(self.user_fetch_mock) - - def user_save(self, response_choice=None, callback=None, **kwargs): - self.id = 'user-id' - self.first_name = 'John' - self.last_name = 'Doe' - self.email = 'john.doe@localhost' - self.user_name = 'johndoe' - self.password = '' - - self.user_save_mock = patch('vspk.v5_0.NUUser.save', new=user_save) - self.user_save_mock.start() - self.patches.append(self.user_save_mock) - - def groups_get(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True, - callback=None, **kwargs): - group_by = [] if group_by is None else group_by - - return [] - - self.groups_get_mock = patch('vspk.v5_0.fetchers.NUGroupsFetcher.get', new=groups_get) - self.groups_get_mock.start() - self.patches.append(self.groups_get_mock) - - def group_fetch(self, callback=None, **kwargs): - self.id = 'group-id' - self.name = 'group' - - self.group_fetch_mock = patch('vspk.v5_0.NUGroup.fetch', new=group_fetch) - self.group_fetch_mock.start() - self.patches.append(self.group_fetch_mock) - - def group_assign(self, objects, nurest_object_type, callback=None, commit=True, **kwargs): - self.id = 'group-id' - self.name = 'group' - - self.group_assign_mock = patch('vspk.v5_0.NUGroup.assign', new=group_assign) - self.group_assign_mock.start() - self.patches.append(self.group_assign_mock) - - def job_fetch(self, callback=None, **kwargs): - global _LOOP_COUNTER - self.id = 'job-id' - self.command = 'EXPORT' - self.status = 'RUNNING' - if _LOOP_COUNTER > 1: - self.status = 'SUCCESS' - _LOOP_COUNTER += 1 - - self.job_fetch_mock = patch('vspk.v5_0.NUJob.fetch', new=job_fetch) - self.job_fetch_mock.start() - self.patches.append(self.job_fetch_mock) - - def tearDown(self): - super(TestNuageVSPKModule, self).tearDown() - for mock in self.patches: - mock.stop() - - def test_certificate_auth(self): - set_module_args( - args={ - 'type': 'Enterprise', - 'state': 'present', - 'properties': { - 'name': 'test-enterprise' - }, - 'auth': { - 'api_username': 'csproot', - 'api_certificate': '/dummy/location/certificate.pem', - 'api_key': '/dummy/location/key.pem', - 'api_enterprise': 'csp', - 'api_url': 'https://localhost:8443', - 'api_version': 'v5_0' - } - } - ) - - with self.assertRaises(AnsibleExitJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertFalse(result['changed']) - self.assertEqual(len(result['entities']), 1) - self.assertEqual(result['id'], 'enterprise-id') - self.assertEqual(result['entities'][0]['name'], 'test-enterprise') - - def test_command_find_by_property(self): - set_module_args(args={ - 'type': 'Enterprise', - 'command': 'find', - 'properties': { - 'name': 'test-enterprise' - } - }) - - with self.assertRaises(AnsibleExitJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertFalse(result['changed']) - self.assertEqual(len(result['entities']), 1) - self.assertEqual(result['id'], 'enterprise-id') - self.assertEqual(result['entities'][0]['name'], 'test-enterprise') - - def test_command_find_by_filter(self): - set_module_args(args={ - 'type': 'Enterprise', - 'command': 'find', - 'match_filter': 'name == "test%"' - }) - - with self.assertRaises(AnsibleExitJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertFalse(result['changed']) - self.assertEqual(len(result['entities']), 2) - self.assertEqual(result['entities'][0]['name'], 'test-enterprise') - self.assertEqual(result['entities'][1]['name'], 'test-enterprise-2') - - def test_command_find_by_id(self): - set_module_args(args={ - 'id': 'enterprise-id', - 'type': 'Enterprise', - 'command': 'find' - }) - - with self.assertRaises(AnsibleExitJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertFalse(result['changed']) - self.assertEqual(len(result['entities']), 1) - self.assertEqual(result['id'], 'enterprise-id') - self.assertEqual(result['entities'][0]['name'], 'test-enterprise') - - def test_command_find_all(self): - set_module_args(args={ - 'type': 'Enterprise', - 'command': 'find' - }) - - with self.assertRaises(AnsibleExitJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertFalse(result['changed']) - self.assertEqual(len(result['entities']), 2) - self.assertEqual(result['entities'][0]['name'], 'test-enterprise') - self.assertEqual(result['entities'][1]['name'], 'test-enterprise-2') - - def test_command_change_password(self): - set_module_args(args={ - 'id': 'user-id', - 'type': 'User', - 'parent_id': 'enterprise-id', - 'parent_type': 'Enterprise', - 'command': 'change_password', - 'properties': { - 'password': 'test' - } - }) - - with self.assertRaises(AnsibleExitJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertEqual(result['changed'], True) - self.assertEqual(result['id'], 'user-id') - self.assertEqual(result['entities'][0]['firstName'], 'John') - self.assertEqual(result['entities'][0]['lastName'], 'Doe') - self.assertEqual(result['entities'][0]['email'], 'john.doe@localhost') - self.assertEqual(result['entities'][0]['userName'], 'johndoe') - self.assertEqual(result['entities'][0]['password'], '') - - def test_command_wait_for_job(self): - set_module_args(args={ - 'id': 'job-id', - 'type': 'Job', - 'command': 'wait_for_job', - }) - - with self.assertRaises(AnsibleExitJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertEqual(result['changed'], True) - self.assertEqual(result['id'], 'job-id') - self.assertEqual(result['entities'][0]['command'], 'EXPORT') - self.assertEqual(result['entities'][0]['status'], 'SUCCESS') - - def test_command_get_csp_enterprise(self): - set_module_args(args={ - 'type': 'Enterprise', - 'command': 'get_csp_enterprise' - }) - - with self.assertRaises(AnsibleExitJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertFalse(result['changed']) - self.assertEqual(len(result['entities']), 1) - self.assertEqual(result['id'], 'enterprise-id') - self.assertEqual(result['entities'][0]['name'], 'test-enterprise') - - def test_state_present_existing(self): - set_module_args(args={ - 'type': 'Enterprise', - 'state': 'present', - 'properties': { - 'id': 'enterprise-id', - 'name': 'test-enterprise' - } - }) - - with self.assertRaises(AnsibleExitJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertFalse(result['changed']) - self.assertEqual(len(result['entities']), 1) - self.assertEqual(result['id'], 'enterprise-id') - self.assertEqual(result['entities'][0]['name'], 'test-enterprise') - - def test_state_present_existing_filter(self): - set_module_args(args={ - 'type': 'Enterprise', - 'state': 'present', - 'match_filter': 'name == "test-enterprise"' - }) - - with self.assertRaises(AnsibleExitJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertFalse(result['changed']) - self.assertEqual(len(result['entities']), 1) - self.assertEqual(result['id'], 'enterprise-id') - self.assertEqual(result['entities'][0]['name'], 'test-enterprise') - - def test_state_present_create(self): - set_module_args(args={ - 'type': 'Enterprise', - 'state': 'present', - 'properties': { - 'name': 'test-enterprise-create' - } - }) - - with self.assertRaises(AnsibleExitJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertEqual(result['changed'], True) - self.assertEqual(len(result['entities']), 1) - self.assertEqual(result['id'], 'enterprise-id-create') - self.assertEqual(result['entities'][0]['name'], 'test-enterprise-create') - - def test_state_present_update(self): - set_module_args(args={ - 'id': 'enterprise-id', - 'type': 'Enterprise', - 'state': 'present', - 'properties': { - 'name': 'test-enterprise-update' - } - }) - - with self.assertRaises(AnsibleExitJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertEqual(result['changed'], True) - self.assertEqual(len(result['entities']), 1) - self.assertEqual(result['id'], 'enterprise-id') - self.assertEqual(result['entities'][0]['name'], 'test-enterprise-update') - - def test_state_present_member_existing(self): - set_module_args(args={ - 'id': 'user-id', - 'type': 'User', - 'parent_id': 'group-id', - 'parent_type': 'Group', - 'state': 'present' - }) - - def users_get(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True, - callback=None, **kwargs): - group_by = [] if group_by is None else group_by - - return [vsdk.NUUser(id='user-id'), vsdk.NUUser(id='user-id-2')] - - with self.assertRaises(AnsibleExitJson) as exc: - with patch('vspk.v5_0.fetchers.NUUsersFetcher.get', users_get): - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertFalse(result['changed']) - - def test_state_present_member_missing(self): - set_module_args(args={ - 'id': 'user-id', - 'type': 'User', - 'parent_id': 'group-id', - 'parent_type': 'Group', - 'state': 'present' - }) - - def users_get(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True, - callback=None, **kwargs): - group_by = [] if group_by is None else group_by - - return [] - - with self.assertRaises(AnsibleExitJson) as exc: - with patch('vspk.v5_0.fetchers.NUUsersFetcher.get', users_get): - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertEqual(result['changed'], True) - self.assertEqual(len(result['entities']), 1) - self.assertEqual(result['id'], 'user-id') - - def test_state_present_children_update(self): - set_module_args(args={ - 'type': 'Enterprise', - 'state': 'present', - 'properties': { - 'name': 'test-enterprise' - }, - 'children': [ - { - 'id': 'user-id', - 'type': 'User', - 'match_filter': 'userName == "johndoe"', - 'properties': { - 'user_name': 'johndoe-changed' - } - } - ] - }) - - with self.assertRaises(AnsibleExitJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertEqual(result['changed'], True) - self.assertEqual(len(result['entities']), 2) - - def test_state_present_children_create(self): - set_module_args(args={ - 'type': 'Enterprise', - 'state': 'present', - 'properties': { - 'name': 'test-enterprise-create' - }, - 'children': [ - { - 'type': 'User', - 'properties': { - 'user_name': 'johndoe-new' - } - } - ] - }) - - def users_get(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True, - callback=None, **kwargs): - group_by = [] if group_by is None else group_by - - return [] - - with self.assertRaises(AnsibleExitJson) as exc: - with patch('vspk.v5_0.fetchers.NUUsersFetcher.get', users_get): - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['changed']) - self.assertEqual(len(result['entities']), 2) - - def test_state_present_children_member_missing(self): - set_module_args(args={ - 'type': 'Enterprise', - 'state': 'present', - 'properties': { - 'name': 'unkown-test-enterprise' - }, - 'children': [ - { - 'type': 'Group', - 'properties': { - 'name': 'unknown-group' - }, - 'children': [ - { - 'id': 'user-id', - 'type': 'User' - } - ] - } - ] - }) - - def users_get(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True, - callback=None, **kwargs): - group_by = [] if group_by is None else group_by - - return [] - - with self.assertRaises(AnsibleExitJson) as exc: - with patch('vspk.v5_0.fetchers.NUUsersFetcher.get', users_get): - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['changed']) - self.assertEqual(len(result['entities']), 3) - - def test_state_absent(self): - set_module_args(args={ - 'type': 'Enterprise', - 'state': 'absent', - 'properties': { - 'name': 'test-enterprise' - } - }) - - with self.assertRaises(AnsibleExitJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['changed']) - - def test_state_absent_member(self): - set_module_args(args={ - 'id': 'user-id', - 'type': 'User', - 'parent_id': 'group-id', - 'parent_type': 'Group', - 'state': 'absent' - }) - - def users_get(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True, - callback=None, **kwargs): - group_by = [] if group_by is None else group_by - - return [vsdk.NUUser(id='user-id')] - - with self.assertRaises(AnsibleExitJson) as exc: - with patch('vspk.v5_0.fetchers.NUUsersFetcher.get', users_get): - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['changed']) - - def test_exception_session(self): - set_module_args(args={ - 'id': 'enterprise-id', - 'type': 'Enterprise', - 'command': 'find' - }) - - def failed_session_start(self): - raise BambouHTTPError(MockNuageConnection(status_code='401', reason='Unauthorized', errors={})) - - with self.assertRaises(AnsibleFailJson) as exc: - with patch('vspk.v5_0.NUVSDSession.start', new=failed_session_start): - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], 'Unable to connect to the API URL with given username, password and enterprise: [HTTP 401(Unauthorized)] {}') - - def test_exception_find_parent(self): - set_module_args(args={ - 'type': 'User', - 'parent_id': 'group-id', - 'parent_type': 'Group', - 'command': 'find' - }) - - def group_failed_fetch(self, callback=None, **kwargs): - raise BambouHTTPError(MockNuageConnection(status_code='404', reason='Not Found', errors={'description': 'Entity not found'})) - - with self.assertRaises(AnsibleFailJson) as exc: - with patch('vspk.v5_0.NUGroup.fetch', group_failed_fetch): - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], "Failed to fetch the specified parent: [HTTP 404(Not Found)] {'description': 'Entity not found'}") - - def test_exception_find_entities_id(self): - set_module_args(args={ - 'id': 'enterprise-id', - 'type': 'Enterprise', - 'command': 'find' - }) - - def enterprise_failed_fetch(self, callback=None, **kwargs): - raise BambouHTTPError(MockNuageConnection(status_code='404', reason='Not Found', errors={'description': 'Entity not found'})) - - with self.assertRaises(AnsibleFailJson) as exc: - with patch('vspk.v5_0.NUEnterprise.fetch', enterprise_failed_fetch): - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], "Failed to fetch the specified entity by ID: [HTTP 404(Not Found)] {'description': 'Entity not found'}") - - def test_excption_find_entities_property(self): - set_module_args(args={ - 'type': 'Enterprise', - 'match_filter': 'name == "enterprise-id"', - 'command': 'find' - }) - - def enterprises_failed_get(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True, - callback=None, **kwargs): - group_by = [] if group_by is None else group_by - - raise BambouHTTPError(MockNuageConnection(status_code='404', reason='Not Found', errors={'description': 'Entity not found'})) - - with self.assertRaises(AnsibleFailJson) as exc: - with patch('vspk.v5_0.fetchers.NUEnterprisesFetcher.get', enterprises_failed_get): - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], 'Unable to find matching entries') - - def test_exception_find_entity_id(self): - set_module_args(args={ - 'id': 'enterprise-id', - 'type': 'Enterprise', - 'state': 'present' - }) - - def enterprise_failed_fetch(self, callback=None, **kwargs): - raise BambouHTTPError(MockNuageConnection(status_code='404', reason='Not Found', errors={'description': 'Entity not found'})) - - with self.assertRaises(AnsibleFailJson) as exc: - with patch('vspk.v5_0.NUEnterprise.fetch', enterprise_failed_fetch): - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], "Failed to fetch the specified entity by ID: [HTTP 404(Not Found)] {'description': 'Entity not found'}") - - def test_exception_find_entity_property(self): - set_module_args(args={ - 'type': 'Enterprise', - 'match_filter': 'name == "enterprise-id"', - 'state': 'absent' - }) - - def enterprises_failed_get_first(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True, - callback=None, **kwargs): - group_by = [] if group_by is None else group_by - - raise BambouHTTPError(MockNuageConnection(status_code='404', reason='Not Found', errors={'description': 'Entity not found'})) - - with self.assertRaises(AnsibleExitJson) as exc: - with patch('vspk.v5_0.fetchers.NUEnterprisesFetcher.get_first', enterprises_failed_get_first): - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertFalse(result['changed']) - - def test_exception_get_csp_enterprise(self): - set_module_args(args={ - 'type': 'Enterprise', - 'command': 'get_csp_enterprise' - }) - - def enterprise_failed_fetch(self, callback=None, **kwargs): - raise BambouHTTPError(MockNuageConnection(status_code='404', reason='Not Found', errors={'description': 'Entity not found'})) - - with self.assertRaises(AnsibleFailJson) as exc: - with patch('vspk.v5_0.NUEnterprise.fetch', enterprise_failed_fetch): - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], "Unable to fetch CSP enterprise: [HTTP 404(Not Found)] {'description': 'Entity not found'}") - - def test_exception_assign_member(self): - set_module_args(args={ - 'id': 'user-id', - 'type': 'User', - 'parent_id': 'group-id', - 'parent_type': 'Group', - 'state': 'present' - }) - - def users_get(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True, - callback=None, **kwargs): - group_by = [] if group_by is None else group_by - - return [] - - def group_assign(self, objects, nurest_object_type, callback=None, commit=True, **kwargs): - raise BambouHTTPError(MockNuageConnection(status_code='500', reason='Server exception', errors={'description': 'Unable to assign member'})) - - with self.assertRaises(AnsibleFailJson) as exc: - with patch('vspk.v5_0.fetchers.NUUsersFetcher.get', users_get): - with patch('vspk.v5_0.NUGroup.assign', new=group_assign): - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], "Unable to assign entity as a member: [HTTP 500(Server exception)] {'description': 'Unable to assign member'}") - - def test_exception_unassign_member(self): - set_module_args(args={ - 'id': 'user-id', - 'type': 'User', - 'parent_id': 'group-id', - 'parent_type': 'Group', - 'state': 'absent' - }) - - def users_get(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True, - callback=None, **kwargs): - group_by = [] if group_by is None else group_by - - return [vsdk.NUUser(id='user-id'), vsdk.NUUser(id='user-id-2')] - - def group_assign(self, objects, nurest_object_type, callback=None, commit=True, **kwargs): - raise BambouHTTPError(MockNuageConnection(status_code='500', reason='Server exception', errors={'description': 'Unable to remove member'})) - - with self.assertRaises(AnsibleFailJson) as exc: - with patch('vspk.v5_0.fetchers.NUUsersFetcher.get', users_get): - with patch('vspk.v5_0.NUGroup.assign', new=group_assign): - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], "Unable to remove entity as a member: [HTTP 500(Server exception)] {'description': 'Unable to remove member'}") - - def test_exception_create_entity(self): - set_module_args(args={ - 'type': 'Enterprise', - 'state': 'present', - 'properties': { - 'name': 'test-enterprise-create' - } - }) - - def me_create_child(self, nurest_object, response_choice=None, callback=None, commit=True, **kwargs): - raise BambouHTTPError(MockNuageConnection(status_code='500', reason='Server exception', errors={'description': 'Unable to create entity'})) - - with self.assertRaises(AnsibleFailJson) as exc: - with patch('vspk.v5_0.NUMe.create_child', me_create_child): - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], "Unable to create entity: [HTTP 500(Server exception)] {'description': 'Unable to create entity'}") - - def test_exception_save_entity(self): - set_module_args(args={ - 'id': 'enterprise-id', - 'type': 'Enterprise', - 'state': 'present', - 'properties': { - 'name': 'new-enterprise-name' - } - }) - - def enterprise_save(self, response_choice=None, callback=None, **kwargs): - raise BambouHTTPError(MockNuageConnection(status_code='500', reason='Server exception', errors={'description': 'Unable to save entity'})) - - with self.assertRaises(AnsibleFailJson) as exc: - with patch('vspk.v5_0.NUEnterprise.save', enterprise_save): - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], "Unable to update entity: [HTTP 500(Server exception)] {'description': 'Unable to save entity'}") - - def test_exception_delete_entity(self): - set_module_args(args={ - 'id': 'enterprise-id', - 'type': 'Enterprise', - 'state': 'absent' - }) - - def enterprise_delete(self, response_choice=1, callback=None, **kwargs): - raise BambouHTTPError(MockNuageConnection(status_code='500', reason='Server exception', errors={'description': 'Unable to delete entity'})) - - with self.assertRaises(AnsibleFailJson) as exc: - with patch('vspk.v5_0.NUEnterprise.delete', enterprise_delete): - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], "Unable to delete entity: [HTTP 500(Server exception)] {'description': 'Unable to delete entity'}") - - def test_exception_wait_for_job(self): - set_module_args(args={ - 'id': 'job-id', - 'type': 'Job', - 'command': 'wait_for_job' - }) - - def job_fetch(self, callback=None, **kwargs): - global _LOOP_COUNTER - self.id = 'job-id' - self.command = 'EXPORT' - self.status = 'RUNNING' - if _LOOP_COUNTER > 1: - self.status = 'ERROR' - _LOOP_COUNTER += 1 - - with self.assertRaises(AnsibleFailJson) as exc: - with patch('vspk.v5_0.NUJob.fetch', new=job_fetch): - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], "Job ended in an error") - - def test_fail_auth(self): - set_module_args( - args={ - 'type': 'Enterprise', - 'command': 'find', - 'auth': { - 'api_username': 'csproot', - 'api_enterprise': 'csp', - 'api_url': 'https://localhost:8443', - 'api_version': 'v5_0' - } - } - ) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], 'Missing api_password or api_certificate and api_key parameter in auth') - - def test_fail_version(self): - set_module_args( - args={ - 'type': 'Enterprise', - 'command': 'find', - 'auth': { - 'api_username': 'csproot', - 'api_password': 'csproot', - 'api_enterprise': 'csp', - 'api_url': 'https://localhost:8443', - 'api_version': 'v1_0' - } - } - ) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], 'vspk is required for this module, or the API version specified does not exist.') - - def test_fail_type(self): - set_module_args(args={ - 'type': 'Unknown', - 'command': 'find' - }) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], 'Unrecognised type specified') - - def test_fail_parent_type(self): - set_module_args(args={ - 'type': 'User', - 'parent_id': 'unkown-id', - 'parent_type': 'Unknown', - 'command': 'find' - }) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], 'Unrecognised parent type specified') - - def test_fail_parent_child(self): - set_module_args(args={ - 'type': 'Enterprise', - 'parent_id': 'user-id', - 'parent_type': 'User', - 'command': 'find' - }) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], 'Specified parent is not a valid parent for the specified type') - - def test_fail_no_parent(self): - set_module_args(args={ - 'type': 'Group', - 'command': 'find' - }) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], 'No parent specified and root object is not a parent for the type') - - def test_fail_present_member(self): - set_module_args(args={ - 'type': 'User', - 'match_filter': 'name == "test-user"', - 'parent_id': 'group-id', - 'parent_type': 'Group', - 'state': 'present' - }) - - def users_get_first(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True, - callback=None, **kwargs): - group_by = [] if group_by is None else group_by - - return None - - with self.assertRaises(AnsibleFailJson) as exc: - with patch('vspk.v5_0.fetchers.NUUsersFetcher.get_first', users_get_first): - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], 'Trying to assign an entity that does not exist', result) - - def test_fail_change_password(self): - set_module_args(args={ - 'id': 'user-id', - 'type': 'User', - 'command': 'change_password', - 'properties': {} - }) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], 'command is change_password but the following are missing: password property') - - def test_fail_change_password_non_user(self): - set_module_args(args={ - 'id': 'group-id', - 'type': 'Group', - 'command': 'change_password', - 'properties': { - 'password': 'new-password' - } - }) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], 'Entity does not have a password property') - - def test_fail_command_find(self): - set_module_args(args={ - 'type': 'Enterprise', - 'command': 'find', - 'properties': { - 'id': 'unknown-enterprise-id', - 'name': 'unkown-enterprise' - } - }) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], 'Unable to find matching entries') - - def test_fail_children_type(self): - set_module_args(args={ - 'type': 'Enterprise', - 'state': 'present', - 'properties': { - 'name': 'test-enterprise-create' - }, - 'children': [ - { - 'properties': { - 'user_name': 'johndoe-new' - } - } - ] - }) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], 'Child type unspecified') - - def test_fail_children_mandatory(self): - set_module_args(args={ - 'type': 'Enterprise', - 'state': 'present', - 'properties': { - 'name': 'test-enterprise-create' - }, - 'children': [ - { - 'type': 'User' - } - ] - }) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], 'Child ID or properties unspecified') - - def test_fail_children_unknown(self): - set_module_args(args={ - 'type': 'Enterprise', - 'state': 'present', - 'properties': { - 'name': 'test-enterprise-create' - }, - 'children': [ - { - 'id': 'unkown-id', - 'type': 'Unkown' - } - ] - }) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], 'Unrecognised child type specified') - - def test_fail_children_parent(self): - set_module_args(args={ - 'id': 'group-id', - 'type': 'Group', - 'state': 'present', - 'children': [ - { - 'type': 'User', - 'properties': { - 'name': 'test-user' - } - } - ] - }) - - def users_get_first(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True, - callback=None, **kwargs): - group_by = [] if group_by is None else group_by - - return None - - with self.assertRaises(AnsibleFailJson) as exc: - with patch('vspk.v5_0.fetchers.NUUsersFetcher.get_first', users_get_first): - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], 'Trying to assign a child that does not exist') - - def test_fail_children_fetcher(self): - set_module_args(args={ - 'id': 'group-id', - 'type': 'Group', - 'state': 'present', - 'children': [ - { - 'type': 'Enterprise', - 'properties': { - 'name': 'test-enterprise' - } - } - ] - }) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], 'Unable to find a fetcher for child, and no ID specified.') - - def test_fail_has_changed(self): - set_module_args(args={ - 'id': 'user-id', - 'type': 'User', - 'state': 'present', - 'properties': { - 'user_name': 'changed-user', - 'fake': 'invalid-property', - 'password': 'hidden-property' - } - }) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], 'Property fake is not valid for this type of entity') - - def test_input_auth_username(self): - set_module_args( - args={ - 'type': 'Enterprise', - 'command': 'find', - 'auth': { - 'api_password': 'csproot', - 'api_enterprise': 'csp', - 'api_url': 'https://localhost:8443', - 'api_version': 'v5_0' - } - } - ) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], 'missing required arguments: api_username') - - def test_input_auth_enterprise(self): - set_module_args( - args={ - 'type': 'Enterprise', - 'command': 'find', - 'auth': { - 'api_username': 'csproot', - 'api_password': 'csproot', - 'api_url': 'https://localhost:8443', - 'api_version': 'v5_0' - } - } - ) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], 'missing required arguments: api_enterprise') - - def test_input_auth_url(self): - set_module_args( - args={ - 'type': 'Enterprise', - 'command': 'find', - 'auth': { - 'api_username': 'csproot', - 'api_password': 'csproot', - 'api_enterprise': 'csp', - 'api_version': 'v5_0' - } - } - ) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], 'missing required arguments: api_url') - - def test_input_auth_version(self): - set_module_args( - args={ - 'type': 'Enterprise', - 'command': 'find', - 'auth': { - 'api_username': 'csproot', - 'api_password': 'csproot', - 'api_enterprise': 'csp', - 'api_url': 'https://localhost:8443', - } - } - ) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], 'missing required arguments: api_version') - - def test_input_exclusive(self): - set_module_args(args={ - 'type': 'Enterprise', - 'state': 'present', - 'command': 'find' - }) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], "parameters are mutually exclusive: ['command', 'state']") - - def test_input_require_both_parent_id(self): - set_module_args(args={ - 'type': 'User', - 'command': 'find', - 'parent_type': 'Enterprise' - }) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], "parameters are required together: ['parent_id', 'parent_type']") - - def test_input_require_both_parent_type(self): - set_module_args(args={ - 'type': 'User', - 'command': 'find', - 'parent_id': 'enterprise-id' - }) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], "parameters are required together: ['parent_id', 'parent_type']") - - def test_input_require_on_off(self): - set_module_args(args={ - 'type': 'Enterprise' - }) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], "one of the following is required: command,state") - - def test_input_require_if_present(self): - set_module_args(args={ - 'type': 'Enterprise', - 'state': 'present', - }) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], "state is present but the following are missing: id,properties,match_filter") - - def test_input_require_if_absent(self): - set_module_args(args={ - 'type': 'Enterprise', - 'state': 'absent', - }) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], "state is absent but the following are missing: id,properties,match_filter") - - def test_input_require_if_change_password_id(self): - set_module_args(args={ - 'type': 'User', - 'command': 'change_password', - 'properties': { - 'password': 'dummy-password' - } - }) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], "command is change_password but the following are missing: id") - - def test_input_require_if_change_password_properties(self): - set_module_args(args={ - 'type': 'User', - 'command': 'change_password', - 'id': 'user-id' - }) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], "command is change_password but the following are missing: properties") - - def test_input_require_if_wait_for_job_id(self): - set_module_args(args={ - 'type': 'Job', - 'command': 'wait_for_job' - }) - - with self.assertRaises(AnsibleFailJson) as exc: - nuage_vspk.main() - - result = exc.exception.args[0] - - self.assertTrue(result['failed']) - self.assertEqual(result['msg'], "command is wait_for_job but the following are missing: id") diff --git a/test/units/modules/network/onyx/fixtures/onyx_bgp_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_bgp_show.cfg deleted file mode 100644 index b9c5c952eb..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_bgp_show.cfg +++ /dev/null @@ -1,34 +0,0 @@ -## -## Running database "initial" -## Generated at 2009/01/14 12:53:06 +0000 -## Hostname: r-ufm-sw102 -## - -## -## Running-config temporary prefix mode setting -## -no cli default prefix-modes enable - -## -## BGP configuration -## - protocol bgp - router bgp 172 vrf default - router bgp 172 vrf default router-id 1.2.3.4 force - router bgp 172 vrf default bgp fast-external-fallover - router bgp 172 vrf default maximum-paths 31 - router bgp 172 vrf default bestpath as-path multipath-relax force - router bgp 172 vrf default neighbor evpn peer-group - router bgp 172 vrf default neighbor evpn send-community extended - router bgp 172 vrf default neighbor 10.2.3.4 remote-as 173 - router bgp 172 vrf default neighbor 10.2.3.5 remote-as 322 - router bgp 172 vrf default neighbor 10.2.3.5 peer-group evpn - router bgp 172 vrf default neighbor 10.2.3.5 ebgp-multihop 255 - router bgp 172 vrf default address-family l2vpn-evpn neighbor evpn next-hop-unchanged - router bgp 172 vrf default address-family l2vpn-evpn neighbor evpn activate - router bgp 172 vrf default network 172.16.1.0 /24 - router bgp 172 vrf default address-family l2vpn-evpn auto-create -## -## Persistent prefix mode setting -## -cli default prefix-modes enable diff --git a/test/units/modules/network/onyx/fixtures/onyx_buffer_pool.cfg b/test/units/modules/network/onyx/fixtures/onyx_buffer_pool.cfg deleted file mode 100644 index 7172e8dc1a..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_buffer_pool.cfg +++ /dev/null @@ -1,15 +0,0 @@ -{ - "roce": [ - { - "Type": "lossless", - "Switch Priorities": "3", - "Max Usage": "0", - "Usage": "0", - "Memory actual": "5.9M", - "Memory [%]": "50.00" - } - ], - "Exception list": { - "message": "N/A" - } -} diff --git a/test/units/modules/network/onyx/fixtures/onyx_command_show_version.txt b/test/units/modules/network/onyx/fixtures/onyx_command_show_version.txt deleted file mode 100644 index cca075b606..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_command_show_version.txt +++ /dev/null @@ -1,19 +0,0 @@ -Product name: MLNX-OS -Product release: 3.6.5000 -Build ID: #1-dev -Build date: 2017-11-10 18:14:32 -Target arch: x86_64 -Target hw: x86_64 -Built by: jenkins@cc45f26cd083 -Version summary: X86_64 3.6.5000 2017-11-10 18:14:32 x86_64 - -Product model: x86onie -Host ID: 248A073D505C -System serial num: \"MT1632X00205\" -System UUID: 0b19d6d0-5eca-11e6-8000-7cfe90fadc40 - -Uptime: 1d 16h 31m 43.856s -CPU load averages: 0.06 / 0.12 / 0.13 -Number of CPUs: 4 -System memory: 2597 MB used / 5213 MB free / 7810 MB total -Swap: 0 MB used / 0 MB free / 0 MB total diff --git a/test/units/modules/network/onyx/fixtures/onyx_config_config.cfg b/test/units/modules/network/onyx/fixtures/onyx_config_config.cfg deleted file mode 100644 index 38062a8c74..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_config_config.cfg +++ /dev/null @@ -1,115 +0,0 @@ -## -## Running database "initial" -## Generated at 2017/11/28 17:52:08 +0000 -## Hostname: ufm-switch16 -## - -## -## Running-config temporary prefix mode setting -## -no cli default prefix-modes enable - -## -## License keys -## - license install 11223344 - -## -## MLAG protocol -## - protocol mlag - -## -## Interface Ethernet configuration -## - interface mlag-port-channel 2 - interface port-channel 1 - interface ethernet 1/7-1/8 channel-group 1 mode active - interface ethernet 1/32 mlag-channel-group 2 mode on - interface mlag-port-channel 2 switchport mode hybrid - interface mlag-port-channel 2 no shutdown - -## -## LAG configuration -## - lacp - -## -## VLAN configuration -## - vlan 101 - vlan 4094 - interface mlag-port-channel 2 switchport access vlan 101 - -## -## STP configuration -## -no spanning-tree - -## -## L3 configuration -## - ip routing vrf default - interface vlan 101 - interface vlan 4094 - interface vlan 101 ip address 10.0.0.254 255.255.255.0 - interface vlan 4094 ip address 10.10.10.1 255.255.255.0 - -## -## Other IP configuration -## -hostname ufm-switch16 - -## -## DCBX PFC configuration -## - dcb priority-flow-control enable force - interface ethernet 1/7-1/8 dcb priority-flow-control mode on force - interface port-channel 1 dcb priority-flow-control mode on force - -## -## LLDP configuration -## - lldp - -## -## MAGP configuration -## - protocol magp - interface vlan 101 magp 102 - interface vlan 101 magp 102 ip virtual-router address 10.0.0.252 - interface vlan 101 magp 102 ip virtual-router mac-address 00:00:5E:00:01:01 - -## -## MLAG configurations -## - mlag-vip neo-mlag-vip-4094 ip 192.168.1.1 /24 force -no mlag shutdown - mlag system-mac 00:00:5E:00:01:00 - interface port-channel 1 ipl 1 - interface vlan 4094 ipl 1 peer-address 10.10.10.2 - -## -## AAA remote server configuration -## -# ldap bind-password ******** -# radius-server key ******** -# tacacs-server key ******** - -## -## Network management configuration -## -# web proxy auth basic password ******** - telnet-server enable - -## -## X.509 certificates configuration -## -# -# Certificate name system-self-signed, ID 51f545df9722387056f674401f510ff56077800b -# (public-cert config omitted since private-key config is hidden) - -## -## Persistent prefix mode setting -## -cli default prefix-modes enable
\ No newline at end of file diff --git a/test/units/modules/network/onyx/fixtures/onyx_config_src.cfg b/test/units/modules/network/onyx/fixtures/onyx_config_src.cfg deleted file mode 100644 index 2fc2ada110..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_config_src.cfg +++ /dev/null @@ -1,3 +0,0 @@ -no cli default prefix-modes enable -interface mlag-port-channel 2 - diff --git a/test/units/modules/network/onyx/fixtures/onyx_facts_show_interfaces_ethernet.cfg b/test/units/modules/network/onyx/fixtures/onyx_facts_show_interfaces_ethernet.cfg deleted file mode 100644 index 03128f1e01..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_facts_show_interfaces_ethernet.cfg +++ /dev/null @@ -1,20 +0,0 @@ -[ - { - "Fec": "auto", - "Mac address": "7c:fe:90:e5:ca:3c", - "Actual speed": "100 Gbps", - "MTU": "1500 bytes(Maximum packet size 1522 bytes)", - "header": "Eth1/1", - "Admin state": "Enabled", - "Operational state": "Down" - }, - { - "Fec": "auto", - "Mac address": "7c:fe:90:e5:ca:3e", - "Actual speed": "100 Gbps", - "MTU": "1500 bytes(Maximum packet size 1522 bytes)", - "header": "Eth1/2", - "Admin state": "Enabled", - "Operational state": "Down" - } -]
\ No newline at end of file diff --git a/test/units/modules/network/onyx/fixtures/onyx_facts_show_module.cfg b/test/units/modules/network/onyx/fixtures/onyx_facts_show_module.cfg deleted file mode 100644 index a82fcf7519..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_facts_show_module.cfg +++ /dev/null @@ -1,7 +0,0 @@ -{ - "MGMT": [ - { - "Status": "ready" - } - ] -} diff --git a/test/units/modules/network/onyx/fixtures/onyx_facts_show_version.cfg b/test/units/modules/network/onyx/fixtures/onyx_facts_show_version.cfg deleted file mode 100644 index 9a486e8c4e..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_facts_show_version.cfg +++ /dev/null @@ -1,19 +0,0 @@ -{ - "Uptime": "2d 13h 40m 34.992s", - "Product model": "x86onie", - "Build date": "2017-11-10 18:14:32", - "Target arch": "x86_64", - "Target hw": "x86_64", - "Number of CPUs": "4", - "Build ID": "#1-dev", - "CPU load averages": "0.21 / 0.07 / 0.06", - "Host ID": "248A07B0141C", - "System serial num": "MT1708X07233", - "System UUID": "03d242b6-1a24-11e7-8000-248a07f55400", - "Swap": "0 MB used / 0 MB free / 0 MB total", - "Product name": "MLNX-OS", - "Built by": "jenkins@cc45f26cd083", - "System memory": "2597 MB used / 5213 MB free / 7810 MB total", - "Version summary": "X86_64 3.6.5000 2017-11-10 18:14:32 x86_64", - "Product release": "3.6.5000" -} diff --git a/test/units/modules/network/onyx/fixtures/onyx_igmp_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_igmp_show.cfg deleted file mode 100644 index 13b19d949c..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_igmp_show.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[ - { - "Report suppression interval": "5 seconds", - "IGMP snooping unregistered multicast": "flood", - "IGMP snooping operationally": "disabled", - "Mrouter timeout": "125 seconds", - "IGMP default version for new VLAN": "V3", - "header": "IGMP snooping global configuration", - "Last member query interval": "1 seconds", - "IGMP snooping globally": "disabled", - "Proxy-reporting globally": "disabled", - "Port purge timeout": "260 seconds" - } -] diff --git a/test/units/modules/network/onyx/fixtures/onyx_interfaces_rates.cfg b/test/units/modules/network/onyx/fixtures/onyx_interfaces_rates.cfg deleted file mode 100644 index 11131cc5e5..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_interfaces_rates.cfg +++ /dev/null @@ -1,10 +0,0 @@ -{ - "Eth1/1": [ - { - "ingress rate": "9000 b/s", - "egress pkts/sec": "10", - "egress rate": "10000 b/s", - "ingress pkts/sec": "10" - } - ] -}
\ No newline at end of file diff --git a/test/units/modules/network/onyx/fixtures/onyx_interfaces_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_interfaces_show.cfg deleted file mode 100644 index 982e58fdbd..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_interfaces_show.cfg +++ /dev/null @@ -1,74 +0,0 @@ -[ - { - "Fec": "auto", - "Mac address": "7c:fe:90:f0:54:fc", - "60 seconds ingress rate": "0 bits/sec, 0 bytes/sec, 0 packets/sec", - "Last clearing of \"show interface\" counters": "Never", - "Actual speed": "40 Gbps", - "MTU": "1500 bytes(Maximum packet size 1522 bytes)", - "header": "Eth1/1", - "Telemetry threshold": "Disabled\t TCs: N\\A", - "Telemetry threshold level": "N\\A", - "Flow-control": "receive off send off", - "Forwarding mode": "inherited cut-through", - "60 seconds egress rate": "0 bits/sec, 0 bytes/sec, 0 packets/sec", - "Last change in operational status": "Never", - "Boot delay time": "0 sec", - "Description": "N\\A", - "Admin state": "Enabled", - "Telemetry sampling": "Disabled\t TCs: N\\A", - "Operational state": "Down", - "Width reduction mode": "Not supported", - "Tx": { - "error packets": "0", - "packets": "0", - "bytes": "0", - "multicast packets": "0", - "unicast packets": "0", - "discard packets": "0", - "hoq discard packets": "0", - "broadcast packets": "0" - }, - "MAC learning mode": "Enabled", - "Switchport mode": "access", - "Rx": { - "error packets": "0", - "packets": "0", - "bytes": "0", - "multicast packets": "0", - "unicast packets": "0", - "discard packets": "0", - "broadcast packets": "0" - } - }, - { - "Icmp redirect": "Enabled", - "Description": "N/A", - "Mac Address": "7C:FE:90:F0:54:C1", - "Autostate": "Enabled", - "Admin state": "Enabled", - "header": "Vlan 10", - "MTU": "1500 bytes", - "DHCP client": "Disabled", - "Operational state": "Up", - "VRF": "default", - "Arp timeout": "1500 seconds", - "Counters": "Disabled" - }, - { - "Autostate": "Enabled", - "Icmp redirect": "Enabled", - "Broadcast address": "10.2.2.255", - "Description": "N/A", - "Mac Address": "7C:FE:90:F0:54:C1", - "Internet Address": "10.2.2.3/24", - "Admin state": "Enabled", - "header": "Vlan 1002", - "MTU": "1500 bytes", - "DHCP client": "Disabled", - "Operational state": "Down", - "VRF": "default", - "Arp timeout": "1500 seconds", - "Counters": "Disabled" - } -] diff --git a/test/units/modules/network/onyx/fixtures/onyx_interfaces_status.cfg b/test/units/modules/network/onyx/fixtures/onyx_interfaces_status.cfg deleted file mode 100644 index 7a3a974ad3..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_interfaces_status.cfg +++ /dev/null @@ -1,15 +0,0 @@ -{ - "Eth1/1": [ - { - "Negotiation": "No-Negotiation", - "Operational state": "Down", - "Speed": "100 Gbps" - } - ], - "Vlan 1002": [ - { - "State": "Down", - "Description": "N/A" - } - ] -}
\ No newline at end of file diff --git a/test/units/modules/network/onyx/fixtures/onyx_l2_interface_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_l2_interface_show.cfg deleted file mode 100644 index dc3704e422..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_l2_interface_show.cfg +++ /dev/null @@ -1,12 +0,0 @@ -{ - "Eth1/11": { - "Access vlan": "1", - "Allowed vlans": "", - "Mode": "access" - }, - "Eth1/10": { - "Access vlan": "1", - "Allowed vlans": "10", - "Mode": "hybrid" - } -}
\ No newline at end of file diff --git a/test/units/modules/network/onyx/fixtures/onyx_l3_interface_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_l3_interface_show.cfg deleted file mode 100644 index 6298953bf8..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_l3_interface_show.cfg +++ /dev/null @@ -1,89 +0,0 @@ -[ - { - "Broadcast address": "172.3.1.255", - "Fec": "auto", - "Tx": { - "error packets": "0", - "packets": "0", - "bytes": "0", - "multicast packets": "0", - "unicast packets": "0", - "discard packets": "0", - "hoq discard packets": "0", - "broadcast packets": "0" - }, - "Rx": { - "error packets": "0", - "packets": "0", - "bytes": "0", - "multicast packets": "0", - "unicast packets": "0", - "discard packets": "0", - "broadcast packets": "0" - }, - "header": "Eth1/5", - "Arp timeout": "1500 seconds", - "Actual speed": "40 Gbps", - "60 seconds egress rate": "0 bits/sec, 0 bytes/sec, 0 packets/sec", - "Last change in operational status": "Never", - "Boot delay time": "0 sec", - "Description": "N\\A", - "DHCP client": "Disabled", - "VRF": "default", - "Mac address": "24:8A:07:F5:54:01", - "60 seconds ingress rate": "0 bits/sec, 0 bytes/sec, 0 packets/sec", - "Last clearing of \"show interface\" counters": "Never", - "MTU": "1500 bytes(Maximum packet size 1522 bytes)", - "Telemetry threshold": "Disabled\t TCs: N\\A", - "Telemetry threshold level": "N\\A", - "Flow-control": "receive off send off", - "Forwarding mode": "inherited cut-through", - "Admin state": "Enabled", - "Telemetry sampling": "Disabled\t TCs: N\\A", - "IP Address": "172.3.12.4 /24", - "Operational state": "Down", - "Width reduction mode": "Not supported" - }, - { - "Fec": "auto", - "Mac address": "24:8a:07:f5:54:0c", - "60 seconds ingress rate": "0 bits/sec, 0 bytes/sec, 0 packets/sec", - "Last clearing of \"show interface\" counters": "Never", - "Actual speed": "40 Gbps", - "MTU": "1500 bytes(Maximum packet size 1522 bytes)", - "header": "Eth1/6", - "Telemetry threshold": "Disabled\t TCs: N\\A", - "Telemetry threshold level": "N\\A", - "Flow-control": "receive off send off", - "Forwarding mode": "inherited cut-through", - "60 seconds egress rate": "0 bits/sec, 0 bytes/sec, 0 packets/sec", - "Last change in operational status": "Never", - "Boot delay time": "0 sec", - "Description": "N\\A", - "Admin state": "Enabled", - "Telemetry sampling": "Disabled\t TCs: N\\A", - "Operational state": "Down", - "Width reduction mode": "Not supported", - "Tx": { - "error packets": "0", - "packets": "0", - "bytes": "0", - "multicast packets": "0", - "unicast packets": "0", - "discard packets": "0", - "hoq discard packets": "0", - "broadcast packets": "0" - }, - "MAC learning mode": "Enabled", - "Switchport mode": "access", - "Rx": { - "error packets": "0", - "packets": "0", - "bytes": "0", - "multicast packets": "0", - "unicast packets": "0", - "discard packets": "0", - "broadcast packets": "0" - } - } -] diff --git a/test/units/modules/network/onyx/fixtures/onyx_l3_vlan_interface_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_l3_vlan_interface_show.cfg deleted file mode 100644 index 66a5509e21..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_l3_vlan_interface_show.cfg +++ /dev/null @@ -1,18 +0,0 @@ -[ - { - "Autostate": "Enabled", - "Icmp redirect": "Enabled", - "Broadcast address": "172.3.12.255", - "Description": "N/A", - "Mac Address": "7C:FE:90:E5:CA:01", - "Internet Address": "172.3.12.4/24", - "Admin state": "Enabled", - "header": "Vlan 1002", - "MTU": "1500 bytes", - "DHCP client": "Disabled", - "Operational state": "Down", - "VRF": "default", - "Arp timeout": "1500 seconds", - "Counters": "Disabled" - } -] diff --git a/test/units/modules/network/onyx/fixtures/onyx_lldp_interface_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_lldp_interface_show.cfg deleted file mode 100644 index d3a364b985..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_lldp_interface_show.cfg +++ /dev/null @@ -1,16 +0,0 @@ -{ - "Eth1/1": [ - { - "Receive": "Enabled", - "Transmit": "Enabled", - "TLVs": "PD, SN, SD, SC, MA, PFC, AP, ETS-C, ETS-R" - } - ], - "Eth1/2": [ - { - "Receive": "Disabled", - "Transmit": "Disabled", - "TLVs": "PD, SN, SD, SC, MA, PFC, AP, ETS-C, ETS-R" - } - ] -} diff --git a/test/units/modules/network/onyx/fixtures/onyx_lldp_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_lldp_show.cfg deleted file mode 100644 index 7bb1cb0222..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_lldp_show.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[ - { - "LLDP": "enabled" - }, - { - "Supported capabilities": "B,R", - "Chassis sub type": "Mac Address", - "header": "Local global configuration", - "System Name": "ufm-switch16", - "Supported capabilities enabled": "B", - "Chassis id": "7c:fe:90:e5:ca:00", - "System Description": "Mellanox MSN2700,MLNX-OS,SWv3.6.5000-04" - } -] diff --git a/test/units/modules/network/onyx/fixtures/onyx_logging_config_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_logging_config_show.cfg deleted file mode 100644 index 235205c2d0..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_logging_config_show.cfg +++ /dev/null @@ -1,11 +0,0 @@ - -logging trap alert -logging 10.10.10.10 -logging 10.10.10.10 filter exclude ".*ERR.*" -logging 10.10.10.10 trap info -logging 10.10.10.12 -logging 10.10.10.12 port 80 -logging 10.10.10.12 trap override class sx-sdk priority emerg -logging files rotation criteria size-pct 10.000 -logging local info -logging receive diff --git a/test/units/modules/network/onyx/fixtures/onyx_logging_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_logging_show.cfg deleted file mode 100644 index 09e21b104b..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_logging_show.cfg +++ /dev/null @@ -1,35 +0,0 @@ -[ - { - "Log format": "standard", - "Log rotation size threshold": "10.000% of partition (986.46 megabytes)", - "Allow receiving of messages from remote hosts": "yes", - "Override for class debug-module": "notice", - "Local logging level": "info", - "Number of archived log files to keep": "10", - "Default remote logging level": "alert", - "Subsecond timestamp field": "disabled", - "Log rotation frequency": "weekly", - "debug": [ - "logging debug-files rotation criteria frequency daily", - "logging debug-files rotation criteria size 20", - "logging debug-files rotation max-num 20" - ] - }, - { - "Levels at which messages are logged": [ - { - "CLI commands": "notice", - "Audit messages": "notice" - } - ] - }, - { - "Remote syslog servers": [ - { - "Lines": [ - "No remote syslog servers configured" - ] - } - ] - } -]
\ No newline at end of file diff --git a/test/units/modules/network/onyx/fixtures/onyx_magp_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_magp_show.cfg deleted file mode 100644 index 7cc90b7a40..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_magp_show.cfg +++ /dev/null @@ -1,18 +0,0 @@ -[ - { - "Interface vlan": "1243", - "Admin state": "Enabled", - "Virtual IP": "10.0.0.43", - "header": "MAGP 102", - "State": "Init", - "Virtual MAC": "01:02:03:04:05:06" - }, - { - "Interface vlan": "1200", - "Admin state": "Disabled", - "Virtual IP": "0.0.0.0", - "header": "MAGP 103", - "State": "Init", - "Virtual MAC": "00:00:00:00:00:00" - } -] diff --git a/test/units/modules/network/onyx/fixtures/onyx_mlag_ipl_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_mlag_ipl_show.cfg deleted file mode 100644 index 6d1f3df577..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_mlag_ipl_show.cfg +++ /dev/null @@ -1,29 +0,0 @@ -{ - "Reload-delay": "30 sec", - "Upgrade-timeout": "60 min", - "System-mac": "00:00:5E:00:01:4E [Mismatched]", - "Admin status": "Disabled", - "MLAG Ports Status Summary": { - "Active-partial": "0", - "Inactive": "0", - "Active-full": "0" - }, - "MLAG IPLs Summary": { - "1": [ - { - "Local IP address": "10.2.2.3", - "Peer IP address": "10.2.2.2", - "Operational State": "Down", - "Vlan Interface": "1002", - "Group Port-Channel": "Po1" - } - ] - }, - "Keepalive-interval": "1 sec", - "MLAG Ports Configuration Summary": { - "Disabled": "0", - "Configured": "0", - "Enabled": "0" - }, - "Operational status": "Down" -} diff --git a/test/units/modules/network/onyx/fixtures/onyx_mlag_port_channel_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_mlag_port_channel_show.cfg deleted file mode 100644 index e883ecf38d..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_mlag_port_channel_show.cfg +++ /dev/null @@ -1,18 +0,0 @@ -{ - "MLAG Port-Channel Flags": "D-Down, U-Up, P-Partial UP, S - suspended by MLAG", - "Port Flags": { - "I": "Individual", - "P": "Up in port-channel (members)", - "S": "Suspend in port-channel (members)", - "D": "Down" - }, - "MLAG Port-Channel Summary": { - "1 Mpo33(S)": [ - { - "Local Ports (D/P/S/I)": "Eth1/8(D)", - "Peer Ports (D/P/S/I)": "N/A", - "Type": "LACP" - } - ] - } -} diff --git a/test/units/modules/network/onyx/fixtures/onyx_mlag_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_mlag_show.cfg deleted file mode 100644 index 1996a6b31b..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_mlag_show.cfg +++ /dev/null @@ -1,18 +0,0 @@ -{ - "Reload-delay": "30 sec", - "Upgrade-timeout": "60 min", - "System-mac": "00:00:5E:00:01:4E", - "Admin status": "Disabled", - "MLAG Ports Status Summary": { - "Active-partial": "0", - "Inactive": "0", - "Active-full": "0" - }, - "Keepalive-interval": "1 sec", - "MLAG Ports Configuration Summary": { - "Disabled": "0", - "Configured": "0", - "Enabled": "0" - }, - "Operational status": "Down" -} diff --git a/test/units/modules/network/onyx/fixtures/onyx_mlag_vip_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_mlag_vip_show.cfg deleted file mode 100644 index 19bee48f85..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_mlag_vip_show.cfg +++ /dev/null @@ -1,19 +0,0 @@ -{ - "r-neo-sw12": [ - { - "IP Address": "10.209.26.55", - "VIP-State": "standby" - } - ], - "r-smg-sw14": [ - { - "IP Address": "10.209.27.172", - "VIP-State": "master" - } - ], - "MLAG-VIP": { - "MLAG VIP address": "10.209.25.107/24", - "MLAG group name": "neo-mlag-vip-500", - "Active nodes": "2" - } -} diff --git a/test/units/modules/network/onyx/fixtures/onyx_ntp_servers_peers_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_ntp_servers_peers_show.cfg deleted file mode 100644 index 2f5d3c2f6b..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_ntp_servers_peers_show.cfg +++ /dev/null @@ -1,19 +0,0 @@ -[ - { - "NTP enabled": "yes", - "NTP Authentication enabled": "no" - }, - { - "NTP version": "4", - "Enabled": "yes", - "Key ID": "5", - "header": "NTP peer 1.1.1.1" - }, - { - "NTP version": "4", - "Enabled": "no", - "Trusted": "yes", - "Key ID": "99", - "header": "NTP server 2.2.2.2" - } -] diff --git a/test/units/modules/network/onyx/fixtures/onyx_ntp_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_ntp_show.cfg deleted file mode 100644 index b0b4a8dbf5..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_ntp_show.cfg +++ /dev/null @@ -1,30 +0,0 @@ -[ -[ - { - "NTP is administratively": "enabled", - "NTP Authentication administratively": "disabled" - }, - { - "Lines": [ - "Clock is unsynchronized." - ] - }, - { - "Active servers and peers": [ - { - "Lines": [ - "No NTP associations present." - ] - } - ] - } -] , -[ - { - "header": "NTP Key 22", - "Encryption Type": "sha1", - "Trusted": "no" - } -] - -]
\ No newline at end of file diff --git a/test/units/modules/network/onyx/fixtures/onyx_ospf_interfaces_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_ospf_interfaces_show.cfg deleted file mode 100644 index 7566305862..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_ospf_interfaces_show.cfg +++ /dev/null @@ -1,5 +0,0 @@ - -OSPF Process ID 2 VRF default -Total number of interface: 1 -Interface Id Area Cost State Neighbors Status -Loopback1 0.0.0.0 1 Enabled 0 Up diff --git a/test/units/modules/network/onyx/fixtures/onyx_ospf_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_ospf_show.cfg deleted file mode 100644 index 72e385684b..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_ospf_show.cfg +++ /dev/null @@ -1 +0,0 @@ -Routing Process 2 with ID 10.2.3.4 default diff --git a/test/units/modules/network/onyx/fixtures/onyx_pfc_interface_disabled.cfg b/test/units/modules/network/onyx/fixtures/onyx_pfc_interface_disabled.cfg deleted file mode 100644 index 0d51d4d5c7..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_pfc_interface_disabled.cfg +++ /dev/null @@ -1,26 +0,0 @@ -{ - "Eth1/1": [ - { - "PFC admin": "Auto", - "PFC oper": "Disabled" - } - ], - "Eth1/1/2": [ - { - "PFC admin": "Auto", - "PFC oper": "Disabled" - } - ], - "Po1": [ - { - "PFC admin": "Auto", - "PFC oper": "Disabled" - } - ], - "Mpo2": [ - { - "PFC admin": "Auto", - "PFC oper": "Disabled" - } - ] -} diff --git a/test/units/modules/network/onyx/fixtures/onyx_pfc_interface_enabled.cfg b/test/units/modules/network/onyx/fixtures/onyx_pfc_interface_enabled.cfg deleted file mode 100644 index 471edc8c65..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_pfc_interface_enabled.cfg +++ /dev/null @@ -1,26 +0,0 @@ -{ - "Eth1/1": [ - { - "PFC admin": "on", - "PFC oper": "Enabled" - } - ], - "Eth1/1/2": [ - { - "PFC admin": "on", - "PFC oper": "Enabled" - } - ], - "Po1": [ - { - "PFC admin": "on", - "PFC oper": "Enabled" - } - ], - "Mpo2": [ - { - "PFC admin": "on", - "PFC oper": "Enabled" - } - ] -} diff --git a/test/units/modules/network/onyx/fixtures/onyx_port_channel_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_port_channel_show.cfg deleted file mode 100644 index 805853f46e..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_port_channel_show.cfg +++ /dev/null @@ -1,15 +0,0 @@ -{ - "Flags": { - "I": "Individual", - "P": "Up in port-channel (members)", - "S": "Suspend in port-channel (members)", - "U": "Up", - "D": "Down" - }, - "1 Po22(D)": [ - { - "Type": "STATIC", - "Member Ports": "Eth1/7(D)" - } - ] -} diff --git a/test/units/modules/network/onyx/fixtures/onyx_protocols_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_protocols_show.cfg deleted file mode 100644 index fd4549cdf2..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_protocols_show.cfg +++ /dev/null @@ -1,27 +0,0 @@ -{ - "pim": "disabled", - "dhcp-relay": "disabled", - "igmp-snooping": "disabled", - "lacp": "disabled", - "ptp": "disabled", - "lldp": "disabled", - "isolation-group": "disabled", - "bfd": "disabled", - "openflow": "disabled", - "telemetry": "disabled", - "vrrp": "disabled", - "spanning-tree": "rst", - "mlag": "disabled", - "magp": "disabled", - "nve": "disabled", - "Ethernet": "enabled", - "IP L3": "enabled", - "ets": "enabled", - "sflow": "disabled", - "dhcp-relay(v6)": "disabled", - "dot1x": "disabled", - "bgp": "disabled", - "priority-flow-control": "disabled", - "ospf": "disabled", - "bfd": "disabled" -} diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_aaa.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_aaa.cfg deleted file mode 100644 index 40abbf2183..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_show_aaa.cfg +++ /dev/null @@ -1,16 +0,0 @@ -[ - { - "Default User": "admin", - "header": "AAA authorization", - "Fallback on server-err": "yes", - "Map Order": "remote-first" - }, - { - "header": "Authentication method(s)", - "message": "local" - }, - { - "header": "Accounting method(s)", - "message": "No accounting methods configured." - } -] diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_bfd.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_bfd.cfg deleted file mode 100644 index 2e578eb164..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_show_bfd.cfg +++ /dev/null @@ -1,14 +0,0 @@ -{ - "Lines": [ - " protocol bfd", - " ip bfd shutdown vrf default", - " ip bfd vrf 3 interval transmit-rate 55 force", - " ip bfd vrf default interval transmit-rate 55 force", - " ip bfd vrf 3 interval min-rx 50 force", - " ip bfd vrf default interval min-rx 50 force", - " ip bfd vrf 3 interval multiplier 7 force", - " ip bfd vrf default interval multiplier 7 force", - " ip route vrf 3 1.1.1.0/24 3.2.2.2 bfd", - " ip route vrf default 1.1.1.0/24 3.2.2.2 bfd" - ] -} diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_dcb_ets_interface.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_dcb_ets_interface.cfg deleted file mode 100644 index b6bbc30f28..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_show_dcb_ets_interface.cfg +++ /dev/null @@ -1,99 +0,0 @@ -[ - { - "Eth1/1": [ - { - "Multicast unaware mapping": "disabled", - "Interface Bandwidth Shape [Mbps]": "N/A" - }, - { - "Flags": [ - { - "S.Mode": "Scheduling Mode [Strict/WRR]", - "Bw.Sh": "Bandwidth Shaper", - "D": "-", - "W": "Weight", - "Bw.Gr": "Bandwidth Guaranteed" - } - ] - }, - { - "ETS per TC": [ - { - "1": [ - { - "S.Mode": "WRR", - "BW Sh.(Mbps)": "N/A", - "W(%)": "17", - "BW Gr.(Mbps)": "0", - "W": "13" - } - ], - "0": [ - { - "S.Mode": "WRR", - "BW Sh.(Mbps)": "N/A", - "W(%)": "17", - "BW Gr.(Mbps)": "0", - "W": "12" - } - ], - "3": [ - { - "S.Mode": "Strict", - "BW Sh.(Mbps)": "N/A", - "W(%)": "0", - "BW Gr.(Mbps)": "0", - "W": "0" - } - ], - "2": [ - { - "S.Mode": "Strict", - "BW Sh.(Mbps)": "N/A", - "W(%)": "0", - "BW Gr.(Mbps)": "0", - "W": "0" - } - ], - "5": [ - { - "S.Mode": "WRR", - "BW Sh.(Mbps)": "N/A", - "W(%)": "17", - "BW Gr.(Mbps)": "0", - "W": "13" - } - ], - "4": [ - { - "S.Mode": "WRR", - "BW Sh.(Mbps)": "N/A", - "W(%)": "16", - "BW Gr.(Mbps)": "0", - "W": "12" - } - ], - "7": [ - { - "S.Mode": "WRR", - "BW Sh.(Mbps)": "N/A", - "W(%)": "17", - "BW Gr.(Mbps)": "0", - "W": "13" - } - ], - "6": [ - { - "S.Mode": "WRR", - "BW Sh.(Mbps)": "N/A", - "W(%)": "16", - "BW Gr.(Mbps)": "0", - "W": "12" - } - ] - } - ] - } - ] - } -] diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_igmp_interfaces.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_igmp_interfaces.cfg deleted file mode 100644 index 22641d8b48..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_show_igmp_interfaces.cfg +++ /dev/null @@ -1,162 +0,0 @@ -{ - "Eth1/31": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/11": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/10": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/13": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/12": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/15": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/14": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/17": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/16": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/19": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/18": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/5": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/4": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/7": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/6": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/1": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/3": [ - { - "leave-mode": "Fast" - } - ], - "Eth1/2": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/9": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/8": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/32": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/24": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/25": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/26": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/27": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/20": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/21": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/22": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/23": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/30": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/28": [ - { - "leave-mode": "Normal" - } - ], - "Eth1/29": [ - { - "leave-mode": "Normal" - } - ] -}
\ No newline at end of file diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_interface_congestion_control.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_interface_congestion_control.cfg deleted file mode 100644 index e4c1207f31..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_show_interface_congestion_control.cfg +++ /dev/null @@ -1,46 +0,0 @@ -[ - { - "Interface ethernet": "1/1", - "ECN marked packets": "0" - }, - { - "header": "TC-0", - "Mode": "none" - }, - { - "header": "TC-1", - "Mode": "none" - }, - { - "Threshold mode": "relative", - "RED dropped packets": "0", - "header": "TC-2", - "Mode": "RED", - "Maximum threshold": "90%", - "Minimum threshold": "9%" - }, - { - "Threshold mode": "absolute", - "RED dropped packets": "0", - "header": "TC-3", - "Mode": "ECN", - "Maximum threshold": "1550 KB", - "Minimum threshold": "500 KB" - }, - { - "header": "TC-4", - "Mode": "none" - }, - { - "header": "TC-5", - "Mode": "none" - }, - { - "header": "TC-6", - "Mode": "none" - }, - { - "header": "TC-7", - "Mode": "none" - } -] diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_interfaces_nve.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_interfaces_nve.cfg deleted file mode 100644 index a907d168d9..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_show_interfaces_nve.cfg +++ /dev/null @@ -1,18 +0,0 @@ -[ - { - "Mlag tunnel IP": "192.10.10.1", - "Effective tunnel IP": "(not exist)", - "NVE member interfaces": "(not configured)", - "Admin state": "up", - "Source interface": "loopback 1 (ip 0.0.0.0)", - "header": "Interface NVE 1 status", - "Controller mode": "BGP", - "Global Neigh-Suppression": "Enable", - "Counters": { - "dropped NVE-encapsulated packets": "0", - "decapsulated (Rx) NVE packets": "0", - "encapsulated (Tx) NVE packets": "0", - "NVE-encapsulated packets with errors": "0" - } - } -] diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_interfaces_nve_detail.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_interfaces_nve_detail.cfg deleted file mode 100644 index e904bcc349..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_show_interfaces_nve_detail.cfg +++ /dev/null @@ -1,16 +0,0 @@ -[ - { - "10":[ - { - "Neigh Suppression":"Enable", - "VNI":"10010" - } - ], - "6":[ - { - "Neigh Suppression":"Enable", - "VNI":"10060" - } - ] - } -]
\ No newline at end of file diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_ip_igmp_snooping.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_ip_igmp_snooping.cfg deleted file mode 100644 index 975b672300..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_show_ip_igmp_snooping.cfg +++ /dev/null @@ -1,10 +0,0 @@ -[ - { - "mrouter static port list": "none", - "mrouter dynamic port list": "none", - "header": "Vlan 10 configuration parameters", - "message 1": "IGMP snooping is disabled", - "message 2": "IGMP version is V3", - "message 3": "Snooping switch is acting as Non-Querier" - } -] diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_ip_igmp_snooping_groups.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_ip_igmp_snooping_groups.cfg deleted file mode 100644 index 3d84667b2e..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_show_ip_igmp_snooping_groups.cfg +++ /dev/null @@ -1,30 +0,0 @@ -[ - { - "Snooping group information for VLAN 10 and group 224.5.5.1": [ - { - "Group flag": "St", - "Filter Mode": "EXCLUDE", - "V1/V2 Receiver Ports": "eth1/1, eth1/2", - "Exclude sources": "None" - }, - { - "V3 Receiver Ports": [ - { - "Exclude sources": [ - "None", - "None" - ], - "Include sources": [ - "1.1.1.1, 1.1.1.2", - "1.1.1.3" - ], - "Port Number": [ - "eth1/1", - "eth1/2" - ] - } - ] - } - ] - } -]
\ No newline at end of file diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_ip_igmp_snooping_querier.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_ip_igmp_snooping_querier.cfg deleted file mode 100644 index b64c260d3b..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_show_ip_igmp_snooping_querier.cfg +++ /dev/null @@ -1,20 +0,0 @@ -[ - { - "Snooping querier information for VLAN 10": [ - { - "Lines": [ - "IGMP Querier Not Present" - ] - }, - { - "Response interval": "100", - "Elected querier IP address": "0.0.0.0", - "Group membership interval": "1", - "Robustness": "2", - "Configured querier IP address": "-", - "Query interval": "125", - "Version": "3" - } - ] - } -] diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_ntp_configured.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_ntp_configured.cfg deleted file mode 100644 index 4fa74b30eb..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_show_ntp_configured.cfg +++ /dev/null @@ -1,8 +0,0 @@ -[ - { - "message 2": "No NTP servers configured.", - "message 1": "No NTP peers configured.", - "NTP enabled": "no", - "NTP Authentication enabled": "no" - } -] diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_ptp_clock.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_ptp_clock.cfg deleted file mode 100644 index 93092b4e61..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_show_ptp_clock.cfg +++ /dev/null @@ -1,7 +0,0 @@ -{ - "Priority1": "128", - "Number of PTP ports": "0", - "Domain": "127", - "Priority2": "128", - "Local clock time": "04:50:24 Etc/UTC 2018/09/04" -} diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_ptp_interface.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_ptp_interface.cfg deleted file mode 100644 index 389612e0ca..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_show_ptp_interface.cfg +++ /dev/null @@ -1,15 +0,0 @@ -[ - { - "Transport protocol": "UDP IPv4", - "PTP interface state": "NONE", - "Forced Master": "no", - "Port Clock identity": "N/A", - "Announce interval(log mean)": "-2", - "PTP Port number": "0", - "header": "Interface name: Eth1/1", - "Delay Mechanism": "End to End", - "Sync interval(log mean)": "-3", - "Announce receipt time out": "3", - "Delay request interval(log mean)": "0" - } -] diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_snmp_hosts.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_snmp_hosts.cfg deleted file mode 100644 index 4a1312cc26..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_show_snmp_hosts.cfg +++ /dev/null @@ -1,38 +0,0 @@ -[ - { - "Default notification port": "162", - "Default notification community": "public", - "Notifications enabled": "yes" - }, - { - "Notification sinks": [ - { - "1.1.1.1": [ - { - "Enabled": "yes", - "Port": "3", - "Notification type": "SNMP v3 inform", - "Remote engine ID": "" - }, - { - "Username": "sara", - "Authentication password": "(set)", - "Privacy password": "(set)", - "Privacy type": "3des", - "Authentication type": "md5" - } - ] - }, - { - "2.2.2.2": [ - { - "Community": "public (default)", - "Enabled": "yes", - "Port": "5", - "Notification type": "SNMP v2c trap" - } - ] - } - ] - } -] diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_snmp_users.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_snmp_users.cfg deleted file mode 100644 index 6c957ff0e5..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_show_snmp_users.cfg +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "User name sara": [ - { - "Privacy password": "(NOT SET; user disabled)", - "Enabled overall": "yes", - "Authentication password": "(NOT SET; user disabled)", - "Authentication type": "sha", - "Require privacy": "no", - "Privacy type": "aes-128" - }, - { - "SET access": [ - { - "Capability level": "admin", - "Enabled": "yes" - } - ] - } - ] - } -] diff --git a/test/units/modules/network/onyx/fixtures/onyx_snmp_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_snmp_show.cfg deleted file mode 100644 index c3a1621538..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_snmp_show.cfg +++ /dev/null @@ -1,52 +0,0 @@ -[ -[ - { - "SNMP port": "161", - "System contact": "sara", - "System location": "Jordan", - "SNMP enabled": "yes" - }, - { - "Read-only communities": [ - { - "Lines": [ - "community_1", - "public" - ] - } - ] - }, - { - "Read-write communities": [ - { - "Lines": [ - "community_2" - ] - } - ] - }, - { - "Interface listen enabled": "yes" - }, - { - "Listen Interfaces": [ - { - "Lines": [ - "No Listen Interfaces." - ] - } - ] - } -], -{ - "Lines": [ - " snmp-server community community_1 ro", - " snmp-server community community_2 rw", - " snmp-server contact sara", - " snmp-server location Jordan", - " snmp-server notify port 1", - " snmp-server notify community community_1" - ] -} - -]
\ No newline at end of file diff --git a/test/units/modules/network/onyx/fixtures/onyx_username_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_username_show.cfg deleted file mode 100644 index d5de67bfc5..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_username_show.cfg +++ /dev/null @@ -1,51 +0,0 @@ -{ - "xmladmin": [ - { - "CAPABILITY": "admin", - "ACCOUNT STATUS": "Password set (SHA512)", - "FULL NAME": "XML Admin User" - } - ], - "monitor": [ - { - "CAPABILITY": "monitor", - "ACCOUNT STATUS": "Password set (SHA512)", - "FULL NAME": "System Monitor" - } - ], - "admin": [ - { - "CAPABILITY": "admin", - "ACCOUNT STATUS": "No password required for login", - "FULL NAME": "System Administrator" - } - ], - "anass": [ - { - "CAPABILITY": "admin", - "ACCOUNT STATUS": "Password set (SHA512)", - "FULL NAME": "" - } - ], - "root": [ - { - "CAPABILITY": "admin", - "ACCOUNT STATUS": "No password required for login", - "FULL NAME": "Root User" - } - ], - "anassh": [ - { - "CAPABILITY": "admin", - "ACCOUNT STATUS": "Account disabled", - "FULL NAME": "" - } - ], - "xmluser": [ - { - "CAPABILITY": "monitor", - "ACCOUNT STATUS": "Password set (SHA512)", - "FULL NAME": "XML Monitor User" - } - ] -} diff --git a/test/units/modules/network/onyx/fixtures/onyx_vlan_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_vlan_show.cfg deleted file mode 100644 index d1ae46bf48..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_vlan_show.cfg +++ /dev/null @@ -1,14 +0,0 @@ -{ - "1": { - "Name": "default", - "Ports": "Eth1/1, Eth1/2, Eth1/3, Eth1/4, Eth1/5,\nEth1/6, Eth1/7, Eth1/8, Eth1/9, Eth1/10,\nEth1/11, Eth1/12, Eth1/13, Eth1/14, Eth1/15,\nEth1/16" - }, - "10": { - "Name": "test 10", - "Ports": "" - }, - "20": { - "Name": "test 20", - "Ports": "" - } -} diff --git a/test/units/modules/network/onyx/fixtures/onyx_wjh_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_wjh_show.cfg deleted file mode 100644 index d50f497607..0000000000 --- a/test/units/modules/network/onyx/fixtures/onyx_wjh_show.cfg +++ /dev/null @@ -1,3 +0,0 @@ - -no what-just-happened auto-export forwarding enable -no what-just-happened forwarding enable diff --git a/test/units/modules/network/onyx/fixtures/show_qos_interface_ethernet.cfg b/test/units/modules/network/onyx/fixtures/show_qos_interface_ethernet.cfg deleted file mode 100644 index cf2bba8f20..0000000000 --- a/test/units/modules/network/onyx/fixtures/show_qos_interface_ethernet.cfg +++ /dev/null @@ -1,134 +0,0 @@ -[ - { - "Eth1/1": [ - { - "PCP,DEI rewrite": "enabled", - "Default switch-priority": "0", - "IP PCP;DEI rewrite": "enable", - "Default DEI": "0", - "Default PCP": "0", - "Trust mode": "both", - "DSCP rewrite": "disabled" - }, - { - "PCP(DEI); DSCP to switch-priority mapping": [ - { - "2(0) 2(1)": [ - { - "switch-priority": "2", - "DSCP": "16 17 18 19 20 21 22 23" - } - ], - "3(0) 3(1)": [ - { - "switch-priority": "3", - "DSCP": "24 25 26 27 28 29 30 31" - } - ], - "5(0) 5(1)": [ - { - "switch-priority": "5", - "DSCP": "40 41 42 43 44 45 46 47" - } - ], - "0(0) 0(1)": [ - { - "switch-priority": "0", - "DSCP": "0 1 2 3 4 5 6 7" - } - ], - "7(0) 7(1)": [ - { - "switch-priority": "7", - "DSCP": "56 57 58 59 60 61 62 63" - } - ], - "4(0) 4(1)": [ - { - "switch-priority": "4", - "DSCP": "32 33 34 35 36 37 38 39" - } - ], - "6(0) 6(1)": [ - { - "switch-priority": "6", - "DSCP": "48 49 50 51 52 53 54 55" - } - ], - "1(0) 1(1)": [ - { - "switch-priority": "1", - "DSCP": "8 9 10 11 12 13 14 15" - } - ] - } - ] - }, - { - "PCP(DEI); DSCP rewrite mapping (switch-priority to PCP(DEI); DSCP; traffic-class)": [ - { - "Egress Interface": "Eth1/1" - }, - { - "1": [ - { - "PCP(DEI)": "1(0)", - "TC": "1", - "DSCP": "8" - } - ], - "0": [ - { - "PCP(DEI)": "0(0)", - "TC": "0", - "DSCP": "0" - } - ], - "3": [ - { - "PCP(DEI)": "3(0)", - "TC": "3", - "DSCP": "24" - } - ], - "2": [ - { - "PCP(DEI)": "2(0)", - "TC": "2", - "DSCP": "16" - } - ], - "5": [ - { - "PCP(DEI)": "5(0)", - "TC": "5", - "DSCP": "40" - } - ], - "4": [ - { - "PCP(DEI)": "4(0)", - "TC": "4", - "DSCP": "32" - } - ], - "7": [ - { - "PCP(DEI)": "7(0)", - "TC": "7", - "DSCP": "56" - } - ], - "6": [ - { - "PCP(DEI)": "6(0)", - "TC": "6", - "DSCP": "48" - } - ] - } - ] - } - ] - } -] diff --git a/test/units/modules/network/onyx/onyx_module.py b/test/units/modules/network/onyx/onyx_module.py deleted file mode 100644 index cee5e0c683..0000000000 --- a/test/units/modules/network/onyx/onyx_module.py +++ /dev/null @@ -1,91 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json -import os - -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(name): - path = os.path.join(fixture_path, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as f: - data = f.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class TestOnyxModule(ModuleTestCase): - - def execute_module(self, failed=False, changed=False, commands=None, is_updates=False, sort=True, transport='cli'): - - self.load_fixtures(commands, transport=transport) - - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - if commands is not None: - if is_updates: - commands_res = result.get('updates') - else: - commands_res = result.get('commands') - if sort: - self.assertEqual(sorted(commands), sorted(commands_res), commands_res) - else: - self.assertEqual(commands, commands_res, commands_res) - - return result - - def failed(self): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def changed(self, changed=False): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertEqual(result['changed'], changed, result) - return result - - def load_fixtures(self, commands=None, transport='cli'): - pass diff --git a/test/units/modules/network/onyx/test_onyx_aaa.py b/test/units/modules/network/onyx/test_onyx_aaa.py deleted file mode 100644 index fa27662083..0000000000 --- a/test/units/modules/network/onyx/test_onyx_aaa.py +++ /dev/null @@ -1,74 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_aaa -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxAAAModule(TestOnyxModule): - - module = onyx_aaa - - def setUp(self): - self.enabled = False - super(TestOnyxAAAModule, self).setUp() - self.mock_get_config = patch.object( - onyx_aaa.OnyxAAAModule, "_show_aaa_config") - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestOnyxAAAModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - config_file = 'onyx_show_aaa.cfg' - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - - def test_aaa_accounting_no_change(self): - set_module_args(dict(tacacs_accounting_enabled=False)) - self.execute_module(changed=False) - - def test_aaa_accounting_with_change(self): - set_module_args(dict(tacacs_accounting_enabled=True)) - commands = ['aaa accounting changes default stop-only tacacs+'] - self.execute_module(changed=True, commands=commands) - - def test_aaa_auth_default_user_no_change(self): - set_module_args(dict(auth_default_user='admin')) - self.execute_module(changed=False) - - def test_aaa_auth_default_user_with_change(self): - set_module_args(dict(auth_default_user='monitor')) - commands = ['aaa authorization map default-user monitor'] - self.execute_module(changed=True, commands=commands) - - def test_aaa_auth_order_no_change(self): - set_module_args(dict(auth_order='remote-first')) - self.execute_module(changed=False) - - def test_aaa_auth_order_with_change(self): - set_module_args(dict(auth_order='local-only')) - commands = ['aaa authorization map order local-only'] - self.execute_module(changed=True, commands=commands) - - def test_aaa_fallback_no_change(self): - set_module_args(dict(auth_fallback_enabled=True)) - self.execute_module(changed=False) - - def test_aaa_fallback_with_change(self): - set_module_args(dict(auth_fallback_enabled=False)) - commands = ['no aaa authorization map fallback server-err'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_bfd.py b/test/units/modules/network/onyx/test_onyx_bfd.py deleted file mode 100644 index ca53dc6cca..0000000000 --- a/test/units/modules/network/onyx/test_onyx_bfd.py +++ /dev/null @@ -1,114 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_bfd -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxBFDModule(TestOnyxModule): - - module = onyx_bfd - - def setUp(self): - self.enabled = False - super(TestOnyxBFDModule, self).setUp() - self.mock_get_config = patch.object( - onyx_bfd.OnyxBFDModule, "_show_bfd_config") - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestOnyxBFDModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - config_file = 'onyx_show_bfd.cfg' - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - - def test_bfd_shutdown_no_change(self): - set_module_args(dict(shutdown=True)) - self.execute_module(changed=False) - - def test_bfd_shutdown_with_change(self): - set_module_args(dict(shutdown=False)) - commands = ['no ip bfd shutdown'] - self.execute_module(changed=True, commands=commands) - - def test_vrf_bfd_shutdown_no_change(self): - set_module_args(dict(shutdown=False, - vrf='3')) - self.execute_module(changed=False) - - def test_vrf_bfd_shutdown_with_change(self): - set_module_args(dict(shutdown=True, - vrf='3')) - commands = ['ip bfd shutdown vrf 3'] - self.execute_module(changed=True, commands=commands) - - def test_bfd_interval_no_change(self): - set_module_args(dict(interval_min_rx=50, - interval_multiplier=7, - interval_transmit_rate=55)) - self.execute_module(changed=False) - - def test_bfd_interval_with_change(self): - set_module_args(dict(interval_min_rx=55, - interval_multiplier=7, - interval_transmit_rate=100)) - commands = ['ip bfd interval min-rx 55 multiplier 7 transmit-rate 100 force'] - self.execute_module(changed=True, commands=commands) - - def test_vrf_bfd_interval_no_change(self): - set_module_args(dict(interval_min_rx=50, - interval_multiplier=7, - interval_transmit_rate=55, - vrf='3')) - self.execute_module(changed=False) - - def test_vrf_bfd_interval_with_change(self): - set_module_args(dict(interval_min_rx=55, - interval_multiplier=7, - interval_transmit_rate=100, - vrf='3')) - commands = ['ip bfd vrf 3 interval min-rx 55 multiplier 7 transmit-rate 100 force'] - self.execute_module(changed=True, commands=commands) - - def test_bfd_iproute_no_change(self): - set_module_args(dict(iproute_network_prefix='1.1.1.0', - iproute_mask_length=24, - iproute_next_hop='3.2.2.2')) - self.execute_module(changed=False) - - def test_bfd_iproute_with_change(self): - set_module_args(dict(iproute_network_prefix='1.1.1.0', - iproute_mask_length=24, - iproute_next_hop='3.2.2.3')) - commands = ['ip route 1.1.1.0 /24 3.2.2.3 bfd'] - self.execute_module(changed=True, commands=commands) - - def test_vrf_bfd_iproute_no_change(self): - set_module_args(dict(iproute_network_prefix='1.1.1.0', - iproute_mask_length=24, - iproute_next_hop='3.2.2.2', - vrf='3')) - self.execute_module(changed=False) - - def test_vrf_bfd_iproute_with_change(self): - set_module_args(dict(iproute_network_prefix='1.1.1.0', - iproute_mask_length=24, - iproute_next_hop='3.2.2.3', - vrf='3')) - commands = ['ip route vrf 3 1.1.1.0 /24 3.2.2.3 bfd'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_bgp.py b/test/units/modules/network/onyx/test_onyx_bgp.py deleted file mode 100644 index 05d10f3353..0000000000 --- a/test/units/modules/network/onyx/test_onyx_bgp.py +++ /dev/null @@ -1,111 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_bgp -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxBgpModule(TestOnyxModule): - - module = onyx_bgp - - def setUp(self): - super(TestOnyxBgpModule, self).setUp() - self.mock_get_config = patch.object( - onyx_bgp.OnyxBgpModule, "_get_bgp_summary") - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestOnyxBgpModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - config_file = 'onyx_bgp_show.cfg' - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - - def test_bgp_no_change(self): - neighbor = dict(remote_as=322, neighbor='10.2.3.5', multihop=255) - set_module_args(dict(as_number=172, router_id='1.2.3.4', - neighbors=[neighbor], - networks=['172.16.1.0/24'], - evpn=True, fast_external_fallover=True, - max_paths=31, ecmp_bestpath=True, - )) - self.execute_module(changed=False) - - def test_bgp_remove(self): - set_module_args(dict(as_number=172, state='absent')) - commands = ['no router bgp 172'] - self.execute_module(changed=True, commands=commands) - - def test_bgp_with_vrf_changed(self): - set_module_args(dict(as_number=173, vrf='new_vrf')) - commands = ['no router bgp 172 vrf default', 'router bgp 173 vrf new_vrf', 'exit'] - self.execute_module(changed=True, commands=commands) - - def test_bgp_change(self): - neighbor = dict(remote_as=173, neighbor='10.2.3.4') - set_module_args(dict(as_number=174, router_id='1.2.3.4', - neighbors=[neighbor], - evpn=False, fast_external_fallover=False, - max_paths=32, ecmp_bestpath=False, - )) - commands = ['no router bgp 172 vrf default', 'router bgp 174 vrf default', 'exit', - 'router bgp 174 vrf default router-id 1.2.3.4 force', - 'router bgp 174 vrf default neighbor 10.2.3.4 remote-as 173', - 'no router bgp 174 vrf default neighbor evpn peer-group', - 'no router bgp 174 vrf default address-family l2vpn-evpn auto-create', - 'router bgp 174 vrf default no bgp fast-external-fallover', - 'router bgp 174 vrf default maximum-paths 32', - 'router bgp 174 vrf default no bestpath as-path multipath-relax force'] - self.execute_module(changed=True, commands=commands) - - def test_bgp_add_neighbor(self): - neighbors = [dict(remote_as=173, neighbor='10.2.3.4'), - dict(remote_as=175, neighbor='10.2.3.5'), - dict(remote_as=175, neighbor='10.2.3.6', multihop=250)] - set_module_args(dict(as_number=172, router_id='1.2.3.4', - neighbors=neighbors, - networks=['172.16.1.0/24'], - evpn=True)) - commands = ['router bgp 172 vrf default neighbor 10.2.3.5 remote-as 175', - 'router bgp 172 vrf default neighbor 10.2.3.6 remote-as 175', - 'router bgp 172 vrf default neighbor 10.2.3.6 ebgp-multihop 250', - 'router bgp 172 vrf default neighbor 10.2.3.6 peer-group evpn', - 'router bgp 172 vrf default neighbor 10.2.3.4 peer-group evpn'] - self.execute_module(changed=True, commands=commands) - - def test_bgp_del_neighbor(self): - set_module_args(dict(as_number=172, - networks=['172.16.1.0/24'], - purge=True)) - commands = ['router bgp 172 vrf default no neighbor 10.2.3.4 remote-as 173', - 'router bgp 172 vrf default no neighbor 10.2.3.5 remote-as 322'] - self.execute_module(changed=True, commands=commands) - - def test_bgp_add_network(self): - neighbors = [dict(remote_as=173, neighbor='10.2.3.4')] - set_module_args(dict(as_number=172, router_id='1.2.3.4', - neighbors=neighbors, - networks=['172.16.1.0/24', '172.16.2.0/24'])) - commands = ['router bgp 172 vrf default network 172.16.2.0 /24'] - self.execute_module(changed=True, commands=commands) - - def test_bgp_del_network(self): - neighbors = [dict(remote_as=173, neighbor='10.2.3.4')] - set_module_args(dict(as_number=172, neighbors=neighbors)) - commands = ['router bgp 172 no network 172.16.1.0 /24'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_buffer_pool.py b/test/units/modules/network/onyx/test_onyx_buffer_pool.py deleted file mode 100644 index 8d55c625c1..0000000000 --- a/test/units/modules/network/onyx/test_onyx_buffer_pool.py +++ /dev/null @@ -1,78 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_buffer_pool -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxBufferPoolModule(TestOnyxModule): - - module = onyx_buffer_pool - buffer_pool_configured = False - - def setUp(self): - super(TestOnyxBufferPoolModule, self).setUp() - self.mock_get_buffer_pool_config = patch.object( - onyx_buffer_pool.OnyxBufferPoolModule, "_show_traffic_pool") - self.get_buffer_pool_config = self.mock_get_buffer_pool_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestOnyxBufferPoolModule, self).tearDown() - self.mock_get_buffer_pool_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - buffer_pool_config_file = 'onyx_buffer_pool.cfg' - self.get_buffer_pool_config.return_value = None - - if self.buffer_pool_configured is True: - buffer_pool_data = load_fixture(buffer_pool_config_file) - self.get_buffer_pool_config.return_value = buffer_pool_data - - self.load_config.return_value = None - - def test_buffer_pool_no_change(self): - self.buffer_pool_configured = True - set_module_args(dict(name="roce", pool_type="lossless", - memory_percent=50.0, switch_priority=3)) - self.execute_module(changed=False) - - def test_buffer_pool_with_change(self): - set_module_args(dict(name="roce", pool_type="lossless", - memory_percent=50.0, switch_priority=3)) - commands = ["traffic pool roce type lossless", - "traffic pool roce memory percent 50.0", - "traffic pool roce map switch-priority 3" - ] - self.execute_module(changed=True, commands=commands) - - def test_memory_percent_with_change(self): - self.buffer_pool_configured = True - set_module_args(dict(name="roce", pool_type="lossless", - memory_percent=60.0, switch_priority=3)) - commands = ["traffic pool roce memory percent 60.0"] - self.execute_module(changed=True, commands=commands) - - def test_switch_priority_with_change(self): - self.buffer_pool_configured = True - set_module_args(dict(name="roce", pool_type="lossless", - memory_percent=50.0, switch_priority=5)) - commands = ["traffic pool roce map switch-priority 5"] - self.execute_module(changed=True, commands=commands) - - def test_pool_type_with_change(self): - self.buffer_pool_configured = True - set_module_args(dict(name="roce", memory_percent=50.0, switch_priority=3)) - commands = ["traffic pool roce type lossy"] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_command.py b/test/units/modules/network/onyx/test_onyx_command.py deleted file mode 100644 index f7825cc528..0000000000 --- a/test/units/modules/network/onyx/test_onyx_command.py +++ /dev/null @@ -1,114 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_command -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxCommandModule(TestOnyxModule): - - module = onyx_command - - def setUp(self): - super(TestOnyxCommandModule, self).setUp() - self.mock_run_commands = patch( - 'ansible.modules.network.onyx.onyx_command.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestOnyxCommandModule, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None, transport='cli'): - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for item in commands: - try: - obj = json.loads(item['command']) - command = obj['command'] - except ValueError: - command = item['command'] - filename = str(command).replace(' ', '_') - filename = 'onyx_command_%s.txt' % filename - output.append(load_fixture(filename)) - return output - - self.run_commands.side_effect = load_from_file - - def test_onyx_command_simple(self): - set_module_args(dict(commands=['show version'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 1) - self.assertTrue(result['stdout'][0].startswith('Product name')) - - def test_onyx_command_multiple(self): - set_module_args(dict(commands=['show version', 'show version'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 2) - self.assertTrue(result['stdout'][0].startswith('Product name')) - - def test_onyx_command_wait_for(self): - wait_for = 'result[0] contains "MLNX"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module() - - def test_onyx_command_wait_for_fails(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 10) - - def test_onyx_command_retries(self): - wait_for = 'result[0] contains "test string"' - set_module_args( - dict(commands=['show version'], wait_for=wait_for, retries=2)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 2) - - def test_onyx_command_match_any(self): - wait_for = ['result[0] contains "MLNX"', - 'result[0] contains "test string"'] - set_module_args(dict( - commands=['show version'], - wait_for=wait_for, - match='any')) - self.execute_module() - - def test_onyx_command_match_all(self): - wait_for = ['result[0] contains "MLNX"', - 'result[0] contains "Version summary"'] - set_module_args( - dict(commands=['show version'], wait_for=wait_for, match='all')) - self.execute_module() - - def test_onyx_command_match_all_failure(self): - wait_for = ['result[0] contains "MLNX"', - 'result[0] contains "test string"'] - commands = ['show version', 'show version'] - set_module_args( - dict(commands=commands, wait_for=wait_for, match='all')) - self.execute_module(failed=True) diff --git a/test/units/modules/network/onyx/test_onyx_config.py b/test/units/modules/network/onyx/test_onyx_config.py deleted file mode 100644 index f645034e5c..0000000000 --- a/test/units/modules/network/onyx/test_onyx_config.py +++ /dev/null @@ -1,113 +0,0 @@ -# -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_config -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxConfigModule(TestOnyxModule): - - module = onyx_config - - def setUp(self): - super(TestOnyxConfigModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.onyx.onyx_config.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch('ansible.modules.network.onyx.onyx_config.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_run_commands = patch('ansible.modules.network.onyx.onyx_config.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestOnyxConfigModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None, transport='cli'): - config_file = 'onyx_config_config.cfg' - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - - def test_onyx_config_unchanged(self): - src = load_fixture('onyx_config_config.cfg') - set_module_args(dict(src=src)) - self.execute_module() - - def test_onyx_config_src(self): - src = load_fixture('onyx_config_src.cfg') - set_module_args(dict(src=src)) - commands = [ - 'interface mlag-port-channel 2'] - self.execute_module(changed=True, commands=commands, is_updates=True) - - def test_onyx_config_backup(self): - set_module_args(dict(backup=True)) - result = self.execute_module() - self.assertIn('__backup__', result) - - def test_onyx_config_save(self): - set_module_args(dict(lines=['hostname foo'], save='yes')) - self.execute_module(changed=True) - self.assertEqual(self.run_commands.call_count, 0) - self.assertEqual(self.get_config.call_count, 1) - self.assertEqual(self.load_config.call_count, 1) - args = self.load_config.call_args[0][1] - self.assertIn('configuration write', args) - - def test_onyx_config_lines_wo_parents(self): - set_module_args(dict(lines=['hostname foo'])) - commands = ['hostname foo'] - self.execute_module(changed=True, commands=commands, is_updates=True) - - def test_onyx_config_before(self): - set_module_args(dict(lines=['hostname foo'], before=['test1', 'test2'])) - commands = ['test1', 'test2', 'hostname foo'] - self.execute_module(changed=True, commands=commands, sort=False, is_updates=True) - - def test_onyx_config_after(self): - set_module_args(dict(lines=['hostname foo'], after=['test1', 'test2'])) - commands = ['hostname foo', 'test1', 'test2'] - self.execute_module(changed=True, commands=commands, sort=False, is_updates=True) - - def test_onyx_config_before_after(self): - set_module_args(dict(lines=['hostname foo'], - before=['test1', 'test2'], - after=['test3', 'test4'])) - commands = ['test1', 'test2', 'hostname foo', 'test3', 'test4'] - self.execute_module(changed=True, commands=commands, sort=False, is_updates=True) - - def test_onyx_config_config(self): - config = 'hostname localhost' - set_module_args(dict(lines=['hostname router'], config=config)) - commands = ['hostname router'] - self.execute_module(changed=True, commands=commands, is_updates=True) - - def test_onyx_config_match_none(self): - lines = ['hostname router'] - set_module_args(dict(lines=lines, match='none')) - self.execute_module(changed=True, commands=lines, is_updates=True) diff --git a/test/units/modules/network/onyx/test_onyx_facts.py b/test/units/modules/network/onyx/test_onyx_facts.py deleted file mode 100644 index 4195e290e0..0000000000 --- a/test/units/modules/network/onyx/test_onyx_facts.py +++ /dev/null @@ -1,71 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture -from ansible.modules.network.onyx import onyx_facts - - -class TestOnyxFacts(TestOnyxModule): - - module = onyx_facts - - def setUp(self): - super(TestOnyxFacts, self).setUp() - - self.mock_run_command = patch.object( - onyx_facts.FactsBase, "_show_cmd") - self.run_command = self.mock_run_command.start() - - def tearDown(self): - super(TestOnyxFacts, self).tearDown() - - self.mock_run_command.stop() - - def load_fixtures(self, commands=None, transport=None): - - def load_from_file(*args, **kwargs): - command = args[0] - filename = "onyx_facts_%s.cfg" % command - filename = filename.replace(' ', '_') - filename = filename.replace('/', '7') - output = load_fixture(filename) - return output - - self.run_command.side_effect = load_from_file - - def test_onyx_facts_version(self): - set_module_args(dict(gather_subset='version')) - result = self.execute_module() - facts = result.get('ansible_facts') - self.assertEqual(len(facts), 2) - version = facts['ansible_net_version'] - self.assertEqual(version['Product name'], 'MLNX-OS') - - def test_onyx_facts_modules(self): - set_module_args(dict(gather_subset='modules')) - result = self.execute_module() - facts = result.get('ansible_facts') - self.assertEqual(len(facts), 2) - modules = facts['ansible_net_modules'] - self.assertIn("MGMT", modules) - - def test_onyx_facts_interfaces(self): - set_module_args(dict(gather_subset='interfaces')) - result = self.execute_module() - facts = result.get('ansible_facts') - self.assertEqual(len(facts), 2) - interfaces = facts['ansible_net_interfaces'] - self.assertEqual(len(interfaces), 2) - - def test_onyx_facts_all(self): - set_module_args(dict(gather_subset='all')) - result = self.execute_module() - facts = result.get('ansible_facts') - self.assertEqual(len(facts), 4) diff --git a/test/units/modules/network/onyx/test_onyx_igmp.py b/test/units/modules/network/onyx/test_onyx_igmp.py deleted file mode 100644 index 8172eadb18..0000000000 --- a/test/units/modules/network/onyx/test_onyx_igmp.py +++ /dev/null @@ -1,127 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_igmp -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxIgmpModule(TestOnyxModule): - - module = onyx_igmp - enabled = False - - def setUp(self): - self.enabled = False - super(TestOnyxIgmpModule, self).setUp() - self.mock_get_config = patch.object( - onyx_igmp.OnyxIgmpModule, "_show_igmp") - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestOnyxIgmpModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - config_file = 'onyx_igmp_show.cfg' - data = load_fixture(config_file) - if self.enabled: - data[0]['IGMP snooping globally'] = 'enabled' - self.get_config.return_value = data - self.load_config.return_value = None - - def test_igmp_no_change(self): - set_module_args(dict(state='disabled')) - self.execute_module(changed=False) - - def test_igmp_enable(self): - set_module_args(dict(state='enabled')) - commands = ['ip igmp snooping'] - self.execute_module(changed=True, commands=commands) - - def test_igmp_last_member_query_interval(self): - set_module_args(dict(state='enabled', - last_member_query_interval=10)) - commands = ['ip igmp snooping', - 'ip igmp snooping last-member-query-interval 10'] - self.execute_module(changed=True, commands=commands) - - def test_igmp_mrouter_timeout(self): - set_module_args(dict(state='enabled', - mrouter_timeout=100)) - commands = ['ip igmp snooping', - 'ip igmp snooping mrouter-timeout 100'] - self.execute_module(changed=True, commands=commands) - - def test_igmp_port_purge_timeout(self): - set_module_args(dict(state='enabled', - port_purge_timeout=150)) - commands = ['ip igmp snooping', - 'ip igmp snooping port-purge-timeout 150'] - self.execute_module(changed=True, commands=commands) - - def test_igmp_report_suppression_interval(self): - set_module_args(dict(state='enabled', - report_suppression_interval=10)) - commands = ['ip igmp snooping', - 'ip igmp snooping report-suppression-interval 10'] - self.execute_module(changed=True, commands=commands) - - def test_igmp_proxy_reporting_disabled(self): - set_module_args(dict(state='enabled', - proxy_reporting='disabled')) - commands = ['ip igmp snooping'] - self.execute_module(changed=True, commands=commands) - - def test_igmp_proxy_reporting_enabled(self): - set_module_args(dict(state='enabled', - proxy_reporting='enabled')) - commands = ['ip igmp snooping', - 'ip igmp snooping proxy reporting'] - self.execute_module(changed=True, commands=commands) - - def test_igmp_unregistered_multicast_flood(self): - set_module_args(dict(state='enabled', - unregistered_multicast='flood')) - commands = ['ip igmp snooping'] - self.execute_module(changed=True, commands=commands) - - def test_igmp_unregistered_multicast_forward(self): - set_module_args( - dict(state='enabled', - unregistered_multicast='forward-to-mrouter-ports')) - commands = [ - 'ip igmp snooping', - 'ip igmp snooping unregistered multicast forward-to-mrouter-ports' - ] - self.execute_module(changed=True, commands=commands) - - def test_igmp_version_v2(self): - set_module_args(dict(state='enabled', - default_version='V2')) - commands = ['ip igmp snooping', - 'ip igmp snooping version 2'] - self.execute_module(changed=True, commands=commands) - - def test_igmp_version_v3(self): - set_module_args(dict(state='enabled', - default_version='V3')) - commands = ['ip igmp snooping'] - self.execute_module(changed=True, commands=commands) - - def test_igmp_disable(self): - self.enabled = True - set_module_args(dict(state='disabled')) - commands = ['no ip igmp snooping'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_igmp_interface.py b/test/units/modules/network/onyx/test_onyx_igmp_interface.py deleted file mode 100644 index 35f84045b5..0000000000 --- a/test/units/modules/network/onyx/test_onyx_igmp_interface.py +++ /dev/null @@ -1,69 +0,0 @@ -# -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_igmp_interface -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxIgmpInterfaceModule(TestOnyxModule): - - module = onyx_igmp_interface - - def setUp(self): - super(TestOnyxIgmpInterfaceModule, self).setUp() - - self.mock_get_config = patch.object(onyx_igmp_interface.OnyxIgmpInterfaceModule, "_show_igmp_interfaces") - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestOnyxIgmpInterfaceModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - config_file = 'onyx_show_igmp_interfaces.cfg' - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - - def test_igmp_interface_enabled_no_change(self): - set_module_args(dict(state='enabled', name='Eth1/3')) - self.execute_module(changed=False) - - def test_igmp_interface_enabled_change(self): - set_module_args(dict(state='enabled', name='Eth1/1')) - commands = ['interface ethernet 1/1 ip igmp snooping fast-leave'] - self.execute_module(changed=True, commands=commands) - - def test_igmp_interface_disabled_no_change(self): - set_module_args(dict(state='disabled', name='Eth1/1')) - self.execute_module(changed=False) - - def test_igmp_interface_disabled_change(self): - set_module_args(dict(state='disabled', name='Eth1/3')) - commands = ['interface ethernet 1/3 no ip igmp snooping fast-leave'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_igmp_vlan.py b/test/units/modules/network/onyx/test_onyx_igmp_vlan.py deleted file mode 100644 index 1943090eaa..0000000000 --- a/test/units/modules/network/onyx/test_onyx_igmp_vlan.py +++ /dev/null @@ -1,190 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_igmp_vlan -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxIgmpVlan(TestOnyxModule): - - module = onyx_igmp_vlan - enabled = False - mrouter_state = False - querier_state = False - static_groups_enabled = False - - def setUp(self): - self.enabled = False - super(TestOnyxIgmpVlan, self).setUp() - self.mock_get_igmp_config = patch.object( - onyx_igmp_vlan.OnyxIgmpVlanModule, "_show_igmp_vlan") - self.get_igmp_config = self.mock_get_igmp_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_igmp_guerier_config = patch.object( - onyx_igmp_vlan.OnyxIgmpVlanModule, "_show_igmp_querier_config") - self.get_igmp_guerier_config = self.mock_get_igmp_guerier_config.start() - - self.mock_get_igmp_static_groups_config = patch.object( - onyx_igmp_vlan.OnyxIgmpVlanModule, "_show_igmp_snooping_groups_config") - self.get_igmp_static_groups_config = self.mock_get_igmp_static_groups_config.start() - - def tearDown(self): - super(TestOnyxIgmpVlan, self).tearDown() - self.mock_get_igmp_config.stop() - self.mock_load_config.stop() - self.mock_get_igmp_guerier_config.stop() - self.mock_get_igmp_static_groups_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - igmp_vlan_config_file = 'onyx_show_ip_igmp_snooping.cfg' - igmp_querier_config_file = 'onyx_show_ip_igmp_snooping_querier.cfg' - igmp_static_groups_file = 'onyx_show_ip_igmp_snooping_groups.cfg' - igmp_vlan_data = load_fixture(igmp_vlan_config_file) - igmp_querier_data = load_fixture(igmp_querier_config_file) - igmp_static_groups_data = None - if self.enabled: - igmp_vlan_data[0]['message 1'] = 'IGMP snooping is enabled' - - if self.querier_state: - igmp_vlan_data[0]['message 3'] = 'Snooping switch is acting as Querier' - - if self.mrouter_state: - igmp_vlan_data[0]['mrouter static port list'] = 'Eth1/1' - - if self.static_groups_enabled: - igmp_static_groups_data = load_fixture(igmp_static_groups_file) - - self.get_igmp_config.return_value = igmp_vlan_data - self.get_igmp_guerier_config = igmp_querier_data - self.get_igmp_static_groups_config = igmp_static_groups_data - self.load_config.return_value = None - - def test_igmp_disabled_no_change(self): - set_module_args(dict(state='disabled', vlan_id=10)) - self.execute_module(changed=False) - - def test_igmp_disabled_with_change(self): - self.enabled = True - set_module_args(dict(state='disabled', vlan_id=10)) - commands = ['vlan 10 no ip igmp snooping'] - self.execute_module(changed=True, commands=commands) - - def test_igmp_enabled_no_change(self): - self.enabled = True - set_module_args(dict(state='enabled', vlan_id=10)) - self.execute_module(changed=False) - - def test_igmp_enabled_with_change(self): - set_module_args(dict(state='enabled', vlan_id=10)) - commands = ['vlan 10 ip igmp snooping'] - self.execute_module(changed=True, commands=commands) - - def test_igmp_mrouter_disabled_no_change(self): - self.enabled = True - set_module_args(dict(vlan_id=10, mrouter=dict(state='disabled', name='Eth1/1'))) - self.execute_module(changed=False) - - def test_igmp_mrouter_disabled_with_change(self): - self.enabled = True - self.mrouter_state = True - set_module_args(dict(vlan_id=10, mrouter=dict(state='disabled', name='Eth1/1'))) - commands = ['vlan 10 no ip igmp snooping mrouter interface ethernet 1/1'] - self.execute_module(changed=True, commands=commands) - - def test_igmp_mrouter_enabled_no_change(self): - self.enabled = True - self.mrouter_state = True - set_module_args(dict(vlan_id=10, mrouter=dict(state='enabled', name='Eth1/1'))) - self.execute_module(changed=False) - - def test_igmp_mrouter_enabled_with_change(self): - self.enabled = True - set_module_args(dict(vlan_id=10, mrouter=dict(state='enabled', name='Eth1/1'))) - commands = ['vlan 10 ip igmp snooping mrouter interface ethernet 1/1'] - self.execute_module(changed=True, commands=commands) - - def test_igmp_mrouter_enabled_withinterface_change(self): - self.enabled = True - self.mrouter_state = True - set_module_args(dict(vlan_id=10, mrouter=dict(state='enabled', name='Eth1/2'))) - commands = ['vlan 10 ip igmp snooping mrouter interface ethernet 1/2'] - self.execute_module(changed=True, commands=commands) - - def test_igmp_querier_disabled_no_change(self): - self.enabled = True - set_module_args(dict(vlan_id=10, querier=dict(state='disabled'))) - self.execute_module(changed=False) - - def test_igmp_querier_disabled_with_change(self): - self.enabled = True - self.querier_state = True - set_module_args(dict(vlan_id=10, querier=dict(state='disabled'))) - commands = ['vlan 10 no ip igmp snooping querier'] - self.execute_module(changed=True, commands=commands) - - def test_igmp_querier_enabled_no_change(self): - self.enabled = True - self.querier_state = True - set_module_args(dict(vlan_id=10, querier=dict(state='enabled'))) - self.execute_module(changed=False) - - def test_igmp_querier_enabled_with_change(self): - self.enabled = True - set_module_args(dict(vlan_id=10, querier=dict(state='enabled'))) - commands = ['vlan 10 ip igmp snooping querier'] - self.execute_module(changed=True, commands=commands) - - def test_igmp_querier_attr_no_change(self): - self.enabled = True - self.querier_state = True - set_module_args(dict(vlan_id=10, querier=dict(state='enabled', interval=125, address='-'))) - self.execute_module(changed=True) - - def test_igmp_querier_attr_with_change(self): - self.enabled = True - self.querier_state = True - set_module_args(dict(vlan_id=10, querier=dict(state='enabled', interval=127, address='10.10.10.1'))) - commands = ['vlan 10 ip igmp snooping querier query-interval 127', - 'vlan 10 ip igmp snooping querier address 10.10.10.1'] - self.execute_module(changed=True, commands=commands) - - def test_igmp_version_no_change(self): - self.enabled = True - set_module_args(dict(vlan_id=10, version='V3')) - self.execute_module(changed=False) - - def test_igmp_version_with_change(self): - self.enabled = True - set_module_args(dict(vlan_id=10, version='V2')) - commands = ['vlan 10 ip igmp snooping version 2'] - self.execute_module(changed=True, commands=commands) - - def test_igmp_static_groups_multicast_ip_address_not_configured(self): - self.enabled = True - set_module_args(dict(vlan_id=10, static_groups=[dict(multicast_ip_address='224.5.5.2', name='Eth1/1', - sources=["1.1.1.2", "1.1.1.3"])])) - commands = ['vlan 10 ip igmp snooping static-group 224.5.5.2 interface ethernet 1/1', - 'vlan 10 ip igmp snooping static-group 224.5.5.2 interface ethernet 1/1 source 1.1.1.2', - 'vlan 10 ip igmp snooping static-group 224.5.5.2 interface ethernet 1/1 source 1.1.1.3'] - self.execute_module(changed=True, commands=commands) - - def test_igmp_static_groups_multicast_ip_address_configured_with_change(self): - self.enabled = True - self.static_groups_enabled = True - set_module_args(dict(vlan_id=10, static_groups=[dict(multicast_ip_address='224.5.5.1', name='Eth1/3', - sources=["1.1.1.1", "1.1.1.2"])])) - commands = ['vlan 10 ip igmp snooping static-group 224.5.5.1 interface ethernet 1/3', - 'vlan 10 ip igmp snooping static-group 224.5.5.1 interface ethernet 1/3 source 1.1.1.1', - 'vlan 10 ip igmp snooping static-group 224.5.5.1 interface ethernet 1/3 source 1.1.1.2'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_interface.py b/test/units/modules/network/onyx/test_onyx_interface.py deleted file mode 100644 index 3eb06318c4..0000000000 --- a/test/units/modules/network/onyx/test_onyx_interface.py +++ /dev/null @@ -1,125 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_interface -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxInterfaceModule(TestOnyxModule): - - module = onyx_interface - - def setUp(self): - super(TestOnyxInterfaceModule, self).setUp() - self.mock_get_config = patch.object( - onyx_interface.OnyxInterfaceModule, "_get_interfaces_config") - self.get_config = self.mock_get_config.start() - - self.mock_get_interfaces_status = patch.object( - onyx_interface.OnyxInterfaceModule, "_get_interfaces_status") - self.get_interfaces_status = self.mock_get_interfaces_status.start() - - self.mock_get_interfaces_rates = patch.object( - onyx_interface.OnyxInterfaceModule, "_get_interfaces_rates") - self.get_interfaces_rates = self.mock_get_interfaces_rates.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_version = patch.object( - onyx_interface.OnyxInterfaceModule, "_get_os_version") - self.get_version = self.mock_get_version.start() - - def tearDown(self): - super(TestOnyxInterfaceModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - config_file = 'onyx_interfaces_show.cfg' - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - self.get_version.return_value = "3.6.5000" - - def test_mtu_no_change(self): - set_module_args(dict(name='Eth1/1', mtu=1500)) - self.execute_module(changed=False) - - def test_mtu_change(self): - set_module_args(dict(name='Eth1/1', mtu=1522)) - commands = ['interface ethernet 1/1', 'mtu 1522 force', 'exit'] - self.execute_module(changed=True, commands=commands) - - def test_speed_no_change(self): - set_module_args(dict(name='Eth1/1', speed='40G')) - self.execute_module(changed=False) - - def test_speed_change(self): - set_module_args(dict(name='Eth1/1', speed='100G')) - commands = ['interface ethernet 1/1', 'speed 100G force', 'exit'] - self.execute_module(changed=True, commands=commands) - - def test_mtu_speed_change(self): - set_module_args(dict(name='Eth1/1', speed='100G', mtu=1522)) - commands = ['interface ethernet 1/1', 'speed 100G force', - 'mtu 1522 force', 'exit'] - self.execute_module(changed=True, commands=commands) - - def test_admin_state_no_change(self): - set_module_args(dict(name='Eth1/1', enabled=True)) - self.execute_module(changed=False) - - def test_admin_state_change(self): - set_module_args(dict(name='Eth1/1', enabled=False)) - commands = ['interface ethernet 1/1', 'shutdown', 'exit'] - self.execute_module(changed=True, commands=commands) - - def test_add_loopback_if(self): - set_module_args(dict(name='Loopback 1', description='Loopback test')) - commands = ['interface loopback 1', 'description Loopback test', - 'exit'] - self.execute_module(changed=True, commands=commands) - - def test_add_vlan_if(self): - set_module_args(dict(name='Vlan 101', description='Vlan test', - enabled=True)) - commands = ['interface vlan 101', 'description Vlan test', - 'no shutdown', 'exit'] - self.execute_module(changed=True, commands=commands) - - def test_remove_vlan_if(self): - set_module_args(dict(name='Vlan 1002', state='absent')) - commands = ['no interface vlan 1002'] - self.execute_module(changed=True, commands=commands) - - def test_oper_state_check(self): - set_module_args(dict(name='Eth1/1', enabled=True, state='down')) - config_file = 'onyx_interfaces_status.cfg' - self.get_interfaces_status.return_value = load_fixture(config_file) - self.execute_module(changed=False) - - def test_vlan_oper_state_check(self): - set_module_args(dict(name='Vlan 1002', state='down')) - config_file = 'onyx_interfaces_status.cfg' - self.get_interfaces_status.return_value = load_fixture(config_file) - self.execute_module(changed=False) - - def test_rx_rate_check(self): - set_module_args(dict(name='Eth1/1', enabled=True, rx_rate='ge(9000)')) - config_file = 'onyx_interfaces_rates.cfg' - self.get_interfaces_rates.return_value = load_fixture(config_file) - self.execute_module(changed=False) - - def test_tx_rate_check(self): - set_module_args(dict(name='Eth1/1', enabled=True, tx_rate='ge(10000)')) - config_file = 'onyx_interfaces_rates.cfg' - self.get_interfaces_rates.return_value = load_fixture(config_file) - self.execute_module(changed=False) diff --git a/test/units/modules/network/onyx/test_onyx_l2_interface.py b/test/units/modules/network/onyx/test_onyx_l2_interface.py deleted file mode 100644 index 7efc6b16e3..0000000000 --- a/test/units/modules/network/onyx/test_onyx_l2_interface.py +++ /dev/null @@ -1,119 +0,0 @@ -# -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_l2_interface -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxInterfaceModule(TestOnyxModule): - - module = onyx_l2_interface - - def setUp(self): - super(TestOnyxInterfaceModule, self).setUp() - self.mock_get_config = patch.object( - onyx_l2_interface.OnyxL2InterfaceModule, "_get_switchport_config") - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_version = patch.object( - onyx_l2_interface.OnyxL2InterfaceModule, "_get_os_version") - self.get_version = self.mock_get_version.start() - - def tearDown(self): - super(TestOnyxInterfaceModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - config_file = 'onyx_l2_interface_show.cfg' - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - self.get_version.return_value = "3.6.5000" - - def test_access_vlan_no_change(self): - set_module_args(dict(name='Eth1/11', access_vlan=1)) - self.execute_module(changed=False) - - def test_trunk_vlans_no_change(self): - set_module_args(dict(name='Eth1/10', mode='hybrid', access_vlan=1, - trunk_allowed_vlans=[10])) - self.execute_module(changed=False) - - def test_access_vlan_change(self): - set_module_args(dict(name='Eth1/11', access_vlan=10)) - commands = ['interface ethernet 1/11', 'switchport access vlan 10', - 'exit'] - self.execute_module(changed=True, commands=commands) - - def test_trunk_vlan_change(self): - set_module_args(dict(name='Eth1/10', mode='hybrid', access_vlan=1, - trunk_allowed_vlans=[11])) - commands = ['interface ethernet 1/10', - 'switchport hybrid allowed-vlan remove 10', - 'switchport hybrid allowed-vlan add 11', 'exit'] - self.execute_module(changed=True, commands=commands) - - def test_trunk_vlan_add(self): - set_module_args(dict(name='Eth1/10', mode='hybrid', access_vlan=1, - trunk_allowed_vlans=[10, 11])) - commands = ['interface ethernet 1/10', - 'switchport hybrid allowed-vlan add 11', 'exit'] - self.execute_module(changed=True, commands=commands) - - def test_switch_port_access(self): - set_module_args(dict(name='Eth1/12', mode='access', access_vlan=11)) - commands = ['interface ethernet 1/12', 'switchport mode access', - 'switchport access vlan 11', 'exit'] - self.execute_module(changed=True, commands=commands) - - def test_switch_port_trunk(self): - set_module_args(dict(name='Eth1/12', mode='trunk', - trunk_allowed_vlans=[11])) - commands = ['interface ethernet 1/12', 'switchport mode trunk', - 'switchport trunk allowed-vlan add 11', 'exit'] - self.execute_module(changed=True, commands=commands) - - def test_switch_port_hybrid(self): - set_module_args(dict(name='Eth1/12', mode='hybrid', access_vlan=10, - trunk_allowed_vlans=[11])) - commands = ['interface ethernet 1/12', 'switchport mode hybrid', - 'switchport access vlan 10', - 'switchport hybrid allowed-vlan add 11', 'exit'] - self.execute_module(changed=True, commands=commands) - - def test_aggregate(self): - aggregate = list() - aggregate.append(dict(name='Eth1/10')) - aggregate.append(dict(name='Eth1/12')) - - set_module_args(dict(aggregate=aggregate, access_vlan=10)) - commands = ['interface ethernet 1/10', 'switchport mode access', - 'switchport access vlan 10', 'exit', - 'interface ethernet 1/12', 'switchport mode access', - 'switchport access vlan 10', 'exit'] - self.execute_module(changed=True, commands=commands, sort=False) diff --git a/test/units/modules/network/onyx/test_onyx_l3_interface.py b/test/units/modules/network/onyx/test_onyx_l3_interface.py deleted file mode 100644 index 0fa21aab12..0000000000 --- a/test/units/modules/network/onyx/test_onyx_l3_interface.py +++ /dev/null @@ -1,113 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_l3_interface -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxL3InterfaceModule(TestOnyxModule): - - module = onyx_l3_interface - - def setUp(self): - super(TestOnyxL3InterfaceModule, self).setUp() - self.mock_get_config = patch.object( - onyx_l3_interface.OnyxL3InterfaceModule, - "_get_interfaces_config") - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_version = patch.object( - onyx_l3_interface.OnyxL3InterfaceModule, "_get_os_version") - self.get_version = self.mock_get_version.start() - - def tearDown(self): - super(TestOnyxL3InterfaceModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def _execute_module(self, failed=False, changed=False, commands=None, sort=True): - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - if commands is not None: - commands_res = result.get('commands') - if sort: - self.assertEqual(sorted(commands), sorted(commands_res), commands_res) - else: - self.assertEqual(commands, commands_res, commands_res) - - return result - - def load_fixture(self, config_file): - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - self.get_version.return_value = "3.6.5000" - - def load_eth_ifc_fixture(self): - config_file = 'onyx_l3_interface_show.cfg' - self.load_fixture(config_file) - - def load_vlan_ifc_fixture(self): - config_file = 'onyx_l3_vlan_interface_show.cfg' - self.load_fixture(config_file) - - def test_vlan_ifc_no_change(self): - set_module_args(dict(name='Vlan 1002', state='present', - ipv4='172.3.12.4/24')) - self.load_vlan_ifc_fixture() - self._execute_module(changed=False) - - def test_vlan_ifc_remove(self): - set_module_args(dict(name='Vlan 1002', state='absent')) - commands = ['interface vlan 1002 no ip address'] - self.load_vlan_ifc_fixture() - self._execute_module(changed=True, commands=commands) - - def test_vlan_ifc_update(self): - set_module_args(dict(name='Vlan 1002', state='present', - ipv4='172.3.13.4/24')) - commands = ['interface vlan 1002 ip address 172.3.13.4/24'] - self.load_vlan_ifc_fixture() - self._execute_module(changed=True, commands=commands) - - def test_eth_ifc_no_change(self): - set_module_args(dict(name='Eth1/5', state='present', - ipv4='172.3.12.4/24')) - self.load_eth_ifc_fixture() - self._execute_module(changed=False) - - def test_eth_ifc_remove(self): - set_module_args(dict(name='Eth1/5', state='absent')) - commands = ['interface ethernet 1/5 no ip address'] - self.load_eth_ifc_fixture() - self._execute_module(changed=True, commands=commands) - - def test_eth_ifc_update(self): - set_module_args(dict(name='Eth1/5', state='present', - ipv4='172.3.13.4/24')) - commands = ['interface ethernet 1/5 ip address 172.3.13.4/24'] - self.load_eth_ifc_fixture() - self._execute_module(changed=True, commands=commands) - - def test_eth_ifc_add_ip(self): - set_module_args(dict(name='Eth1/6', state='present', - ipv4='172.3.14.4/24')) - commands = ['interface ethernet 1/6 no switchport force', - 'interface ethernet 1/6 ip address 172.3.14.4/24'] - self.load_eth_ifc_fixture() - self._execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_linkagg.py b/test/units/modules/network/onyx/test_onyx_linkagg.py deleted file mode 100644 index 4d9c8b1642..0000000000 --- a/test/units/modules/network/onyx/test_onyx_linkagg.py +++ /dev/null @@ -1,116 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_linkagg -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxLinkaggModule(TestOnyxModule): - - module = onyx_linkagg - - def setUp(self): - super(TestOnyxLinkaggModule, self).setUp() - self.mock_get_config = patch.object( - onyx_linkagg.OnyxLinkAggModule, - "_get_port_channels") - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - self.mock_get_version = patch.object( - onyx_linkagg.OnyxLinkAggModule, "_get_os_version") - self.get_version = self.mock_get_version.start() - - def tearDown(self): - super(TestOnyxLinkaggModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_get_version.stop() - - def load_fixture(self, config_file): - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - self.get_version.return_value = "3.6.5000" - - def load_port_channel_fixture(self): - config_file = 'onyx_port_channel_show.cfg' - self.load_fixture(config_file) - - def load_mlag_port_channel_fixture(self): - config_file = 'onyx_mlag_port_channel_show.cfg' - self.load_fixture(config_file) - - def test_port_channel_no_change(self): - set_module_args(dict(name='Po22', state='present', - members=['Eth1/7'])) - self.load_port_channel_fixture() - self.execute_module(changed=False) - - def test_port_channel_remove(self): - set_module_args(dict(name='Po22', state='absent')) - self.load_port_channel_fixture() - commands = ['no interface port-channel 22'] - self.execute_module(changed=True, commands=commands) - - def test_port_channel_add(self): - set_module_args(dict(name='Po23', state='present', - members=['Eth1/8'])) - self.load_port_channel_fixture() - commands = ['interface port-channel 23', 'exit', - 'interface ethernet 1/8 channel-group 23 mode on'] - self.execute_module(changed=True, commands=commands) - - def test_port_channel_add_member(self): - set_module_args(dict(name='Po22', state='present', - members=['Eth1/7', 'Eth1/8'])) - self.load_port_channel_fixture() - commands = ['interface ethernet 1/8 channel-group 22 mode on'] - self.execute_module(changed=True, commands=commands) - - def test_port_channel_remove_member(self): - set_module_args(dict(name='Po22', state='present')) - self.load_port_channel_fixture() - commands = ['interface ethernet 1/7 no channel-group'] - self.execute_module(changed=True, commands=commands) - - def test_mlag_port_channel_no_change(self): - set_module_args(dict(name='Mpo33', state='present', - members=['Eth1/8'])) - self.load_mlag_port_channel_fixture() - self.execute_module(changed=False) - - def test_mlag_port_channel_remove(self): - set_module_args(dict(name='Mpo33', state='absent')) - self.load_mlag_port_channel_fixture() - commands = ['no interface mlag-port-channel 33'] - self.execute_module(changed=True, commands=commands) - - def test_mlag_port_channel_add(self): - set_module_args(dict(name='Mpo34', state='present', - members=['Eth1/9'])) - self.load_mlag_port_channel_fixture() - commands = ['interface mlag-port-channel 34', 'exit', - 'interface ethernet 1/9 mlag-channel-group 34 mode on'] - self.execute_module(changed=True, commands=commands) - - def test_mlag_port_channel_add_member(self): - set_module_args(dict(name='Mpo33', state='present', - members=['Eth1/8', 'Eth1/9'])) - self.load_mlag_port_channel_fixture() - commands = ['interface ethernet 1/9 mlag-channel-group 33 mode on'] - self.execute_module(changed=True, commands=commands) - - def test_mlag_port_channel_remove_member(self): - set_module_args(dict(name='Mpo33', state='present')) - self.load_mlag_port_channel_fixture() - commands = ['interface ethernet 1/8 no mlag-channel-group'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_lldp.py b/test/units/modules/network/onyx/test_onyx_lldp.py deleted file mode 100644 index 4957af6360..0000000000 --- a/test/units/modules/network/onyx/test_onyx_lldp.py +++ /dev/null @@ -1,68 +0,0 @@ -# -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_lldp -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxInterfaceModule(TestOnyxModule): - - module = onyx_lldp - - def setUp(self): - super(TestOnyxInterfaceModule, self).setUp() - self.mock_get_config = patch.object( - onyx_lldp.OnyxLldpModule, "_get_lldp_config") - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestOnyxInterfaceModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - if commands == ['lldp']: - self.get_config.return_value = None - else: - config_file = 'onyx_lldp_show.cfg' - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - - def test_lldp_no_change(self): - set_module_args(dict()) - self.execute_module(changed=False) - - def test_lldp_disable(self): - set_module_args(dict(state='absent')) - commands = ['no lldp'] - self.execute_module(changed=True, commands=commands) - - def test_lldp_enable(self): - set_module_args(dict(state='present')) - commands = ['lldp'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_lldp_interface.py b/test/units/modules/network/onyx/test_onyx_lldp_interface.py deleted file mode 100644 index 223b0c6be8..0000000000 --- a/test/units/modules/network/onyx/test_onyx_lldp_interface.py +++ /dev/null @@ -1,76 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_lldp_interface -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxLldpInterfaceModule(TestOnyxModule): - - module = onyx_lldp_interface - - def setUp(self): - super(TestOnyxLldpInterfaceModule, self).setUp() - self.mock_get_config = patch.object( - onyx_lldp_interface.OnyxLldpInterfaceModule, - "_get_lldp_config") - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestOnyxLldpInterfaceModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - config_file = 'onyx_lldp_interface_show.cfg' - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - - def test_lldp_no_change(self): - set_module_args(dict(name='Eth1/1', state='present')) - self.execute_module(changed=False) - - def test_no_lldp_no_change(self): - set_module_args(dict(name='Eth1/2', state='absent')) - self.execute_module(changed=False) - - def test_no_lldp_change(self): - set_module_args(dict(name='Eth1/2', state='present')) - commands = ['interface ethernet 1/2 lldp receive', - 'interface ethernet 1/2 lldp transmit'] - self.execute_module(changed=True, commands=commands) - - def test_lldp_change(self): - set_module_args(dict(name='Eth1/1', state='absent')) - commands = ['interface ethernet 1/1 no lldp receive', - 'interface ethernet 1/1 no lldp transmit'] - self.execute_module(changed=True, commands=commands) - - def test_lldp_aggregate(self): - aggregate = [dict(name='Eth1/1'), dict(name='Eth1/2')] - set_module_args(dict(aggregate=aggregate, state='present')) - commands = ['interface ethernet 1/2 lldp receive', - 'interface ethernet 1/2 lldp transmit'] - self.execute_module(changed=True, commands=commands) - - def test_lldp_aggregate_purge(self): - aggregate = [dict(name='Eth1/3'), dict(name='Eth1/2')] - set_module_args(dict(aggregate=aggregate, state='present', purge=True)) - commands = ['interface ethernet 1/2 lldp receive', - 'interface ethernet 1/2 lldp transmit', - 'interface ethernet 1/3 lldp receive', - 'interface ethernet 1/3 lldp transmit', - 'interface ethernet 1/1 no lldp receive', - 'interface ethernet 1/1 no lldp transmit'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_magp.py b/test/units/modules/network/onyx/test_onyx_magp.py deleted file mode 100644 index 2fbbd82e4c..0000000000 --- a/test/units/modules/network/onyx/test_onyx_magp.py +++ /dev/null @@ -1,110 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_magp -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxMagpModule(TestOnyxModule): - - module = onyx_magp - - def setUp(self): - super(TestOnyxMagpModule, self).setUp() - self.mock_get_config = patch.object( - onyx_magp.OnyxMagpModule, - "_get_magp_config") - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_version = patch.object(onyx_magp.OnyxMagpModule, - "_get_os_version") - self.get_version = self.mock_get_version.start() - - def tearDown(self): - super(TestOnyxMagpModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_get_version.stop() - - def load_fixtures(self, commands=None, transport='cli'): - config_file = 'onyx_magp_show.cfg' - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - self.get_version.return_value = "3.6.5000" - - def test_magp_absent_no_change(self): - set_module_args(dict(interface='Vlan 1002', magp_id=110, - state='absent')) - self.execute_module(changed=False) - - def test_magp_no_change(self): - set_module_args(dict(interface='Vlan 1200', magp_id=103, - state='disabled')) - self.execute_module(changed=False) - - def test_magp_present_no_change(self): - set_module_args(dict(interface='Vlan 1200', magp_id=103)) - self.execute_module(changed=False) - - def test_magp_enable(self): - set_module_args(dict(interface='Vlan 1200', magp_id=103, - state='enabled')) - commands = ['interface vlan 1200 magp 103 no shutdown'] - self.execute_module(changed=True, commands=commands) - - def test_magp_disable(self): - set_module_args(dict(interface='Vlan 1243', magp_id=102, - state='disabled', router_ip='10.0.0.43', - router_mac='01:02:03:04:05:06')) - commands = ['interface vlan 1243 magp 102 shutdown'] - self.execute_module(changed=True, commands=commands) - - def test_magp_change_address(self): - set_module_args(dict(interface='Vlan 1243', magp_id=102, - router_ip='10.0.0.44', - router_mac='01:02:03:04:05:07')) - commands = [ - 'interface vlan 1243 magp 102 ip virtual-router address 10.0.0.44', - 'interface vlan 1243 magp 102 ip virtual-router mac-address 01:02:03:04:05:07'] - self.execute_module(changed=True, commands=commands) - - def test_magp_remove_address(self): - set_module_args(dict(interface='Vlan 1243', magp_id=102)) - commands = [ - 'interface vlan 1243 magp 102 no ip virtual-router address', - 'interface vlan 1243 magp 102 no ip virtual-router mac-address'] - self.execute_module(changed=True, commands=commands) - - def test_magp_add(self): - set_module_args(dict(interface='Vlan 1244', magp_id=104, - router_ip='10.0.0.44', - router_mac='01:02:03:04:05:07')) - commands = [ - 'interface vlan 1244 magp 104', - 'exit', - 'interface vlan 1244 magp 104 ip virtual-router address 10.0.0.44', - 'interface vlan 1244 magp 104 ip virtual-router mac-address 01:02:03:04:05:07'] - self.execute_module(changed=True, commands=commands, sort=False) - - def test_magp_change_vlan(self): - set_module_args(dict(interface='Vlan 1244', magp_id=102, - router_ip='10.0.0.43', - router_mac='01:02:03:04:05:06')) - commands = [ - 'interface vlan 1243 no magp 102', - 'interface vlan 1244 magp 102', - 'exit', - 'interface vlan 1244 magp 102 ip virtual-router address 10.0.0.43', - 'interface vlan 1244 magp 102 ip virtual-router mac-address 01:02:03:04:05:06'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_mlag_ipl.py b/test/units/modules/network/onyx/test_onyx_mlag_ipl.py deleted file mode 100644 index 126f82e32f..0000000000 --- a/test/units/modules/network/onyx/test_onyx_mlag_ipl.py +++ /dev/null @@ -1,86 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_mlag_ipl -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxMlagIplModule(TestOnyxModule): - - module = onyx_mlag_ipl - - def setUp(self): - super(TestOnyxMlagIplModule, self).setUp() - self._mlag_enabled = True - self.mock_get_config = patch.object( - onyx_mlag_ipl.OnyxMlagIplModule, - "_show_mlag_data") - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestOnyxMlagIplModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - if self._mlag_enabled: - config_file = 'onyx_mlag_ipl_show.cfg' - self.get_config.return_value = load_fixture(config_file) - else: - self.get_config.return_value = None - self.load_config.return_value = None - - def test_no_ipl_no_change(self): - self._mlag_enabled = False - set_module_args(dict(name="Po1", state='absent')) - self.execute_module(changed=False) - - def test_ipl_no_change(self): - self._mlag_enabled = True - set_module_args(dict(name="Po1", state='present', - vlan_interface='Vlan 1002', - peer_address='10.2.2.2')) - self.execute_module(changed=False) - - def test_ipl_add(self): - self._mlag_enabled = False - set_module_args(dict(name="Po1", state='present', - vlan_interface='Vlan 1002', - peer_address='10.2.2.2')) - commands = ['interface port-channel 1 ipl 1', - 'interface vlan 1002 ipl 1 peer-address 10.2.2.2'] - self.execute_module(changed=True, commands=commands) - - def test_ipl_add_peer(self): - self._mlag_enabled = True - set_module_args(dict(name="Po1", state='present', - vlan_interface='Vlan 1002', - peer_address='10.2.2.4')) - commands = ['interface vlan 1002 ipl 1 peer-address 10.2.2.4'] - self.execute_module(changed=True, commands=commands) - - def test_ipl_remove(self): - self._mlag_enabled = True - set_module_args(dict(name="Po1", state='absent')) - commands = ['interface port-channel 1 no ipl 1'] - self.execute_module(changed=True, commands=commands) - - def test_ipl_change_vlan(self): - self._mlag_enabled = True - set_module_args(dict(name="Po1", state='present', - vlan_interface='Vlan 1003', - peer_address='10.2.2.4')) - commands = ['interface vlan 1002 no ipl 1', - 'interface vlan 1003 ipl 1 peer-address 10.2.2.4'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_mlag_vip.py b/test/units/modules/network/onyx/test_onyx_mlag_vip.py deleted file mode 100644 index 1ff20afab3..0000000000 --- a/test/units/modules/network/onyx/test_onyx_mlag_vip.py +++ /dev/null @@ -1,84 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_mlag_vip -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxMlagVipModule(TestOnyxModule): - - module = onyx_mlag_vip - - def setUp(self): - super(TestOnyxMlagVipModule, self).setUp() - self._mlag_enabled = True - self.mock_show_mlag = patch.object( - onyx_mlag_vip.OnyxMLagVipModule, - "_show_mlag") - self.show_mlag = self.mock_show_mlag.start() - self.mock_show_mlag_vip = patch.object( - onyx_mlag_vip.OnyxMLagVipModule, - "_show_mlag_vip") - self.show_mlag_vip = self.mock_show_mlag_vip.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestOnyxMlagVipModule, self).tearDown() - self.mock_show_mlag.stop() - self.mock_show_mlag_vip.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - if self._mlag_enabled: - config_file = 'onyx_mlag_vip_show.cfg' - self.show_mlag_vip.return_value = load_fixture(config_file) - config_file = 'onyx_mlag_show.cfg' - self.show_mlag.return_value = load_fixture(config_file) - else: - self.show_mlag_vip.return_value = None - self.show_mlag.return_value = None - self.load_config.return_value = None - - def test_mlag_no_change(self): - set_module_args(dict(ipaddress='10.209.25.107/24', - group_name='neo-mlag-vip-500', - mac_address='00:00:5E:00:01:4E')) - self.execute_module(changed=False) - - def test_mlag_change(self): - self._mlag_enabled = False - set_module_args(dict(ipaddress='10.209.25.107/24', - group_name='neo-mlag-vip-500', - mac_address='00:00:5E:00:01:4E', - delay=0)) - commands = ['mlag-vip neo-mlag-vip-500 ip 10.209.25.107 /24 force', - 'mlag system-mac 00:00:5e:00:01:4e', 'no mlag shutdown'] - self.execute_module(changed=True, commands=commands) - - def test_mlag_send_group_name_only_change(self): - self._mlag_enabled = False - set_module_args(dict(group_name='neo-mlag-vip-500', - delay=0)) - commands = ['mlag-vip neo-mlag-vip-500', - 'no mlag shutdown'] - self.execute_module(changed=True, commands=commands) - - def test_mlag_absent_no_change(self): - self._mlag_enabled = False - set_module_args(dict(state='absent')) - self.execute_module(changed=False) - - def test_mlag_absent_change(self): - set_module_args(dict(state='absent', delay=0)) - commands = ['no mlag-vip'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_ntp.py b/test/units/modules/network/onyx/test_onyx_ntp.py deleted file mode 100644 index aa4499c5b3..0000000000 --- a/test/units/modules/network/onyx/test_onyx_ntp.py +++ /dev/null @@ -1,76 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_ntp -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxNTP(TestOnyxModule): - - module = onyx_ntp - enabled = False - - def setUp(self): - self.enabled = False - super(TestOnyxNTP, self).setUp() - self.mock_get_config = patch.object( - onyx_ntp.OnyxNTPModule, "_show_ntp_config") - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestOnyxNTP, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - config_file = 'onyx_ntp_show.cfg' - data = load_fixture(config_file) - self.get_config.return_value = data - self.load_config.return_value = None - - def test_ntp_state_no_change(self): - set_module_args(dict(state='enabled')) - self.execute_module(changed=False) - - def test_ntp_state_with_change(self): - set_module_args(dict(state='disabled')) - commands = ['no ntp enable'] - self.execute_module(changed=True, commands=commands) - - def test_ntp_authenticate_state_no_change(self): - set_module_args(dict(authenticate_state='disabled')) - self.execute_module(changed=False) - - def test_ntp_authenticate_state_with_change(self): - set_module_args(dict(authenticate_state='enabled')) - commands = ['ntp authenticate'] - self.execute_module(changed=True, commands=commands) - - def test_ntp_authentication_key_no_change(self): - set_module_args(dict(ntp_authentication_keys=[dict(auth_key_id='22', - auth_key_encrypt_type='sha1', - auth_key_password='12345')])) - self.execute_module(changed=False) - - def test_ntp_authentication_key_with_change(self): - set_module_args(dict(ntp_authentication_keys=[dict(auth_key_id='22', - auth_key_encrypt_type='md5', - auth_key_password='12345')])) - commands = ['ntp authentication-key 22 md5 12345'] - self.execute_module(changed=True, commands=commands) - - def test_ntp_trusted_keys_with_change(self): - set_module_args(dict(trusted_keys='22')) - commands = ['ntp trusted-key 22'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_ntp_servers_peers.py b/test/units/modules/network/onyx/test_onyx_ntp_servers_peers.py deleted file mode 100644 index 39bd33d1a9..0000000000 --- a/test/units/modules/network/onyx/test_onyx_ntp_servers_peers.py +++ /dev/null @@ -1,134 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_ntp_servers_peers -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxNtpServersPeersModule(TestOnyxModule): - - module = onyx_ntp_servers_peers - enabled = False - - def setUp(self): - self.enabled = False - super(TestOnyxNtpServersPeersModule, self).setUp() - self.mock_get_config = patch.object( - onyx_ntp_servers_peers.OnyxNTPServersPeersModule, "_show_peers_servers_config") - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestOnyxNtpServersPeersModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - config_file = 'onyx_ntp_servers_peers_show.cfg' - data = load_fixture(config_file) - self.get_config.return_value = data - self.load_config.return_value = None - - def test_ntp_peer_state_no_change(self): - set_module_args(dict(peer=[dict(ip_or_name='1.1.1.1', - enabled='yes')])) - self.execute_module(changed=False) - - def test_ntp_peer_state_with_change(self): - set_module_args(dict(peer=[dict(ip_or_name='1.1.1.1', - enabled='no')])) - commands = ['ntp peer 1.1.1.1 disable'] - self.execute_module(changed=True, commands=commands) - - def test_ntp_peer_version_no_change(self): - set_module_args(dict(peer=[dict(ip_or_name='1.1.1.1', - version='4')])) - self.execute_module(changed=False) - - def test_ntp_peer_version_with_change(self): - set_module_args(dict(peer=[dict(ip_or_name='1.1.1.1', - version='3')])) - commands = ['ntp peer 1.1.1.1 version 3'] - self.execute_module(changed=True, commands=commands) - - def test_ntp_peer_key_id_no_change(self): - set_module_args(dict(peer=[dict(ip_or_name='1.1.1.1', - key_id='5')])) - self.execute_module(changed=False) - - def test_ntp_peer_key_id_with_change(self): - set_module_args(dict(peer=[dict(ip_or_name='1.1.1.1', - key_id='6')])) - commands = ['ntp peer 1.1.1.1 keyID 6'] - self.execute_module(changed=True, commands=commands) - - def test_ntp_peer_delete_with_change(self): - set_module_args(dict(peer=[dict(ip_or_name='1.1.1.1', - state='absent')])) - commands = ['no ntp peer 1.1.1.1'] - self.execute_module(changed=True, commands=commands) - - def test_ntp_server_state_no_change(self): - set_module_args(dict(server=[dict(ip_or_name='2.2.2.2', - enabled='no')])) - self.execute_module(changed=False) - - def test_ntp_server_state_with_change(self): - set_module_args(dict(server=[dict(ip_or_name='2.2.2.2', - enabled='yes')])) - commands = ['no ntp server 2.2.2.2 disable'] - self.execute_module(changed=True, commands=commands) - - def test_ntp_server_version_no_change(self): - set_module_args(dict(server=[dict(ip_or_name='2.2.2.2', - version='4')])) - self.execute_module(changed=False) - - def test_ntp_server_version_with_change(self): - set_module_args(dict(server=[dict(ip_or_name='2.2.2.2', - version='3')])) - commands = ['ntp server 2.2.2.2 version 3'] - self.execute_module(changed=True, commands=commands) - - def test_ntp_server_keyID_no_change(self): - set_module_args(dict(server=[dict(ip_or_name='2.2.2.2', - key_id='99')])) - self.execute_module(changed=False) - - def test_ntp_server_keyID_with_change(self): - set_module_args(dict(server=[dict(ip_or_name='2.2.2.2', - key_id='8')])) - commands = ['ntp server 2.2.2.2 keyID 8'] - self.execute_module(changed=True, commands=commands) - - def test_ntp_server_trusted_state_no_change(self): - set_module_args(dict(server=[dict(ip_or_name='2.2.2.2', - trusted_enable='yes')])) - self.execute_module(changed=False) - - def test_ntp_server_trusted_state_with_change(self): - set_module_args(dict(server=[dict(ip_or_name='2.2.2.2', - trusted_enable='no')])) - commands = ['no ntp server 2.2.2.2 trusted-enable'] - self.execute_module(changed=True, commands=commands) - - def test_ntp_server_delete_with_change(self): - set_module_args(dict(server=[dict(ip_or_name='2.2.2.2', - state='absent')])) - commands = ['no ntp server 2.2.2.2'] - self.execute_module(changed=True, commands=commands) - - def test_ntpdate_with_change(self): - set_module_args(dict(ntpdate='192.22.1.66')) - commands = ['ntpdate 192.22.1.66'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_ospf.py b/test/units/modules/network/onyx/test_onyx_ospf.py deleted file mode 100644 index 76c7f4332c..0000000000 --- a/test/units/modules/network/onyx/test_onyx_ospf.py +++ /dev/null @@ -1,106 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_ospf -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxOspfModule(TestOnyxModule): - - module = onyx_ospf - - def setUp(self): - super(TestOnyxOspfModule, self).setUp() - self._ospf_exists = True - self.mock_get_config = patch.object( - onyx_ospf.OnyxOspfModule, - "_get_ospf_config") - self.get_config = self.mock_get_config.start() - - self.mock_get_interfaces_config = patch.object( - onyx_ospf.OnyxOspfModule, - "_get_ospf_interfaces_config") - self.get_interfaces_config = self.mock_get_interfaces_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestOnyxOspfModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - if self._ospf_exists: - config_file = 'onyx_ospf_show.cfg' - self.get_config.return_value = load_fixture(config_file) - config_file = 'onyx_ospf_interfaces_show.cfg' - self.get_interfaces_config.return_value = load_fixture(config_file) - else: - self.get_config.return_value = None - self.get_interfaces_config.return_value = None - self.load_config.return_value = None - - def test_ospf_absent_no_change(self): - set_module_args(dict(ospf=3, state='absent')) - self.execute_module(changed=False) - - def test_ospf_present_no_change(self): - interface = dict(name='Loopback 1', area='0.0.0.0') - set_module_args(dict(ospf=2, router_id='10.2.3.4', - interfaces=[interface])) - self.execute_module(changed=False) - - def test_ospf_present_remove(self): - set_module_args(dict(ospf=2, state='absent')) - commands = ['no router ospf 2'] - self.execute_module(changed=True, commands=commands) - - def test_ospf_change_router(self): - interface = dict(name='Loopback 1', area='0.0.0.0') - set_module_args(dict(ospf=2, router_id='10.2.3.5', - interfaces=[interface])) - commands = ['router ospf 2', 'router-id 10.2.3.5', 'exit'] - self.execute_module(changed=True, commands=commands, sort=False) - - def test_ospf_remove_router(self): - interface = dict(name='Loopback 1', area='0.0.0.0') - set_module_args(dict(ospf=2, interfaces=[interface])) - commands = ['router ospf 2', 'no router-id', 'exit'] - self.execute_module(changed=True, commands=commands, sort=False) - - def test_ospf_add_interface(self): - interfaces = [dict(name='Loopback 1', area='0.0.0.0'), - dict(name='Loopback 2', area='0.0.0.0')] - set_module_args(dict(ospf=2, router_id='10.2.3.4', - interfaces=interfaces)) - commands = ['interface loopback 2 ip ospf area 0.0.0.0'] - self.execute_module(changed=True, commands=commands) - - def test_ospf_remove_interface(self): - set_module_args(dict(ospf=2, router_id='10.2.3.4')) - commands = ['interface loopback 1 no ip ospf area'] - self.execute_module(changed=True, commands=commands) - - def test_ospf_add(self): - self._ospf_exists = False - interfaces = [dict(name='Loopback 1', area='0.0.0.0'), - dict(name='Vlan 210', area='0.0.0.0'), - dict(name='Eth1/1', area='0.0.0.0'), - dict(name='Po1', area='0.0.0.0')] - set_module_args(dict(ospf=2, router_id='10.2.3.4', - interfaces=interfaces)) - commands = ['router ospf 2', 'router-id 10.2.3.4', 'exit', - 'interface loopback 1 ip ospf area 0.0.0.0', - 'interface vlan 210 ip ospf area 0.0.0.0', - 'interface ethernet 1/1 ip ospf area 0.0.0.0', - 'interface port-channel 1 ip ospf area 0.0.0.0'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_pfc_interface.py b/test/units/modules/network/onyx/test_onyx_pfc_interface.py deleted file mode 100644 index 9f70f31ff4..0000000000 --- a/test/units/modules/network/onyx/test_onyx_pfc_interface.py +++ /dev/null @@ -1,114 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_pfc_interface -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxPfcInterfaceModule(TestOnyxModule): - - module = onyx_pfc_interface - - def setUp(self): - super(TestOnyxPfcInterfaceModule, self).setUp() - self._pfc_enabled = True - self.mock_get_config = patch.object( - onyx_pfc_interface.OnyxPfcInterfaceModule, - "_get_pfc_config") - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - self.mock_get_version = patch.object( - onyx_pfc_interface.OnyxPfcInterfaceModule, "_get_os_version") - self.get_version = self.mock_get_version.start() - - def tearDown(self): - super(TestOnyxPfcInterfaceModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_get_version.stop() - - def load_fixtures(self, commands=None, transport='cli'): - if self._pfc_enabled: - suffix = 'enabled' - else: - suffix = 'disabled' - config_file = 'onyx_pfc_interface_%s.cfg' % suffix - - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - self.get_version.return_value = "3.6.5000" - - def _test_pfc_if(self, if_name, enabled, changed, commands): - state = 'enabled' if enabled else 'disabled' - set_module_args(dict(name=if_name, state=state)) - self.execute_module(changed=changed, commands=commands) - - def _test_pfc_no_change(self, enabled): - interfaces = ('Eth1/1', 'Eth1/1/2', 'Po1', 'Mpo2') - changed = False - commands = None - for ifc in interfaces: - self._test_pfc_if(ifc, enabled, changed, commands) - - def test_pfc_enabled_no_change(self): - self._pfc_enabled = True - enabled = True - self._test_pfc_no_change(enabled) - - def test_pfc_disabled_no_change(self): - self._pfc_enabled = False - enabled = False - self._test_pfc_no_change(enabled) - - def _test_pfc_change(self, enabled): - cmd_list = [ - ('Eth1/1', 'interface ethernet 1/1'), - ('Eth1/1/2', 'interface ethernet 1/1/2'), - ('Po1', 'interface port-channel 1'), - ('Mpo2', 'interface mlag-port-channel 2'), - ] - changed = True - suffix = ' dcb priority-flow-control mode on force' - if not enabled: - suffix = ' no dcb priority-flow-control mode force' - for (if_name, cmd) in cmd_list: - commands = [cmd + suffix] - self._test_pfc_if(if_name, enabled, changed, commands) - - def test_pfc_disabled_change(self): - self._pfc_enabled = False - enabled = True - self._test_pfc_change(enabled) - - def test_pfc_enabled_change(self): - self._pfc_enabled = True - enabled = False - self._test_pfc_change(enabled) - - def test_pfc_aggregate(self): - self._pfc_enabled = False - aggregate = [dict(name='Eth1/1'), dict(name='Eth1/1/2')] - set_module_args(dict(aggregate=aggregate, state='enabled')) - commands = [ - 'interface ethernet 1/1 dcb priority-flow-control mode on force', - 'interface ethernet 1/1/2 dcb priority-flow-control mode on force'] - self.execute_module(changed=True, commands=commands) - - def test_pfc_aggregate_purge(self): - self._pfc_enabled = True - aggregate = [dict(name='Po1'), dict(name='Mpo2')] - set_module_args(dict(aggregate=aggregate, state='enabled', purge=True)) - commands = [ - 'interface ethernet 1/1 no dcb priority-flow-control mode force', - 'interface ethernet 1/1/2 no dcb priority-flow-control mode force'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_protocol.py b/test/units/modules/network/onyx/test_onyx_protocol.py deleted file mode 100644 index c81dd8ee60..0000000000 --- a/test/units/modules/network/onyx/test_onyx_protocol.py +++ /dev/null @@ -1,152 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_protocol -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxProtocolModule(TestOnyxModule): - - module = onyx_protocol - - def setUp(self): - super(TestOnyxProtocolModule, self).setUp() - self.mock_get_config = patch.object( - onyx_protocol.OnyxProtocolModule, - "_get_protocols") - self.get_config = self.mock_get_config.start() - - self.mock_get_ip_config = patch.object( - onyx_protocol.OnyxProtocolModule, - "_get_ip_routing") - self.get_ip_config = self.mock_get_ip_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestOnyxProtocolModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - config_file = 'onyx_protocols_show.cfg' - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - self.get_ip_config.return_value = "IP routing: enabled" - - def test_mlag_enable(self): - set_module_args(dict(mlag='enabled')) - commands = ['protocol mlag'] - self.execute_module(changed=True, commands=commands) - - def test_mlag_disable(self): - set_module_args(dict(mlag='disabled')) - self.execute_module(changed=False) - - def test_magp_enable(self): - set_module_args(dict(magp='enabled')) - commands = ['protocol magp'] - self.execute_module(changed=True, commands=commands) - - def test_magp_disable(self): - set_module_args(dict(magp='disabled')) - self.execute_module(changed=False) - - def test_spanning_tree_enable(self): - set_module_args(dict(spanning_tree='enabled')) - self.execute_module(changed=False) - - def test_spanning_tree_disable(self): - set_module_args(dict(spanning_tree='disabled')) - commands = ['no spanning-tree'] - self.execute_module(changed=True, commands=commands) - - def test_dcb_pfc_enable(self): - set_module_args(dict(dcb_pfc='enabled')) - commands = ['dcb priority-flow-control enable force'] - self.execute_module(changed=True, commands=commands) - - def test_dcb_pfc_disable(self): - set_module_args(dict(dcb_pfc='disabled')) - self.execute_module(changed=False) - - def test_igmp_snooping_enable(self): - set_module_args(dict(igmp_snooping='enabled')) - commands = ['ip igmp snooping'] - self.execute_module(changed=True, commands=commands) - - def test_igmp_snooping_disable(self): - set_module_args(dict(igmp_snooping='disabled')) - self.execute_module(changed=False) - - def test_lacp_enable(self): - set_module_args(dict(lacp='enabled')) - commands = ['lacp'] - self.execute_module(changed=True, commands=commands) - - def test_lacp_disable(self): - set_module_args(dict(lacp='disabled')) - self.execute_module(changed=False) - - def test_ip_routing_enable(self): - set_module_args(dict(ip_routing='enabled')) - self.execute_module(changed=False) - - def test_ip_routing_disable(self): - set_module_args(dict(ip_routing='disabled')) - commands = ['no ip routing'] - self.execute_module(changed=True, commands=commands) - - def test_lldp_enable(self): - set_module_args(dict(lldp='enabled')) - commands = ['lldp'] - self.execute_module(changed=True, commands=commands) - - def test_lldp_disable(self): - set_module_args(dict(lldp='disabled')) - self.execute_module(changed=False) - - def test_bgp_enable(self): - set_module_args(dict(bgp='enabled')) - commands = ['protocol bgp'] - self.execute_module(changed=True, commands=commands) - - def test_bgp_disable(self): - set_module_args(dict(bgp='disabled')) - self.execute_module(changed=False) - - def test_ospf_enable(self): - set_module_args(dict(ospf='enabled')) - commands = ['protocol ospf'] - self.execute_module(changed=True, commands=commands) - - def test_ospf_disable(self): - set_module_args(dict(ospf='disabled')) - self.execute_module(changed=False) - - def test_nve_enable(self): - set_module_args(dict(nve='enabled')) - commands = ['protocol nve'] - self.execute_module(changed=True, commands=commands) - - def test_nve_disabled(self): - set_module_args(dict(nve='disabled')) - self.execute_module(changed=False) - - def test_bfd_enable(self): - set_module_args(dict(bfd='enabled')) - commands = ['protocol bfd'] - self.execute_module(changed=True, commands=commands) - - def test_bfd_disabled(self): - set_module_args(dict(bfd='disabled')) - self.execute_module(changed=False) diff --git a/test/units/modules/network/onyx/test_onyx_ptp_global.py b/test/units/modules/network/onyx/test_onyx_ptp_global.py deleted file mode 100644 index 923c4549e9..0000000000 --- a/test/units/modules/network/onyx/test_onyx_ptp_global.py +++ /dev/null @@ -1,138 +0,0 @@ -# -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_ptp_global -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxPtpModule(TestOnyxModule): - - module = onyx_ptp_global - - def setUp(self): - self._ptp_enabled = True - self._ntp_enabled = True - super(TestOnyxPtpModule, self).setUp() - - self.mock_get_ptp_config = patch.object(onyx_ptp_global.OnyxPtpGlobalModule, "_show_ptp_config") - self.get_ptp_config = self.mock_get_ptp_config.start() - self.mock_get_ntp_config = patch.object(onyx_ptp_global.OnyxPtpGlobalModule, "_show_ntp_config") - self.get_ntp_config = self.mock_get_ntp_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestOnyxPtpModule, self).tearDown() - self.mock_get_ptp_config.stop() - self.mock_get_ntp_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - if self._ptp_enabled: - config_file = 'onyx_show_ptp_clock.cfg' - self.get_ptp_config.return_value = load_fixture(config_file) - else: - self.get_ptp_config.return_value = None - - config_file = 'onyx_show_ntp_configured.cfg' - ret_val = load_fixture(config_file) - if self._ntp_enabled: - ret_val[0]['NTP enabled'] = 'yes' - self.get_ntp_config.return_value = ret_val - self.load_config.return_value = None - - def test_ptp_enabled_no_change(self): - set_module_args(dict(ptp_state='enabled')) - self.execute_module(changed=False) - - def test_ptp_enabled_with_change(self): - self._ptp_enabled = False - set_module_args(dict(ptp_state='enabled')) - commands = ['protocol ptp'] - self.execute_module(changed=True, commands=commands) - - def test_ptp_disabled_no_change(self): - self._ptp_enabled = False - set_module_args(dict(ptp_state='disabled')) - self.execute_module(changed=False) - - def test_ptp_disabled_with_change(self): - set_module_args(dict(ptp_state='disabled')) - commands = ['no protocol ptp'] - self.execute_module(changed=True, commands=commands) - - def test_ntp_enabled_no_change(self): - self._ptp_enabled = False - set_module_args(dict(ntp_state='enabled', - ptp_state='disabled')) - self.execute_module(changed=False) - - def test_ntp_enabled_with_change(self): - self._ptp_enabled = False - self._ntp_enabled = False - set_module_args(dict(ntp_state='enabled', - ptp_state='disabled')) - commands = ['ntp enable'] - self.execute_module(changed=True, commands=commands) - - def test_ntp_disabled_no_change(self): - self._ntp_enabled = False - set_module_args(dict(ntp_state='disabled')) - self.execute_module(changed=False) - - def test_ntp_disabled_with_change(self): - set_module_args(dict(ntp_state='disabled')) - commands = ['no ntp enable'] - self.execute_module(changed=True, commands=commands) - - def test_set_domain_no_change(self): - self._ntp_enabled = False - set_module_args(dict(ntp_state='disabled', - domain=127)) - self.execute_module(changed=False) - - def test_set_domain_with_change(self): - set_module_args(dict(domain=100)) - commands = ['ptp domain 100'] - self.execute_module(changed=True, commands=commands) - - def test_set_primary_priority_no_change(self): - set_module_args(dict(primary_priority=128)) - self.execute_module(changed=False) - - def test_set_primary_priority_with_change(self): - set_module_args(dict(primary_priority=250)) - commands = ['ptp priority1 250'] - self.execute_module(changed=True, commands=commands) - - def test_set_secondary_priority_no_change(self): - set_module_args(dict(secondary_priority=128)) - self.execute_module(changed=False) - - def test_set_secondary_priority_with_change(self): - set_module_args(dict(secondary_priority=190)) - commands = ['ptp priority2 190'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_ptp_interface.py b/test/units/modules/network/onyx/test_onyx_ptp_interface.py deleted file mode 100644 index 30c3b02a8f..0000000000 --- a/test/units/modules/network/onyx/test_onyx_ptp_interface.py +++ /dev/null @@ -1,91 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_ptp_interface -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxPtpInterface(TestOnyxModule): - - module = onyx_ptp_interface - enabled = False - interfaces = {'Eth1/1': ('ethernet', '1/1'), 'Vlan 1': ('vlan', '1')} - - def setUp(self): - self.enabled = False - super(TestOnyxPtpInterface, self).setUp() - self.mock_get_config = patch.object( - onyx_ptp_interface.OnyxPtpInterfaceModule, "_show_ptp_interface_config") - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestOnyxPtpInterface, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - config_file = 'onyx_show_ptp_interface.cfg' - data = None - if self.enabled: - data = load_fixture(config_file) - - self.get_config.return_value = data - self.load_config.return_value = None - - def test_ptp_disabled_no_change(self): - for interface in self.interfaces: - set_module_args(dict(state='disabled', name=interface)) - self.execute_module(changed=False) - - def test_ptp_disabled_with_change(self): - self.enabled = True - for interface in self.interfaces: - set_module_args(dict(state='disabled', name=interface)) - interface_type, interface_id = self.interfaces.get(interface) - commands = ['no interface %s %s ptp enable' % (interface_type, interface_id)] - self.execute_module(changed=True, commands=commands) - - def test_ptp_enabled_no_change(self): - self.enabled = True - for interface in self.interfaces: - set_module_args(dict(state='enabled', name=interface)) - self.execute_module(changed=False) - - def test_ptp_enabled_with_change(self): - for interface in self.interfaces: - set_module_args(dict(state='disabled', name=interface)) - interface_type, interface_id = self.interfaces.get(interface) - set_module_args(dict(state='enabled', name=interface)) - commands = ['interface %s %s ptp enable' % (interface_type, interface_id)] - self.execute_module(changed=True, commands=commands) - - def test_ptp_attributs_no_change(self): - self.enabled = True - for interface in self.interfaces: - set_module_args(dict(state='enabled', name=interface, delay_request=0, - announce_interval=-2, announce_timeout=3, - sync_interval=-3)) - self.execute_module(changed=False) - - def test_ptp_attributs_with_change(self): - self.enabled = True - for interface in self.interfaces: - set_module_args(dict(state='enabled', name=interface, delay_request=2, - announce_interval=-1, announce_timeout=5, sync_interval=-1)) - interface_type, interface_id = self.interfaces.get(interface) - commands = ['interface %s %s ptp delay-req interval 2' % (interface_type, interface_id), - 'interface %s %s ptp announce interval -1' % (interface_type, interface_id), - 'interface %s %s ptp announce timeout 5' % (interface_type, interface_id), - 'interface %s %s ptp sync interval -1' % (interface_type, interface_id)] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_qos.py b/test/units/modules/network/onyx/test_onyx_qos.py deleted file mode 100644 index 7d578cec49..0000000000 --- a/test/units/modules/network/onyx/test_onyx_qos.py +++ /dev/null @@ -1,52 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_qos -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxQosModule(TestOnyxModule): - - module = onyx_qos - - def setUp(self): - super(TestOnyxQosModule, self).setUp() - self.mock_get_if_qos_config = patch.object( - onyx_qos.OnyxQosModule, "_show_interface_qos") - self.get_if_qos_config = self.mock_get_if_qos_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestOnyxQosModule, self).tearDown() - self.mock_get_if_qos_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - qos_interface_ethernet_config_file = 'show_qos_interface_ethernet.cfg' - qos_interface_ethernet_data = load_fixture(qos_interface_ethernet_config_file) - self.get_if_qos_config.return_value = qos_interface_ethernet_data - self.load_config.return_value = None - - def test_qos_interface_ethernet_no_change(self): - set_module_args(dict(interfaces=["Eth1/1"], trust="both", rewrite_pcp="enabled", - rewrite_dscp="disabled")) - self.execute_module(changed=False) - - def test_qos_interface_ethernet_with_change(self): - set_module_args(dict(interfaces=["Eth1/1"], trust="L2", rewrite_pcp="disabled", - rewrite_dscp="enabled")) - commands = ["interface ethernet 1/1 no qos rewrite pcp", - "interface ethernet 1/1 qos trust L2", - "interface ethernet 1/1 qos rewrite dscp" - ] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_snmp.py b/test/units/modules/network/onyx/test_onyx_snmp.py deleted file mode 100644 index bcc9e2f4fa..0000000000 --- a/test/units/modules/network/onyx/test_onyx_snmp.py +++ /dev/null @@ -1,150 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_snmp -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxSNMPModule(TestOnyxModule): - - module = onyx_snmp - enabled = False - - def setUp(self): - self.enabled = False - super(TestOnyxSNMPModule, self).setUp() - self.mock_get_config = patch.object( - onyx_snmp.OnyxSNMPModule, "_show_snmp_config") - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestOnyxSNMPModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - config_file = 'onyx_snmp_show.cfg' - data = load_fixture(config_file) - self.get_config.return_value = data - self.load_config.return_value = None - - def test_snmp_state_no_change(self): - set_module_args(dict(state_enabled=True)) - self.execute_module(changed=False) - - def test_snmp_state_with_change(self): - set_module_args(dict(state_enabled=False)) - commands = ['no snmp-server enable'] - self.execute_module(changed=True, commands=commands) - - def test_snmp_contact_no_change(self): - set_module_args(dict(contact_name='sara')) - self.execute_module(changed=False) - - def test_snmp_contact_with_change(self): - set_module_args(dict(contact_name='Omar')) - commands = ['snmp-server contact Omar'] - self.execute_module(changed=True, commands=commands) - - def test_snmp_location_no_change(self): - set_module_args(dict(location='Jordan')) - self.execute_module(changed=False) - - def test_snmp_location_with_change(self): - set_module_args(dict(location='London')) - commands = ['snmp-server location London'] - self.execute_module(changed=True, commands=commands) - - def test_snmp_communities_state_no_change(self): - set_module_args(dict(communities_enabled=True)) - self.execute_module(changed=False) - - def test_snmp_communities_state_with_change(self): - set_module_args(dict(communities_enabled=False)) - commands = ['no snmp-server enable communities'] - self.execute_module(changed=True, commands=commands) - - def test_snmp_multi_communities_state_with_no_change(self): - set_module_args(dict(multi_communities_enabled=True)) - self.execute_module(changed=False) - - def test_snmp_multi_communities_state_with_change(self): - set_module_args(dict(multi_communities_enabled=False)) - commands = ['no snmp-server enable mult-communities'] - self.execute_module(changed=True, commands=commands) - - def test_snmp_communities_no_change(self): - set_module_args(dict(snmp_communities=[dict(community_name='community_2', - community_type='read-write')])) - self.execute_module(changed=False) - - def test_snmp_communities_with_change(self): - set_module_args(dict(snmp_communities=[dict(community_name='community_2', - community_type='read-only')])) - commands = ['snmp-server community community_2 ro'] - self.execute_module(changed=True, commands=commands) - - def test_snmp_communities_delete_with_change(self): - set_module_args(dict(snmp_communities=[dict(community_name='community_1', - state='absent')])) - commands = ['no snmp-server community community_1'] - self.execute_module(changed=True, commands=commands) - - def test_snmp_notify_state_no_change(self): - set_module_args(dict(notify_enabled=True)) - self.execute_module(changed=False) - - def test_snmp_notify_state_with_change(self): - set_module_args(dict(notify_enabled=False)) - commands = ['no snmp-server enable notify'] - self.execute_module(changed=True, commands=commands) - - def test_snmp_notify_port_no_change(self): - set_module_args(dict(notify_port='1')) - self.execute_module(changed=False) - - def test_snmp_notify_port_with_change(self): - set_module_args(dict(notify_port='2')) - commands = ['snmp-server notify port 2'] - self.execute_module(changed=True, commands=commands) - - def test_snmp_notify_community_no_change(self): - set_module_args(dict(notify_community='community_1')) - self.execute_module(changed=False) - - def test_snmp_notify_community_with_change(self): - set_module_args(dict(notify_community='community_2')) - commands = ['snmp-server notify community community_2'] - self.execute_module(changed=True, commands=commands) - - def test_snmp_notify_send_test_with_change(self): - set_module_args(dict(notify_send_test='yes')) - commands = ['snmp-server notify send-test'] - self.execute_module(changed=True, commands=commands) - - def test_snmp_notify_event_with_change(self): - set_module_args(dict(notify_event='interface-up')) - commands = ['snmp-server notify event interface-up'] - self.execute_module(changed=True, commands=commands) - - def test_snmp_permissions_with_change(self): - set_module_args(dict(snmp_permissions=[dict(state_enabled=True, - permission_type='RFC1213-MIB')])) - commands = ['snmp-server enable set-permission RFC1213-MIB'] - self.execute_module(changed=True, commands=commands) - - def test_snmp_engine_id_reset_with_change(self): - set_module_args(dict(engine_id_reset='yes')) - commands = ['snmp-server engineID reset'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_snmp_hosts.py b/test/units/modules/network/onyx/test_onyx_snmp_hosts.py deleted file mode 100644 index 85bba27724..0000000000 --- a/test/units/modules/network/onyx/test_onyx_snmp_hosts.py +++ /dev/null @@ -1,170 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_snmp_hosts -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxSNMPHostsModule(TestOnyxModule): - - module = onyx_snmp_hosts - - def setUp(self): - self.enabled = False - super(TestOnyxSNMPHostsModule, self).setUp() - self.mock_get_config = patch.object( - onyx_snmp_hosts.OnyxSNMPHostsModule, "_show_hosts_config") - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestOnyxSNMPHostsModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - config_file = 'onyx_show_snmp_hosts.cfg' - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - - def test_snmp_host_enabled_state_no_change(self): - set_module_args(dict(hosts=[dict(name='1.1.1.1', - enabled=True)])) - self.execute_module(changed=False) - - def test_snmp_host_enabled_state_with_change(self): - set_module_args(dict(hosts=[dict(name='1.1.1.1', - enabled=False)])) - commands = ['snmp-server host 1.1.1.1 disable'] - self.execute_module(changed=True, commands=commands) - - def test_snmp_host_notification_type_no_change(self): - set_module_args(dict(hosts=[dict(name='2.2.2.2', - notification_type='trap', - version='2c', - port='5')])) - self.execute_module(changed=False) - - def test_snmp_host_notification_type_with_change(self): - set_module_args(dict(hosts=[dict(name='2.2.2.2', - notification_type='inform', - version='2c', - port='5')])) - commands = ['snmp-server host 2.2.2.2 informs port 5 version 2c'] - self.execute_module(changed=True, commands=commands) - - def test_snmp_host_version_no_change(self): - set_module_args(dict(hosts=[dict(name='2.2.2.2', - notification_type='trap', - version='2c', - port='5')])) - self.execute_module(changed=False) - - def test_snmp_host_version_with_change(self): - set_module_args(dict(hosts=[dict(name='2.2.2.2', - notification_type='trap', - version='1', - port='5')])) - commands = ['snmp-server host 2.2.2.2 traps port 5 version 1'] - self.execute_module(changed=True, commands=commands) - - def test_snmp_host_port_no_change(self): - set_module_args(dict(hosts=[dict(name='2.2.2.2', - notification_type='trap', - version='2c', - port='5')])) - self.execute_module(changed=False) - - def test_snmp_host_port_with_change(self): - set_module_args(dict(hosts=[dict(name='2.2.2.2', - notification_type='trap', - version='2c', - port='3')])) - commands = ['snmp-server host 2.2.2.2 traps port 3 version 2c'] - self.execute_module(changed=True, commands=commands) - - def test_snmp_host_user_name_no_change(self): - set_module_args(dict(hosts=[dict(name='1.1.1.1', - notification_type='inform', - version='3', - port='3', - user_name='sara', - auth_type='md5', - auth_password='sara123saea1234678')])) - self.execute_module(changed=False) - - def test_snmp_host_user_name_with_change(self): - set_module_args(dict(hosts=[dict(name='1.1.1.1', - notification_type='inform', - version='3', - port='3', - user_name='masa', - auth_type='md5', - auth_password='sara123saea1234678')])) - commands = ['snmp-server host 1.1.1.1 informs port 3 version 3 user masa auth md5 sara123saea1234678'] - self.execute_module(changed=True, commands=commands) - - def test_snmp_host_auth_type_no_change(self): - set_module_args(dict(hosts=[dict(name='1.1.1.1', - notification_type='inform', - version='3', - port='3', - user_name='sara', - auth_type='md5', - auth_password='sara123saea1234678')])) - self.execute_module(changed=False) - - def test_snmp_host_auth_type_with_change(self): - set_module_args(dict(hosts=[dict(name='1.1.1.1', - notification_type='inform', - version='3', - port='3', - user_name='sara', - auth_type='sha', - auth_password='sara123saea1234678')])) - commands = ['snmp-server host 1.1.1.1 informs port 3 version 3 user sara auth sha sara123saea1234678'] - self.execute_module(changed=True, commands=commands) - - def test_snmp_host_privacy_type_no_change(self): - set_module_args(dict(hosts=[dict(name='1.1.1.1', - notification_type='inform', - version='3', - port='3', - user_name='sara', - auth_type='md5', - auth_password='sara123saea1234678', - privacy_type='3des', - privacy_password='pjqriuewjhksjmdoiws')])) - self.execute_module(changed=False) - - def test_snmp_host_privacy_type_with_change(self): - set_module_args(dict(hosts=[dict(name='1.1.1.1', - notification_type='inform', - version='3', - port='3', - user_name='sara', - auth_type='md5', - auth_password='sara123saea1234678', - privacy_type='aes-192', - privacy_password='pjqriuewjhksjmdoiws')])) - commands = ['snmp-server host 1.1.1.1 informs port 3 version 3 user sara auth md5 sara123saea1234678 priv aes-192 pjqriuewjhksjmdoiws'] - self.execute_module(changed=True, commands=commands) - - def test_snmp_host_state_with_change(self): - set_module_args(dict(hosts=[dict(name='2.2.2.2', - notification_type='trap', - version='2c', - port='5', - state='absent')])) - commands = ['no snmp-server host 2.2.2.2'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_snmp_users.py b/test/units/modules/network/onyx/test_onyx_snmp_users.py deleted file mode 100644 index cc4176cd49..0000000000 --- a/test/units/modules/network/onyx/test_onyx_snmp_users.py +++ /dev/null @@ -1,95 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_snmp_users -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxSNMPUsersModule(TestOnyxModule): - - module = onyx_snmp_users - - def setUp(self): - self.enabled = False - super(TestOnyxSNMPUsersModule, self).setUp() - self.mock_get_config = patch.object( - onyx_snmp_users.OnyxSNMPUsersModule, "_show_users") - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestOnyxSNMPUsersModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - config_file = 'onyx_show_snmp_users.cfg' - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - - def test_snmp_user_state_no_change(self): - set_module_args(dict(users=[dict(name='sara', - enabled='true')])) - self.execute_module(changed=False) - - def test_snmp_user_state_with_change(self): - set_module_args(dict(users=[dict(name='sara', - enabled='false')])) - commands = ['no snmp-server user sara v3 enable'] - self.execute_module(changed=True, commands=commands) - - def test_snmp_user_set_access_state_no_change(self): - set_module_args(dict(users=[dict(name='sara', - set_access_enabled='true')])) - self.execute_module(changed=False) - - def test_snmp_user_set_access_state_with_change(self): - set_module_args(dict(users=[dict(name='sara', - set_access_enabled='false')])) - commands = ['no snmp-server user sara v3 enable sets'] - self.execute_module(changed=True, commands=commands) - - def test_snmp_user_require_privacy_state_no_change(self): - set_module_args(dict(users=[dict(name='sara', - require_privacy='false')])) - self.execute_module(changed=False) - - def test_snmp_user_require_privacy_state_with_change(self): - set_module_args(dict(users=[dict(name='sara', - require_privacy='yes')])) - commands = ['snmp-server user sara v3 require-privacy'] - self.execute_module(changed=True, commands=commands) - - def test_snmp_user_auth_type_no_change(self): - set_module_args(dict(users=[dict(name='sara', - auth_type='sha', - auth_password='12sara123456')])) - self.execute_module(changed=False) - - def test_snmp_user_auth_type_with_change(self): - set_module_args(dict(users=[dict(name='sara', - auth_type='md5', - auth_password='12sara123456')])) - commands = ['snmp-server user sara v3 auth md5 12sara123456'] - self.execute_module(changed=True, commands=commands) - - def test_snmp_user_capability_level_no_change(self): - set_module_args(dict(users=[dict(name='sara', - capability_level='admin')])) - self.execute_module(changed=False) - - def test_snmp_user_capability_level_with_change(self): - set_module_args(dict(users=[dict(name='sara', - capability_level='monitor')])) - commands = ['snmp-server user sara v3 capability monitor'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_syslog_files.py b/test/units/modules/network/onyx/test_onyx_syslog_files.py deleted file mode 100644 index 9307de55cf..0000000000 --- a/test/units/modules/network/onyx/test_onyx_syslog_files.py +++ /dev/null @@ -1,113 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_syslog_files -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxSyslogFilesModule(TestOnyxModule): - - module = onyx_syslog_files - - def setUp(self): - self.enabled = False - super(TestOnyxSyslogFilesModule, self).setUp() - self.mock_get_config = patch.object( - onyx_syslog_files.OnyxSyslogFilesModule, "show_logging") - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestOnyxSyslogFilesModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - config_file = 'onyx_logging_show.cfg' - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - - def test_syslog_files_force_rotate(self): - set_module_args(dict(rotation=dict(force=True))) - commands = ["logging files rotation force"] - self.execute_module(changed=True, commands=commands) - - def test_syslog_files_max_num(self): - set_module_args(dict(rotation=dict(max_num=30))) - commands = ["logging files rotation max-num 30"] - self.execute_module(changed=True, commands=commands) - - def test_syslog_files_freq(self): - set_module_args(dict(rotation=dict(frequency="daily"))) - commands = ["logging files rotation criteria frequency daily"] - self.execute_module(changed=True, commands=commands) - - def test_syslog_files_size(self): - set_module_args(dict(rotation=dict(size=10.5))) - commands = ["logging files rotation criteria size 10.5"] - self.execute_module(changed=True, commands=commands) - - def test_syslog_files_delete(self): - set_module_args(dict(delete_group="oldest")) - commands = ["logging files delete oldest"] - self.execute_module(changed=True, commands=commands) - - def test_syslog_debug_files_force_rotate(self): - set_module_args(dict(rotation=dict(force=True), debug=True)) - commands = ["logging debug-files rotation force"] - self.execute_module(changed=True, commands=commands) - - def test_syslog_debug_files_max_num(self): - set_module_args(dict(rotation=dict(max_num=30), debug=True)) - commands = ["logging debug-files rotation max-num 30"] - self.execute_module(changed=True, commands=commands) - - def test_syslog_debug_files_freq(self): - set_module_args(dict(rotation=dict(frequency="weekly"), debug=True)) - commands = ["logging debug-files rotation criteria frequency weekly"] - self.execute_module(changed=True, commands=commands) - - def test_syslog_debug_files_size(self): - set_module_args(dict(rotation=dict(size=10.5), debug=True)) - commands = ["logging debug-files rotation criteria size 10.5"] - self.execute_module(changed=True, commands=commands) - - def test_syslog_debug_files_delete(self): - set_module_args(dict(delete_group="oldest", debug=True)) - commands = ["logging debug-files delete oldest"] - self.execute_module(changed=True, commands=commands) - - ''' nochange ''' - def test_syslog_files_max_num_no_change(self): - set_module_args(dict(rotation=dict(max_num=10))) - self.execute_module(changed=False) - - def test_syslog_files_freq_no_change(self): - set_module_args(dict(rotation=dict(frequency="weekly"))) - self.execute_module(changed=False) - - def test_syslog_files_size_no_change(self): - set_module_args(dict(rotation=dict(size_pct=10))) - self.execute_module(changed=False) - - def test_syslog_debug_files_max_num_no_change(self): - set_module_args(dict(rotation=dict(max_num=20), debug=True)) - self.execute_module(changed=False) - - def test_syslog_debug_files_freq_no_change(self): - set_module_args(dict(rotation=dict(frequency="daily"), debug=True)) - self.execute_module(changed=False) - - def test_syslog_debug_files_size_no_change(self): - set_module_args(dict(rotation=dict(size=20), debug=True)) - self.execute_module(changed=False) diff --git a/test/units/modules/network/onyx/test_onyx_syslog_remote.py b/test/units/modules/network/onyx/test_onyx_syslog_remote.py deleted file mode 100644 index f5b9d5d72d..0000000000 --- a/test/units/modules/network/onyx/test_onyx_syslog_remote.py +++ /dev/null @@ -1,91 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_syslog_remote -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxSysLogRemoteModule(TestOnyxModule): - - module = onyx_syslog_remote - - def setUp(self): - self.enabled = False - super(TestOnyxSysLogRemoteModule, self).setUp() - self.mock_get_config = patch.object( - onyx_syslog_remote.OnyxSyslogRemoteModule, "show_logging") - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestOnyxSysLogRemoteModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - config_file = 'onyx_logging_config_show.cfg' - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - - def test_syslog_new_host(self): - set_module_args(dict(host="10.10.20.20")) - commands = ["logging 10.10.20.20"] - self.execute_module(changed=True, commands=commands) - - def test_syslog_new_host_port(self): - set_module_args(dict(host="10.10.20.20", port=8080)) - commands = ['logging 10.10.20.20', 'logging 10.10.20.20 port 8080'] - self.execute_module(changed=True, commands=commands) - - def test_syslog_override(self): - set_module_args(dict(host="10.10.10.12", trap_override=[dict(override_class="sx-sdk", override_priority='emerg'), - dict(override_class="mgmt-back", override_priority='emerg')])) - commands = ["logging 10.10.10.12 trap override class mgmt-back priority emerg"] # no sx-sdk its already configured - self.execute_module(changed=True, commands=commands) - - def test_syslog_trap(self): - set_module_args(dict(host="10.10.10.10", trap="notice")) - commands = ["logging 10.10.10.10 trap notice"] - self.execute_module(changed=True, commands=commands) - - def test_syslog_include_filter(self): - set_module_args(dict(host="10.10.10.10", filter="include", filter_str=".*ERR.*")) - commands = ['logging 10.10.10.10 filter include .*ERR.*'] - self.execute_module(changed=True, commands=commands) - - def test_syslog_no_override(self): - set_module_args(dict(host="10.10.10.12", trap_override=[dict(override_class="sx-sdk", override_enabled=False), - dict(override_class="mgmt-front", override_enabled=False)])) - commands = ['no logging 10.10.10.12 trap override class sx-sdk'] # no mgmt-front because doesn't configured - self.execute_module(changed=True, commands=commands) - - def test_syslog_no_port(self): - set_module_args(dict(host="10.10.10.12", enabled=False)) - commands = ['no logging 10.10.10.12'] - self.execute_module(changed=True, commands=commands) - - def test_syslog_filter_no_change(self): - set_module_args(dict(host="10.10.10.10", filter="exclude", filter_str=".*ERR.*")) - self.execute_module(changed=False) - - def test_syslog_trap_no_change(self): - set_module_args(dict(host="10.10.10.10", trap="info")) - self.execute_module(changed=False) - - def test_syslog_add_port_no_change(self): - set_module_args(dict(host="10.10.10.12", port=80)) - self.execute_module(changed=False) - - def test_syslog_override_no_change(self): - set_module_args(dict(host="10.10.10.12", trap_override=[dict(override_priority="emerg", override_class="sx-sdk")])) - self.execute_module(changed=False) diff --git a/test/units/modules/network/onyx/test_onyx_traffic_class.py b/test/units/modules/network/onyx/test_onyx_traffic_class.py deleted file mode 100644 index d62feca137..0000000000 --- a/test/units/modules/network/onyx/test_onyx_traffic_class.py +++ /dev/null @@ -1,108 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_traffic_class -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxTrafficClassModule(TestOnyxModule): - - module = onyx_traffic_class - arp_suppression = True - - def setUp(self): - super(TestOnyxTrafficClassModule, self).setUp() - self.mock_get_congestion_control_config = patch.object( - onyx_traffic_class.OnyxTrafficClassModule, "_show_interface_congestion_control") - self.get_congestion_control_config = self.mock_get_congestion_control_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_dcb_config = patch.object( - onyx_traffic_class.OnyxTrafficClassModule, "_show_interface_dcb_ets") - self.get_dcb_config = self.mock_get_dcb_config.start() - - def tearDown(self): - super(TestOnyxTrafficClassModule, self).tearDown() - self.mock_get_congestion_control_config.stop() - self.mock_load_config.stop() - self.mock_get_dcb_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - interfaces_congestion_control_config_file = 'onyx_show_interface_congestion_control.cfg' - interfaces_dcb_config_file = 'onyx_show_dcb_ets_interface.cfg' - interfaces_congestion_control_data = load_fixture(interfaces_congestion_control_config_file) - interfaces_dcb_config_data = load_fixture(interfaces_dcb_config_file) - self.get_congestion_control_config.return_value = interfaces_congestion_control_data - self.get_dcb_config.return_value = interfaces_dcb_config_data - self.load_config.return_value = None - - def test_configure_congestion_control_disabled_with_change(self): - set_module_args(dict(interfaces=["Eth1/1"], tc=1, - congestion_control=dict(control="ecn", threshold_mode="absolute", - min_threshold=500, max_threshold=1500))) - commands = [ - "interface ethernet 1/1 traffic-class 1 congestion-control ecn minimum-absolute 500 maximum-absolute 1500" - ] - self.execute_module(changed=True, commands=commands) - - def test_configure_congestion_control_disabled_with_no_change(self): - set_module_args(dict(state="disabled", interfaces=["Eth1/1"], tc=0)) - - self.execute_module(changed=False) - - def test_configure_congestion_control_with_change(self): - set_module_args(dict(interfaces=["Eth1/1"], tc=2, - congestion_control=dict(control="ecn", threshold_mode="relative", - min_threshold=9, max_threshold=88))) - commands = [ - "interface ethernet 1/1 traffic-class 2 congestion-control ecn minimum-relative 9 maximum-relative 88" - ] - self.execute_module(changed=True, commands=commands) - - def test_configure_congestion_control_absolute_with_change(self): - set_module_args(dict(interfaces=["Eth1/1"], tc=3, - congestion_control=dict(control="ecn", threshold_mode="absolute", - min_threshold=500, max_threshold=1500))) - commands = [ - "interface ethernet 1/1 traffic-class 3 congestion-control ecn minimum-absolute 500 maximum-absolute 1500" - ] - self.execute_module(changed=True, commands=commands) - - def test_configure_congestion_control_with_no_change(self): - set_module_args(dict(interfaces=["Eth1/1"], tc=3, - congestion_control=dict(control="ecn", threshold_mode="absolute", - min_threshold=500, max_threshold=1550))) - self.execute_module(changed=False) - - def test_configure_dcb_mode_with_no_change(self): - set_module_args(dict(interfaces=["Eth1/1"], tc=3, dcb=dict(mode="strict"))) - self.execute_module(changed=False) - - def test_configure_dcb_strict_mode_with_change(self): - set_module_args(dict(interfaces=["Eth1/1"], tc=1, dcb=dict(mode="strict"))) - commands = [ - "interface ethernet 1/1 traffic-class 1 dcb ets strict" - ] - self.execute_module(changed=True, commands=commands) - - def test_configure_dcb_wrr_mode_with_change(self): - set_module_args(dict(interfaces=["Eth1/1"], tc=0, dcb=dict(mode="wrr", weight=10))) - commands = [ - "interface ethernet 1/1 traffic-class 0 dcb ets wrr 10" - ] - self.execute_module(changed=True, commands=commands) - - def test_configure_dcb_wrr_mode_with_no_change(self): - set_module_args(dict(interfaces=["Eth1/1"], tc=0, dcb=dict(mode="wrr", weight=12))) - - self.execute_module(changed=False) diff --git a/test/units/modules/network/onyx/test_onyx_username.py b/test/units/modules/network/onyx/test_onyx_username.py deleted file mode 100644 index f40de66602..0000000000 --- a/test/units/modules/network/onyx/test_onyx_username.py +++ /dev/null @@ -1,99 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_username -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxUsernameModule(TestOnyxModule): - - module = onyx_username - - def setUp(self): - self.enabled = False - super(TestOnyxUsernameModule, self).setUp() - self.mock_get_config = patch.object( - onyx_username.OnyxUsernameModule, "_get_username_config") - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestOnyxUsernameModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - config_file = 'onyx_username_show.cfg' - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - - def test_new_username(self): - set_module_args(dict(username='test')) - commands = ['username test'] - self.execute_module(changed=True, commands=commands) - - def test_change_full_username(self): - set_module_args(dict(username='anass', full_name="anasshami")) - commands = ['username anass full-name anasshami'] - self.execute_module(changed=True, commands=commands) - - def test_change_username_password(self): - set_module_args(dict(username='anass', password="12345")) - commands = ['username anass password 12345'] - self.execute_module(changed=True, commands=commands) - - def test_change_username_password_encrypted(self): - set_module_args(dict(username='anass', password="12345", encrypted_password=True)) - commands = ['username anass password 7 12345'] - self.execute_module(changed=True, commands=commands) - - def test_disable_username(self): - set_module_args(dict(username='anass', disabled="all")) - commands = ['username anass disable'] - self.execute_module(changed=True, commands=commands) - - def test_disable_username_login(self): - set_module_args(dict(username='anass', disabled="login")) - commands = ['username anass disable login'] - self.execute_module(changed=True, commands=commands) - - def test_disable_username_password(self): - set_module_args(dict(username='anass', disabled="password")) - commands = ['username anass disable password'] - self.execute_module(changed=True, commands=commands) - - def test_change_username_capability(self): - set_module_args(dict(username='anass', capability="monitor")) - commands = ['username anass capability monitor'] - self.execute_module(changed=True, commands=commands) - - def test_disconnect_username(self): - set_module_args(dict(username='anass', disconnected=True)) - commands = ['username anass disconnect'] - self.execute_module(changed=True, commands=commands) - - def test_no_change_username_capability(self): - set_module_args(dict(username='anass', capability="admin")) - self.execute_module(changed=False) - - def test_no_change_username_disabled(self): - set_module_args(dict(username='anassh', disabled="all")) - self.execute_module(changed=False) - - def test_no_change_username_nopass(self): - set_module_args(dict(username='admin', nopassword=True)) - self.execute_module(changed=False) - - def test_no_change_full_username(self): - set_module_args(dict(username='admin', full_name="System Administrator")) - self.execute_module(changed=False) diff --git a/test/units/modules/network/onyx/test_onyx_vlan.py b/test/units/modules/network/onyx/test_onyx_vlan.py deleted file mode 100644 index 9697444854..0000000000 --- a/test/units/modules/network/onyx/test_onyx_vlan.py +++ /dev/null @@ -1,106 +0,0 @@ -# -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_vlan -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxVlanModule(TestOnyxModule): - - module = onyx_vlan - - def setUp(self): - super(TestOnyxVlanModule, self).setUp() - self.mock_get_config = patch.object( - onyx_vlan.OnyxVlanModule, "_get_vlan_config") - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_version = patch.object( - onyx_vlan.OnyxVlanModule, "_get_os_version") - self.get_version = self.mock_get_version.start() - - def tearDown(self): - super(TestOnyxVlanModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_get_version.stop() - - def load_fixtures(self, commands=None, transport='cli'): - config_file = 'onyx_vlan_show.cfg' - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - self.get_version.return_value = "3.6.5000" - - def test_vlan_no_change(self): - set_module_args(dict(vlan_id=20)) - self.execute_module(changed=False) - - def test_vlan_remove_name(self): - set_module_args(dict(vlan_id=10, name='')) - commands = ['vlan 10 no name'] - self.execute_module(changed=True, commands=commands) - - def test_vlan_change_name(self): - set_module_args(dict(vlan_id=10, name='test-test')) - commands = ['vlan 10 name test-test'] - self.execute_module(changed=True, commands=commands) - - def test_vlan_create(self): - set_module_args(dict(vlan_id=30)) - commands = ['vlan 30', 'exit'] - self.execute_module(changed=True, commands=commands) - - def test_vlan_create_with_name(self): - set_module_args(dict(vlan_id=30, name='test-test')) - commands = ['vlan 30', 'exit', 'vlan 30 name test-test'] - self.execute_module(changed=True, commands=commands) - - def test_vlan_remove(self): - set_module_args(dict(vlan_id=20, state='absent')) - commands = ['no vlan 20'] - self.execute_module(changed=True, commands=commands) - - def test_vlan_remove_not_exist(self): - set_module_args(dict(vlan_id=30, state='absent')) - self.execute_module(changed=False) - - def test_vlan_aggregate(self): - aggregate = list() - aggregate.append(dict(vlan_id=30)) - aggregate.append(dict(vlan_id=20)) - set_module_args(dict(aggregate=aggregate)) - commands = ['vlan 30', 'exit'] - self.execute_module(changed=True, commands=commands) - - def test_vlan_aggregate_purge(self): - aggregate = list() - aggregate.append(dict(vlan_id=30)) - aggregate.append(dict(vlan_id=20)) - set_module_args(dict(aggregate=aggregate, purge=True)) - commands = ['vlan 30', 'exit', 'no vlan 10', 'no vlan 1'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_vxlan.py b/test/units/modules/network/onyx/test_onyx_vxlan.py deleted file mode 100644 index 5800d0fda7..0000000000 --- a/test/units/modules/network/onyx/test_onyx_vxlan.py +++ /dev/null @@ -1,101 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_vxlan -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxVxlanModule(TestOnyxModule): - - module = onyx_vxlan - arp_suppression = True - - def setUp(self): - super(TestOnyxVxlanModule, self).setUp() - self.mock_get_vxlan_config = patch.object( - onyx_vxlan.OnyxVxlanModule, "_show_vxlan_config") - self.get_vxlan_config = self.mock_get_vxlan_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_nve_detail = patch.object( - onyx_vxlan.OnyxVxlanModule, "_show_nve_detail") - self.get_nve_detail = self.mock_get_nve_detail.start() - - def tearDown(self): - super(TestOnyxVxlanModule, self).tearDown() - self.mock_get_vxlan_config.stop() - self.mock_load_config.stop() - self.mock_get_nve_detail.stop() - - def load_fixtures(self, commands=None, transport='cli'): - interfaces_nve_config_file = 'onyx_show_interfaces_nve.cfg' - interfaces_nve_detail_config_file = 'onyx_show_interfaces_nve_detail.cfg' - self.get_nve_detail.return_value = None - interfaces_nve_detail_data = load_fixture(interfaces_nve_detail_config_file) - interfaces_nv_data = load_fixture(interfaces_nve_config_file) - self.get_nve_detail.return_value = interfaces_nve_detail_data - if self.arp_suppression is False: - interfaces_nve_detail_data[0]["10"][0]["Neigh Suppression"] = "Disable" - interfaces_nve_detail_data[0]["6"][0]["Neigh Suppression"] = "Disable" - self.get_nve_detail.return_value = interfaces_nve_detail_data - self.get_vxlan_config.return_value = interfaces_nv_data - - self.load_config.return_value = None - - def test_configure_vxlan_no_change(self): - set_module_args(dict(nve_id=1, loopback_id=1, bgp=True, mlag_tunnel_ip='192.10.10.1', - vni_vlan_list=[dict(vlan_id=10, vni_id=10010), dict(vlan_id=6, vni_id=10060)], - arp_suppression=True)) - self.execute_module(changed=False) - - def test_configure_vxlan_with_change(self): - set_module_args(dict(nve_id=2, loopback_id=1, bgp=True, mlag_tunnel_ip='192.10.10.1', - vni_vlan_list=[dict(vlan_id=10, vni_id=10010), dict(vlan_id=6, vni_id=10060)], - arp_suppression=True)) - commands = [ - "no interface nve 1", "interface nve 2", "exit", - "interface nve 2 vxlan source interface loopback 1 ", - "interface nve 2 nve controller bgp", "interface nve 2 vxlan mlag-tunnel-ip 192.10.10.1", - "interface nve 2 nve neigh-suppression", "interface nve 2 nve vni 10010 vlan 10", - "interface vlan 10", "exit", "interface nve 2 nve vni 10060 vlan 6", "interface vlan 6", "exit" - ] - self.execute_module(changed=True, commands=commands) - - def test_loopback_id_with_change(self): - set_module_args(dict(nve_id=1, loopback_id=2, bgp=True, mlag_tunnel_ip='192.10.10.1', - vni_vlan_list=[dict(vlan_id=10, vni_id=10010), dict(vlan_id=6, vni_id=10060)], - arp_suppression=True)) - commands = ["interface nve 1 vxlan source interface loopback 2 "] - self.execute_module(changed=True, commands=commands) - - def test_mlag_tunnel_ip_with_change(self): - set_module_args(dict(nve_id=1, loopback_id=1, bgp=True, mlag_tunnel_ip='192.10.10.10', - vni_vlan_list=[dict(vlan_id=10, vni_id=10010), dict(vlan_id=6, vni_id=10060)], - arp_suppression=True)) - commands = ["interface nve 1 vxlan mlag-tunnel-ip 192.10.10.10"] - self.execute_module(changed=True, commands=commands) - - def test_vni_vlan_list_with_change(self): - set_module_args(dict(nve_id=1, loopback_id=1, bgp=True, mlag_tunnel_ip='192.10.10.1', - vni_vlan_list=[dict(vlan_id=11, vni_id=10011), dict(vlan_id=7, vni_id=10061)], - arp_suppression=False)) - commands = ["interface nve 1 nve vni 10011 vlan 11", "interface nve 1 nve vni 10061 vlan 7"] - self.execute_module(changed=True, commands=commands) - - def test_arp_suppression_with_change(self): - self.arp_suppression = False - set_module_args(dict(nve_id=1, loopback_id=1, bgp=True, mlag_tunnel_ip='192.10.10.1', - vni_vlan_list=[dict(vlan_id=10, vni_id=10010), dict(vlan_id=6, vni_id=10060)], - arp_suppression=True)) - commands = ["interface vlan 10", "exit", "interface vlan 6", "exit"] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/onyx/test_onyx_wjh.py b/test/units/modules/network/onyx/test_onyx_wjh.py deleted file mode 100644 index e98c8841eb..0000000000 --- a/test/units/modules/network/onyx/test_onyx_wjh.py +++ /dev/null @@ -1,66 +0,0 @@ -# -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.onyx import onyx_wjh -from units.modules.utils import set_module_args -from .onyx_module import TestOnyxModule, load_fixture - - -class TestOnyxWJHModule(TestOnyxModule): - - module = onyx_wjh - - def setUp(self): - self.enabled = False - super(TestOnyxWJHModule, self).setUp() - self.mock_get_config = patch.object( - onyx_wjh.OnyxWJHModule, "_get_wjh_config") - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.onyx.onyx.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestOnyxWJHModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, transport='cli'): - config_file = 'onyx_wjh_show.cfg' - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - - def test_wjh_no_change(self): - set_module_args(dict(group='forwarding', enabled=False)) - self.execute_module(changed=False) - - def test_wjh_enable(self): - set_module_args(dict(group='forwarding', enabled=True)) - commands = ['what-just-happened forwarding enable'] - self.execute_module(changed=True, commands=commands) - - def test_wjh_export_no_change(self): - set_module_args(dict(export_group='forwarding', auto_export=False)) - self.execute_module(changed=False) - - def test_wjh_export_enable(self): - set_module_args(dict(export_group='forwarding', auto_export=True)) - commands = ['what-just-happened auto-export forwarding enable'] - self.execute_module(changed=True, commands=commands) - - def test_wjh_export_disable(self): - set_module_args(dict(export_group='all', auto_export=False)) - commands = ['no what-just-happened auto-export all enable'] - self.execute_module(changed=True, commands=commands) - - def test_wjh_clear(self): - set_module_args(dict(clear_group='all')) - commands = ['clear what-just-happened pcap-files all'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/opx/fixtures/opx_get_config.cfg b/test/units/modules/network/opx/fixtures/opx_get_config.cfg deleted file mode 100644 index 37db58272e..0000000000 --- a/test/units/modules/network/opx/fixtures/opx_get_config.cfg +++ /dev/null @@ -1,10 +0,0 @@ - { - "base-if-vlan/if/interfaces/interface/id": 105, - "if/interfaces/interface/name": "br105", - "dell-base-if-cmn/if/interfaces/interface/if-index": 74, - "dell-if/if/interfaces/interface/learning-mode": 1, - "dell-if/if/interfaces/interface/mtu": 1532, - "dell-if/if/interfaces/interface/phys-address": "", - "dell-if/if/interfaces/interface/vlan-type": 1, - "if/interfaces/interface/enabled": 0 - } diff --git a/test/units/modules/network/opx/fixtures/opx_operation_create.cfg b/test/units/modules/network/opx/fixtures/opx_operation_create.cfg deleted file mode 100644 index cdecae6c19..0000000000 --- a/test/units/modules/network/opx/fixtures/opx_operation_create.cfg +++ /dev/null @@ -1,13 +0,0 @@ - { - "data": { - "base-if-vlan/if/interfaces/interface/id": 105, - "cps/key_data": { - "if/interfaces/interface/name": "br105" - }, - "cps/object-group/return-code": 0, - "dell-base-if-cmn/if/interfaces/interface/if-index": 70, - "if/interfaces/interface/type": "ianaift:l2vlan" - }, - "key": "target/dell-base-if-cmn/if/interfaces/interface" - } - diff --git a/test/units/modules/network/opx/fixtures/opx_operation_delete.cfg b/test/units/modules/network/opx/fixtures/opx_operation_delete.cfg deleted file mode 100644 index ba0ab2f97e..0000000000 --- a/test/units/modules/network/opx/fixtures/opx_operation_delete.cfg +++ /dev/null @@ -1,8 +0,0 @@ - { - "data": { - "cps/object-group/return-code": 0, - "if/interfaces/interface/name": "br105" - }, - "key": "target/dell-base-if-cmn/if/interfaces/interface" - } - diff --git a/test/units/modules/network/opx/fixtures/opx_operation_get.cfg b/test/units/modules/network/opx/fixtures/opx_operation_get.cfg deleted file mode 100644 index 08593db156..0000000000 --- a/test/units/modules/network/opx/fixtures/opx_operation_get.cfg +++ /dev/null @@ -1,16 +0,0 @@ - { - "data": { - "base-if-vlan/if/interfaces/interface/id": 105, - "cps/key_data": { - "if/interfaces/interface/name": "br105" - }, - "dell-base-if-cmn/if/interfaces/interface/if-index": 74, - "dell-if/if/interfaces/interface/learning-mode": 1, - "dell-if/if/interfaces/interface/mtu": 1532, - "dell-if/if/interfaces/interface/phys-address": "", - "dell-if/if/interfaces/interface/vlan-type": 1, - "if/interfaces/interface/enabled": 0 - }, - "key": "target/dell-base-if-cmn/if/interfaces/interface" - } - diff --git a/test/units/modules/network/opx/fixtures/opx_operation_get_db.cfg b/test/units/modules/network/opx/fixtures/opx_operation_get_db.cfg deleted file mode 100644 index 1f2571a077..0000000000 --- a/test/units/modules/network/opx/fixtures/opx_operation_get_db.cfg +++ /dev/null @@ -1,25 +0,0 @@ - { - "data": { - "base-if-phy/if/interfaces/interface/learn-mode": 3, - "base-if-phy/if/interfaces/interface/npu-id": 0, - "base-if-phy/if/interfaces/interface/phy-media": 43, - "base-if-phy/if/interfaces/interface/port-id": 25, - "base-if-phy/if/interfaces/interface/tagging-mode": 3, - "dell-base-if-cmn/if/interfaces/interface/if-index": 10, - "dell-if/if/interfaces-state/interface/supported-speed": [ - 3, - 4, - 6 - ], - "dell-if/if/interfaces/interface/auto-negotiation": 1, - "dell-if/if/interfaces/interface/duplex": 1, - "dell-if/if/interfaces/interface/mode": 1, - "dell-if/if/interfaces/interface/mtu": 1532, - "dell-if/if/interfaces/interface/phys-address": "ec:f4:bb:fc:61:9a", - "dell-if/if/interfaces/interface/speed": 0, - "if/interfaces/interface/enabled": 0, - "if/interfaces/interface/name": "e101-001-0", - "if/interfaces/interface/type": "ianaift:ethernetCsmacd" - }, - "key": "target/dell-base-if-cmn/if/interfaces/interface" - diff --git a/test/units/modules/network/opx/fixtures/opx_operation_set.cfg b/test/units/modules/network/opx/fixtures/opx_operation_set.cfg deleted file mode 100644 index 99c0354cf7..0000000000 --- a/test/units/modules/network/opx/fixtures/opx_operation_set.cfg +++ /dev/null @@ -1,11 +0,0 @@ - { - "data": { - "cps/object-group/return-code": 0, - "dell-if/if/interfaces/interface/untagged-ports": [ - "e101-001-0" - ], - "if/interfaces/interface/name": "br105" - }, - "key": "target/dell-base-if-cmn/if/interfaces/interface" - } - diff --git a/test/units/modules/network/opx/opx_module.py b/test/units/modules/network/opx/opx_module.py deleted file mode 100644 index 3741771f0e..0000000000 --- a/test/units/modules/network/opx/opx_module.py +++ /dev/null @@ -1,91 +0,0 @@ -# (c) 2018 Red Hat Inc. -# -# (c) 2018 Dell Inc. or its subsidiaries. All Rights Reserved. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json - -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase - - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(name): - path = os.path.join(fixture_path, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as f: - data = f.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class TestOpxModule(ModuleTestCase): - - def execute_module(self, failed=False, changed=False, - response=None, msg=None, db=None, - commit_event=None): - - self.load_fixtures(response) - - if failed: - result = self.failed(msg) - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed, db) - self.assertEqual(result['changed'], changed, result) - - return result - - def failed(self, msg): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - self.assertEqual(result['msg'], msg, result) - return result - - def changed(self, changed=False, db=None): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - print("res" + str(result) + "dv=" + str(db) + "ch=" + str(changed)) - self.assertEqual(result['changed'], changed, result) - if db: - self.assertEqual(result['db'], db, result) - - return result - - def load_fixtures(self, response=None): - pass diff --git a/test/units/modules/network/opx/test_opx_cps.py b/test/units/modules/network/opx/test_opx_cps.py deleted file mode 100644 index d22850301b..0000000000 --- a/test/units/modules/network/opx/test_opx_cps.py +++ /dev/null @@ -1,183 +0,0 @@ -# -# (c) 2018 Red Hat Inc. -# -# (c) 2018 Dell Inc. or its subsidiaries. All Rights Reserved. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch, Mock -import sys -sys.modules['cps'] = Mock(QUALIFIERS=[ - "target", - "observed", - "proposed", - "realtime", - "registration", - "running", - "startup" -], OPERATIONS=[ - "delete", - "create", - "set", - "action", - "get" -]) -sys.modules['cps_object'] = Mock() -sys.modules['cps_utils'] = Mock() - -from ansible.modules.network.opx import opx_cps - -from units.modules.utils import set_module_args -from .opx_module import TestOpxModule, load_fixture - - -class TestOpxCpsModule(TestOpxModule): - - module = opx_cps - - def setUp(self): - super(TestOpxCpsModule, self).setUp() - - self.mock_cps_get = patch('ansible.modules.network.opx.opx_cps.cps_get') - self.cps_get = self.mock_cps_get.start() - - self.mock_cps_transaction = patch('ansible.modules.network.opx.opx_cps.cps_transaction') - self.cps_transaction = self.mock_cps_transaction.start() - - self.mock_parse_cps_parameters = patch('ansible.modules.network.opx.opx_cps.parse_cps_parameters') - self.parse_cps_parameters = self.mock_parse_cps_parameters.start() - - self.mock_get_config = patch('ansible.modules.network.opx.opx_cps.cps_get.parse_cps_parameters') - self.get_config = self.mock_get_config.start() - - def tearDown(self): - super(TestOpxCpsModule, self).tearDown() - self.mock_cps_get.stop() - self.mock_cps_transaction.stop() - self.mock_parse_cps_parameters.stop() - self.mock_get_config.stop() - - def test_opx_operation_create(self): - resp = load_fixture('opx_operation_create.cfg') - attr_data = {"base-if-vlan/if/interfaces/interface/id": 105, - "if/interfaces/interface/type": "ianaift:l2vlan"} - module_name = "dell-base-if-cmn/if/interfaces/interface" - set_module_args(dict(module_name=module_name, operation="create", attr_data=attr_data)) - self.get_config.return_value = dict() - self.cps_transaction.return_value = dict(changed=True, response=resp) - self.execute_module(changed=True, response=resp) - self.assertEqual(self.parse_cps_parameters.call_count, 2) - self.assertEqual(self.cps_transaction.call_count, 1) - - def test_opx_operation_set(self): - resp = load_fixture('opx_operation_set.cfg') - config_data = load_fixture('opx_get_config.cfg') - attr_data = {"dell-if/if/interfaces/interface/untagged-ports": "e101-001-0", - "if/interfaces/interface/name": "br105"} - module_name = "dell-base-if-cmn/if/interfaces/interface" - set_module_args(dict(module_name=module_name, operation="set", attr_data=attr_data)) - self.get_config.return_value = config_data - self.cps_transaction.return_value = dict(changed=True, response=resp) - self.execute_module(changed=True, response=resp) - self.assertEqual(self.parse_cps_parameters.call_count, 2) - self.assertEqual(self.cps_transaction.call_count, 1) - - def test_opx_operation_delete(self): - resp = load_fixture('opx_operation_delete.cfg') - config_data = load_fixture('opx_get_config.cfg') - attr_data = {"if/interfaces/interface/name": "br105"} - module_name = "dell-base-if-cmn/if/interfaces/interface" - set_module_args(dict(module_name=module_name, operation="delete", attr_data=attr_data)) - self.get_config.return_value = config_data - self.cps_transaction.return_value = dict(changed=True, response=resp) - self.execute_module(changed=True, response=resp) - self.assertEqual(self.parse_cps_parameters.call_count, 2) - self.assertEqual(self.cps_transaction.call_count, 1) - - def test_opx_operation_delete_fail(self): - resp = load_fixture('opx_operation_delete.cfg') - attr_data = {"if/interfaces/interface/name": "br105"} - module_name = "dell-base-if-cmn/if/interfaces/interface" - set_module_args(dict(module_name=module_name, operation="delete", attr_data=attr_data)) - self.get_config.return_value = dict() - self.execute_module(changed=False) - self.assertEqual(self.parse_cps_parameters.call_count, 2) - self.assertEqual(self.cps_transaction.call_count, 1) - - def test_opx_operation_get(self): - resp = load_fixture('opx_operation_get.cfg') - attr_data = {"if/interfaces/interface/type": "ianaift:l2vlan"} - module_name = "dell-base-if-cmn/if/interfaces/interface" - set_module_args(dict(module_name=module_name, operation="get", attr_data=attr_data)) - self.cps_get.return_value = dict(changed=True, response=resp) - self.cps_transaction.return_value = None - self.execute_module(changed=True, response=resp) - self.assertEqual(self.parse_cps_parameters.call_count, 1) - self.assertEqual(self.cps_get.call_count, 1) - self.cps_transaction.assert_not_called() - - def test_opx_operation_set_fail(self): - attr_data = {"dell-if/if/interfaces/interface/untagged-ports": "e101-001-0", - "if/interfaces/interface/name": "br105"} - exp_msg = "RuntimeError: Transaction error while set" - module_name = "dell-base-if-cmn/if/interfaces/interface" - set_module_args(dict(module_name=module_name, operation="set", attr_data=attr_data)) - self.get_config.return_value = dict() - self.cps_transaction.side_effect = RuntimeError("Transaction error while set") - self.execute_module(failed=True, msg=exp_msg) - self.assertEqual(self.parse_cps_parameters.call_count, 2) - self.assertEqual(self.cps_transaction.call_count, 1) - - def test_opx_operation_create_fail(self): - attr_data = {"if/interfaces/interface/type": "ianaift:l2vlan"} - config_data = load_fixture('opx_get_config.cfg') - exp_msg = "RuntimeError: Transaction error while create" - module_name = "dell-base-if-cmn/if/interfaces/interface" - set_module_args(dict(module_name=module_name, operation="create", attr_data=attr_data)) - self.get_config.return_value = config_data - self.cps_transaction.side_effect = RuntimeError("Transaction error while create") - self.execute_module(failed=True, msg=exp_msg) - self.assertEqual(self.parse_cps_parameters.call_count, 2) - self.assertEqual(self.cps_transaction.call_count, 1) - - def test_opx_operation_get_db(self): - resp = load_fixture('opx_operation_get_db.cfg') - attr_data = {"if/interfaces/interface/name": "e101-001-0"} - module_name = "dell-base-if-cmn/if/interfaces/interface" - set_module_args(dict(module_name=module_name, operation="get", attr_data=attr_data, db=True)) - self.cps_get.return_value = dict(changed=True, response=resp) - self.cps_transaction.return_value = None - self.execute_module(changed=True, response=resp, db=True) - self.assertEqual(self.parse_cps_parameters.call_count, 1) - self.assertEqual(self.cps_get.call_count, 1) - self.cps_transaction.assert_not_called() - - def test_opx_operation_set_commit_event(self): - resp = load_fixture('opx_operation_set.cfg') - config_data = load_fixture('opx_get_config.cfg') - attr_data = {"dell-if/if/interfaces/interface/untagged-ports": "e101-001-0", - "if/interfaces/interface/name": "br105"} - module_name = "dell-base-if-cmn/if/interfaces/interface" - set_module_args(dict(module_name=module_name, operation="set", attr_data=attr_data, commit_event=True)) - self.get_config.return_value = config_data - self.cps_transaction.return_value = dict(changed=True, response=resp) - self.execute_module(changed=True, response=resp, commit_event=True) - self.assertEqual(self.parse_cps_parameters.call_count, 2) - self.assertEqual(self.cps_transaction.call_count, 1) diff --git a/test/units/modules/network/radware/ct.vm b/test/units/modules/network/radware/ct.vm deleted file mode 100644 index 3e6acfe2a1..0000000000 --- a/test/units/modules/network/radware/ct.vm +++ /dev/null @@ -1,32 +0,0 @@ -##Copyright 2019 Radware -## -##Licensed under the Apache License, Version 2.0 (the "License"); -##you may not use this file except in compliance with the License. -##You may obtain a copy of the License at -## -## http://www.apache.org/licenses/LICENSE-2.0 -## -##Unless required by applicable law or agreed to in writing, software -##distributed under the License is distributed on an "AS IS" BASIS, -##WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -##See the License for the specific language governing permissions and -##limitations under the License. - -#property('description', 'Ansible Test mock') - -#param($p1, 'int', 'in') -#param($p2, 'int[]', 'out') - -#set($p2 = []) -#set($start = 2) -#set($end = 1024) -#set($range = [$start..$end]) - -#foreach($i in $range) - #set($j = $adc.readBean('MOCK', $i)) - #if ($adc.isEmpty($j)) - #set($dummy = $p2.add($i)) - #if ($p2.size() == $p1) - #break - #end -#end diff --git a/test/units/modules/network/radware/test_vdirect_commit.py b/test/units/modules/network/radware/test_vdirect_commit.py deleted file mode 100644 index 55a1bb2503..0000000000 --- a/test/units/modules/network/radware/test_vdirect_commit.py +++ /dev/null @@ -1,199 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright 2017 Radware LTD. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -from units.compat.mock import patch, MagicMock - -from units.compat import unittest -from units.compat.mock import patch - -BASE_PARAMS = {'vdirect_ip': None, 'vdirect_user': None, 'vdirect_password': None, - 'vdirect_wait': None, 'vdirect_secondary_ip': None, - 'vdirect_https_port': None, 'vdirect_http_port': None, - 'vdirect_timeout': None, 'vdirect_use_ssl': None, 'validate_certs': None} - -COMMIT_PARAMS = {'devices': ['adc', 'defensepro', 'vx', 'appwall'], 'apply': True, 'save': True, 'sync': True} - -COMMIT_GET_DEVICE_200_RESULT = [200, '', '', {'type': 'AlteonPartitioned'}] -COMMIT_GET_DEVICE_404_RESULT = [404, '', '', ''] - -COMMIT_RESULT_200 = [200, '', '', ''] -COMMIT_RESULT_204 = [204, '', '', ''] - -MODULE_RESULT = {"msg": "Requested actions were successfully performed on all devices.", - "details": [{'device_name': 'adc', 'device_type': 'Adc', - 'apply': 'succeeded', 'save': 'succeeded', 'sync': 'succeeded'}, - {'device_name': 'defensepro', 'device_type': 'DefensePro', - 'commit': 'succeeded'}, - {'device_name': 'vx', 'device_type': 'Container', - 'apply': 'succeeded', 'save': 'succeeded'}, - {'device_name': 'appwall', 'device_type': 'AppWall', - 'commit': 'succeeded'}]} - - -@patch('vdirect_client.rest_client.RestClient') -class RestClient: - def __init__(self, vdirect_ip=None, vdirect_user=None, vdirect_password=None, wait=None, - secondary_vdirect_ip=None, https_port=None, http_port=None, - timeout=None, https=None, strict_http_results=None, - verify=None): - pass - - -class DeviceMock: - - def __init__(self, name, client): - self.name = name - self.client = client - self.get_throw = False - self.control_throw = False - self.exception = Exception('exception message') - self.control_result = COMMIT_RESULT_200 - - def set_control_result(self, result): - self.control_result = result - - def throw_exception(self, get_throw=False, control_throw=False): - self.get_throw = get_throw - self.control_throw = control_throw - - def get(self, name): - if self.get_throw: - raise self.exception # pylint: disable=E0702 - if name == self.name: - return COMMIT_GET_DEVICE_200_RESULT - else: - return COMMIT_GET_DEVICE_404_RESULT - - def control_device(self, name, action): - if self.control_throw: - raise self.exception # pylint: disable=E0702 - return self.control_result - - def control(self, name, action): - return self.control_device(name, action) - - -class TestManager(unittest.TestCase): - - def setUp(self): - self.module_mock = MagicMock() - self.module_mock.rest_client.RESP_STATUS = 0 - self.module_mock.rest_client.RESP_REASON = 1 - self.module_mock.rest_client.RESP_STR = 2 - self.module_mock.rest_client.RESP_DATA = 3 - - def test_missing_parameter(self, *args): - with patch.dict('sys.modules', **{ - 'vdirect_client': self.module_mock, - 'vdirect_client.rest_client.RestClient': self.module_mock, - }): - from ansible.modules.network.radware import vdirect_commit - - try: - params = BASE_PARAMS.copy() - vdirect_commit.VdirectCommit(params) - self.fail("KeyError was not thrown for missing parameter") - except KeyError: - assert True - - def test_validate_devices(self, *args): - with patch.dict('sys.modules', **{ - 'vdirect_client': self.module_mock, - 'vdirect_client.rest_client.RestClient': self.module_mock, - }): - from ansible.modules.network.radware import vdirect_commit - - BASE_PARAMS.update(COMMIT_PARAMS) - vdirectcommit = vdirect_commit.VdirectCommit(BASE_PARAMS) - vdirectcommit.client.adc = DeviceMock('adc', vdirectcommit.client) - vdirectcommit.client.container = DeviceMock('vx', vdirectcommit.client) - vdirectcommit.client.appWall = DeviceMock('appwall', vdirectcommit.client) - vdirectcommit.client.defensePro = DeviceMock('defensepro', vdirectcommit.client) - - vdirectcommit._validate_devices() - assert True - - vdirectcommit.client.adc.throw_exception(True) - try: - vdirectcommit._validate_devices() - self.fail("CommitException was not thrown for device communication failure") - except vdirect_commit.CommitException: - assert True - - vdirectcommit.client.adc.throw_exception(False) - vdirectcommit.client.defensePro.throw_exception(True) - try: - vdirectcommit._validate_devices() - self.fail("CommitException was not thrown for device communication failure") - except vdirect_commit.CommitException: - assert True - - vdirectcommit.client.defensePro.throw_exception(False) - - vdirectcommit.client.adc.name = 'wrong' - try: - vdirectcommit._validate_devices() - self.fail("MissingDeviceException was not thrown for missing device") - except vdirect_commit.MissingDeviceException: - assert True - - def test_commit(self, *args): - with patch.dict('sys.modules', **{ - 'vdirect_client': self.module_mock, - 'vdirect_client.rest_client.RestClient': self.module_mock, - }): - from ansible.modules.network.radware import vdirect_commit - - BASE_PARAMS.update(COMMIT_PARAMS) - vdirectcommit = vdirect_commit.VdirectCommit(BASE_PARAMS) - vdirectcommit.client.adc = DeviceMock('adc', vdirectcommit.client) - vdirectcommit.client.container = DeviceMock('vx', vdirectcommit.client) - vdirectcommit.client.appWall = DeviceMock('appwall', vdirectcommit.client) - vdirectcommit.client.defensePro = DeviceMock('defensepro', vdirectcommit.client) - - res = vdirectcommit.commit() - assert res == MODULE_RESULT - - vdirectcommit.sync = False - for detail in MODULE_RESULT['details']: - if 'sync' in detail: - detail['sync'] = vdirect_commit.NOT_PERFORMED - res = vdirectcommit.commit() - assert res == MODULE_RESULT - - vdirectcommit.client.adc.control_result = COMMIT_RESULT_204 - vdirectcommit.client.adc.control_result[self.module_mock.rest_client.RESP_STATUS] = 500 - vdirectcommit.client.adc.control_result[self.module_mock.rest_client.RESP_STR] = 'Some Failure' - MODULE_RESULT['msg'] = 'Failure occurred while performing requested actions on devices. See details' - for detail in MODULE_RESULT['details']: - if detail['device_name'] == 'adc': - detail['apply'] = vdirect_commit.FAILED - detail['failure_description'] = 'Some Failure' - detail['save'] = vdirect_commit.NOT_PERFORMED - detail['sync'] = vdirect_commit.NOT_PERFORMED - res = vdirectcommit.commit() - assert res == MODULE_RESULT - - vdirectcommit.client.adc.throw_exception(control_throw=True) - for detail in MODULE_RESULT['details']: - if detail['device_name'] == 'adc': - detail['failure_description'] = 'Exception occurred while performing apply action. ' \ - 'Exception: exception message' - res = vdirectcommit.commit() - assert res == MODULE_RESULT diff --git a/test/units/modules/network/radware/test_vdirect_file.py b/test/units/modules/network/radware/test_vdirect_file.py deleted file mode 100644 index 65e2f25b1c..0000000000 --- a/test/units/modules/network/radware/test_vdirect_file.py +++ /dev/null @@ -1,241 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright 2017 Radware LTD. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -import os -from mock import patch, MagicMock - -from units.compat import unittest -from units.compat.mock import patch - -RESP_STATUS = 0 -RESP_REASON = 1 -RESP_STR = 2 -RESP_DATA = 3 - -NONE_PARAMS = {'vdirect_ip': None, 'vdirect_user': None, 'vdirect_password': None, - 'vdirect_wait': None, 'vdirect_secondary_ip': None, - 'vdirect_https_port': None, 'vdirect_http_port': None, - 'vdirect_timeout': None, 'vdirect_use_ssl': None, 'validate_certs': None} - - -@patch('vdirect_client.rest_client.RestClient') -class RestClient: - def __init__(self, vdirect_ip=None, vdirect_user=None, vdirect_password=None, wait=None, - secondary_vdirect_ip=None, https_port=None, http_port=None, - timeout=None, https=None, strict_http_results=None, - verify=None): - pass - - -@patch('vdirect_client.rest_client.Template') -class Template: - create_from_source_result = None - upload_source_result = None - - def __init__(self, client): - self.client = client - - @classmethod - def set_create_from_source_result(cls, result): - Template.create_from_source_result = result - - @classmethod - def set_upload_source_result(cls, result): - Template.upload_source_result = result - - def create_from_source(self, data, name=None, tenant=None, fail_if_invalid=False): - return Template.create_from_source_result - - def upload_source(self, data, name=None, tenant=None, fail_if_invalid=False): - return Template.upload_source_result - - -@patch('vdirect_client.rest_client.WorkflowTemplate') -class WorkflowTemplate: - create_template_from_archive_result = None - update_archive_result = None - - def __init__(self, client): - self.client = client - - @classmethod - def set_create_template_from_archive_result(cls, result): - WorkflowTemplate.create_template_from_archive_result = result - - @classmethod - def set_update_archive_result(cls, result): - WorkflowTemplate.update_archive_result = result - - def create_template_from_archive(self, data, validate=False, fail_if_invalid=False, tenant=None): - return WorkflowTemplate.create_template_from_archive_result - - def update_archive(self, data, workflow_template_name): - return WorkflowTemplate.update_archive_result - - -class TestManager(unittest.TestCase): - - def setUp(self): - pass - - def test_missing_parameter(self, *args): - module_mock = MagicMock() - with patch.dict('sys.modules', **{ - 'vdirect_client': module_mock, - 'vdirect_client.rest_client': module_mock, - }): - from ansible.modules.network.radware import vdirect_file - - try: - params = NONE_PARAMS.copy() - del params['vdirect_ip'] - vdirect_file.VdirectFile(params) - self.fail("KeyError was not thrown for missing parameter") - except KeyError: - assert True - - def test_wrong_file_extension(self, *args): - module_mock = MagicMock() - with patch.dict('sys.modules', **{ - 'vdirect_client': module_mock, - 'vdirect_client.rest_client': module_mock, - }): - from ansible.modules.network.radware import vdirect_file - - module_mock.RESP_STATUS = 0 - file = vdirect_file.VdirectFile(NONE_PARAMS) - result = file.upload("file.??") - assert result == vdirect_file.WRONG_EXTENSION_ERROR - - def test_missing_file(self, *args): - module_mock = MagicMock() - with patch.dict('sys.modules', **{ - 'vdirect_client': module_mock, - 'vdirect_client.rest_client': module_mock, - }): - from ansible.modules.network.radware import vdirect_file - - file = vdirect_file.VdirectFile(NONE_PARAMS) - try: - file.upload("missing_file.vm") - self.fail("IOException was not thrown for missing file") - except IOError: - assert True - - def test_template_upload_create(self, *args): - module_mock = MagicMock() - with patch.dict('sys.modules', **{ - 'vdirect_client': module_mock, - 'vdirect_client.rest_client': module_mock, - }): - from ansible.modules.network.radware import vdirect_file - vdirect_file.rest_client.RESP_STATUS = 0 - vdirect_file.rest_client.Template = Template - - file = vdirect_file.VdirectFile(NONE_PARAMS) - path = os.path.dirname(os.path.abspath(__file__)) - - Template.set_create_from_source_result([201]) - result = file.upload(os.path.join(path, "ct.vm")) - self.assertEqual(result, vdirect_file.CONFIGURATION_TEMPLATE_CREATED_SUCCESS, - 'Unexpected result received:' + repr(result)) - - Template.set_create_from_source_result([400, "", "Parsing error", ""]) - try: - result = file.upload(os.path.join(path, "ct.vm")) - self.fail("InvalidSourceException was not thrown") - except vdirect_file.InvalidSourceException: - assert True - - def test_template_upload_update(self, *args): - module_mock = MagicMock() - with patch.dict('sys.modules', **{ - 'vdirect_client': module_mock, - 'vdirect_client.rest_client': module_mock, - }): - from ansible.modules.network.radware import vdirect_file - vdirect_file.rest_client.RESP_STATUS = 0 - vdirect_file.rest_client.Template = Template - - file = vdirect_file.VdirectFile(NONE_PARAMS) - path = os.path.dirname(os.path.abspath(__file__)) - - Template.set_create_from_source_result([409]) - Template.set_upload_source_result([201]) - result = file.upload(os.path.join(path, "ct.vm")) - self.assertEqual(result, vdirect_file.CONFIGURATION_TEMPLATE_UPDATED_SUCCESS, - 'Unexpected result received:' + repr(result)) - - Template.set_upload_source_result([400, "", "Parsing error", ""]) - try: - result = file.upload(os.path.join(path, "ct.vm")) - self.fail("InvalidSourceException was not thrown") - except vdirect_file.InvalidSourceException: - assert True - - def test_workflow_upload_create(self, *args): - module_mock = MagicMock() - with patch.dict('sys.modules', **{ - 'vdirect_client': module_mock, - 'vdirect_client.rest_client': module_mock, - }): - from ansible.modules.network.radware import vdirect_file - vdirect_file.rest_client.RESP_STATUS = 0 - vdirect_file.rest_client.WorkflowTemplate = WorkflowTemplate - - file = vdirect_file.VdirectFile(NONE_PARAMS) - path = os.path.dirname(os.path.abspath(__file__)) - - WorkflowTemplate.set_create_template_from_archive_result([201]) - result = file.upload(os.path.join(path, "wt.zip")) - self.assertEqual(result, vdirect_file.WORKFLOW_TEMPLATE_CREATED_SUCCESS, - 'Unexpected result received:' + repr(result)) - - WorkflowTemplate.set_create_template_from_archive_result([400, "", "Parsing error", ""]) - try: - result = file.upload(os.path.join(path, "wt.zip")) - self.fail("InvalidSourceException was not thrown") - except vdirect_file.InvalidSourceException: - assert True - - def test_workflow_upload_update(self, *args): - module_mock = MagicMock() - with patch.dict('sys.modules', **{ - 'vdirect_client': module_mock, - 'vdirect_client.rest_client': module_mock, - }): - from ansible.modules.network.radware import vdirect_file - vdirect_file.rest_client.RESP_STATUS = 0 - vdirect_file.rest_client.WorkflowTemplate = WorkflowTemplate - - file = vdirect_file.VdirectFile(NONE_PARAMS) - path = os.path.dirname(os.path.abspath(__file__)) - - WorkflowTemplate.set_create_template_from_archive_result([409]) - WorkflowTemplate.set_update_archive_result([201]) - result = file.upload(os.path.join(path, "wt.zip")) - self.assertEqual(result, vdirect_file.WORKFLOW_TEMPLATE_UPDATED_SUCCESS, - 'Unexpected result received:' + repr(result)) - - WorkflowTemplate.set_update_archive_result([400, "", "Parsing error", ""]) - try: - result = file.upload(os.path.join(path, "wt.zip")) - self.fail("InvalidSourceException was not thrown") - except vdirect_file.InvalidSourceException: - assert True diff --git a/test/units/modules/network/radware/test_vdirect_runnable.py b/test/units/modules/network/radware/test_vdirect_runnable.py deleted file mode 100644 index 394d223671..0000000000 --- a/test/units/modules/network/radware/test_vdirect_runnable.py +++ /dev/null @@ -1,435 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright 2017 Radware LTD. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -from units.compat.mock import patch, MagicMock - -from units.compat import unittest -from units.compat.mock import patch - -BASE_PARAMS = {'vdirect_ip': None, 'vdirect_user': None, 'vdirect_password': None, - 'vdirect_wait': None, 'vdirect_secondary_ip': None, - 'vdirect_https_port': None, 'vdirect_http_port': None, - 'vdirect_timeout': None, 'vdirect_use_ssl': None, 'validate_certs': None} - -CONFIGURATION_TEMPLATE_RUNNABLE_PARAMS = { - 'runnable_type': 'ConfigurationTemplate', 'runnable_name': 'runnable', - 'action_name': None, 'parameters': None} - -WORKFLOW_TEMPLATE_RUNNABLE_PARAMS = { - 'runnable_type': 'WorkflowTemplate', 'runnable_name': 'runnable', - 'action_name': None, 'parameters': None} - -WORKFLOW_RUNNABLE_PARAMS = { - 'runnable_type': 'Workflow', 'runnable_name': 'runnable', - 'action_name': 'one', 'parameters': None} - -PLUGIN_RUNNABLE_PARAMS = { - 'runnable_type': 'Plugin', 'runnable_name': 'runnable', - 'action_name': 'two', 'parameters': None} - - -WORKFLOW_RUNNABLE_OBJECT_RESULT = [200, '', '', {'names': ['runnable']}] -ACTIONS_RESULT = [200, '', '', {'names': ['one', 'two']}] - - -ACTIONS_PARAMS_RESULT_BASIC = [200, '', '', - {'parameters': [ - {'name': 'pin', 'type': 'in', 'direction': 'in'}, - {'name': 'pout', 'type': 'out', 'direction': 'out'}, - {'name': 'alteon', 'type': 'alteon'} - ]}] -ACTIONS_PARAMS_RESULT_FULL = [200, '', '', - {'parameters': [ - {'name': 'pin', 'type': 'in', 'direction': 'in'}, - {'name': 'pout', 'type': 'out', 'direction': 'out'}, - {'name': 'alteon', 'type': 'alteon'}, - {'name': 'alteon_array', 'type': 'alteon[]'}, - {'name': 'dp', 'type': 'defensePro'}, - {'name': 'dp_array', 'type': 'defensePro[]'}, - {'name': 'appWall', 'type': 'appWall'}, - {'name': 'appWall_array', 'type': 'appWall[]'} - ]}] - -RUN_RESULT = [200, '', '', { - "uri": "https://10.11.12.13:2189/api/status?token=Workflow%5Ca%5Capply%5Cc4b533a8-8764-4cbf-a19c-63b11b9ccc09", - "targetUri": "https://10.11.12.13:2189/api/workflow/a", - "complete": True, "status": 200, "success": True, "messages": [], "action": "apply", "parameters": {}, -}] - -MODULE_RESULT = {"msg": "Configuration template run completed."} - - -@patch('vdirect_client.rest_client.RestClient') -class RestClient: - def __init__(self, vdirect_ip=None, vdirect_user=None, vdirect_password=None, wait=None, - secondary_vdirect_ip=None, https_port=None, http_port=None, - timeout=None, https=None, strict_http_results=None, - verify=None): - pass - - -@patch('vdirect_client.rest_client.Runnable') -class Runnable: - runnable_objects_result = None - available_actions_result = None - action_info_result = None - run_result = None - - def __init__(self, client): - self.client = client - - @classmethod - def set_runnable_objects_result(cls, result): - Runnable.runnable_objects_result = result - - @classmethod - def set_available_actions_result(cls, result): - Runnable.available_actions_result = result - - @classmethod - def set_action_info_result(cls, result): - Runnable.action_info_result = result - - @classmethod - def set_run_result(cls, result): - Runnable.run_result = result - - def get_runnable_objects(self, type): - return Runnable.runnable_objects_result - - def get_available_actions(self, type=None, name=None): - return Runnable.available_actions_result - - def get_action_info(self, type, name, action_name): - return Runnable.action_info_result - - def run(self, data, type, name, action_name): - return Runnable.run_result - - -@patch('vdirect_client.rest_client.Catalog') -class Catalog: - _404 = False - - def __init__(self, client): - self.client = client - - @classmethod - def set_catalog_item_200(cls): - Catalog._404 = False - - @classmethod - def set_catalog_item_404(cls): - Catalog._404 = True - - @classmethod - def get_catalog_item(cls, type=None, name=None): - if Catalog._404: - from ansible.modules.network.radware import vdirect_runnable - raise vdirect_runnable.MissingRunnableException(name) - - -class TestManager(unittest.TestCase): - - def setUp(self): - self.module_mock = MagicMock() - self.module_mock.rest_client.RESP_STATUS = 0 - self.module_mock.rest_client.RESP_REASON = 1 - self.module_mock.rest_client.RESP_STR = 2 - self.module_mock.rest_client.RESP_DATA = 3 - - def test_missing_parameter(self, *args): - with patch.dict('sys.modules', **{ - 'vdirect_client': self.module_mock, - 'vdirect_client.rest_client': self.module_mock, - }): - from ansible.modules.network.radware import vdirect_runnable - - try: - params = BASE_PARAMS.copy() - vdirect_runnable.VdirectRunnable(params) - self.fail("KeyError was not thrown for missing parameter") - except KeyError: - assert True - - def test_validate_configuration_template_exists(self, *args): - with patch.dict('sys.modules', **{ - 'vdirect_client': self.module_mock, - 'vdirect_client.rest_client': self.module_mock, - }): - from ansible.modules.network.radware import vdirect_runnable - - Catalog.set_catalog_item_200() - BASE_PARAMS.update(CONFIGURATION_TEMPLATE_RUNNABLE_PARAMS) - vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS) - vdirectRunnable.client.runnable = Runnable(vdirectRunnable.client) - vdirectRunnable.client.catalog = Catalog(vdirectRunnable.client) - vdirectRunnable._validate_runnable_exists() - assert True - - def test_validate_workflow_template_exists(self, *args): - with patch.dict('sys.modules', **{ - 'vdirect_client': self.module_mock, - 'vdirect_client.rest_client': self.module_mock, - }): - from ansible.modules.network.radware import vdirect_runnable - - Catalog.set_catalog_item_200() - BASE_PARAMS.update(WORKFLOW_TEMPLATE_RUNNABLE_PARAMS) - vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS) - vdirectRunnable.client.runnable = Runnable(vdirectRunnable.client) - vdirectRunnable.client.catalog = Catalog(vdirectRunnable.client) - vdirectRunnable._validate_runnable_exists() - assert True - - def test_validate_workflow_exists(self, *args): - with patch.dict('sys.modules', **{ - 'vdirect_client': self.module_mock, - 'vdirect_client.rest_client': self.module_mock, - }): - from ansible.modules.network.radware import vdirect_runnable - - Catalog.set_catalog_item_200() - BASE_PARAMS.update(CONFIGURATION_TEMPLATE_RUNNABLE_PARAMS) - Runnable.set_runnable_objects_result(WORKFLOW_RUNNABLE_OBJECT_RESULT) - BASE_PARAMS.update(WORKFLOW_RUNNABLE_PARAMS) - vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS) - vdirectRunnable.client.runnable = Runnable(vdirectRunnable.client) - vdirectRunnable.client.catalog = Catalog(vdirectRunnable.client) - vdirectRunnable._validate_runnable_exists() - assert True - - def test_validate_plugin_exists(self, *args): - with patch.dict('sys.modules', **{ - 'vdirect_client': self.module_mock, - 'vdirect_client.rest_client': self.module_mock, - }): - from ansible.modules.network.radware import vdirect_runnable - - Runnable.set_runnable_objects_result(WORKFLOW_RUNNABLE_OBJECT_RESULT) - BASE_PARAMS.update(WORKFLOW_RUNNABLE_PARAMS) - vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS) - vdirectRunnable.client.runnable = Runnable(vdirectRunnable.client) - vdirectRunnable.client.catalog = Catalog(vdirectRunnable.client) - vdirectRunnable._validate_runnable_exists() - assert True - - BASE_PARAMS['runnable_name'] = 'missing' - vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS) - vdirectRunnable.client.runnable = Runnable(vdirectRunnable.client) - vdirectRunnable.client.catalog = Catalog(vdirectRunnable.client) - try: - vdirectRunnable._validate_runnable_exists() - self.fail("MissingRunnableException was not thrown for missing runnable name") - except vdirect_runnable.MissingRunnableException: - assert True - - def test_validate_configuration_template_action_name(self, *args): - with patch.dict('sys.modules', **{ - 'vdirect_client': self.module_mock, - 'vdirect_client.rest_client': self.module_mock, - }): - from ansible.modules.network.radware import vdirect_runnable - - Catalog.set_catalog_item_200() - BASE_PARAMS.update(PLUGIN_RUNNABLE_PARAMS) - vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS) - vdirectRunnable.client.runnable = Runnable(vdirectRunnable.client) - vdirectRunnable.client.catalog = Catalog(vdirectRunnable.client) - vdirectRunnable._validate_runnable_exists() - assert True - - Catalog.set_catalog_item_404() - try: - vdirectRunnable._validate_runnable_exists() - self.fail("MissingRunnableException was not thrown for missing runnable name") - except vdirect_runnable.MissingRunnableException: - assert True - - def test_validate_configuration_template_action_name(self, *args): - with patch.dict('sys.modules', **{ - 'vdirect_client': self.module_mock, - 'vdirect_client.rest_client': self.module_mock, - }): - from ansible.modules.network.radware import vdirect_runnable - - Runnable.set_available_actions_result(ACTIONS_RESULT) - BASE_PARAMS.update(CONFIGURATION_TEMPLATE_RUNNABLE_PARAMS) - vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS) - vdirectRunnable._validate_action_name() - assert vdirectRunnable.action_name == vdirect_runnable.VdirectRunnable.RUN_ACTION - - def test_validate_workflow_template_action_name(self, *args): - with patch.dict('sys.modules', **{ - 'vdirect_client': self.module_mock, - 'vdirect_client.rest_client': self.module_mock, - }): - from ansible.modules.network.radware import vdirect_runnable - - Runnable.set_available_actions_result(ACTIONS_RESULT) - BASE_PARAMS.update(WORKFLOW_TEMPLATE_RUNNABLE_PARAMS) - vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS) - vdirectRunnable._validate_action_name() - assert vdirectRunnable.action_name == vdirect_runnable.VdirectRunnable.CREATE_WORKFLOW_ACTION - - def test_validate_workflow_action_name(self, *args): - with patch.dict('sys.modules', **{ - 'vdirect_client': self.module_mock, - 'vdirect_client.rest_client': self.module_mock, - }): - from ansible.modules.network.radware import vdirect_runnable - - Runnable.set_available_actions_result(ACTIONS_RESULT) - BASE_PARAMS.update(WORKFLOW_RUNNABLE_PARAMS) - vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS) - vdirectRunnable.client.runnable = Runnable(vdirectRunnable.client) - vdirectRunnable._validate_action_name() - assert vdirectRunnable.action_name == 'one' - - BASE_PARAMS['action_name'] = 'three' - vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS) - vdirectRunnable.client.runnable = Runnable(vdirectRunnable.client) - try: - vdirectRunnable._validate_action_name() - self.fail("WrongActionNameException was not thrown for wrong action name") - except vdirect_runnable.WrongActionNameException: - assert True - - def test_validate_plugin_action_name(self, *args): - with patch.dict('sys.modules', **{ - 'vdirect_client': self.module_mock, - 'vdirect_client.rest_client': self.module_mock, - }): - from ansible.modules.network.radware import vdirect_runnable - - Runnable.set_available_actions_result(ACTIONS_RESULT) - BASE_PARAMS.update(PLUGIN_RUNNABLE_PARAMS) - vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS) - vdirectRunnable.client.runnable = Runnable(vdirectRunnable.client) - vdirectRunnable._validate_action_name() - assert vdirectRunnable.action_name == 'two' - - BASE_PARAMS['action_name'] = 'three' - vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS) - vdirectRunnable.client.runnable = Runnable(vdirectRunnable.client) - try: - vdirectRunnable._validate_action_name() - self.fail("WrongActionNameException was not thrown for wrong action name") - except vdirect_runnable.WrongActionNameException: - assert True - - def test_validate_required_action_params(self, *args): - with patch.dict('sys.modules', **{ - 'vdirect_client': self.module_mock, - 'vdirect_client.rest_client': self.module_mock, - }): - from ansible.modules.network.radware import vdirect_runnable - - Runnable.set_action_info_result(ACTIONS_PARAMS_RESULT_BASIC) - BASE_PARAMS.update(CONFIGURATION_TEMPLATE_RUNNABLE_PARAMS) - - vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS) - vdirectRunnable.client.runnable = Runnable(vdirectRunnable.client) - try: - vdirectRunnable._validate_required_action_params() - self.fail("MissingActionParametersException was not thrown for missing parameters") - except vdirect_runnable.MissingActionParametersException: - assert True - - BASE_PARAMS['parameters'] = {"alteon": "x"} - vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS) - try: - vdirectRunnable._validate_required_action_params() - self.fail("MissingActionParametersException was not thrown for missing parameters") - except vdirect_runnable.MissingActionParametersException: - assert True - - BASE_PARAMS['parameters'] = {"pin": "x", "alteon": "a1"} - vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS) - vdirectRunnable._validate_action_name() - vdirectRunnable._validate_required_action_params() - assert True - - Runnable.set_action_info_result(ACTIONS_PARAMS_RESULT_FULL) - vdirectRunnable._validate_action_name() - try: - vdirectRunnable._validate_required_action_params() - self.fail("MissingActionParametersException was not thrown for missing parameters") - except vdirect_runnable.MissingActionParametersException: - assert True - - BASE_PARAMS['parameters'].update( - {"alteon_array": "[a1, a2]", - "dp": "dp1", "dp_array": "[dp1, dp2]", - "appWall": "appWall1", - "appWall_array": "[appWall1, appWall2]" - }) - vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS) - vdirectRunnable._validate_action_name() - vdirectRunnable._validate_required_action_params() - assert True - - def test_run(self, *args): - with patch.dict('sys.modules', **{ - 'vdirect_client': self.module_mock, - 'vdirect_client.rest_client': self.module_mock, - }): - from ansible.modules.network.radware import vdirect_runnable - - Catalog.set_catalog_item_200() - BASE_PARAMS.update(CONFIGURATION_TEMPLATE_RUNNABLE_PARAMS) - Runnable.set_available_actions_result(ACTIONS_RESULT) - Runnable.set_action_info_result(ACTIONS_PARAMS_RESULT_BASIC) - BASE_PARAMS['parameters'] = {"pin": "x", "alteon": "x"} - - vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS) - vdirectRunnable.client.runnable = Runnable(vdirectRunnable.client) - Runnable.set_run_result(RUN_RESULT) - res = vdirectRunnable.run() - assert res['msg'] == MODULE_RESULT['msg'] - - result_parameters = {"param1": "value1", "param2": "value2"} - RUN_RESULT[self.module_mock.rest_client.RESP_DATA]['parameters'] = result_parameters - MODULE_RESULT['parameters'] = result_parameters - res = vdirectRunnable.run() - assert res['msg'] == MODULE_RESULT['msg'] - assert res['output']['parameters'] == result_parameters - - RUN_RESULT[self.module_mock.rest_client.RESP_DATA]['status'] = 404 - vdirectRunnable.run() - assert res['msg'] == MODULE_RESULT['msg'] - - RUN_RESULT[self.module_mock.rest_client.RESP_STATUS] = 400 - RUN_RESULT[self.module_mock.rest_client.RESP_REASON] = "Reason" - RUN_RESULT[self.module_mock.rest_client.RESP_STR] = "Details" - try: - vdirectRunnable.run() - self.fail("RunnableException was not thrown for failed run.") - except vdirect_runnable.RunnableException as e: - assert str(e) == "Reason: Reason. Details:Details." - - RUN_RESULT[self.module_mock.rest_client.RESP_STATUS] = 200 - RUN_RESULT[self.module_mock.rest_client.RESP_DATA]["status"] = 400 - RUN_RESULT[self.module_mock.rest_client.RESP_DATA]["success"] = False - RUN_RESULT[self.module_mock.rest_client.RESP_DATA]["exception"] = {"message": "exception message"} - try: - vdirectRunnable.run() - self.fail("RunnableException was not thrown for failed run.") - except vdirect_runnable.RunnableException as e: - assert str(e) == "Reason: exception message. Details:Details." diff --git a/test/units/modules/network/radware/wt.zip b/test/units/modules/network/radware/wt.zip deleted file mode 100644 index e69de29bb2..0000000000 --- a/test/units/modules/network/radware/wt.zip +++ /dev/null diff --git a/test/units/modules/network/routeros/fixtures/routeros_facts/export b/test/units/modules/network/routeros/fixtures/routeros_facts/export deleted file mode 100644 index 0f49fefe30..0000000000 --- a/test/units/modules/network/routeros/fixtures/routeros_facts/export +++ /dev/null @@ -1,26 +0,0 @@ -# sep/25/2018 10:10:52 by RouterOS 6.42.5 -# software id = 9EER-511K -# -# -# -/interface wireless security-profiles -set [ find default=yes ] supplicant-identity=MikroTik -/tool user-manager customer -set admin access=own-routers,own-users,own-profiles,own-limits,config-payment-gw -/ip address -add address=192.168.88.1/24 comment=defconf interface=ether1 network=192.168.88.0 -/ip dhcp-client -add dhcp-options=hostname,clientid disabled=no interface=ether1 -/system lcd -set contrast=0 enabled=no port=parallel type=24x4 -/system lcd page -set time disabled=yes display-time=5s -set resources disabled=yes display-time=5s -set uptime disabled=yes display-time=5s -set packets disabled=yes display-time=5s -set bits disabled=yes display-time=5s -set version disabled=yes display-time=5s -set identity disabled=yes display-time=5s -set ether1 disabled=yes display-time=5s -/tool user-manager database -set db-path=user-manager diff --git a/test/units/modules/network/routeros/fixtures/routeros_facts/interface_print_detail_without-paging b/test/units/modules/network/routeros/fixtures/routeros_facts/interface_print_detail_without-paging deleted file mode 100644 index 9ccddb292f..0000000000 --- a/test/units/modules/network/routeros/fixtures/routeros_facts/interface_print_detail_without-paging +++ /dev/null @@ -1,34 +0,0 @@ -Flags: D - dynamic, X - disabled, R - running, S - slave - 0 R name="ether1" default-name="ether1" type="ether" mtu=1500 actual-mtu=1500 - mac-address=00:1C:42:36:52:90 last-link-up-time=sep/25/2018 06:30:04 - link-downs=0 - 1 R name="ether2" default-name="ether2" type="ether" mtu=1500 actual-mtu=1500 - mac-address=00:1C:42:36:52:91 last-link-up-time=sep/25/2018 06:30:04 - link-downs=0 - 2 R name="ether3" default-name="ether3" type="ether" mtu=1500 actual-mtu=1500 - mac-address=00:1C:42:36:52:92 last-link-up-time=sep/25/2018 06:30:04 - link-downs=0 - 3 R name="ether4" default-name="ether4" type="ether" mtu=1500 actual-mtu=1500 - mac-address=00:1C:42:36:52:93 last-link-up-time=sep/25/2018 06:30:04 - link-downs=0 - 4 R name="ether5" default-name="ether5" type="ether" mtu=1500 actual-mtu=1500 - mac-address=00:1C:42:36:52:94 last-link-up-time=sep/25/2018 06:30:04 - link-downs=0 - 5 R name="ether6" default-name="ether6" type="ether" mtu=1500 actual-mtu=1500 - mac-address=00:1C:42:36:52:95 last-link-up-time=sep/25/2018 06:30:04 - link-downs=0 - 6 R name="ether7" default-name="ether7" type="ether" mtu=1500 actual-mtu=1500 - mac-address=00:1C:42:36:52:96 last-link-up-time=sep/25/2018 06:30:04 - link-downs=0 - 7 R name="ether8" default-name="ether8" type="ether" mtu=1500 actual-mtu=1500 - mac-address=00:1C:42:36:52:97 last-link-up-time=sep/25/2018 06:30:04 - link-downs=0 - 8 R name="ether9" default-name="ether9" type="ether" mtu=1500 actual-mtu=1500 - mac-address=00:1C:42:36:52:98 last-link-up-time=sep/25/2018 06:30:04 - link-downs=0 - 9 R name="ether10" default-name="ether10" type="ether" mtu=1500 actual-mtu=1500 - mac-address=00:1C:42:36:52:99 last-link-up-time=sep/25/2018 06:30:04 - link-downs=0 -10 R name="pppoe" default-name="pppoe" type="ppp" mtu=1500 actual-mtu=1500 - mac-address=00:1C:42:36:52:00 last-link-up-time=sep/25/2018 06:30:04 - link-downs=0 diff --git a/test/units/modules/network/routeros/fixtures/routeros_facts/ip_address_print_detail_without-paging b/test/units/modules/network/routeros/fixtures/routeros_facts/ip_address_print_detail_without-paging deleted file mode 100644 index d4fd2bcd24..0000000000 --- a/test/units/modules/network/routeros/fixtures/routeros_facts/ip_address_print_detail_without-paging +++ /dev/null @@ -1,10 +0,0 @@ -Flags: X - disabled, I - invalid, D - dynamic - 0 ;;; defconf - address=192.168.88.1/24 network=192.168.88.0 interface=ether1 - actual-interface=ether1 - - 1 D address=10.37.129.3/24 network=10.37.129.0 interface=ether1 - actual-interface=ether1 - - 2 D address=10.37.0.0/24 network=10.37.0.1 interface=pppoe - actual-interface=pppoe diff --git a/test/units/modules/network/routeros/fixtures/routeros_facts/ip_neighbor_print_detail_without-paging b/test/units/modules/network/routeros/fixtures/routeros_facts/ip_neighbor_print_detail_without-paging deleted file mode 100644 index 906dfb7502..0000000000 --- a/test/units/modules/network/routeros/fixtures/routeros_facts/ip_neighbor_print_detail_without-paging +++ /dev/null @@ -1,15 +0,0 @@ - 0 interface=ether2-master address=10.37.129.3 address4=10.37.129.3 mac-address=D4:CA:6D:C6:16:4C identity="router1" platform="MikroTik" version="6.42.2 (stable)" unpack=none age=59s - uptime=3w19h11m36s software-id="1234-1234" board="RBwAPG-5HacT2HnD" interface-name="bridge" system-description="MikroTik RouterOS 6.42.2 (stable) RBwAPG-5HacT2HnD" - system-caps="" system-caps-enabled="" - - 1 interface=ether3 address=10.37.129.4 address4=10.37.129.4 mac-address=D4:CA:6D:C6:18:2F identity="router2" platform="MikroTik" version="6.42.2 (stable)" unpack=none age=54s - uptime=3w19h11m30s software-id="1234-1234" board="RBwAPG-5HacT2HnD" ipv6=no interface-name="bridge" system-description="MikroTik RouterOS 6.42.2 (stable) RBwAPG-5HacT2HnD" - system-caps="" system-caps-enabled="" - - 2 interface=ether5 address=10.37.129.5 address4=10.37.129.5 mac-address=B8:69:F4:37:F0:C8 identity="router3" platform="MikroTik" version="6.40.8 (bugfix)" unpack=none age=43s - uptime=3d14h25m31s software-id="1234-1234" board="RB960PGS" interface-name="ether1" system-description="MikroTik RouterOS 6.40.8 (bugfix) RB960PGS" system-caps="" - system-caps-enabled="" - - 3 interface=ether10 address=10.37.129.6 address4=10.37.129.6 mac-address=6C:3B:6B:A1:0B:63 identity="router4" platform="MikroTik" version="6.42.2 (stable)" unpack=none age=54s - uptime=3w6d1h11m44s software-id="1234-1234" board="RBSXTLTE3-7" interface-name="bridge" system-description="MikroTik RouterOS 6.42.2 (stable) RBSXTLTE3-7" system-caps="" - system-caps-enabled="" diff --git a/test/units/modules/network/routeros/fixtures/routeros_facts/ipv6_address_print_detail_without-paging b/test/units/modules/network/routeros/fixtures/routeros_facts/ipv6_address_print_detail_without-paging deleted file mode 100644 index c18e9ea573..0000000000 --- a/test/units/modules/network/routeros/fixtures/routeros_facts/ipv6_address_print_detail_without-paging +++ /dev/null @@ -1,3 +0,0 @@ -Flags: X - disabled, I - invalid, D - dynamic, G - global, L - link-local - 0 DL address=fe80::21c:42ff:fe36:5290/64 from-pool="" interface=ether1 - actual-interface=ether1 eui-64=no advertise=no no-dad=no diff --git a/test/units/modules/network/routeros/fixtures/routeros_facts/system_identity_print_without-paging b/test/units/modules/network/routeros/fixtures/routeros_facts/system_identity_print_without-paging deleted file mode 100644 index d7dc3ff3ee..0000000000 --- a/test/units/modules/network/routeros/fixtures/routeros_facts/system_identity_print_without-paging +++ /dev/null @@ -1 +0,0 @@ - name: MikroTik diff --git a/test/units/modules/network/routeros/fixtures/routeros_facts/system_resource_print_without-paging b/test/units/modules/network/routeros/fixtures/routeros_facts/system_resource_print_without-paging deleted file mode 100644 index 79353f791f..0000000000 --- a/test/units/modules/network/routeros/fixtures/routeros_facts/system_resource_print_without-paging +++ /dev/null @@ -1,16 +0,0 @@ - uptime: 3h28m52s - version: 6.42.5 (stable) - build-time: Jun/26/2018 12:12:08 - free-memory: 988.3MiB - total-memory: 1010.8MiB - cpu: Intel(R) - cpu-count: 2 - cpu-frequency: 2496MHz - cpu-load: 0% - free-hdd-space: 63.4GiB - total-hdd-space: 63.5GiB - write-sect-since-reboot: 4576 - write-sect-total: 4576 - architecture-name: x86 - board-name: x86 - platform: MikroTik diff --git a/test/units/modules/network/routeros/fixtures/routeros_facts/system_routerboard_print_without-paging b/test/units/modules/network/routeros/fixtures/routeros_facts/system_routerboard_print_without-paging deleted file mode 100644 index 263c959095..0000000000 --- a/test/units/modules/network/routeros/fixtures/routeros_facts/system_routerboard_print_without-paging +++ /dev/null @@ -1,7 +0,0 @@ - routerboard: yes - model: RouterBOARD 3011UiAS - serial-number: 1234567890 - firmware-type: ipq8060 - factory-firmware: 3.41 - current-firmware: 3.41 - upgrade-firmware: 6.42.2 diff --git a/test/units/modules/network/routeros/fixtures/system_package_print b/test/units/modules/network/routeros/fixtures/system_package_print deleted file mode 100644 index 3f806211e5..0000000000 --- a/test/units/modules/network/routeros/fixtures/system_package_print +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - - - - - - - - - - - MMM MMM KKK TTTTTTTTTTT KKK - - MMMM MMMM KKK TTTTTTTTTTT KKK - - MMM MMMM MMM III KKK KKK RRRRRR OOOOOO TTT III KKK KKK - - MMM MM MMM III KKKKK RRR RRR OOO OOO TTT III KKKKK - - MMM MMM III KKK KKK RRRRRR OOO OOO TTT III KKK KKK - - MMM MMM III KKK KKK RRR RRR OOOOOO TTT III KKK KKK - - - - MikroTik RouterOS 6.42.5 (c) 1999-2018 http://www.mikrotik.com/ - - -[?] Gives the list of available commands - -command [?] Gives help on the command and list of arguments - - - -[Tab] Completes the command/word. If the input is ambiguous, - - a second [Tab] gives possible options - - - -/ Move up to base level - -.. Move up one level - -/command Use command at the base level - -[9999B -[9999BZ [6n<[c[4l[20l[?47l[?7h[?5l[?25h[H[9999B[6n - - - -[admin@MainRouter] > -[admin@MainRouter] > /system routerboard print -[admin@MainRouter] > /system routerboard print - - routerboard: yes - model: 750GL - serial-number: 1234567890AB - firmware-type: ar7240 - factory-firmware: 3.09 - current-firmware: 6.41.2 - upgrade-firmware: 6.42.5 - - - - - -[admin@MainRouter] > -[admin@MainRouter] > /system identity print -[admin@MainRouter] > /system identity print - - name: MikroTik - - - - - -[admin@MainRouter] > -[admin@MainRouter] > /system package print -[admin@MainRouter] > /system package print - -Flags: [m[1mX[m - disabled -[m[1m # NAME VERSION SCHEDULED -[m 0 routeros-mipsbe 6.42.5 - 1 system 6.42.5 - 2 ipv6 6.42.5 - 3 wireless 6.42.5 - 4 hotspot 6.42.5 - 5 dhcp 6.42.5 - 6 mpls 6.42.5 - 7 routing 6.42.5 - 8 ppp 6.42.5 - 9 security 6.42.5 -10 advanced-tools 6.42.5 - - - - - -[admin@MainRouter] > -[admin@MainRouter] >
\ No newline at end of file diff --git a/test/units/modules/network/routeros/fixtures/system_resource_print b/test/units/modules/network/routeros/fixtures/system_resource_print deleted file mode 100644 index 63bc3beba5..0000000000 --- a/test/units/modules/network/routeros/fixtures/system_resource_print +++ /dev/null @@ -1,17 +0,0 @@ -[admin@RB1100test] /system resource> print - uptime: 2w1d23h34m57s - version: "5.0rc1" - free-memory: 385272KiB - total-memory: 516708KiB - cpu: "e500v2" - cpu-count: 1 - cpu-frequency: 799MHz - cpu-load: 9% - free-hdd-space: 466328KiB - total-hdd-space: 520192KiB - write-sect-since-reboot: 1411 - write-sect-total: 70625 - bad-blocks: 0.2% - architecture-name: "powerpc" - board-name: "RB1100" - platform: "MikroTik" diff --git a/test/units/modules/network/routeros/routeros_module.py b/test/units/modules/network/routeros/routeros_module.py deleted file mode 100644 index cf9a3dfe2d..0000000000 --- a/test/units/modules/network/routeros/routeros_module.py +++ /dev/null @@ -1,88 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json - -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase - - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(name): - path = os.path.join(fixture_path, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as f: - data = f.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class TestRouterosModule(ModuleTestCase): - - def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False): - - self.load_fixtures(commands) - - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - if commands is not None: - if sort: - self.assertEqual(sorted(commands), sorted(result['commands']), result['commands']) - else: - self.assertEqual(commands, result['commands'], result['commands']) - - return result - - def failed(self): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def changed(self, changed=False): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertEqual(result['changed'], changed, result) - return result - - def load_fixtures(self, commands=None): - pass diff --git a/test/units/modules/network/routeros/test_routeros_command.py b/test/units/modules/network/routeros/test_routeros_command.py deleted file mode 100644 index 7503e78c7b..0000000000 --- a/test/units/modules/network/routeros/test_routeros_command.py +++ /dev/null @@ -1,113 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json - -from units.compat.mock import patch -from ansible.modules.network.routeros import routeros_command -from units.modules.utils import set_module_args -from .routeros_module import TestRouterosModule, load_fixture - - -class TestRouterosCommandModule(TestRouterosModule): - - module = routeros_command - - def setUp(self): - super(TestRouterosCommandModule, self).setUp() - - self.mock_run_commands = patch('ansible.modules.network.routeros.routeros_command.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestRouterosCommandModule, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for item in commands: - try: - obj = json.loads(item) - command = obj - except ValueError: - command = item - filename = str(command).replace(' ', '_').replace('/', '') - output.append(load_fixture(filename)) - return output - - self.run_commands.side_effect = load_from_file - - def test_routeros_command_simple(self): - set_module_args(dict(commands=['/system resource print'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 1) - self.assertTrue('platform: "MikroTik"' in result['stdout'][0]) - - def test_routeros_command_multiple(self): - set_module_args(dict(commands=['/system resource print', '/system resource print'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 2) - self.assertTrue('platform: "MikroTik"' in result['stdout'][0]) - - def test_routeros_command_wait_for(self): - wait_for = 'result[0] contains "MikroTik"' - set_module_args(dict(commands=['/system resource print'], wait_for=wait_for)) - self.execute_module() - - def test_routeros_command_wait_for_fails(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['/system resource print'], wait_for=wait_for)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 10) - - def test_routeros_command_retries(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['/system resource print'], wait_for=wait_for, retries=2)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 2) - - def test_routeros_command_match_any(self): - wait_for = ['result[0] contains "MikroTik"', - 'result[0] contains "test string"'] - set_module_args(dict(commands=['/system resource print'], wait_for=wait_for, match='any')) - self.execute_module() - - def test_routeros_command_match_all(self): - wait_for = ['result[0] contains "MikroTik"', - 'result[0] contains "RB1100"'] - set_module_args(dict(commands=['/system resource print'], wait_for=wait_for, match='all')) - self.execute_module() - - def test_routeros_command_match_all_failure(self): - wait_for = ['result[0] contains "MikroTik"', - 'result[0] contains "test string"'] - commands = ['/system resource print', '/system resource print'] - set_module_args(dict(commands=commands, wait_for=wait_for, match='all')) - self.execute_module(failed=True) - - def test_routeros_command_wait_for_2(self): - wait_for = 'result[0] contains "wireless"' - set_module_args(dict(commands=['/system package print'], wait_for=wait_for)) - self.execute_module() diff --git a/test/units/modules/network/routeros/test_routeros_facts.py b/test/units/modules/network/routeros/test_routeros_facts.py deleted file mode 100644 index 4bd648b052..0000000000 --- a/test/units/modules/network/routeros/test_routeros_facts.py +++ /dev/null @@ -1,109 +0,0 @@ -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.routeros import routeros_facts -from units.modules.utils import set_module_args -from .routeros_module import TestRouterosModule, load_fixture - - -class TestRouterosFactsModule(TestRouterosModule): - - module = routeros_facts - - def setUp(self): - super(TestRouterosFactsModule, self).setUp() - self.mock_run_commands = patch('ansible.modules.network.routeros.routeros_facts.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestRouterosFactsModule, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - def load_from_file(*args, **kwargs): - module = args - commands = kwargs['commands'] - output = list() - - for command in commands: - filename = str(command).split(' | ')[0].replace(' ', '_') - output.append(load_fixture('routeros_facts%s' % filename)) - return output - - self.run_commands.side_effect = load_from_file - - def test_routeros_facts_default(self): - set_module_args(dict(gather_subset='default')) - result = self.execute_module() - self.assertEqual( - result['ansible_facts']['ansible_net_hostname'], 'MikroTik' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_version'], '6.42.5 (stable)' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_model'], 'RouterBOARD 3011UiAS' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_serialnum'], '1234567890' - ) - - def test_routeros_facts_hardware(self): - set_module_args(dict(gather_subset='hardware')) - result = self.execute_module() - self.assertEqual( - result['ansible_facts']['ansible_net_spacefree_mb'], 64921.6 - ) - self.assertEqual( - result['ansible_facts']['ansible_net_spacetotal_mb'], 65024.0 - ) - self.assertEqual( - result['ansible_facts']['ansible_net_memfree_mb'], 988.3 - ) - self.assertEqual( - result['ansible_facts']['ansible_net_memtotal_mb'], 1010.8 - ) - - def test_routeros_facts_config(self): - set_module_args(dict(gather_subset='config')) - result = self.execute_module() - self.assertIsInstance( - result['ansible_facts']['ansible_net_config'], str - ) - - def test_routeros_facts_interfaces(self): - set_module_args(dict(gather_subset='interfaces')) - result = self.execute_module() - self.assertIn( - result['ansible_facts']['ansible_net_all_ipv4_addresses'][0], ['10.37.129.3', '10.37.0.0'] - ) - self.assertEqual( - result['ansible_facts']['ansible_net_all_ipv6_addresses'], ['fe80::21c:42ff:fe36:5290'] - ) - self.assertEqual( - result['ansible_facts']['ansible_net_all_ipv6_addresses'][0], - result['ansible_facts']['ansible_net_interfaces']['ether1']['ipv6'][0]['address'] - ) - self.assertEqual( - len(result['ansible_facts']['ansible_net_interfaces'].keys()), 11 - ) - self.assertEqual( - len(result['ansible_facts']['ansible_net_neighbors'].keys()), 4 - ) diff --git a/test/units/modules/network/slxos/fixtures/show_interface_ethernet_0_2_switchport b/test/units/modules/network/slxos/fixtures/show_interface_ethernet_0_2_switchport deleted file mode 100644 index b43c357021..0000000000 --- a/test/units/modules/network/slxos/fixtures/show_interface_ethernet_0_2_switchport +++ /dev/null @@ -1,6 +0,0 @@ - Interface name : Ethernet 0/2 - Switchport mode : access - Ingress filter : enable - Acceptable frame types : vlan-untagged only - Default Vlan : 1 - Active Vlans : 1 diff --git a/test/units/modules/network/slxos/fixtures/show_interface_ethernet_0_3_switchport b/test/units/modules/network/slxos/fixtures/show_interface_ethernet_0_3_switchport deleted file mode 100644 index e69de29bb2..0000000000 --- a/test/units/modules/network/slxos/fixtures/show_interface_ethernet_0_3_switchport +++ /dev/null diff --git a/test/units/modules/network/slxos/fixtures/show_interface_ethernet_0_4_switchport b/test/units/modules/network/slxos/fixtures/show_interface_ethernet_0_4_switchport deleted file mode 100644 index 63a761bdce..0000000000 --- a/test/units/modules/network/slxos/fixtures/show_interface_ethernet_0_4_switchport +++ /dev/null @@ -1,6 +0,0 @@ - Interface name : Ethernet 0/4 - Switchport mode : trunk - Ingress filter : enable - Acceptable frame types : vlan-tagged only - Native Vlan : 1 - Active Vlans : 1,22,200 diff --git a/test/units/modules/network/slxos/fixtures/show_version b/test/units/modules/network/slxos/fixtures/show_version deleted file mode 100644 index 0d648378ac..0000000000 --- a/test/units/modules/network/slxos/fixtures/show_version +++ /dev/null @@ -1,18 +0,0 @@ -SLX-OS Operating System Software -SLX-OS Operating System Version: 17s.1.02 -Copyright (c) 1995-2018 Brocade Communications Systems, Inc. -Firmware name: 17s.1.02 -Build Time: 00:06:59 Sep 28, 2017 -Install Time: 15:58:29 Feb 9, 2018 -Kernel: 2.6.34.6 -Host Version: Ubuntu 14.04 LTS -Host Kernel: Linux 3.14.17 - -Control Processor: QEMU Virtual CPU version 2.0.0 - -System Uptime: 34days 4hrs 41mins 53secs - -Slot Name Primary/Secondary Versions Status ---------------------------------------------------------------------------- -SW/0 SLX-OS 17s.1.02 ACTIVE* - 17s.1.02 diff --git a/test/units/modules/network/slxos/fixtures/show_vlan_brief b/test/units/modules/network/slxos/fixtures/show_vlan_brief deleted file mode 100644 index 3a49c5a7a4..0000000000 --- a/test/units/modules/network/slxos/fixtures/show_vlan_brief +++ /dev/null @@ -1,17 +0,0 @@ -Total Number of VLANs configured : 2 -VLAN Name State Config status Ports Classification -(R)-RSPAN (u)-Untagged - (t)-Tagged -================ =============== ========================== =============== ==================== -1 default ACTIVE Static Eth 1/5(t) - -22 VLAN0022 INACTIVE(no member port) Static - -5 VLAN0005 ACTIVE Static Tu 61442(t) vni 5 - Tu 61443(t) vni 5 - -200 VLAN0200 ACTIVE Dynamic (MVRP) Po 60(t) - -1000 VLAN1000 ACTIVE Dynamic (EP tracking) Po 60(t) - -4090 VLAN4090 INACTIVE(no member port) Static diff --git a/test/units/modules/network/slxos/fixtures/slxos_config_config.cfg b/test/units/modules/network/slxos/fixtures/slxos_config_config.cfg deleted file mode 100644 index 48286bf1e5..0000000000 --- a/test/units/modules/network/slxos/fixtures/slxos_config_config.cfg +++ /dev/null @@ -1,31 +0,0 @@ -! -hostname router -! -interface Ethernet 0/0 - ip address 1.2.3.4 255.255.255.0 - description test string -! -interface Ethernet 0/1 - ip address 6.7.8.9 255.255.255.0 - description test string - shutdown -! -interface Ethernet 0/10 - channel-group 20 mode active - description Channel Group Member -! -interface Ethernet 0/11 - channel-group 20 mode active - description Channel Group Member -! -interface Port-channel 20 -! -interface Ethernet 0/9 - ip address 172.16.128.99 255.255.255.0 - ipv6 address dead::beaf/64 - description Bleh -! -protocol lldp - system-description An Extreme SLX Device - disable -! diff --git a/test/units/modules/network/slxos/fixtures/slxos_config_src.cfg b/test/units/modules/network/slxos/fixtures/slxos_config_src.cfg deleted file mode 100644 index 1b642f8b4e..0000000000 --- a/test/units/modules/network/slxos/fixtures/slxos_config_src.cfg +++ /dev/null @@ -1,11 +0,0 @@ -! -hostname foo -! -interface Ethernet 0/0 - no ip address -! -interface Ethernet 0/1 - ip address 6.7.8.9 255.255.255.0 - description test string - shutdown -! diff --git a/test/units/modules/network/slxos/fixtures/slxos_facts_show_inventory_chassis b/test/units/modules/network/slxos/fixtures/slxos_facts_show_inventory_chassis deleted file mode 100644 index 7908951251..0000000000 --- a/test/units/modules/network/slxos/fixtures/slxos_facts_show_inventory_chassis +++ /dev/null @@ -1,5 +0,0 @@ - - -NAME: Chassis DESCR:System Chassis -SID:BR-SLX9140 SwitchType:3001 -PN:84-1002952-01 SN:EXH3349M005 diff --git a/test/units/modules/network/slxos/fixtures/slxos_facts_show_running-config b/test/units/modules/network/slxos/fixtures/slxos_facts_show_running-config deleted file mode 100644 index 3d7d017b06..0000000000 --- a/test/units/modules/network/slxos/fixtures/slxos_facts_show_running-config +++ /dev/null @@ -1 +0,0 @@ -switch-attributes host-name DC2LEAF2 diff --git a/test/units/modules/network/slxos/fixtures/slxos_facts_show_version b/test/units/modules/network/slxos/fixtures/slxos_facts_show_version deleted file mode 100644 index 0d648378ac..0000000000 --- a/test/units/modules/network/slxos/fixtures/slxos_facts_show_version +++ /dev/null @@ -1,18 +0,0 @@ -SLX-OS Operating System Software -SLX-OS Operating System Version: 17s.1.02 -Copyright (c) 1995-2018 Brocade Communications Systems, Inc. -Firmware name: 17s.1.02 -Build Time: 00:06:59 Sep 28, 2017 -Install Time: 15:58:29 Feb 9, 2018 -Kernel: 2.6.34.6 -Host Version: Ubuntu 14.04 LTS -Host Kernel: Linux 3.14.17 - -Control Processor: QEMU Virtual CPU version 2.0.0 - -System Uptime: 34days 4hrs 41mins 53secs - -Slot Name Primary/Secondary Versions Status ---------------------------------------------------------------------------- -SW/0 SLX-OS 17s.1.02 ACTIVE* - 17s.1.02 diff --git a/test/units/modules/network/slxos/slxos_module.py b/test/units/modules/network/slxos/slxos_module.py deleted file mode 100644 index 8cd482ed11..0000000000 --- a/test/units/modules/network/slxos/slxos_module.py +++ /dev/null @@ -1,87 +0,0 @@ -# (c) 2018 Extreme Networks Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json - -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase - - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(name): - path = os.path.join(fixture_path, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as file_desc: - data = file_desc.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class TestSlxosModule(ModuleTestCase): - - def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False): - - self.load_fixtures(commands) - - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - if commands is not None: - if sort: - self.assertEqual(sorted(commands), sorted(result['commands']), result['commands']) - else: - self.assertEqual(commands, result['commands'], result['commands']) - - return result - - def failed(self): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def changed(self, changed=False): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertEqual(result['changed'], changed, result) - return result - - def load_fixtures(self, commands=None): - pass diff --git a/test/units/modules/network/slxos/test_slxos_command.py b/test/units/modules/network/slxos/test_slxos_command.py deleted file mode 100644 index 3e7de3c6f1..0000000000 --- a/test/units/modules/network/slxos/test_slxos_command.py +++ /dev/null @@ -1,121 +0,0 @@ -# -# (c) 2018 Extreme Networks Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json - -from units.compat.mock import patch -from units.modules.utils import set_module_args -from ansible.modules.network.slxos import slxos_command -from .slxos_module import TestSlxosModule, load_fixture - - -class TestSlxosCommandModule(TestSlxosModule): - - module = slxos_command - - def setUp(self): - super(TestSlxosCommandModule, self).setUp() - - self.mock_run_commands = patch('ansible.modules.network.slxos.slxos_command.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestSlxosCommandModule, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for item in commands: - try: - obj = json.loads(item['command']) - command = obj['command'] - except ValueError: - command = item['command'] - filename = str(command).replace(' ', '_') - output.append(load_fixture(filename)) - return output - - self.run_commands.side_effect = load_from_file - - def test_slxos_command_simple(self): - set_module_args(dict(commands=['show version'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 1) - self.assertTrue(result['stdout'][0].startswith('SLX-OS Operating System Software')) - - def test_slxos_command_multiple(self): - set_module_args(dict(commands=['show version', 'show version'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 2) - self.assertTrue(result['stdout'][0].startswith('SLX-OS Operating System Software')) - - def test_slxos_command_wait_for(self): - wait_for = 'result[0] contains "SLX-OS Operating System Software"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module() - - def test_slxos_command_wait_for_fails(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 10) - - def test_slxos_command_retries(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show version'], wait_for=wait_for, retries=2)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 2) - - def test_slxos_command_match_any(self): - wait_for = ['result[0] contains "SLX-OS"', - 'result[0] contains "test string"'] - set_module_args(dict(commands=['show version'], wait_for=wait_for, match='any')) - self.execute_module() - - def test_slxos_command_match_all(self): - wait_for = ['result[0] contains "SLX-OS"', - 'result[0] contains "SLX-OS Operating System Software"'] - set_module_args(dict(commands=['show version'], wait_for=wait_for, match='all')) - self.execute_module() - - def test_slxos_command_match_all_failure(self): - wait_for = ['result[0] contains "SLX-OS Operating System Software"', - 'result[0] contains "test string"'] - commands = ['show version', 'show version'] - set_module_args(dict(commands=commands, wait_for=wait_for, match='all')) - self.execute_module(failed=True) - - def test_slxos_command_configure_error(self): - commands = ['configure terminal'] - set_module_args({ - 'commands': commands, - '_ansible_check_mode': True, - }) - result = self.execute_module(failed=True) - self.assertEqual( - result['msg'], - 'slxos_command does not support running config mode commands. ' - 'Please use slxos_config instead' - ) diff --git a/test/units/modules/network/slxos/test_slxos_config.py b/test/units/modules/network/slxos/test_slxos_config.py deleted file mode 100644 index e37f547dff..0000000000 --- a/test/units/modules/network/slxos/test_slxos_config.py +++ /dev/null @@ -1,195 +0,0 @@ -# -# (c) 2018 Extreme Networks Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from units.modules.utils import set_module_args -from ansible.modules.network.slxos import slxos_config -from .slxos_module import TestSlxosModule, load_fixture - - -class TestSlxosConfigModule(TestSlxosModule): - - module = slxos_config - - def setUp(self): - super(TestSlxosConfigModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.slxos.slxos_config.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch('ansible.modules.network.slxos.slxos_config.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_run_commands = patch('ansible.modules.network.slxos.slxos_config.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestSlxosConfigModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - config_file = 'slxos_config_config.cfg' - self.get_config.return_value = load_fixture(config_file) - self.load_config.return_value = None - - def test_slxos_config_unchanged(self): - src = load_fixture('slxos_config_config.cfg') - set_module_args(dict(src=src)) - self.execute_module() - - def test_slxos_config_src(self): - src = load_fixture('slxos_config_src.cfg') - set_module_args(dict(src=src)) - commands = ['hostname foo', 'interface Ethernet 0/0', - 'no ip address'] - self.execute_module(changed=True, commands=commands) - - def test_slxos_config_backup(self): - set_module_args(dict(backup=True)) - result = self.execute_module() - self.assertIn('__backup__', result) - - def test_slxos_config_save_always(self): - self.run_commands.return_value = "Hostname foo" - set_module_args(dict(save_when='always')) - self.execute_module(changed=True) - self.assertEqual(self.run_commands.call_count, 1) - self.assertEqual(self.get_config.call_count, 0) - self.assertEqual(self.load_config.call_count, 0) - args = self.run_commands.call_args[0][1] - self.assertIn('copy running-config startup-config', args['command']) - - def test_slxos_config_save_changed_true(self): - src = load_fixture('slxos_config_src.cfg') - set_module_args(dict(src=src, save_when='changed')) - commands = ['hostname foo', 'interface Ethernet 0/0', 'no ip address'] - self.execute_module(changed=True, commands=commands) - self.assertEqual(self.run_commands.call_count, 1) - self.assertEqual(self.get_config.call_count, 1) - self.assertEqual(self.load_config.call_count, 1) - args = self.run_commands.call_args[0][1] - self.assertIn('copy running-config startup-config', args['command']) - - def test_slxos_config_save_changed_false(self): - set_module_args(dict(save_when='changed')) - self.execute_module(changed=False) - self.assertEqual(self.run_commands.call_count, 0) - self.assertEqual(self.get_config.call_count, 0) - self.assertEqual(self.load_config.call_count, 0) - - def test_slxos_config_lines_wo_parents(self): - set_module_args(dict(lines=['hostname foo'])) - commands = ['hostname foo'] - self.execute_module(changed=True, commands=commands) - - def test_slxos_config_lines_w_parents(self): - set_module_args(dict(lines=['shutdown'], parents=['interface Ethernet 0/0'])) - commands = ['interface Ethernet 0/0', 'shutdown'] - self.execute_module(changed=True, commands=commands) - - def test_slxos_config_before(self): - set_module_args(dict(lines=['hostname foo'], before=['test1', 'test2'])) - commands = ['test1', 'test2', 'hostname foo'] - self.execute_module(changed=True, commands=commands, sort=False) - - def test_slxos_config_after(self): - set_module_args(dict(lines=['hostname foo'], after=['test1', 'test2'])) - commands = ['hostname foo', 'test1', 'test2'] - self.execute_module(changed=True, commands=commands, sort=False) - - def test_slxos_config_before_after_no_change(self): - set_module_args(dict(lines=['hostname router'], - before=['test1', 'test2'], - after=['test3', 'test4'])) - self.execute_module() - - def test_slxos_config_config(self): - config = 'hostname localhost' - set_module_args(dict(lines=['hostname router'], config=config)) - commands = ['hostname router'] - self.execute_module(changed=True, commands=commands) - - def test_slxos_config_replace_block(self): - lines = ['description test string', 'test string'] - parents = ['interface Ethernet 0/0'] - set_module_args(dict(lines=lines, replace='block', parents=parents)) - commands = parents + lines - self.execute_module(changed=True, commands=commands) - - def test_slxos_config_match_none(self): - lines = ['hostname router'] - set_module_args(dict(lines=lines, match='none')) - self.execute_module(changed=True, commands=lines) - - def test_slxos_config_match_none_parents(self): - lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string'] - parents = ['interface Ethernet 0/0'] - set_module_args(dict(lines=lines, parents=parents, match='none')) - commands = parents + lines - self.execute_module(changed=True, commands=commands, sort=False) - - def test_slxos_config_match_strict(self): - lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string', - 'shutdown'] - parents = ['interface Ethernet 0/0'] - set_module_args(dict(lines=lines, parents=parents, match='strict')) - commands = parents + ['shutdown'] - self.execute_module(changed=True, commands=commands, sort=False) - - def test_slxos_config_match_exact(self): - lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string', - 'shutdown'] - parents = ['interface Ethernet 0/0'] - set_module_args(dict(lines=lines, parents=parents, match='exact')) - commands = parents + lines - self.execute_module(changed=True, commands=commands, sort=False) - - def test_slxos_config_src_and_lines_fails(self): - args = dict(src='foo', lines='foo') - set_module_args(args) - self.execute_module(failed=True) - - def test_slxos_config_src_and_parents_fails(self): - args = dict(src='foo', parents='foo') - set_module_args(args) - self.execute_module(failed=True) - - def test_slxos_config_match_exact_requires_lines(self): - args = dict(match='exact') - set_module_args(args) - self.execute_module(failed=True) - - def test_slxos_config_match_strict_requires_lines(self): - args = dict(match='strict') - set_module_args(args) - self.execute_module(failed=True) - - def test_slxos_config_replace_block_requires_lines(self): - args = dict(replace='block') - set_module_args(args) - self.execute_module(failed=True) - - def test_slxos_config_replace_config_requires_src(self): - args = dict(replace='config') - set_module_args(args) - self.execute_module(failed=True) diff --git a/test/units/modules/network/slxos/test_slxos_facts.py b/test/units/modules/network/slxos/test_slxos_facts.py deleted file mode 100644 index 4859903e81..0000000000 --- a/test/units/modules/network/slxos/test_slxos_facts.py +++ /dev/null @@ -1,61 +0,0 @@ -# -# (c) 2018 Extreme Networks Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from units.modules.utils import set_module_args -from ansible.modules.network.slxos import slxos_facts -from .slxos_module import TestSlxosModule, load_fixture - - -class TestSlxosFactsModule(TestSlxosModule): - - module = slxos_facts - - def setUp(self): - super(TestSlxosFactsModule, self).setUp() - self.mock_run_commands = patch('ansible.modules.network.slxos.slxos_facts.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestSlxosFactsModule, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - def load_from_file(*args, **kwargs): - commands = args[1] - output = list() - - for command in commands: - filename = str(command).split(' | ')[0].replace(' ', '_') - output.append(load_fixture('slxos_facts_%s' % filename)) - return output - - self.run_commands.side_effect = load_from_file - - def test_slxos_facts(self): - set_module_args(dict(gather_subset='default')) - result = self.execute_module() - self.assertEqual( - result['ansible_facts']['ansible_net_model'], 'BR-SLX9140' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_serialnum'], 'EXH3349M005' - ) diff --git a/test/units/modules/network/slxos/test_slxos_interface.py b/test/units/modules/network/slxos/test_slxos_interface.py deleted file mode 100644 index 4814ec0f54..0000000000 --- a/test/units/modules/network/slxos/test_slxos_interface.py +++ /dev/null @@ -1,155 +0,0 @@ -# -# (c) 2018 Extreme Networks Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import re - -from units.compat.mock import patch -from units.modules.utils import set_module_args -from ansible.modules.network.slxos import slxos_interface -from .slxos_module import TestSlxosModule, load_fixture - - -class TestSlxosInterfaceModule(TestSlxosModule): - module = slxos_interface - - def setUp(self): - super(TestSlxosInterfaceModule, self).setUp() - self._patch_get_config = patch( - 'ansible.modules.network.slxos.slxos_interface.get_config' - ) - self._patch_load_config = patch( - 'ansible.modules.network.slxos.slxos_interface.load_config' - ) - self._patch_exec_command = patch( - 'ansible.modules.network.slxos.slxos_interface.exec_command' - ) - - self._get_config = self._patch_get_config.start() - self._load_config = self._patch_load_config.start() - self._exec_command = self._patch_exec_command.start() - - def tearDown(self): - super(TestSlxosInterfaceModule, self).tearDown() - self._patch_get_config.stop() - self._patch_load_config.stop() - self._patch_exec_command.stop() - - def load_fixtures(self, commands=None): - config_file = 'slxos_config_config.cfg' - self._get_config.return_value = load_fixture(config_file) - self._load_config.return_value = None - - def test_slxos_interface_description(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet 0/2', - description='show version' - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'interface Ethernet 0/2', - 'description show version' - ], - 'changed': True - } - ) - - def test_slxos_interface_speed(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet 0/2', - speed=1000 - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'interface Ethernet 0/2', - 'speed 1000' - ], - 'changed': True - } - ) - - def test_slxos_interface_mtu(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet 0/2', - mtu=1548 - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'interface Ethernet 0/2', - 'mtu 1548' - ], - 'changed': True - } - ) - - def test_slxos_interface_mtu_out_of_range(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet 0/2', - mtu=15000 - )) - result = self.execute_module(failed=True) - self.assertEqual( - result, - { - 'msg': 'mtu must be between 1548 and 9216', - 'failed': True - } - ) - - def test_slxos_interface_enabled(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet 0/1', - enabled=True - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'interface Ethernet 0/1', - 'no shutdown' - ], - 'changed': True - } - ) - - def test_slxos_interface_invalid_argument(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet 0/1', - shawshank='Redemption' - )) - result = self.execute_module(failed=True) - self.assertEqual(result['failed'], True) - self.assertTrue(re.match( - r'Unsupported parameters for \((basic.py|basic.pyc)\) module: ' - 'shawshank Supported parameters include: aggregate, ' - 'delay, description, enabled, mtu, name, neighbors, ' - 'rx_rate, speed, state, tx_rate', - result['msg'] - )) diff --git a/test/units/modules/network/slxos/test_slxos_l2_interface.py b/test/units/modules/network/slxos/test_slxos_l2_interface.py deleted file mode 100644 index 929552a47a..0000000000 --- a/test/units/modules/network/slxos/test_slxos_l2_interface.py +++ /dev/null @@ -1,171 +0,0 @@ -# -# (c) 2018 Extreme Networks Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import re - -from units.compat.mock import patch -from units.modules.utils import set_module_args -from ansible.modules.network.slxos import slxos_l2_interface -from .slxos_module import TestSlxosModule, load_fixture - - -class TestSlxosL2InterfaceModule(TestSlxosModule): - module = slxos_l2_interface - - def setUp(self): - super(TestSlxosL2InterfaceModule, self).setUp() - self._patch_get_config = patch( - 'ansible.modules.network.slxos.slxos_l2_interface.get_config' - ) - self._patch_load_config = patch( - 'ansible.modules.network.slxos.slxos_l2_interface.load_config' - ) - self._patch_run_commands = patch( - 'ansible.modules.network.slxos.slxos_l2_interface.run_commands' - ) - - self._get_config = self._patch_get_config.start() - self._load_config = self._patch_load_config.start() - self._run_commands = self._patch_run_commands.start() - self._run_commands.side_effect = self.run_commands_load_fixtures - - def run_commands_load_fixtures(self, module, commands, *args, **kwargs): - return self.load_fixtures( - commands, - destination=self._run_commands, - return_values=True - ) - - def tearDown(self): - super(TestSlxosL2InterfaceModule, self).tearDown() - self._patch_get_config.stop() - self._patch_load_config.stop() - self._patch_run_commands.stop() - - def load_fixtures(self, commands=None, destination=None, return_values=False): - side_effects = [] - - if not destination: - destination = self._get_config - - if not commands: - commands = ['slxos_config_config.cfg'] - - for command in commands: - filename = str(command).replace(' ', '_') - filename = str(filename).replace('/', '_') - side_effects.append(load_fixture(filename)) - - if return_values is True: - return side_effects - - destination.side_effect = side_effects - return None - - def test_slxos_l2_interface_access_vlan(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet 0/2', - mode='access', - access_vlan=200, - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'interface ethernet 0/2', - 'switchport access vlan 200' - ], - 'changed': True, - 'warnings': [] - } - ) - - def test_slxos_l2_interface_vlan_does_not_exist(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet 0/2', - mode='access', - access_vlan=10, - )) - result = self.execute_module(failed=True) - self.assertEqual( - result, - { - 'msg': 'You are trying to configure a VLAN on an interface ' - 'that\ndoes not exist on the switch yet!', - 'failed': True, - 'vlan': '10' - } - ) - - def test_slxos_l2_interface_incorrect_state(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet 0/3', - mode='access', - access_vlan=10, - )) - result = self.execute_module(failed=True) - self.assertEqual( - result, - { - 'msg': 'Ensure interface is configured to be a L2\nport first ' - 'before using this module. You can use\nthe slxos_' - 'interface module for this.', - 'failed': True - } - ) - - def test_slxos_l2_interface_trunk(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet 0/4', - mode='trunk', - native_vlan='22', - trunk_allowed_vlans='200,22' - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'interface ethernet 0/4', - 'switchport trunk allowed vlan add 200,22', - 'switchport trunk native vlan 22' - ], - 'changed': True, - 'warnings': [] - } - ) - - def test_slxos_l2_interface_invalid_argument(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet 0/2', - mode='access', - access_vlan=10, - shawshank='Redemption' - )) - result = self.execute_module(failed=True) - self.assertEqual(result['failed'], True) - self.assertTrue(re.match( - r'Unsupported parameters for \((basic.py|basic.pyc)\) module: ' - 'shawshank Supported parameters include: access_vlan, aggregate, ' - 'mode, name, native_vlan, state, trunk_allowed_vlans, trunk_vlans', - result['msg'] - )) diff --git a/test/units/modules/network/slxos/test_slxos_l3_interface.py b/test/units/modules/network/slxos/test_slxos_l3_interface.py deleted file mode 100644 index dd4826c6df..0000000000 --- a/test/units/modules/network/slxos/test_slxos_l3_interface.py +++ /dev/null @@ -1,102 +0,0 @@ -# -# (c) 2018 Extreme Networks Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import re - -from units.compat.mock import patch -from units.modules.utils import set_module_args -from ansible.modules.network.slxos import slxos_l3_interface -from .slxos_module import TestSlxosModule, load_fixture - - -class TestSlxosL3InterfaceModule(TestSlxosModule): - module = slxos_l3_interface - - def setUp(self): - super(TestSlxosL3InterfaceModule, self).setUp() - self._patch_get_config = patch( - 'ansible.modules.network.slxos.slxos_l3_interface.get_config' - ) - self._patch_load_config = patch( - 'ansible.modules.network.slxos.slxos_l3_interface.load_config' - ) - - self._get_config = self._patch_get_config.start() - self._load_config = self._patch_load_config.start() - - def tearDown(self): - super(TestSlxosL3InterfaceModule, self).tearDown() - self._patch_get_config.stop() - self._patch_load_config.stop() - - def load_fixtures(self, commands=None): - config_file = 'slxos_config_config.cfg' - self._get_config.return_value = load_fixture(config_file) - self._load_config.return_value = None - - def test_slxos_l3_interface_ipv4_address(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet 0/2', - ipv4='192.168.4.1/24' - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'interface Ethernet 0/2', - 'ip address 192.168.4.1/24' - ], - 'changed': True - } - ) - - def test_slxos_l3_interface_absent(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet 0/9', - state='absent' - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'interface Ethernet 0/9', - 'no ip address', - 'no ipv6 address' - ], - 'changed': True - } - ) - - def test_slxos_l3_interface_invalid_argument(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet 0/1', - shawshank='Redemption' - )) - result = self.execute_module(failed=True) - self.assertEqual(result['failed'], True) - self.assertTrue(re.match( - r'Unsupported parameters for \((basic.py|basic.pyc)\) module: ' - 'shawshank Supported parameters include: aggregate, ipv4, ipv6, ' - 'name, state', - result['msg'] - )) diff --git a/test/units/modules/network/slxos/test_slxos_linkagg.py b/test/units/modules/network/slxos/test_slxos_linkagg.py deleted file mode 100644 index 5969b0c652..0000000000 --- a/test/units/modules/network/slxos/test_slxos_linkagg.py +++ /dev/null @@ -1,159 +0,0 @@ -# -# (c) 2018 Extreme Networks Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import re - -from units.compat.mock import patch -from units.modules.utils import set_module_args -from ansible.modules.network.slxos import slxos_linkagg -from .slxos_module import TestSlxosModule, load_fixture - - -class TestSlxosLinkaggModule(TestSlxosModule): - module = slxos_linkagg - - def setUp(self): - super(TestSlxosLinkaggModule, self).setUp() - self._patch_get_config = patch( - 'ansible.modules.network.slxos.slxos_linkagg.get_config' - ) - self._patch_load_config = patch( - 'ansible.modules.network.slxos.slxos_linkagg.load_config' - ) - - self._get_config = self._patch_get_config.start() - self._load_config = self._patch_load_config.start() - - def tearDown(self): - super(TestSlxosLinkaggModule, self).tearDown() - self._patch_get_config.stop() - self._patch_load_config.stop() - - def load_fixtures(self, commands=None): - config_file = 'slxos_config_config.cfg' - self._get_config.return_value = load_fixture(config_file) - self._load_config.return_value = None - - def test_slxos_linkagg_group_present(self, *args, **kwargs): - set_module_args(dict( - group='10', - state='present' - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'interface port-channel 10', - 'exit' - ], - 'changed': True - } - ) - - def test_slxos_linkagg_group_members_active(self, *args, **kwargs): - set_module_args(dict( - group='10', - mode='active', - members=[ - 'Ethernet 0/1', - 'Ethernet 0/2' - ] - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'interface port-channel 10', - 'exit', - 'interface Ethernet 0/1', - 'channel-group 10 mode active', - 'interface Ethernet 0/2', - 'channel-group 10 mode active' - ], - 'changed': True - } - ) - - def test_slxos_linkagg_group_member_removal(self, *args, **kwargs): - set_module_args(dict( - group='20', - mode='active', - members=[ - 'Ethernet 0/10', - ] - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'interface port-channel 20', - 'exit', - 'interface Ethernet 0/11', - 'no channel-group' - ], - 'changed': True - } - ) - - def test_slxos_linkagg_group_members_absent(self, *args, **kwargs): - set_module_args(dict( - group='20', - state='absent' - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'no interface port-channel 20' - ], - 'changed': True - } - ) - set_module_args(dict( - group='10', - state='absent' - )) - result = self.execute_module(changed=False) - self.assertEqual( - result, - { - 'commands': [], - 'changed': False - } - ) - - def test_slxos_linkagg_invalid_argument(self, *args, **kwargs): - set_module_args(dict( - group='10', - shawshank='Redemption' - )) - result = self.execute_module(failed=True) - self.assertEqual(result['failed'], True) - self.assertTrue(re.match( - r'Unsupported parameters for \((basic.pyc|basic.py)\) module: ' - 'shawshank Supported parameters include: aggregate, group, ' - 'members, mode, purge, state', - result['msg'] - )) diff --git a/test/units/modules/network/slxos/test_slxos_lldp.py b/test/units/modules/network/slxos/test_slxos_lldp.py deleted file mode 100644 index 4d6c2d1555..0000000000 --- a/test/units/modules/network/slxos/test_slxos_lldp.py +++ /dev/null @@ -1,95 +0,0 @@ -# -# (c) 2018 Extreme Networks Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import re - -from units.compat.mock import patch -from units.modules.utils import set_module_args -from ansible.modules.network.slxos import slxos_lldp -from .slxos_module import TestSlxosModule, load_fixture - - -class TestSlxosLldpModule(TestSlxosModule): - module = slxos_lldp - - def setUp(self): - super(TestSlxosLldpModule, self).setUp() - self._patch_get_config = patch( - 'ansible.modules.network.slxos.slxos_lldp.get_config' - ) - self._patch_load_config = patch( - 'ansible.modules.network.slxos.slxos_lldp.load_config' - ) - - self._get_config = self._patch_get_config.start() - self._load_config = self._patch_load_config.start() - - def tearDown(self): - super(TestSlxosLldpModule, self).tearDown() - self._patch_get_config.stop() - self._patch_load_config.stop() - - def load_fixtures(self, commands=None): - config_file = 'slxos_config_config.cfg' - self._get_config.return_value = load_fixture(config_file) - self._load_config.return_value = None - - def test_slxos_lldp_present(self, *args, **kwargs): - set_module_args(dict( - state='present' - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'protocol lldp', - 'no disable' - ], - 'changed': True - } - ) - - def test_slxos_lldp_absent(self, *args, **kwargs): - set_module_args(dict( - state='absent' - )) - result = self.execute_module() - self.assertEqual( - result, - { - 'commands': [], - 'changed': False - } - ) - - def test_slxos_lldp_invalid_argument(self, *args, **kwargs): - set_module_args(dict( - state='absent', - shawshank='Redemption' - )) - result = self.execute_module(failed=True) - self.assertEqual(result['failed'], True) - self.assertTrue(re.match( - r'Unsupported parameters for \((basic.py|basic.pyc)\) module: ' - 'shawshank Supported parameters include: state', - result['msg'] - ), 'Output did not match. Got: %s' % result['msg']) diff --git a/test/units/modules/network/slxos/test_slxos_vlan.py b/test/units/modules/network/slxos/test_slxos_vlan.py deleted file mode 100644 index 5c103a70d1..0000000000 --- a/test/units/modules/network/slxos/test_slxos_vlan.py +++ /dev/null @@ -1,144 +0,0 @@ -# -# (c) 2018 Extreme Networks Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. -# -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import re - -from units.compat.mock import patch -from units.modules.utils import set_module_args -from ansible.modules.network.slxos import slxos_vlan -from .slxos_module import TestSlxosModule, load_fixture - - -class TestSlxosVlanModule(TestSlxosModule): - module = slxos_vlan - - def setUp(self): - super(TestSlxosVlanModule, self).setUp() - self._patch_run_commands = patch( - 'ansible.modules.network.slxos.slxos_vlan.run_commands' - ) - self._patch_load_config = patch( - 'ansible.modules.network.slxos.slxos_vlan.load_config' - ) - - self._run_commands = self._patch_run_commands.start() - self._load_config = self._patch_load_config.start() - - def tearDown(self): - super(TestSlxosVlanModule, self).tearDown() - self._patch_run_commands.stop() - self._patch_load_config.stop() - - def load_fixtures(self, commands=None): - config_file = 'show_vlan_brief' - self._run_commands.return_value = [load_fixture(config_file)] - self._load_config.return_value = None - - def test_slxos_vlan_id_with_name(self, *args, **kwargs): - load_fixture('show_vlan_brief') - set_module_args(dict( - vlan_id=100, - name='ONEHUNDRED' - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'vlan 100', - 'name ONEHUNDRED' - ], - 'changed': True - } - ) - - def test_slxos_vlan_with_members(self, *args, **kwargs): - set_module_args(dict( - vlan_id=100, - name='ONEHUNDRED', - interfaces=[ - 'Ethernet 0/1', - 'Ethernet 0/2' - ] - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'vlan 100', - 'name ONEHUNDRED', - 'interface Ethernet 0/1', - 'switchport', - 'switchport mode access', - 'switchport access vlan 100', - 'interface Ethernet 0/2', - 'switchport', - 'switchport mode access', - 'switchport access vlan 100' - ], - 'changed': True - } - ) - - def test_slxos_vlan_state_absent(self, *args, **kwargs): - set_module_args(dict( - vlan_id=200, - state='absent' - )) - result = self.execute_module(changed=True) - self.assertEqual( - result, - { - 'commands': [ - 'no vlan 200' - ], - 'changed': True - } - ) - - def test_slxos_vlan_state_absent_nonexistent_vlan(self, *args, **kwargs): - set_module_args(dict( - vlan_id=100, - state='absent' - )) - result = self.execute_module() - self.assertEqual( - result, - { - 'commands': [], - 'changed': False - } - ) - - def test_slxos_interface_invalid_argument(self, *args, **kwargs): - set_module_args(dict( - name='Ethernet 0/1', - shawshank='Redemption' - )) - result = self.execute_module(failed=True) - self.assertEqual(result['failed'], True) - self.assertTrue(re.match( - r'Unsupported parameters for \((basic.py|basic.pyc)\) module: ' - 'shawshank Supported parameters include: aggregate, delay, ' - 'interfaces, name, purge, state, vlan_id', - result['msg'] - ), 'Result did not match expected output. Got: %s' % result['msg']) diff --git a/test/units/modules/network/voss/fixtures/show_sys-info b/test/units/modules/network/voss/fixtures/show_sys-info deleted file mode 100644 index 6e7099c2b6..0000000000 --- a/test/units/modules/network/voss/fixtures/show_sys-info +++ /dev/null @@ -1,107 +0,0 @@ -General Info : - - SysDescr : VSP-4450GSX-PWR+ (7.0.0.0_B015) - SysName : VSP-4450GSX-PWR+ - SysUpTime : 5 day(s), 17:13:09 - SysContact : http://www.extremenetworks.com/contact/ - SysLocation : - -Chassis Info: - - Chassis : 4450GSX-PWR+ - ModelName : 4450GSX-PWR+ - BrandName : Extreme Networks. - Serial# : 14JP512E0001 - H/W Revision : 01 - H/W Config : none - Part Number : - NumSlots : 1 - NumPorts : 50 - BaseMacAddr : b4:47:5e:00:00:00 - MacAddrCapacity : 256 - System MTU : 1950 - -Card Info : - - Slot# CardType Serial# Part# Oper Admin Power - Status Status State - 1 4450GSX-PWR+ 14JP512E0001 -- up up on - -Temperature Info : - - Chassis Temperature - 30 - - -Power Supply Info : - - Ps#1 Status : UP - Ps#1 Type : AC - Ps#1 Description : AC-DC-54V-1000W - Ps#1 Serial Number: LBNNTMPL20180R - Ps#1 Version : -- - Ps#1 Part Number : 325220-A.01 - - Ps#2 Status : empty - - Total Power Available : 1000 watts - Total Power Usage : 127 watts - -Fan Info : - - Description OperStatus OperSpeed AirflowDir - Tray 1 Fan 1 up mediumSpeed left-right - Tray 1 Fan 2 up mediumSpeed left-right - Tray 1 Fan 3 up mediumSpeed left-right - -LED Info : - - LED#1 Label : PWR - LED#1 Status : GreenSteady - - LED#2 Label : Status - LED#2 Status : GreenSteady - - LED#3 Label : Rps - LED#3 Status : Off - - LED#4 Label : Up - LED#4 Status : UnSupported - - LED#5 Label : Down - LED#5 Status : UnSupported - - LED#6 Label : Base - LED#6 Status : UnSupported - -System Error Info : - - Send Login Success Trap : false - Send Authentication Trap : false - Error Code : 0 - Error Severity : 0 - -Port Lock Info : - - Status : off - LockedPorts : - -Message Control Info : - - Action : suppress-msg - Control-Interval : 5 - Max-msg-num : 5 - Status : disable - - -Configuration Operation Info Since Boot Up: - Last Change: 0 day(s), 08:31:10 (5 day(s), 08:41:59 ago) - Last Vlan Change: 0 day(s), 08:27:35 (5 day(s), 08:45:34 ago) -Last Statistic Reset: 5 day(s), 16:56:45 (0 day(s), 00:16:24 ago) - -Current Uboot Info : ----------------------------------------------------------------------------------------------------- - - VU-Boot 2012.04-00002-g6fb1c26 (Apr 26 2017 - 13:37:44) bld=17042617 - - diff --git a/test/units/modules/network/voss/fixtures/voss_config_config.cfg b/test/units/modules/network/voss/fixtures/voss_config_config.cfg deleted file mode 100644 index 29e5233fbb..0000000000 --- a/test/units/modules/network/voss/fixtures/voss_config_config.cfg +++ /dev/null @@ -1,16 +0,0 @@ -prompt "VSP300" -interface GigabitEthernet 1/1 -name "ServerA" -vlacp enable -exit -interface GigabitEthernet 1/2 -name "ServerB" -vlacp enable -no shutdown -exit -interface loopback 1 -ip address 1 1.1.1.1/255.255.255.255 -exit -interface loopback 1 -ipv6 interface address 2011:0:0:0:0:0:0:1/128 -exit diff --git a/test/units/modules/network/voss/fixtures/voss_config_ipv6.cfg b/test/units/modules/network/voss/fixtures/voss_config_ipv6.cfg deleted file mode 100644 index 53611e7dda..0000000000 --- a/test/units/modules/network/voss/fixtures/voss_config_ipv6.cfg +++ /dev/null @@ -1,6 +0,0 @@ -interface loopback 1 -ip address 1 2.2.2.2/255.255.255.255 -exit -interface loopback 1 -ipv6 interface address 2011:0:0:0:0:0:0:2/128 -exit diff --git a/test/units/modules/network/voss/fixtures/voss_config_src.cfg b/test/units/modules/network/voss/fixtures/voss_config_src.cfg deleted file mode 100644 index 72aa545874..0000000000 --- a/test/units/modules/network/voss/fixtures/voss_config_src.cfg +++ /dev/null @@ -1,10 +0,0 @@ -prompt "VSP8K" -interface GigabitEthernet 1/1 -name "UNUSED" -vlacp enable -exit -interface GigabitEthernet 1/2 -name "ServerB" -vlacp enable -no shutdown -exit diff --git a/test/units/modules/network/voss/fixtures/voss_facts_show_interfaces_gigabitEthernet_interface b/test/units/modules/network/voss/fixtures/voss_facts_show_interfaces_gigabitEthernet_interface deleted file mode 100644 index cdebd4068b..0000000000 --- a/test/units/modules/network/voss/fixtures/voss_facts_show_interfaces_gigabitEthernet_interface +++ /dev/null @@ -1,93 +0,0 @@ - -========================================================================================== - Port Interface -========================================================================================== -PORT LINK PORT PHYSICAL STATUS -NUM INDEX DESCRIPTION TRAP LOCK MTU ADDRESS ADMIN OPERATE ------------------------------------------------------------------------------------------- -1/1 192 10GbNone true false 1950 00:51:00:16:40:00 down down -1/2 193 10GbNone true false 1950 00:51:00:16:40:01 down down -1/3 194 10GbNone true false 1950 00:51:00:16:40:02 down down -1/4 195 10GbNone true false 1950 00:51:00:16:40:03 down down -1/5 196 10GbNone true false 1950 00:51:00:16:40:04 down down -1/6 197 10GbNone true false 1950 00:51:00:16:40:05 down down -1/7 198 10GbNone true false 1950 00:51:00:16:40:06 down down -1/8 199 10GbNone true false 1950 00:51:00:16:40:07 down down -1/9 200 10GbNone true false 1950 00:51:00:16:40:08 down down -1/10 201 10GbNone true false 1950 00:51:00:16:40:09 down down -1/11 202 10GbNone true false 1950 00:51:00:16:40:0a down down -1/12 203 10GbNone true false 1950 00:51:00:16:40:0b down down -1/13 204 10GbNone true false 1950 00:51:00:16:40:0c down down -1/14 205 10GbNone true false 1950 00:51:00:16:40:0d down down -1/15 206 10GbNone true false 1950 00:51:00:16:40:0e down down -1/16 207 10GbNone true false 1950 00:51:00:16:40:0f down down -1/17 208 10GbNone true false 1950 00:51:00:16:40:10 down down -1/18 209 10GbNone true false 1950 00:51:00:16:40:11 down down -1/19 210 10GbNone true false 1950 00:51:00:16:40:12 down down -1/20 211 10GbNone true false 1950 00:51:00:16:40:13 down down -1/21 212 10GbNone true false 1950 00:51:00:16:40:14 down down -1/22 213 10GbNone true false 1950 00:51:00:16:40:15 down down -1/23 214 10GbNone true false 1950 00:51:00:16:40:16 down down -1/24 215 10GbNone true false 1950 00:51:00:16:40:17 down down -1/25 216 10GbNone true false 1950 00:51:00:16:40:18 down down -1/26 217 10GbNone true false 1950 00:51:00:16:40:19 down down -1/27 218 10GbNone true false 1950 00:51:00:16:40:1a down down -1/28 219 10GbNone true false 1950 00:51:00:16:40:1b down down -1/29 220 10GbNone true false 1950 00:51:00:16:40:1c down down -1/30 221 10GbNone true false 1950 00:51:00:16:40:1d down down -1/31 222 10GbNone true false 1950 00:51:00:16:40:1e down down -1/32 223 10GbNone true false 1950 00:51:00:16:40:1f down down -1/33 224 10GbNone true false 1950 00:51:00:16:40:20 down down -1/34 225 10GbNone true false 1950 00:51:00:16:40:21 down down -1/35 226 10GbNone true false 1950 00:51:00:16:40:22 down down -1/36 227 10GbNone true false 1950 00:51:00:16:40:23 down down -1/37 228 10GbNone true false 1950 00:51:00:16:40:24 down down -1/38 229 10GbNone true false 1950 00:51:00:16:40:25 down down -1/39 230 10GbNone true false 1950 00:51:00:16:40:26 down down -1/40 231 10GbNone true false 1950 00:51:00:16:40:27 down down -1/41 232 40GbNone true false 1950 00:51:00:16:40:28 down down -1/42 236 40GbNone true false 1950 00:51:00:16:40:2c down down -2/1 256 10GbNone true false 1950 00:51:00:16:40:40 down down -2/2 257 10GbNone true false 1950 00:51:00:16:40:41 down down -2/3 258 10GbNone true false 1950 00:51:00:16:40:42 down down -2/4 259 10GbNone true false 1950 00:51:00:16:40:43 down down -2/5 260 10GbNone true false 1950 00:51:00:16:40:44 down down -2/6 261 10GbNone true false 1950 00:51:00:16:40:45 down down -2/7 262 10GbNone true false 1950 00:51:00:16:40:46 down down -2/8 263 10GbNone true false 1950 00:51:00:16:40:47 down down -2/9 264 10GbNone true false 1950 00:51:00:16:40:48 down down -2/10 265 10GbNone true false 1950 00:51:00:16:40:49 down down -2/11 266 10GbNone true false 1950 00:51:00:16:40:4a down down -2/12 267 10GbNone true false 1950 00:51:00:16:40:4b down down -2/13 268 10GbNone true false 1950 00:51:00:16:40:4c down down -2/14 269 10GbNone true false 1950 00:51:00:16:40:4d down down -2/15 270 10GbNone true false 1950 00:51:00:16:40:4e down down -2/16 271 10GbNone true false 1950 00:51:00:16:40:4f down down -2/17 272 10GbNone true false 1950 00:51:00:16:40:50 down down -2/18 273 10GbNone true false 1950 00:51:00:16:40:51 down down -2/19 274 10GbNone true false 1950 00:51:00:16:40:52 down down -2/20 275 10GbNone true false 1950 00:51:00:16:40:53 down down -2/21 276 10GbNone true false 1950 00:51:00:16:40:54 down down -2/22 277 10GbNone true false 1950 00:51:00:16:40:55 down down -2/23 278 10GbNone true false 1950 00:51:00:16:40:56 down down -2/24 279 10GbNone true false 1950 00:51:00:16:40:57 down down -2/25 280 10GbNone true false 1950 00:51:00:16:40:58 down down -2/26 281 10GbNone true false 1950 00:51:00:16:40:59 down down -2/27 282 10GbNone true false 1950 00:51:00:16:40:5a down down -2/28 283 10GbNone true false 1950 00:51:00:16:40:5b down down -2/29 284 10GbNone true false 1950 00:51:00:16:40:5c down down -2/30 285 10GbNone true false 1950 00:51:00:16:40:5d down down -2/31 286 10GbNone true false 1950 00:51:00:16:40:5e down down -2/32 287 10GbNone true false 1950 00:51:00:16:40:5f down down -2/33 288 10GbNone true false 1950 00:51:00:16:40:60 down down -2/34 289 10GbNone true false 1950 00:51:00:16:40:61 down down -2/35 290 10GbNone true false 1950 00:51:00:16:40:62 down down -2/36 291 10GbNone true false 1950 00:51:00:16:40:63 down down -2/37 292 10GbNone true false 1950 00:51:00:16:40:64 down down -2/38 293 10GbNone true false 1950 00:51:00:16:40:65 down down -2/39 294 10GbNone true false 1950 00:51:00:16:40:66 down down -2/40 295 10GbNone true false 1950 00:51:00:16:40:67 down down -2/41 296 40GbNone true false 1950 00:51:00:16:40:68 down down -2/42 300 40GbNone true false 1950 00:51:00:16:40:6c down down - - diff --git a/test/units/modules/network/voss/fixtures/voss_facts_show_interfaces_gigabitEthernet_name b/test/units/modules/network/voss/fixtures/voss_facts_show_interfaces_gigabitEthernet_name deleted file mode 100644 index 7efcfd07f3..0000000000 --- a/test/units/modules/network/voss/fixtures/voss_facts_show_interfaces_gigabitEthernet_name +++ /dev/null @@ -1,93 +0,0 @@ - -========================================================================================== - Port Name -========================================================================================== -PORT OPERATE OPERATE OPERATE -NUM NAME DESCRIPTION STATUS DUPLX SPEED VLAN ----------------------------------------------------------------------------------------------------- -1/1 serverA 10GbNone down full 0 Access -1/2 10GbNone down full 0 Access -1/3 10GbNone down full 0 Access -1/4 10GbNone down full 0 Access -1/5 10GbNone down full 0 Access -1/6 10GbNone down full 0 Access -1/7 10GbNone down full 0 Access -1/8 10GbNone down full 0 Access -1/9 10GbNone down full 0 Access -1/10 10GbNone down full 0 Access -1/11 10GbNone down full 0 Access -1/12 10GbNone down full 0 Access -1/13 10GbNone down full 0 Access -1/14 10GbNone down full 0 Access -1/15 10GbNone down full 0 Access -1/16 10GbNone down full 0 Access -1/17 10GbNone down full 0 Access -1/18 10GbNone down full 0 Access -1/19 10GbNone down full 0 Access -1/20 10GbNone down full 0 Access -1/21 10GbNone down full 0 Access -1/22 10GbNone down full 0 Access -1/23 10GbNone down full 0 Access -1/24 10GbNone down full 0 Access -1/25 10GbNone down full 0 Access -1/26 10GbNone down full 0 Access -1/27 10GbNone down full 0 Access -1/28 10GbNone down full 0 Access -1/29 10GbNone down full 0 Access -1/30 10GbNone down full 0 Access -1/31 10GbNone down full 0 Access -1/32 10GbNone down full 0 Access -1/33 10GbNone down full 0 Access -1/34 10GbNone down full 0 Access -1/35 10GbNone down full 0 Access -1/36 10GbNone down full 0 Access -1/37 10GbNone down full 0 Access -1/38 10GbNone down full 0 Access -1/39 10GbNone down full 0 Access -1/40 10GbNone down full 0 Access -1/41 40GbNone down half 0 Access -1/42 40GbNone down half 0 Access -2/1 10GbNone down full 0 Access -2/2 10GbNone down full 0 Access -2/3 10GbNone down full 0 Access -2/4 10GbNone down full 0 Access -2/5 10GbNone down full 0 Access -2/6 10GbNone down full 0 Access -2/7 10GbNone down full 0 Access -2/8 10GbNone down full 0 Access -2/9 10GbNone down full 0 Access -2/10 10GbNone down full 0 Access -2/11 10GbNone down full 0 Access -2/12 10GbNone down full 0 Access -2/13 10GbNone down full 0 Access -2/14 10GbNone down full 0 Access -2/15 10GbNone down full 0 Access -2/16 10GbNone down full 0 Access -2/17 10GbNone down full 0 Access -2/18 10GbNone down full 0 Access -2/19 10GbNone down full 0 Access -2/20 10GbNone down full 0 Access -2/21 10GbNone down full 0 Access -2/22 10GbNone down full 0 Access -2/23 10GbNone down full 0 Access -2/24 10GbNone down full 0 Access -2/25 10GbNone down full 0 Access -2/26 10GbNone down full 0 Access -2/27 10GbNone down full 0 Access -2/28 10GbNone down full 0 Access -2/29 10GbNone down full 0 Access -2/30 10GbNone down full 0 Access -2/31 10GbNone down full 0 Access -2/32 10GbNone down full 0 Access -2/33 10GbNone down full 0 Access -2/34 10GbNone down full 0 Access -2/35 10GbNone down full 0 Access -2/36 10GbNone down full 0 Access -2/37 10GbNone down full 0 Access -2/38 10GbNone down full 0 Access -2/39 10GbNone down full 0 Access -2/40 10GbNone down full 0 Access -2/41 40GbNone down half 0 Access -2/42 40GbNone down half 0 Access - - diff --git a/test/units/modules/network/voss/fixtures/voss_facts_show_ip_interface b/test/units/modules/network/voss/fixtures/voss_facts_show_ip_interface deleted file mode 100644 index 7283cef137..0000000000 --- a/test/units/modules/network/voss/fixtures/voss_facts_show_ip_interface +++ /dev/null @@ -1,12 +0,0 @@ - -==================================================================================================== - IP Interface - GlobalRouter -==================================================================================================== -INTERFACE IP NET BCASTADDR REASM VLAN BROUTER IPSEC - ADDRESS MASK FORMAT MAXSIZE ID PORT STATE ----------------------------------------------------------------------------------------------------- -Clip1 1.1.1.1 255.255.255.255 ones 1500 -- false disable -Vlan1 10.10.10.10 255.255.255.0 ones 1500 1 false disable - - -All 2 out of 2 Total Num of IP interfaces displayed diff --git a/test/units/modules/network/voss/fixtures/voss_facts_show_ipv6_address_interface b/test/units/modules/network/voss/fixtures/voss_facts_show_ipv6_address_interface deleted file mode 100644 index 51b1caed44..0000000000 --- a/test/units/modules/network/voss/fixtures/voss_facts_show_ipv6_address_interface +++ /dev/null @@ -1,12 +0,0 @@ -======================================================================================================= - Address Information - GlobalRouter -======================================================================================================= -IPV6 ADDRESS/PREFIX LENGTH VID/BID/TID TYPE ORIGIN STATUS VALID PREF - LIFETIME LIFETIME -------------------------------------------------------------------------------------------------------- -2011:0:0:0:0:0:0:1/128 C-1 UNICAST MANUAL PREFERRED INF INF -2001:0:0:0:0:0:0:1/64 V-1 UNICAST MANUAL INACCESSIBLE INF INF -2002:0:0:0:0:0:0:1/64 V-1 UNICAST MANUAL INACCESSIBLE INF INF -fe80:0:0:0:251:ff:fe16:4100/64 V-1 UNICAST LINKLAYER INACCESSIBLE INF INF - -4 out of 4 Total Num of Address Entries displayed. diff --git a/test/units/modules/network/voss/fixtures/voss_facts_show_khi_performance_memory b/test/units/modules/network/voss/fixtures/voss_facts_show_khi_performance_memory deleted file mode 100644 index a9628f8a22..0000000000 --- a/test/units/modules/network/voss/fixtures/voss_facts_show_khi_performance_memory +++ /dev/null @@ -1,14 +0,0 @@ - Slot:1 - Used: 386164 (KB) - Free: 639868 (KB) - Current utilization: 37 % - 5-minute average utilization: 37 % - 5-minute high water mark: 37 (%) - 10-minute average utilization: 37 % - 10-minute high water mark: 37 (%) - 1-Hour average utilization: 37 % - 1-Hour high water mark: 37 (%) - 1-Day average utilization: 36 % - 1-Month average utilization: 0 % - 1-Year average utilization: 0 % - diff --git a/test/units/modules/network/voss/fixtures/voss_facts_show_lldp_neighbor b/test/units/modules/network/voss/fixtures/voss_facts_show_lldp_neighbor deleted file mode 100644 index 02e6b1600a..0000000000 --- a/test/units/modules/network/voss/fixtures/voss_facts_show_lldp_neighbor +++ /dev/null @@ -1,12 +0,0 @@ -Port: 1/1 Index : 1 - PortId : IfName 5 - SysName : X690-48t-2q-4c - PortDescr: -Port: 1/2 Index : 2 - PortId : IfName 1/2 - SysName : VSP2 - PortDescr: Extreme Networks Virtual Services Platform 4450GSX-PWR+ - 1000BaseTX Port 1/2 -Port: 1/12 Index : 2 - PortId : IfName 1/12 - SysName : VSP2 - PortDescr: Extreme Networks Virtual Services Platform 4450GSX-PWR+ - 1000BaseTX Port 1/12 diff --git a/test/units/modules/network/voss/fixtures/voss_facts_show_running-config b/test/units/modules/network/voss/fixtures/voss_facts_show_running-config deleted file mode 100644 index a049a27965..0000000000 --- a/test/units/modules/network/voss/fixtures/voss_facts_show_running-config +++ /dev/null @@ -1,903 +0,0 @@ -Preparing to Display Configuration... -# -# Wed Aug 15 05:20:06 2018 UTC -# box type : VSP-8284XSQ -# software version : 7.0.0.0_B015 -# cli mode : ECLI -# - -#Card Info : - -# Slot 1 : -# CardType : 8242XSQ -# CardDescription : 8242XSQ -# CardSerial# : -# CardPart# : -# CardAssemblyDate : -# CardHWRevision : -# CardHWConfig : -# AdminStatus : up -# OperStatus : up - -# Slot 2 : -# CardType : 8242XSQ -# CardDescription : 8242XSQ -# CardSerial# : -# CardPart# : -# CardAssemblyDate : -# CardHWRevision : -# CardHWConfig : -# AdminStatus : up -# OperStatus : up - -# -#!end -# -config terminal - -# -# BOOT CONFIGURATION -# - -boot config flags block-snmp -boot config flags sshd -# end boot flags - -# -# CLI CONFIGURATION -# - -cli timeout 3600 -password password-history 3 - -# -# SYSTEM CONFIGURATION -# - - -# -# LOG CONFIGURATION -# - - -# -# LINK-FLAP-DETECT CONFIGURATION -# - - -# -# IEEE VLAN AGING CONFIGURATION -# - - -# -# ACCESS-POLICY CONFIGURATION -# - -# -# SSH CONFIGURATION -# - -ssh keyboard-interactive-auth - - - -ssh secure - -# -# ASG CONFIGURATION -# - - -# -# MCAST SOFTWARE FORWARDING CONFIGURATION -# - - -# -# MCAST SMLT CONFIGURATION -# - - -# -# SNMP V3 GLOBAL CONFIGURATION -# - - -# -# SNMP V3 GROUP MEMBERSHIP CONFIGURATION -# - - -# -# SNMP V3 NOTIFY FILTER CONFIGURATION -# - - -# -# SNMP V3 MIB VIEW CONFIGURATION -# - - -# -# SNMP V3 GROUP CONFIGURATION -# - - -# -# SNMP V3 TARGET ADDRESS CONFIGURATION -# - - -# -# DDI CONFIGURATION -# - - -# -# SLOT CONFIGURATION -# - - -# -# MAC AGING CONFIGURATION -# - - -# -# SMTP CONFIGURATION -# - - -# -# WEB CONFIGURATION -# - -web-server enable - - -# -# GLOBAL FDB FILTER CONFIGURATION -# - - - - -# -# QOS CONFIGURATION - PHASE I -# - - -# -# LACP CONFIGURATION -# - - -# -# VRF CONFIGURATION -# - -ip vrf dmz vrfid 1 - -# -# MAINTENANCE-DOMAIN CONFIGURATION -# - - -# -# MAINTENANCE-ASSOCIATION CONFIGURATION -# - - -# -# MAINTENANCE-ENDPOINT CONFIGURATION -# - - -# -# PORT CHANNELIZE CONFIGURATION -# - - -# -# PORT CONFIGURATION - PHASE I -# - - -# -# ISIS SPBM CONFIGURATION -# - - -# -# SPB-PIM-GW CONFIGURATION -# - - -# -# MLT CONFIGURATION -# - - -# -# IP PREFIX LIST CONFIGURATION - GlobalRouter -# - - -# -# IP PREFIX LIST CONFIGURATION - VRF -# - - -# -# IPv6 PREFIX LIST CONFIGURATION - GlobalRouter -# - - -# -# RMON CONFIGURATION -# - - -# -# DVR CONFIGURATION -# - - -# -# VLAN CONFIGURATION -# - -interface Vlan 1 -ip address 10.10.10.10 255.255.255.0 0 -ipv6 interface mac-offset 0 -ipv6 interface address 2001:0:0:0:0:0:0:1/64 -ipv6 interface address 2002:0:0:0:0:0:0:1/64 - -exit -vlan create 3 type port-mstprstp 0 - -# -# MSTP CONFIGURATION -# - - -# -# NLS CONFIGURATION -# - - -# -# FHS CONFIGURATION -# - - -# -# MAC ACL CONFIGURATION -# - - -# -# IPv6 FHS ACL CONFIGURATION -# - - -# -# RA-GUARD CONFIGURATION -# - - -# -# DHCP-GUARD CONFIGURATION -# - - -# -# FHS SNOOPING CONFIGURATION -# - - -# -# SFLOW CONFIGURATION -# - - -# -# DHCP SNOOPING CONFIGURATION -# - - -# -# DHCP SNOOPING BINDING CONFIGURATION -# - - -# -# LINK-STATE TRACKING -# - - -# -# VIRTUAL IST CONFIGURATION -# - - -# -# MLT INTERFACE CONFIGURATION -# - - -# -# PORT CONFIGURATION - PHASE II -# - -interface mgmtEthernet mgmt -auto-negotiate -ip address 192.168.8.10 255.255.255.0 - -exit -interface GigabitEthernet 1/1 -name "serverA" -exit - -# -# IP CONFIGURATION -# - - -# -# IP AS LIST CONFIGURATION - GlobalRouter -# - - -# -# IP AS LIST CONFIGURATION - VRF -# - - -# -# IP COMMUNITY LIST CONFIGURATION - GlobalRouter -# - - -# -# IP COMMUNITY LIST CONFIGURATION - VRF -# - - -# -# IP EXTENDED COMMUNITY LIST CONFIGURATION - GlobalRouter -# - - -# -# IP EXTENDED COMMUNITY LIST CONFIGURATION - VRF -# - - -# -# IP ROUTE MAP CONFIGURATION - GlobalRouter -# - - -# -# IP ROUTE MAP CONFIGURATION - VRF -# - - -# -# IP CONFIGURATION - GlobalRouter -# - - -# -# IP CONFIGURATION - VRF -# - - -# -# CIRCUITLESS IP INTERFACE CONFIGURATION - GlobalRouter -# - -interface loopback 1 -ip address 1 1.1.1.1/255.255.255.255 -exit - -# -# CIRCUITLESS IP INTERFACE CONFIGURATION - VRF -# - -interface loopback 2 -ip address 2 4.4.4.4/255.255.255.255 vrf dmz -exit - -# -# TOPOLOGY-CLIP-IP -# - - -# -# MSDP CONFIGURATION - GlobalRouter -# - - - - -# -# CIRCUITLESS IPV6 INTERFACE CONFIGURATION - GlobalRouter -# - -interface loopback 1 -ipv6 interface address 2011:0:0:0:0:0:0:1/128 -exit - -# -# CIRCUITLESS IPV6 INTERFACE CONFIGURATION - VRF -# - - -# -# VRRP CONFIGURATION - GlobalRouter -# - - -# -# VRRP CONFIGURATION - VRF -# - - -# -# UDP FORWARDING CONFIGURATION - GlobalRouter -# - - -# -# UDP FORWARDING CONFIGURATION - VRF -# - - -# -# UDP FORWARDING VLAN CONFIGURATION -# - - -# -# DHCP CONFIGURATION - GlobalRouter -# - - -# -# DHCP CONFIGURATION - VRF -# - - -# -# RIP CONFIGURATION - GlobalRouter -# - - -# -# RIP CONFIGURATION - VRF -# - - -# -# RIP VLAN CONFIGURATION -# - - -# -# IGMP CONFIGURATION - GlobalRouter -# - - -# -# IGMP CONFIGURATION - VRF -# - - -# -# MROUTE CONFIGURATION -# - - -# -# MCAST RESOURCE USAGE CONFIGURATION - GlobalRouter -# - - -# -# MCAST RESOURCE USAGE CONFIGURATION - VRF -# - - -# -# TIMED PRUNE CONFIGURATION - GlobalRouter -# - - -# -# TIMED PRUNE CONFIGURATION - VRF -# - - -# -# RSMLT CONFIGURATION -# - - -# -# IPV6 CONFIGURATION - GlobalRouter -# - - -# -# IPV6 CONFIGURATION - VRF -# - - -# -# MLD CONFIGURATION - GlobalRouter -# - - -# -# MROUTE6 CONFIGURATION -# - - -# -# ISIS CONFIGURATION -# - - -# -# VTEP CONFIGURATION -# - - -# -# REMOTE VTEP CONFIGURATIONS -# - - -# -# VLAN NODAL MEP/MIP CONFIGURATION -# - - -# -# QOS CONFIGURATION - PHASE II -# - -qos queue-profile 1 member add 1/1-1/42,2/1-2/42 - -# -# CFM CONFIGURATION - PHASE II -# - - -# -# DIAG CONFIGURATION -# - - -# -# NTP CONFIGURATION -# - -no ntp - -# -# OSPF CONFIGURATION - GlobalRouter -# - -router ospf -exit - -# -# OSPF CONFIGURATION - VRF -# - - -# -# OSPF ACCEPT CONFIGURATION - GlobalRouter -# - - -# -# OSPF ACCEPT CONFIGURATION - VRF -# - - -# -# BGP CONFIGURATION - GlobalRouter -# - - -# -# BGP CONFIGURATION - VRF -# - - -# -# ISIS SPBM IPVPN CONFIGURATION -# - -# -# IP ISID LIST CONFIGURATION - GlobalRouter -# - - -# -# IP ISID LIST CONFIGURATION - VRF -# - - -# -# ISIS ACCEPT CONFIGURATION - GlobalRouter -# - - -# -# ISIS ACCEPT CONFIGURATION - VRF -# - - -# -# IP REDISTRIBUTION CONFIGURATION - GlobalRouter -# - - -# -# IP REDISTRIBUTION CONFIGURATION - VRF -# - - -# -# OSPF VLAN CONFIGURATION -# - - -# -# OSPF PORT CONFIGURATION -# - - -# -# OSPF LOOPBACK CONFIGURATION -# - - -# -# RIP PORT CONFIGURATION -# - - -# -# IPVPN CONFIGURATION -# - -# -# SLPP CONFIGURATION -# - - -# -# FILTER CONFIGURATION -# - - -# -# IPV6 TUNNEL CONFIGURATION -# - - -# -# IPV6 OSPFV3 CONFIGURATION -# - -router ospf - -exit - -# -# IPV6 RIPng CONFIGURATION -# - -router rip -exit - -# -# IPV6 STATIC ROUTE CONFIGURATION - GlobalRouter -# - - -# -# IPV6 STATIC ROUTE CONFIGURATION - VRF -# - -# -# IPV6 MGMT INTERFACE CONFIGURATION -# - - -# -# IPV6 OSPF VLAN CONFIGURATION -# - - -# -# IPV6 OSPF PORT CONFIGURATION -# - - -# -# IPV6 RIP VLAN CONFIGURATION -# - - -# -# IPV6 RIP PORT CONFIGURATION -# - - -# -# IPV6 VRRP VLAN CONFIGURATION -# - - -# -# IPV6 VRRP PORT CONFIGURATION -# - - -# -# IPV6 NEIGHBOR CONFIGURATION - GlobalRouter -# - - -# -# IPV6 NEIGHBOR CONFIGURATION - VRF -# - - -# -# IPV6 DHCP CONFIGURATION - GlobalRouter -# - - - -# -# IPV6 DHCP CONFIGURATION - VRF -# - - -# -# I-SID CONFIGURATION -# - - -# -# VNID CONFIGURATION -# - - - - -# -# RADIUS CONFIGURATION -# - - -# -# TACACS CONFIGURATION -# - - -# -# LLDP CONFIGURATION -# - - -# -# EAP CONFIGURATION -# - - -# -# MACSEC CONFIGURATION -# - - -# -# FABRIC ATTACH CONFIGURATION -# - - -# -# SPB-PIM-GW CONFIGURATION -# - - -# -# SOFTWARE CONFIGURATION -# - - -# -# APPLICATION CONFIGURATION -# - - -# -# OVSDB CONFIGURATION -# - - - - - - -# -# IPSEC CONFIGURATION -# - - -# -# IPSEC POLICY TABLE CONFIGURATION -# - - -# -# IPSEC SA TABLE CONFIGURATION -# - - -# -# IPSEC SA POLICY LINK TABLE CONFIGURATION -# - - -# -# IPV6 OSPFV3 IPSEC CONFIGURATION -# - - -# -# IPV6 IPSEC INTERFACE CONFIGURATION -# - - -# -# IP IPSEC INTERFACE CONFIGURATION -# - - - - - - -# -# IKE CONFIGURATION -# - - - - -# -# IP REDISTRIBUTE APPLY CONFIGURATIONS - -# -# - - -# -# IP ECMP APPLY CONFIGURATIONS - - - - -end - - diff --git a/test/units/modules/network/voss/fixtures/voss_facts_show_sys-info b/test/units/modules/network/voss/fixtures/voss_facts_show_sys-info deleted file mode 100644 index 6e7099c2b6..0000000000 --- a/test/units/modules/network/voss/fixtures/voss_facts_show_sys-info +++ /dev/null @@ -1,107 +0,0 @@ -General Info : - - SysDescr : VSP-4450GSX-PWR+ (7.0.0.0_B015) - SysName : VSP-4450GSX-PWR+ - SysUpTime : 5 day(s), 17:13:09 - SysContact : http://www.extremenetworks.com/contact/ - SysLocation : - -Chassis Info: - - Chassis : 4450GSX-PWR+ - ModelName : 4450GSX-PWR+ - BrandName : Extreme Networks. - Serial# : 14JP512E0001 - H/W Revision : 01 - H/W Config : none - Part Number : - NumSlots : 1 - NumPorts : 50 - BaseMacAddr : b4:47:5e:00:00:00 - MacAddrCapacity : 256 - System MTU : 1950 - -Card Info : - - Slot# CardType Serial# Part# Oper Admin Power - Status Status State - 1 4450GSX-PWR+ 14JP512E0001 -- up up on - -Temperature Info : - - Chassis Temperature - 30 - - -Power Supply Info : - - Ps#1 Status : UP - Ps#1 Type : AC - Ps#1 Description : AC-DC-54V-1000W - Ps#1 Serial Number: LBNNTMPL20180R - Ps#1 Version : -- - Ps#1 Part Number : 325220-A.01 - - Ps#2 Status : empty - - Total Power Available : 1000 watts - Total Power Usage : 127 watts - -Fan Info : - - Description OperStatus OperSpeed AirflowDir - Tray 1 Fan 1 up mediumSpeed left-right - Tray 1 Fan 2 up mediumSpeed left-right - Tray 1 Fan 3 up mediumSpeed left-right - -LED Info : - - LED#1 Label : PWR - LED#1 Status : GreenSteady - - LED#2 Label : Status - LED#2 Status : GreenSteady - - LED#3 Label : Rps - LED#3 Status : Off - - LED#4 Label : Up - LED#4 Status : UnSupported - - LED#5 Label : Down - LED#5 Status : UnSupported - - LED#6 Label : Base - LED#6 Status : UnSupported - -System Error Info : - - Send Login Success Trap : false - Send Authentication Trap : false - Error Code : 0 - Error Severity : 0 - -Port Lock Info : - - Status : off - LockedPorts : - -Message Control Info : - - Action : suppress-msg - Control-Interval : 5 - Max-msg-num : 5 - Status : disable - - -Configuration Operation Info Since Boot Up: - Last Change: 0 day(s), 08:31:10 (5 day(s), 08:41:59 ago) - Last Vlan Change: 0 day(s), 08:27:35 (5 day(s), 08:45:34 ago) -Last Statistic Reset: 5 day(s), 16:56:45 (0 day(s), 00:16:24 ago) - -Current Uboot Info : ----------------------------------------------------------------------------------------------------- - - VU-Boot 2012.04-00002-g6fb1c26 (Apr 26 2017 - 13:37:44) bld=17042617 - - diff --git a/test/units/modules/network/voss/test_voss_command.py b/test/units/modules/network/voss/test_voss_command.py deleted file mode 100644 index b478eb0ebe..0000000000 --- a/test/units/modules/network/voss/test_voss_command.py +++ /dev/null @@ -1,120 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json - -from units.compat.mock import patch -from units.modules.utils import set_module_args -from ansible.modules.network.voss import voss_command -from .voss_module import TestVossModule, load_fixture - - -class TestVossCommandModule(TestVossModule): - - module = voss_command - - def setUp(self): - super(TestVossCommandModule, self).setUp() - - self.mock_run_commands = patch('ansible.modules.network.voss.voss_command.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestVossCommandModule, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for item in commands: - try: - obj = json.loads(item['command']) - command = obj['command'] - except ValueError: - command = item['command'] - filename = str(command).replace(' ', '_') - output.append(load_fixture(filename)) - return output - - self.run_commands.side_effect = load_from_file - - def test_voss_command_simple(self): - set_module_args(dict(commands=['show sys-info'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 1) - self.assertTrue(result['stdout'][0].startswith('General Info')) - - def test_voss_command_multiple(self): - set_module_args(dict(commands=['show sys-info', 'show sys-info'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 2) - self.assertTrue(result['stdout'][0].startswith('General Info')) - - def test_voss_command_wait_for(self): - wait_for = 'result[0] contains "General Info"' - set_module_args(dict(commands=['show sys-info'], wait_for=wait_for)) - self.execute_module() - - def test_voss_command_wait_for_fails(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show sys-info'], wait_for=wait_for)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 10) - - def test_voss_command_retries(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show sys-info'], wait_for=wait_for, retries=2)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 2) - - def test_voss_command_match_any(self): - wait_for = ['result[0] contains "General Info"', - 'result[0] contains "test string"'] - set_module_args(dict(commands=['show sys-info'], wait_for=wait_for, match='any')) - self.execute_module() - - def test_voss_command_match_all(self): - wait_for = ['result[0] contains "General Info"', - 'result[0] contains "Chassis Info"'] - set_module_args(dict(commands=['show sys-info'], wait_for=wait_for, match='all')) - self.execute_module() - - def test_voss_command_match_all_failure(self): - wait_for = ['result[0] contains "General Info"', - 'result[0] contains "test string"'] - commands = ['show sys-info', 'show sys-info'] - set_module_args(dict(commands=commands, wait_for=wait_for, match='all')) - self.execute_module(failed=True) - - def test_voss_command_configure_error(self): - commands = ['configure terminal'] - set_module_args({ - 'commands': commands, - '_ansible_check_mode': True, - }) - result = self.execute_module(failed=True) - self.assertEqual( - result['msg'], - 'voss_command does not support running config mode commands. Please use voss_config instead' - ) diff --git a/test/units/modules/network/voss/test_voss_config.py b/test/units/modules/network/voss/test_voss_config.py deleted file mode 100644 index 7006c4e1d8..0000000000 --- a/test/units/modules/network/voss/test_voss_config.py +++ /dev/null @@ -1,272 +0,0 @@ -# -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch, MagicMock -from units.modules.utils import set_module_args -from ansible.modules.network.voss import voss_config -from ansible.plugins.cliconf.voss import Cliconf -from .voss_module import TestVossModule, load_fixture - - -class TestVossConfigModule(TestVossModule): - - module = voss_config - - def setUp(self): - super(TestVossConfigModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.voss.voss_config.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_get_connection = patch('ansible.modules.network.voss.voss_config.get_connection') - self.get_connection = self.mock_get_connection.start() - - self.conn = self.get_connection() - self.conn.edit_config = MagicMock() - - self.mock_run_commands = patch('ansible.modules.network.voss.voss_config.run_commands') - self.run_commands = self.mock_run_commands.start() - - self.cliconf_obj = Cliconf(MagicMock()) - self.running_config = load_fixture('voss_config_config.cfg') - - def tearDown(self): - super(TestVossConfigModule, self).tearDown() - self.mock_get_config.stop() - self.mock_run_commands.stop() - self.mock_get_connection.stop() - - def load_fixtures(self, commands=None): - config_file = 'voss_config_config.cfg' - self.get_config.return_value = load_fixture(config_file) - self.get_connection.edit_config.return_value = None - - def test_voss_config_unchanged(self): - src = load_fixture('voss_config_config.cfg') - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(src, src)) - set_module_args(dict(src=src)) - self.execute_module() - - def test_voss_config_src(self): - src = load_fixture('voss_config_src.cfg') - set_module_args(dict(src=src)) - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(src, self.running_config)) - commands = ['prompt "VSP8K"', 'interface GigabitEthernet 1/1', - 'name "UNUSED"', 'exit'] - self.execute_module(changed=True, commands=commands) - - def test_voss_config_backup(self): - set_module_args(dict(backup=True)) - result = self.execute_module() - self.assertIn('__backup__', result) - - def test_voss_config_save_always(self): - self.run_commands.return_value = "Hostname foo" - set_module_args(dict(save_when='always')) - self.execute_module(changed=True) - self.assertEqual(self.run_commands.call_count, 1) - self.assertEqual(self.get_config.call_count, 0) - self.assertEqual(self.conn.edit_config.call_count, 0) - args = self.run_commands.call_args[0][1] - self.assertIn('save config\r', args) - - def test_voss_config_save_changed_true(self): - src = load_fixture('voss_config_src.cfg') - set_module_args(dict(src=src, save_when='changed')) - commands = ['prompt "VSP8K"', 'interface GigabitEthernet 1/1', - 'name "UNUSED"', 'exit'] - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(src, self.running_config)) - self.execute_module(changed=True, commands=commands) - self.assertEqual(self.run_commands.call_count, 1) - self.assertEqual(self.get_config.call_count, 1) - self.assertEqual(self.conn.edit_config.call_count, 1) - args = self.run_commands.call_args[0][1] - self.assertIn('save config\r', args) - - def test_voss_config_save_changed_false(self): - set_module_args(dict(save_when='changed')) - self.execute_module(changed=False) - self.assertEqual(self.run_commands.call_count, 0) - self.assertEqual(self.get_config.call_count, 0) - self.assertEqual(self.conn.edit_config.call_count, 0) - - def test_voss_config_lines_wo_parents(self): - lines = ['prompt "VSP8K"'] - set_module_args(dict(lines=lines)) - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(lines), self.running_config)) - commands = ['prompt "VSP8K"'] - self.execute_module(changed=True, commands=commands) - - def test_voss_config_lines_w_parents(self): - lines = ['no shutdown'] - parents = ['interface GigabitEthernet 1/1'] - set_module_args(dict(lines=lines, parents=parents)) - module = MagicMock() - module.params = {'lines': lines, 'parents': parents, 'src': None} - candidate_config = voss_config.get_candidate_config(module) - - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate_config, self.running_config)) - - commands = ['interface GigabitEthernet 1/1', 'no shutdown'] - self.execute_module(changed=True, commands=commands) - - def test_voss_config_before(self): - lines = ['prompt "VSP8K"'] - set_module_args(dict(lines=lines, before=['test1', 'test2'])) - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(lines), - self.running_config)) - commands = ['test1', 'test2', 'prompt "VSP8K"'] - self.execute_module(changed=True, commands=commands, sort=False) - - def test_voss_config_after(self): - lines = ['prompt "VSP8K"'] - set_module_args(dict(lines=lines, after=['test1', 'test2'])) - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(lines), - self.running_config)) - commands = ['prompt "VSP8K"', 'test1', 'test2'] - self.execute_module(changed=True, commands=commands, sort=False) - - def test_voss_config_before_after_no_change(self): - lines = ['prompt "VSP300"'] - set_module_args(dict(lines=lines, - before=['test1', 'test2'], - after=['test3', 'test4'])) - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(lines), self.running_config)) - self.execute_module() - - def test_voss_config_config(self): - config = 'prompt "VSP300"' - lines = ['prompt router'] - set_module_args(dict(lines=lines, config=config)) - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(lines), config)) - commands = ['prompt router'] - self.execute_module(changed=True, commands=commands) - - def test_voss_config_replace_block(self): - lines = ['name "ServerB"', 'test string'] - parents = ['interface GigabitEthernet 1/2'] - set_module_args(dict(lines=lines, replace='block', parents=parents)) - - module = MagicMock() - module.params = {'lines': lines, 'parents': parents, 'src': None} - candidate_config = voss_config.get_candidate_config(module) - - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate_config, self.running_config, diff_replace='block', path=parents)) - - commands = parents + lines - self.execute_module(changed=True, commands=commands) - - def test_voss_config_match_none(self): - lines = ['prompt router'] - set_module_args(dict(lines=lines, match='none')) - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(lines), self.running_config, diff_match='none')) - self.execute_module(changed=True, commands=lines) - - def test_voss_config_match_none_parents(self): - lines = ['name ServerA', 'vlacp enable'] - parents = ['interface GigabitEthernet 1/1'] - set_module_args(dict(lines=lines, parents=parents, match='none')) - - module = MagicMock() - module.params = {'lines': lines, 'parents': parents, 'src': None} - candidate_config = voss_config.get_candidate_config(module) - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate_config, self.running_config, diff_match='none', path=parents)) - - commands = parents + lines - self.execute_module(changed=True, commands=commands, sort=False) - - def test_voss_config_match_strict(self): - lines = ['name "ServerA"', 'vlacp enable', - 'no shutdown'] - parents = ['interface GigabitEthernet 1/1'] - set_module_args(dict(lines=lines, parents=parents, match='strict')) - - module = MagicMock() - module.params = {'lines': lines, 'parents': parents, 'src': None} - candidate_config = voss_config.get_candidate_config(module) - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate_config, self.running_config, diff_match='strict', path=parents)) - - commands = parents + ['no shutdown'] - self.execute_module(changed=True, commands=commands, sort=False) - - def test_voss_config_match_exact(self): - lines = ['name "ServerA"', 'vlacp enable', 'no shutdown'] - parents = ['interface GigabitEthernet 1/1'] - set_module_args(dict(lines=lines, parents=parents, match='exact')) - - module = MagicMock() - module.params = {'lines': lines, 'parents': parents, 'src': None} - candidate_config = voss_config.get_candidate_config(module) - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate_config, self.running_config, diff_match='exact', path=parents)) - - commands = parents + lines - self.execute_module(changed=True, commands=commands, sort=False) - - def test_voss_config_src_and_lines_fails(self): - args = dict(src='foo', lines='foo') - set_module_args(args) - self.execute_module(failed=True) - - def test_voss_config_src_and_parents_fails(self): - args = dict(src='foo', parents='foo') - set_module_args(args) - self.execute_module(failed=True) - - def test_voss_config_match_exact_requires_lines(self): - args = dict(match='exact') - set_module_args(args) - self.execute_module(failed=True) - - def test_voss_config_match_strict_requires_lines(self): - args = dict(match='strict') - set_module_args(args) - self.execute_module(failed=True) - - def test_voss_config_replace_block_requires_lines(self): - args = dict(replace='block') - set_module_args(args) - self.execute_module(failed=True) - - def test_voss_config_replace_config_requires_src(self): - args = dict(replace='config') - set_module_args(args) - self.execute_module(failed=True) - - def test_voss_config_ipv6(self): - lines = ['ip address 1 1.1.1.1/255.255.255.255', - 'ipv6 interface address 2011:0:0:0:0:0:0:1/128'] - parents = ['interface loopback 1'] - set_module_args(dict(lines=lines, parents=parents)) - module = MagicMock() - module.params = {'lines': lines, 'parents': parents, 'src': None} - candidate_config = voss_config.get_candidate_config(module) - - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate_config, self.running_config)) - self.execute_module(changed=False) - - def test_voss_config_src_ipv6(self): - src = load_fixture('voss_config_ipv6.cfg') - set_module_args(dict(src=src)) - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(src, self.running_config)) - commands = ['interface loopback 1', 'ip address 1 2.2.2.2/255.255.255.255', - 'ipv6 interface address 2011:0:0:0:0:0:0:2/128', 'exit'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/voss/test_voss_facts.py b/test/units/modules/network/voss/test_voss_facts.py deleted file mode 100644 index dd62f4a4dc..0000000000 --- a/test/units/modules/network/voss/test_voss_facts.py +++ /dev/null @@ -1,86 +0,0 @@ -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from units.modules.utils import set_module_args -from ansible.modules.network.voss import voss_facts -from .voss_module import TestVossModule, load_fixture - - -class TestVossFactsModule(TestVossModule): - - module = voss_facts - - def setUp(self): - super(TestVossFactsModule, self).setUp() - self.mock_run_commands = patch('ansible.modules.network.voss.voss_facts.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestVossFactsModule, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None): - def load_from_file(*args, **kwargs): - module = args - commands = kwargs['commands'] - output = list() - - for command in commands: - filename = str(command).split(' | ')[0].replace(' ', '_') - output.append(load_fixture('voss_facts_%s' % filename)) - return output - - self.run_commands.side_effect = load_from_file - - def test_voss_facts_default(self): - set_module_args(dict(gather_subset='default')) - result = self.execute_module() - self.assertEqual( - result['ansible_facts']['ansible_net_model'], '4450GSX-PWR+' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_serialnum'], '14JP512E0001' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_version'], '7.0.0.0_B015' - ) - - def test_voss_facts_interfaces(self): - set_module_args(dict(gather_subset='interfaces')) - result = self.execute_module() - self.assertEqual( - result['ansible_facts']['ansible_net_interfaces']['1/1']['description'], 'serverA' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_interfaces']['Clip1']['ipv4'][0]['address'], '1.1.1.1' - ) - self.assertEqual( - result['ansible_facts']['ansible_net_neighbors']['1/1'][0]['host'], 'X690-48t-2q-4c' - ) - - def test_voss_facts_hardware(self): - set_module_args(dict(gather_subset='hardware')) - result = self.execute_module() - self.assertEqual( - result['ansible_facts']['ansible_net_memfree_mb'], 625 - ) - self.assertEqual( - result['ansible_facts']['ansible_net_memtotal_mb'], 1002 - ) diff --git a/test/units/modules/network/voss/voss_module.py b/test/units/modules/network/voss/voss_module.py deleted file mode 100644 index d5ca438c06..0000000000 --- a/test/units/modules/network/voss/voss_module.py +++ /dev/null @@ -1,88 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json - -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase - - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(name): - path = os.path.join(fixture_path, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as f: - data = f.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class TestVossModule(ModuleTestCase): - - def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False): - - self.load_fixtures(commands) - - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - if commands is not None: - if sort: - self.assertEqual(sorted(commands), sorted(result['commands']), result['commands']) - else: - self.assertEqual(commands, result['commands'], result['commands']) - - return result - - def failed(self): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def changed(self, changed=False): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertEqual(result['changed'], changed, result) - return result - - def load_fixtures(self, commands=None): - pass diff --git a/test/units/modules/notification/test_campfire.py b/test/units/modules/notification/test_campfire.py deleted file mode 100644 index 33f53e957e..0000000000 --- a/test/units/modules/notification/test_campfire.py +++ /dev/null @@ -1,93 +0,0 @@ - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import pytest -from units.compat.mock import patch -from ansible.modules.notification import campfire -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args - - -class TestCampfireModule(ModuleTestCase): - - def setUp(self): - super(TestCampfireModule, self).setUp() - self.module = campfire - - def tearDown(self): - super(TestCampfireModule, self).tearDown() - - @pytest.fixture - def fetch_url_mock(self, mocker): - return mocker.patch('ansible.module_utils.notification.campfire.fetch_url') - - def test_without_required_parameters(self): - """Failure must occurs when all parameters are missing""" - with self.assertRaises(AnsibleFailJson): - set_module_args({}) - self.module.main() - - def test_successful_message(self): - """Test failure message""" - set_module_args({ - 'subscription': 'test', - 'token': 'abc', - 'room': 'test', - 'msg': 'test' - }) - - with patch.object(campfire, "fetch_url") as fetch_url_mock: - fetch_url_mock.return_value = (None, {"status": 200}) - with self.assertRaises(AnsibleExitJson): - self.module.main() - - assert fetch_url_mock.call_count == 1 - url = fetch_url_mock.call_args[0][1] - data = fetch_url_mock.call_args[1]['data'] - - assert url == 'https://test.campfirenow.com/room/test/speak.xml' - assert data == '<message><body>test</body></message>' - - def test_successful_message_with_notify(self): - """Test failure message""" - set_module_args({ - 'subscription': 'test', - 'token': 'abc', - 'room': 'test', - 'msg': 'test', - 'notify': 'bell' - }) - - with patch.object(campfire, "fetch_url") as fetch_url_mock: - fetch_url_mock.return_value = (None, {"status": 200}) - with self.assertRaises(AnsibleExitJson): - self.module.main() - - assert fetch_url_mock.call_count == 2 - notify_call = fetch_url_mock.mock_calls[0] - url = notify_call[1][1] - data = notify_call[2]['data'] - - assert url == 'https://test.campfirenow.com/room/test/speak.xml' - assert data == '<message><type>SoundMessage</type><body>bell</body></message>' - - message_call = fetch_url_mock.mock_calls[1] - url = message_call[1][1] - data = message_call[2]['data'] - - assert url == 'https://test.campfirenow.com/room/test/speak.xml' - assert data == '<message><body>test</body></message>' - - def test_failure_message(self): - """Test failure message""" - set_module_args({ - 'subscription': 'test', - 'token': 'abc', - 'room': 'test', - 'msg': 'test' - }) - - with patch.object(campfire, "fetch_url") as fetch_url_mock: - fetch_url_mock.return_value = (None, {"status": 403}) - with self.assertRaises(AnsibleFailJson): - self.module.main() diff --git a/test/units/modules/notification/test_slack.py b/test/units/modules/notification/test_slack.py deleted file mode 100644 index dc2e3eea02..0000000000 --- a/test/units/modules/notification/test_slack.py +++ /dev/null @@ -1,120 +0,0 @@ -import json -import pytest -from units.compat.mock import patch -from ansible.modules.notification import slack -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args - - -class TestSlackModule(ModuleTestCase): - - def setUp(self): - super(TestSlackModule, self).setUp() - self.module = slack - - def tearDown(self): - super(TestSlackModule, self).tearDown() - - @pytest.fixture - def fetch_url_mock(self, mocker): - return mocker.patch('ansible.module_utils.notification.slack.fetch_url') - - def test_without_required_parameters(self): - """Failure must occurs when all parameters are missing""" - with self.assertRaises(AnsibleFailJson): - set_module_args({}) - self.module.main() - - def test_invalid_old_token(self): - """Failure if there is an old style token""" - set_module_args({ - 'token': 'test', - }) - with self.assertRaises(AnsibleFailJson): - self.module.main() - - def test_sucessful_message(self): - """tests sending a message. This is example 1 from the docs""" - set_module_args({ - 'token': 'XXXX/YYYY/ZZZZ', - 'msg': 'test' - }) - - with patch.object(slack, "fetch_url") as fetch_url_mock: - fetch_url_mock.return_value = (None, {"status": 200}) - with self.assertRaises(AnsibleExitJson): - self.module.main() - - self.assertTrue(fetch_url_mock.call_count, 1) - call_data = json.loads(fetch_url_mock.call_args[1]['data']) - assert call_data['username'] == "Ansible" - assert call_data['text'] == "test" - assert fetch_url_mock.call_args[1]['url'] == "https://hooks.slack.com/services/XXXX/YYYY/ZZZZ" - - def test_failed_message(self): - """tests failing to send a message""" - - set_module_args({ - 'token': 'XXXX/YYYY/ZZZZ', - 'msg': 'test' - }) - - with patch.object(slack, "fetch_url") as fetch_url_mock: - fetch_url_mock.return_value = (None, {"status": 404, 'msg': 'test'}) - with self.assertRaises(AnsibleFailJson): - self.module.main() - - def test_message_with_thread(self): - """tests sending a message with a thread""" - set_module_args({ - 'token': 'XXXX/YYYY/ZZZZ', - 'msg': 'test', - 'thread_id': 100.00 - }) - - with patch.object(slack, "fetch_url") as fetch_url_mock: - fetch_url_mock.return_value = (None, {"status": 200}) - with self.assertRaises(AnsibleExitJson): - self.module.main() - - self.assertTrue(fetch_url_mock.call_count, 1) - call_data = json.loads(fetch_url_mock.call_args[1]['data']) - assert call_data['username'] == "Ansible" - assert call_data['text'] == "test" - assert call_data['thread_ts'] == 100.00 - assert fetch_url_mock.call_args[1]['url'] == "https://hooks.slack.com/services/XXXX/YYYY/ZZZZ" - - def test_message_with_invalid_color(self): - """tests sending invalid color value to module""" - set_module_args({ - 'token': 'XXXX/YYYY/ZZZZ', - 'msg': 'test', - 'color': 'aa', - }) - with self.assertRaises(AnsibleFailJson) as exec_info: - self.module.main() - - msg = "Color value specified should be either one of" \ - " ['normal', 'good', 'warning', 'danger'] or any valid" \ - " hex value with length 3 or 6." - assert exec_info.exception.args[0]['msg'] == msg - - -color_test = [ - ('#111111', True), - ('#00aabb', True), - ('#abc', True), - ('#gghhjj', False), - ('#ghj', False), - ('#a', False), - ('#aaaaaaaa', False), - ('', False), - ('aaaa', False), - ('$00aabb', False), - ('$00a', False), -] - - -@pytest.mark.parametrize("color_value, ret_status", color_test) -def test_is_valid_hex_color(color_value, ret_status): - generated_value = slack.is_valid_hex_color(color_value) - assert generated_value == ret_status diff --git a/test/units/modules/packaging/language/test_gem.py b/test/units/modules/packaging/language/test_gem.py deleted file mode 100644 index 30c46d3bc1..0000000000 --- a/test/units/modules/packaging/language/test_gem.py +++ /dev/null @@ -1,139 +0,0 @@ -# Copyright (c) 2018 Antoine Catton -# MIT License (see licenses/MIT-license.txt or https://opensource.org/licenses/MIT) -import copy - -import pytest - -from ansible.modules.packaging.language import gem -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args - - -def get_command(run_command): - """Generate the command line string from the patched run_command""" - args = run_command.call_args[0] - command = args[0] - return ' '.join(command) - - -class TestGem(ModuleTestCase): - def setUp(self): - super(TestGem, self).setUp() - self.rubygems_path = ['/usr/bin/gem'] - self.mocker.patch( - 'ansible.modules.packaging.language.gem.get_rubygems_path', - lambda module: copy.deepcopy(self.rubygems_path), - ) - - @pytest.fixture(autouse=True) - def _mocker(self, mocker): - self.mocker = mocker - - def patch_installed_versions(self, versions): - """Mocks the versions of the installed package""" - - target = 'ansible.modules.packaging.language.gem.get_installed_versions' - - def new(module, remote=False): - return versions - - return self.mocker.patch(target, new) - - def patch_rubygems_version(self, version=None): - target = 'ansible.modules.packaging.language.gem.get_rubygems_version' - - def new(module): - return version - - return self.mocker.patch(target, new) - - def patch_run_command(self): - target = 'ansible.module_utils.basic.AnsibleModule.run_command' - return self.mocker.patch(target) - - def test_fails_when_user_install_and_install_dir_are_combined(self): - set_module_args({ - 'name': 'dummy', - 'user_install': True, - 'install_dir': '/opt/dummy', - }) - - with pytest.raises(AnsibleFailJson) as exc: - gem.main() - - result = exc.value.args[0] - assert result['failed'] - assert result['msg'] == "install_dir requires user_install=false" - - def test_passes_install_dir_to_gem(self): - # XXX: This test is extremely fragile, and makes assuptions about the module code, and how - # functions are run. - # If you start modifying the code of the module, you might need to modify what this - # test mocks. The only thing that matters is the assertion that this 'gem install' is - # invoked with '--install-dir'. - - set_module_args({ - 'name': 'dummy', - 'user_install': False, - 'install_dir': '/opt/dummy', - }) - - self.patch_rubygems_version() - self.patch_installed_versions([]) - run_command = self.patch_run_command() - - with pytest.raises(AnsibleExitJson) as exc: - gem.main() - - result = exc.value.args[0] - assert result['changed'] - assert run_command.called - - assert '--install-dir /opt/dummy' in get_command(run_command) - - def test_passes_install_dir_and_gem_home_when_uninstall_gem(self): - # XXX: This test is also extremely fragile because of mocking. - # If this breaks, the only that matters is to check whether '--install-dir' is - # in the run command, and that GEM_HOME is passed to the command. - set_module_args({ - 'name': 'dummy', - 'user_install': False, - 'install_dir': '/opt/dummy', - 'state': 'absent', - }) - - self.patch_rubygems_version() - self.patch_installed_versions(['1.0.0']) - - run_command = self.patch_run_command() - - with pytest.raises(AnsibleExitJson) as exc: - gem.main() - - result = exc.value.args[0] - - assert result['changed'] - assert run_command.called - - assert '--install-dir /opt/dummy' in get_command(run_command) - - update_environ = run_command.call_args[1].get('environ_update', {}) - assert update_environ.get('GEM_HOME') == '/opt/dummy' - - def test_passes_add_force_option(self): - set_module_args({ - 'name': 'dummy', - 'force': True, - }) - - self.patch_rubygems_version() - self.patch_installed_versions([]) - run_command = self.patch_run_command() - - with pytest.raises(AnsibleExitJson) as exc: - gem.main() - - result = exc.value.args[0] - assert result['changed'] - assert run_command.called - - assert '--force' in get_command(run_command) diff --git a/test/units/modules/packaging/language/test_maven_artifact.py b/test/units/modules/packaging/language/test_maven_artifact.py deleted file mode 100644 index 09e3b4e8ac..0000000000 --- a/test/units/modules/packaging/language/test_maven_artifact.py +++ /dev/null @@ -1,70 +0,0 @@ -# Copyright (c) 2017 Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import pytest - -from ansible.modules.packaging.language import maven_artifact -from ansible.module_utils import basic - - -pytestmark = pytest.mark.usefixtures('patch_ansible_module') - -maven_metadata_example = b"""<?xml version="1.0" encoding="UTF-8"?> -<metadata> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <versioning> - <latest>4.13-beta-2</latest> - <release>4.13-beta-2</release> - <versions> - <version>3.7</version> - <version>3.8</version> - <version>3.8.1</version> - <version>3.8.2</version> - <version>4.0</version> - <version>4.1</version> - <version>4.2</version> - <version>4.3</version> - <version>4.3.1</version> - <version>4.4</version> - <version>4.5</version> - <version>4.6</version> - <version>4.7</version> - <version>4.8</version> - <version>4.8.1</version> - <version>4.8.2</version> - <version>4.9</version> - <version>4.10</version> - <version>4.11-beta-1</version> - <version>4.11</version> - <version>4.12-beta-1</version> - <version>4.12-beta-2</version> - <version>4.12-beta-3</version> - <version>4.12</version> - <version>4.13-beta-1</version> - <version>4.13-beta-2</version> - </versions> - <lastUpdated>20190202141051</lastUpdated> - </versioning> -</metadata> -""" - - -@pytest.mark.parametrize('patch_ansible_module, version_by_spec, version_choosed', [ - (None, "(,3.9]", "3.8.2"), - (None, "3.0", "3.8.2"), - (None, "[3.7]", "3.7"), - (None, "[4.10, 4.12]", "4.12"), - (None, "[4.10, 4.12)", "4.11"), - (None, "[2.0,)", "4.13-beta-2"), -]) -def test_find_version_by_spec(mocker, version_by_spec, version_choosed): - _getContent = mocker.patch('ansible.modules.packaging.language.maven_artifact.MavenDownloader._getContent') - _getContent.return_value = maven_metadata_example - - artifact = maven_artifact.Artifact("junit", "junit", None, version_by_spec, "jar") - mvn_downloader = maven_artifact.MavenDownloader(basic.AnsibleModule, "https://repo1.maven.org/maven2") - - assert mvn_downloader.find_version_by_spec(artifact) == version_choosed diff --git a/test/units/modules/packaging/os/test_apk.py b/test/units/modules/packaging/os/test_apk.py deleted file mode 100644 index 96bae54532..0000000000 --- a/test/units/modules/packaging/os/test_apk.py +++ /dev/null @@ -1,31 +0,0 @@ -from units.compat import mock -from units.compat import unittest - -from ansible.modules.packaging.os import apk - - -class TestApkQueryLatest(unittest.TestCase): - - def setUp(self): - self.module_names = [ - 'bash', - 'g++', - ] - - @mock.patch('ansible.modules.packaging.os.apk.AnsibleModule') - def test_not_latest(self, mock_module): - apk.APK_PATH = "" - for module_name in self.module_names: - command_output = module_name + '-2.0.0-r1 < 3.0.0-r2 ' - mock_module.run_command.return_value = (0, command_output, None) - command_result = apk.query_latest(mock_module, module_name) - self.assertFalse(command_result) - - @mock.patch('ansible.modules.packaging.os.apk.AnsibleModule') - def test_latest(self, mock_module): - apk.APK_PATH = "" - for module_name in self.module_names: - command_output = module_name + '-2.0.0-r1 = 2.0.0-r1 ' - mock_module.run_command.return_value = (0, command_output, None) - command_result = apk.query_latest(mock_module, module_name) - self.assertTrue(command_result) diff --git a/test/units/modules/packaging/os/test_redhat_subscription.py b/test/units/modules/packaging/os/test_redhat_subscription.py deleted file mode 100644 index b2a11894fa..0000000000 --- a/test/units/modules/packaging/os/test_redhat_subscription.py +++ /dev/null @@ -1,1221 +0,0 @@ -# Author: Jiri Hnidek (jhnidek@redhat.com) -# -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json - -from ansible.module_utils import basic -from ansible.modules.packaging.os import redhat_subscription - -import pytest - -TESTED_MODULE = redhat_subscription.__name__ - - -@pytest.fixture -def patch_redhat_subscription(mocker): - """ - Function used for mocking some parts of redhat_subscribtion module - """ - mocker.patch('ansible.modules.packaging.os.redhat_subscription.RegistrationBase.REDHAT_REPO') - mocker.patch('ansible.modules.packaging.os.redhat_subscription.isfile', return_value=False) - mocker.patch('ansible.modules.packaging.os.redhat_subscription.unlink', return_value=True) - mocker.patch('ansible.modules.packaging.os.redhat_subscription.AnsibleModule.get_bin_path', - return_value='/testbin/subscription-manager') - - -@pytest.mark.parametrize('patch_ansible_module', [{}], indirect=['patch_ansible_module']) -@pytest.mark.usefixtures('patch_ansible_module') -def test_without_required_parameters(capfd, patch_redhat_subscription): - """ - Failure must occurs when all parameters are missing - """ - with pytest.raises(SystemExit): - redhat_subscription.main() - out, err = capfd.readouterr() - results = json.loads(out) - assert results['failed'] - assert 'state is present but any of the following are missing' in results['msg'] - - -TEST_CASES = [ - # Test the case, when the system is already registered - [ - { - 'state': 'present', - 'server_hostname': 'subscription.rhsm.redhat.com', - 'username': 'admin', - 'password': 'admin', - 'org_id': 'admin' - }, - { - 'id': 'test_already_registered_system', - 'run_command.calls': [ - ( - # Calling of following command will be asserted - ['/testbin/subscription-manager', 'identity'], - # Was return code checked? - {'check_rc': False}, - # Mock of returned code, stdout and stderr - (0, 'system identity: b26df632-25ed-4452-8f89-0308bfd167cb', '') - ) - ], - 'changed': False, - 'msg': 'System already registered.' - } - ], - # Test simple registration using username and password - [ - { - 'state': 'present', - 'server_hostname': 'satellite.company.com', - 'username': 'admin', - 'password': 'admin', - }, - { - 'id': 'test_registeration_username_password', - 'run_command.calls': [ - ( - ['/testbin/subscription-manager', 'identity'], - {'check_rc': False}, - (1, '', '') - ), - ( - ['/testbin/subscription-manager', 'config', '--server.hostname=satellite.company.com'], - {'check_rc': True}, - (0, '', '') - ), - ( - ['/testbin/subscription-manager', 'register', - '--serverurl', 'satellite.company.com', - '--username', 'admin', - '--password', 'admin'], - {'check_rc': True, 'expand_user_and_vars': False}, - (0, '', '') - ) - ], - 'changed': True, - 'msg': "System successfully registered to 'satellite.company.com'." - } - ], - # Test unregistration, when system is unregistered - [ - { - 'state': 'absent', - 'server_hostname': 'subscription.rhsm.redhat.com', - 'username': 'admin', - 'password': 'admin', - }, - { - 'id': 'test_unregisteration', - 'run_command.calls': [ - ( - ['/testbin/subscription-manager', 'identity'], - {'check_rc': False}, - (0, 'system identity: b26df632-25ed-4452-8f89-0308bfd167cb', '') - ), - ( - ['/testbin/subscription-manager', 'unsubscribe', '--all'], - {'check_rc': True}, - (0, '', '') - ), - ( - ['/testbin/subscription-manager', 'unregister'], - {'check_rc': True}, - (0, '', '') - ) - ], - 'changed': True, - 'msg': "System successfully unregistered from subscription.rhsm.redhat.com." - } - ], - # Test unregistration of already unregistered system - [ - { - 'state': 'absent', - 'server_hostname': 'subscription.rhsm.redhat.com', - 'username': 'admin', - 'password': 'admin', - }, - { - 'id': 'test_unregisteration_of_unregistered_system', - 'run_command.calls': [ - ( - ['/testbin/subscription-manager', 'identity'], - {'check_rc': False}, - (1, 'This system is not yet registered.', '') - ) - ], - 'changed': False, - 'msg': "System already unregistered." - } - ], - # Test registration using activation key - [ - { - 'state': 'present', - 'server_hostname': 'satellite.company.com', - 'activationkey': 'some-activation-key', - 'org_id': 'admin' - }, - { - 'id': 'test_registeration_activation_key', - 'run_command.calls': [ - ( - ['/testbin/subscription-manager', 'identity'], - {'check_rc': False}, - (1, 'This system is not yet registered.', '') - ), - ( - ['/testbin/subscription-manager', 'config', '--server.hostname=satellite.company.com'], - {'check_rc': True}, - (0, '', '') - ), - ( - [ - '/testbin/subscription-manager', - 'register', - '--serverurl', 'satellite.company.com', - '--org', 'admin', - '--activationkey', 'some-activation-key' - ], - {'check_rc': True, 'expand_user_and_vars': False}, - (0, '', '') - ) - ], - 'changed': True, - 'msg': "System successfully registered to 'satellite.company.com'." - } - ], - # Test of registration using username and password with auto-attach option - [ - { - 'state': 'present', - 'username': 'admin', - 'password': 'admin', - 'org_id': 'admin', - 'auto_attach': 'true' - }, - { - 'id': 'test_registeration_username_password_auto_attach', - 'run_command.calls': [ - ( - ['/testbin/subscription-manager', 'identity'], - {'check_rc': False}, - (1, 'This system is not yet registered.', '') - ), - ( - [ - '/testbin/subscription-manager', - 'register', - '--org', 'admin', - '--auto-attach', - '--username', 'admin', - '--password', 'admin' - ], - {'check_rc': True, 'expand_user_and_vars': False}, - (0, '', '') - ) - ], - 'changed': True, - 'msg': "System successfully registered to 'None'." - } - ], - # Test of force registration despite the system is already registered - [ - { - 'state': 'present', - 'username': 'admin', - 'password': 'admin', - 'org_id': 'admin', - 'force_register': 'true' - }, - { - 'id': 'test_force_registeration_username_password', - 'run_command.calls': [ - ( - ['/testbin/subscription-manager', 'identity'], - {'check_rc': False}, - (0, 'This system already registered.', '') - ), - ( - [ - '/testbin/subscription-manager', - 'register', - '--force', - '--org', 'admin', - '--username', 'admin', - '--password', 'admin' - ], - {'check_rc': True, 'expand_user_and_vars': False}, - (0, '', '') - ) - ], - 'changed': True, - 'msg': "System successfully registered to 'None'." - } - ], - # Test of registration using username, password and proxy options - [ - { - 'state': 'present', - 'username': 'admin', - 'password': 'admin', - 'org_id': 'admin', - 'force_register': 'true', - 'server_proxy_hostname': 'proxy.company.com', - 'server_proxy_port': '12345', - 'server_proxy_user': 'proxy_user', - 'server_proxy_password': 'secret_proxy_password' - }, - { - 'id': 'test_registeration_username_password_proxy_options', - 'run_command.calls': [ - ( - ['/testbin/subscription-manager', 'identity'], - {'check_rc': False}, - (0, 'This system already registered.', '') - ), - ( - [ - '/testbin/subscription-manager', - 'config', - '--server.proxy_hostname=proxy.company.com', - '--server.proxy_password=secret_proxy_password', - '--server.proxy_port=12345', - '--server.proxy_user=proxy_user' - ], - {'check_rc': True}, - (0, '', '') - ), - ( - [ - '/testbin/subscription-manager', - 'register', - '--force', - '--org', 'admin', - '--proxy', 'proxy.company.com:12345', - '--proxyuser', 'proxy_user', - '--proxypassword', 'secret_proxy_password', - '--username', 'admin', - '--password', 'admin' - ], - {'check_rc': True, 'expand_user_and_vars': False}, - (0, '', '') - ) - ], - 'changed': True, - 'msg': "System successfully registered to 'None'." - } - ], - # Test of registration using username and password and attach to pool - [ - { - 'state': 'present', - 'username': 'admin', - 'password': 'admin', - 'org_id': 'admin', - 'pool': 'ff8080816b8e967f016b8e99632804a6' - }, - { - 'id': 'test_registeration_username_password_pool', - 'run_command.calls': [ - ( - ['/testbin/subscription-manager', 'identity'], - {'check_rc': False}, - (1, 'This system is not yet registered.', '') - ), - ( - [ - '/testbin/subscription-manager', - 'register', - '--org', 'admin', - '--username', 'admin', - '--password', 'admin' - ], - {'check_rc': True, 'expand_user_and_vars': False}, - (0, '', '') - ), - ( - [ - 'subscription-manager list --available', - {'check_rc': True, 'environ_update': {'LANG': 'C', 'LC_ALL': 'C', 'LC_MESSAGES': 'C'}}, - (0, - ''' -+-------------------------------------------+ - Available Subscriptions -+-------------------------------------------+ -Subscription Name: SP Server Premium (S: Premium, U: Production, R: SP Server) -Provides: SP Server Bits -SKU: sp-server-prem-prod -Contract: 0 -Pool ID: ff8080816b8e967f016b8e99632804a6 -Provides Management: Yes -Available: 5 -Suggested: 1 -Service Type: L1-L3 -Roles: SP Server -Service Level: Premium -Usage: Production -Add-ons: -Subscription Type: Standard -Starts: 06/25/19 -Ends: 06/24/20 -Entitlement Type: Physical -''', ''), - ] - ), - ( - 'subscription-manager attach --pool ff8080816b8e967f016b8e99632804a6', - {'check_rc': True}, - (0, '', '') - ) - ], - 'changed': True, - 'msg': "System successfully registered to 'None'." - } - ], - # Test of registration using username and password and attach to pool ID and quantities - [ - { - 'state': 'present', - 'username': 'admin', - 'password': 'admin', - 'org_id': 'admin', - 'pool_ids': [{'ff8080816b8e967f016b8e99632804a6': 2}, {'ff8080816b8e967f016b8e99747107e9': 4}] - }, - { - 'id': 'test_registeration_username_password_pool_ids_quantities', - 'run_command.calls': [ - ( - ['/testbin/subscription-manager', 'identity'], - {'check_rc': False}, - (1, 'This system is not yet registered.', '') - ), - ( - [ - '/testbin/subscription-manager', - 'register', - '--org', 'admin', - '--username', 'admin', - '--password', 'admin' - ], - {'check_rc': True, 'expand_user_and_vars': False}, - (0, '', '') - ), - ( - [ - 'subscription-manager list --available', - {'check_rc': True, 'environ_update': {'LANG': 'C', 'LC_ALL': 'C', 'LC_MESSAGES': 'C'}}, - (0, - ''' -+-------------------------------------------+ - Available Subscriptions -+-------------------------------------------+ -Subscription Name: SP Smart Management (A: ADDON1) -Provides: SP Addon 1 bits -SKU: sp-with-addon-1 -Contract: 1 -Pool ID: ff8080816b8e967f016b8e99747107e9 -Provides Management: Yes -Available: 10 -Suggested: 1 -Service Type: -Roles: -Service Level: -Usage: -Add-ons: ADDON1 -Subscription Type: Standard -Starts: 25.6.2019 -Ends: 24.6.2020 -Entitlement Type: Physical - -Subscription Name: SP Server Premium (S: Premium, U: Production, R: SP Server) -Provides: SP Server Bits -SKU: sp-server-prem-prod -Contract: 0 -Pool ID: ff8080816b8e967f016b8e99632804a6 -Provides Management: Yes -Available: 5 -Suggested: 1 -Service Type: L1-L3 -Roles: SP Server -Service Level: Premium -Usage: Production -Add-ons: -Subscription Type: Standard -Starts: 06/25/19 -Ends: 06/24/20 -Entitlement Type: Physical -''', '') - ] - ), - ( - [ - '/testbin/subscription-manager', - 'attach', - '--pool', 'ff8080816b8e967f016b8e99632804a6', - '--quantity', '2' - ], - {'check_rc': True}, - (0, '', '') - ), - ( - [ - '/testbin/subscription-manager', - 'attach', - '--pool', 'ff8080816b8e967f016b8e99747107e9', - '--quantity', '4' - ], - {'check_rc': True}, - (0, '', '') - ) - ], - 'changed': True, - 'msg': "System successfully registered to 'None'." - } - ], - # Test of registration using username and password and attach to pool ID without quantities - [ - { - 'state': 'present', - 'username': 'admin', - 'password': 'admin', - 'org_id': 'admin', - 'pool_ids': ['ff8080816b8e967f016b8e99632804a6', 'ff8080816b8e967f016b8e99747107e9'] - }, - { - 'id': 'test_registeration_username_password_pool_ids', - 'run_command.calls': [ - ( - ['/testbin/subscription-manager', 'identity'], - {'check_rc': False}, - (1, 'This system is not yet registered.', '') - ), - ( - [ - '/testbin/subscription-manager', - 'register', - '--org', 'admin', - '--username', 'admin', - '--password', 'admin' - ], - {'check_rc': True, 'expand_user_and_vars': False}, - (0, '', '') - ), - ( - [ - 'subscription-manager list --available', - {'check_rc': True, 'environ_update': {'LANG': 'C', 'LC_ALL': 'C', 'LC_MESSAGES': 'C'}}, - (0, - ''' -+-------------------------------------------+ - Available Subscriptions -+-------------------------------------------+ -Subscription Name: SP Smart Management (A: ADDON1) -Provides: SP Addon 1 bits -SKU: sp-with-addon-1 -Contract: 1 -Pool ID: ff8080816b8e967f016b8e99747107e9 -Provides Management: Yes -Available: 10 -Suggested: 1 -Service Type: -Roles: -Service Level: -Usage: -Add-ons: ADDON1 -Subscription Type: Standard -Starts: 25.6.2019 -Ends: 24.6.2020 -Entitlement Type: Physical - -Subscription Name: SP Server Premium (S: Premium, U: Production, R: SP Server) -Provides: SP Server Bits -SKU: sp-server-prem-prod -Contract: 0 -Pool ID: ff8080816b8e967f016b8e99632804a6 -Provides Management: Yes -Available: 5 -Suggested: 1 -Service Type: L1-L3 -Roles: SP Server -Service Level: Premium -Usage: Production -Add-ons: -Subscription Type: Standard -Starts: 06/25/19 -Ends: 06/24/20 -Entitlement Type: Physical -''', '') - ] - ), - ( - [ - '/testbin/subscription-manager', - 'attach', - '--pool', 'ff8080816b8e967f016b8e99632804a6' - ], - {'check_rc': True}, - (0, '', '') - ), - ( - [ - '/testbin/subscription-manager', - 'attach', - '--pool', 'ff8080816b8e967f016b8e99747107e9' - ], - {'check_rc': True}, - (0, '', '') - ) - ], - 'changed': True, - 'msg': "System successfully registered to 'None'." - } - ], - # Test of registration using username and password and attach to pool ID (one pool) - [ - { - 'state': 'present', - 'username': 'admin', - 'password': 'admin', - 'org_id': 'admin', - 'pool_ids': ['ff8080816b8e967f016b8e99632804a6'] - }, - { - 'id': 'test_registeration_username_password_one_pool_id', - 'run_command.calls': [ - ( - ['/testbin/subscription-manager', 'identity'], - {'check_rc': False}, - (1, 'This system is not yet registered.', '') - ), - ( - [ - '/testbin/subscription-manager', - 'register', - '--org', 'admin', - '--username', 'admin', - '--password', 'admin' - ], - {'check_rc': True, 'expand_user_and_vars': False}, - (0, '', '') - ), - ( - [ - 'subscription-manager list --available', - {'check_rc': True, 'environ_update': {'LANG': 'C', 'LC_ALL': 'C', 'LC_MESSAGES': 'C'}}, - (0, - ''' -+-------------------------------------------+ - Available Subscriptions -+-------------------------------------------+ -Subscription Name: SP Smart Management (A: ADDON1) -Provides: SP Addon 1 bits -SKU: sp-with-addon-1 -Contract: 1 -Pool ID: ff8080816b8e967f016b8e99747107e9 -Provides Management: Yes -Available: 10 -Suggested: 1 -Service Type: -Roles: -Service Level: -Usage: -Add-ons: ADDON1 -Subscription Type: Standard -Starts: 25.6.2019 -Ends: 24.6.2020 -Entitlement Type: Physical - -Subscription Name: SP Server Premium (S: Premium, U: Production, R: SP Server) -Provides: SP Server Bits -SKU: sp-server-prem-prod -Contract: 0 -Pool ID: ff8080816b8e967f016b8e99632804a6 -Provides Management: Yes -Available: 5 -Suggested: 1 -Service Type: L1-L3 -Roles: SP Server -Service Level: Premium -Usage: Production -Add-ons: -Subscription Type: Standard -Starts: 06/25/19 -Ends: 06/24/20 -Entitlement Type: Physical -''', '') - ] - ), - ( - [ - '/testbin/subscription-manager', - 'attach', - '--pool', 'ff8080816b8e967f016b8e99632804a6', - ], - {'check_rc': True}, - (0, '', '') - ) - ], - 'changed': True, - 'msg': "System successfully registered to 'None'." - } - ], - # Test attaching different set of pool IDs - [ - { - 'state': 'present', - 'username': 'admin', - 'password': 'admin', - 'org_id': 'admin', - 'pool_ids': [{'ff8080816b8e967f016b8e99632804a6': 2}, {'ff8080816b8e967f016b8e99747107e9': 4}] - }, - { - 'id': 'test_attaching_different_pool_ids', - 'run_command.calls': [ - ( - ['/testbin/subscription-manager', 'identity'], - {'check_rc': False}, - (0, 'system identity: b26df632-25ed-4452-8f89-0308bfd167cb', ''), - ), - ( - 'subscription-manager list --consumed', - {'check_rc': True, 'environ_update': {'LANG': 'C', 'LC_ALL': 'C', 'LC_MESSAGES': 'C'}}, - (0, ''' -+-------------------------------------------+ - Consumed Subscriptions -+-------------------------------------------+ -Subscription Name: Multi-Attribute Stackable (4 cores, no content) -Provides: Multi-Attribute Limited Product (no content) -SKU: cores4-multiattr -Contract: 1 -Account: 12331131231 -Serial: 7807912223970164816 -Pool ID: ff8080816b8e967f016b8e995f5103b5 -Provides Management: No -Active: True -Quantity Used: 1 -Service Type: Level 3 -Roles: -Service Level: Premium -Usage: -Add-ons: -Status Details: Subscription is current -Subscription Type: Stackable -Starts: 06/25/19 -Ends: 06/24/20 -Entitlement Type: Physical -''', '') - ), - ( - [ - '/testbin/subscription-manager', - 'unsubscribe', - '--serial=7807912223970164816', - ], - {'check_rc': True}, - (0, '', '') - ), - ( - [ - 'subscription-manager list --available', - {'check_rc': True, 'environ_update': {'LANG': 'C', 'LC_ALL': 'C', 'LC_MESSAGES': 'C'}}, - (0, - ''' -+-------------------------------------------+ - Available Subscriptions -+-------------------------------------------+ -Subscription Name: SP Smart Management (A: ADDON1) -Provides: SP Addon 1 bits -SKU: sp-with-addon-1 -Contract: 1 -Pool ID: ff8080816b8e967f016b8e99747107e9 -Provides Management: Yes -Available: 10 -Suggested: 1 -Service Type: -Roles: -Service Level: -Usage: -Add-ons: ADDON1 -Subscription Type: Standard -Starts: 25.6.2019 -Ends: 24.6.2020 -Entitlement Type: Physical - -Subscription Name: SP Server Premium (S: Premium, U: Production, R: SP Server) -Provides: SP Server Bits -SKU: sp-server-prem-prod -Contract: 0 -Pool ID: ff8080816b8e967f016b8e99632804a6 -Provides Management: Yes -Available: 5 -Suggested: 1 -Service Type: L1-L3 -Roles: SP Server -Service Level: Premium -Usage: Production -Add-ons: -Subscription Type: Standard -Starts: 06/25/19 -Ends: 06/24/20 -Entitlement Type: Physical - -Subscription Name: Multi-Attribute Stackable (4 cores, no content) -Provides: Multi-Attribute Limited Product (no content) -SKU: cores4-multiattr -Contract: 1 -Pool ID: ff8080816b8e967f016b8e995f5103b5 -Provides Management: No -Available: 10 -Suggested: 1 -Service Type: Level 3 -Roles: -Service Level: Premium -Usage: -Add-ons: -Subscription Type: Stackable -Starts: 11.7.2019 -Ends: 10.7.2020 -Entitlement Type: Physical -''', '') - ] - ), - ( - [ - '/testbin/subscription-manager', - 'attach', - '--pool', 'ff8080816b8e967f016b8e99632804a6', - '--quantity', '2' - ], - {'check_rc': True}, - (0, '', '') - ), - ( - [ - '/testbin/subscription-manager', - 'attach', - '--pool', 'ff8080816b8e967f016b8e99747107e9', - '--quantity', '4' - ], - {'check_rc': True}, - (0, '', '') - ) - ], - 'changed': True, - } - ] -] - - -TEST_CASES_IDS = [item[1]['id'] for item in TEST_CASES] - - -@pytest.mark.parametrize('patch_ansible_module, testcase', TEST_CASES, ids=TEST_CASES_IDS, indirect=['patch_ansible_module']) -@pytest.mark.usefixtures('patch_ansible_module') -def test_redhat_subscribtion(mocker, capfd, patch_redhat_subscription, testcase): - """ - Run unit tests for test cases listen in TEST_CASES - """ - - # Mock function used for running commands first - call_results = [item[2] for item in testcase['run_command.calls']] - mock_run_command = mocker.patch.object( - basic.AnsibleModule, - 'run_command', - side_effect=call_results) - - # Try to run test case - with pytest.raises(SystemExit): - redhat_subscription.main() - - out, err = capfd.readouterr() - results = json.loads(out) - - assert 'changed' in results - assert results['changed'] == testcase['changed'] - if 'msg' in results: - assert results['msg'] == testcase['msg'] - - assert basic.AnsibleModule.run_command.call_count == len(testcase['run_command.calls']) - if basic.AnsibleModule.run_command.call_count: - call_args_list = [(item[0][0], item[1]) for item in basic.AnsibleModule.run_command.call_args_list] - expected_call_args_list = [(item[0], item[1]) for item in testcase['run_command.calls']] - assert call_args_list == expected_call_args_list - - -SYSPURPOSE_TEST_CASES = [ - # Test setting syspurpose attributes (system is already registered) - # and synchronization with candlepin server - [ - { - 'state': 'present', - 'server_hostname': 'subscription.rhsm.redhat.com', - 'username': 'admin', - 'password': 'admin', - 'org_id': 'admin', - 'syspurpose': { - 'role': 'AwesomeOS', - 'usage': 'Production', - 'service_level_agreement': 'Premium', - 'addons': ['ADDON1', 'ADDON2'], - 'sync': True - } - }, - { - 'id': 'test_setting_syspurpose_attributes', - 'existing_syspurpose': {}, - 'expected_syspurpose': { - 'role': 'AwesomeOS', - 'usage': 'Production', - 'service_level_agreement': 'Premium', - 'addons': ['ADDON1', 'ADDON2'], - }, - 'run_command.calls': [ - ( - ['/testbin/subscription-manager', 'identity'], - {'check_rc': False}, - (0, 'system identity: b26df632-25ed-4452-8f89-0308bfd167cb', '') - ), - ( - ['/testbin/subscription-manager', 'status'], - {'check_rc': False}, - (0, ''' -+-------------------------------------------+ - System Status Details -+-------------------------------------------+ -Overall Status: Current - -System Purpose Status: Matched -''', '') - ) - ], - 'changed': True, - 'msg': 'Syspurpose attributes changed.' - } - ], - # Test setting unspupported attributes - [ - { - 'state': 'present', - 'server_hostname': 'subscription.rhsm.redhat.com', - 'username': 'admin', - 'password': 'admin', - 'org_id': 'admin', - 'syspurpose': { - 'foo': 'Bar', - 'role': 'AwesomeOS', - 'usage': 'Production', - 'service_level_agreement': 'Premium', - 'addons': ['ADDON1', 'ADDON2'], - 'sync': True - } - }, - { - 'id': 'test_setting_syspurpose_wrong_attributes', - 'existing_syspurpose': {}, - 'expected_syspurpose': {}, - 'run_command.calls': [], - 'failed': True - } - ], - # Test setting addons not a list - [ - { - 'state': 'present', - 'server_hostname': 'subscription.rhsm.redhat.com', - 'username': 'admin', - 'password': 'admin', - 'org_id': 'admin', - 'syspurpose': { - 'role': 'AwesomeOS', - 'usage': 'Production', - 'service_level_agreement': 'Premium', - 'addons': 'ADDON1', - 'sync': True - } - }, - { - 'id': 'test_setting_syspurpose_addons_not_list', - 'existing_syspurpose': {}, - 'expected_syspurpose': { - 'role': 'AwesomeOS', - 'usage': 'Production', - 'service_level_agreement': 'Premium', - 'addons': ['ADDON1'] - }, - 'run_command.calls': [ - ( - ['/testbin/subscription-manager', 'identity'], - {'check_rc': False}, - (0, 'system identity: b26df632-25ed-4452-8f89-0308bfd167cb', '') - ), - ( - ['/testbin/subscription-manager', 'status'], - {'check_rc': False}, - (0, ''' -+-------------------------------------------+ - System Status Details -+-------------------------------------------+ -Overall Status: Current - -System Purpose Status: Matched -''', '') - ) - ], - 'changed': True, - 'msg': 'Syspurpose attributes changed.' - } - ], - # Test setting syspurpose attributes (system is already registered) - # without synchronization with candlepin server. Some syspurpose attributes were set - # in the past - [ - { - 'state': 'present', - 'server_hostname': 'subscription.rhsm.redhat.com', - 'username': 'admin', - 'password': 'admin', - 'org_id': 'admin', - 'syspurpose': { - 'role': 'AwesomeOS', - 'service_level_agreement': 'Premium', - 'addons': ['ADDON1', 'ADDON2'], - 'sync': False - } - }, - { - 'id': 'test_changing_syspurpose_attributes', - 'existing_syspurpose': { - 'role': 'CoolOS', - 'usage': 'Production', - 'service_level_agreement': 'Super', - 'addons': [], - 'foo': 'bar' - }, - 'expected_syspurpose': { - 'role': 'AwesomeOS', - 'service_level_agreement': 'Premium', - 'addons': ['ADDON1', 'ADDON2'], - 'foo': 'bar' - }, - 'run_command.calls': [ - ( - ['/testbin/subscription-manager', 'identity'], - {'check_rc': False}, - (0, 'system identity: b26df632-25ed-4452-8f89-0308bfd167cb', '') - ), - ], - 'changed': True, - 'msg': 'Syspurpose attributes changed.' - } - ], - # Test trying to set syspurpose attributes (system is already registered) - # without synchronization with candlepin server. Some syspurpose attributes were set - # in the past. Syspurpose attributes are same as before - [ - { - 'state': 'present', - 'server_hostname': 'subscription.rhsm.redhat.com', - 'username': 'admin', - 'password': 'admin', - 'org_id': 'admin', - 'syspurpose': { - 'role': 'AwesomeOS', - 'service_level_agreement': 'Premium', - 'addons': ['ADDON1', 'ADDON2'], - 'sync': False - } - }, - { - 'id': 'test_not_changing_syspurpose_attributes', - 'existing_syspurpose': { - 'role': 'AwesomeOS', - 'service_level_agreement': 'Premium', - 'addons': ['ADDON1', 'ADDON2'], - }, - 'expected_syspurpose': { - 'role': 'AwesomeOS', - 'service_level_agreement': 'Premium', - 'addons': ['ADDON1', 'ADDON2'], - }, - 'run_command.calls': [ - ( - ['/testbin/subscription-manager', 'identity'], - {'check_rc': False}, - (0, 'system identity: b26df632-25ed-4452-8f89-0308bfd167cb', '') - ), - ], - 'changed': False, - 'msg': 'System already registered.' - } - ], - # Test of registration using username and password with auto-attach option, when - # syspurpose attributes are set - [ - { - 'state': 'present', - 'username': 'admin', - 'password': 'admin', - 'org_id': 'admin', - 'auto_attach': 'true', - 'syspurpose': { - 'role': 'AwesomeOS', - 'usage': 'Testing', - 'service_level_agreement': 'Super', - 'addons': ['ADDON1'], - 'sync': False - }, - }, - { - 'id': 'test_registeration_username_password_auto_attach_syspurpose', - 'existing_syspurpose': None, - 'expected_syspurpose': { - 'role': 'AwesomeOS', - 'usage': 'Testing', - 'service_level_agreement': 'Super', - 'addons': ['ADDON1'], - }, - 'run_command.calls': [ - ( - ['/testbin/subscription-manager', 'identity'], - {'check_rc': False}, - (1, 'This system is not yet registered.', '') - ), - ( - [ - '/testbin/subscription-manager', - 'register', - '--org', 'admin', - '--auto-attach', - '--username', 'admin', - '--password', 'admin' - ], - {'check_rc': True, 'expand_user_and_vars': False}, - (0, '', '') - ) - ], - 'changed': True, - 'msg': "System successfully registered to 'None'." - } - ], - # Test of registration using username and password with auto-attach option, when - # syspurpose attributes are set. Syspurpose attributes are also synchronized - # in this case - [ - { - 'state': 'present', - 'username': 'admin', - 'password': 'admin', - 'org_id': 'admin', - 'auto_attach': 'true', - 'syspurpose': { - 'role': 'AwesomeOS', - 'usage': 'Testing', - 'service_level_agreement': 'Super', - 'addons': ['ADDON1'], - 'sync': True - }, - }, - { - 'id': 'test_registeration_username_password_auto_attach_syspurpose_sync', - 'existing_syspurpose': None, - 'expected_syspurpose': { - 'role': 'AwesomeOS', - 'usage': 'Testing', - 'service_level_agreement': 'Super', - 'addons': ['ADDON1'], - }, - 'run_command.calls': [ - ( - ['/testbin/subscription-manager', 'identity'], - {'check_rc': False}, - (1, 'This system is not yet registered.', '') - ), - ( - [ - '/testbin/subscription-manager', - 'register', - '--org', 'admin', - '--auto-attach', - '--username', 'admin', - '--password', 'admin' - ], - {'check_rc': True, 'expand_user_and_vars': False}, - (0, '', '') - ), - ( - ['/testbin/subscription-manager', 'status'], - {'check_rc': False}, - (0, ''' -+-------------------------------------------+ - System Status Details -+-------------------------------------------+ -Overall Status: Current - -System Purpose Status: Matched -''', '') - ) - ], - 'changed': True, - 'msg': "System successfully registered to 'None'." - } - ], -] - - -SYSPURPOSE_TEST_CASES_IDS = [item[1]['id'] for item in SYSPURPOSE_TEST_CASES] - - -@pytest.mark.parametrize('patch_ansible_module, testcase', SYSPURPOSE_TEST_CASES, ids=SYSPURPOSE_TEST_CASES_IDS, indirect=['patch_ansible_module']) -@pytest.mark.usefixtures('patch_ansible_module') -def test_redhat_subscribtion_syspurpose(mocker, capfd, patch_redhat_subscription, patch_ansible_module, testcase, tmpdir): - """ - Run unit tests for test cases listen in SYSPURPOSE_TEST_CASES (syspurpose specific cases) - """ - - # Mock function used for running commands first - call_results = [item[2] for item in testcase['run_command.calls']] - mock_run_command = mocker.patch.object( - basic.AnsibleModule, - 'run_command', - side_effect=call_results) - - mock_syspurpose_file = tmpdir.mkdir("syspurpose").join("syspurpose.json") - # When there there are some existing syspurpose attributes specified, then - # write them to the file first - if testcase['existing_syspurpose'] is not None: - mock_syspurpose_file.write(json.dumps(testcase['existing_syspurpose'])) - else: - mock_syspurpose_file.write("{}") - - redhat_subscription.SysPurpose.SYSPURPOSE_FILE_PATH = str(mock_syspurpose_file) - - # Try to run test case - with pytest.raises(SystemExit): - redhat_subscription.main() - - out, err = capfd.readouterr() - results = json.loads(out) - - if 'failed' in testcase: - assert results['failed'] == testcase['failed'] - else: - assert 'changed' in results - assert results['changed'] == testcase['changed'] - if 'msg' in results: - assert results['msg'] == testcase['msg'] - - mock_file_content = mock_syspurpose_file.read_text("utf-8") - current_syspurpose = json.loads(mock_file_content) - assert current_syspurpose == testcase['expected_syspurpose'] - - assert basic.AnsibleModule.run_command.call_count == len(testcase['run_command.calls']) - if basic.AnsibleModule.run_command.call_count: - call_args_list = [(item[0][0], item[1]) for item in basic.AnsibleModule.run_command.call_args_list] - expected_call_args_list = [(item[0], item[1]) for item in testcase['run_command.calls']] - assert call_args_list == expected_call_args_list diff --git a/test/units/modules/packaging/os/test_rhn_channel.py b/test/units/modules/packaging/os/test_rhn_channel.py deleted file mode 100644 index 28ca99fa3a..0000000000 --- a/test/units/modules/packaging/os/test_rhn_channel.py +++ /dev/null @@ -1,141 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (c) 2017 Pierre-Louis Bonicoli <pierre-louis@libregerbil.fr> -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -import json - -from ansible.modules.packaging.os import rhn_channel - -import pytest - - -pytestmark = pytest.mark.usefixtures('patch_ansible_module') - - -@pytest.mark.parametrize('patch_ansible_module', [{}], indirect=['patch_ansible_module']) -def test_without_required_parameters(capfd): - with pytest.raises(SystemExit): - rhn_channel.main() - out, err = capfd.readouterr() - results = json.loads(out) - assert results['failed'] - assert 'missing required arguments' in results['msg'] - - -TESTED_MODULE = rhn_channel.__name__ -TEST_CASES = [ - [ - # add channel already added, check that result isn't changed - { - 'name': 'rhel-x86_64-server-6', - 'sysname': 'server01', - 'url': 'https://rhn.redhat.com/rpc/api', - 'user': 'user', - 'password': 'pass', - }, - { - 'calls': [ - ('auth.login', ['X' * 43]), - ('system.listUserSystems', - [[{'last_checkin': '2017-08-06 19:49:52.0', 'id': '0123456789', 'name': 'server01'}]]), - ('channel.software.listSystemChannels', - [[{'channel_name': 'Red Hat Enterprise Linux Server (v. 6 for 64-bit x86_64)', 'channel_label': 'rhel-x86_64-server-6'}]]), - ('auth.logout', [1]), - ], - 'changed': False, - 'msg': 'Channel rhel-x86_64-server-6 already exists', - } - ], - [ - # add channel, check that result is changed - { - 'name': 'rhel-x86_64-server-6-debuginfo', - 'sysname': 'server01', - 'url': 'https://rhn.redhat.com/rpc/api', - 'user': 'user', - 'password': 'pass', - }, - { - 'calls': [ - ('auth.login', ['X' * 43]), - ('system.listUserSystems', - [[{'last_checkin': '2017-08-06 19:49:52.0', 'id': '0123456789', 'name': 'server01'}]]), - ('channel.software.listSystemChannels', - [[{'channel_name': 'Red Hat Enterprise Linux Server (v. 6 for 64-bit x86_64)', 'channel_label': 'rhel-x86_64-server-6'}]]), - ('channel.software.listSystemChannels', - [[{'channel_name': 'Red Hat Enterprise Linux Server (v. 6 for 64-bit x86_64)', 'channel_label': 'rhel-x86_64-server-6'}]]), - ('system.setChildChannels', [1]), - ('auth.logout', [1]), - ], - 'changed': True, - 'msg': 'Channel rhel-x86_64-server-6-debuginfo added', - } - ], - [ - # remove inexistent channel, check that result isn't changed - { - 'name': 'rhel-x86_64-server-6-debuginfo', - 'state': 'absent', - 'sysname': 'server01', - 'url': 'https://rhn.redhat.com/rpc/api', - 'user': 'user', - 'password': 'pass', - }, - { - 'calls': [ - ('auth.login', ['X' * 43]), - ('system.listUserSystems', - [[{'last_checkin': '2017-08-06 19:49:52.0', 'id': '0123456789', 'name': 'server01'}]]), - ('channel.software.listSystemChannels', - [[{'channel_name': 'Red Hat Enterprise Linux Server (v. 6 for 64-bit x86_64)', 'channel_label': 'rhel-x86_64-server-6'}]]), - ('auth.logout', [1]), - ], - 'changed': False, - 'msg': 'Not subscribed to channel rhel-x86_64-server-6-debuginfo.', - } - ], - [ - # remove channel, check that result is changed - { - 'name': 'rhel-x86_64-server-6-debuginfo', - 'state': 'absent', - 'sysname': 'server01', - 'url': 'https://rhn.redhat.com/rpc/api', - 'user': 'user', - 'password': 'pass', - }, - { - 'calls': [ - ('auth.login', ['X' * 43]), - ('system.listUserSystems', - [[{'last_checkin': '2017-08-06 19:49:52.0', 'id': '0123456789', 'name': 'server01'}]]), - ('channel.software.listSystemChannels', [[ - {'channel_name': 'RHEL Server Debuginfo (v.6 for x86_64)', 'channel_label': 'rhel-x86_64-server-6-debuginfo'}, - {'channel_name': 'Red Hat Enterprise Linux Server (v. 6 for 64-bit x86_64)', 'channel_label': 'rhel-x86_64-server-6'} - ]]), - ('channel.software.listSystemChannels', [[ - {'channel_name': 'RHEL Server Debuginfo (v.6 for x86_64)', 'channel_label': 'rhel-x86_64-server-6-debuginfo'}, - {'channel_name': 'Red Hat Enterprise Linux Server (v. 6 for 64-bit x86_64)', 'channel_label': 'rhel-x86_64-server-6'} - ]]), - ('system.setChildChannels', [1]), - ('auth.logout', [1]), - ], - 'changed': True, - 'msg': 'Channel rhel-x86_64-server-6-debuginfo removed' - } - ] -] - - -@pytest.mark.parametrize('patch_ansible_module, testcase', TEST_CASES, indirect=['patch_ansible_module']) -def test_rhn_channel(capfd, mocker, testcase, mock_request): - """Check 'msg' and 'changed' results""" - - with pytest.raises(SystemExit): - rhn_channel.main() - - out, err = capfd.readouterr() - results = json.loads(out) - assert results['changed'] == testcase['changed'] - assert results['msg'] == testcase['msg'] - assert not testcase['calls'] # all calls should have been consumed diff --git a/test/units/modules/packaging/os/test_rhn_register.py b/test/units/modules/packaging/os/test_rhn_register.py deleted file mode 100644 index 9d56ec8a78..0000000000 --- a/test/units/modules/packaging/os/test_rhn_register.py +++ /dev/null @@ -1,284 +0,0 @@ -import json -import os - -from units.compat.mock import mock_open -from ansible.module_utils import basic -from ansible.module_utils._text import to_native -import ansible.module_utils.six -from ansible.module_utils.six.moves import xmlrpc_client -from ansible.modules.packaging.os import rhn_register - -import pytest - - -SYSTEMID = """<?xml version="1.0"?> -<params> -<param> -<value><struct> -<member> -<name>system_id</name> -<value><string>ID-123456789</string></value> -</member> -</struct></value> -</param> -</params> -""" - - -def skipWhenAllModulesMissing(modules): - """Skip the decorated test unless one of modules is available.""" - for module in modules: - try: - __import__(module) - return False - except ImportError: - continue - - return True - - -orig_import = __import__ - - -@pytest.fixture -def import_libxml(mocker): - def mock_import(name, *args, **kwargs): - if name in ['libxml2', 'libxml']: - raise ImportError() - else: - return orig_import(name, *args, **kwargs) - - if ansible.module_utils.six.PY3: - mocker.patch('builtins.__import__', side_effect=mock_import) - else: - mocker.patch('__builtin__.__import__', side_effect=mock_import) - - -@pytest.fixture -def patch_rhn(mocker): - load_config_return = { - 'serverURL': 'https://xmlrpc.rhn.redhat.com/XMLRPC', - 'systemIdPath': '/etc/sysconfig/rhn/systemid' - } - - mocker.patch.object(rhn_register.Rhn, 'load_config', return_value=load_config_return) - mocker.patch.object(rhn_register, 'HAS_UP2DATE_CLIENT', mocker.PropertyMock(return_value=True)) - - -@pytest.mark.skipif(skipWhenAllModulesMissing(['libxml2', 'libxml']), reason='none are available: libxml2, libxml') -def test_systemid_with_requirements(capfd, mocker, patch_rhn): - """Check 'msg' and 'changed' results""" - - mocker.patch.object(rhn_register.Rhn, 'enable') - mock_isfile = mocker.patch('os.path.isfile', return_value=True) - mocker.patch('ansible.modules.packaging.os.rhn_register.open', mock_open(read_data=SYSTEMID), create=True) - rhn = rhn_register.Rhn() - assert '123456789' == to_native(rhn.systemid) - - -@pytest.mark.parametrize('patch_ansible_module', [{}], indirect=['patch_ansible_module']) -@pytest.mark.usefixtures('patch_ansible_module') -def test_systemid_requirements_missing(capfd, mocker, patch_rhn, import_libxml): - """Check that missing dependencies are detected""" - - mocker.patch('os.path.isfile', return_value=True) - mocker.patch('ansible.modules.packaging.os.rhn_register.open', mock_open(read_data=SYSTEMID), create=True) - - with pytest.raises(SystemExit): - rhn_register.main() - - out, err = capfd.readouterr() - results = json.loads(out) - assert results['failed'] - assert 'Missing arguments' in results['msg'] - - -@pytest.mark.parametrize('patch_ansible_module', [{}], indirect=['patch_ansible_module']) -@pytest.mark.usefixtures('patch_ansible_module') -def test_without_required_parameters(capfd, patch_rhn): - """Failure must occurs when all parameters are missing""" - - with pytest.raises(SystemExit): - rhn_register.main() - out, err = capfd.readouterr() - results = json.loads(out) - assert results['failed'] - assert 'Missing arguments' in results['msg'] - - -TESTED_MODULE = rhn_register.__name__ -TEST_CASES = [ - [ - # Registering an unregistered host with channels - { - 'channels': 'rhel-x86_64-server-6', - 'username': 'user', - 'password': 'pass', - }, - { - 'calls': [ - ('auth.login', ['X' * 43]), - ('channel.software.listSystemChannels', - [[{'channel_name': 'Red Hat Enterprise Linux Server (v. 6 for 64-bit x86_64)', 'channel_label': 'rhel-x86_64-server-6'}]]), - ('channel.software.setSystemChannels', [1]), - ('auth.logout', [1]), - ], - 'is_registered': False, - 'is_registered.call_count': 1, - 'enable.call_count': 1, - 'systemid.call_count': 2, - 'changed': True, - 'msg': "System successfully registered to 'rhn.redhat.com'.", - 'run_command.call_count': 1, - 'run_command.call_args': '/usr/sbin/rhnreg_ks', - 'request_called': True, - 'unlink.call_count': 0, - } - ], - [ - # Registering an unregistered host without channels - { - 'activationkey': 'key', - 'username': 'user', - 'password': 'pass', - }, - { - 'calls': [ - ], - 'is_registered': False, - 'is_registered.call_count': 1, - 'enable.call_count': 1, - 'systemid.call_count': 0, - 'changed': True, - 'msg': "System successfully registered to 'rhn.redhat.com'.", - 'run_command.call_count': 1, - 'run_command.call_args': '/usr/sbin/rhnreg_ks', - 'request_called': False, - 'unlink.call_count': 0, - } - ], - [ - # Register an host already registered, check that result is unchanged - { - 'activationkey': 'key', - 'username': 'user', - 'password': 'pass', - }, - { - 'calls': [ - ], - 'is_registered': True, - 'is_registered.call_count': 1, - 'enable.call_count': 0, - 'systemid.call_count': 0, - 'changed': False, - 'msg': 'System already registered.', - 'run_command.call_count': 0, - 'request_called': False, - 'unlink.call_count': 0, - }, - ], - [ - # Unregister an host, check that result is changed - { - 'activationkey': 'key', - 'username': 'user', - 'password': 'pass', - 'state': 'absent', - }, - { - 'calls': [ - ('auth.login', ['X' * 43]), - ('system.deleteSystems', [1]), - ('auth.logout', [1]), - ], - 'is_registered': True, - 'is_registered.call_count': 1, - 'enable.call_count': 0, - 'systemid.call_count': 1, - 'changed': True, - 'msg': 'System successfully unregistered from rhn.redhat.com.', - 'run_command.call_count': 0, - 'request_called': True, - 'unlink.call_count': 1, - } - ], - [ - # Unregister a unregistered host (systemid missing) locally, check that result is unchanged - { - 'activationkey': 'key', - 'username': 'user', - 'password': 'pass', - 'state': 'absent', - }, - { - 'calls': [], - 'is_registered': False, - 'is_registered.call_count': 1, - 'enable.call_count': 0, - 'systemid.call_count': 0, - 'changed': False, - 'msg': 'System already unregistered.', - 'run_command.call_count': 0, - 'request_called': False, - 'unlink.call_count': 0, - } - - ], - [ - # Unregister an unknown host (an host with a systemid available locally, check that result contains failed - { - 'activationkey': 'key', - 'username': 'user', - 'password': 'pass', - 'state': 'absent', - }, - { - 'calls': [ - ('auth.login', ['X' * 43]), - ('system.deleteSystems', xmlrpc_client.Fault(1003, 'The following systems were NOT deleted: 123456789')), - ('auth.logout', [1]), - ], - 'is_registered': True, - 'is_registered.call_count': 1, - 'enable.call_count': 0, - 'systemid.call_count': 1, - 'failed': True, - 'msg': "Failed to unregister: <Fault 1003: 'The following systems were NOT deleted: 123456789'>", - 'run_command.call_count': 0, - 'request_called': True, - 'unlink.call_count': 0, - } - ], -] - - -@pytest.mark.parametrize('patch_ansible_module, testcase', TEST_CASES, indirect=['patch_ansible_module']) -@pytest.mark.usefixtures('patch_ansible_module') -def test_register_parameters(mocker, capfd, mock_request, patch_rhn, testcase): - # successful execution, no output - mocker.patch.object(basic.AnsibleModule, 'run_command', return_value=(0, '', '')) - mock_is_registered = mocker.patch.object(rhn_register.Rhn, 'is_registered', mocker.PropertyMock(return_value=testcase['is_registered'])) - mocker.patch.object(rhn_register.Rhn, 'enable') - mock_systemid = mocker.patch.object(rhn_register.Rhn, 'systemid', mocker.PropertyMock(return_value=12345)) - mocker.patch('os.unlink', return_value=True) - - with pytest.raises(SystemExit): - rhn_register.main() - - assert basic.AnsibleModule.run_command.call_count == testcase['run_command.call_count'] - if basic.AnsibleModule.run_command.call_count: - assert basic.AnsibleModule.run_command.call_args[0][0][0] == testcase['run_command.call_args'] - - assert mock_is_registered.call_count == testcase['is_registered.call_count'] - assert rhn_register.Rhn.enable.call_count == testcase['enable.call_count'] - assert mock_systemid.call_count == testcase['systemid.call_count'] - assert xmlrpc_client.Transport.request.called == testcase['request_called'] - assert os.unlink.call_count == testcase['unlink.call_count'] - - out, err = capfd.readouterr() - results = json.loads(out) - assert results.get('changed') == testcase.get('changed') - assert results.get('failed') == testcase.get('failed') - assert results['msg'] == testcase['msg'] - assert not testcase['calls'] # all calls should have been consumed diff --git a/test/units/modules/packaging/os/test_rhsm_release.py b/test/units/modules/packaging/os/test_rhsm_release.py deleted file mode 100644 index f652bfa64d..0000000000 --- a/test/units/modules/packaging/os/test_rhsm_release.py +++ /dev/null @@ -1,141 +0,0 @@ -# (c) 2018, Sean Myers <sean.myers@redhat.com> -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import call, patch -from ansible.modules.packaging.os import rhsm_release -from units.modules.utils import ( - AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args) - - -class RhsmRepositoryReleaseModuleTestCase(ModuleTestCase): - module = rhsm_release - - def setUp(self): - super(RhsmRepositoryReleaseModuleTestCase, self).setUp() - - # Mainly interested that the subscription-manager calls are right - # based on the module args, so patch out run_command in the module. - # returns (rc, out, err) structure - self.mock_run_command = patch('ansible.modules.packaging.os.rhsm_release.' - 'AnsibleModule.run_command') - self.module_main_command = self.mock_run_command.start() - - # Module does a get_bin_path check before every run_command call - self.mock_get_bin_path = patch('ansible.modules.packaging.os.rhsm_release.' - 'AnsibleModule.get_bin_path') - self.get_bin_path = self.mock_get_bin_path.start() - self.get_bin_path.return_value = '/testbin/subscription-manager' - - def tearDown(self): - self.mock_run_command.stop() - self.mock_get_bin_path.stop() - super(RhsmRepositoryReleaseModuleTestCase, self).tearDown() - - def module_main(self, exit_exc): - with self.assertRaises(exit_exc) as exc: - self.module.main() - return exc.exception.args[0] - - def test_release_set(self): - # test that the module attempts to change the release when the current - # release is not the same as the user-specific target release - set_module_args({'release': '7.5'}) - self.module_main_command.side_effect = [ - # first call, get_release: returns different version so set_release is called - (0, '7.4', ''), - # second call, set_release: just needs to exit with 0 rc - (0, '', ''), - ] - - result = self.module_main(AnsibleExitJson) - - self.assertTrue(result['changed']) - self.assertEqual('7.5', result['current_release']) - self.module_main_command.assert_has_calls([ - call('/testbin/subscription-manager release --show', check_rc=True), - call('/testbin/subscription-manager release --set 7.5', check_rc=True), - ]) - - def test_release_set_idempotent(self): - # test that the module does not attempt to change the release when - # the current release matches the user-specified target release - set_module_args({'release': '7.5'}) - self.module_main_command.side_effect = [ - # first call, get_release: returns same version, set_release is not called - (0, '7.5', ''), - ] - - result = self.module_main(AnsibleExitJson) - - self.assertFalse(result['changed']) - self.assertEqual('7.5', result['current_release']) - self.module_main_command.assert_has_calls([ - call('/testbin/subscription-manager release --show', check_rc=True), - ]) - - def test_release_unset(self): - # test that the module attempts to change the release when the current - # release is not the same as the user-specific target release - set_module_args({'release': None}) - self.module_main_command.side_effect = [ - # first call, get_release: returns version so set_release is called - (0, '7.5', ''), - # second call, set_release: just needs to exit with 0 rc - (0, '', ''), - ] - - result = self.module_main(AnsibleExitJson) - - self.assertTrue(result['changed']) - self.assertIsNone(result['current_release']) - self.module_main_command.assert_has_calls([ - call('/testbin/subscription-manager release --show', check_rc=True), - call('/testbin/subscription-manager release --unset', check_rc=True), - ]) - - def test_release_unset_idempotent(self): - # test that the module attempts to change the release when the current - # release is not the same as the user-specific target release - set_module_args({'release': None}) - self.module_main_command.side_effect = [ - # first call, get_release: returns no version, set_release is not called - (0, 'Release not set', ''), - ] - - result = self.module_main(AnsibleExitJson) - - self.assertFalse(result['changed']) - self.assertIsNone(result['current_release']) - self.module_main_command.assert_has_calls([ - call('/testbin/subscription-manager release --show', check_rc=True), - ]) - - def test_release_insane(self): - # test that insane values for release trigger fail_json - insane_value = 'this is an insane release value' - set_module_args({'release': insane_value}) - - result = self.module_main(AnsibleFailJson) - - # also ensure that the fail msg includes the insane value - self.assertIn(insane_value, result['msg']) - - def test_release_matcher(self): - # throw a few values at the release matcher -- only sane_values should match - sane_values = ['1Server', '10Server', '1.10', '10.0'] - insane_values = [ - '6server', # lowercase 's' - '100Server', # excessively long 'x' component - '100.0', # excessively long 'x' component - '6.100', # excessively long 'y' component - '100.100', # excessively long 'x' and 'y' components - ] - - matches = self.module.release_matcher.findall(' '.join(sane_values + insane_values)) - - # matches should be returned in the same order they were parsed, - # so sorting shouldn't be necessary here - self.assertEqual(matches, sane_values) diff --git a/test/units/modules/remote_management/dellemc/test_ome_device_info.py b/test/units/modules/remote_management/dellemc/test_ome_device_info.py deleted file mode 100644 index a0b470bce3..0000000000 --- a/test/units/modules/remote_management/dellemc/test_ome_device_info.py +++ /dev/null @@ -1,189 +0,0 @@ -# -*- coding: utf-8 -*- - -# -# Dell EMC OpenManage Ansible Modules -# Version 2.0 -# Copyright (C) 2019 Dell Inc. - -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -# All rights reserved. Dell, EMC, and other trademarks are trademarks of Dell Inc. or its subsidiaries. -# Other trademarks may be trademarks of their respective owners. -# - -from __future__ import absolute_import - -import pytest -from units.modules.utils import set_module_args, exit_json, \ - fail_json, AnsibleFailJson, AnsibleExitJson -from ansible.module_utils import basic -from ansible.modules.remote_management.dellemc import ome_device_info -from ansible.module_utils.six.moves.urllib.error import HTTPError - -default_args = {'hostname': '192.168.0.1', 'username': 'username', 'password': 'password'} -resource_basic_inventory = {"basic_inventory": "DeviceService/Devices"} -resource_detailed_inventory = {"detailed_inventory:": {"device_id": {1234: None}, - "device_service_tag": {1345: "MXL1234"}}} - - -class TestOmeDeviceInfo(object): - module = ome_device_info - - @pytest.fixture(autouse=True) - def module_mock(self, mocker): - return mocker.patch.multiple(basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json) - - @pytest.fixture - def connection_mock(self, mocker): - connection_class_mock = mocker.patch('ansible.modules.remote_management.dellemc.ome_device_info.RestOME') - return connection_class_mock.return_value - - @pytest.fixture - def response_mock(self, mocker): - response_class_mock = mocker.patch('ansible.module_utils.remote_management.dellemc.ome.OpenURLResponse') - return response_class_mock - - @pytest.fixture - def validate_inputs_mock(self, mocker): - response_class_mock = mocker.patch('ansible.modules.remote_management.dellemc.ome_device_info._validate_inputs') - response_class_mock.return_value = None - - @pytest.fixture - def get_device_identifier_map_mock(self, mocker): - response_class_mock = mocker.patch('ansible.modules.remote_management.dellemc.ome_device_info._get_device_identifier_map') - response_class_mock.return_value = resource_detailed_inventory - return response_class_mock.return_value - - @pytest.fixture - def get_resource_parameters_mock(self, mocker): - response_class_mock = mocker.patch('ansible.modules.remote_management.dellemc.ome_device_info._get_resource_parameters') - return response_class_mock - - def test_main_basic_inventory_success_case(self, module_mock, validate_inputs_mock, connection_mock, get_resource_parameters_mock, response_mock): - get_resource_parameters_mock.return_value = resource_basic_inventory - connection_mock.__enter__.return_value = connection_mock - connection_mock.invoke_request.return_value = response_mock - response_mock.json_data = {"value": [{"device_id1": "details", "device_id2": "details"}]} - response_mock.status_code = 200 - result = self._run_module(default_args) - assert result['changed'] is False - assert 'device_info' in result - - def test_main_basic_inventory_failure_case(self, module_mock, validate_inputs_mock, connection_mock, get_resource_parameters_mock, response_mock): - get_resource_parameters_mock.return_value = resource_basic_inventory - connection_mock.__enter__.return_value = connection_mock - connection_mock.invoke_request.return_value = response_mock - response_mock.status_code = 500 - result = self._run_module_with_fail_json(default_args) - assert result['msg'] == 'Failed to fetch the device information' - - def test_main_detailed_inventory_success_case(self, module_mock, validate_inputs_mock, connection_mock, get_resource_parameters_mock, response_mock): - default_args.update({"fact_subset": "detailed_inventory", "system_query_options": {"device_id": [1234], "device_service_tag": ["MXL1234"]}}) - detailed_inventory = {"detailed_inventory:": {"device_id": {1234: "DeviceService/Devices(1234)/InventoryDetails"}, - "device_service_tag": {"MXL1234": "DeviceService/Devices(4321)/InventoryDetails"}}} - get_resource_parameters_mock.return_value = detailed_inventory - connection_mock.__enter__.return_value = connection_mock - connection_mock.invoke_request.return_value = response_mock - response_mock.json_data = {"value": [{"device_id": {"1234": "details"}}, {"device_service_tag": {"MXL1234": "details"}}]} - response_mock.status_code = 200 - result = self._run_module(default_args) - assert result['changed'] is False - assert 'device_info' in result - - def test_main_HTTPError_error_case(self, module_mock, validate_inputs_mock, connection_mock, get_resource_parameters_mock, response_mock): - get_resource_parameters_mock.return_value = resource_basic_inventory - connection_mock.__enter__.return_value = connection_mock - connection_mock.invoke_request.side_effect = HTTPError('http://testhost.com', 400, '', {}, None) - response_mock.json_data = {"value": [{"device_id1": "details", "device_id2": "details"}]} - response_mock.status_code = 400 - result = self._run_module_with_fail_json(default_args) - assert 'device_info' not in result - assert result['failed'] is True - - @pytest.mark.parametrize("fact_subset, mutually_exclusive_call", [("basic_inventory", False), ("detailed_inventory", True)]) - def test_validate_inputs(self, fact_subset, mutually_exclusive_call, mocker): - module_params = {"fact_subset": fact_subset} - check_mutually_inclusive_arguments_mock = mocker.patch( - 'ansible.modules.remote_management.dellemc.ome_device_info._check_mutually_inclusive_arguments') - check_mutually_inclusive_arguments_mock.return_value = None - self.module._validate_inputs(module_params) - if mutually_exclusive_call: - check_mutually_inclusive_arguments_mock.assert_called() - else: - check_mutually_inclusive_arguments_mock.assert_not_called() - check_mutually_inclusive_arguments_mock.reset_mock() - - system_query_options_params = [{"system_query_options": None}, {"system_query_options": {"device_id": None}}, - {"system_query_options": {"device_service_tag": None}}] - - @pytest.mark.parametrize("system_query_options_params", system_query_options_params) - def test_check_mutually_inclusive_arguments(self, system_query_options_params): - module_params = {"fact_subset": "subsystem_health"} - required_args = ["device_id", "device_service_tag"] - module_params.update(system_query_options_params) - with pytest.raises(ValueError) as ex: - self.module._check_mutually_inclusive_arguments(module_params["fact_subset"], module_params, ["device_id", "device_service_tag"]) - assert "One of the following {0} is required for {1}".format(required_args, module_params["fact_subset"]) == str(ex.value) - - params = [{"fact_subset": "basic_inventory", "system_query_options": {"device_id": [1234]}}, - {"fact_subset": "subsystem_health", "system_query_options": {"device_service_tag": ["MXL1234"]}}, - {"fact_subset": "detailed_inventory", "system_query_options": {"device_id": [1234], "inventory_type": "serverDeviceCards"}}] - - @pytest.mark.parametrize("module_params", params) - def test_get_resource_parameters(self, module_params, connection_mock): - self.module._get_resource_parameters(module_params, connection_mock) - - @pytest.mark.parametrize("module_params,data", [({"system_query_options": None}, None), ({"system_query_options": {"fileter": None}}, None), - ({"system_query_options": {"filter": "abc"}}, "$filter")]) - def test_get_query_parameters(self, module_params, data): - res = self.module._get_query_parameters(module_params) - if data is not None: - assert data in res - else: - assert res is None - - @pytest.mark.parametrize("module_params", params) - def test_get_device_identifier_map(self, module_params, connection_mock, mocker): - get_device_id_from_service_tags_mock = mocker.patch('ansible.modules.remote_management.dellemc.ome_device_info._get_device_id_from_service_tags') - get_device_id_from_service_tags_mock.return_value = None - res = self.module._get_device_identifier_map(module_params, connection_mock) - assert isinstance(res, dict) - - def test_check_duplicate_device_id(self): - self.module._check_duplicate_device_id([1234], {1234: "MX1234"}) - assert self.module.device_fact_error_report["MX1234"] == "Duplicate report of device_id: 1234" - - @pytest.mark.parametrize("val,expected_res", [(123, True), ("abc", False)]) - def test_is_int(self, val, expected_res): - actual_res = self.module.is_int(val) - assert actual_res == expected_res - - def test_get_device_id_from_service_tags(self, connection_mock, response_mock): - connection_mock.__enter__.return_value = connection_mock - connection_mock.invoke_request.return_value = response_mock - response_mock.json_data = {"value": [{"DeviceServiceTag": "MX1234", "Id": 1234}]} - response_mock.status_code = 200 - response_mock.success = True - self.module._get_device_id_from_service_tags(["MX1234", "INVALID"], connection_mock) - - def test_get_device_id_from_service_tags_error_case(self, connection_mock, response_mock): - connection_mock.__enter__.return_value = connection_mock - connection_mock.invoke_request.side_effect = HTTPError('http://testhost.com', - 400, '', {}, None) - response_mock.json_data = {"value": [{"DeviceServiceTag": "MX1234", "Id": 1234}]} - response_mock.status_code = 200 - response_mock.success = True - with pytest.raises(HTTPError) as ex: - self.module._get_device_id_from_service_tags(["INVALID"], connection_mock) - - def _run_module(self, module_args): - set_module_args(module_args) - with pytest.raises(AnsibleExitJson) as ex: - self.module.main() - return ex.value.args[0] - - def _run_module_with_fail_json(self, module_args): - set_module_args(module_args) - with pytest.raises(AnsibleFailJson) as exc: - self.module.main() - result = exc.value.args[0] - return result diff --git a/test/units/modules/remote_management/lxca/test_lxca_cmms.py b/test/units/modules/remote_management/lxca/test_lxca_cmms.py deleted file mode 100644 index 6f14bdebd1..0000000000 --- a/test/units/modules/remote_management/lxca/test_lxca_cmms.py +++ /dev/null @@ -1,94 +0,0 @@ -import json - -import pytest -from units.compat import mock -from ansible.modules.remote_management.lxca import lxca_cmms - - -@pytest.fixture(scope='module') -@mock.patch("ansible.module_utils.remote_management.lxca.common.close_conn", autospec=True) -def setup_module(close_conn): - close_conn.return_value = True - - -class TestMyModule(): - @pytest.mark.parametrize('patch_ansible_module', - [ - {}, - { - "auth_url": "https://10.240.14.195", - "login_user": "USERID", - }, - { - "auth_url": "https://10.240.14.195", - "login_password": "Password", - }, - { - "login_user": "USERID", - "login_password": "Password", - }, - ], - indirect=['patch_ansible_module']) - @pytest.mark.usefixtures('patch_ansible_module') - @mock.patch("ansible.module_utils.remote_management.lxca.common.setup_conn", autospec=True) - @mock.patch("ansible.modules.remote_management.lxca.lxca_cmms.execute_module", autospec=True) - def test_without_required_parameters(self, _setup_conn, _execute_module, - mocker, capfd, setup_module): - """Failure must occurs when all parameters are missing""" - with pytest.raises(SystemExit): - _setup_conn.return_value = "Fake connection" - _execute_module.return_value = "Fake execution" - lxca_cmms.main() - out, err = capfd.readouterr() - results = json.loads(out) - assert results['failed'] - assert 'missing required arguments' in results['msg'] - - @mock.patch("ansible.module_utils.remote_management.lxca.common.setup_conn", autospec=True) - @mock.patch("ansible.modules.remote_management.lxca.lxca_cmms.execute_module", autospec=True) - @mock.patch("ansible.modules.remote_management.lxca.lxca_cmms.AnsibleModule", autospec=True) - def test__argument_spec(self, ansible_mod_cls, _execute_module, _setup_conn, setup_module): - expected_arguments_spec = dict( - login_user=dict(required=True), - login_password=dict(required=True, no_log=True), - command_options=dict(default='cmms', choices=['cmms', 'cmms_by_uuid', - 'cmms_by_chassis_uuid']), - auth_url=dict(required=True), - uuid=dict(default=None), - chassis=dict(default=None), - ) - _setup_conn.return_value = "Fake connection" - _execute_module.return_value = [] - mod_obj = ansible_mod_cls.return_value - args = { - "auth_url": "https://10.243.30.195", - "login_user": "USERID", - "login_password": "password", - "command_options": "cmms", - } - mod_obj.params = args - lxca_cmms.main() - assert(mock.call(argument_spec=expected_arguments_spec, - supports_check_mode=False) == ansible_mod_cls.call_args) - - @mock.patch("ansible.module_utils.remote_management.lxca.common.setup_conn", autospec=True) - @mock.patch("ansible.modules.remote_management.lxca.lxca_cmms._cmms_by_uuid", - autospec=True) - @mock.patch("ansible.modules.remote_management.lxca.lxca_cmms.AnsibleModule", - autospec=True) - def test__cmms_empty_list(self, ansible_mod_cls, _get_cmms, _setup_conn, setup_module): - mod_obj = ansible_mod_cls.return_value - args = { - "auth_url": "https://10.243.30.195", - "login_user": "USERID", - "login_password": "password", - "uuid": "3C737AA5E31640CE949B10C129A8B01F", - "command_options": "cmms_by_uuid", - } - mod_obj.params = args - _setup_conn.return_value = "Fake connection" - empty_nodes_list = [] - _get_cmms.return_value = empty_nodes_list - ret_cmms = _get_cmms(mod_obj, args) - assert mock.call(mod_obj, mod_obj.params) == _get_cmms.call_args - assert _get_cmms.return_value == ret_cmms diff --git a/test/units/modules/remote_management/lxca/test_lxca_nodes.py b/test/units/modules/remote_management/lxca/test_lxca_nodes.py deleted file mode 100644 index 152967d531..0000000000 --- a/test/units/modules/remote_management/lxca/test_lxca_nodes.py +++ /dev/null @@ -1,98 +0,0 @@ -import json - -import pytest -from units.compat import mock -from ansible.modules.remote_management.lxca import lxca_nodes -from ansible.module_utils.remote_management.lxca.common import setup_conn -from ansible.module_utils.remote_management.lxca.common import close_conn - - -@pytest.fixture(scope='module') -@mock.patch("ansible.module_utils.remote_management.lxca.common.close_conn", autospec=True) -def setup_module(close_conn): - close_conn.return_value = True - - -class TestMyModule(): - @pytest.mark.parametrize('patch_ansible_module', - [ - {}, - { - "auth_url": "https://10.240.14.195", - "login_user": "USERID", - }, - { - "auth_url": "https://10.240.14.195", - "login_password": "Password", - }, - { - "login_user": "USERID", - "login_password": "Password", - }, - ], - indirect=['patch_ansible_module']) - @pytest.mark.usefixtures('patch_ansible_module') - @mock.patch("ansible.module_utils.remote_management.lxca.common.setup_conn", autospec=True) - @mock.patch("ansible.modules.remote_management.lxca.lxca_nodes.execute_module", autospec=True) - def test_without_required_parameters(self, _setup_conn, _execute_module, - mocker, capfd, setup_module): - """Failure must occurs when all parameters are missing""" - with pytest.raises(SystemExit): - _setup_conn.return_value = "Fake connection" - _execute_module.return_value = "Fake execution" - lxca_nodes.main() - out, err = capfd.readouterr() - results = json.loads(out) - assert results['failed'] - assert 'missing required arguments' in results['msg'] - - @mock.patch("ansible.module_utils.remote_management.lxca.common.setup_conn", autospec=True) - @mock.patch("ansible.modules.remote_management.lxca.lxca_nodes.execute_module", autospec=True) - @mock.patch("ansible.modules.remote_management.lxca.lxca_nodes.AnsibleModule", autospec=True) - def test__argument_spec(self, ansible_mod_cls, _execute_module, _setup_conn, setup_module): - expected_arguments_spec = dict( - login_user=dict(required=True), - login_password=dict(required=True, no_log=True), - command_options=dict(default='nodes', choices=['nodes', 'nodes_by_uuid', - 'nodes_by_chassis_uuid', - 'nodes_status_managed', - 'nodes_status_unmanaged']), - auth_url=dict(required=True), - uuid=dict(default=None), - chassis=dict(default=None), - ) - _setup_conn.return_value = "Fake connection" - _execute_module.return_value = [] - mod_obj = ansible_mod_cls.return_value - args = { - "auth_url": "https://10.243.30.195", - "login_user": "USERID", - "login_password": "password", - "command_options": "nodes", - } - mod_obj.params = args - lxca_nodes.main() - assert(mock.call(argument_spec=expected_arguments_spec, - supports_check_mode=False) == ansible_mod_cls.call_args) - - @mock.patch("ansible.module_utils.remote_management.lxca.common.setup_conn", autospec=True) - @mock.patch("ansible.modules.remote_management.lxca.lxca_nodes._nodes_by_uuid", - autospec=True) - @mock.patch("ansible.modules.remote_management.lxca.lxca_nodes.AnsibleModule", - autospec=True) - def test__nodes_empty_list(self, ansible_mod_cls, _get_nodes, _setup_conn, setup_module): - mod_obj = ansible_mod_cls.return_value - args = { - "auth_url": "https://10.243.30.195", - "login_user": "USERID", - "login_password": "password", - "uuid": "3C737AA5E31640CE949B10C129A8B01F", - "command_options": "nodes_by_uuid", - } - mod_obj.params = args - _setup_conn.return_value = "Fake connection" - empty_nodes_list = [] - _get_nodes.return_value = empty_nodes_list - ret_nodes = _get_nodes(mod_obj, args) - assert mock.call(mod_obj, mod_obj.params) == _get_nodes.call_args - assert _get_nodes.return_value == ret_nodes diff --git a/test/units/modules/remote_management/oneview/hpe_test_utils.py b/test/units/modules/remote_management/oneview/hpe_test_utils.py deleted file mode 100644 index d6660b6b13..0000000000 --- a/test/units/modules/remote_management/oneview/hpe_test_utils.py +++ /dev/null @@ -1,214 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (2016-2017) Hewlett Packard Enterprise Development LP -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -import pytest -import re -import yaml - -from mock import Mock, patch -from oneview_module_loader import ONEVIEW_MODULE_UTILS_PATH -from hpOneView.oneview_client import OneViewClient - - -class OneViewBaseTest(object): - @pytest.fixture(autouse=True) - def setUp(self, mock_ansible_module, mock_ov_client, request): - marker = request.node.get_marker('resource') - self.resource = getattr(mock_ov_client, "%s" % (marker.args)) - self.mock_ov_client = mock_ov_client - self.mock_ansible_module = mock_ansible_module - - @pytest.fixture - def testing_module(self): - resource_name = type(self).__name__.replace('Test', '') - resource_module_path_name = resource_name.replace('Module', '') - resource_module_path_name = re.findall('[A-Z][^A-Z]*', resource_module_path_name) - resource_module_path_name = 'oneview_' + str.join('_', resource_module_path_name).lower() - - ansible = __import__('ansible') - oneview_module = ansible.modules.remote_management.oneview - resource_module = getattr(oneview_module, resource_module_path_name) - self.testing_class = getattr(resource_module, resource_name) - testing_module = self.testing_class.__module__.split('.')[-1] - testing_module = getattr(oneview_module, testing_module) - try: - # Load scenarios from module examples (Also checks if it is a valid yaml) - EXAMPLES = yaml.load(testing_module.EXAMPLES, yaml.SafeLoader) - - except yaml.scanner.ScannerError: - message = "Something went wrong while parsing yaml from {0}.EXAMPLES".format(self.testing_class.__module__) - raise Exception(message) - return testing_module - - def test_main_function_should_call_run_method(self, testing_module, mock_ansible_module): - mock_ansible_module.params = {'config': 'config.json'} - - main_func = getattr(testing_module, 'main') - - with patch.object(self.testing_class, "run") as mock_run: - main_func() - mock_run.assert_called_once() - - -class FactsParamsTest(OneViewBaseTest): - def test_should_get_all_using_filters(self, testing_module): - self.resource.get_all.return_value = [] - - params_get_all_with_filters = dict( - config='config.json', - name=None, - params={ - 'start': 1, - 'count': 3, - 'sort': 'name:descending', - 'filter': 'purpose=General', - 'query': 'imported eq true' - }) - self.mock_ansible_module.params = params_get_all_with_filters - - self.testing_class().run() - - self.resource.get_all.assert_called_once_with(start=1, count=3, sort='name:descending', filter='purpose=General', query='imported eq true') - - def test_should_get_all_without_params(self, testing_module): - self.resource.get_all.return_value = [] - - params_get_all_with_filters = dict( - config='config.json', - name=None - ) - self.mock_ansible_module.params = params_get_all_with_filters - - self.testing_class().run() - - self.resource.get_all.assert_called_once_with() - - -class OneViewBaseTestCase(object): - mock_ov_client_from_json_file = None - testing_class = None - mock_ansible_module = None - mock_ov_client = None - testing_module = None - EXAMPLES = None - - def configure_mocks(self, test_case, testing_class): - """ - Preload mocked OneViewClient instance and AnsibleModule - Args: - test_case (object): class instance (self) that are inheriting from OneViewBaseTestCase - testing_class (object): class being tested - """ - self.testing_class = testing_class - - # Define OneView Client Mock (FILE) - patcher_json_file = patch.object(OneViewClient, 'from_json_file') - test_case.addCleanup(patcher_json_file.stop) - self.mock_ov_client_from_json_file = patcher_json_file.start() - - # Define OneView Client Mock - self.mock_ov_client = self.mock_ov_client_from_json_file.return_value - - # Define Ansible Module Mock - patcher_ansible = patch(ONEVIEW_MODULE_UTILS_PATH + '.AnsibleModule') - test_case.addCleanup(patcher_ansible.stop) - mock_ansible_module = patcher_ansible.start() - self.mock_ansible_module = Mock() - mock_ansible_module.return_value = self.mock_ansible_module - - self.__set_module_examples() - - def test_main_function_should_call_run_method(self): - self.mock_ansible_module.params = {'config': 'config.json'} - - main_func = getattr(self.testing_module, 'main') - - with patch.object(self.testing_class, "run") as mock_run: - main_func() - mock_run.assert_called_once() - - def __set_module_examples(self): - # Load scenarios from module examples (Also checks if it is a valid yaml) - ansible = __import__('ansible') - testing_module = self.testing_class.__module__.split('.')[-1] - self.testing_module = getattr(ansible.modules.remote_management.oneview, testing_module) - - try: - # Load scenarios from module examples (Also checks if it is a valid yaml) - self.EXAMPLES = yaml.load(self.testing_module.EXAMPLES, yaml.SafeLoader) - - except yaml.scanner.ScannerError: - message = "Something went wrong while parsing yaml from {0}.EXAMPLES".format(self.testing_class.__module__) - raise Exception(message) - - -class FactsParamsTestCase(OneViewBaseTestCase): - """ - FactsParamsTestCase has common test for classes that support pass additional - parameters when retrieving all resources. - """ - - def configure_client_mock(self, resorce_client): - """ - Args: - resorce_client: Resource client that is being called - """ - self.resource_client = resorce_client - - def __validations(self): - if not self.testing_class: - raise Exception("Mocks are not configured, you must call 'configure_mocks' before running this test.") - - if not self.resource_client: - raise Exception( - "Mock for the client not configured, you must call 'configure_client_mock' before running this test.") - - def test_should_get_all_using_filters(self): - self.__validations() - self.resource_client.get_all.return_value = [] - - params_get_all_with_filters = dict( - config='config.json', - name=None, - params={ - 'start': 1, - 'count': 3, - 'sort': 'name:descending', - 'filter': 'purpose=General', - 'query': 'imported eq true' - }) - self.mock_ansible_module.params = params_get_all_with_filters - - self.testing_class().run() - - self.resource_client.get_all.assert_called_once_with(start=1, count=3, sort='name:descending', - filter='purpose=General', - query='imported eq true') - - def test_should_get_all_without_params(self): - self.__validations() - self.resource_client.get_all.return_value = [] - - params_get_all_with_filters = dict( - config='config.json', - name=None - ) - self.mock_ansible_module.params = params_get_all_with_filters - - self.testing_class().run() - - self.resource_client.get_all.assert_called_once_with() diff --git a/test/units/modules/remote_management/oneview/oneview_module_loader.py b/test/units/modules/remote_management/oneview/oneview_module_loader.py deleted file mode 100644 index 5e7eb498d6..0000000000 --- a/test/units/modules/remote_management/oneview/oneview_module_loader.py +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright (c) 2016-2017 Hewlett Packard Enterprise Development LP -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -import sys -from units.compat.mock import Mock - -# FIXME: These should be done inside of a fixture so that they're only mocked during -# these unittests -sys.modules['hpOneView'] = Mock() -sys.modules['hpOneView.oneview_client'] = Mock() - -ONEVIEW_MODULE_UTILS_PATH = 'ansible.module_utils.oneview' -from ansible.module_utils.oneview import (OneViewModuleException, - OneViewModuleTaskError, - OneViewModuleResourceNotFound, - OneViewModuleBase) - -from ansible.modules.remote_management.oneview.oneview_ethernet_network import EthernetNetworkModule -from ansible.modules.remote_management.oneview.oneview_ethernet_network_info import EthernetNetworkInfoModule -from ansible.modules.remote_management.oneview.oneview_fc_network import FcNetworkModule -from ansible.modules.remote_management.oneview.oneview_fc_network_info import FcNetworkInfoModule -from ansible.modules.remote_management.oneview.oneview_fcoe_network import FcoeNetworkModule -from ansible.modules.remote_management.oneview.oneview_fcoe_network_info import FcoeNetworkInfoModule -from ansible.modules.remote_management.oneview.oneview_network_set import NetworkSetModule -from ansible.modules.remote_management.oneview.oneview_network_set_info import NetworkSetInfoModule -from ansible.modules.remote_management.oneview.oneview_san_manager import SanManagerModule -from ansible.modules.remote_management.oneview.oneview_san_manager_info import SanManagerInfoModule diff --git a/test/units/modules/remote_management/oneview/test_oneview_datacenter_info.py b/test/units/modules/remote_management/oneview/test_oneview_datacenter_info.py deleted file mode 100644 index 9e538d962c..0000000000 --- a/test/units/modules/remote_management/oneview/test_oneview_datacenter_info.py +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright (c) 2016-2017 Hewlett Packard Enterprise Development LP -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -import pytest - -from ansible.modules.remote_management.oneview.oneview_datacenter_info import DatacenterInfoModule -from hpe_test_utils import FactsParamsTest - -PARAMS_GET_CONNECTED = dict( - config='config.json', - name="MyDatacenter", - options=['visualContent'] -) - - -class TestDatacenterInfoModule(FactsParamsTest): - @pytest.fixture(autouse=True) - def setUp(self, mock_ansible_module, mock_ov_client): - self.resource = mock_ov_client.datacenters - self.mock_ansible_module = mock_ansible_module - self.mock_ov_client = mock_ov_client - - def test_should_get_all_datacenters(self): - self.resource.get_all.return_value = {"name": "Data Center Name"} - - self.mock_ansible_module.params = dict(config='config.json',) - - DatacenterInfoModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - datacenters=({"name": "Data Center Name"}) - ) - - def test_should_get_datacenter_by_name(self): - self.resource.get_by.return_value = [{"name": "Data Center Name"}] - - self.mock_ansible_module.params = dict(config='config.json', name="MyDatacenter") - - DatacenterInfoModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - datacenters=([{"name": "Data Center Name"}]) - ) - - def test_should_get_datacenter_visual_content(self): - self.resource.get_by.return_value = [{"name": "Data Center Name", "uri": "/rest/datacenter/id"}] - - self.resource.get_visual_content.return_value = { - "name": "Visual Content"} - - self.mock_ansible_module.params = PARAMS_GET_CONNECTED - - DatacenterInfoModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - datacenter_visual_content={'name': 'Visual Content'}, - datacenters=[{'name': 'Data Center Name', 'uri': '/rest/datacenter/id'}] - ) - - def test_should_get_none_datacenter_visual_content(self): - self.resource.get_by.return_value = [] - - self.mock_ansible_module.params = PARAMS_GET_CONNECTED - - DatacenterInfoModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - datacenter_visual_content=None, - datacenters=[] - ) diff --git a/test/units/modules/remote_management/oneview/test_oneview_enclosure_info.py b/test/units/modules/remote_management/oneview/test_oneview_enclosure_info.py deleted file mode 100644 index f3100e6e89..0000000000 --- a/test/units/modules/remote_management/oneview/test_oneview_enclosure_info.py +++ /dev/null @@ -1,132 +0,0 @@ -# Copyright (c) 2016-2017 Hewlett Packard Enterprise Development LP -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from units.compat import unittest -from ansible.modules.remote_management.oneview.oneview_enclosure_info import EnclosureInfoModule -from hpe_test_utils import FactsParamsTestCase - - -ERROR_MSG = 'Fake message error' - -PARAMS_GET_ALL = dict( - config='config.json', - name=None -) - -PARAMS_GET_BY_NAME = dict( - config='config.json', - name="Test-Enclosure", - options=[] -) - -PARAMS_GET_BY_NAME_WITH_OPTIONS = dict( - config='config.json', - name="Test-Enclosure", - options=['utilization', 'environmentalConfiguration', 'script'] -) - -PARAMS_GET_UTILIZATION_WITH_PARAMS = dict( - config='config.json', - name="Test-Enclosure", - options=[dict(utilization=dict(fields='AveragePower', - filter=['startDate=2016-06-30T03:29:42.000Z', - 'endDate=2016-07-01T03:29:42.000Z'], - view='day', - refresh=True))] -) - -PRESENT_ENCLOSURES = [{ - "name": "Test-Enclosure", - "uri": "/rest/enclosures/c6bf9af9-48e7-4236-b08a-77684dc258a5" -}] - -ENCLOSURE_SCRIPT = '# script content' - -ENCLOSURE_UTILIZATION = { - "isFresh": "True" -} - -ENCLOSURE_ENVIRONMENTAL_CONFIG = { - "calibratedMaxPower": "2500" -} - - -class EnclosureInfoSpec(unittest.TestCase, - FactsParamsTestCase): - def setUp(self): - self.configure_mocks(self, EnclosureInfoModule) - self.enclosures = self.mock_ov_client.enclosures - FactsParamsTestCase.configure_client_mock(self, self.enclosures) - - def test_should_get_all_enclosures(self): - self.enclosures.get_all.return_value = PRESENT_ENCLOSURES - self.mock_ansible_module.params = PARAMS_GET_ALL - - EnclosureInfoModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - enclosures=(PRESENT_ENCLOSURES) - ) - - def test_should_get_enclosure_by_name(self): - self.enclosures.get_by.return_value = PRESENT_ENCLOSURES - self.mock_ansible_module.params = PARAMS_GET_BY_NAME - - EnclosureInfoModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - enclosures=(PRESENT_ENCLOSURES) - - ) - - def test_should_get_enclosure_by_name_with_options(self): - self.enclosures.get_by.return_value = PRESENT_ENCLOSURES - self.enclosures.get_script.return_value = ENCLOSURE_SCRIPT - self.enclosures.get_utilization.return_value = ENCLOSURE_UTILIZATION - self.enclosures.get_environmental_configuration.return_value = ENCLOSURE_ENVIRONMENTAL_CONFIG - - self.mock_ansible_module.params = PARAMS_GET_BY_NAME_WITH_OPTIONS - - EnclosureInfoModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - enclosures=PRESENT_ENCLOSURES, - enclosure_script=ENCLOSURE_SCRIPT, - enclosure_environmental_configuration=ENCLOSURE_ENVIRONMENTAL_CONFIG, - enclosure_utilization=ENCLOSURE_UTILIZATION - ) - - def test_should_get_all_utilization_data(self): - self.enclosures.get_by.return_value = PRESENT_ENCLOSURES - self.enclosures.get_script.return_value = ENCLOSURE_SCRIPT - self.enclosures.get_utilization.return_value = ENCLOSURE_UTILIZATION - self.enclosures.get_environmental_configuration.return_value = ENCLOSURE_ENVIRONMENTAL_CONFIG - - self.mock_ansible_module.params = PARAMS_GET_BY_NAME_WITH_OPTIONS - - EnclosureInfoModule().run() - - self.enclosures.get_utilization.assert_called_once_with(PRESENT_ENCLOSURES[0]['uri'], fields='', filter='', - view='', refresh='') - - def test_should_get_utilization_with_parameters(self): - self.enclosures.get_by.return_value = PRESENT_ENCLOSURES - self.enclosures.get_script.return_value = ENCLOSURE_SCRIPT - self.enclosures.get_utilization.return_value = ENCLOSURE_UTILIZATION - self.enclosures.get_environmental_configuration.return_value = ENCLOSURE_ENVIRONMENTAL_CONFIG - - self.mock_ansible_module.params = PARAMS_GET_UTILIZATION_WITH_PARAMS - - EnclosureInfoModule().run() - - date_filter = ["startDate=2016-06-30T03:29:42.000Z", "endDate=2016-07-01T03:29:42.000Z"] - - self.enclosures.get_utilization.assert_called_once_with( - PRESENT_ENCLOSURES[0]['uri'], fields='AveragePower', filter=date_filter, view='day', refresh=True) - - -if __name__ == '__main__': - unittest.main() diff --git a/test/units/modules/remote_management/oneview/test_oneview_ethernet_network.py b/test/units/modules/remote_management/oneview/test_oneview_ethernet_network.py deleted file mode 100644 index fa89e22f08..0000000000 --- a/test/units/modules/remote_management/oneview/test_oneview_ethernet_network.py +++ /dev/null @@ -1,400 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (2016-2017) Hewlett Packard Enterprise Development LP -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -import yaml - -from units.compat import unittest, mock -from oneview_module_loader import EthernetNetworkModule -from hpe_test_utils import OneViewBaseTestCase - -FAKE_MSG_ERROR = 'Fake message error' -DEFAULT_ETHERNET_NAME = 'Test Ethernet Network' -RENAMED_ETHERNET = 'Renamed Ethernet Network' - -DEFAULT_ENET_TEMPLATE = dict( - name=DEFAULT_ETHERNET_NAME, - vlanId=200, - ethernetNetworkType="Tagged", - purpose="General", - smartLink=False, - privateNetwork=False, - connectionTemplateUri=None -) - -PARAMS_FOR_PRESENT = dict( - config='config.json', - state='present', - data=dict(name=DEFAULT_ETHERNET_NAME) -) - -PARAMS_TO_RENAME = dict( - config='config.json', - state='present', - data=dict(name=DEFAULT_ETHERNET_NAME, - newName=RENAMED_ETHERNET) -) - -YAML_PARAMS_WITH_CHANGES = """ - config: "config.json" - state: present - data: - name: 'Test Ethernet Network' - purpose: Management - connectionTemplateUri: ~ - bandwidth: - maximumBandwidth: 3000 - typicalBandwidth: 2000 -""" - -YAML_RESET_CONNECTION_TEMPLATE = """ - config: "{{ config }}" - state: default_bandwidth_reset - data: - name: 'network name' -""" - -PARAMS_FOR_SCOPES_SET = dict( - config='config.json', - state='present', - data=dict(name=DEFAULT_ETHERNET_NAME) -) - -PARAMS_FOR_ABSENT = dict( - config='config.json', - state='absent', - data=dict(name=DEFAULT_ETHERNET_NAME) -) - -PARAMS_FOR_BULK_CREATED = dict( - config='config.json', - state='present', - data=dict(namePrefix="TestNetwork", vlanIdRange="1-2,5,9-10") -) - -DEFAULT_BULK_ENET_TEMPLATE = [ - {'name': 'TestNetwork_1', 'vlanId': 1}, - {'name': 'TestNetwork_2', 'vlanId': 2}, - {'name': 'TestNetwork_5', 'vlanId': 5}, - {'name': 'TestNetwork_9', 'vlanId': 9}, - {'name': 'TestNetwork_10', 'vlanId': 10}, -] - -DICT_PARAMS_WITH_CHANGES = yaml.safe_load(YAML_PARAMS_WITH_CHANGES)["data"] - - -class EthernetNetworkModuleSpec(unittest.TestCase, - OneViewBaseTestCase): - """ - OneViewBaseTestCase provides the mocks used in this test case - """ - - def setUp(self): - self.configure_mocks(self, EthernetNetworkModule) - self.resource = self.mock_ov_client.ethernet_networks - - def test_should_create_new_ethernet_network(self): - self.resource.get_by.return_value = [] - self.resource.create.return_value = DEFAULT_ENET_TEMPLATE - - self.mock_ansible_module.params = PARAMS_FOR_PRESENT - - EthernetNetworkModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=EthernetNetworkModule.MSG_CREATED, - ansible_facts=dict(ethernet_network=DEFAULT_ENET_TEMPLATE) - ) - - def test_should_not_update_when_data_is_equals(self): - self.resource.get_by.return_value = [DEFAULT_ENET_TEMPLATE] - - self.mock_ansible_module.params = PARAMS_FOR_PRESENT - - EthernetNetworkModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - msg=EthernetNetworkModule.MSG_ALREADY_PRESENT, - ansible_facts=dict(ethernet_network=DEFAULT_ENET_TEMPLATE) - ) - - def test_update_when_data_has_modified_attributes(self): - data_merged = DEFAULT_ENET_TEMPLATE.copy() - data_merged['purpose'] = 'Management' - - self.resource.get_by.return_value = [DEFAULT_ENET_TEMPLATE] - self.resource.update.return_value = data_merged - self.mock_ov_client.connection_templates.get.return_value = {"uri": "uri"} - - self.mock_ansible_module.params = yaml.load(YAML_PARAMS_WITH_CHANGES) - - EthernetNetworkModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=EthernetNetworkModule.MSG_UPDATED, - ansible_facts=dict(ethernet_network=data_merged) - ) - - def test_update_when_only_bandwidth_has_modified_attributes(self): - self.resource.get_by.return_value = [DICT_PARAMS_WITH_CHANGES] - self.mock_ov_client.connection_templates.get.return_value = {"uri": "uri"} - - self.mock_ansible_module.params = yaml.load(YAML_PARAMS_WITH_CHANGES) - - EthernetNetworkModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=EthernetNetworkModule.MSG_UPDATED, - ansible_facts=dict(ethernet_network=DICT_PARAMS_WITH_CHANGES) - ) - - def test_update_when_data_has_modified_attributes_but_bandwidth_is_equal(self): - data_merged = DEFAULT_ENET_TEMPLATE.copy() - data_merged['purpose'] = 'Management' - - self.resource.get_by.return_value = [DEFAULT_ENET_TEMPLATE] - self.resource.update.return_value = data_merged - self.mock_ov_client.connection_templates.get.return_value = { - "bandwidth": DICT_PARAMS_WITH_CHANGES['bandwidth']} - - self.mock_ansible_module.params = yaml.load(YAML_PARAMS_WITH_CHANGES) - - EthernetNetworkModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=EthernetNetworkModule.MSG_UPDATED, - ansible_facts=dict(ethernet_network=data_merged) - ) - - def test_update_successfully_even_when_connection_template_uri_not_exists(self): - data_merged = DEFAULT_ENET_TEMPLATE.copy() - del data_merged['connectionTemplateUri'] - - self.resource.get_by.return_value = [DEFAULT_ENET_TEMPLATE] - self.resource.update.return_value = data_merged - - self.mock_ansible_module.params = yaml.load(YAML_PARAMS_WITH_CHANGES) - - EthernetNetworkModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=EthernetNetworkModule.MSG_UPDATED, - ansible_facts=dict(ethernet_network=data_merged) - ) - - def test_rename_when_resource_exists(self): - data_merged = DEFAULT_ENET_TEMPLATE.copy() - data_merged['name'] = RENAMED_ETHERNET - params_to_rename = PARAMS_TO_RENAME.copy() - - self.resource.get_by.return_value = [DEFAULT_ENET_TEMPLATE] - self.resource.update.return_value = data_merged - - self.mock_ansible_module.params = params_to_rename - - EthernetNetworkModule().run() - - self.resource.update.assert_called_once_with(data_merged) - - def test_create_with_new_name_when_resource_not_exists(self): - data_merged = DEFAULT_ENET_TEMPLATE.copy() - data_merged['name'] = RENAMED_ETHERNET - params_to_rename = PARAMS_TO_RENAME.copy() - - self.resource.get_by.return_value = [] - self.resource.create.return_value = DEFAULT_ENET_TEMPLATE - - self.mock_ansible_module.params = params_to_rename - - EthernetNetworkModule().run() - - self.resource.create.assert_called_once_with(PARAMS_TO_RENAME['data']) - - def test_should_remove_ethernet_network(self): - self.resource.get_by.return_value = [DEFAULT_ENET_TEMPLATE] - - self.mock_ansible_module.params = PARAMS_FOR_ABSENT - - EthernetNetworkModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=EthernetNetworkModule.MSG_DELETED - ) - - def test_should_do_nothing_when_ethernet_network_not_exist(self): - self.resource.get_by.return_value = [] - - self.mock_ansible_module.params = PARAMS_FOR_ABSENT - - EthernetNetworkModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - msg=EthernetNetworkModule.MSG_ALREADY_ABSENT - ) - - def test_should_create_all_ethernet_networks(self): - self.resource.get_range.side_effect = [[], DEFAULT_BULK_ENET_TEMPLATE] - self.resource.create_bulk.return_value = DEFAULT_BULK_ENET_TEMPLATE - - self.mock_ansible_module.params = PARAMS_FOR_BULK_CREATED - - EthernetNetworkModule().run() - - self.resource.create_bulk.assert_called_once_with( - dict(namePrefix="TestNetwork", vlanIdRange="1-2,5,9-10")) - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=EthernetNetworkModule.MSG_BULK_CREATED, - ansible_facts=dict(ethernet_network_bulk=DEFAULT_BULK_ENET_TEMPLATE)) - - def test_should_create_missing_ethernet_networks(self): - enet_get_range_return = [ - {'name': 'TestNetwork_1', 'vlanId': 1}, - {'name': 'TestNetwork_2', 'vlanId': 2}, - ] - - self.resource.get_range.side_effect = [enet_get_range_return, DEFAULT_BULK_ENET_TEMPLATE] - self.resource.dissociate_values_or_ranges.return_value = [1, 2, 5, 9, 10] - - self.mock_ansible_module.params = PARAMS_FOR_BULK_CREATED - - EthernetNetworkModule().run() - - self.resource.create_bulk.assert_called_once_with( - dict(namePrefix="TestNetwork", vlanIdRange="5,9,10")) - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, msg=EthernetNetworkModule.MSG_MISSING_BULK_CREATED, - ansible_facts=dict(ethernet_network_bulk=DEFAULT_BULK_ENET_TEMPLATE)) - - def test_should_create_missing_ethernet_networks_with_just_one_difference(self): - enet_get_range_return = [ - {'name': 'TestNetwork_1', 'vlanId': 1}, - {'name': 'TestNetwork_2', 'vlanId': 2}, - ] - - self.resource.get_range.side_effect = [enet_get_range_return, DEFAULT_BULK_ENET_TEMPLATE] - self.resource.dissociate_values_or_ranges.return_value = [1, 2, 5] - - self.mock_ansible_module.params = PARAMS_FOR_BULK_CREATED - - EthernetNetworkModule().run() - - self.resource.create_bulk.assert_called_once_with({'vlanIdRange': '5-5', 'namePrefix': 'TestNetwork'}) - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=EthernetNetworkModule.MSG_MISSING_BULK_CREATED, - ansible_facts=dict(ethernet_network_bulk=DEFAULT_BULK_ENET_TEMPLATE)) - - def test_should_do_nothing_when_ethernet_networks_already_exist(self): - self.resource.get_range.return_value = DEFAULT_BULK_ENET_TEMPLATE - self.resource.dissociate_values_or_ranges.return_value = [1, 2, 5, 9, 10] - - self.mock_ansible_module.params = PARAMS_FOR_BULK_CREATED - - EthernetNetworkModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, msg=EthernetNetworkModule.MSG_BULK_ALREADY_EXIST, - ansible_facts=dict(ethernet_network_bulk=DEFAULT_BULK_ENET_TEMPLATE)) - - def test_reset_successfully(self): - self.resource.get_by.return_value = [DICT_PARAMS_WITH_CHANGES] - self.mock_ov_client.connection_templates.update.return_value = {'result': 'success'} - self.mock_ov_client.connection_templates.get.return_value = { - "bandwidth": DICT_PARAMS_WITH_CHANGES['bandwidth']} - - self.mock_ov_client.connection_templates.get_default.return_value = {"bandwidth": { - "max": 1 - }} - - self.mock_ansible_module.params = yaml.load(YAML_RESET_CONNECTION_TEMPLATE) - - EthernetNetworkModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, msg=EthernetNetworkModule.MSG_CONNECTION_TEMPLATE_RESET, - ansible_facts=dict(ethernet_network_connection_template={'result': 'success'})) - - def test_should_fail_when_reset_not_existing_ethernet_network(self): - self.resource.get_by.return_value = [None] - - self.mock_ansible_module.params = yaml.load(YAML_RESET_CONNECTION_TEMPLATE) - - EthernetNetworkModule().run() - - self.mock_ansible_module.fail_json.assert_called_once_with( - exception=mock.ANY, - msg=EthernetNetworkModule.MSG_ETHERNET_NETWORK_NOT_FOUND - ) - - def test_update_scopes_when_different(self): - params_to_scope = PARAMS_FOR_PRESENT.copy() - params_to_scope['data']['scopeUris'] = ['test'] - self.mock_ansible_module.params = params_to_scope - - resource_data = DEFAULT_ENET_TEMPLATE.copy() - resource_data['scopeUris'] = ['fake'] - resource_data['uri'] = 'rest/ethernet/fake' - self.resource.get_by.return_value = [resource_data] - - patch_return = resource_data.copy() - patch_return['scopeUris'] = ['test'] - self.resource.patch.return_value = patch_return - - EthernetNetworkModule().run() - - self.resource.patch.assert_called_once_with('rest/ethernet/fake', - operation='replace', - path='/scopeUris', - value=['test']) - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - ansible_facts=dict(ethernet_network=patch_return), - msg=EthernetNetworkModule.MSG_UPDATED - ) - - def test_should_do_nothing_when_scopes_are_the_same(self): - params_to_scope = PARAMS_FOR_PRESENT.copy() - params_to_scope['data']['scopeUris'] = ['test'] - self.mock_ansible_module.params = params_to_scope - - resource_data = DEFAULT_ENET_TEMPLATE.copy() - resource_data['scopeUris'] = ['test'] - self.resource.get_by.return_value = [resource_data] - - EthernetNetworkModule().run() - - self.resource.patch.not_been_called() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - ansible_facts=dict(ethernet_network=resource_data), - msg=EthernetNetworkModule.MSG_ALREADY_PRESENT - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/test/units/modules/remote_management/oneview/test_oneview_ethernet_network_info.py b/test/units/modules/remote_management/oneview/test_oneview_ethernet_network_info.py deleted file mode 100644 index 6339e29773..0000000000 --- a/test/units/modules/remote_management/oneview/test_oneview_ethernet_network_info.py +++ /dev/null @@ -1,100 +0,0 @@ -# Copyright (c) 2016-2017 Hewlett Packard Enterprise Development LP -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from units.compat import unittest - -from oneview_module_loader import EthernetNetworkInfoModule -from hpe_test_utils import FactsParamsTestCase - -ERROR_MSG = 'Fake message error' - -PARAMS_GET_ALL = dict( - config='config.json', - name=None -) - -PARAMS_GET_BY_NAME = dict( - config='config.json', - name="Test Ethernet Network", - options=[] -) - -PARAMS_GET_BY_NAME_WITH_OPTIONS = dict( - config='config.json', - name="Test Ethernet Network", - options=['associatedProfiles', 'associatedUplinkGroups'] -) - -PRESENT_ENETS = [{ - "name": "Test Ethernet Network", - "uri": "/rest/ethernet-networks/d34dcf5e-0d8e-441c-b00d-e1dd6a067188" -}] - -ENET_ASSOCIATED_UPLINK_GROUP_URIS = [ - "/rest/uplink-sets/c6bf9af9-48e7-4236-b08a-77684dc258a5", - "/rest/uplink-sets/e2f0031b-52bd-4223-9ac1-d91cb519d548" -] - -ENET_ASSOCIATED_PROFILE_URIS = [ - "/rest/server-profiles/83e2e117-59dc-4e33-9f24-462af951cbbe", - "/rest/server-profiles/57d3af2a-b6d2-4446-8645-f38dd808ea4d" -] - -ENET_ASSOCIATED_UPLINK_GROUPS = [dict(uri=ENET_ASSOCIATED_UPLINK_GROUP_URIS[0], name='Uplink Set 1'), - dict(uri=ENET_ASSOCIATED_UPLINK_GROUP_URIS[1], name='Uplink Set 2')] - -ENET_ASSOCIATED_PROFILES = [dict(uri=ENET_ASSOCIATED_PROFILE_URIS[0], name='Server Profile 1'), - dict(uri=ENET_ASSOCIATED_PROFILE_URIS[1], name='Server Profile 2')] - - -class EthernetNetworkInfoSpec(unittest.TestCase, - FactsParamsTestCase - ): - def setUp(self): - self.configure_mocks(self, EthernetNetworkInfoModule) - self.ethernet_networks = self.mock_ov_client.ethernet_networks - FactsParamsTestCase.configure_client_mock(self, self.ethernet_networks) - - def test_should_get_all_enets(self): - self.ethernet_networks.get_all.return_value = PRESENT_ENETS - self.mock_ansible_module.params = PARAMS_GET_ALL - - EthernetNetworkInfoModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - ethernet_networks=(PRESENT_ENETS) - ) - - def test_should_get_enet_by_name(self): - self.ethernet_networks.get_by.return_value = PRESENT_ENETS - self.mock_ansible_module.params = PARAMS_GET_BY_NAME - - EthernetNetworkInfoModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - ethernet_networks=(PRESENT_ENETS) - ) - - def test_should_get_enet_by_name_with_options(self): - self.ethernet_networks.get_by.return_value = PRESENT_ENETS - self.ethernet_networks.get_associated_profiles.return_value = ENET_ASSOCIATED_PROFILE_URIS - self.ethernet_networks.get_associated_uplink_groups.return_value = ENET_ASSOCIATED_UPLINK_GROUP_URIS - self.mock_ov_client.server_profiles.get.side_effect = ENET_ASSOCIATED_PROFILES - self.mock_ov_client.uplink_sets.get.side_effect = ENET_ASSOCIATED_UPLINK_GROUPS - - self.mock_ansible_module.params = PARAMS_GET_BY_NAME_WITH_OPTIONS - - EthernetNetworkInfoModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - ethernet_networks=PRESENT_ENETS, - enet_associated_profiles=ENET_ASSOCIATED_PROFILES, - enet_associated_uplink_groups=ENET_ASSOCIATED_UPLINK_GROUPS - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/test/units/modules/remote_management/oneview/test_oneview_fc_network.py b/test/units/modules/remote_management/oneview/test_oneview_fc_network.py deleted file mode 100644 index ad85a5b5c4..0000000000 --- a/test/units/modules/remote_management/oneview/test_oneview_fc_network.py +++ /dev/null @@ -1,178 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (2016-2017) Hewlett Packard Enterprise Development LP -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -from units.compat import unittest -from oneview_module_loader import FcNetworkModule -from hpe_test_utils import OneViewBaseTestCase - -FAKE_MSG_ERROR = 'Fake message error' - -DEFAULT_FC_NETWORK_TEMPLATE = dict( - name='New FC Network 2', - autoLoginRedistribution=True, - fabricType='FabricAttach' -) - -PARAMS_FOR_PRESENT = dict( - config='config.json', - state='present', - data=dict(name=DEFAULT_FC_NETWORK_TEMPLATE['name']) -) - -PARAMS_WITH_CHANGES = dict( - config='config.json', - state='present', - data=dict(name=DEFAULT_FC_NETWORK_TEMPLATE['name'], - newName="New Name", - fabricType='DirectAttach') -) - -PARAMS_FOR_ABSENT = dict( - config='config.json', - state='absent', - data=dict(name=DEFAULT_FC_NETWORK_TEMPLATE['name']) -) - - -class FcNetworkModuleSpec(unittest.TestCase, - OneViewBaseTestCase): - """ - OneViewBaseTestCase provides the mocks used in this test case - """ - - def setUp(self): - self.configure_mocks(self, FcNetworkModule) - self.resource = self.mock_ov_client.fc_networks - - def test_should_create_new_fc_network(self): - self.resource.get_by.return_value = [] - self.resource.create.return_value = DEFAULT_FC_NETWORK_TEMPLATE - - self.mock_ansible_module.params = PARAMS_FOR_PRESENT - - FcNetworkModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=FcNetworkModule.MSG_CREATED, - ansible_facts=dict(fc_network=DEFAULT_FC_NETWORK_TEMPLATE) - ) - - def test_should_not_update_when_data_is_equals(self): - self.resource.get_by.return_value = [DEFAULT_FC_NETWORK_TEMPLATE] - - self.mock_ansible_module.params = PARAMS_FOR_PRESENT - - FcNetworkModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - msg=FcNetworkModule.MSG_ALREADY_PRESENT, - ansible_facts=dict(fc_network=DEFAULT_FC_NETWORK_TEMPLATE) - ) - - def test_update_when_data_has_modified_attributes(self): - data_merged = DEFAULT_FC_NETWORK_TEMPLATE.copy() - - data_merged['fabricType'] = 'DirectAttach' - - self.resource.get_by.return_value = [DEFAULT_FC_NETWORK_TEMPLATE] - self.resource.update.return_value = data_merged - - self.mock_ansible_module.params = PARAMS_WITH_CHANGES - - FcNetworkModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=FcNetworkModule.MSG_UPDATED, - ansible_facts=dict(fc_network=data_merged) - ) - - def test_should_remove_fc_network(self): - self.resource.get_by.return_value = [DEFAULT_FC_NETWORK_TEMPLATE] - - self.mock_ansible_module.params = PARAMS_FOR_ABSENT - - FcNetworkModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=FcNetworkModule.MSG_DELETED - ) - - def test_should_do_nothing_when_fc_network_not_exist(self): - self.resource.get_by.return_value = [] - - self.mock_ansible_module.params = PARAMS_FOR_ABSENT - - FcNetworkModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - msg=FcNetworkModule.MSG_ALREADY_ABSENT - ) - - def test_update_scopes_when_different(self): - params_to_scope = PARAMS_FOR_PRESENT.copy() - params_to_scope['data']['scopeUris'] = ['test'] - self.mock_ansible_module.params = params_to_scope - - resource_data = DEFAULT_FC_NETWORK_TEMPLATE.copy() - resource_data['scopeUris'] = ['fake'] - resource_data['uri'] = 'rest/fc/fake' - self.resource.get_by.return_value = [resource_data] - - patch_return = resource_data.copy() - patch_return['scopeUris'] = ['test'] - self.resource.patch.return_value = patch_return - - FcNetworkModule().run() - - self.resource.patch.assert_called_once_with('rest/fc/fake', - operation='replace', - path='/scopeUris', - value=['test']) - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - ansible_facts=dict(fc_network=patch_return), - msg=FcNetworkModule.MSG_UPDATED - ) - - def test_should_do_nothing_when_scopes_are_the_same(self): - params_to_scope = PARAMS_FOR_PRESENT.copy() - params_to_scope['data']['scopeUris'] = ['test'] - self.mock_ansible_module.params = params_to_scope - - resource_data = DEFAULT_FC_NETWORK_TEMPLATE.copy() - resource_data['scopeUris'] = ['test'] - self.resource.get_by.return_value = [resource_data] - - FcNetworkModule().run() - - self.resource.patch.not_been_called() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - ansible_facts=dict(fc_network=resource_data), - msg=FcNetworkModule.MSG_ALREADY_PRESENT - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/test/units/modules/remote_management/oneview/test_oneview_fc_network_info.py b/test/units/modules/remote_management/oneview/test_oneview_fc_network_info.py deleted file mode 100644 index e0318d98ad..0000000000 --- a/test/units/modules/remote_management/oneview/test_oneview_fc_network_info.py +++ /dev/null @@ -1,57 +0,0 @@ -# Copyright (c) 2016-2017 Hewlett Packard Enterprise Development LP -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from units.compat import unittest -from oneview_module_loader import FcNetworkInfoModule -from hpe_test_utils import FactsParamsTestCase - -ERROR_MSG = 'Fake message error' - -PARAMS_GET_ALL = dict( - config='config.json', - name=None -) - -PARAMS_GET_BY_NAME = dict( - config='config.json', - name="Test FC Network" -) - -PRESENT_NETWORKS = [{ - "name": "Test FC Network", - "uri": "/rest/fc-networks/c6bf9af9-48e7-4236-b08a-77684dc258a5" -}] - - -class FcNetworkInfoSpec(unittest.TestCase, - FactsParamsTestCase): - def setUp(self): - self.configure_mocks(self, FcNetworkInfoModule) - self.fc_networks = self.mock_ov_client.fc_networks - FactsParamsTestCase.configure_client_mock(self, self.fc_networks) - - def test_should_get_all_fc_networks(self): - self.fc_networks.get_all.return_value = PRESENT_NETWORKS - self.mock_ansible_module.params = PARAMS_GET_ALL - - FcNetworkInfoModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - fc_networks=PRESENT_NETWORKS - ) - - def test_should_get_fc_network_by_name(self): - self.fc_networks.get_by.return_value = PRESENT_NETWORKS - self.mock_ansible_module.params = PARAMS_GET_BY_NAME - - FcNetworkInfoModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - fc_networks=PRESENT_NETWORKS - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/test/units/modules/remote_management/oneview/test_oneview_fcoe_network.py b/test/units/modules/remote_management/oneview/test_oneview_fcoe_network.py deleted file mode 100644 index 98ace0e866..0000000000 --- a/test/units/modules/remote_management/oneview/test_oneview_fcoe_network.py +++ /dev/null @@ -1,176 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (2016-2017) Hewlett Packard Enterprise Development LP -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -from units.compat import unittest -from oneview_module_loader import FcoeNetworkModule -from hpe_test_utils import OneViewBaseTestCase - -FAKE_MSG_ERROR = 'Fake message error' - -DEFAULT_FCOE_NETWORK_TEMPLATE = dict( - name='New FCoE Network 2', - vlanId="201", - connectionTemplateUri=None -) - -PARAMS_FOR_PRESENT = dict( - config='config.json', - state='present', - data=dict(name=DEFAULT_FCOE_NETWORK_TEMPLATE['name']) -) - -PARAMS_WITH_CHANGES = dict( - config='config.json', - state='present', - data=dict(name=DEFAULT_FCOE_NETWORK_TEMPLATE['name'], - fabricType='DirectAttach', - newName='New Name') -) - -PARAMS_FOR_ABSENT = dict( - config='config.json', - state='absent', - data=dict(name=DEFAULT_FCOE_NETWORK_TEMPLATE['name']) -) - - -class FcoeNetworkSpec(unittest.TestCase, - OneViewBaseTestCase): - """ - OneViewBaseTestCase provides the mocks used in this test case - """ - - def setUp(self): - self.configure_mocks(self, FcoeNetworkModule) - self.resource = self.mock_ov_client.fcoe_networks - - def test_should_create_new_fcoe_network(self): - self.resource.get_by.return_value = [] - self.resource.create.return_value = DEFAULT_FCOE_NETWORK_TEMPLATE - - self.mock_ansible_module.params = PARAMS_FOR_PRESENT - - FcoeNetworkModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=FcoeNetworkModule.MSG_CREATED, - ansible_facts=dict(fcoe_network=DEFAULT_FCOE_NETWORK_TEMPLATE) - ) - - def test_should_not_update_when_data_is_equals(self): - self.resource.get_by.return_value = [DEFAULT_FCOE_NETWORK_TEMPLATE] - self.mock_ansible_module.params = PARAMS_FOR_PRESENT.copy() - - FcoeNetworkModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - msg=FcoeNetworkModule.MSG_ALREADY_PRESENT, - ansible_facts=dict(fcoe_network=DEFAULT_FCOE_NETWORK_TEMPLATE) - ) - - def test_update_when_data_has_modified_attributes(self): - data_merged = DEFAULT_FCOE_NETWORK_TEMPLATE.copy() - data_merged['fabricType'] = 'DirectAttach' - - self.resource.get_by.return_value = [DEFAULT_FCOE_NETWORK_TEMPLATE] - self.resource.update.return_value = data_merged - - self.mock_ansible_module.params = PARAMS_WITH_CHANGES - - FcoeNetworkModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=FcoeNetworkModule.MSG_UPDATED, - ansible_facts=dict(fcoe_network=data_merged) - ) - - def test_should_remove_fcoe_network(self): - self.resource.get_by.return_value = [DEFAULT_FCOE_NETWORK_TEMPLATE] - - self.mock_ansible_module.params = PARAMS_FOR_ABSENT - - FcoeNetworkModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=FcoeNetworkModule.MSG_DELETED - ) - - def test_should_do_nothing_when_fcoe_network_not_exist(self): - self.resource.get_by.return_value = [] - - self.mock_ansible_module.params = PARAMS_FOR_ABSENT - - FcoeNetworkModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - msg=FcoeNetworkModule.MSG_ALREADY_ABSENT - ) - - def test_update_scopes_when_different(self): - params_to_scope = PARAMS_FOR_PRESENT.copy() - params_to_scope['data']['scopeUris'] = ['test'] - self.mock_ansible_module.params = params_to_scope - - resource_data = DEFAULT_FCOE_NETWORK_TEMPLATE.copy() - resource_data['scopeUris'] = ['fake'] - resource_data['uri'] = 'rest/fcoe/fake' - self.resource.get_by.return_value = [resource_data] - - patch_return = resource_data.copy() - patch_return['scopeUris'] = ['test'] - self.resource.patch.return_value = patch_return - - FcoeNetworkModule().run() - - self.resource.patch.assert_called_once_with('rest/fcoe/fake', - operation='replace', - path='/scopeUris', - value=['test']) - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - ansible_facts=dict(fcoe_network=patch_return), - msg=FcoeNetworkModule.MSG_UPDATED - ) - - def test_should_do_nothing_when_scopes_are_the_same(self): - params_to_scope = PARAMS_FOR_PRESENT.copy() - params_to_scope['data']['scopeUris'] = ['test'] - self.mock_ansible_module.params = params_to_scope - - resource_data = DEFAULT_FCOE_NETWORK_TEMPLATE.copy() - resource_data['scopeUris'] = ['test'] - self.resource.get_by.return_value = [resource_data] - - FcoeNetworkModule().run() - - self.resource.patch.not_been_called() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - ansible_facts=dict(fcoe_network=resource_data), - msg=FcoeNetworkModule.MSG_ALREADY_PRESENT - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/test/units/modules/remote_management/oneview/test_oneview_fcoe_network_info.py b/test/units/modules/remote_management/oneview/test_oneview_fcoe_network_info.py deleted file mode 100644 index 5977bd1ead..0000000000 --- a/test/units/modules/remote_management/oneview/test_oneview_fcoe_network_info.py +++ /dev/null @@ -1,60 +0,0 @@ -# Copyright (c) 2016-2017 Hewlett Packard Enterprise Development LP -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from units.compat import unittest - -from oneview_module_loader import FcoeNetworkInfoModule - -from hpe_test_utils import FactsParamsTestCase - -ERROR_MSG = 'Fake message error' - -PARAMS_GET_ALL = dict( - config='config.json', - name=None -) - -PARAMS_GET_BY_NAME = dict( - config='config.json', - name="Test FCoE Networks" -) - -PRESENT_NETWORKS = [{ - "name": "Test FCoE Networks", - "uri": "/rest/fcoe-networks/c6bf9af9-48e7-4236-b08a-77684dc258a5" -}] - - -class FcoeNetworkInfoSpec(unittest.TestCase, - FactsParamsTestCase - ): - def setUp(self): - self.configure_mocks(self, FcoeNetworkInfoModule) - self.fcoe_networks = self.mock_ov_client.fcoe_networks - FactsParamsTestCase.configure_client_mock(self, self.fcoe_networks) - - def test_should_get_all_fcoe_network(self): - self.fcoe_networks.get_all.return_value = PRESENT_NETWORKS - self.mock_ansible_module.params = PARAMS_GET_ALL - - FcoeNetworkInfoModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - fcoe_networks=PRESENT_NETWORKS - ) - - def test_should_get_fcoe_network_by_name(self): - self.fcoe_networks.get_by.return_value = PRESENT_NETWORKS - self.mock_ansible_module.params = PARAMS_GET_BY_NAME - - FcoeNetworkInfoModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - fcoe_networks=PRESENT_NETWORKS - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/test/units/modules/remote_management/oneview/test_oneview_logical_interconnect_group.py b/test/units/modules/remote_management/oneview/test_oneview_logical_interconnect_group.py deleted file mode 100644 index 913828c1f4..0000000000 --- a/test/units/modules/remote_management/oneview/test_oneview_logical_interconnect_group.py +++ /dev/null @@ -1,257 +0,0 @@ -# Copyright (c) 2016-2017 Hewlett Packard Enterprise Development LP -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from copy import deepcopy - -from units.compat import unittest, mock -from ansible.modules.remote_management.oneview.oneview_logical_interconnect_group import LogicalInterconnectGroupModule -from hpe_test_utils import OneViewBaseTestCase - - -FAKE_MSG_ERROR = 'Fake message error' - -DEFAULT_LIG_NAME = 'Test Logical Interconnect Group' -RENAMED_LIG = 'Renamed Logical Interconnect Group' - -DEFAULT_LIG_TEMPLATE = dict( - name=DEFAULT_LIG_NAME, - uplinkSets=[], - enclosureType='C7000', - interconnectMapTemplate=dict( - interconnectMapEntryTemplates=[] - ) -) - -PARAMS_LIG_TEMPLATE_WITH_MAP = dict( - config='config.json', - state='present', - data=dict( - name=DEFAULT_LIG_NAME, - uplinkSets=[], - enclosureType='C7000', - interconnectMapTemplate=dict( - interconnectMapEntryTemplates=[ - { - "logicalDownlinkUri": None, - "logicalLocation": { - "locationEntries": [ - { - "relativeValue": "1", - "type": "Bay" - }, - { - "relativeValue": 1, - "type": "Enclosure" - } - ] - }, - "permittedInterconnectTypeName": "HP VC Flex-10/10D Module" - }] - ) - )) - -PARAMS_FOR_PRESENT = dict( - config='config.json', - state='present', - data=dict(name=DEFAULT_LIG_NAME) -) - -PARAMS_TO_RENAME = dict( - config='config.json', - state='present', - data=dict(name=DEFAULT_LIG_NAME, - newName=RENAMED_LIG) -) - -PARAMS_WITH_CHANGES = dict( - config='config.json', - state='present', - data=dict(name=DEFAULT_LIG_NAME, - description='It is an example') -) - -PARAMS_FOR_ABSENT = dict( - config='config.json', - state='absent', - data=dict(name=DEFAULT_LIG_NAME) -) - - -class LogicalInterconnectGroupGeneralSpec(unittest.TestCase, - OneViewBaseTestCase): - def setUp(self): - self.configure_mocks(self, LogicalInterconnectGroupModule) - self.resource = self.mock_ov_client.logical_interconnect_groups - - def test_should_create_new_lig(self): - self.resource.get_by.return_value = [] - self.resource.create.return_value = DEFAULT_LIG_TEMPLATE - - self.mock_ansible_module.params = PARAMS_FOR_PRESENT - - LogicalInterconnectGroupModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=LogicalInterconnectGroupModule.MSG_CREATED, - ansible_facts=dict(logical_interconnect_group=DEFAULT_LIG_TEMPLATE) - ) - - def test_should_create_new_with_named_permitted_interconnect_type(self): - self.resource.get_by.return_value = [] - self.resource.create.return_value = PARAMS_FOR_PRESENT - - self.mock_ansible_module.params = deepcopy(PARAMS_LIG_TEMPLATE_WITH_MAP) - - LogicalInterconnectGroupModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=LogicalInterconnectGroupModule.MSG_CREATED, - ansible_facts=dict(logical_interconnect_group=PARAMS_FOR_PRESENT.copy()) - ) - - def test_should_fail_when_permitted_interconnect_type_name_not_exists(self): - self.resource.get_by.return_value = [] - self.resource.create.return_value = PARAMS_FOR_PRESENT - self.mock_ov_client.interconnect_types.get_by.return_value = [] - - self.mock_ansible_module.params = deepcopy(PARAMS_LIG_TEMPLATE_WITH_MAP) - - LogicalInterconnectGroupModule().run() - - self.mock_ansible_module.fail_json.assert_called_once_with( - exception=mock.ANY, - msg=LogicalInterconnectGroupModule.MSG_INTERCONNECT_TYPE_NOT_FOUND) - - def test_should_not_update_when_data_is_equals(self): - self.resource.get_by.return_value = [DEFAULT_LIG_TEMPLATE] - - self.mock_ansible_module.params = PARAMS_FOR_PRESENT - - LogicalInterconnectGroupModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - msg=LogicalInterconnectGroupModule.MSG_ALREADY_PRESENT, - ansible_facts=dict(logical_interconnect_group=DEFAULT_LIG_TEMPLATE) - ) - - def test_update_when_data_has_modified_attributes(self): - data_merged = DEFAULT_LIG_TEMPLATE.copy() - data_merged['description'] = 'New description' - - self.resource.get_by.return_value = [DEFAULT_LIG_TEMPLATE] - self.resource.update.return_value = data_merged - - self.mock_ansible_module.params = PARAMS_WITH_CHANGES - - LogicalInterconnectGroupModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=LogicalInterconnectGroupModule.MSG_UPDATED, - ansible_facts=dict(logical_interconnect_group=data_merged) - ) - - def test_rename_when_resource_exists(self): - data_merged = DEFAULT_LIG_TEMPLATE.copy() - data_merged['name'] = RENAMED_LIG - params_to_rename = PARAMS_TO_RENAME.copy() - - self.resource.get_by.return_value = [DEFAULT_LIG_TEMPLATE] - self.resource.update.return_value = data_merged - - self.mock_ansible_module.params = params_to_rename - - LogicalInterconnectGroupModule().run() - - self.resource.update.assert_called_once_with(data_merged) - - def test_create_with_newName_when_resource_not_exists(self): - data_merged = DEFAULT_LIG_TEMPLATE.copy() - data_merged['name'] = RENAMED_LIG - params_to_rename = PARAMS_TO_RENAME.copy() - - self.resource.get_by.return_value = [] - self.resource.create.return_value = DEFAULT_LIG_TEMPLATE - - self.mock_ansible_module.params = params_to_rename - - LogicalInterconnectGroupModule().run() - - self.resource.create.assert_called_once_with(PARAMS_TO_RENAME['data']) - - def test_should_remove_lig(self): - self.resource.get_by.return_value = [DEFAULT_LIG_TEMPLATE] - - self.mock_ansible_module.params = PARAMS_FOR_ABSENT - - LogicalInterconnectGroupModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=LogicalInterconnectGroupModule.MSG_DELETED - ) - - def test_should_do_nothing_when_lig_not_exist(self): - self.resource.get_by.return_value = [] - - self.mock_ansible_module.params = PARAMS_FOR_ABSENT - - LogicalInterconnectGroupModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - msg=LogicalInterconnectGroupModule.MSG_ALREADY_ABSENT - ) - - def test_update_scopes_when_different(self): - params_to_scope = PARAMS_FOR_PRESENT.copy() - params_to_scope['data']['scopeUris'] = ['test'] - self.mock_ansible_module.params = params_to_scope - - resource_data = DEFAULT_LIG_TEMPLATE.copy() - resource_data['scopeUris'] = ['fake'] - resource_data['uri'] = 'rest/lig/fake' - self.resource.get_by.return_value = [resource_data] - - patch_return = resource_data.copy() - patch_return['scopeUris'] = ['test'] - self.resource.patch.return_value = patch_return - - LogicalInterconnectGroupModule().run() - - self.resource.patch.assert_called_once_with('rest/lig/fake', - operation='replace', - path='/scopeUris', - value=['test']) - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - ansible_facts=dict(logical_interconnect_group=patch_return), - msg=LogicalInterconnectGroupModule.MSG_UPDATED - ) - - def test_should_do_nothing_when_scopes_are_the_same(self): - params_to_scope = PARAMS_FOR_PRESENT.copy() - params_to_scope['data']['scopeUris'] = ['test'] - self.mock_ansible_module.params = params_to_scope - - resource_data = DEFAULT_LIG_TEMPLATE.copy() - resource_data['scopeUris'] = ['test'] - self.resource.get_by.return_value = [resource_data] - - LogicalInterconnectGroupModule().run() - - self.resource.patch.not_been_called() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - ansible_facts=dict(logical_interconnect_group=resource_data), - msg=LogicalInterconnectGroupModule.MSG_ALREADY_PRESENT - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/test/units/modules/remote_management/oneview/test_oneview_logical_interconnect_group_info.py b/test/units/modules/remote_management/oneview/test_oneview_logical_interconnect_group_info.py deleted file mode 100644 index b86e1ae16e..0000000000 --- a/test/units/modules/remote_management/oneview/test_oneview_logical_interconnect_group_info.py +++ /dev/null @@ -1,57 +0,0 @@ -# Copyright (c) 2016-2017 Hewlett Packard Enterprise Development LP -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from units.compat import unittest -from ansible.modules.remote_management.oneview.oneview_logical_interconnect_group_info import LogicalInterconnectGroupInfoModule -from hpe_test_utils import FactsParamsTestCase - - -ERROR_MSG = 'Fake message error' - -PARAMS_GET_ALL = dict( - config='config.json', - name=None -) - -PARAMS_GET_BY_NAME = dict( - config='config.json', - name="Test Logical Interconnect Group" -) - -PRESENT_LIGS = [{ - "name": "Test Logical Interconnect Group", - "uri": "/rest/logical-interconnect-groups/ebb4ada8-08df-400e-8fac-9ff987ac5140" -}] - - -class LogicalInterconnectGroupInfoSpec(unittest.TestCase, FactsParamsTestCase): - def setUp(self): - self.configure_mocks(self, LogicalInterconnectGroupInfoModule) - self.logical_interconnect_groups = self.mock_ov_client.logical_interconnect_groups - FactsParamsTestCase.configure_client_mock(self, self.logical_interconnect_groups) - - def test_should_get_all_ligs(self): - self.logical_interconnect_groups.get_all.return_value = PRESENT_LIGS - self.mock_ansible_module.params = PARAMS_GET_ALL - - LogicalInterconnectGroupInfoModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - logical_interconnect_groups=(PRESENT_LIGS) - ) - - def test_should_get_lig_by_name(self): - self.logical_interconnect_groups.get_by.return_value = PRESENT_LIGS - self.mock_ansible_module.params = PARAMS_GET_BY_NAME - - LogicalInterconnectGroupInfoModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - logical_interconnect_groups=(PRESENT_LIGS) - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/test/units/modules/remote_management/oneview/test_oneview_network_set.py b/test/units/modules/remote_management/oneview/test_oneview_network_set.py deleted file mode 100644 index 97e31504b2..0000000000 --- a/test/units/modules/remote_management/oneview/test_oneview_network_set.py +++ /dev/null @@ -1,183 +0,0 @@ -# Copyright (c) 2016-2017 Hewlett Packard Enterprise Development LP -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from units.compat import unittest, mock -from hpe_test_utils import OneViewBaseTestCase -from oneview_module_loader import NetworkSetModule - -FAKE_MSG_ERROR = 'Fake message error' - -NETWORK_SET = dict( - name='OneViewSDK Test Network Set', - networkUris=['/rest/ethernet-networks/aaa-bbb-ccc'] -) - -NETWORK_SET_WITH_NEW_NAME = dict(name='OneViewSDK Test Network Set - Renamed') - -PARAMS_FOR_PRESENT = dict( - config='config.json', - state='present', - data=dict(name=NETWORK_SET['name'], - networkUris=['/rest/ethernet-networks/aaa-bbb-ccc']) -) - -PARAMS_WITH_CHANGES = dict( - config='config.json', - state='present', - data=dict(name=NETWORK_SET['name'], - newName=NETWORK_SET['name'] + " - Renamed", - networkUris=['/rest/ethernet-networks/aaa-bbb-ccc', 'Name of a Network']) -) - -PARAMS_FOR_ABSENT = dict( - config='config.json', - state='absent', - data=dict(name=NETWORK_SET['name']) -) - - -class NetworkSetModuleSpec(unittest.TestCase, - OneViewBaseTestCase): - """ - OneViewBaseTestCase has common tests for class constructor and main function, - also provides the mocks used in this test case. - """ - - def setUp(self): - self.configure_mocks(self, NetworkSetModule) - self.resource = self.mock_ov_client.network_sets - self.ethernet_network_client = self.mock_ov_client.ethernet_networks - - def test_should_create_new_network_set(self): - self.resource.get_by.return_value = [] - self.resource.create.return_value = NETWORK_SET - - self.mock_ansible_module.params = PARAMS_FOR_PRESENT - - NetworkSetModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=NetworkSetModule.MSG_CREATED, - ansible_facts=dict(network_set=NETWORK_SET) - ) - - def test_should_not_update_when_data_is_equals(self): - self.resource.get_by.return_value = [NETWORK_SET] - - self.mock_ansible_module.params = PARAMS_FOR_PRESENT - - NetworkSetModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - msg=NetworkSetModule.MSG_ALREADY_PRESENT, - ansible_facts=dict(network_set=NETWORK_SET) - ) - - def test_update_when_data_has_modified_attributes(self): - data_merged = dict(name=NETWORK_SET['name'] + " - Renamed", - networkUris=['/rest/ethernet-networks/aaa-bbb-ccc', - '/rest/ethernet-networks/ddd-eee-fff'] - ) - - self.resource.get_by.side_effect = [NETWORK_SET], [] - self.resource.update.return_value = data_merged - self.ethernet_network_client.get_by.return_value = [{'uri': '/rest/ethernet-networks/ddd-eee-fff'}] - - self.mock_ansible_module.params = PARAMS_WITH_CHANGES - - NetworkSetModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=NetworkSetModule.MSG_UPDATED, - ansible_facts=dict(network_set=data_merged) - ) - - def test_should_raise_exception_when_ethernet_network_not_found(self): - self.resource.get_by.side_effect = [NETWORK_SET], [] - self.ethernet_network_client.get_by.return_value = [] - - self.mock_ansible_module.params = PARAMS_WITH_CHANGES - - NetworkSetModule().run() - - self.mock_ansible_module.fail_json.assert_called_once_with( - exception=mock.ANY, - msg=NetworkSetModule.MSG_ETHERNET_NETWORK_NOT_FOUND + "Name of a Network" - ) - - def test_should_remove_network(self): - self.resource.get_by.return_value = [NETWORK_SET] - - self.mock_ansible_module.params = PARAMS_FOR_ABSENT - - NetworkSetModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=NetworkSetModule.MSG_DELETED - ) - - def test_should_do_nothing_when_network_set_not_exist(self): - self.resource.get_by.return_value = [] - - self.mock_ansible_module.params = PARAMS_FOR_ABSENT - - NetworkSetModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - msg=NetworkSetModule.MSG_ALREADY_ABSENT - ) - - def test_update_scopes_when_different(self): - params_to_scope = PARAMS_FOR_PRESENT.copy() - params_to_scope['data']['scopeUris'] = ['test'] - self.mock_ansible_module.params = params_to_scope - - resource_data = NETWORK_SET.copy() - resource_data['scopeUris'] = ['fake'] - resource_data['uri'] = 'rest/network-sets/fake' - self.resource.get_by.return_value = [resource_data] - - patch_return = resource_data.copy() - patch_return['scopeUris'] = ['test'] - self.resource.patch.return_value = patch_return - - NetworkSetModule().run() - - self.resource.patch.assert_called_once_with('rest/network-sets/fake', - operation='replace', - path='/scopeUris', - value=['test']) - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - ansible_facts=dict(network_set=patch_return), - msg=NetworkSetModule.MSG_UPDATED - ) - - def test_should_do_nothing_when_scopes_are_the_same(self): - params_to_scope = PARAMS_FOR_PRESENT.copy() - params_to_scope['data']['scopeUris'] = ['test'] - self.mock_ansible_module.params = params_to_scope - - resource_data = NETWORK_SET.copy() - resource_data['scopeUris'] = ['test'] - self.resource.get_by.return_value = [resource_data] - - NetworkSetModule().run() - - self.resource.patch.not_been_called() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - ansible_facts=dict(network_set=resource_data), - msg=NetworkSetModule.MSG_ALREADY_PRESENT - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/test/units/modules/remote_management/oneview/test_oneview_network_set_info.py b/test/units/modules/remote_management/oneview/test_oneview_network_set_info.py deleted file mode 100644 index 5c4d989243..0000000000 --- a/test/units/modules/remote_management/oneview/test_oneview_network_set_info.py +++ /dev/null @@ -1,117 +0,0 @@ -# Copyright (c) 2016-2017 Hewlett Packard Enterprise Development LP -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from units.compat import unittest -from oneview_module_loader import NetworkSetInfoModule -from hpe_test_utils import FactsParamsTestCase - -ERROR_MSG = 'Fake message error' - -PARAMS_GET_ALL = dict( - config='config.json', - name=None -) - -PARAMS_GET_ALL_WITHOUT_ETHERNET = dict( - config='config.json', - name=None, - options=['withoutEthernet'] -) - -PARAMS_GET_BY_NAME = dict( - config='config.json', - name='Network Set 1' -) - -PARAMS_GET_BY_NAME_WITHOUT_ETHERNET = dict( - config='config.json', - name='Network Set 1', - options=['withoutEthernet'] -) - - -class NetworkSetInfoSpec(unittest.TestCase, - FactsParamsTestCase): - def setUp(self): - self.configure_mocks(self, NetworkSetInfoModule) - self.network_sets = self.mock_ov_client.network_sets - FactsParamsTestCase.configure_client_mock(self, self.network_sets) - - def test_should_get_all_network_sets(self): - network_sets = [{ - "name": "Network Set 1", - "networkUris": ['/rest/ethernet-networks/aaa-bbb-ccc'] - }, { - "name": "Network Set 2", - "networkUris": ['/rest/ethernet-networks/ddd-eee-fff', '/rest/ethernet-networks/ggg-hhh-fff'] - }] - - self.network_sets.get_all.return_value = network_sets - self.mock_ansible_module.params = PARAMS_GET_ALL - - NetworkSetInfoModule().run() - - self.network_sets.get_all.assert_called_once_with() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - network_sets=network_sets) - - def test_should_get_all_network_sets_without_ethernet(self): - network_sets = [{ - "name": "Network Set 1", - "networkUris": [] - }, { - "name": "Network Set 2", - "networkUris": [] - }] - - self.network_sets.get_all.return_value = network_sets - self.mock_ansible_module.params = PARAMS_GET_ALL - - NetworkSetInfoModule().run() - - self.network_sets.get_all.assert_called_once_with() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - network_sets=network_sets) - - def test_should_get_network_set_by_name(self): - network_sets = [{ - "name": "Network Set 1", - "networkUris": ['/rest/ethernet-networks/aaa-bbb-ccc'] - }] - - self.network_sets.get_by.return_value = network_sets - self.mock_ansible_module.params = PARAMS_GET_BY_NAME - - NetworkSetInfoModule().run() - - self.network_sets.get_by.assert_called_once_with('name', 'Network Set 1') - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - network_sets=network_sets) - - def test_should_get_network_set_by_name_without_ethernet(self): - network_sets = [{ - "name": "Network Set 1", - "networkUris": [] - }] - - self.network_sets.get_all_without_ethernet.return_value = network_sets - self.mock_ansible_module.params = PARAMS_GET_BY_NAME_WITHOUT_ETHERNET - - NetworkSetInfoModule().run() - - expected_filter = "\"'name'='Network Set 1'\"" - self.network_sets.get_all_without_ethernet.assert_called_once_with(filter=expected_filter) - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - network_sets=network_sets) - - -if __name__ == '__main__': - unittest.main() diff --git a/test/units/modules/remote_management/oneview/test_oneview_san_manager.py b/test/units/modules/remote_management/oneview/test_oneview_san_manager.py deleted file mode 100644 index 3ab32651d7..0000000000 --- a/test/units/modules/remote_management/oneview/test_oneview_san_manager.py +++ /dev/null @@ -1,239 +0,0 @@ -# Copyright (c) 2016-2017 Hewlett Packard Enterprise Development LP -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from units.compat import unittest, mock -from oneview_module_loader import SanManagerModule -from hpe_test_utils import OneViewBaseTestCase -from copy import deepcopy - -FAKE_MSG_ERROR = 'Fake message error' - -DEFAULT_SAN_MANAGER_TEMPLATE = dict( - name='172.18.15.1', - providerDisplayName='Brocade Network Advisor', - uri='/rest/fc-sans/device-managers/UUU-AAA-BBB', - refreshState='OK', - connectionInfo=[ - { - 'valueFormat': 'IPAddressOrHostname', - 'displayName': 'Host', - 'name': 'Host', - 'valueType': 'String', - 'required': False, - 'value': '172.18.15.1' - }] -) - - -class SanManagerModuleSpec(unittest.TestCase, - OneViewBaseTestCase): - PARAMS_FOR_PRESENT = dict( - config='config.json', - state='present', - data=DEFAULT_SAN_MANAGER_TEMPLATE - ) - - PARAMS_FOR_CONNECTION_INFORMATION_SET = dict( - config='config.json', - state='connection_information_set', - data=DEFAULT_SAN_MANAGER_TEMPLATE.copy() - ) - - PARAMS_WITH_CHANGES = dict( - config='config.json', - state='present', - data=dict(name=DEFAULT_SAN_MANAGER_TEMPLATE['name'], - refreshState='RefreshPending') - ) - - PARAMS_FOR_ABSENT = dict( - config='config.json', - state='absent', - data=dict(name=DEFAULT_SAN_MANAGER_TEMPLATE['name']) - ) - - def setUp(self): - self.configure_mocks(self, SanManagerModule) - self.resource = self.mock_ov_client.san_managers - - def test_should_add_new_san_manager(self): - self.resource.get_by_name.return_value = [] - self.resource.get_provider_uri.return_value = '/rest/fc-sans/providers/123/device-managers' - self.resource.add.return_value = DEFAULT_SAN_MANAGER_TEMPLATE - - self.mock_ansible_module.params = self.PARAMS_FOR_PRESENT - - SanManagerModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=SanManagerModule.MSG_CREATED, - ansible_facts=dict(san_manager=DEFAULT_SAN_MANAGER_TEMPLATE) - ) - - def test_should_find_provider_uri_to_add(self): - self.resource.get_by_name.return_value = [] - self.resource.get_provider_uri.return_value = '/rest/fc-sans/providers/123/device-managers' - self.resource.add.return_value = DEFAULT_SAN_MANAGER_TEMPLATE - - self.mock_ansible_module.params = self.PARAMS_FOR_PRESENT - - SanManagerModule().run() - - provider_display_name = DEFAULT_SAN_MANAGER_TEMPLATE['providerDisplayName'] - self.resource.get_provider_uri.assert_called_once_with(provider_display_name) - - def test_should_not_update_when_data_is_equals(self): - output_data = deepcopy(DEFAULT_SAN_MANAGER_TEMPLATE) - output_data.pop('connectionInfo') - self.resource.get_by_name.return_value = deepcopy(DEFAULT_SAN_MANAGER_TEMPLATE) - self.resource.get_provider_uri.return_value = '/rest/fc-sans/providers/123/device-managers' - - self.mock_ansible_module.params = self.PARAMS_FOR_PRESENT - - SanManagerModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - msg=SanManagerModule.MSG_ALREADY_PRESENT, - ansible_facts=dict(san_manager=output_data) - ) - - def test_update_when_data_has_modified_attributes(self): - data_merged = deepcopy(DEFAULT_SAN_MANAGER_TEMPLATE) - data_merged['fabricType'] = 'DirectAttach' - - self.resource.get_by_name.return_value = DEFAULT_SAN_MANAGER_TEMPLATE - self.resource.get_provider_uri.return_value = '/rest/fc-sans/providers/123/device-managers' - - self.resource.update.return_value = data_merged - self.mock_ansible_module.params = self.PARAMS_WITH_CHANGES - - SanManagerModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=SanManagerModule.MSG_UPDATED, - ansible_facts=dict(san_manager=data_merged) - ) - - def test_update_should_not_send_connection_info_when_not_informed_on_data(self): - merged_data = deepcopy(DEFAULT_SAN_MANAGER_TEMPLATE) - merged_data['refreshState'] = 'RefreshPending' - output_data = deepcopy(merged_data) - output_data.pop('connectionInfo') - - self.resource.get_by_name.return_value = DEFAULT_SAN_MANAGER_TEMPLATE - self.resource.get_provider_uri.return_value = '/rest/fc-sans/providers/123/device-managers' - - self.resource.update.return_value = merged_data - self.mock_ansible_module.params = self.PARAMS_WITH_CHANGES - - SanManagerModule().run() - - self.resource.update.assert_called_once_with(resource=output_data, id_or_uri=output_data['uri']) - - def test_should_remove_san_manager(self): - self.resource.get_by_name.return_value = deepcopy(DEFAULT_SAN_MANAGER_TEMPLATE) - self.resource.get_provider_uri.return_value = '/rest/fc-sans/providers/123/device-managers' - - self.mock_ansible_module.params = self.PARAMS_FOR_ABSENT.copy() - - SanManagerModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=SanManagerModule.MSG_DELETED - ) - - def test_should_do_nothing_when_san_manager_not_exist(self): - self.resource.get_by_name.return_value = [] - - self.mock_ansible_module.params = self.PARAMS_FOR_ABSENT.copy() - - SanManagerModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - msg=SanManagerModule.MSG_ALREADY_ABSENT - ) - - def test_should_fail_when_name_not_found(self): - self.resource.get_by_name.return_value = [] - self.resource.get_provider_uri.return_value = None - - self.mock_ansible_module.params = self.PARAMS_FOR_PRESENT - - SanManagerModule().run() - - self.mock_ansible_module.fail_json.assert_called_once_with( - exception=mock.ANY, - msg="The provider 'Brocade Network Advisor' was not found." - ) - - def test_should_fail_when_name_and_hosts_in_connectionInfo_missing(self): - bad_params = deepcopy(self.PARAMS_FOR_PRESENT) - bad_params['data'].pop('name') - bad_params['data'].pop('connectionInfo') - - self.mock_ansible_module.params = bad_params - - SanManagerModule().run() - - msg = 'A "name" or "connectionInfo" must be provided inside the "data" field for this operation. ' - msg += 'If a "connectionInfo" is provided, the "Host" name is considered as the "name" for the resource.' - - self.mock_ansible_module.fail_json.assert_called_once_with(exception=mock.ANY, msg=msg) - - def test_connection_information_set_should_set_the_connection_information(self): - data_merged = deepcopy(DEFAULT_SAN_MANAGER_TEMPLATE) - data_merged['fabricType'] = 'DirectAttach' - - self.resource.get_by_name.return_value = DEFAULT_SAN_MANAGER_TEMPLATE - self.resource.get_provider_uri.return_value = '/rest/fc-sans/providers/123/device-managers' - - self.resource.update.return_value = data_merged - self.mock_ansible_module.params = self.PARAMS_FOR_CONNECTION_INFORMATION_SET - - SanManagerModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=SanManagerModule.MSG_UPDATED, - ansible_facts=dict(san_manager=data_merged) - ) - - def test_should_add_new_san_manager_when_connection_information_set_called_without_resource(self): - self.resource.get_by_name.return_value = [] - self.resource.get_provider_uri.return_value = '/rest/fc-sans/providers/123/device-managers' - self.resource.add.return_value = DEFAULT_SAN_MANAGER_TEMPLATE - - self.mock_ansible_module.params = self.PARAMS_FOR_CONNECTION_INFORMATION_SET - - SanManagerModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=True, - msg=SanManagerModule.MSG_CREATED, - ansible_facts=dict(san_manager=DEFAULT_SAN_MANAGER_TEMPLATE) - ) - - def test_should_fail_when_required_attribute_missing(self): - bad_params = deepcopy(self.PARAMS_FOR_CONNECTION_INFORMATION_SET) - bad_params['data'] = self.PARAMS_FOR_CONNECTION_INFORMATION_SET['data'].copy() - bad_params['data'].pop('connectionInfo') - - self.resource.get_by_name.return_value = DEFAULT_SAN_MANAGER_TEMPLATE - self.resource.get_provider_uri.return_value = '/rest/fc-sans/providers/123/device-managers' - - self.mock_ansible_module.params = bad_params - - SanManagerModule().run() - - msg = 'A connectionInfo field is required for this operation.' - - self.mock_ansible_module.fail_json.assert_called_once_with(exception=mock.ANY, msg=msg) - - -if __name__ == '__main__': - unittest.main() diff --git a/test/units/modules/remote_management/oneview/test_oneview_san_manager_info.py b/test/units/modules/remote_management/oneview/test_oneview_san_manager_info.py deleted file mode 100644 index 58770f53f1..0000000000 --- a/test/units/modules/remote_management/oneview/test_oneview_san_manager_info.py +++ /dev/null @@ -1,68 +0,0 @@ -# Copyright (c) 2016-2017 Hewlett Packard Enterprise Development LP -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from units.compat import unittest -from oneview_module_loader import SanManagerInfoModule -from hpe_test_utils import FactsParamsTestCase - - -class SanManagerInfoSpec(unittest.TestCase, FactsParamsTestCase): - ERROR_MSG = 'Fake message error' - - PARAMS_GET_ALL = dict( - config='config.json', - provider_display_name=None - ) - - PARAMS_GET_BY_PROVIDER_DISPLAY_NAME = dict( - config='config.json', - provider_display_name="Brocade Network Advisor" - ) - - PRESENT_SAN_MANAGERS = [{ - "providerDisplayName": "Brocade Network Advisor", - "uri": "/rest/fc-sans/device-managers//d60efc8a-15b8-470c-8470-738d16d6b319" - }] - - def setUp(self): - self.configure_mocks(self, SanManagerInfoModule) - self.san_managers = self.mock_ov_client.san_managers - - FactsParamsTestCase.configure_client_mock(self, self.san_managers) - - def test_should_get_all(self): - self.san_managers.get_all.return_value = self.PRESENT_SAN_MANAGERS - self.mock_ansible_module.params = self.PARAMS_GET_ALL - - SanManagerInfoModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - san_managers=self.PRESENT_SAN_MANAGERS - ) - - def test_should_get_by_display_name(self): - self.san_managers.get_by_provider_display_name.return_value = self.PRESENT_SAN_MANAGERS[0] - self.mock_ansible_module.params = self.PARAMS_GET_BY_PROVIDER_DISPLAY_NAME - - SanManagerInfoModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - san_managers=self.PRESENT_SAN_MANAGERS - ) - - def test_should_return_empty_list_when_get_by_display_name_is_null(self): - self.san_managers.get_by_provider_display_name.return_value = None - self.mock_ansible_module.params = self.PARAMS_GET_BY_PROVIDER_DISPLAY_NAME - - SanManagerInfoModule().run() - - self.mock_ansible_module.exit_json.assert_called_once_with( - changed=False, - san_managers=[] - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/test/units/modules/source_control/bitbucket/test_bitbucket_access_key.py b/test/units/modules/source_control/bitbucket/test_bitbucket_access_key.py deleted file mode 100644 index f1cb4fe71b..0000000000 --- a/test/units/modules/source_control/bitbucket/test_bitbucket_access_key.py +++ /dev/null @@ -1,337 +0,0 @@ -from ansible.module_utils.source_control.bitbucket import BitbucketHelper -from ansible.modules.source_control.bitbucket import bitbucket_access_key -from units.compat import unittest -from units.compat.mock import patch -from units.modules.utils import AnsibleFailJson, AnsibleExitJson, ModuleTestCase, set_module_args - - -class TestBucketAccessKeyModule(ModuleTestCase): - def setUp(self): - super(TestBucketAccessKeyModule, self).setUp() - self.module = bitbucket_access_key - - def test_missing_key_with_present_state(self): - with self.assertRaises(AnsibleFailJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'label': 'key name', - 'state': 'present', - }) - self.module.main() - - self.assertEqual(exec_info.exception.args[0]['msg'], self.module.error_messages['required_key']) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_access_key, 'get_existing_deploy_key', return_value=None) - def test_create_deploy_key(self, *args): - with patch.object(self.module, 'create_deploy_key') as create_deploy_key_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'key': 'public_key', - 'label': 'key name', - 'state': 'present', - }) - self.module.main() - - self.assertEqual(create_deploy_key_mock.call_count, 1) - self.assertEqual(exec_info.exception.args[0]['changed'], True) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_access_key, 'get_existing_deploy_key', return_value=None) - def test_create_deploy_key_check_mode(self, *args): - with patch.object(self.module, 'create_deploy_key') as create_deploy_key_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'key': 'public_key', - 'label': 'key name', - 'state': 'present', - '_ansible_check_mode': True, - }) - self.module.main() - - self.assertEqual(create_deploy_key_mock.call_count, 0) - self.assertEqual(exec_info.exception.args[0]['changed'], True) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_access_key, 'get_existing_deploy_key', return_value={ - "id": 123, - "label": "mykey", - "created_on": "2019-03-23T10:15:21.517377+00:00", - "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADA...AdkTg7HGqL3rlaDrEcWfL7Lu6TnhBdq5", - "type": "deploy_key", - "comment": "", - "last_used": None, - "repository": { - "links": { - "self": { - "href": "https://api.bitbucket.org/2.0/repositories/mleu/test" - }, - "html": { - "href": "https://bitbucket.org/mleu/test" - }, - "avatar": { - "href": "..." - } - }, - "type": "repository", - "name": "test", - "full_name": "mleu/test", - "uuid": "{85d08b4e-571d-44e9-a507-fa476535aa98}" - }, - "links": { - "self": { - "href": "https://api.bitbucket.org/2.0/repositories/mleu/test/deploy-keys/123" - } - }, - }) - def test_update_deploy_key(self, *args): - with patch.object(self.module, 'delete_deploy_key') as delete_deploy_key_mock: - with patch.object(self.module, 'create_deploy_key') as create_deploy_key_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'key': 'new public key', - 'label': 'mykey', - 'state': 'present', - }) - self.module.main() - - self.assertEqual(delete_deploy_key_mock.call_count, 1) - self.assertEqual(create_deploy_key_mock.call_count, 1) - self.assertEqual(exec_info.exception.args[0]['changed'], True) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_access_key, 'get_existing_deploy_key', return_value={ - "id": 123, - "label": "mykey", - "created_on": "2019-03-23T10:15:21.517377+00:00", - "key": "new public key", - "type": "deploy_key", - "comment": "", - "last_used": None, - "repository": { - "links": { - "self": { - "href": "https://api.bitbucket.org/2.0/repositories/mleu/test" - }, - "html": { - "href": "https://bitbucket.org/mleu/test" - }, - "avatar": { - "href": "..." - } - }, - "type": "repository", - "name": "test", - "full_name": "mleu/test", - "uuid": "{85d08b4e-571d-44e9-a507-fa476535aa98}" - }, - "links": { - "self": { - "href": "https://api.bitbucket.org/2.0/repositories/mleu/test/deploy-keys/123" - } - }, - }) - def test_dont_update_same_value(self, *args): - with patch.object(self.module, 'delete_deploy_key') as delete_deploy_key_mock: - with patch.object(self.module, 'create_deploy_key') as create_deploy_key_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'key': 'new public key', - 'label': 'mykey', - 'state': 'present', - }) - self.module.main() - - self.assertEqual(delete_deploy_key_mock.call_count, 0) - self.assertEqual(create_deploy_key_mock.call_count, 0) - self.assertEqual(exec_info.exception.args[0]['changed'], False) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_access_key, 'get_existing_deploy_key', return_value={ - "id": 123, - "label": "mykey", - "created_on": "2019-03-23T10:15:21.517377+00:00", - "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADA...AdkTg7HGqL3rlaDrEcWfL7Lu6TnhBdq5", - "type": "deploy_key", - "comment": "", - "last_used": None, - "repository": { - "links": { - "self": { - "href": "https://api.bitbucket.org/2.0/repositories/mleu/test" - }, - "html": { - "href": "https://bitbucket.org/mleu/test" - }, - "avatar": { - "href": "..." - } - }, - "type": "repository", - "name": "test", - "full_name": "mleu/test", - "uuid": "{85d08b4e-571d-44e9-a507-fa476535aa98}" - }, - "links": { - "self": { - "href": "https://api.bitbucket.org/2.0/repositories/mleu/test/deploy-keys/123" - } - }, - }) - def test_update_deploy_key_check_mode(self, *args): - with patch.object(self.module, 'delete_deploy_key') as delete_deploy_key_mock: - with patch.object(self.module, 'create_deploy_key') as create_deploy_key_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'key': 'new public key', - 'label': 'mykey', - 'state': 'present', - '_ansible_check_mode': True, - }) - self.module.main() - - self.assertEqual(delete_deploy_key_mock.call_count, 0) - self.assertEqual(create_deploy_key_mock.call_count, 0) - self.assertEqual(exec_info.exception.args[0]['changed'], True) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_access_key, 'get_existing_deploy_key', return_value={ - "id": 123, - "label": "mykey", - "created_on": "2019-03-23T10:15:21.517377+00:00", - "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADA...AdkTg7HGqL3rlaDrEcWfL7Lu6TnhBdq5", - "type": "deploy_key", - "comment": "", - "last_used": None, - "repository": { - "links": { - "self": { - "href": "https://api.bitbucket.org/2.0/repositories/mleu/test" - }, - "html": { - "href": "https://bitbucket.org/mleu/test" - }, - "avatar": { - "href": "..." - } - }, - "type": "repository", - "name": "test", - "full_name": "mleu/test", - "uuid": "{85d08b4e-571d-44e9-a507-fa476535aa98}" - }, - "links": { - "self": { - "href": "https://api.bitbucket.org/2.0/repositories/mleu/test/deploy-keys/123" - } - }, - }) - def test_delete_deploy_key(self, *args): - with patch.object(self.module, 'delete_deploy_key') as delete_deploy_key_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'label': 'mykey', - 'state': 'absent', - }) - self.module.main() - - self.assertEqual(delete_deploy_key_mock.call_count, 1) - self.assertEqual(exec_info.exception.args[0]['changed'], True) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_access_key, 'get_existing_deploy_key', return_value=None) - def test_delete_absent_deploy_key(self, *args): - with patch.object(self.module, 'delete_deploy_key') as delete_deploy_key_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'label': 'mykey', - 'state': 'absent', - }) - self.module.main() - - self.assertEqual(delete_deploy_key_mock.call_count, 0) - self.assertEqual(exec_info.exception.args[0]['changed'], False) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_access_key, 'get_existing_deploy_key', return_value={ - "id": 123, - "label": "mykey", - "created_on": "2019-03-23T10:15:21.517377+00:00", - "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADA...AdkTg7HGqL3rlaDrEcWfL7Lu6TnhBdq5", - "type": "deploy_key", - "comment": "", - "last_used": None, - "repository": { - "links": { - "self": { - "href": "https://api.bitbucket.org/2.0/repositories/mleu/test" - }, - "html": { - "href": "https://bitbucket.org/mleu/test" - }, - "avatar": { - "href": "..." - } - }, - "type": "repository", - "name": "test", - "full_name": "mleu/test", - "uuid": "{85d08b4e-571d-44e9-a507-fa476535aa98}" - }, - "links": { - "self": { - "href": "https://api.bitbucket.org/2.0/repositories/mleu/test/deploy-keys/123" - } - }, - }) - def test_delete_deploy_key_check_mode(self, *args): - with patch.object(self.module, 'delete_deploy_key') as delete_deploy_key_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'label': 'mykey', - 'state': 'absent', - '_ansible_check_mode': True, - }) - self.module.main() - - self.assertEqual(delete_deploy_key_mock.call_count, 0) - self.assertEqual(exec_info.exception.args[0]['changed'], True) - - -if __name__ == '__main__': - unittest.main() diff --git a/test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_key_pair.py b/test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_key_pair.py deleted file mode 100644 index 44e7c31ea7..0000000000 --- a/test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_key_pair.py +++ /dev/null @@ -1,192 +0,0 @@ -from ansible.module_utils.source_control.bitbucket import BitbucketHelper -from ansible.modules.source_control.bitbucket import bitbucket_pipeline_key_pair -from units.compat import unittest -from units.compat.mock import patch -from units.modules.utils import AnsibleFailJson, AnsibleExitJson, ModuleTestCase, set_module_args - - -class TestBucketPipelineKeyPairModule(ModuleTestCase): - def setUp(self): - super(TestBucketPipelineKeyPairModule, self).setUp() - self.module = bitbucket_pipeline_key_pair - - def test_missing_keys_with_present_state(self): - with self.assertRaises(AnsibleFailJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'state': 'present', - }) - self.module.main() - - self.assertEqual(exec_info.exception.args[0]['msg'], self.module.error_messages['required_keys']) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_pipeline_key_pair, 'get_existing_ssh_key_pair', return_value=None) - def test_create_keys(self, *args): - with patch.object(self.module, 'update_ssh_key_pair') as update_ssh_key_pair_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'public_key': 'public', - 'private_key': 'PRIVATE', - 'state': 'present', - }) - self.module.main() - - self.assertEqual(update_ssh_key_pair_mock.call_count, 1) - self.assertEqual(exec_info.exception.args[0]['changed'], True) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_pipeline_key_pair, 'get_existing_ssh_key_pair', return_value=None) - def test_create_keys_check_mode(self, *args): - with patch.object(self.module, 'update_ssh_key_pair') as update_ssh_key_pair_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'public_key': 'public', - 'private_key': 'PRIVATE', - 'state': 'present', - '_ansible_check_mode': True, - }) - self.module.main() - - self.assertEqual(update_ssh_key_pair_mock.call_count, 0) - self.assertEqual(exec_info.exception.args[0]['changed'], True) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_pipeline_key_pair, 'get_existing_ssh_key_pair', return_value={ - 'public_key': 'unknown', - 'type': 'pipeline_ssh_key_pair', - }) - def test_update_keys(self, *args): - with patch.object(self.module, 'update_ssh_key_pair') as update_ssh_key_pair_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'public_key': 'public', - 'private_key': 'PRIVATE', - 'state': 'present', - }) - self.module.main() - - self.assertEqual(update_ssh_key_pair_mock.call_count, 1) - self.assertEqual(exec_info.exception.args[0]['changed'], True) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_pipeline_key_pair, 'get_existing_ssh_key_pair', return_value={ - 'public_key': 'public', - 'type': 'pipeline_ssh_key_pair', - }) - def test_dont_update_same_key(self, *args): - with patch.object(self.module, 'update_ssh_key_pair') as update_ssh_key_pair_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'public_key': 'public', - 'private_key': 'PRIVATE', - 'state': 'present', - }) - self.module.main() - - self.assertEqual(update_ssh_key_pair_mock.call_count, 0) - self.assertEqual(exec_info.exception.args[0]['changed'], False) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_pipeline_key_pair, 'get_existing_ssh_key_pair', return_value={ - 'public_key': 'unknown', - 'type': 'pipeline_ssh_key_pair', - }) - def test_update_keys_check_mode(self, *args): - with patch.object(self.module, 'update_ssh_key_pair') as update_ssh_key_pair_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'public_key': 'public', - 'private_key': 'PRIVATE', - 'state': 'present', - '_ansible_check_mode': True, - }) - self.module.main() - - self.assertEqual(update_ssh_key_pair_mock.call_count, 0) - self.assertEqual(exec_info.exception.args[0]['changed'], True) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_pipeline_key_pair, 'get_existing_ssh_key_pair', return_value={ - 'public_key': 'public', - 'type': 'pipeline_ssh_key_pair', - }) - def test_delete_keys(self, *args): - with patch.object(self.module, 'delete_ssh_key_pair') as delete_ssh_key_pair_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'state': 'absent', - }) - self.module.main() - - self.assertEqual(delete_ssh_key_pair_mock.call_count, 1) - self.assertEqual(exec_info.exception.args[0]['changed'], True) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_pipeline_key_pair, 'get_existing_ssh_key_pair', return_value=None) - def test_delete_absent_keys(self, *args): - with patch.object(self.module, 'delete_ssh_key_pair') as delete_ssh_key_pair_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'state': 'absent', - }) - self.module.main() - - self.assertEqual(delete_ssh_key_pair_mock.call_count, 0) - self.assertEqual(exec_info.exception.args[0]['changed'], False) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_pipeline_key_pair, 'get_existing_ssh_key_pair', return_value={ - 'public_key': 'public', - 'type': 'pipeline_ssh_key_pair', - }) - def test_delete_keys_check_mode(self, *args): - with patch.object(self.module, 'delete_ssh_key_pair') as delete_ssh_key_pair_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'state': 'absent', - '_ansible_check_mode': True, - }) - self.module.main() - - self.assertEqual(delete_ssh_key_pair_mock.call_count, 0) - self.assertEqual(exec_info.exception.args[0]['changed'], True) - - -if __name__ == '__main__': - unittest.main() diff --git a/test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_known_host.py b/test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_known_host.py deleted file mode 100644 index 99bd663957..0000000000 --- a/test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_known_host.py +++ /dev/null @@ -1,187 +0,0 @@ -import pytest - -from ansible.module_utils.source_control.bitbucket import BitbucketHelper -from ansible.modules.source_control.bitbucket import bitbucket_pipeline_known_host -from ansible.modules.source_control.bitbucket.bitbucket_pipeline_known_host import HAS_PARAMIKO -from units.compat import unittest -from units.compat.mock import patch -from units.modules.utils import AnsibleExitJson, ModuleTestCase, set_module_args - - -class TestBucketPipelineKnownHostModule(ModuleTestCase): - def setUp(self): - super(TestBucketPipelineKnownHostModule, self).setUp() - self.module = bitbucket_pipeline_known_host - - @pytest.mark.skipif(not HAS_PARAMIKO, reason='paramiko must be installed to test key creation') - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_pipeline_known_host, 'get_existing_known_host', return_value=None) - def test_create_known_host(self, *args): - with patch.object(self.module, 'create_known_host') as create_known_host_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'name': 'bitbucket.org', - 'state': 'present', - }) - self.module.main() - - self.assertEqual(create_known_host_mock.call_count, 1) - self.assertEqual(exec_info.exception.args[0]['changed'], True) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(BitbucketHelper, 'request', return_value=(dict(status=201), dict())) - @patch.object(bitbucket_pipeline_known_host, 'get_existing_known_host', return_value=None) - def test_create_known_host_with_key(self, *args): - with patch.object(self.module, 'get_host_key') as get_host_key_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'name': 'bitbucket.org', - 'key': 'ssh-rsa public', - 'state': 'present', - }) - self.module.main() - - self.assertEqual(get_host_key_mock.call_count, 0) - self.assertEqual(exec_info.exception.args[0]['changed'], True) - - @pytest.mark.skipif(not HAS_PARAMIKO, reason='paramiko must be installed to test key creation') - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_pipeline_known_host, 'get_existing_known_host', return_value={ - 'type': 'pipeline_known_host', - 'uuid': '{21cc0590-bebe-4fae-8baf-03722704119a7}', - 'hostname': 'bitbucket.org', - 'public_key': { - 'type': 'pipeline_ssh_public_key', - 'md5_fingerprint': 'md5:97:8c:1b:f2:6f:14:6b:4b:3b:ec:aa:46:46:74:7c:40', - 'sha256_fingerprint': 'SHA256:zzXQOXSFBEiUtuE8AikoYKwbHaxvSc0ojez9YXaGp1A', - 'key_type': 'ssh-rsa', - 'key': 'AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kN...seeFVBoGqzHM9yXw==' - } - }) - def test_dont_create_same_value(self, *args): - with patch.object(self.module, 'create_known_host') as create_known_host_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'name': 'bitbucket.org', - 'state': 'present', - }) - self.module.main() - - self.assertEqual(create_known_host_mock.call_count, 0) - self.assertEqual(exec_info.exception.args[0]['changed'], False) - - @pytest.mark.skipif(not HAS_PARAMIKO, reason='paramiko must be installed to test key creation') - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_pipeline_known_host, 'get_existing_known_host', return_value=None) - def test_create_known_host_check_mode(self, *args): - with patch.object(self.module, 'create_known_host') as create_known_host_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'name': 'bitbucket.org', - 'state': 'present', - '_ansible_check_mode': True, - }) - self.module.main() - - self.assertEqual(create_known_host_mock.call_count, 0) - self.assertEqual(exec_info.exception.args[0]['changed'], True) - - @pytest.mark.skipif(not HAS_PARAMIKO, reason='paramiko must be installed to test key creation') - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_pipeline_known_host, 'get_existing_known_host', return_value={ - 'type': 'pipeline_known_host', - 'uuid': '{21cc0590-bebe-4fae-8baf-03722704119a7}', - 'hostname': 'bitbucket.org', - 'public_key': { - 'type': 'pipeline_ssh_public_key', - 'md5_fingerprint': 'md5:97:8c:1b:f2:6f:14:6b:4b:3b:ec:aa:46:46:74:7c:40', - 'sha256_fingerprint': 'SHA256:zzXQOXSFBEiUtuE8AikoYKwbHaxvSc0ojez9YXaGp1A', - 'key_type': 'ssh-rsa', - 'key': 'AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kN...seeFVBoGqzHM9yXw==' - } - }) - def test_delete_known_host(self, *args): - with patch.object(self.module, 'delete_known_host') as delete_known_host_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'name': 'bitbucket.org', - 'state': 'absent', - }) - self.module.main() - - self.assertEqual(delete_known_host_mock.call_count, 1) - self.assertEqual(exec_info.exception.args[0]['changed'], True) - - @pytest.mark.skipif(not HAS_PARAMIKO, reason='paramiko must be installed to test key creation') - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_pipeline_known_host, 'get_existing_known_host', return_value=None) - def test_delete_absent_known_host(self, *args): - with patch.object(self.module, 'delete_known_host') as delete_known_host_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'name': 'bitbucket.org', - 'state': 'absent', - }) - self.module.main() - - self.assertEqual(delete_known_host_mock.call_count, 0) - self.assertEqual(exec_info.exception.args[0]['changed'], False) - - @pytest.mark.skipif(not HAS_PARAMIKO, reason='paramiko must be installed to test key creation') - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_pipeline_known_host, 'get_existing_known_host', return_value={ - 'type': 'pipeline_known_host', - 'uuid': '{21cc0590-bebe-4fae-8baf-03722704119a7}', - 'hostname': 'bitbucket.org', - 'public_key': { - 'type': 'pipeline_ssh_public_key', - 'md5_fingerprint': 'md5:97:8c:1b:f2:6f:14:6b:4b:3b:ec:aa:46:46:74:7c:40', - 'sha256_fingerprint': 'SHA256:zzXQOXSFBEiUtuE8AikoYKwbHaxvSc0ojez9YXaGp1A', - 'key_type': 'ssh-rsa', - 'key': 'AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kN...seeFVBoGqzHM9yXw==' - } - }) - def test_delete_known_host_check_mode(self, *args): - with patch.object(self.module, 'delete_known_host') as delete_known_host_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'name': 'bitbucket.org', - 'state': 'absent', - '_ansible_check_mode': True, - }) - self.module.main() - - self.assertEqual(delete_known_host_mock.call_count, 0) - self.assertEqual(exec_info.exception.args[0]['changed'], True) - - -if __name__ == '__main__': - unittest.main() diff --git a/test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_variable.py b/test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_variable.py deleted file mode 100644 index 0cb87d0c5e..0000000000 --- a/test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_variable.py +++ /dev/null @@ -1,290 +0,0 @@ -from ansible.module_utils.source_control.bitbucket import BitbucketHelper -from ansible.modules.source_control.bitbucket import bitbucket_pipeline_variable -from units.compat import unittest -from units.compat.mock import patch -from units.modules.utils import AnsibleFailJson, AnsibleExitJson, ModuleTestCase, set_module_args - - -class TestBucketPipelineVariableModule(ModuleTestCase): - def setUp(self): - super(TestBucketPipelineVariableModule, self).setUp() - self.module = bitbucket_pipeline_variable - - def test_without_required_parameters(self): - with self.assertRaises(AnsibleFailJson) as exec_info: - set_module_args({ - 'username': 'name', - 'repository': 'repo', - 'name': 'PIPELINE_VAR_NAME', - 'state': 'absent', - }) - self.module.main() - - self.assertEqual(exec_info.exception.args[0]['msg'], BitbucketHelper.error_messages['required_client_id']) - - def test_missing_value_with_present_state(self): - with self.assertRaises(AnsibleFailJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'name': 'PIPELINE_VAR_NAME', - 'state': 'present', - }) - self.module.main() - - self.assertEqual(exec_info.exception.args[0]['msg'], self.module.error_messages['required_value']) - - @patch.dict('os.environ', { - 'BITBUCKET_CLIENT_ID': 'ABC', - 'BITBUCKET_CLIENT_SECRET': 'XXX', - }) - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_pipeline_variable, 'get_existing_pipeline_variable', return_value=None) - def test_env_vars_params(self, *args): - with self.assertRaises(AnsibleExitJson): - set_module_args({ - 'username': 'name', - 'repository': 'repo', - 'name': 'PIPELINE_VAR_NAME', - 'state': 'absent', - }) - self.module.main() - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_pipeline_variable, 'get_existing_pipeline_variable', return_value=None) - def test_create_variable(self, *args): - with patch.object(self.module, 'create_pipeline_variable') as create_pipeline_variable_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'name': 'PIPELINE_VAR_NAME', - 'value': '42', - 'state': 'present', - }) - self.module.main() - - self.assertEqual(create_pipeline_variable_mock.call_count, 1) - self.assertEqual(exec_info.exception.args[0]['changed'], True) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_pipeline_variable, 'get_existing_pipeline_variable', return_value=None) - def test_create_variable_check_mode(self, *args): - with patch.object(self.module, 'create_pipeline_variable') as create_pipeline_variable_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'name': 'PIPELINE_VAR_NAME', - 'value': '42', - 'state': 'present', - '_ansible_check_mode': True, - }) - self.module.main() - - self.assertEqual(create_pipeline_variable_mock.call_count, 0) - self.assertEqual(exec_info.exception.args[0]['changed'], True) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_pipeline_variable, 'get_existing_pipeline_variable', return_value={ - 'name': 'PIPELINE_VAR_NAME', - 'value': 'Im alive', - 'type': 'pipeline_variable', - 'secured': False, - 'uuid': '{9ddb0507-439a-495a- 99f3 - 564f15138127}' - }) - def test_update_variable(self, *args): - with patch.object(self.module, 'update_pipeline_variable') as update_pipeline_variable_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'name': 'PIPELINE_VAR_NAME', - 'value': '42', - 'state': 'present', - }) - self.module.main() - - self.assertEqual(update_pipeline_variable_mock.call_count, 1) - self.assertEqual(exec_info.exception.args[0]['changed'], True) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_pipeline_variable, 'get_existing_pipeline_variable', return_value={ - 'name': 'PIPELINE_VAR_NAME', - 'type': 'pipeline_variable', - 'secured': True, - 'uuid': '{9ddb0507-439a-495a- 99f3 - 564f15138127}' - }) - def test_update_secured_variable(self, *args): - with patch.object(self.module, 'update_pipeline_variable') as update_pipeline_variable_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'name': 'PIPELINE_VAR_NAME', - 'value': '42', - 'secured': True, - 'state': 'present', - }) - self.module.main() - - self.assertEqual(update_pipeline_variable_mock.call_count, 1) - self.assertEqual(exec_info.exception.args[0]['changed'], True) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_pipeline_variable, 'get_existing_pipeline_variable', return_value={ - 'name': 'PIPELINE_VAR_NAME', - 'value': '42', - 'type': 'pipeline_variable', - 'secured': False, - 'uuid': '{9ddb0507-439a-495a- 99f3 - 564f15138127}' - }) - def test_update_secured_state(self, *args): - with patch.object(self.module, 'update_pipeline_variable') as update_pipeline_variable_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'name': 'PIPELINE_VAR_NAME', - 'value': '42', - 'secured': True, - 'state': 'present', - }) - self.module.main() - - self.assertEqual(update_pipeline_variable_mock.call_count, 1) - self.assertEqual(exec_info.exception.args[0]['changed'], True) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_pipeline_variable, 'get_existing_pipeline_variable', return_value={ - 'name': 'PIPELINE_VAR_NAME', - 'value': '42', - 'type': 'pipeline_variable', - 'secured': False, - 'uuid': '{9ddb0507-439a-495a- 99f3 - 564f15138127}' - }) - def test_dont_update_same_value(self, *args): - with patch.object(self.module, 'update_pipeline_variable') as update_pipeline_variable_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'name': 'PIPELINE_VAR_NAME', - 'value': '42', - 'state': 'present', - }) - self.module.main() - - self.assertEqual(update_pipeline_variable_mock.call_count, 0) - self.assertEqual(exec_info.exception.args[0]['changed'], False) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_pipeline_variable, 'get_existing_pipeline_variable', return_value={ - 'name': 'PIPELINE_VAR_NAME', - 'value': 'Im alive', - 'type': 'pipeline_variable', - 'secured': False, - 'uuid': '{9ddb0507-439a-495a- 99f3 - 564f15138127}' - }) - def test_update_variable_check_mode(self, *args): - with patch.object(self.module, 'update_pipeline_variable') as update_pipeline_variable_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'name': 'PIPELINE_VAR_NAME', - 'value': '42', - 'state': 'present', - '_ansible_check_mode': True, - }) - self.module.main() - - self.assertEqual(update_pipeline_variable_mock.call_count, 0) - self.assertEqual(exec_info.exception.args[0]['changed'], True) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_pipeline_variable, 'get_existing_pipeline_variable', return_value={ - 'name': 'PIPELINE_VAR_NAME', - 'value': 'Im alive', - 'type': 'pipeline_variable', - 'secured': False, - 'uuid': '{9ddb0507-439a-495a- 99f3 - 564f15138127}' - }) - def test_delete_variable(self, *args): - with patch.object(self.module, 'delete_pipeline_variable') as delete_pipeline_variable_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'name': 'PIPELINE_VAR_NAME', - 'state': 'absent', - }) - self.module.main() - - self.assertEqual(delete_pipeline_variable_mock.call_count, 1) - self.assertEqual(exec_info.exception.args[0]['changed'], True) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_pipeline_variable, 'get_existing_pipeline_variable', return_value=None) - def test_delete_absent_variable(self, *args): - with patch.object(self.module, 'delete_pipeline_variable') as delete_pipeline_variable_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'name': 'PIPELINE_VAR_NAME', - 'state': 'absent', - }) - self.module.main() - - self.assertEqual(delete_pipeline_variable_mock.call_count, 0) - self.assertEqual(exec_info.exception.args[0]['changed'], False) - - @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token') - @patch.object(bitbucket_pipeline_variable, 'get_existing_pipeline_variable', return_value={ - 'name': 'PIPELINE_VAR_NAME', - 'value': 'Im alive', - 'type': 'pipeline_variable', - 'secured': False, - 'uuid': '{9ddb0507-439a-495a- 99f3 - 564f15138127}' - }) - def test_delete_variable_check_mode(self, *args): - with patch.object(self.module, 'delete_pipeline_variable') as delete_pipeline_variable_mock: - with self.assertRaises(AnsibleExitJson) as exec_info: - set_module_args({ - 'client_id': 'ABC', - 'client_secret': 'XXX', - 'username': 'name', - 'repository': 'repo', - 'name': 'PIPELINE_VAR_NAME', - 'state': 'absent', - '_ansible_check_mode': True, - }) - self.module.main() - - self.assertEqual(delete_pipeline_variable_mock.call_count, 0) - self.assertEqual(exec_info.exception.args[0]['changed'], True) - - -if __name__ == '__main__': - unittest.main() diff --git a/test/units/modules/source_control/gitlab/gitlab.py b/test/units/modules/source_control/gitlab/gitlab.py deleted file mode 100644 index aacada058e..0000000000 --- a/test/units/modules/source_control/gitlab/gitlab.py +++ /dev/null @@ -1,580 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright: (c) 2019, Guillaume Martinez (lunik@tiwabbit.fr) -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import - -import sys - -from httmock import response # noqa -from httmock import urlmatch # noqa - -from units.compat import unittest - -from gitlab import Gitlab - - -class FakeAnsibleModule(object): - def __init__(self): - self.check_mode = False - - def fail_json(self, **args): - pass - - def exit_json(self, **args): - pass - - -class GitlabModuleTestCase(unittest.TestCase): - def setUp(self): - unitest_python_version_check_requirement(self) - - self.mock_module = FakeAnsibleModule() - - self.gitlab_instance = Gitlab("http://localhost", private_token="private_token", api_version=4) - - -# Python 2.7+ is needed for python-gitlab -GITLAB_MINIMUM_PYTHON_VERSION = (2, 7) - - -# Verify if the current Python version is higher than GITLAB_MINIMUM_PYTHON_VERSION -def python_version_match_requirement(): - return sys.version_info >= GITLAB_MINIMUM_PYTHON_VERSION - - -# Skip unittest test case if python version don't match requirement -def unitest_python_version_check_requirement(unittest_testcase): - if not python_version_match_requirement(): - unittest_testcase.skipTest("Python %s+ is needed for python-gitlab" % ",".join(map(str, GITLAB_MINIMUM_PYTHON_VERSION))) - - -''' -USER API -''' - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/users", method="get") -def resp_find_user(url, request): - headers = {'content-type': 'application/json'} - content = ('[{"id": 1, "username": "john_smith", "name": "John Smith", "state": "active",' - '"avatar_url": "http://localhost:3000/uploads/user/avatar/1/cd8.jpeg",' - '"web_url": "http://localhost:3000/john_smith"}, {"id": 2,' - '"username": "jack_smith", "name": "Jack Smith", "state": "blocked",' - '"avatar_url": "http://gravatar.com/../e32131cd8.jpeg",' - '"web_url": "http://localhost:3000/jack_smith"}]') - content = content.encode("utf-8") - return response(200, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/users", method="post") -def resp_create_user(url, request): - headers = {'content-type': 'application/json'} - content = ('{"id": 1, "username": "john_smith", "name": "John Smith", "state": "active",' - '"avatar_url": "http://localhost:3000/uploads/user/avatar/1/cd8.jpeg",' - '"web_url": "http://localhost:3000/john_smith","created_at": "2012-05-23T08:00:58Z",' - '"bio": null, "location": null, "public_email": "john@example.com", "skype": "",' - '"linkedin": "", "twitter": "", "website_url": "", "organization": ""}') - content = content.encode("utf-8") - return response(201, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/users/1", method="get") -def resp_get_user(url, request): - headers = {'content-type': 'application/json'} - content = ('{"id": 1, "username": "john_smith", "name": "John Smith",' - '"state": "active",' - '"avatar_url": "http://localhost:3000/uploads/user/avatar/1/cd8.jpeg",' - '"web_url": "http://localhost:3000/john_smith",' - '"created_at": "2012-05-23T08:00:58Z", "bio": null, "location": null,' - '"public_email": "john@example.com", "skype": "", "linkedin": "",' - '"twitter": "", "website_url": "", "organization": "", "is_admin": false}') - content = content.encode("utf-8") - return response(200, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/users/1", method="get") -def resp_get_missing_user(url, request): - headers = {'content-type': 'application/json'} - content = ('{}') - content = content.encode("utf-8") - return response(404, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/users/1", method="delete") -def resp_delete_user(url, request): - headers = {'content-type': 'application/json'} - content = ('{}') - content = content.encode("utf-8") - return response(204, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/users/1", method="delete") -def resp_delete_missing_user(url, request): - headers = {'content-type': 'application/json'} - content = ('{}') - content = content.encode("utf-8") - return response(404, content, headers, None, 5, request) - - -''' -USER SSHKEY API -''' - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/users/1/keys", method="get") -def resp_get_user_keys(url, request): - headers = {'content-type': 'application/json'} - content = ('[{"id": 1, "title": "Public key",' - '"key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596' - 'k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQa' - 'SeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",' - '"created_at": "2014-08-01T14:47:39.080Z"},{"id": 3,' - '"title": "Another Public key",' - '"key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596' - 'k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaS' - 'eP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",' - '"created_at": "2014-08-01T14:47:39.080Z"}]') - content = content.encode("utf-8") - return response(200, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/users/1/keys", method="post") -def resp_create_user_keys(url, request): - headers = {'content-type': 'application/json'} - content = ('{"id": 1, "title": "Private key",' - '"key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA1YotVDm2mAyk2tPt4E7AHm01sS6JZmcUdRuSuA5z' - 'szUJzYPPUSRAX3BCgTqLqYx//UuVncK7YqLVSbbwjKR2Ez5lISgCnVfLVEXzwhv+xawxKWmI7hJ5S0tOv6MJ+Ixy' - 'Ta4xcKwJTwB86z22n9fVOQeJTR2dSOH1WJrf0PvRk+KVNY2jTiGHTi9AIjLnyD/jWRpOgtdfkLRc8EzAWrWlgNmH' - '2WOKBw6za0az6XoG75obUdFVdW3qcD0xc809OHLi7FDf+E7U4wiZJCFuUizMeXyuK/SkaE1aee4Qp5R4dxTR4TP9' - 'M1XAYkf+kF0W9srZ+mhF069XD/zhUPJsvwEF",' - '"created_at": "2014-08-01T14:47:39.080Z"}') - content = content.encode("utf-8") - return response(201, content, headers, None, 5, request) - - -''' -GROUP API -''' - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/groups", method="get") -def resp_find_group(url, request): - headers = {'content-type': 'application/json'} - content = ('[{"id": 1, "name": "Foobar Group", "path": "foo-bar",' - '"description": "An interesting group", "visibility": "public",' - '"lfs_enabled": true, "avatar_url": "http://localhost:3000/uploads/group/avatar/1/foo.jpg",' - '"web_url": "http://localhost:3000/groups/foo-bar", "request_access_enabled": false,' - '"full_name": "Foobar Group", "full_path": "foo-bar",' - '"file_template_project_id": 1, "parent_id": null, "projects": []}, {"id": 2, "name": "BarFoo Group", "path": "bar-foor",' - '"description": "An interesting group", "visibility": "public",' - '"lfs_enabled": true, "avatar_url": "http://localhost:3000/uploads/group/avatar/2/bar.jpg",' - '"web_url": "http://localhost:3000/groups/bar-foo", "request_access_enabled": false,' - '"full_name": "BarFoo Group", "full_path": "bar-foo",' - '"file_template_project_id": 1, "parent_id": null, "projects": []}]') - content = content.encode("utf-8") - return response(200, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/groups/1", method="get") -def resp_get_group(url, request): - headers = {'content-type': 'application/json'} - content = ('{"id": 1, "name": "Foobar Group", "path": "foo-bar",' - '"description": "An interesting group", "visibility": "public",' - '"lfs_enabled": true, "avatar_url": "http://localhost:3000/uploads/group/avatar/1/foo.jpg",' - '"web_url": "http://localhost:3000/groups/foo-bar", "request_access_enabled": false,' - '"full_name": "Foobar Group", "full_path": "foo-bar",' - '"file_template_project_id": 1, "parent_id": null, "projects": [{"id": 1,"description": null, "default_branch": "master",' - '"ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",' - '"http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",' - '"web_url": "http://example.com/diaspora/diaspora-client",' - '"readme_url": "http://example.com/diaspora/diaspora-client/blob/master/README.md",' - '"tag_list": ["example","disapora client"],"name": "Diaspora Client",' - '"name_with_namespace": "Diaspora / Diaspora Client","path": "diaspora-client",' - '"path_with_namespace": "diaspora/diaspora-client","created_at": "2013-09-30T13:46:02Z",' - '"last_activity_at": "2013-09-30T13:46:02Z","forks_count": 0,' - '"avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",' - '"star_count": 0}]}') - content = content.encode("utf-8") - return response(200, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/groups/1", method="get") -def resp_get_missing_group(url, request): - headers = {'content-type': 'application/json'} - content = ('{}') - content = content.encode("utf-8") - return response(404, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/groups", method="post") -def resp_create_group(url, request): - headers = {'content-type': 'application/json'} - content = ('{"id": 1, "name": "Foobar Group", "path": "foo-bar",' - '"description": "An interesting group", "visibility": "public",' - '"lfs_enabled": true, "avatar_url": "http://localhost:3000/uploads/group/avatar/1/foo.jpg",' - '"web_url": "http://localhost:3000/groups/foo-bar", "request_access_enabled": false,' - '"full_name": "Foobar Group", "full_path": "foo-bar",' - '"file_template_project_id": 1, "parent_id": null}') - content = content.encode("utf-8") - return response(200, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/groups", method="post") -def resp_create_subgroup(url, request): - headers = {'content-type': 'application/json'} - content = ('{"id": 2, "name": "BarFoo Group", "path": "bar-foor",' - '"description": "An interesting group", "visibility": "public",' - '"lfs_enabled": true, "avatar_url": "http://localhost:3000/uploads/group/avatar/2/bar.jpg",' - '"web_url": "http://localhost:3000/groups/foo-bar/bar-foo", "request_access_enabled": false,' - '"full_name": "BarFoo Group", "full_path": "foo-bar/bar-foo",' - '"file_template_project_id": 1, "parent_id": 1}') - content = content.encode("utf-8") - return response(200, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/users/1", method="delete") -def resp_delete_group(url, request): - headers = {'content-type': 'application/json'} - content = ('{}') - content = content.encode("utf-8") - return response(204, content, headers, None, 5, request) - - -''' -GROUP MEMBER API -''' - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/groups/1/members/1", method="get") -def resp_get_member(url, request): - headers = {'content-type': 'application/json'} - content = ('{"id": 1, "username": "raymond_smith", "name": "Raymond Smith", "state": "active",' - '"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",' - '"web_url": "http://192.168.1.8:3000/root", "expires_at": "2012-10-22T14:13:35Z", "access_level": 30}') - content = content.encode("utf-8") - return response(200, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/groups/1/members", method="get") -def resp_find_member(url, request): - headers = {'content-type': 'application/json'} - content = ('[{"id": 1, "username": "raymond_smith", "name": "Raymond Smith", "state": "active",' - '"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",' - '"web_url": "http://192.168.1.8:3000/root", "expires_at": "2012-10-22T14:13:35Z", "access_level": 30},{' - '"id": 2, "username": "john_doe", "name": "John Doe","state": "active",' - '"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",' - '"web_url": "http://192.168.1.8:3000/root","expires_at": "2012-10-22T14:13:35Z",' - '"access_level": 30}]') - content = content.encode("utf-8") - return response(200, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/groups/1/members", method="post") -def resp_add_member(url, request): - headers = {'content-type': 'application/json'} - content = ('{"id": 1, "username": "raymond_smith", "name": "Raymond Smith",' - '"state": "active",' - '"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",' - '"web_url": "http://192.168.1.8:3000/root", "expires_at": "2012-10-22T14:13:35Z",' - '"access_level": 30}') - content = content.encode("utf-8") - return response(200, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/groups/1/members/1", method="put") -def resp_update_member(url, request): - headers = {'content-type': 'application/json'} - content = ('{"id": 1, "username": "raymond_smith", "name": "Raymond Smith",' - '"state": "active",' - '"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",' - '"web_url": "http://192.168.1.8:3000/root", "expires_at": "2012-10-22T14:13:35Z",' - '"access_level": 10}') - content = content.encode("utf-8") - return response(200, content, headers, None, 5, request) - - -''' -DEPLOY KEY API -''' - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects/1/deploy_keys", method="get") -def resp_find_project_deploy_key(url, request): - headers = {'content-type': 'application/json'} - content = ('[{"id": 1,"title": "Public key",' - '"key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxc' - 'KDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",' - '"created_at": "2013-10-02T10:12:29Z"},{"id": 3,"title": "Another Public key",' - '"key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxc' - 'KDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",' - '"created_at": "2013-10-02T11:12:29Z"}]') - content = content.encode("utf-8") - return response(200, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects/1/deploy_keys/1", method="get") -def resp_get_project_deploy_key(url, request): - headers = {'content-type': 'application/json'} - content = ('{"id": 1,"title": "Public key",' - '"key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxc' - 'KDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",' - '"created_at": "2013-10-02T10:12:29Z"}') - content = content.encode("utf-8") - return response(200, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects/1/deploy_keys", method="post") -def resp_create_project_deploy_key(url, request): - headers = {'content-type': 'application/json'} - content = ('{"id": 1,"title": "Public key",' - '"key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxc' - 'KDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",' - '"created_at": "2013-10-02T10:12:29Z"}') - content = content.encode("utf-8") - return response(201, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects/1/deploy_keys/1", method="delete") -def resp_delete_project_deploy_key(url, request): - headers = {'content-type': 'application/json'} - content = ('{}') - content = content.encode("utf-8") - return response(204, content, headers, None, 5, request) - - -''' -PROJECT API -''' - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects", method="get") -def resp_find_project(url, request): - headers = {'content-type': 'application/json'} - content = ('[{"id": 1,"description": null, "default_branch": "master",' - '"ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",' - '"http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",' - '"web_url": "http://example.com/diaspora/diaspora-client",' - '"readme_url": "http://example.com/diaspora/diaspora-client/blob/master/README.md",' - '"tag_list": ["example","disapora client"],"name": "Diaspora Client",' - '"name_with_namespace": "Diaspora / Diaspora Client","path": "diaspora-client",' - '"path_with_namespace": "diaspora/diaspora-client","created_at": "2013-09-30T13:46:02Z",' - '"last_activity_at": "2013-09-30T13:46:02Z","forks_count": 0,' - '"avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",' - '"star_count": 0}]') - content = content.encode("utf-8") - return response(200, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects/1", method="get") -def resp_get_project(url, request): - headers = {'content-type': 'application/json'} - content = ('{"id": 1,"description": null, "default_branch": "master",' - '"ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",' - '"http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",' - '"web_url": "http://example.com/diaspora/diaspora-client",' - '"readme_url": "http://example.com/diaspora/diaspora-client/blob/master/README.md",' - '"tag_list": ["example","disapora client"],"name": "Diaspora Client",' - '"name_with_namespace": "Diaspora / Diaspora Client","path": "diaspora-client",' - '"path_with_namespace": "diaspora/diaspora-client","created_at": "2013-09-30T13:46:02Z",' - '"last_activity_at": "2013-09-30T13:46:02Z","forks_count": 0,' - '"avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",' - '"star_count": 0}') - content = content.encode("utf-8") - return response(200, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects/foo-bar%2Fdiaspora-client", method="get") -def resp_get_project_by_name(url, request): - headers = {'content-type': 'application/json'} - content = ('{"id": 1,"description": null, "default_branch": "master",' - '"ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",' - '"http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",' - '"web_url": "http://example.com/diaspora/diaspora-client",' - '"readme_url": "http://example.com/diaspora/diaspora-client/blob/master/README.md",' - '"tag_list": ["example","disapora client"],"name": "Diaspora Client",' - '"name_with_namespace": "Diaspora / Diaspora Client","path": "diaspora-client",' - '"path_with_namespace": "diaspora/diaspora-client","created_at": "2013-09-30T13:46:02Z",' - '"last_activity_at": "2013-09-30T13:46:02Z","forks_count": 0,' - '"avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",' - '"star_count": 0}') - content = content.encode("utf-8") - return response(200, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/groups/1/projects", method="get") -def resp_find_group_project(url, request): - headers = {'content-type': 'application/json'} - content = ('[{"id": 1,"description": null, "default_branch": "master",' - '"ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",' - '"http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",' - '"web_url": "http://example.com/diaspora/diaspora-client",' - '"readme_url": "http://example.com/diaspora/diaspora-client/blob/master/README.md",' - '"tag_list": ["example","disapora client"],"name": "Diaspora Client",' - '"name_with_namespace": "Diaspora / Diaspora Client","path": "diaspora-client",' - '"path_with_namespace": "diaspora/diaspora-client","created_at": "2013-09-30T13:46:02Z",' - '"last_activity_at": "2013-09-30T13:46:02Z","forks_count": 0,' - '"avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",' - '"star_count": 0}]') - content = content.encode("utf-8") - return response(200, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/groups/1/projects/1", method="get") -def resp_get_group_project(url, request): - headers = {'content-type': 'application/json'} - content = ('{"id": 1,"description": null, "default_branch": "master",' - '"ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",' - '"http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",' - '"web_url": "http://example.com/diaspora/diaspora-client",' - '"readme_url": "http://example.com/diaspora/diaspora-client/blob/master/README.md",' - '"tag_list": ["example","disapora client"],"name": "Diaspora Client",' - '"name_with_namespace": "Diaspora / Diaspora Client","path": "diaspora-client",' - '"path_with_namespace": "diaspora/diaspora-client","created_at": "2013-09-30T13:46:02Z",' - '"last_activity_at": "2013-09-30T13:46:02Z","forks_count": 0,' - '"avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",' - '"star_count": 0}') - content = content.encode("utf-8") - return response(200, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects", method="post") -def resp_create_project(url, request): - headers = {'content-type': 'application/json'} - content = ('{"id": 1,"description": null, "default_branch": "master",' - '"ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",' - '"http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",' - '"web_url": "http://example.com/diaspora/diaspora-client",' - '"readme_url": "http://example.com/diaspora/diaspora-client/blob/master/README.md",' - '"tag_list": ["example","disapora client"],"name": "Diaspora Client",' - '"name_with_namespace": "Diaspora / Diaspora Client","path": "diaspora-client",' - '"path_with_namespace": "diaspora/diaspora-client","created_at": "2013-09-30T13:46:02Z",' - '"last_activity_at": "2013-09-30T13:46:02Z","forks_count": 0,' - '"avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",' - '"star_count": 0}') - content = content.encode("utf-8") - return response(201, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects/1", method="delete") -def resp_delete_project(url, request): - headers = {'content-type': 'application/json'} - content = ('{}') - content = content.encode("utf-8") - - return response(204, content, headers, None, 5, request) - - -''' -HOOK API -''' - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects/1/hooks", method="get") -def resp_find_project_hook(url, request): - headers = {'content-type': 'application/json'} - content = ('[{"id": 1,"url": "http://example.com/hook","project_id": 3,' - '"push_events": true,"push_events_branch_filter": "","issues_events": true,' - '"confidential_issues_events": true,"merge_requests_events": true,' - '"tag_push_events": true,"note_events": true,"job_events": true,' - '"pipeline_events": true,"wiki_page_events": true,"enable_ssl_verification": true,' - '"created_at": "2012-10-12T17:04:47Z"}]') - content = content.encode("utf-8") - return response(200, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects/1/hooks/1", method="get") -def resp_get_project_hook(url, request): - headers = {'content-type': 'application/json'} - content = ('{"id": 1,"url": "http://example.com/hook","project_id": 3,' - '"push_events": true,"push_events_branch_filter": "","issues_events": true,' - '"confidential_issues_events": true,"merge_requests_events": true,' - '"tag_push_events": true,"note_events": true,"job_events": true,' - '"pipeline_events": true,"wiki_page_events": true,"enable_ssl_verification": true,' - '"created_at": "2012-10-12T17:04:47Z"}') - content = content.encode("utf-8") - return response(200, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects/1/hooks", method="post") -def resp_create_project_hook(url, request): - headers = {'content-type': 'application/json'} - content = ('{"id": 1,"url": "http://example.com/hook","project_id": 3,' - '"push_events": true,"push_events_branch_filter": "","issues_events": true,' - '"confidential_issues_events": true,"merge_requests_events": true,' - '"tag_push_events": true,"note_events": true,"job_events": true,' - '"pipeline_events": true,"wiki_page_events": true,"enable_ssl_verification": true,' - '"created_at": "2012-10-12T17:04:47Z"}') - content = content.encode("utf-8") - return response(201, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects/1/hooks/1", method="delete") -def resp_delete_project_hook(url, request): - headers = {'content-type': 'application/json'} - content = ('{}') - content = content.encode("utf-8") - return response(204, content, headers, None, 5, request) - - -''' -RUNNER API -''' - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/runners/all", method="get") -def resp_find_runners_all(url, request): - headers = {'content-type': 'application/json'} - content = ('[{"active": true,"description": "test-1-20150125","id": 1,' - '"is_shared": false,"ip_address": "127.0.0.1","name": null,' - '"online": true,"status": "online"},{"active": true,' - '"description": "test-2-20150125","id": 2,"ip_address": "127.0.0.1",' - '"is_shared": false,"name": null,"online": false,"status": "offline"}]') - content = content.encode("utf-8") - return response(200, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/runners", method="get") -def resp_find_runners_list(url, request): - headers = {'content-type': 'application/json', - "X-Page": 1, - "X-Next-Page": 2, - "X-Per-Page": 1, - "X-Total-Pages": 1, - "X-Total": 2} - content = ('[{"active": true,"description": "test-1-20150125","id": 1,' - '"is_shared": false,"ip_address": "127.0.0.1","name": null,' - '"online": true,"status": "online"},{"active": true,' - '"description": "test-2-20150125","id": 2,"ip_address": "127.0.0.1",' - '"is_shared": false,"name": null,"online": false,"status": "offline"}]') - content = content.encode("utf-8") - return response(200, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/runners/1", method="get") -def resp_get_runner(url, request): - headers = {'content-type': 'application/json'} - content = ('{"active": true,"description": "test-1-20150125","id": 1,' - '"is_shared": false,"ip_address": "127.0.0.1","name": null,' - '"online": true,"status": "online"}') - content = content.encode("utf-8") - return response(200, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/runners", method="post") -def resp_create_runner(url, request): - headers = {'content-type': 'application/json'} - content = ('{"active": true,"description": "test-1-20150125","id": 1,' - '"is_shared": false,"ip_address": "127.0.0.1","name": null,' - '"online": true,"status": "online"}') - content = content.encode("utf-8") - return response(201, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/runners/1", method="delete") -def resp_delete_runner(url, request): - headers = {'content-type': 'application/json'} - content = ('{}') - content = content.encode("utf-8") - return response(204, content, headers, None, 5, request) diff --git a/test/units/modules/source_control/gitlab/test_gitlab_deploy_key.py b/test/units/modules/source_control/gitlab/test_gitlab_deploy_key.py deleted file mode 100644 index 24578524a3..0000000000 --- a/test/units/modules/source_control/gitlab/test_gitlab_deploy_key.py +++ /dev/null @@ -1,107 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright: (c) 2019, Guillaume Martinez (lunik@tiwabbit.fr) -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import - -import pytest - -from ansible.modules.source_control.gitlab.gitlab_deploy_key import GitLabDeployKey - - -def _dummy(x): - """Dummy function. Only used as a placeholder for toplevel definitions when the test is going - to be skipped anyway""" - return x - - -pytestmark = [] -try: - from .gitlab import (GitlabModuleTestCase, - python_version_match_requirement, - resp_get_project, resp_find_project_deploy_key, - resp_create_project_deploy_key, resp_delete_project_deploy_key) - - # GitLab module requirements - if python_version_match_requirement(): - from gitlab.v4.objects import ProjectKey -except ImportError: - pytestmark.append(pytest.mark.skip("Could not load gitlab module required for testing")) - # Need to set these to something so that we don't fail when parsing - GitlabModuleTestCase = object - resp_get_project = _dummy - resp_find_project_deploy_key = _dummy - resp_create_project_deploy_key = _dummy - resp_delete_project_deploy_key = _dummy - -# Unit tests requirements -try: - from httmock import with_httmock # noqa -except ImportError: - pytestmark.append(pytest.mark.skip("Could not load httmock module required for testing")) - with_httmock = _dummy - - -class TestGitlabDeployKey(GitlabModuleTestCase): - def setUp(self): - super(TestGitlabDeployKey, self).setUp() - - self.moduleUtil = GitLabDeployKey(module=self.mock_module, gitlab_instance=self.gitlab_instance) - - @with_httmock(resp_get_project) - @with_httmock(resp_find_project_deploy_key) - def test_deploy_key_exist(self): - project = self.gitlab_instance.projects.get(1) - - rvalue = self.moduleUtil.existsDeployKey(project, "Public key") - - self.assertEqual(rvalue, True) - - rvalue = self.moduleUtil.existsDeployKey(project, "Private key") - - self.assertEqual(rvalue, False) - - @with_httmock(resp_get_project) - @with_httmock(resp_create_project_deploy_key) - def test_create_deploy_key(self): - project = self.gitlab_instance.projects.get(1) - - deploy_key = self.moduleUtil.createDeployKey(project, {"title": "Public key", - "key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM" - "4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxc" - "KDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfD" - "zpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0="}) - - self.assertEqual(type(deploy_key), ProjectKey) - self.assertEqual(deploy_key.title, "Public key") - - @with_httmock(resp_get_project) - @with_httmock(resp_find_project_deploy_key) - @with_httmock(resp_create_project_deploy_key) - def test_update_deploy_key(self): - project = self.gitlab_instance.projects.get(1) - deployKey = self.moduleUtil.findDeployKey(project, "Public key") - - changed, newDeploy_key = self.moduleUtil.updateDeployKey(deployKey, {"title": "Private key"}) - - self.assertEqual(changed, True) - self.assertEqual(type(newDeploy_key), ProjectKey) - self.assertEqual(newDeploy_key.title, "Private key") - - changed, newDeploy_key = self.moduleUtil.updateDeployKey(deployKey, {"title": "Private key"}) - - self.assertEqual(changed, False) - self.assertEqual(newDeploy_key.title, "Private key") - - @with_httmock(resp_get_project) - @with_httmock(resp_find_project_deploy_key) - @with_httmock(resp_delete_project_deploy_key) - def test_delete_deploy_key(self): - project = self.gitlab_instance.projects.get(1) - - self.moduleUtil.existsDeployKey(project, "Public key") - - rvalue = self.moduleUtil.deleteDeployKey() - - self.assertEqual(rvalue, None) diff --git a/test/units/modules/source_control/gitlab/test_gitlab_group.py b/test/units/modules/source_control/gitlab/test_gitlab_group.py deleted file mode 100644 index e43e92f162..0000000000 --- a/test/units/modules/source_control/gitlab/test_gitlab_group.py +++ /dev/null @@ -1,108 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright: (c) 2019, Guillaume Martinez (lunik@tiwabbit.fr) -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import - -import pytest - -from ansible.modules.source_control.gitlab.gitlab_group import GitLabGroup - - -def _dummy(x): - """Dummy function. Only used as a placeholder for toplevel definitions when the test is going - to be skipped anyway""" - return x - - -pytestmark = [] -try: - from .gitlab import (GitlabModuleTestCase, - python_version_match_requirement, - resp_get_group, resp_get_missing_group, resp_create_group, - resp_create_subgroup, resp_delete_group, resp_find_group_project) - - # GitLab module requirements - if python_version_match_requirement(): - from gitlab.v4.objects import Group -except ImportError: - pytestmark.append(pytest.mark.skip("Could not load gitlab module required for testing")) - # Need to set these to something so that we don't fail when parsing - GitlabModuleTestCase = object - resp_get_group = _dummy - resp_get_missing_group = _dummy - resp_create_group = _dummy - resp_create_subgroup = _dummy - resp_delete_group = _dummy - resp_find_group_project = _dummy - -# Unit tests requirements -try: - from httmock import with_httmock # noqa -except ImportError: - pytestmark.append(pytest.mark.skip("Could not load httmock module required for testing")) - with_httmock = _dummy - - -class TestGitlabGroup(GitlabModuleTestCase): - def setUp(self): - super(TestGitlabGroup, self).setUp() - - self.moduleUtil = GitLabGroup(module=self.mock_module, gitlab_instance=self.gitlab_instance) - - @with_httmock(resp_get_group) - def test_exist_group(self): - rvalue = self.moduleUtil.existsGroup(1) - - self.assertEqual(rvalue, True) - - @with_httmock(resp_get_missing_group) - def test_exist_group(self): - rvalue = self.moduleUtil.existsGroup(1) - - self.assertEqual(rvalue, False) - - @with_httmock(resp_create_group) - def test_create_group(self): - group = self.moduleUtil.createGroup({'name': "Foobar Group", 'path': "foo-bar"}) - - self.assertEqual(type(group), Group) - self.assertEqual(group.name, "Foobar Group") - self.assertEqual(group.path, "foo-bar") - self.assertEqual(group.id, 1) - - @with_httmock(resp_create_subgroup) - def test_create_subgroup(self): - group = self.moduleUtil.createGroup({'name': "BarFoo Group", 'path': "bar-foo", "parent_id": 1}) - - self.assertEqual(type(group), Group) - self.assertEqual(group.name, "BarFoo Group") - self.assertEqual(group.full_path, "foo-bar/bar-foo") - self.assertEqual(group.id, 2) - self.assertEqual(group.parent_id, 1) - - @with_httmock(resp_get_group) - def test_update_group(self): - group = self.gitlab_instance.groups.get(1) - changed, newGroup = self.moduleUtil.updateGroup(group, {'name': "BarFoo Group", "visibility": "private"}) - - self.assertEqual(changed, True) - self.assertEqual(newGroup.name, "BarFoo Group") - self.assertEqual(newGroup.visibility, "private") - - changed, newGroup = self.moduleUtil.updateGroup(group, {'name': "BarFoo Group"}) - - self.assertEqual(changed, False) - - @with_httmock(resp_get_group) - @with_httmock(resp_find_group_project) - @with_httmock(resp_delete_group) - def test_delete_group(self): - self.moduleUtil.existsGroup(1) - - print(self.moduleUtil.groupObject.projects) - - rvalue = self.moduleUtil.deleteGroup() - - self.assertEqual(rvalue, None) diff --git a/test/units/modules/source_control/gitlab/test_gitlab_hook.py b/test/units/modules/source_control/gitlab/test_gitlab_hook.py deleted file mode 100644 index 29401ee53c..0000000000 --- a/test/units/modules/source_control/gitlab/test_gitlab_hook.py +++ /dev/null @@ -1,101 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright: (c) 2019, Guillaume Martinez (lunik@tiwabbit.fr) -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import -import pytest - -from ansible.modules.source_control.gitlab.gitlab_hook import GitLabHook - - -def _dummy(x): - """Dummy function. Only used as a placeholder for toplevel definitions when the test is going - to be skipped anyway""" - return x - - -pytestmark = [] -try: - from .gitlab import (GitlabModuleTestCase, - python_version_match_requirement, - resp_get_project, resp_find_project_hook, - resp_create_project_hook, resp_delete_project_hook) - - # GitLab module requirements - if python_version_match_requirement(): - from gitlab.v4.objects import ProjectHook -except ImportError: - pytestmark.append(pytest.mark.skip("Could not load gitlab module required for testing")) - # Need to set these to something so that we don't fail when parsing - GitlabModuleTestCase = object - resp_get_project = _dummy - resp_find_project_hook = _dummy - resp_create_project_hook = _dummy - resp_delete_project_hook = _dummy - -# Unit tests requirements -try: - from httmock import with_httmock # noqa -except ImportError: - pytestmark.append(pytest.mark.skip("Could not load httmock module required for testing")) - with_httmock = _dummy - - -class TestGitlabHook(GitlabModuleTestCase): - def setUp(self): - super(TestGitlabHook, self).setUp() - - self.moduleUtil = GitLabHook(module=self.mock_module, gitlab_instance=self.gitlab_instance) - - @with_httmock(resp_get_project) - @with_httmock(resp_find_project_hook) - def test_hook_exist(self): - project = self.gitlab_instance.projects.get(1) - - rvalue = self.moduleUtil.existsHook(project, "http://example.com/hook") - - self.assertEqual(rvalue, True) - - rvalue = self.moduleUtil.existsHook(project, "http://gitlab.com/hook") - - self.assertEqual(rvalue, False) - - @with_httmock(resp_get_project) - @with_httmock(resp_create_project_hook) - def test_create_hook(self): - project = self.gitlab_instance.projects.get(1) - - hook = self.moduleUtil.createHook(project, {"url": "http://example.com/hook"}) - - self.assertEqual(type(hook), ProjectHook) - self.assertEqual(hook.url, "http://example.com/hook") - - @with_httmock(resp_get_project) - @with_httmock(resp_find_project_hook) - def test_update_hook(self): - project = self.gitlab_instance.projects.get(1) - hook = self.moduleUtil.findHook(project, "http://example.com/hook") - - changed, newHook = self.moduleUtil.updateHook(hook, {"url": "http://gitlab.com/hook"}) - - self.assertEqual(changed, True) - self.assertEqual(type(newHook), ProjectHook) - self.assertEqual(newHook.url, "http://gitlab.com/hook") - - changed, newHook = self.moduleUtil.updateHook(hook, {"url": "http://gitlab.com/hook"}) - - self.assertEqual(changed, False) - self.assertEqual(newHook.url, "http://gitlab.com/hook") - - @with_httmock(resp_get_project) - @with_httmock(resp_find_project_hook) - @with_httmock(resp_delete_project_hook) - def test_delete_hook(self): - project = self.gitlab_instance.projects.get(1) - - self.moduleUtil.existsHook(project, "http://example.com/hook") - - rvalue = self.moduleUtil.deleteHook() - - self.assertEqual(rvalue, None) diff --git a/test/units/modules/source_control/gitlab/test_gitlab_project.py b/test/units/modules/source_control/gitlab/test_gitlab_project.py deleted file mode 100644 index 31b773f9cb..0000000000 --- a/test/units/modules/source_control/gitlab/test_gitlab_project.py +++ /dev/null @@ -1,103 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright: (c) 2019, Guillaume Martinez (lunik@tiwabbit.fr) -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import - -import pytest - -from ansible.modules.source_control.gitlab.gitlab_project import GitLabProject - - -def _dummy(x): - """Dummy function. Only used as a placeholder for toplevel definitions when the test is going - to be skipped anyway""" - return x - - -pytestmark = [] -try: - from .gitlab import (GitlabModuleTestCase, - python_version_match_requirement, - resp_get_group, resp_get_project_by_name, resp_create_project, - resp_get_project, resp_delete_project, resp_get_user) - - # GitLab module requirements - if python_version_match_requirement(): - from gitlab.v4.objects import Project -except ImportError: - pytestmark.append(pytest.mark.skip("Could not load gitlab module required for testing")) - # Need to set these to something so that we don't fail when parsing - GitlabModuleTestCase = object - resp_get_group = _dummy - resp_get_project_by_name = _dummy - resp_create_project = _dummy - resp_get_project = _dummy - resp_delete_project = _dummy - resp_get_user = _dummy - -# Unit tests requirements -try: - from httmock import with_httmock # noqa -except ImportError: - pytestmark.append(pytest.mark.skip("Could not load httmock module required for testing")) - with_httmock = _dummy - - -class TestGitlabProject(GitlabModuleTestCase): - @with_httmock(resp_get_user) - def setUp(self): - super(TestGitlabProject, self).setUp() - - self.gitlab_instance.user = self.gitlab_instance.users.get(1) - self.moduleUtil = GitLabProject(module=self.mock_module, gitlab_instance=self.gitlab_instance) - - @with_httmock(resp_get_group) - @with_httmock(resp_get_project_by_name) - def test_project_exist(self): - group = self.gitlab_instance.groups.get(1) - - rvalue = self.moduleUtil.existsProject(group, "diaspora-client") - - self.assertEqual(rvalue, True) - - rvalue = self.moduleUtil.existsProject(group, "missing-project") - - self.assertEqual(rvalue, False) - - @with_httmock(resp_get_group) - @with_httmock(resp_create_project) - def test_create_project(self): - group = self.gitlab_instance.groups.get(1) - project = self.moduleUtil.createProject(group, {"name": "Diaspora Client", "path": "diaspora-client", "namespace_id": group.id}) - - self.assertEqual(type(project), Project) - self.assertEqual(project.name, "Diaspora Client") - - @with_httmock(resp_get_project) - def test_update_project(self): - project = self.gitlab_instance.projects.get(1) - - changed, newProject = self.moduleUtil.updateProject(project, {"name": "New Name"}) - - self.assertEqual(changed, True) - self.assertEqual(type(newProject), Project) - self.assertEqual(newProject.name, "New Name") - - changed, newProject = self.moduleUtil.updateProject(project, {"name": "New Name"}) - - self.assertEqual(changed, False) - self.assertEqual(newProject.name, "New Name") - - @with_httmock(resp_get_group) - @with_httmock(resp_get_project_by_name) - @with_httmock(resp_delete_project) - def test_delete_project(self): - group = self.gitlab_instance.groups.get(1) - - self.moduleUtil.existsProject(group, "diaspora-client") - - rvalue = self.moduleUtil.deleteProject() - - self.assertEqual(rvalue, None) diff --git a/test/units/modules/source_control/gitlab/test_gitlab_runner.py b/test/units/modules/source_control/gitlab/test_gitlab_runner.py deleted file mode 100644 index 57f3f2411f..0000000000 --- a/test/units/modules/source_control/gitlab/test_gitlab_runner.py +++ /dev/null @@ -1,94 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright: (c) 2019, Guillaume Martinez (lunik@tiwabbit.fr) -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import - -import pytest - -from ansible.modules.source_control.gitlab.gitlab_runner import GitLabRunner - - -def _dummy(x): - """Dummy function. Only used as a placeholder for toplevel definitions when the test is going - to be skipped anyway""" - return x - - -pytestmark = [] -try: - from .gitlab import (GitlabModuleTestCase, - python_version_match_requirement, - resp_find_runners_list, resp_get_runner, - resp_create_runner, resp_delete_runner) - - # GitLab module requirements - if python_version_match_requirement(): - from gitlab.v4.objects import Runner -except ImportError: - pytestmark.append(pytest.mark.skip("Could not load gitlab module required for testing")) - # Need to set these to something so that we don't fail when parsing - GitlabModuleTestCase = object - resp_find_runners_list = _dummy - resp_get_runner = _dummy - resp_create_runner = _dummy - resp_delete_runner = _dummy - -# Unit tests requirements -try: - from httmock import with_httmock # noqa -except ImportError: - pytestmark.append(pytest.mark.skip("Could not load httmock module required for testing")) - with_httmock = _dummy - - -class TestGitlabRunner(GitlabModuleTestCase): - def setUp(self): - super(TestGitlabRunner, self).setUp() - - self.moduleUtil = GitLabRunner(module=self.mock_module, gitlab_instance=self.gitlab_instance) - - @with_httmock(resp_find_runners_list) - @with_httmock(resp_get_runner) - def test_runner_exist(self): - rvalue = self.moduleUtil.existsRunner("test-1-20150125") - - self.assertEqual(rvalue, True) - - rvalue = self.moduleUtil.existsRunner("test-3-00000000") - - self.assertEqual(rvalue, False) - - @with_httmock(resp_create_runner) - def test_create_runner(self): - runner = self.moduleUtil.createRunner({"token": "token", "description": "test-1-20150125"}) - - self.assertEqual(type(runner), Runner) - self.assertEqual(runner.description, "test-1-20150125") - - @with_httmock(resp_find_runners_list) - @with_httmock(resp_get_runner) - def test_update_runner(self): - runner = self.moduleUtil.findRunner("test-1-20150125") - - changed, newRunner = self.moduleUtil.updateRunner(runner, {"description": "Runner description"}) - - self.assertEqual(changed, True) - self.assertEqual(type(newRunner), Runner) - self.assertEqual(newRunner.description, "Runner description") - - changed, newRunner = self.moduleUtil.updateRunner(runner, {"description": "Runner description"}) - - self.assertEqual(changed, False) - self.assertEqual(newRunner.description, "Runner description") - - @with_httmock(resp_find_runners_list) - @with_httmock(resp_get_runner) - @with_httmock(resp_delete_runner) - def test_delete_runner(self): - self.moduleUtil.existsRunner("test-1-20150125") - - rvalue = self.moduleUtil.deleteRunner() - - self.assertEqual(rvalue, None) diff --git a/test/units/modules/source_control/gitlab/test_gitlab_user.py b/test/units/modules/source_control/gitlab/test_gitlab_user.py deleted file mode 100644 index e7ac926ed8..0000000000 --- a/test/units/modules/source_control/gitlab/test_gitlab_user.py +++ /dev/null @@ -1,163 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright: (c) 2019, Guillaume Martinez (lunik@tiwabbit.fr) -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import - -import pytest - -from ansible.modules.source_control.gitlab.gitlab_user import GitLabUser - - -def _dummy(x): - """Dummy function. Only used as a placeholder for toplevel definitions when the test is going - to be skipped anyway""" - return x - - -pytestmark = [] -try: - from .gitlab import (GitlabModuleTestCase, - python_version_match_requirement, - resp_find_user, resp_get_user, resp_get_user_keys, - resp_create_user_keys, resp_create_user, resp_delete_user, - resp_get_member, resp_get_group, resp_add_member, - resp_update_member, resp_get_member) - - # GitLab module requirements - if python_version_match_requirement(): - from gitlab.v4.objects import User -except ImportError: - pytestmark.append(pytest.mark.skip("Could not load gitlab module required for testing")) - # Need to set these to something so that we don't fail when parsing - GitlabModuleTestCase = object - resp_find_user = _dummy - resp_get_user = _dummy - resp_get_user_keys = _dummy - resp_create_user_keys = _dummy - resp_create_user = _dummy - resp_delete_user = _dummy - resp_get_member = _dummy - resp_get_group = _dummy - resp_add_member = _dummy - resp_update_member = _dummy - resp_get_member = _dummy - -# Unit tests requirements -try: - from httmock import with_httmock # noqa -except ImportError: - pytestmark.append(pytest.mark.skip("Could not load httmock module required for testing")) - with_httmock = _dummy - - -class TestGitlabUser(GitlabModuleTestCase): - def setUp(self): - super(TestGitlabUser, self).setUp() - - self.moduleUtil = GitLabUser(module=self.mock_module, gitlab_instance=self.gitlab_instance) - - @with_httmock(resp_find_user) - def test_exist_user(self): - rvalue = self.moduleUtil.existsUser("john_smith") - - self.assertEqual(rvalue, True) - - rvalue = self.moduleUtil.existsUser("paul_smith") - - self.assertEqual(rvalue, False) - - @with_httmock(resp_find_user) - def test_find_user(self): - user = self.moduleUtil.findUser("john_smith") - - self.assertEqual(type(user), User) - self.assertEqual(user.name, "John Smith") - self.assertEqual(user.id, 1) - - @with_httmock(resp_create_user) - def test_create_user(self): - user = self.moduleUtil.createUser({'email': 'john@example.com', 'password': 's3cur3s3cr3T', - 'username': 'john_smith', 'name': 'John Smith'}) - self.assertEqual(type(user), User) - self.assertEqual(user.name, "John Smith") - self.assertEqual(user.id, 1) - - @with_httmock(resp_get_user) - def test_update_user(self): - user = self.gitlab_instance.users.get(1) - changed, newUser = self.moduleUtil.updateUser(user, {'name': "Jack Smith", "is_admin": "true"}) - - self.assertEqual(changed, True) - self.assertEqual(newUser.name, "Jack Smith") - self.assertEqual(newUser.is_admin, "true") - - changed, newUser = self.moduleUtil.updateUser(user, {'name': "Jack Smith"}) - - self.assertEqual(changed, False) - - @with_httmock(resp_find_user) - @with_httmock(resp_delete_user) - def test_delete_user(self): - self.moduleUtil.existsUser("john_smith") - rvalue = self.moduleUtil.deleteUser() - - self.assertEqual(rvalue, None) - - @with_httmock(resp_get_user) - @with_httmock(resp_get_user_keys) - def test_sshkey_exist(self): - user = self.gitlab_instance.users.get(1) - - exist = self.moduleUtil.sshKeyExists(user, "Public key") - self.assertEqual(exist, True) - - notExist = self.moduleUtil.sshKeyExists(user, "Private key") - self.assertEqual(notExist, False) - - @with_httmock(resp_get_user) - @with_httmock(resp_create_user_keys) - @with_httmock(resp_get_user_keys) - def test_create_sshkey(self): - user = self.gitlab_instance.users.get(1) - - rvalue = self.moduleUtil.addSshKeyToUser(user, { - 'name': "Public key", - 'file': "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJe" - "jgt4596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4" - "soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0="}) - self.assertEqual(rvalue, False) - - rvalue = self.moduleUtil.addSshKeyToUser(user, { - 'name': "Private key", - 'file': "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA1YotVDm2mAyk2tPt4E7AHm01sS6JZmcU" - "dRuSuA5zszUJzYPPUSRAX3BCgTqLqYx//UuVncK7YqLVSbbwjKR2Ez5lISgCnVfLVEXzwhv+" - "xawxKWmI7hJ5S0tOv6MJ+IxyTa4xcKwJTwB86z22n9fVOQeJTR2dSOH1WJrf0PvRk+KVNY2j" - "TiGHTi9AIjLnyD/jWRpOgtdfkLRc8EzAWrWlgNmH2WOKBw6za0az6XoG75obUdFVdW3qcD0x" - "c809OHLi7FDf+E7U4wiZJCFuUizMeXyuK/SkaE1aee4Qp5R4dxTR4TP9M1XAYkf+kF0W9srZ+mhF069XD/zhUPJsvwEF"}) - self.assertEqual(rvalue, True) - - @with_httmock(resp_get_group) - @with_httmock(resp_get_member) - def test_find_member(self): - group = self.gitlab_instance.groups.get(1) - - user = self.moduleUtil.findMember(group, 1) - self.assertEqual(user.username, "raymond_smith") - - @with_httmock(resp_get_user) - @with_httmock(resp_get_group) - @with_httmock(resp_get_group) - @with_httmock(resp_get_member) - @with_httmock(resp_add_member) - @with_httmock(resp_update_member) - def test_assign_user_to_group(self): - group = self.gitlab_instance.groups.get(1) - user = self.gitlab_instance.users.get(1) - - rvalue = self.moduleUtil.assignUserToGroup(user, group.id, "developer") - self.assertEqual(rvalue, False) - - rvalue = self.moduleUtil.assignUserToGroup(user, group.id, "guest") - self.assertEqual(rvalue, True) diff --git a/test/units/modules/storage/hpe3par/test_ss_3par_cpg.py b/test/units/modules/storage/hpe3par/test_ss_3par_cpg.py deleted file mode 100644 index fa2844615e..0000000000 --- a/test/units/modules/storage/hpe3par/test_ss_3par_cpg.py +++ /dev/null @@ -1,246 +0,0 @@ -# Copyright: (c) 2018, Hewlett Packard Enterprise Development LP -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - - -import mock -import sys -sys.modules['hpe3par_sdk'] = mock.Mock() -sys.modules['hpe3par_sdk.client'] = mock.Mock() -sys.modules['hpe3parclient'] = mock.Mock() -sys.modules['hpe3parclient.exceptions'] = mock.Mock() -from ansible.modules.storage.hpe3par import ss_3par_cpg -from ansible.module_utils.storage.hpe3par import hpe3par - - -@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.client') -@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.AnsibleModule') -@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.create_cpg') -def test_module_args(mock_create_cpg, mock_module, mock_client): - """ - hpe3par CPG - test module arguments - """ - - PARAMS_FOR_PRESENT = { - 'storage_system_ip': '192.168.0.1', - 'storage_system_username': 'USER', - 'storage_system_password': 'PASS', - 'cpg_name': 'test_cpg', - 'domain': 'test_domain', - 'growth_increment': 32768, - 'growth_increment_unit': 'MiB', - 'growth_limit': 32768, - 'growth_limit_unit': 'MiB', - 'growth_warning': 32768, - 'growth_warning_unit': 'MiB', - 'raid_type': 'R6', - 'set_size': 8, - 'high_availability': 'MAG', - 'disk_type': 'FC', - 'state': 'present', - 'secure': False - } - mock_module.params = PARAMS_FOR_PRESENT - mock_module.return_value = mock_module - mock_client.HPE3ParClient.login.return_value = True - mock_create_cpg.return_value = (True, True, "Created CPG successfully.") - ss_3par_cpg.main() - mock_module.assert_called_with( - argument_spec=hpe3par.cpg_argument_spec(), - required_together=[['raid_type', 'set_size']]) - - -@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.client') -@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.AnsibleModule') -@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.create_cpg') -def test_main_exit_functionality_present_success_without_issue_attr_dict(mock_create_cpg, mock_module, mock_client): - """ - hpe3par flash cache - success check - """ - PARAMS_FOR_PRESENT = { - 'storage_system_ip': '192.168.0.1', - 'storage_system_name': '3PAR', - 'storage_system_username': 'USER', - 'storage_system_password': 'PASS', - 'cpg_name': 'test_cpg', - 'domain': 'test_domain', - 'growth_increment': 32768, - 'growth_increment_unit': 'MiB', - 'growth_limit': 32768, - 'growth_limit_unit': 'MiB', - 'growth_warning': 32768, - 'growth_warning_unit': 'MiB', - 'raid_type': 'R6', - 'set_size': 8, - 'high_availability': 'MAG', - 'disk_type': 'FC', - 'state': 'present', - 'secure': False - } - # This creates a instance of the AnsibleModule mock. - mock_module.params = PARAMS_FOR_PRESENT - mock_module.return_value = mock_module - instance = mock_module.return_value - mock_client.HPE3ParClient.login.return_value = True - mock_create_cpg.return_value = ( - True, True, "Created CPG successfully.") - ss_3par_cpg.main() - # AnsibleModule.exit_json should be called - instance.exit_json.assert_called_with( - changed=True, msg="Created CPG successfully.") - # AnsibleModule.fail_json should not be called - assert instance.fail_json.call_count == 0 - - -@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.client') -@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.AnsibleModule') -@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.delete_cpg') -def test_main_exit_functionality_absent_success_without_issue_attr_dict(mock_delete_cpg, mock_module, mock_client): - """ - hpe3par flash cache - success check - """ - PARAMS_FOR_DELETE = { - 'storage_system_ip': '192.168.0.1', - 'storage_system_name': '3PAR', - 'storage_system_username': 'USER', - 'storage_system_password': 'PASS', - 'cpg_name': 'test_cpg', - 'domain': None, - 'growth_increment': None, - 'growth_increment_unit': None, - 'growth_limit': None, - 'growth_limit_unit': None, - 'growth_warning': None, - 'growth_warning_unit': None, - 'raid_type': None, - 'set_size': None, - 'high_availability': None, - 'disk_type': None, - 'state': 'absent', - 'secure': False - } - # This creates a instance of the AnsibleModule mock. - mock_module.params = PARAMS_FOR_DELETE - mock_module.return_value = mock_module - instance = mock_module.return_value - mock_delete_cpg.return_value = ( - True, True, "Deleted CPG test_cpg successfully.") - mock_client.HPE3ParClient.login.return_value = True - ss_3par_cpg.main() - # AnsibleModule.exit_json should be called - instance.exit_json.assert_called_with( - changed=True, msg="Deleted CPG test_cpg successfully.") - # AnsibleModule.fail_json should not be called - assert instance.fail_json.call_count == 0 - - -def test_convert_to_binary_multiple(): - assert hpe3par.convert_to_binary_multiple(None) == -1 - assert hpe3par.convert_to_binary_multiple('-1.0 MiB') == -1 - assert hpe3par.convert_to_binary_multiple('-1.0GiB') == -1 - assert hpe3par.convert_to_binary_multiple('1.0 MiB') == 1 - assert hpe3par.convert_to_binary_multiple('1.5GiB') == 1.5 * 1024 - assert hpe3par.convert_to_binary_multiple('1.5 TiB') == 1.5 * 1024 * 1024 - assert hpe3par.convert_to_binary_multiple(' 1.5 TiB ') == 1.5 * 1024 * 1024 - - -@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.client') -def test_validate_set_size(mock_client): - mock_client.HPE3ParClient.RAID_MAP = {'R0': {'raid_value': 1, 'set_sizes': [1]}, - 'R1': {'raid_value': 2, 'set_sizes': [2, 3, 4]}, - 'R5': {'raid_value': 3, 'set_sizes': [3, 4, 5, 6, 7, 8, 9]}, - 'R6': {'raid_value': 4, 'set_sizes': [6, 8, 10, 12, 16]} - } - raid_type = 'R0' - set_size = 1 - assert ss_3par_cpg.validate_set_size(raid_type, set_size) - - set_size = 2 - assert not ss_3par_cpg.validate_set_size(raid_type, set_size) - - raid_type = None - assert not ss_3par_cpg.validate_set_size(raid_type, set_size) - - -@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.client') -def test_cpg_ldlayout_map(mock_client): - mock_client.HPE3ParClient.PORT = 1 - mock_client.HPE3ParClient.RAID_MAP = {'R0': {'raid_value': 1, 'set_sizes': [1]}, - 'R1': {'raid_value': 2, 'set_sizes': [2, 3, 4]}, - 'R5': {'raid_value': 3, 'set_sizes': [3, 4, 5, 6, 7, 8, 9]}, - 'R6': {'raid_value': 4, 'set_sizes': [6, 8, 10, 12, 16]} - } - ldlayout_dict = {'RAIDType': 'R6', 'HA': 'PORT'} - assert ss_3par_cpg.cpg_ldlayout_map(ldlayout_dict) == { - 'RAIDType': 4, 'HA': 1} - - -@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.client') -def test_create_cpg(mock_client): - ss_3par_cpg.validate_set_size = mock.Mock(return_value=True) - ss_3par_cpg.cpg_ldlayout_map = mock.Mock( - return_value={'RAIDType': 4, 'HA': 1}) - - mock_client.HPE3ParClient.login.return_value = True - mock_client.HPE3ParClient.cpgExists.return_value = False - mock_client.HPE3ParClient.FC = 1 - mock_client.HPE3ParClient.createCPG.return_value = True - - assert ss_3par_cpg.create_cpg(mock_client.HPE3ParClient, - 'test_cpg', - 'test_domain', - '32768 MiB', - '32768 MiB', - '32768 MiB', - 'R6', - 8, - 'MAG', - 'FC' - ) == (True, True, "Created CPG %s successfully." % 'test_cpg') - - mock_client.HPE3ParClient.cpgExists.return_value = True - assert ss_3par_cpg.create_cpg(mock_client.HPE3ParClient, - 'test_cpg', - 'test_domain', - '32768.0 MiB', - '32768.0 MiB', - '32768.0 MiB', - 'R6', - 8, - 'MAG', - 'FC' - ) == (True, False, 'CPG already present') - - ss_3par_cpg.validate_set_size = mock.Mock(return_value=False) - assert ss_3par_cpg.create_cpg(mock_client.HPE3ParClient, - 'test_cpg', - 'test_domain', - '32768.0 MiB', - '32768 MiB', - '32768.0 MiB', - 'R6', - 3, - 'MAG', - 'FC' - ) == (False, False, 'Set size 3 not part of RAID set R6') - - -@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.client') -def test_delete_cpg(mock_client): - mock_client.HPE3ParClient.login.return_value = True - mock_client.HPE3ParClient.cpgExists.return_value = True - mock_client.HPE3ParClient.FC = 1 - mock_client.HPE3ParClient.deleteCPG.return_value = True - - assert ss_3par_cpg.delete_cpg(mock_client.HPE3ParClient, - 'test_cpg' - ) == (True, True, "Deleted CPG %s successfully." % 'test_cpg') - - mock_client.HPE3ParClient.cpgExists.return_value = False - - assert ss_3par_cpg.delete_cpg(mock_client.HPE3ParClient, - 'test_cpg' - ) == (True, False, "CPG does not exist") - assert ss_3par_cpg.delete_cpg(mock_client.HPE3ParClient, - None - ) == (True, False, "CPG does not exist") diff --git a/test/units/modules/storage/netapp/test_netapp_e_alerts.py b/test/units/modules/storage/netapp/test_netapp_e_alerts.py deleted file mode 100644 index 762e457646..0000000000 --- a/test/units/modules/storage/netapp/test_netapp_e_alerts.py +++ /dev/null @@ -1,183 +0,0 @@ -# (c) 2018, NetApp Inc. -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from ansible.modules.storage.netapp.netapp_e_alerts import Alerts -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args - -__metaclass__ = type -from units.compat import mock - - -class AlertsTest(ModuleTestCase): - REQUIRED_PARAMS = { - 'api_username': 'rw', - 'api_password': 'password', - 'api_url': 'http://localhost', - 'ssid': '1', - 'state': 'disabled' - } - REQ_FUNC = 'ansible.modules.storage.netapp.netapp_e_alerts.request' - - def _set_args(self, **kwargs): - module_args = self.REQUIRED_PARAMS.copy() - if kwargs is not None: - module_args.update(kwargs) - set_module_args(module_args) - - def _validate_args(self, **kwargs): - self._set_args(**kwargs) - Alerts() - - def test_validation_disable(self): - """Ensure a default configuration succeeds""" - self._validate_args() - - def test_validation_enable(self): - """Ensure a typical, default configuration succeeds""" - self._validate_args(state='enabled', server='localhost', sender='x@y.z', recipients=['a@b.c']) - - def test_validation_fail_required(self): - """Ensure we fail on missing configuration""" - - # Missing recipients - with self.assertRaises(AnsibleFailJson): - self._validate_args(state='enabled', server='localhost', sender='x@y.z') - Alerts() - - # Missing sender - with self.assertRaises(AnsibleFailJson): - self._validate_args(state='enabled', server='localhost', recipients=['a@b.c']) - Alerts() - - # Missing server - with self.assertRaises(AnsibleFailJson): - self._validate_args(state='enabled', sender='x@y.z', recipients=['a@b.c']) - - def test_validation_fail(self): - # Empty recipients - with self.assertRaises(AnsibleFailJson): - self._validate_args(state='enabled', server='localhost', sender='x@y.z', recipients=[]) - - # Bad sender - with self.assertRaises(AnsibleFailJson): - self._validate_args(state='enabled', server='localhost', sender='y.z', recipients=['a@b.c']) - - def test_get_configuration(self): - """Validate retrieving the current configuration""" - self._set_args(state='enabled', server='localhost', sender='x@y.z', recipients=['a@b.c']) - - expected = 'result' - alerts = Alerts() - # Expecting an update - with mock.patch(self.REQ_FUNC, return_value=(200, expected)) as req: - actual = alerts.get_configuration() - self.assertEqual(expected, actual) - self.assertEqual(req.call_count, 1) - - def test_update_configuration(self): - """Validate updating the configuration""" - initial = dict(alertingEnabled=True, - emailServerAddress='localhost', - sendAdditionalContactInformation=True, - additionalContactInformation='None', - emailSenderAddress='x@y.z', - recipientEmailAddresses=['x@y.z'] - ) - - args = dict(state='enabled', server=initial['emailServerAddress'], sender=initial['emailSenderAddress'], - contact=initial['additionalContactInformation'], recipients=initial['recipientEmailAddresses']) - - self._set_args(**args) - - alerts = Alerts() - - # Ensure when trigger updates when each relevant field is changed - with mock.patch(self.REQ_FUNC, return_value=(200, None)) as req: - with mock.patch.object(alerts, 'get_configuration', return_value=initial): - update = alerts.update_configuration() - self.assertFalse(update) - - alerts.sender = 'a@b.c' - update = alerts.update_configuration() - self.assertTrue(update) - self._set_args(**args) - - alerts.recipients = ['a@b.c'] - update = alerts.update_configuration() - self.assertTrue(update) - self._set_args(**args) - - alerts.contact = 'abc' - update = alerts.update_configuration() - self.assertTrue(update) - self._set_args(**args) - - alerts.server = 'abc' - update = alerts.update_configuration() - self.assertTrue(update) - - def test_send_test_email_check(self): - """Ensure we handle check_mode correctly""" - self._set_args(test=True) - alerts = Alerts() - alerts.check_mode = True - with mock.patch(self.REQ_FUNC) as req: - with mock.patch.object(alerts, 'update_configuration', return_value=True): - alerts.send_test_email() - self.assertFalse(req.called) - - def test_send_test_email(self): - """Ensure we send a test email if test=True""" - self._set_args(test=True) - alerts = Alerts() - - with mock.patch(self.REQ_FUNC, return_value=(200, dict(response='emailSentOK'))) as req: - alerts.send_test_email() - self.assertTrue(req.called) - - def test_send_test_email_fail(self): - """Ensure we fail if the test returned a failure status""" - self._set_args(test=True) - alerts = Alerts() - - ret_msg = 'fail' - with self.assertRaisesRegexp(AnsibleFailJson, ret_msg): - with mock.patch(self.REQ_FUNC, return_value=(200, dict(response=ret_msg))) as req: - alerts.send_test_email() - self.assertTrue(req.called) - - def test_send_test_email_fail_connection(self): - """Ensure we fail cleanly if we hit a connection failure""" - self._set_args(test=True) - alerts = Alerts() - - with self.assertRaisesRegexp(AnsibleFailJson, r"failed to send"): - with mock.patch(self.REQ_FUNC, side_effect=Exception) as req: - alerts.send_test_email() - self.assertTrue(req.called) - - def test_update(self): - # Ensure that when test is enabled and alerting is enabled, we run the test - self._set_args(state='enabled', server='localhost', sender='x@y.z', recipients=['a@b.c'], test=True) - alerts = Alerts() - with self.assertRaisesRegexp(AnsibleExitJson, r"enabled"): - with mock.patch.object(alerts, 'update_configuration', return_value=True): - with mock.patch.object(alerts, 'send_test_email') as test: - alerts.update() - self.assertTrue(test.called) - - # Ensure we don't run a test when changed=False - with self.assertRaisesRegexp(AnsibleExitJson, r"enabled"): - with mock.patch.object(alerts, 'update_configuration', return_value=False): - with mock.patch.object(alerts, 'send_test_email') as test: - alerts.update() - self.assertFalse(test.called) - - # Ensure that test is not called when we have alerting disabled - self._set_args(state='disabled') - alerts = Alerts() - with self.assertRaisesRegexp(AnsibleExitJson, r"disabled"): - with mock.patch.object(alerts, 'update_configuration', return_value=True): - with mock.patch.object(alerts, 'send_test_email') as test: - alerts.update() - self.assertFalse(test.called) diff --git a/test/units/modules/storage/netapp/test_netapp_e_asup.py b/test/units/modules/storage/netapp/test_netapp_e_asup.py deleted file mode 100644 index 8f7d823def..0000000000 --- a/test/units/modules/storage/netapp/test_netapp_e_asup.py +++ /dev/null @@ -1,181 +0,0 @@ -# (c) 2018, NetApp Inc. -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -import json - -from ansible.modules.storage.netapp.netapp_e_asup import Asup -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args - -__metaclass__ = type -from units.compat import mock - - -class AsupTest(ModuleTestCase): - REQUIRED_PARAMS = { - 'api_username': 'rw', - 'api_password': 'password', - 'api_url': 'http://localhost', - 'ssid': '1', - } - REQ_FUNC = 'ansible.modules.storage.netapp.netapp_e_asup.request' - - def _set_args(self, args=None): - module_args = self.REQUIRED_PARAMS.copy() - if args is not None: - module_args.update(args) - set_module_args(module_args) - - def test_get_config_asup_capable_false(self): - """Ensure we fail correctly if ASUP is not available on this platform""" - self._set_args() - - expected = dict(asupCapable=False, onDemandCapable=True) - asup = Asup() - # Expecting an update - with self.assertRaisesRegexp(AnsibleFailJson, r"not supported"): - with mock.patch(self.REQ_FUNC, return_value=(200, expected)): - asup.get_configuration() - - def test_get_config_on_demand_capable_false(self): - """Ensure we fail correctly if ASUP is not available on this platform""" - self._set_args() - - expected = dict(asupCapable=True, onDemandCapable=False) - asup = Asup() - # Expecting an update - with self.assertRaisesRegexp(AnsibleFailJson, r"not supported"): - with mock.patch(self.REQ_FUNC, return_value=(200, expected)): - asup.get_configuration() - - def test_get_config(self): - """Validate retrieving the ASUP configuration""" - self._set_args() - - expected = dict(asupCapable=True, onDemandCapable=True) - asup = Asup() - - with mock.patch(self.REQ_FUNC, return_value=(200, expected)): - config = asup.get_configuration() - self.assertEqual(config, expected) - - def test_update_configuration(self): - """Validate retrieving the ASUP configuration""" - self._set_args(dict(asup='enabled')) - - expected = dict() - initial = dict(asupCapable=True, - asupEnabled=True, - onDemandEnabled=False, - remoteDiagsEnabled=False, - schedule=dict(daysOfWeek=[], dailyMinTime=0, weeklyMinTime=0, dailyMaxTime=24, weeklyMaxTime=24)) - asup = Asup() - - with mock.patch(self.REQ_FUNC, return_value=(200, expected)) as req: - with mock.patch.object(asup, 'get_configuration', return_value=initial): - updated = asup.update_configuration() - self.assertTrue(req.called) - self.assertTrue(updated) - - def test_update_configuration_asup_disable(self): - """Validate retrieving the ASUP configuration""" - self._set_args(dict(asup='disabled')) - - expected = dict() - initial = dict(asupCapable=True, - asupEnabled=True, - onDemandEnabled=False, - remoteDiagsEnabled=False, - schedule=dict(daysOfWeek=[], dailyMinTime=0, weeklyMinTime=0, dailyMaxTime=24, weeklyMaxTime=24)) - asup = Asup() - - with mock.patch(self.REQ_FUNC, return_value=(200, expected)) as req: - with mock.patch.object(asup, 'get_configuration', return_value=initial): - updated = asup.update_configuration() - self.assertTrue(updated) - - self.assertTrue(req.called) - - # Ensure it was called with the right arguments - called_with = req.call_args - body = json.loads(called_with[1]['data']) - self.assertFalse(body['asupEnabled']) - - def test_update_configuration_enable(self): - """Validate retrieving the ASUP configuration""" - self._set_args(dict(asup='enabled')) - - expected = dict() - initial = dict(asupCapable=False, - asupEnabled=False, - onDemandEnabled=False, - remoteDiagsEnabled=False, - schedule=dict(daysOfWeek=[], dailyMinTime=0, weeklyMinTime=0, dailyMaxTime=24, weeklyMaxTime=24)) - asup = Asup() - - with mock.patch(self.REQ_FUNC, return_value=(200, expected)) as req: - with mock.patch.object(asup, 'get_configuration', return_value=initial): - updated = asup.update_configuration() - self.assertTrue(updated) - - self.assertTrue(req.called) - - # Ensure it was called with the right arguments - called_with = req.call_args - body = json.loads(called_with[1]['data']) - self.assertTrue(body['asupEnabled']) - self.assertTrue(body['onDemandEnabled']) - self.assertTrue(body['remoteDiagsEnabled']) - - def test_update_configuration_request_exception(self): - """Validate exception handling when request throws an exception.""" - config_response = dict(asupEnabled=True, - onDemandEnabled=True, - remoteDiagsEnabled=True, - schedule=dict(daysOfWeek=[], - dailyMinTime=0, - weeklyMinTime=0, - dailyMaxTime=24, - weeklyMaxTime=24)) - - self._set_args(dict(state="enabled")) - asup = Asup() - with self.assertRaises(Exception): - with mock.patch.object(asup, 'get_configuration', return_value=config_response): - with mock.patch(self.REQ_FUNC, side_effect=Exception): - asup.update_configuration() - - def test_init_schedule(self): - """Validate schedule correct schedule initialization""" - self._set_args(dict(state="enabled", active=True, days=["sunday", "monday", "tuesday"], start=20, end=24)) - asup = Asup() - - self.assertTrue(asup.asup) - self.assertEqual(asup.days, ["sunday", "monday", "tuesday"]), - self.assertEqual(asup.start, 1200) - self.assertEqual(asup.end, 1439) - - def test_init_schedule_invalid(self): - """Validate updating ASUP with invalid schedule fails test.""" - self._set_args(dict(state="enabled", active=True, start=22, end=20)) - with self.assertRaisesRegexp(AnsibleFailJson, r"start time is invalid"): - Asup() - - def test_init_schedule_days_invalid(self): - """Validate updating ASUP with invalid schedule fails test.""" - self._set_args(dict(state="enabled", active=True, days=["someday", "thataday", "nonday"])) - with self.assertRaises(AnsibleFailJson): - Asup() - - def test_update(self): - """Validate updating ASUP with valid schedule passes""" - initial = dict(asupCapable=True, - onDemandCapable=True, - asupEnabled=True, - onDemandEnabled=False, - remoteDiagsEnabled=False, - schedule=dict(daysOfWeek=[], dailyMinTime=0, weeklyMinTime=0, dailyMaxTime=24, weeklyMaxTime=24)) - self._set_args(dict(state="enabled", active=True, days=["sunday", "monday", "tuesday"], start=10, end=20)) - asup = Asup() - with self.assertRaisesRegexp(AnsibleExitJson, r"ASUP settings have been updated"): - with mock.patch(self.REQ_FUNC, return_value=(200, dict(asupCapable=True))): - with mock.patch.object(asup, "get_configuration", return_value=initial): - asup.update() diff --git a/test/units/modules/storage/netapp/test_netapp_e_auditlog.py b/test/units/modules/storage/netapp/test_netapp_e_auditlog.py deleted file mode 100644 index d7f370aab4..0000000000 --- a/test/units/modules/storage/netapp/test_netapp_e_auditlog.py +++ /dev/null @@ -1,234 +0,0 @@ -# (c) 2018, NetApp Inc. -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from ansible.modules.storage.netapp.netapp_e_auditlog import AuditLog -from units.modules.utils import AnsibleFailJson, ModuleTestCase, set_module_args - -__metaclass__ = type -from units.compat import mock - - -class AuditLogTests(ModuleTestCase): - REQUIRED_PARAMS = {'api_username': 'rw', - 'api_password': 'password', - 'api_url': 'http://localhost', - 'ssid': '1'} - REQ_FUNC = 'ansible.modules.storage.netapp.netapp_e_auditlog.request' - MAX_RECORDS_MAXIMUM = 50000 - MAX_RECORDS_MINIMUM = 100 - - def _set_args(self, **kwargs): - module_args = self.REQUIRED_PARAMS.copy() - if kwargs is not None: - module_args.update(kwargs) - set_module_args(module_args) - - def test_max_records_argument_pass(self): - """Verify AuditLog arument's max_records and threshold upper and lower boundaries.""" - initial = {"max_records": 1000, - "log_level": "writeOnly", - "full_policy": "overWrite", - "threshold": 90} - max_records_set = (self.MAX_RECORDS_MINIMUM, 25000, self.MAX_RECORDS_MAXIMUM) - - for max_records in max_records_set: - initial["max_records"] = max_records - self._set_args(**initial) - with mock.patch(self.REQ_FUNC, return_value=(200, {"runningAsProxy": False})): - audit_log = AuditLog() - self.assertTrue(audit_log.max_records == max_records) - - def test_max_records_argument_fail(self): - """Verify AuditLog arument's max_records and threshold upper and lower boundaries.""" - initial = {"max_records": 1000, - "log_level": "writeOnly", - "full_policy": "overWrite", - "threshold": 90} - max_records_set = (self.MAX_RECORDS_MINIMUM - 1, self.MAX_RECORDS_MAXIMUM + 1) - - for max_records in max_records_set: - with self.assertRaisesRegexp(AnsibleFailJson, r"Audit-log max_records count must be between 100 and 50000"): - initial["max_records"] = max_records - self._set_args(**initial) - AuditLog() - - def test_threshold_argument_pass(self): - """Verify AuditLog arument's max_records and threshold upper and lower boundaries.""" - initial = {"max_records": 1000, - "log_level": "writeOnly", - "full_policy": "overWrite", - "threshold": 90} - threshold_set = (60, 75, 90) - - for threshold in threshold_set: - initial["threshold"] = threshold - self._set_args(**initial) - with mock.patch(self.REQ_FUNC, return_value=(200, {"runningAsProxy": False})): - audit_log = AuditLog() - self.assertTrue(audit_log.threshold == threshold) - - def test_threshold_argument_fail(self): - """Verify AuditLog arument's max_records and threshold upper and lower boundaries.""" - initial = {"max_records": 1000, - "log_level": "writeOnly", - "full_policy": "overWrite", - "threshold": 90} - threshold_set = (59, 91) - - for threshold in threshold_set: - with self.assertRaisesRegexp(AnsibleFailJson, r"Audit-log percent threshold must be between 60 and 90"): - initial["threshold"] = threshold - self._set_args(**initial) - with mock.patch(self.REQ_FUNC, return_value=(200, {"runningAsProxy": False})): - AuditLog() - - def test_is_proxy_pass(self): - """Verify that True is returned when proxy is used to communicate with storage.""" - initial = {"max_records": 1000, - "log_level": "writeOnly", - "full_policy": "overWrite", - "threshold": 90, - "api_url": "https://10.1.1.10/devmgr/v2"} - - self._set_args(**initial) - with mock.patch(self.REQ_FUNC, return_value=(200, {"runningAsProxy": True})): - audit_log = AuditLog() - - with mock.patch(self.REQ_FUNC, return_value=(200, {"runningAsProxy": True})): - self.assertTrue(audit_log.is_proxy()) - - def test_is_proxy_fail(self): - """Verify that AnsibleJsonFail exception is thrown when exception occurs.""" - initial = {"max_records": 1000, - "log_level": "writeOnly", - "full_policy": "overWrite", - "threshold": 90} - - self._set_args(**initial) - with mock.patch(self.REQ_FUNC, return_value=(200, {"runningAsProxy": True})): - audit_log = AuditLog() - - with self.assertRaisesRegexp(AnsibleFailJson, r"Failed to retrieve the webservices about information"): - with mock.patch(self.REQ_FUNC, return_value=Exception()): - audit_log.is_proxy() - - def test_get_configuration_pass(self): - """Validate get configuration does not throw exception when normal request is returned.""" - initial = {"max_records": 1000, - "log_level": "writeOnly", - "full_policy": "overWrite", - "threshold": 90} - expected = {"auditLogMaxRecords": 1000, - "auditLogLevel": "writeOnly", - "auditLogFullPolicy": "overWrite", - "auditLogWarningThresholdPct": 90} - - self._set_args(**initial) - with mock.patch(self.REQ_FUNC, return_value=(200, {"runningAsProxy": True})): - audit_log = AuditLog() - - with mock.patch(self.REQ_FUNC, return_value=(200, expected)): - body = audit_log.get_configuration() - self.assertTrue(body == expected) - - def test_get_configuration_fail(self): - """Verify AnsibleJsonFail exception is thrown.""" - initial = {"max_records": 1000, - "log_level": "writeOnly", - "full_policy": "overWrite", - "threshold": 90} - - self._set_args(**initial) - with mock.patch(self.REQ_FUNC, return_value=(200, {"runningAsProxy": True})): - audit_log = AuditLog() - - with self.assertRaisesRegexp(AnsibleFailJson, r"Failed to retrieve the audit-log configuration!"): - with mock.patch(self.REQ_FUNC, return_value=Exception()): - audit_log.get_configuration() - - def test_build_configuration_pass(self): - """Validate configuration changes will force an update.""" - response = {"auditLogMaxRecords": 1000, - "auditLogLevel": "writeOnly", - "auditLogFullPolicy": "overWrite", - "auditLogWarningThresholdPct": 90} - initial = {"max_records": 1000, - "log_level": "writeOnly", - "full_policy": "overWrite", - "threshold": 90} - changes = [{"max_records": 50000}, - {"log_level": "all"}, - {"full_policy": "preventSystemAccess"}, - {"threshold": 75}] - - for change in changes: - initial_with_changes = initial.copy() - initial_with_changes.update(change) - self._set_args(**initial_with_changes) - with mock.patch(self.REQ_FUNC, return_value=(200, {"runningAsProxy": True})): - audit_log = AuditLog() - - with mock.patch(self.REQ_FUNC, return_value=(200, response)): - update = audit_log.build_configuration() - self.assertTrue(update) - - def test_delete_log_messages_fail(self): - """Verify AnsibleJsonFail exception is thrown.""" - initial = {"max_records": 1000, - "log_level": "writeOnly", - "full_policy": "overWrite", - "threshold": 90} - - self._set_args(**initial) - with mock.patch(self.REQ_FUNC, return_value=(200, {"runningAsProxy": True})): - audit_log = AuditLog() - - with self.assertRaisesRegexp(AnsibleFailJson, r"Failed to delete audit-log messages!"): - with mock.patch(self.REQ_FUNC, return_value=Exception()): - audit_log.delete_log_messages() - - def test_update_configuration_delete_pass(self): - """Verify 422 and force successfully returns True.""" - body = {"auditLogMaxRecords": 1000, - "auditLogLevel": "writeOnly", - "auditLogFullPolicy": "overWrite", - "auditLogWarningThresholdPct": 90} - initial = {"max_records": 2000, - "log_level": "writeOnly", - "full_policy": "overWrite", - "threshold": 90, - "force": True} - - self._set_args(**initial) - with mock.patch(self.REQ_FUNC, return_value=(200, {"runningAsProxy": True})): - audit_log = AuditLog() - with mock.patch(self.REQ_FUNC, side_effect=[(200, body), - (422, {u"invalidFieldsIfKnown": None, - u"errorMessage": u"Configuration change...", - u"localizedMessage": u"Configuration change...", - u"retcode": u"auditLogImmediateFullCondition", - u"codeType": u"devicemgrerror"}), - (200, None), - (200, None)]): - self.assertTrue(audit_log.update_configuration()) - - def test_update_configuration_delete_skip_fail(self): - """Verify 422 and no force results in AnsibleJsonFail exception.""" - body = {"auditLogMaxRecords": 1000, - "auditLogLevel": "writeOnly", - "auditLogFullPolicy": "overWrite", - "auditLogWarningThresholdPct": 90} - initial = {"max_records": 2000, - "log_level": "writeOnly", - "full_policy": "overWrite", - "threshold": 90, - "force": False} - - self._set_args(**initial) - with mock.patch(self.REQ_FUNC, return_value=(200, {"runningAsProxy": True})): - audit_log = AuditLog() - - with self.assertRaisesRegexp(AnsibleFailJson, r"Failed to update audit-log configuration!"): - with mock.patch(self.REQ_FUNC, side_effect=[(200, body), Exception(422, {"errorMessage": "error"}), - (200, None), (200, None)]): - audit_log.update_configuration() diff --git a/test/units/modules/storage/netapp/test_netapp_e_drive_firmware.py b/test/units/modules/storage/netapp/test_netapp_e_drive_firmware.py deleted file mode 100644 index cf5db6635b..0000000000 --- a/test/units/modules/storage/netapp/test_netapp_e_drive_firmware.py +++ /dev/null @@ -1,216 +0,0 @@ -# (c) 2018, NetApp Inc. -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -from __future__ import absolute_import, division, print_function -__metaclass__ = type - -try: - from unittest import mock -except ImportError: - import mock - -from ansible.modules.storage.netapp.netapp_e_drive_firmware import NetAppESeriesDriveFirmware -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args - - -class HostTest(ModuleTestCase): - REQUIRED_PARAMS = {"api_username": "rw", - "api_password": "password", - "api_url": "http://localhost", - "ssid": "1"} - - REQUEST_FUNC = "ansible.modules.storage.netapp.netapp_e_drive_firmware.NetAppESeriesDriveFirmware.request" - CREATE_MULTIPART_FORMDATA_FUNC = "ansible.modules.storage.netapp.netapp_e_drive_firmware.create_multipart_formdata" - SLEEP_FUNC = "ansible.modules.storage.netapp.netapp_e_drive_firmware.sleep" - UPGRADE_LIST_RESPONSE = ({"filename": "test_drive_firmware_1", - "driveRefList": ["010000005000C5007EDE4ECF0000000000000000", - "010000005000C5007EDF9AAB0000000000000000", - "010000005000C5007EDBE3C70000000000000000"]}, - {"filename": "test_drive_firmware_2", - "driveRefList": ["010000005000C5007EDE4ECF0000000000000001", - "010000005000C5007EDF9AAB0000000000000001", - "010000005000C5007EDBE3C70000000000000001"]}) - - FIRMWARE_DRIVES_RESPONSE = {"compatibilities": [ - {"filename": "test_drive_firmware_1", - "firmwareVersion": "MS02", - "supportedFirmwareVersions": ["MSB6", "MSB8", "MS00", "MS02"], - "compatibleDrives": [{"driveRef": "010000005000C5007EDE4ECF0000000000000000", "onlineUpgradeCapable": True}, - {"driveRef": "010000005000C5007EDF9AAB0000000000000000", "onlineUpgradeCapable": True}, - {"driveRef": "010000005000C5007EDBE3C70000000000000000", "onlineUpgradeCapable": True}]}, - {"filename": "test_drive_firmware_2", - "firmwareVersion": "MS01", - "supportedFirmwareVersions": ["MSB8", "MS00", "MS01"], - "compatibleDrives": [{"driveRef": "010000005000C5007EDE4ECF0000000000000001", "onlineUpgradeCapable": True}, - {"driveRef": "010000005000C5007EDF9AAB0000000000000001", "onlineUpgradeCapable": False}, - {"driveRef": "010000005000C5007EDBE3C70000000000000001", "onlineUpgradeCapable": True}]}]} - - def _set_args(self, args): - module_args = self.REQUIRED_PARAMS.copy() - module_args.update(args) - set_module_args(module_args) - - def test_upload_firmware(self): - """Verify exception is thrown""" - self._set_args({"firmware": ["path_to_test_drive_firmware_1", "path_to_test_drive_firmware_2"]}) - firmware_object = NetAppESeriesDriveFirmware() - - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to upload drive firmware"): - with mock.patch(self.REQUEST_FUNC, return_value=Exception()): - with mock.patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("", {})): - firmware_object.upload_firmware() - - def test_upgrade_list_pass(self): - """Verify upgrade_list method pass""" - side_effects = [(200, self.FIRMWARE_DRIVES_RESPONSE), - (200, {"offline": False, "available": True, "firmwareVersion": "MS00"}), - (200, {"offline": False, "available": True, "firmwareVersion": "MS01"}), - (200, {"offline": False, "available": True, "firmwareVersion": "MS02"})] - self._set_args({"firmware": ["path/to/test_drive_firmware_1"]}) - firmware_object = NetAppESeriesDriveFirmware() - with mock.patch(self.REQUEST_FUNC, side_effect=side_effects): - self.assertEqual(firmware_object.upgrade_list(), [{"driveRefList": ["010000005000C5007EDE4ECF0000000000000000", - "010000005000C5007EDF9AAB0000000000000000"], - "filename": "test_drive_firmware_1"}]) - - side_effects = [(200, self.FIRMWARE_DRIVES_RESPONSE), - (200, {"offline": False, "available": True, "firmwareVersion": "MS02"}), - (200, {"offline": False, "available": True, "firmwareVersion": "MS02"}), - (200, {"offline": False, "available": True, "firmwareVersion": "MS02"})] - self._set_args({"firmware": ["path/to/test_drive_firmware_1"]}) - firmware_object = NetAppESeriesDriveFirmware() - with mock.patch(self.REQUEST_FUNC, side_effect=side_effects): - self.assertEqual(firmware_object.upgrade_list(), []) - - def test_upgrade_list_fail(self): - """Verify upgrade_list method throws expected exceptions.""" - self._set_args({"firmware": ["path_to_test_drive_firmware_1"]}) - firmware_object = NetAppESeriesDriveFirmware() - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to complete compatibility and health check."): - with mock.patch(self.REQUEST_FUNC, response=Exception()): - firmware_object.upgrade_list() - - side_effects = [(200, self.FIRMWARE_DRIVES_RESPONSE), - (200, {"offline": False, "available": True, "firmwareVersion": "MS01"}), - (200, {"offline": False, "available": True, "firmwareVersion": "MS00"}), - Exception()] - self._set_args({"firmware": ["path/to/test_drive_firmware_1"]}) - firmware_object = NetAppESeriesDriveFirmware() - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve drive information."): - with mock.patch(self.REQUEST_FUNC, side_effect=side_effects): - firmware_object.upgrade_list() - - side_effects = [(200, self.FIRMWARE_DRIVES_RESPONSE), - (200, {"offline": False, "available": True, "firmwareVersion": "MS01"}), - (200, {"offline": False, "available": True, "firmwareVersion": "MS00"}), - (200, {"offline": False, "available": True, "firmwareVersion": "MS00"})] - self._set_args({"firmware": ["path/to/test_drive_firmware_2"], "upgrade_drives_online": True}) - firmware_object = NetAppESeriesDriveFirmware() - with self.assertRaisesRegexp(AnsibleFailJson, "Drive is not capable of online upgrade."): - with mock.patch(self.REQUEST_FUNC, side_effect=side_effects): - firmware_object.upgrade_list() - - def test_wait_for_upgrade_completion_pass(self): - """Verify function waits for okay status.""" - self._set_args({"firmware": ["path/to/test_drive_firmware_1", "path/to/test_drive_firmware_2"], "wait_for_completion": True}) - firmware_object = NetAppESeriesDriveFirmware() - firmware_object.upgrade_drives_online = True - firmware_object.upgrade_list = lambda: self.UPGRADE_LIST_RESPONSE - with mock.patch(self.SLEEP_FUNC, return_value=None): - with mock.patch(self.REQUEST_FUNC, side_effect=[ - (200, {"driveStatus": [{"driveRef": "010000005000C5007EDE4ECF0000000000000000", "status": "inProgress"}, - {"driveRef": "010000005000C5007EDF9AAB0000000000000000", "status": "okay"}, - {"driveRef": "010000005000C5007EDBE3C70000000000000000", "status": "okay"}, - {"driveRef": "010000005000C5007EDE4ECF0000000000000001", "status": "okay"}, - {"driveRef": "010000005000C5007EDF9AAB0000000000000001", "status": "okay"}, - {"driveRef": "010000005000C5007EDBE3C70000000000000001", "status": "okay"}]}), - (200, {"driveStatus": [{"driveRef": "010000005000C5007EDE4ECF0000000000000000", "status": "okay"}, - {"driveRef": "010000005000C5007EDF9AAB0000000000000000", "status": "inProgressRecon"}, - {"driveRef": "010000005000C5007EDBE3C70000000000000000", "status": "okay"}, - {"driveRef": "010000005000C5007EDE4ECF0000000000000001", "status": "okay"}, - {"driveRef": "010000005000C5007EDF9AAB0000000000000001", "status": "okay"}, - {"driveRef": "010000005000C5007EDBE3C70000000000000001", "status": "okay"}]}), - (200, {"driveStatus": [{"driveRef": "010000005000C5007EDE4ECF0000000000000000", "status": "okay"}, - {"driveRef": "010000005000C5007EDF9AAB0000000000000000", "status": "okay"}, - {"driveRef": "010000005000C5007EDBE3C70000000000000000", "status": "pending"}, - {"driveRef": "010000005000C5007EDE4ECF0000000000000001", "status": "okay"}, - {"driveRef": "010000005000C5007EDF9AAB0000000000000001", "status": "okay"}, - {"driveRef": "010000005000C5007EDBE3C70000000000000001", "status": "okay"}]}), - (200, {"driveStatus": [{"driveRef": "010000005000C5007EDE4ECF0000000000000000", "status": "okay"}, - {"driveRef": "010000005000C5007EDF9AAB0000000000000000", "status": "okay"}, - {"driveRef": "010000005000C5007EDBE3C70000000000000000", "status": "okay"}, - {"driveRef": "010000005000C5007EDE4ECF0000000000000001", "status": "notAttempted"}, - {"driveRef": "010000005000C5007EDF9AAB0000000000000001", "status": "okay"}, - {"driveRef": "010000005000C5007EDBE3C70000000000000001", "status": "okay"}]}), - (200, {"driveStatus": [{"driveRef": "010000005000C5007EDE4ECF0000000000000000", "status": "okay"}, - {"driveRef": "010000005000C5007EDF9AAB0000000000000000", "status": "okay"}, - {"driveRef": "010000005000C5007EDBE3C70000000000000000", "status": "okay"}, - {"driveRef": "010000005000C5007EDE4ECF0000000000000001", "status": "okay"}, - {"driveRef": "010000005000C5007EDF9AAB0000000000000001", "status": "okay"}, - {"driveRef": "010000005000C5007EDBE3C70000000000000001", "status": "okay"}]})]): - firmware_object.wait_for_upgrade_completion() - - def test_wait_for_upgrade_completion_fail(self): - """Verify wait for upgrade completion exceptions.""" - self._set_args({"firmware": ["path/to/test_drive_firmware_1", "path/to/test_drive_firmware_2"], "wait_for_completion": True}) - firmware_object = NetAppESeriesDriveFirmware() - firmware_object.upgrade_drives_online = True - firmware_object.upgrade_list = lambda: self.UPGRADE_LIST_RESPONSE - firmware_object.WAIT_TIMEOUT_SEC = 5 - response = (200, {"driveStatus": [{"driveRef": "010000005000C5007EDE4ECF0000000000000000", "status": "inProgress"}, - {"driveRef": "010000005000C5007EDF9AAB0000000000000000", "status": "inProgressRecon"}, - {"driveRef": "010000005000C5007EDBE3C70000000000000000", "status": "pending"}, - {"driveRef": "010000005000C5007EDE4ECF0000000000000001", "status": "notAttempted"}, - {"driveRef": "010000005000C5007EDF9AAB0000000000000001", "status": "okay"}, - {"driveRef": "010000005000C5007EDBE3C70000000000000001", "status": "okay"}]}) - with self.assertRaisesRegexp(AnsibleFailJson, "Timed out waiting for drive firmware upgrade."): - with mock.patch(self.SLEEP_FUNC, return_value=None): - with mock.patch(self.REQUEST_FUNC, return_value=response): - firmware_object.wait_for_upgrade_completion() - - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve drive status."): - with mock.patch(self.SLEEP_FUNC, return_value=None): - with mock.patch(self.REQUEST_FUNC, return_value=Exception()): - firmware_object.wait_for_upgrade_completion() - - response = (200, {"driveStatus": [{"driveRef": "010000005000C5007EDE4ECF0000000000000000", "status": "_UNDEFINED"}, - {"driveRef": "010000005000C5007EDF9AAB0000000000000000", "status": "inProgressRecon"}, - {"driveRef": "010000005000C5007EDBE3C70000000000000000", "status": "pending"}, - {"driveRef": "010000005000C5007EDE4ECF0000000000000001", "status": "notAttempted"}, - {"driveRef": "010000005000C5007EDF9AAB0000000000000001", "status": "okay"}, - {"driveRef": "010000005000C5007EDBE3C70000000000000001", "status": "okay"}]}) - with self.assertRaisesRegexp(AnsibleFailJson, "Drive firmware upgrade failed."): - with mock.patch(self.SLEEP_FUNC, return_value=None): - with mock.patch(self.REQUEST_FUNC, return_value=response): - firmware_object.wait_for_upgrade_completion() - - def test_upgrade_pass(self): - """Verify upgrade upgrade in progress variable properly reports.""" - self._set_args({"firmware": ["path/to/test_drive_firmware_1", "path/to/test_drive_firmware_2"], "wait_for_completion": False}) - firmware_object = NetAppESeriesDriveFirmware() - firmware_object.upgrade_drives_online = True - firmware_object.upgrade_list = lambda: {} - with mock.patch(self.REQUEST_FUNC, return_value=(200, {})): - firmware_object.upgrade() - self.assertTrue(firmware_object.upgrade_in_progress) - - self._set_args({"firmware": ["path_to_test_drive_firmware_1", "path_to_test_drive_firmware_2"], "wait_for_completion": True}) - firmware_object = NetAppESeriesDriveFirmware() - firmware_object.upgrade_drives_online = True - firmware_object.upgrade_list = lambda: self.UPGRADE_LIST_RESPONSE - with mock.patch(self.REQUEST_FUNC, side_effect=[(200, {}), - (200, {"driveStatus": [{"driveRef": "010000005000C5007EDE4ECF0000000000000000", "status": "okay"}, - {"driveRef": "010000005000C5007EDF9AAB0000000000000000", "status": "okay"}, - {"driveRef": "010000005000C5007EDBE3C70000000000000000", "status": "okay"}, - {"driveRef": "010000005000C5007EDE4ECF0000000000000001", "status": "okay"}, - {"driveRef": "010000005000C5007EDF9AAB0000000000000001", "status": "okay"}, - {"driveRef": "010000005000C5007EDBE3C70000000000000001", "status": "okay"}]})]): - firmware_object.upgrade() - self.assertFalse(firmware_object.upgrade_in_progress) - - def test_upgrade_fail(self): - """Verify upgrade method exceptions.""" - self._set_args({"firmware": ["path_to_test_drive_firmware_1", "path_to_test_drive_firmware_2"]}) - firmware_object = NetAppESeriesDriveFirmware() - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to upgrade drive firmware."): - with mock.patch(self.REQUEST_FUNC, return_value=Exception()): - firmware_object.upgrade() diff --git a/test/units/modules/storage/netapp/test_netapp_e_facts.py b/test/units/modules/storage/netapp/test_netapp_e_facts.py deleted file mode 100644 index eba930d0c8..0000000000 --- a/test/units/modules/storage/netapp/test_netapp_e_facts.py +++ /dev/null @@ -1,455 +0,0 @@ -# (c) 2018, NetApp Inc. -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -from __future__ import absolute_import, division, print_function - -__metaclass__ = type - -from ansible.modules.storage.netapp.netapp_e_facts import Facts -from units.modules.utils import AnsibleFailJson, ModuleTestCase, set_module_args - -from units.compat import mock - - -class FactsTest(ModuleTestCase): - REQUIRED_PARAMS = { - 'api_username': 'rw', - 'api_password': 'password', - 'api_url': 'http://localhost', - 'ssid': '1' - } - REQUEST_FUNC = 'ansible.modules.storage.netapp.netapp_e_facts.Facts.request' - GET_CONTROLLERS_FUNC = 'ansible.modules.storage.netapp.netapp_e_facts.Facts.get_controllers' - WORKLOAD_RESPONSE = [{"id": "4200000001000000000000000000000000000000", "name": "beegfs_metadata", - "workloadAttributes": [{"key": "profileId", "value": "ansible_workload_1"}]}, - {"id": "4200000002000000000000000000000000000000", "name": "other_workload_1", - "workloadAttributes": [{"key": "profileId", "value": "Other_1"}]}] - GRAPH_RESPONSE = { - "sa": {"saData": {"storageArrayLabel": "ictm0718s01c1", "saId": {"worldWideName": "600A098000A4B28D000000005CF10481"}, "fwVersion": "08.42.30.05", - "chassisSerialNumber": "021633035190"}, - "featureParameters": {"cacheBlockSizes": [4096, 8192, 16384, 32768], - "supportedSegSizes": [32768, 65536, 131072, 262144, 524288, 495616, 655360, 1982464]}, - "capabilities": ["autoCodeSync", "autoLunTransfer", "subLunsAllowed", "stagedDownload", "mixedDriveTypes", "bundleMigration", "raid6", - "performanceTier", "secureVolume", "protectionInformation", "ssdSupport", "driveSlotLimit", "flashReadCache", - "storagePoolsType2", "totalNumberOfArvmMirrorsPerArray", "totalNumberOfPitsPerArray", "totalNumberOfThinVolumesPerArray"], - "premiumFeatures": [], - "hostSpecificVals": [{"hostType": "FactoryDefault", "index": 0}, {"hostType": "W2KNETNCL", "index": 1}, {"hostPortType": "W2KNETCL", "index": 8}, - {"hostType": "LnxTPGSALUA_SF", "index": 27}, {"hostType": "LnxDHALUA", "index": 28}]}, "controller": [ - {"active": True, "quiesced": False, "status": "optimal", "controllerRef": "070000000000000000000001", - "physicalLocation": {"trayRef": "0E00000000000000000000000000000000000000", "slot": 1, - "locationParent": {"refType": "generic", "controllerRef": None, "symbolRef": "0000000000000000000000000000000000000000", - "typedReference": None}, "locationPosition": 1, "label": "A"}, "manufacturer": "NETAPP ", - "manufacturerDate": "1474675200", "appVersion": "08.42.30.05", "bootVersion": "08.42.30.05", "productID": "INF-01-00 ", - "productRevLevel": "0842", "serialNumber": "021619039162 ", "boardID": "2806", "cacheMemorySize": 3328, "processorMemorySize": 1278, - "hostInterfaces": [{"interfaceType": "iscsi", "fibre": None, "ib": None, - "iscsi": {"channel": 1, "channelPortRef": "1F00010001010000000000000000000000000000", "tcpListenPort": 3260, - "ipv4Enabled": True, "ipv4Data": {"ipv4Address": "0.0.0.0", "ipv4AddressConfigMethod": "configStatic", - "ipv4OutboundPacketPriority": {"isEnabled": False, "value": 1}, - "ipv4VlanId": {"isEnabled": False, "value": 1}, - "ipv4AddressData": {"configState": "configured", "ipv4Address": "10.10.11.110", - "ipv4SubnetMask": "255.255.255.0", - "ipv4GatewayAddress": "0.0.0.0"}}, - "interfaceData": {"type": "ethernet", "ethernetData": { - "partData": {"vendorName": "QLogic Corporation", "partNumber": "83xx", "revisionNumber": "5.5.31.511", - "serialNumber": "00a098a4b28f"}, "macAddress": "00A098A4B293", "fullDuplex": True, - "maximumFramePayloadSize": 9000, "currentInterfaceSpeed": "speed10gig", "maximumInterfaceSpeed": "speed10gig", - "linkStatus": "up", "supportedInterfaceSpeeds": ["speed1gig", "speed10gig"], "autoconfigSupport": False, - "copperCableDiagnosticsSupport": False}, "infinibandData": None}, - "interfaceRef": "2201020000000000000000000000000000000000", "ipv6Enabled": True, - "ipv6Data": {"ipv6LocalAddresses": [ - {"address": "FE8000000000000002A098FFFEA4B293", - "addressState": {"addressType": "typeInterface", "interfaceAddressState": "configured", - "routerAddressState": "__UNDEFINED"}}], "ipv6RoutableAddresses": [ - {"address": "00000000000000000000000000000000", - "addressState": {"addressType": "typeInterface", "interfaceAddressState": "unconfigured", - "routerAddressState": "__UNDEFINED"}}, - {"address": "00000000000000000000000000000000", - "addressState": {"addressType": "typeInterface", "interfaceAddressState": "unconfigured", - "routerAddressState": "__UNDEFINED"}}], - "ipv6PortRouterAddress": {"address": "00000000000000000000000000000000", - "addressState": {"addressType": "typeRouter", "interfaceAddressState": "__UNDEFINED", - "routerAddressState": "unknown"}}, - "ipv6AddressConfigMethod": "configStateless", "ipv6OutboundPacketPriority": {"isEnabled": False, "value": 1}, - "ipv6VlanId": {"isEnabled": False, "value": 1}, "ipv6HopLimit": 64, "ipv6NdReachableTime": 30000, - "ipv6NdRetransmitTime": 1000, "ipv6NdStaleTimeout": 30000, "ipv6DuplicateAddressDetectionAttempts": 1}, - "physicalLocation": {"trayRef": "0000000000000000000000000000000000000000", "slot": 0, - "locationParent": {"refType": "generic", "controllerRef": None, - "symbolRef": "0000000000000000000000000000000000000000", - "typedReference": None}, "locationPosition": 0, "label": ""}, - "protectionInformationCapable": True, "isIPv6Capable": True, "oneWayMaxRate": "1230000000", - "bidirectionalMaxRate": "2120000000", "iqn": "iqn.1992-08.com.netapp:2806.600a098000a4b28d000000005cf10481", - "controllerId": "070000000000000000000001", - "addressId": "iqn.1992-08.com.netapp:2806.600a098000a4b28d000000005cf10481", - "niceAddressId": "iqn.1992-08.com.netapp:2806.600a098000a4b28d000000005cf10481", - "interfaceId": "2201020000000000000000000000000000000000", "id": "2201020000000000000000000000000000000000"}, - "sas": None, "sata": None, "scsi": None}], - "driveInterfaces": [ - {"interfaceType": "sas", "fibre": None, "ib": None, "iscsi": None, - "sas": {"channel": 1, "currentInterfaceSpeed": "speed12gig", "maximumInterfaceSpeed": "speed12gig", "part": "LSISAS3008", - "revision": 172688896, "isDegraded": False, - "iocPort": { - "parent": {"type": "controller", "controller": "070000000000000000000001", "drive": None, "expander": None, "hostBoardRef": None}, - "attachedDevice": {"channel": 1, "channelType": "driveside", - "sasAttachedDeviceData": {"type": "expander", "alternateController": None, "drive": None, - "expander": "2000000000000000000000630001000000000000", - "remoteHostPortAddress": None, - "localController": None, "physicalLocation": None}}, "state": "optimal", - "miswireType": "None", "channelPortRef": "1F01000001010000000000000000000000000000", - "sasPhys": [{"phyIdentifier": 4, "isOperational": True}, {"phyIdentifier": 5, "isOperational": True}, - {"phyIdentifier": 6, "isOperational": True}, {"phyIdentifier": 7, "isOperational": True}], - "portTypeData": {"portType": "endDevice", "portIdentifier": "500A098A4B28D004", "routingType": "__UNDEFINED"}, - "portMode": "internal", - "domainNumber": 1, "attachedChannelPortRef": "0000000000000000000000000000000000000000", "discoveryStatus": 0}, - "interfaceRef": "2201000000000000000000000000000000000000", - "physicalLocation": {"trayRef": "0000000000000000000000000000000000000000", "slot": 0, - "locationParent": {"refType": "generic", "controllerRef": None, - "symbolRef": "0000000000000000000000000000000000000000", "typedReference": None}, - "locationPosition": 0, "label": ""}, "protectionInformationCapable": True, "oneWayMaxRate": "4400000000", - "bidirectionalMaxRate": "8400000000", "controllerId": None, "addressId": "500A098A4B28D004", "niceAddressId": "500A098A4B28D004", - "interfaceId": "2201000000000000000000000000000000000000", "basePortAddress": "500A098A4B28D00", - "id": "2201000000000000000000000000000000000000"}, "sata": None, "scsi": None}], - "netInterfaces": [{"interfaceType": "ethernet", - "ethernet": {"interfaceName": "wan0", "channel": 1, "speed": 1000, "ip": 175178176, "alias": "ictm0718s01c1-a", - "macAddr": "00A098A4B28D", "gatewayIp": 175177985, "subnetMask": -256, "bootpUsed": False, "rloginEnabled": True, - "reserved1": "0000000000000000", "setupError": False, "reserved2": "", - "interfaceRef": "2800070000000000000000000001000000000000", "linkStatus": "up", "ipv4Enabled": True, - "ipv4Address": "10.113.1.192", "ipv4SubnetMask": "255.255.255.0", "ipv4AddressConfigMethod": "configStatic", - "ipv6Enabled": False, "ipv6LocalAddress": {"address": "00000000000000000000000000000000", - "addressState": {"addressType": "typeInterface", - "interfaceAddressState": "configured", - "routerAddressState": "__UNDEFINED"}}, - "ipv6PortStaticRoutableAddress": {"address": "00000000000000000000000000000000", - "addressState": {"addressType": "typeInterface", - "interfaceAddressState": "__UNDEFINED", - "routerAddressState": "__UNDEFINED"}}, - "ipv6PortRoutableAddresses": [], "ipv6AddressConfigMethod": "configStatic", "fullDuplex": True, - "supportedSpeedSettings": ["speedAutoNegotiated", "speed10MbitHalfDuplex", "speed10MbitFullDuplex", - "speed100MbitHalfDuplex", "speed100MbitFullDuplex", "speed1000MbitFullDuplex"], - "configuredSpeedSetting": "speedAutoNegotiated", "currentSpeed": "speed1gig", - "physicalLocation": {"trayRef": "0E00000000000000000000000000000000000000", "slot": 0, - "locationParent": {"refType": "controller", "controllerRef": "070000000000000000000001", - "symbolRef": None, "typedReference": None}, "locationPosition": 1, - "label": "P1"}, "ipv4GatewayAddress": "10.113.1.1", - "controllerRef": "070000000000000000000001", "controllerSlot": 1, - "dnsProperties": { - "acquisitionProperties": {"dnsAcquisitionType": "stat", - "dnsServers": [ - {"addressType": "ipv4", "ipv4Address": "10.193.0.250", "ipv6Address": None}, - {"addressType": "ipv4", "ipv4Address": "10.192.0.250", "ipv6Address": None}]}, - "dhcpAcquiredDnsServers": []}, - "ntpProperties": { - "acquisitionProperties": {"ntpAcquisitionType": "stat", "ntpServers": [ - {"addrType": "ipvx", "domainName": None, - "ipvxAddress": {"addressType": "ipv4", "ipv4Address": "216.239.35.0", "ipv6Address": None}}, - {"addrType": "ipvx", "domainName": None, - "ipvxAddress": {"addressType": "ipv4", "ipv4Address": "216.239.35.4", "ipv6Address": None}}]}, - "dhcpAcquiredNtpServers": []}, - "id": "2800070000000000000000000001000000000000"}}], - "inventory": [], "reserved1": "000000000000000000000000", "reserved2": "", "hostBoardID": "None", "physicalCacheMemorySize": 4864, - "readyToRemove": False, "boardSubmodelID": "319", "submodelSupported": True, "oemPartNumber": "E2800A-8GB", "partNumber": "111-02829+C0 ", - "rtrAttributes": {"cruType": "dedicated", "parentCru": None, "rtrAttributeData": {"hasReadyToRemoveIndicator": False, "readyToRemove": False}}, - "bootTime": "1563988406", "modelName": "2806", - "networkSettings": {"ipv4DefaultRouterAddress": "10.113.1.1", - "ipv6DefaultRouterAddress": {"address": "00000000000000000000000000000000", - "addressState": {"addressType": "typeInterface", - "interfaceAddressState": "__UNDEFINED", "routerAddressState": "__UNDEFINED"}}, - "ipv6CandidateDefaultRouterAddresses": [], - "remoteAccessEnabled": True, - "dnsProperties": {"acquisitionProperties": {"dnsAcquisitionType": "stat", - "dnsServers": [ - {"addressType": "ipv4", "ipv4Address": "10.193.0.250", "ipv6Address": None}, - {"addressType": "ipv4", "ipv4Address": "10.192.0.250", "ipv6Address": None}]}, - "dhcpAcquiredDnsServers": []}, - "ntpProperties": { - "acquisitionProperties": { - "ntpAcquisitionType": "stat", "ntpServers": [ - {"addrType": "ipvx", "domainName": None, - "ipvxAddress": {"addressType": "ipv4", "ipv4Address": "216.239.35.0", "ipv6Address": None}}, - {"addrType": "ipvx", "domainName": None, - "ipvxAddress": {"addressType": "ipv4", "ipv4Address": "216.239.35.4", "ipv6Address": None}}]}, - "dhcpAcquiredNtpServers": []}}, - "repairPolicy": {"removalData": {"removalMethod": "__UNDEFINED", "rtrAttributes": None}, "replacementMethod": "__UNDEFINED"}, - "flashCacheMemorySize": 419430400, "ctrlIocDumpData": {"iocDumpNeedsRetrieved": False, "iocDumpTag": 0, "timeStamp": "0"}, - "locateInProgress": False, "hasTrayIdentityIndicator": False, "controllerErrorMode": "notInErrorMode", - "codeVersions": [{"codeModule": "raid", "versionString": "08.42.30.05"}, {"codeModule": "hypervisor", "versionString": "08.42.30.05"}, - {"codeModule": "management", "versionString": "11.42.0000.0026"}, {"codeModule": "iom", "versionString": "11.42.0G00.0001"}, - {"codeModule": "bundle", "versionString": "08.42.30.05"}, {"codeModule": "bundleDisplay", "versionString": "11.40.3R2"}], - "id": "070000000000000000000001"}], - "drive": [{"offline": False, "hotSpare": False, "invalidDriveData": False, "available": True, "pfa": False, - "driveRef": "0100000050000396AC882ED10000000000000000", "status": "optimal", "cause": "None", - "interfaceType": {"driveType": "sas", "fibre": None, - "sas": {"deviceName": "50000396AC882ED1", - "drivePortAddresses": [{"channel": 2, "portIdentifier": "50000396AC882ED3"}, - {"channel": 1, "portIdentifier": "50000396AC882ED2"}]}, - "scsi": None}, - "physicalLocation": {"trayRef": "0E00000000000000000000000000000000000000", "slot": 6, - "locationParent": {"refType": "genericTyped", "controllerRef": None, "symbolRef": None, - "typedReference": {"componentType": "tray", - "symbolRef": "0E00000000000000000000000000000000000000"}}, - "locationPosition": 6, "label": "5"}, "manufacturer": "TOSHIBA ", - "manufacturerDate": "1447200000", "productID": "PX04SVQ160 ", "serialNumber": "Y530A001T5MD", "softwareVersion": "MSB6", "blkSize": 512, - "usableCapacity": "1599784443904", "rawCapacity": "1600321314816", "worldWideName": "50000396AC882ED10000000000000000", - "currentVolumeGroupRef": "0000000000000000000000000000000000000000", "sparedForDriveRef": "0000000000000000000000000000000000000000", - "mirrorDrive": "0000000000000000000000000000000000000000", "nonRedundantAccess": False, "workingChannel": -1, "volumeGroupIndex": -1, - "currentSpeed": "speed12gig", "maxSpeed": "speed12gig", "uncertified": False, "hasDegradedChannel": False, "degradedChannels": [], - "phyDriveType": "sas", "spindleSpeed": 0, "rtrAttributes": {"cruType": "dedicated", "parentCru": None, - "rtrAttributeData": {"hasReadyToRemoveIndicator": False, - "readyToRemove": False}}, "reserved": "", - "phyDriveTypeData": {"phyDriveType": "sas", "sataDriveAttributes": None}, "pfaReason": "None", "bypassSource": [], - "repairPolicy": {"removalData": {"removalMethod": "self", "rtrAttributes": {"hasReadyToRemoveIndicator": False, "readyToRemove": False}}, - "replacementMethod": "self"}, "fdeCapable": True, "fdeEnabled": False, "fdeLocked": False, - "lockKeyID": "0000000000000000000000000000000000000000", - "ssdWearLife": {"averageEraseCountPercent": 18, "spareBlocksRemainingPercent": 91, "isWearLifeMonitoringSupported": True, - "percentEnduranceUsed": 18}, "driveMediaType": "ssd", "fpgaVersion": "", - "protectionInformationCapabilities": {"protectionInformationCapable": True, "protectionType": "type2Protection"}, - "protectionInformationCapable": False, "protectionType": "type0Protection", "interposerPresent": False, - "interposerRef": "0000000000000000000000000000000000000000", "currentCommandAgingTimeout": 6, "defaultCommandAgingTimeout": 6, - "driveTemperature": {"currentTemp": 25, "refTemp": 64}, "blkSizePhysical": 4096, "lowestAlignedLBA": "0", "removed": False, - "locateInProgress": False, "fipsCapable": False, "firmwareVersion": "MSB6", "lockKeyIDValue": None, - "id": "0100000050000396AC882ED10000000000000000"}, - {"offline": False, "hotSpare": False, "invalidDriveData": False, "available": True, "pfa": False, - "driveRef": "0100000050000396AC882EDD0000000000000000", "status": "optimal", "cause": "None", - "interfaceType": {"driveType": "sas", "fibre": None, - "sas": {"deviceName": "50000396AC882EDD", - "drivePortAddresses": [{"channel": 2, "portIdentifier": "50000396AC882EDF"}, - {"channel": 1, "portIdentifier": "50000396AC882EDE"}]}, - "scsi": None}, - "physicalLocation": {"trayRef": "0E00000000000000000000000000000000000000", "slot": 8, - "locationParent": {"refType": "genericTyped", "controllerRef": None, "symbolRef": None, - "typedReference": {"componentType": "tray", - "symbolRef": "0E00000000000000000000000000000000000000"}}, - "locationPosition": 8, "label": "7"}, "manufacturer": "TOSHIBA ", - "manufacturerDate": "1447200000", "productID": "PX04SVQ160 ", "serialNumber": "Y530A004T5MD", "softwareVersion": "MSB6", "blkSize": 512, - "usableCapacity": "1599784443904", "rawCapacity": "1600321314816", "worldWideName": "50000396AC882EDD0000000000000000", - "currentVolumeGroupRef": "0000000000000000000000000000000000000000", "sparedForDriveRef": "0000000000000000000000000000000000000000", - "mirrorDrive": "0000000000000000000000000000000000000000", "nonRedundantAccess": False, "workingChannel": -1, "volumeGroupIndex": -1, - "currentSpeed": "speed12gig", "maxSpeed": "speed12gig", "uncertified": False, "hasDegradedChannel": False, "degradedChannels": [], - "phyDriveType": "sas", "spindleSpeed": 0, "rtrAttributes": {"cruType": "dedicated", "parentCru": None, - "rtrAttributeData": {"hasReadyToRemoveIndicator": False, - "readyToRemove": False}}, "reserved": "", - "phyDriveTypeData": {"phyDriveType": "sas", "sataDriveAttributes": None}, "pfaReason": "None", "bypassSource": [], - "repairPolicy": {"removalData": {"removalMethod": "self", "rtrAttributes": {"hasReadyToRemoveIndicator": False, "readyToRemove": False}}, - "replacementMethod": "self"}, "fdeCapable": True, "fdeEnabled": False, "fdeLocked": False, - "lockKeyID": "0000000000000000000000000000000000000000", - "ssdWearLife": {"averageEraseCountPercent": 18, "spareBlocksRemainingPercent": 91, "isWearLifeMonitoringSupported": True, - "percentEnduranceUsed": 18}, "driveMediaType": "ssd", "fpgaVersion": "", - "protectionInformationCapabilities": {"protectionInformationCapable": True, "protectionType": "type2Protection"}, - "protectionInformationCapable": False, "protectionType": "type0Protection", "interposerPresent": False, - "interposerRef": "0000000000000000000000000000000000000000", "currentCommandAgingTimeout": 6, "defaultCommandAgingTimeout": 6, - "driveTemperature": {"currentTemp": 25, "refTemp": 64}, "blkSizePhysical": 4096, "lowestAlignedLBA": "0", "removed": False, - "locateInProgress": False, "fipsCapable": False, "firmwareVersion": "MSB6", "lockKeyIDValue": None, - "id": "0100000050000396AC882EDD0000000000000000"}], - "volumeGroup": [ - {"sequenceNum": 1, "offline": False, "raidLevel": "raid6", "worldWideName": "600A098000A4B9D10000380A5D4AAC3C", - "volumeGroupRef": "04000000600A098000A4B9D10000380A5D4AAC3C", "reserved1": "000000000000000000000000", "reserved2": "", - "trayLossProtection": False, "label": "beegfs_storage_vg", "state": "complete", "spindleSpeedMatch": True, "spindleSpeed": 10500, - "isInaccessible": False, "securityType": "capable", "drawerLossProtection": False, "protectionInformationCapable": False, - "protectionInformationCapabilities": {"protectionInformationCapable": True, "protectionType": "type2Protection"}, - "volumeGroupData": {"type": "unknown", "diskPoolData": None}, - "usage": "standard", "driveBlockFormat": "allNative", "reservedSpaceAllocated": False, "securityLevel": "fde", "usedSpace": "1099511627776", - "totalRaidedSpace": "9597654597632", - "extents": [{"sectorOffset": "268435456", "rawCapacity": "8498142969856", "raidLevel": "raid6", - "volumeGroupRef": "04000000600A098000A4B9D10000380A5D4AAC3C", "freeExtentRef": "03000000600A098000A4B9D10000380A5D4AAC3C", - "reserved1": "000000000000000000000000", "reserved2": ""}], - "largestFreeExtentSize": "8498142969856", "raidStatus": "optimal", "freeSpace": "8498142969856", "drivePhysicalType": "sas", - "driveMediaType": "hdd", "normalizedSpindleSpeed": "spindleSpeed10k", "diskPool": False, - "id": "04000000600A098000A4B9D10000380A5D4AAC3C", "name": "beegfs_storage_vg"}], "volume": [ - {"offline": False, "extremeProtection": False, "volumeHandle": 0, "raidLevel": "raid6", "sectorOffset": "0", - "worldWideName": "600A098000A4B28D00003E435D4AAC54", "label": "beegfs_storage_01_1", "blkSize": 512, "capacity": "1099511627776", - "reconPriority": 1, "segmentSize": 131072, "action": "None", - "cache": {"cwob": False, "enterpriseCacheDump": False, "mirrorActive": True, "mirrorEnable": True, "readCacheActive": False, - "readCacheEnable": False, "writeCacheActive": True, "writeCacheEnable": True, "cacheFlushModifier": "flush10Sec", - "readAheadMultiplier": 1}, "mediaScan": {"enable": True, "parityValidationEnable": True}, - "volumeRef": "02000000600A098000A4B28D00003E435D4AAC54", "status": "optimal", "volumeGroupRef": "04000000600A098000A4B9D10000380A5D4AAC3C", - "currentManager": "070000000000000000000001", "preferredManager": "070000000000000000000001", - "perms": {"mapToLUN": True, "snapShot": True, "format": True, "reconfigure": True, "mirrorPrimary": True, "mirrorSecondary": True, - "copySource": True, "copyTarget": True, "readable": True, "writable": True, "rollback": True, "mirrorSync": True, "newImage": True, - "allowDVE": True, "allowDSS": True, "concatVolumeMember": False, "flashReadCache": True, "asyncMirrorPrimary": True, - "asyncMirrorSecondary": True, "pitGroup": True, "cacheParametersChangeable": True, "allowThinManualExpansion": False, - "allowThinGrowthParametersChange": False}, - "mgmtClientAttribute": 0, "dssPreallocEnabled": False, "dssMaxSegmentSize": 0, "preReadRedundancyCheckEnabled": False, - "protectionInformationCapable": False, "protectionType": "type0Protection", "applicationTagOwned": True, - "repairedBlockCount": 0, "extendedUniqueIdentifier": "", "cacheMirroringValidateProtectionInformation": False, - "expectedProtectionInformationAppTag": 0, "volumeUse": "standardVolume", "volumeFull": False, "volumeCopyTarget": False, "volumeCopySource": False, - "pitBaseVolume": False, "asyncMirrorTarget": False, "asyncMirrorSource": False, "remoteMirrorSource": False, "remoteMirrorTarget": False, - "diskPool": False, "flashCached": False, "increasingBy": "0", "metadata": [], "dataAssurance": False, "objectType": "volume", - "listOfMappings": [ - {"lunMappingRef": "88000000A1010000000000000000000000000000", "lun": 1, "ssid": 0, "perms": 15, - "volumeRef": "02000000600A098000A4B28D00003E435D4AAC54", "type": "host", "mapRef": "84000000600A098000A4B28D00303D065D430118", - "id": "88000000A1010000000000000000000000000000"}], - "mapped": True, "currentControllerId": "070000000000000000000001", - "cacheSettings": {"cwob": False, "enterpriseCacheDump": False, "mirrorActive": True, "mirrorEnable": True, "readCacheActive": False, - "readCacheEnable": False, "writeCacheActive": True, "writeCacheEnable": True, "cacheFlushModifier": "flush10Sec", - "readAheadMultiplier": 1}, - "thinProvisioned": False, "preferredControllerId": "070000000000000000000001", "totalSizeInBytes": "1099511627776", "onlineVolumeCopy": False, - "wwn": "600A098000A4B28D00003E435D4AAC54", "name": "beegfs_storage_01_1", "id": "02000000600A098000A4B28D00003E435D4AAC54"}], - "storagePoolBundle": {"cluster": [], "host": [ - {"hostRef": "84000000600A098000A4B28D00303D005D430107", "clusterRef": "0000000000000000000000000000000000000000", "label": "test", - "isSAControlled": False, "confirmLUNMappingCreation": False, "hostTypeIndex": 28, "protectionInformationCapableAccessMethod": True, - "isLargeBlockFormatHost": False, "isLun0Restricted": False, "ports": [], - "initiators": [ - {"initiatorRef": "89000000600A098000A4B9D1003037005D4300F5", - "nodeName": {"ioInterfaceType": "iscsi", "iscsiNodeName": "iqn.iscsi_tests1", "remoteNodeWWN": None, "nvmeNodeName": None}, - "alias": {"ioInterfaceType": "iscsi", "iscsiAlias": ""}, "label": "iscsi_test1", - "configuredAuthMethods": {"authMethodData": [{"authMethod": "None", "chapSecret": None}]}, - "hostRef": "84000000600A098000A4B28D00303D005D430107", "initiatorInactive": False, "id": "89000000600A098000A4B9D1003037005D4300F5"}], - "hostSidePorts": [{"type": "iscsi", "address": "iqn.iscsi_tests1", "label": "iscsi_test1"}], - "id": "84000000600A098000A4B28D00303D005D430107", "name": "test"}, - {"hostRef": "84000000600A098000A4B9D1003037035D4300F8", "clusterRef": "0000000000000000000000000000000000000000", "label": "test2", - "isSAControlled": True, "confirmLUNMappingCreation": False, "hostTypeIndex": 28, "protectionInformationCapableAccessMethod": True, - "isLargeBlockFormatHost": False, "isLun0Restricted": False, "ports": [], - "initiators": [ - {"initiatorRef": "89000000600A098000A4B9D1003037075D4300F9", - "nodeName": {"ioInterfaceType": "iscsi", "iscsiNodeName": "iqn.iscsi_tests2", "remoteNodeWWN": None, "nvmeNodeName": None}, - "alias": {"ioInterfaceType": "iscsi", "iscsiAlias": ""}, "label": "iscsi_test2", - "configuredAuthMethods": {"authMethodData": [{"authMethod": "None", "chapSecret": None}]}, - "hostRef": "84000000600A098000A4B9D1003037035D4300F8", "initiatorInactive": False, "id": "89000000600A098000A4B9D1003037075D4300F9"}], - "hostSidePorts": [{"type": "iscsi", "address": "iqn.iscsi_tests2", "label": "iscsi_test2"}], - "id": "84000000600A098000A4B9D1003037035D4300F8", "name": "test2"}, - {"hostRef": "84000000600A098000A4B28D00303D065D430118", "clusterRef": "0000000000000000000000000000000000000000", "label": "beegfs_storage1", - "isSAControlled": False, "confirmLUNMappingCreation": False, "hostTypeIndex": 28, "protectionInformationCapableAccessMethod": True, - "isLargeBlockFormatHost": False, "isLun0Restricted": False, "ports": [], - "initiators": [ - {"initiatorRef": "89000000600A098000A4B28D00303CF55D4300E3", - "nodeName": {"ioInterfaceType": "iscsi", "iscsiNodeName": "iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818", "remoteNodeWWN": None, - "nvmeNodeName": None}, "alias": {"ioInterfaceType": "iscsi", "iscsiAlias": ""}, "label": "beegfs_storage1_iscsi_0", - "configuredAuthMethods": {"authMethodData": [{"authMethod": "None", "chapSecret": None}]}, - "hostRef": "84000000600A098000A4B28D00303D065D430118", "initiatorInactive": False, "id": "89000000600A098000A4B28D00303CF55D4300E3"}], - "hostSidePorts": [{"type": "iscsi", "address": "iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818", "label": "beegfs_storage1_iscsi_0"}], - "id": "84000000600A098000A4B28D00303D065D430118", "name": "beegfs_storage1"}, - {"hostRef": "84000000600A098000A4B9D10030370B5D430109", "clusterRef": "0000000000000000000000000000000000000000", "label": "beegfs_metadata1", - "isSAControlled": False, "confirmLUNMappingCreation": False, "hostTypeIndex": 28, "protectionInformationCapableAccessMethod": True, - "isLargeBlockFormatHost": False, "isLun0Restricted": False, "ports": [], - "initiators": [ - {"initiatorRef": "89000000600A098000A4B28D00303CFC5D4300F7", - "nodeName": {"ioInterfaceType": "iscsi", "iscsiNodeName": "iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8", "remoteNodeWWN": None, - "nvmeNodeName": None}, "alias": {"ioInterfaceType": "iscsi", "iscsiAlias": ""}, "label": "beegfs_metadata1_iscsi_0", - "configuredAuthMethods": {"authMethodData": [{"authMethod": "None", "chapSecret": None}]}, - "hostRef": "84000000600A098000A4B9D10030370B5D430109", "initiatorInactive": False, "id": "89000000600A098000A4B28D00303CFC5D4300F7"}], - "hostSidePorts": [{"type": "iscsi", "address": "iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8", "label": "beegfs_metadata1_iscsi_0"}], - "id": "84000000600A098000A4B9D10030370B5D430109", "name": "beegfs_metadata1"}], "lunMapping": [ - {"lunMappingRef": "8800000000000000000000000000000000000000", "lun": 7, "ssid": 16384, "perms": 15, - "volumeRef": "21000000600A098000A4B28D000027EC5CF10481", "type": "all", "mapRef": "0000000000000000000000000000000000000000", - "id": "8800000000000000000000000000000000000000"}, - {"lunMappingRef": "880000008B010000000000000000000000000000", "lun": 7, "ssid": 16384, "perms": 15, - "volumeRef": "21000000600A098000A4B28D000027EC5CF10481", "type": "host", "mapRef": "84000000600A098000A4B28D00303D065D430118", - "id": "880000008B010000000000000000000000000000"}, - {"lunMappingRef": "8800000090010000000000000000000000000000", "lun": 7, "ssid": 16384, "perms": 15, - "volumeRef": "21000000600A098000A4B28D000027EC5CF10481", "type": "host", "mapRef": "84000000600A098000A4B9D10030370B5D430109", - "id": "8800000090010000000000000000000000000000"}, - {"lunMappingRef": "8800000092010000000000000000000000000000", "lun": 7, "ssid": 16384, "perms": 15, - "volumeRef": "21000000600A098000A4B28D000027EC5CF10481", "type": "host", "mapRef": "84000000600A098000A4B28D00303D005D430107", - "id": "8800000092010000000000000000000000000000"}, {"lunMappingRef": "88000000A1010000000000000000000000000000", "lun": 1, "ssid": 0, "perms": 15, - "volumeRef": "02000000600A098000A4B28D00003E435D4AAC54", "type": "host", - "mapRef": "84000000600A098000A4B28D00303D065D430118", - "id": "88000000A1010000000000000000000000000000"}]}, "highLevelVolBundle": {"pit": []}} - - EXPECTED_GET_ARRAY_FACTS = {'facts_from_proxy': False, 'netapp_controllers': [{'name': 'A', 'serial': '021619039162', 'status': 'optimal'}], - 'netapp_disks': [ - {'available': True, 'firmware_version': 'MSB6', 'id': '0100000050000396AC882ED10000000000000000', 'media_type': 'ssd', - 'product_id': 'PX04SVQ160 ', 'serial_number': 'Y530A001T5MD', 'status': 'optimal', - 'tray_ref': '0E00000000000000000000000000000000000000', 'usable_bytes': '1599784443904'}, - {'available': True, 'firmware_version': 'MSB6', 'id': '0100000050000396AC882EDD0000000000000000', 'media_type': 'ssd', - 'product_id': 'PX04SVQ160 ', 'serial_number': 'Y530A004T5MD', 'status': 'optimal', - 'tray_ref': '0E00000000000000000000000000000000000000', 'usable_bytes': '1599784443904'}], - 'netapp_driveside_interfaces': [{'controller': 'A', 'interface_speed': '12g', 'interface_type': 'sas'}], - 'netapp_enabled_features': ['autoCodeSync', 'autoLunTransfer', 'bundleMigration', 'driveSlotLimit', 'flashReadCache', - 'mixedDriveTypes', 'performanceTier', 'protectionInformation', 'raid6', 'secureVolume', - 'ssdSupport', 'stagedDownload', 'storagePoolsType2', 'subLunsAllowed', - 'totalNumberOfArvmMirrorsPerArray', 'totalNumberOfPitsPerArray', - 'totalNumberOfThinVolumesPerArray'], 'netapp_host_groups': [], - 'netapp_host_types': [{'index': 0, 'type': 'FactoryDefault'}, {'index': 1, 'type': 'W2KNETNCL'}, - {'index': 27, 'type': 'LnxTPGSALUA_SF'}, {'index': 28, 'type': 'LnxDHALUA'}], - 'netapp_hosts': [ - {'group_id': '0000000000000000000000000000000000000000', 'host_type_index': 28, - 'hosts_reference': '84000000600A098000A4B28D00303D005D430107', - 'id': '84000000600A098000A4B28D00303D005D430107', 'name': 'test', - 'posts': [{'address': 'iqn.iscsi_tests1', 'label': 'iscsi_test1', 'type': 'iscsi'}]}, - {'group_id': '0000000000000000000000000000000000000000', 'host_type_index': 28, - 'hosts_reference': '84000000600A098000A4B9D1003037035D4300F8', - 'id': '84000000600A098000A4B9D1003037035D4300F8', 'name': 'test2', - 'posts': [{'address': 'iqn.iscsi_tests2', 'label': 'iscsi_test2', 'type': 'iscsi'}]}, - {'group_id': '0000000000000000000000000000000000000000', 'host_type_index': 28, - 'hosts_reference': '84000000600A098000A4B28D00303D065D430118', - 'id': '84000000600A098000A4B28D00303D065D430118', 'name': 'beegfs_storage1', - 'posts': [{'address': 'iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818', 'label': 'beegfs_storage1_iscsi_0', - 'type': 'iscsi'}]}, - {'group_id': '0000000000000000000000000000000000000000', 'host_type_index': 28, - 'hosts_reference': '84000000600A098000A4B9D10030370B5D430109', - 'id': '84000000600A098000A4B9D10030370B5D430109', 'name': 'beegfs_metadata1', - 'posts': [{'address': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8', 'label': 'beegfs_metadata1_iscsi_0', - 'type': 'iscsi'}]}], - 'netapp_hostside_interfaces': [{'fc': [], 'ib': [], - 'iscsi': [ - {'controller': 'A', 'current_interface_speed': '10g', 'ipv4_address': '10.10.11.110', - 'ipv4_enabled': True, - 'ipv4_gateway': '0.0.0.0', 'ipv4_subnet_mask': '255.255.255.0', 'ipv6_enabled': True, - 'iqn': 'iqn.1992-08.com.netapp:2806.600a098000a4b28d000000005cf10481', 'link_status': 'up', - 'mtu': 9000, - 'supported_interface_speeds': ['1g', '10g']}], 'sas': []}], - 'netapp_management_interfaces': [ - {'alias': 'ictm0718s01c1-a', 'channel': 1, 'controller': 'A', 'dns_config_method': 'stat', - 'dns_servers': [{'addressType': 'ipv4', 'ipv4Address': '10.193.0.250', 'ipv6Address': None}, - {'addressType': 'ipv4', 'ipv4Address': '10.192.0.250', 'ipv6Address': None}], - 'ipv4_address': '10.113.1.192', - 'ipv4_address_config_method': 'static', 'ipv4_enabled': True, 'ipv4_gateway': '10.113.1.1', - 'ipv4_subnet_mask': '255.255.255.0', 'ipv6_enabled': False, 'link_status': 'up', - 'mac_address': '00A098A4B28D', 'name': 'wan0', 'ntp_config_method': 'stat', - 'ntp_servers': [ - {'addrType': 'ipvx', 'domainName': None, - 'ipvxAddress': {'addressType': 'ipv4', 'ipv4Address': '216.239.35.0', 'ipv6Address': None}}, - {'addrType': 'ipvx', 'domainName': None, - 'ipvxAddress': {'addressType': 'ipv4', 'ipv4Address': '216.239.35.4', 'ipv6Address': None}}], - 'remote_ssh_access': True}], - 'netapp_storage_array': {'cache_block_sizes': [4096, 8192, 16384, 32768], 'chassis_serial': '021633035190', - 'firmware': '08.42.30.05', 'name': 'ictm0718s01c1', - 'segment_sizes': [32768, 65536, 131072, 262144, 524288, 495616, 655360, 1982464], - 'wwn': '600A098000A4B28D000000005CF10481'}, - 'netapp_storage_pools': [ - {'available_capacity': '8498142969856', 'id': '04000000600A098000A4B9D10000380A5D4AAC3C', 'name': 'beegfs_storage_vg', - 'total_capacity': '9597654597632', 'used_capacity': '1099511627776'}], - 'netapp_volumes': [ - {'capacity': '1099511627776', 'id': '02000000600A098000A4B28D00003E435D4AAC54', 'is_thin_provisioned': False, - 'name': 'beegfs_storage_01_1', 'parent_storage_pool_id': '04000000600A098000A4B9D10000380A5D4AAC3C', 'workload': []}], - 'netapp_volumes_by_initiators': {'beegfs_metadata1': [], - 'beegfs_storage1': [{ - 'id': '02000000600A098000A4B28D00003E435D4AAC54', - 'meta_data': {}, - 'name': 'beegfs_storage_01_1', - 'workload_name': '', - 'wwn': '600A098000A4B28D00003E435D4AAC54'}], - 'test': [], 'test2': []}, - 'netapp_workload_tags': [ - {'attributes': [{'key': 'profileId', 'value': 'ansible_workload_1'}], 'id': '4200000001000000000000000000000000000000', - 'name': 'beegfs_metadata'}, - {'attributes': [{'key': 'profileId', 'value': 'Other_1'}], 'id': '4200000002000000000000000000000000000000', - 'name': 'other_workload_1'}], 'snapshot_images': [], 'ssid': '1'} - - def _set_args(self, **kwargs): - module_args = self.REQUIRED_PARAMS.copy() - if kwargs is not None: - module_args.update(kwargs) - set_module_args(module_args) - - def test_get_controllers_pass(self): - """Verify get_controllers returns the expected results.""" - self._set_args() - facts = Facts() - with mock.patch(self.REQUEST_FUNC, return_value=(200, ["070000000000000000000002", "070000000000000000000001"])): - self.assertEqual(facts.get_controllers(), {"070000000000000000000001": "A", "070000000000000000000002": "B"}) - - def test_get_controllers_fail(self): - """Verify get_controllers throws the expected exceptions.""" - self._set_args() - facts = Facts() - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve controller list!"): - with mock.patch(self.REQUEST_FUNC, return_value=Exception()): - facts.get_controllers() - - def test_get_array_facts_pass(self): - """Verify get_array_facts method returns expected results.""" - self._set_args() - facts = Facts() - facts.is_embedded = lambda: True - with mock.patch(self.GET_CONTROLLERS_FUNC, return_value={"070000000000000000000001": "A", "070000000000000000000002": "B"}): - with mock.patch(self.REQUEST_FUNC, side_effect=[(200, self.GRAPH_RESPONSE), (200, self.WORKLOAD_RESPONSE)]): - self.assertEqual(facts.get_array_facts(), self.EXPECTED_GET_ARRAY_FACTS) diff --git a/test/units/modules/storage/netapp/test_netapp_e_firmware.py b/test/units/modules/storage/netapp/test_netapp_e_firmware.py deleted file mode 100644 index f1f4caac37..0000000000 --- a/test/units/modules/storage/netapp/test_netapp_e_firmware.py +++ /dev/null @@ -1,555 +0,0 @@ -# (c) 2018, NetApp Inc. -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -from __future__ import absolute_import, division, print_function -__metaclass__ = type - -try: - from unittest.mock import patch, mock_open -except ImportError: - from mock import patch, mock_open - -from ansible.module_utils import six -from ansible.modules.storage.netapp.netapp_e_firmware import NetAppESeriesFirmware -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args - -if six.PY2: - builtin_path = "__builtin__.open" -else: - builtin_path = "builtins.open" - - -def mock_open_with_iter(*args, **kwargs): - mock = mock_open(*args, **kwargs) - - if six.PY2: - mock.return_value.__iter__ = lambda x: iter(x.readline, "") - else: - mock.return_value.__iter__ = lambda x: x - mock.return_value.__next__ = lambda x: iter(x.readline, "") - return mock - - -class FirmwareTest(ModuleTestCase): - REQUIRED_PARAMS = {"api_username": "username", - "api_password": "password", - "api_url": "http://localhost/devmgr/v2", - "ssid": "1", - "validate_certs": "no"} - REQUEST_FUNC = "ansible.modules.storage.netapp.netapp_e_firmware.NetAppESeriesFirmware.request" - BASE_REQUEST_FUNC = "ansible.modules.storage.netapp.netapp_e_firmware.request" - CREATE_MULTIPART_FORMDATA_FUNC = "ansible.modules.storage.netapp.netapp_e_firmware.create_multipart_formdata" - SLEEP_FUNC = "ansible.modules.storage.netapp.netapp_e_firmware.sleep" - BUNDLE_HEADER = b'combined_content\x00\x00\x00\x04\x00\x00\x07\xf8#Engenio Downloadable Package\n#Tue Jun 04 11:46:48 CDT 2019\ncheckList=compatibleBoard' \ - b'Map,compatibleSubmodelMap,compatibleFirmwareMap,fileManifest\ncompatibleSubmodelMap=261|true,262|true,263|true,264|true,276|true,277|t' \ - b'rue,278|true,282|true,300|true,301|true,302|true,318|true,319|true,320|true,321|true,322|true,323|true,324|true,325|true,326|true,328|t' \ - b'rue,329|true,330|true,331|true,332|true,333|true,338|true,339|true,340|true,341|true,342|true,343|true,344|true,345|true,346|true,347|t' \ - b'rue,356|true,357|true,390|true\nnonDisplayableAttributeList=512\ndisplayableAttributeList=FILENAME|RCB_11.40.5_280x_5ceef00e.dlp,VERSI' \ - b'ON|11.40.5\ndacStoreLimit=512\nfileManifest=metadata.tar|metadata|08.42.50.00.000|c04275f98fc2f07bd63126fc57cb0569|bundle|10240,084250' \ - b'00_m3_e30_842_root.img|linux|08.42.50.00|367c5216e5c4b15b904a025bff69f039|linux|1342177280,RC_08425000_m3_e30_842_280x.img|linux_cfw|0' \ - b'8.42.50.00|e6589b0a50b29ff34b34d3ced8ae3ccb|eos|1073741824,msw.img|sam|11.42.0000.0028|ef3ee5589ab4a019a3e6f83768364aa1|linux|41943040' \ - b'0,iom.img|iom|11.42.0G00.0003|9bb740f8d3a4e62a0f2da2ec83c254c4|linux|8177664\nmanagementVersionList=devmgr.v1142api8.Manager\ncompatib' \ - b'leFirmwareMap=08.30.*.*|true,08.30.*.30|false,08.30.*.31|false,08.30.*.32|false,08.30.*.33|false,08.30.*.34|false,08.30.*.35|false,08.' \ - b'30.*.36|false,08.30.*.37|false,08.30.*.38|false,08.30.*.39|false,08.40.*.*|true,08.40.*.30|false,08.40.*.31|false,08.40.*.32|false,08.4' \ - b'0.*.33|false,08.40.*.34|false,08.40.*.35|false,08.40.*.36|false,08.40.*.37|false,08.40.*.38|false,08.40.*.39|false,08.41.*.*|true,08.4' \ - b'1.*.30|false,08.41.*.31|false,08.41.*.32|false,08.41.*.33|false,08.41.*.34|false,08.41.*.35|false,08.41.*.36|false,08.41.*.37|false,08' \ - b'.41.*.38|false,08.41.*.39|false,08.42.*.*|true,08.42.*.30|false,08.42.*.31|false,08.42.*.32|false,08.42.*.33|false,08.42.*.34|false,08' \ - b'.42.*.35|false,08.42.*.36|false,08.42.*.37|false,08.42.*.38|false,08.42.*.39|false\nversion=08.42.50.00.000\ntype=tar\nversionTag=comb' \ - b'ined_content\n' - - NVSRAM_HEADER = b'nvsram \x00\x00\x00\x01\x00\x00\x00\xa0\x00\x00\x00\x04280X\x00\x00\x00\x00\x00\x00\x00\x032801 2804 2806 \x00\x00' \ - b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x1bArapaho controller, 8.52 FW\x00\x00\x001dual controller configuration, with cac' \ - b'he battery\x07\x81A\x08Config\x00\x00\x0008.52.00.00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\xdc\xaf\x00\x00' \ - b'\x94\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00 2801 2804 2806 \x00\x00\x00\x00\x00' \ - b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ - b'\x00\x00\x00\x00\x00\x00Board\n .Board Name = "NetApp RAID Controller"\n .NVSRAM Configuration Number' \ - b' = "N280X-852834-D02"\n\nUserCfg\n .Enable Synchronous Negotiation = 0x00 \n' - - def _set_args(self, args=None): - module_args = self.REQUIRED_PARAMS.copy() - if args is not None: - module_args.update(args) - set_module_args(module_args) - - def test_is_firmware_bundled_pass(self): - """Determine whether firmware file is bundled.""" - self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"}) - with patch(builtin_path, mock_open(read_data=b"firmwarexxxxxxxx")) as mock_file: - firmware = NetAppESeriesFirmware() - self.assertEqual(firmware.is_firmware_bundled(), False) - - self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"}) - with patch(builtin_path, mock_open(read_data=self.BUNDLE_HEADER[:16])) as mock_file: - firmware = NetAppESeriesFirmware() - self.assertEqual(firmware.is_firmware_bundled(), True) - - def test_is_firmware_bundles_fail(self): - """Verify non-firmware fails.""" - self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"}) - with patch(builtin_path, mock_open(read_data=b"xxxxxxxxxxxxxxxx")) as mock_file: - firmware = NetAppESeriesFirmware() - with self.assertRaisesRegexp(AnsibleFailJson, "Firmware file is invalid."): - firmware.is_firmware_bundled() - - def test_firmware_version(self): - """Verify correct firmware version is returned.""" - self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"}) - firmware = NetAppESeriesFirmware() - firmware.is_firmware_bundled = lambda: True - with patch(builtin_path, mock_open_with_iter(read_data=self.BUNDLE_HEADER)) as mock_file: - self.assertEqual(firmware.firmware_version(), b"11.40.5") - - def test_nvsram_version(self): - """Verify correct nvsram version is returned.""" - self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"}) - firmware = NetAppESeriesFirmware() - - with patch(builtin_path, mock_open_with_iter(read_data=self.NVSRAM_HEADER)) as mock_file: - self.assertEqual(firmware.nvsram_version(), b"N280X-852834-D02") - - def test_check_system_health_pass(self): - """Validate check_system_health method.""" - self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"}) - firmware = NetAppESeriesFirmware() - with patch(self.REQUEST_FUNC, side_effect=[(200, {"requestId": "1"}), - (200, {"healthCheckRunning": True, - "results": [{"processingTimeMS": 0}]}), - (200, {"healthCheckRunning": False, - "results": [{"successful": True}]})]): - firmware.check_system_health() - - def test_check_system_health_fail(self): - """Validate check_system_health method throws proper exceptions.""" - self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"}) - firmware = NetAppESeriesFirmware() - with patch("time.sleep", return_value=None): - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to initiate health check."): - with patch(self.REQUEST_FUNC, return_value=(404, Exception())): - firmware.check_system_health() - - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve health check status."): - with patch(self.REQUEST_FUNC, side_effect=[(200, {"requestId": "1"}), - (404, Exception())]): - firmware.check_system_health() - - with self.assertRaisesRegexp(AnsibleFailJson, "Health check failed to complete."): - with patch(self.REQUEST_FUNC, side_effect=[(200, {"requestId": "1"}), - (200, {"healthCheckRunning": True, - "results": [{"processingTimeMS": 120001}]})]): - firmware.check_system_health() - - def test_embedded_check_nvsram_compatibility_pass(self): - """Verify embedded nvsram compatibility.""" - self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"}) - firmware = NetAppESeriesFirmware() - with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("", {})): - with patch(self.REQUEST_FUNC, return_value=(200, {"signatureTestingPassed": True, - "fileCompatible": True, - "versionContents": [{"module": "nvsram", - "bundledVersion": "N280X-842834-D02", - "onboardVersion": "N280X-842834-D02"}]})): - firmware.embedded_check_nvsram_compatibility() - - def test_embedded_check_nvsram_compatibility_fail(self): - """Verify embedded nvsram compatibility fails with expected exceptions.""" - self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"}) - firmware = NetAppESeriesFirmware() - - with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("", {})): - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve NVSRAM compatibility results."): - with patch(self.REQUEST_FUNC, return_value=Exception()): - firmware.embedded_check_nvsram_compatibility() - - with self.assertRaisesRegexp(AnsibleFailJson, "Invalid NVSRAM file."): - with patch(self.REQUEST_FUNC, return_value=(200, {"signatureTestingPassed": False, - "fileCompatible": False, - "versionContents": [{"module": "nvsram", - "bundledVersion": "N280X-842834-D02", - "onboardVersion": "N280X-842834-D02"}]})): - firmware.embedded_check_nvsram_compatibility() - - with self.assertRaisesRegexp(AnsibleFailJson, "Incompatible NVSRAM file."): - with patch(self.REQUEST_FUNC, return_value=(200, {"signatureTestingPassed": True, - "fileCompatible": False, - "versionContents": [{"module": "nvsram", - "bundledVersion": "N280X-842834-D02", - "onboardVersion": "N280X-842834-D02"}]})): - firmware.embedded_check_nvsram_compatibility() - - def test_embedded_check_firmware_compatibility_pass(self): - """Verify embedded firmware compatibility.""" - self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"}) - firmware = NetAppESeriesFirmware() - - with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("", {})): - with patch(self.REQUEST_FUNC, return_value=(200, { - "signatureTestingPassed": True, - "fileCompatible": True, - "versionContents": [ - {"module": "bundle", "bundledVersion": "08.42.50.00.000", "onboardVersion": "08.42.30.05"}, - {"module": "bundleDisplay", "bundledVersion": "11.40.5", "onboardVersion": "11.40.3R2"}, - {"module": "hypervisor", "bundledVersion": "08.42.50.00", "onboardVersion": "08.42.30.05"}, - {"module": "raid", "bundledVersion": "08.42.50.00", "onboardVersion": "08.42.30.05"}, - {"module": "management", "bundledVersion": "11.42.0000.0028", "onboardVersion": "11.42.0000.0026"}, - {"module": "iom", "bundledVersion": "11.42.0G00.0003", "onboardVersion": "11.42.0G00.0001"}]})): - firmware.embedded_check_bundle_compatibility() - - def test_embedded_check_firmware_compatibility_fail(self): - """Verify embedded firmware compatibility fails with expected exceptions.""" - self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"}) - firmware = NetAppESeriesFirmware() - - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve bundle compatibility results."): - with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("", {})): - with patch(self.REQUEST_FUNC, return_value=Exception()): - firmware.embedded_check_bundle_compatibility() - - with self.assertRaisesRegexp(AnsibleFailJson, "Invalid firmware bundle file."): - with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("", {})): - with patch(self.REQUEST_FUNC, return_value=(200, { - "signatureTestingPassed": False, - "fileCompatible": True, - "versionContents": [ - {"module": "bundle", "bundledVersion": "08.42.50.00.000", "onboardVersion": "08.42.30.05"}, - {"module": "bundleDisplay", "bundledVersion": "11.40.5", "onboardVersion": "11.40.3R2"}, - {"module": "hypervisor", "bundledVersion": "08.42.50.00", "onboardVersion": "08.42.30.05"}, - {"module": "raid", "bundledVersion": "08.42.50.00", "onboardVersion": "08.42.30.05"}, - {"module": "management", "bundledVersion": "11.42.0000.0028", "onboardVersion": "11.42.0000.0026"}, - {"module": "iom", "bundledVersion": "11.42.0G00.0003", "onboardVersion": "11.42.0G00.0001"}]})): - firmware.embedded_check_bundle_compatibility() - - with self.assertRaisesRegexp(AnsibleFailJson, "Incompatible firmware bundle file."): - with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("", {})): - with patch(self.REQUEST_FUNC, return_value=(200, { - "signatureTestingPassed": True, - "fileCompatible": False, - "versionContents": [ - {"module": "bundle", "bundledVersion": "08.42.50.00.000", "onboardVersion": "08.42.30.05"}, - {"module": "bundleDisplay", "bundledVersion": "11.40.5", "onboardVersion": "11.40.3R2"}, - {"module": "hypervisor", "bundledVersion": "08.42.50.00", "onboardVersion": "08.42.30.05"}, - {"module": "raid", "bundledVersion": "08.42.50.00", "onboardVersion": "08.42.30.05"}, - {"module": "management", "bundledVersion": "11.42.0000.0028", "onboardVersion": "11.42.0000.0026"}, - {"module": "iom", "bundledVersion": "11.42.0G00.0003", "onboardVersion": "11.42.0G00.0001"}]})): - firmware.embedded_check_bundle_compatibility() - - with self.assertRaisesRegexp(AnsibleFailJson, "Downgrades are not permitted."): - with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("", {})): - with patch(self.REQUEST_FUNC, return_value=(200, { - "signatureTestingPassed": True, - "fileCompatible": True, - "versionContents": [ - {"module": "bundle", "bundledVersion": "08.42.00.00.000", "onboardVersion": "08.50.30.05"}, - {"module": "bundleDisplay", "bundledVersion": "11.40.5", "onboardVersion": "11.40.3R2"}, - {"module": "hypervisor", "bundledVersion": "08.42.50.00", "onboardVersion": "08.42.30.05"}, - {"module": "raid", "bundledVersion": "08.42.50.00", "onboardVersion": "08.42.30.05"}, - {"module": "management", "bundledVersion": "11.42.0000.0028", "onboardVersion": "11.42.0000.0026"}, - {"module": "iom", "bundledVersion": "11.42.0G00.0003", "onboardVersion": "11.42.0G00.0001"}]})): - firmware.embedded_check_bundle_compatibility() - with self.assertRaisesRegexp(AnsibleFailJson, "Downgrades are not permitted."): - with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("", {})): - with patch(self.REQUEST_FUNC, return_value=(200, { - "signatureTestingPassed": True, - "fileCompatible": True, - "versionContents": [ - {"module": "bundle", "bundledVersion": "08.42.00.00.000", "onboardVersion": "09.20.30.05"}, - {"module": "bundleDisplay", "bundledVersion": "11.40.5", "onboardVersion": "11.40.3R2"}, - {"module": "hypervisor", "bundledVersion": "08.42.50.00", "onboardVersion": "08.42.30.05"}, - {"module": "raid", "bundledVersion": "08.42.50.00", "onboardVersion": "08.42.30.05"}, - {"module": "management", "bundledVersion": "11.42.0000.0028", "onboardVersion": "11.42.0000.0026"}, - {"module": "iom", "bundledVersion": "11.42.0G00.0003", "onboardVersion": "11.42.0G00.0001"}]})): - firmware.embedded_check_bundle_compatibility() - - def test_embedded_wait_for_upgrade_pass(self): - """Verify controller reboot wait succeeds.""" - self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"}) - firmware = NetAppESeriesFirmware() - firmware.firmware_version = lambda: b"11.40.3R2" - firmware.nvsram_version = lambda: b"N280X-842834-D02" - with patch(self.SLEEP_FUNC, return_value=None): - with patch(self.REQUEST_FUNC, return_value=(200, [{"fwVersion": "08.42.30.05", "nvsramVersion": "N280X-842834-D02", - "extendedSAData": {"codeVersions": [{"codeModule": "bundleDisplay", - "versionString": "11.40.3R2"}]}}])): - firmware.embedded_wait_for_upgrade() - - def test_embedded_wait_for_upgrade_fail(self): - """Verify controller reboot wait throws expected exceptions""" - self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"}) - firmware = NetAppESeriesFirmware() - with self.assertRaisesRegexp(AnsibleFailJson, "Timeout waiting for Santricity Web Services Embedded."): - with patch(self.SLEEP_FUNC, return_value=None): - with patch(self.BASE_REQUEST_FUNC, return_value=Exception()): - firmware.embedded_wait_for_upgrade() - - def test_embedded_upgrade_pass(self): - """Verify embedded upgrade function.""" - with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("", {})): - with patch(self.SLEEP_FUNC, return_value=None): - - self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"}) - firmware = NetAppESeriesFirmware() - with patch(self.REQUEST_FUNC, return_value=(200, "")): - with patch(self.BASE_REQUEST_FUNC, side_effect=[Exception(), Exception(), (200, "")]): - firmware.embedded_upgrade() - self.assertTrue(firmware.upgrade_in_progress) - - self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp", "wait_for_completion": True}) - firmware = NetAppESeriesFirmware() - firmware.firmware_version = lambda: b"11.40.3R2" - firmware.nvsram_version = lambda: b"N280X-842834-D02" - with patch(self.REQUEST_FUNC, return_value=(200, [{"fwVersion": "08.42.30.05", "nvsramVersion": "N280X-842834-D02", - "extendedSAData": {"codeVersions": [{"codeModule": "bundleDisplay", - "versionString": "11.40.3R2"}]}}])): - firmware.embedded_upgrade() - self.assertFalse(firmware.upgrade_in_progress) - - def test_embedded_upgrade_fail(self): - """Verify embedded upgrade throws expected exception.""" - self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"}) - firmware = NetAppESeriesFirmware() - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to upload and activate firmware."): - with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("", {})): - with patch(self.REQUEST_FUNC, return_value=Exception()): - firmware.embedded_upgrade() - - def test_check_nvsram_compatibility_pass(self): - """Verify proxy nvsram compatibility.""" - self._set_args({"firmware": "test.dlp", "nvsram": "test_nvsram.dlp"}) - firmware = NetAppESeriesFirmware() - with patch(self.SLEEP_FUNC, return_value=None): - with patch(self.REQUEST_FUNC, side_effect=[(200, {"requestId": 1}), - (200, {"checkRunning": True}), - (200, {"checkRunning": False, - "results": [{"nvsramFiles": [{"filename": "test_nvsram.dlp"}]}]})]): - firmware.proxy_check_nvsram_compatibility() - - def test_check_nvsram_compatibility_fail(self): - """Verify proxy nvsram compatibility throws expected exceptions.""" - self._set_args({"firmware": "test.dlp", "nvsram": "test_nvsram.dlp"}) - firmware = NetAppESeriesFirmware() - with patch(self.SLEEP_FUNC, return_value=None): - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to receive NVSRAM compatibility information."): - with patch(self.REQUEST_FUNC, return_value=Exception()): - firmware.proxy_check_nvsram_compatibility() - - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve NVSRAM status update from proxy."): - with patch(self.REQUEST_FUNC, side_effect=[(200, {"requestId": 1}), Exception()]): - firmware.proxy_check_nvsram_compatibility() - - with self.assertRaisesRegexp(AnsibleFailJson, "NVSRAM is not compatible."): - with patch(self.REQUEST_FUNC, side_effect=[(200, {"requestId": 1}), - (200, {"checkRunning": True}), - (200, {"checkRunning": False, - "results": [{"nvsramFiles": [{"filename": "not_test_nvsram.dlp"}]}]})]): - firmware.proxy_check_nvsram_compatibility() - - def test_check_firmware_compatibility_pass(self): - """Verify proxy firmware compatibility.""" - self._set_args({"firmware": "test_firmware.dlp", "nvsram": "test_nvsram.dlp"}) - firmware = NetAppESeriesFirmware() - with patch(self.SLEEP_FUNC, return_value=None): - with patch(self.REQUEST_FUNC, side_effect=[(200, {"requestId": 1}), - (200, {"checkRunning": True}), - (200, {"checkRunning": False, - "results": [{"cfwFiles": [{"filename": "test_firmware.dlp"}]}]})]): - firmware.proxy_check_firmware_compatibility() - - def test_check_firmware_compatibility_fail(self): - """Verify proxy firmware compatibility throws expected exceptions.""" - self._set_args({"firmware": "test_firmware.dlp", "nvsram": "test_nvsram.dlp"}) - firmware = NetAppESeriesFirmware() - - with patch(self.SLEEP_FUNC, return_value=None): - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to receive firmware compatibility information."): - with patch(self.REQUEST_FUNC, return_value=Exception()): - firmware.proxy_check_firmware_compatibility() - - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve firmware status update from proxy."): - with patch(self.REQUEST_FUNC, side_effect=[(200, {"requestId": 1}), Exception()]): - firmware.proxy_check_firmware_compatibility() - - with self.assertRaisesRegexp(AnsibleFailJson, "Firmware bundle is not compatible."): - with patch(self.REQUEST_FUNC, side_effect=[(200, {"requestId": 1}), - (200, {"checkRunning": True}), - (200, {"checkRunning": False, - "results": [{"cfwFiles": [{"filename": "not_test_firmware.dlp"}]}]})]): - firmware.proxy_check_firmware_compatibility() - - def test_proxy_upload_and_check_compatibility_pass(self): - """Verify proxy_upload_and_check_compatibility""" - self._set_args({"firmware": "test_firmware.dlp", "nvsram": "test_nvsram.dlp"}) - firmware = NetAppESeriesFirmware() - firmware.proxy_check_nvsram_compatibility = lambda: None - firmware.proxy_check_firmware_compatibility = lambda: None - with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("headers", "data")): - with patch(self.REQUEST_FUNC, side_effect=[(200, [{"version": "XX.XX.XX.XX", "filename": "test"}, - {"version": "XXXXXXXXXX", "filename": "test.dlp"}]), - (200, None), (200, None)]): - firmware.proxy_upload_and_check_compatibility() - - with patch(self.REQUEST_FUNC, return_value=(200, [{"version": "XX.XX.XX.XX", "filename": "test"}, - {"version": "test_nvsram", "filename": "test_nvsram.dlp"}, - {"version": "test", "filename": "test.dlp"}, - {"filename": "test_firmware.dlp", "version": "test_firmware"}])): - firmware.proxy_upload_and_check_compatibility() - - def test_proxy_upload_and_check_compatibility_fail(self): - """Verify proxy_upload_and_check_compatibility throws expected exceptions.""" - self._set_args({"firmware": "test_firmware.dlp", "nvsram": "test_nvsram.dlp"}) - firmware = NetAppESeriesFirmware() - firmware.proxy_check_nvsram_compatibility = lambda: None - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve existing existing firmware files."): - with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("headers", "data")): - with patch(self.REQUEST_FUNC, return_value=Exception()): - firmware.proxy_upload_and_check_compatibility() - - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to upload NVSRAM file."): - with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("headers", "data")): - with patch(self.REQUEST_FUNC, side_effect=[(200, [{"version": "XX.XX.XX.XX", "filename": "test"}, - {"version": "XXXXXXXXXX", "filename": "test.dlp"}]), - Exception()]): - firmware.proxy_upload_and_check_compatibility() - - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to upload firmware bundle file."): - with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("headers", "data")): - with patch(self.REQUEST_FUNC, side_effect=[(200, [{"version": "XX.XX.XX.XX", "filename": "test"}, - {"version": "XXXXXXXXXX", "filename": "test.dlp"}]), - (200, None), Exception()]): - firmware.proxy_upload_and_check_compatibility() - - def test_proxy_check_upgrade_required_pass(self): - """Verify proxy_check_upgrade_required.""" - self._set_args({"firmware": "test_firmware.dlp", "nvsram": "test_nvsram.dlp"}) - firmware = NetAppESeriesFirmware() - - firmware.firmware_version = lambda: b"08.42.50.00" - firmware.nvsram_version = lambda: b"nvsram_version" - with patch(self.REQUEST_FUNC, side_effect=[(200, [{"versionString": "08.42.50.00"}]), (200, ["nvsram_version"])]): - firmware.is_firmware_bundled = lambda: True - firmware.proxy_check_upgrade_required() - self.assertFalse(firmware.upgrade_required) - - with patch(self.REQUEST_FUNC, side_effect=[(200, ["08.42.50.00"]), (200, ["nvsram_version"])]): - firmware.is_firmware_bundled = lambda: False - firmware.proxy_check_upgrade_required() - self.assertFalse(firmware.upgrade_required) - - firmware.firmware_version = lambda: b"08.42.50.00" - firmware.nvsram_version = lambda: b"not_nvsram_version" - with patch(self.REQUEST_FUNC, side_effect=[(200, [{"versionString": "08.42.50.00"}]), (200, ["nvsram_version"])]): - firmware.is_firmware_bundled = lambda: True - firmware.proxy_check_upgrade_required() - self.assertTrue(firmware.upgrade_required) - - with patch(self.REQUEST_FUNC, side_effect=[(200, ["08.42.50.00"]), (200, ["nvsram_version"])]): - firmware.is_firmware_bundled = lambda: False - firmware.proxy_check_upgrade_required() - self.assertTrue(firmware.upgrade_required) - - firmware.firmware_version = lambda: b"08.52.00.00" - firmware.nvsram_version = lambda: b"nvsram_version" - with patch(self.REQUEST_FUNC, side_effect=[(200, [{"versionString": "08.42.50.00"}]), (200, ["nvsram_version"])]): - firmware.is_firmware_bundled = lambda: True - firmware.proxy_check_upgrade_required() - self.assertTrue(firmware.upgrade_required) - - with patch(self.REQUEST_FUNC, side_effect=[(200, ["08.42.50.00"]), (200, ["nvsram_version"])]): - firmware.is_firmware_bundled = lambda: False - firmware.proxy_check_upgrade_required() - self.assertTrue(firmware.upgrade_required) - - firmware.firmware_version = lambda: b"08.52.00.00" - firmware.nvsram_version = lambda: b"not_nvsram_version" - with patch(self.REQUEST_FUNC, side_effect=[(200, [{"versionString": "08.42.50.00"}]), (200, ["nvsram_version"])]): - firmware.is_firmware_bundled = lambda: True - firmware.proxy_check_upgrade_required() - self.assertTrue(firmware.upgrade_required) - - with patch(self.REQUEST_FUNC, side_effect=[(200, ["08.42.50.00"]), (200, ["nvsram_version"])]): - firmware.is_firmware_bundled = lambda: False - firmware.proxy_check_upgrade_required() - self.assertTrue(firmware.upgrade_required) - - def test_proxy_check_upgrade_required_fail(self): - """Verify proxy_check_upgrade_required throws expected exceptions.""" - self._set_args({"firmware": "test_firmware.dlp", "nvsram": "test_nvsram.dlp"}) - firmware = NetAppESeriesFirmware() - - firmware.firmware_version = lambda: b"08.42.50.00" - firmware.nvsram_version = lambda: b"not_nvsram_version" - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve controller firmware information."): - with patch(self.REQUEST_FUNC, return_value=Exception()): - firmware.proxy_check_upgrade_required() - - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve storage system's NVSRAM version."): - with patch(self.REQUEST_FUNC, side_effect=[(200, [{"versionString": "08.42.50.00"}]), Exception()]): - firmware.is_firmware_bundled = lambda: True - firmware.proxy_check_upgrade_required() - - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve storage system's NVSRAM version."): - with patch(self.REQUEST_FUNC, side_effect=[(200, ["08.42.50.00"]), Exception()]): - firmware.is_firmware_bundled = lambda: False - firmware.proxy_check_upgrade_required() - - with self.assertRaisesRegexp(AnsibleFailJson, "Downgrades are not permitted."): - with patch(self.REQUEST_FUNC, side_effect=[(200, [{"versionString": "08.42.50.00"}]), (200, ["nvsram_version"])]): - firmware.firmware_version = lambda: b"08.40.00.00" - firmware.nvsram_version = lambda: "nvsram_version" - firmware.is_firmware_bundled = lambda: True - firmware.proxy_check_upgrade_required() - - with self.assertRaisesRegexp(AnsibleFailJson, "Downgrades are not permitted."): - with patch(self.REQUEST_FUNC, side_effect=[(200, ["08.42.50.00"]), (200, ["nvsram_version"])]): - firmware.is_firmware_bundled = lambda: False - firmware.proxy_check_upgrade_required() - - def test_proxy_wait_for_upgrade_pass(self): - """Verify proxy_wait_for_upgrade.""" - with patch(self.SLEEP_FUNC, return_value=None): - self._set_args({"firmware": "test_firmware.dlp", "nvsram": "expected_nvsram.dlp"}) - firmware = NetAppESeriesFirmware() - - firmware.is_firmware_bundled = lambda: True - with patch(self.REQUEST_FUNC, side_effect=[(200, {"status": "not_done"}), (200, {"status": "complete"})]): - firmware.proxy_wait_for_upgrade("1") - - firmware.is_firmware_bundled = lambda: False - firmware.firmware_version = lambda: b"08.50.00.00" - firmware.nvsram_version = lambda: b"expected_nvsram" - with patch(self.REQUEST_FUNC, side_effect=[(200, ["08.40.00.00"]), (200, ["not_expected_nvsram"]), - (200, ["08.50.00.00"]), (200, ["expected_nvsram"])]): - firmware.proxy_wait_for_upgrade("1") - - def test_proxy_wait_for_upgrade_fail(self): - """Verify proxy_wait_for_upgrade throws expected exceptions.""" - with patch(self.SLEEP_FUNC, return_value=None): - self._set_args({"firmware": "test_firmware.dlp", "nvsram": "test_nvsram.dlp"}) - firmware = NetAppESeriesFirmware() - - firmware.is_firmware_bundled = lambda: True - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve firmware upgrade status."): - with patch(self.REQUEST_FUNC, return_value=Exception()): - firmware.proxy_wait_for_upgrade("1") - - firmware.is_firmware_bundled = lambda: False - with self.assertRaisesRegexp(AnsibleFailJson, "Timed out waiting for firmware upgrade to complete."): - with patch(self.REQUEST_FUNC, return_value=Exception()): - firmware.proxy_wait_for_upgrade("1") - - firmware.is_firmware_bundled = lambda: True - with self.assertRaisesRegexp(AnsibleFailJson, "Firmware upgrade failed to complete."): - with patch(self.REQUEST_FUNC, side_effect=[(200, {"status": "not_done"}), (200, {"status": "failed"})]): - firmware.proxy_wait_for_upgrade("1") - - def test_proxy_upgrade_fail(self): - """Verify proxy_upgrade throws expected exceptions.""" - self._set_args({"firmware": "test_firmware.dlp", "nvsram": "test_nvsram.dlp"}) - firmware = NetAppESeriesFirmware() - - firmware.is_firmware_bundled = lambda: True - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to initiate firmware upgrade."): - with patch(self.REQUEST_FUNC, return_value=Exception()): - firmware.proxy_upgrade() - - firmware.is_firmware_bundled = lambda: False - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to initiate firmware upgrade."): - with patch(self.REQUEST_FUNC, return_value=Exception()): - firmware.proxy_upgrade() diff --git a/test/units/modules/storage/netapp/test_netapp_e_global.py b/test/units/modules/storage/netapp/test_netapp_e_global.py deleted file mode 100644 index e944f8e851..0000000000 --- a/test/units/modules/storage/netapp/test_netapp_e_global.py +++ /dev/null @@ -1,76 +0,0 @@ -# (c) 2018, NetApp Inc. -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - - -from ansible.modules.storage.netapp.netapp_e_global import GlobalSettings -from units.modules.utils import AnsibleFailJson, ModuleTestCase, set_module_args - -__metaclass__ = type -from units.compat import mock - - -class GlobalSettingsTest(ModuleTestCase): - REQUIRED_PARAMS = { - 'api_username': 'rw', - 'api_password': 'password', - 'api_url': 'http://localhost', - 'ssid': '1', - } - REQ_FUNC = 'ansible.modules.storage.netapp.netapp_e_global.request' - - def _set_args(self, args=None): - module_args = self.REQUIRED_PARAMS.copy() - if args is not None: - module_args.update(args) - set_module_args(module_args) - - def test_set_name(self): - """Ensure we can successfully set the name""" - self._set_args(dict(name="x")) - - expected = dict(name='y', status='online') - namer = GlobalSettings() - # Expecting an update - with mock.patch(self.REQ_FUNC, return_value=(200, expected)) as req: - with mock.patch.object(namer, 'get_name', return_value='y'): - update = namer.update_name() - self.assertTrue(update) - # Expecting no update - with mock.patch(self.REQ_FUNC, return_value=(200, expected)) as req: - with mock.patch.object(namer, 'get_name', return_value='x'): - update = namer.update_name() - self.assertFalse(update) - - # Expecting an update, but no actual calls, since we're using check_mode=True - namer.check_mode = True - with mock.patch(self.REQ_FUNC, return_value=(200, expected)) as req: - with mock.patch.object(namer, 'get_name', return_value='y'): - update = namer.update_name() - self.assertEqual(0, req.called) - self.assertTrue(update) - - def test_get_name(self): - """Ensure we can successfully set the name""" - self._set_args() - - expected = dict(name='y', status='online') - namer = GlobalSettings() - - with mock.patch(self.REQ_FUNC, return_value=(200, expected)) as req: - name = namer.get_name() - self.assertEqual(name, expected['name']) - - def test_get_name_fail(self): - """Ensure we can successfully set the name""" - self._set_args() - - expected = dict(name='y', status='offline') - namer = GlobalSettings() - - with self.assertRaises(AnsibleFailJson): - with mock.patch(self.REQ_FUNC, side_effect=Exception()) as req: - name = namer.get_name() - - with self.assertRaises(AnsibleFailJson): - with mock.patch(self.REQ_FUNC, return_value=(200, expected)) as req: - update = namer.update_name() diff --git a/test/units/modules/storage/netapp/test_netapp_e_host.py b/test/units/modules/storage/netapp/test_netapp_e_host.py deleted file mode 100644 index db10b85205..0000000000 --- a/test/units/modules/storage/netapp/test_netapp_e_host.py +++ /dev/null @@ -1,489 +0,0 @@ -# (c) 2018, NetApp Inc. -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from ansible.modules.storage.netapp.netapp_e_host import Host -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args - -__metaclass__ = type - -try: - from unittest import mock -except ImportError: - import mock - - -class HostTest(ModuleTestCase): - REQUIRED_PARAMS = { - 'api_username': 'rw', - 'api_password': 'password', - 'api_url': 'http://localhost', - 'ssid': '1', - 'name': '1', - } - HOST = { - 'name': '1', - 'hostRef': '123', - 'label': '1', - 'id': '0' * 30, - 'clusterRef': 40 * '0', - 'hostTypeIndex': 28, - 'hostSidePorts': [], - 'initiators': [], - 'ports': [], - } - HOST_ALT = { - 'name': '2', - 'label': '2', - 'id': '1' * 30, - 'clusterRef': '1', - 'hostSidePorts': [], - 'initiators': [], - 'ports': [], - } - EXISTING_HOSTS = [ - {"hostRef": "84000000600A098000A4B28D00303D065D430118", "clusterRef": "0000000000000000000000000000000000000000", "label": "beegfs_storage1", - "hostTypeIndex": 28, "ports": [], "initiators": [{"initiatorRef": "89000000600A098000A4B28D00303CF55D4300E3", - "nodeName": {"ioInterfaceType": "iscsi", - "iscsiNodeName": "iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818", - "remoteNodeWWN": None, "nvmeNodeName": None}, - "alias": {"ioInterfaceType": "iscsi", "iscsiAlias": ""}, "label": "beegfs_storage1_iscsi_0", - "hostRef": "84000000600A098000A4B28D00303D065D430118", - "id": "89000000600A098000A4B28D00303CF55D4300E3"}], - "hostSidePorts": [{"type": "iscsi", "address": "iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818", "label": "beegfs_storage1_iscsi_0"}], - "id": "84000000600A098000A4B28D00303D065D430118", "name": "beegfs_storage1"}, - {"hostRef": "84000000600A098000A4B9D10030370B5D430109", "clusterRef": "0000000000000000000000000000000000000000", "label": "beegfs_metadata1", - "hostTypeIndex": 28, "ports": [], "initiators": [{"initiatorRef": "89000000600A098000A4B28D00303CFC5D4300F7", - "nodeName": {"ioInterfaceType": "iscsi", - "iscsiNodeName": "iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8", - "remoteNodeWWN": None, "nvmeNodeName": None}, - "alias": {"ioInterfaceType": "iscsi", "iscsiAlias": ""}, "label": "beegfs_metadata1_iscsi_0", - "hostRef": "84000000600A098000A4B9D10030370B5D430109", - "id": "89000000600A098000A4B28D00303CFC5D4300F7"}], - "hostSidePorts": [{"type": "iscsi", "address": "iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8", "label": "beegfs_metadata1_iscsi_0"}], - "id": "84000000600A098000A4B9D10030370B5D430109", "name": "beegfs_metadata1"}, - {"hostRef": "84000000600A098000A4B9D10030370B5D430109", "clusterRef": "85000000600A098000A4B9D1003637135D483DEB", "label": "beegfs_metadata2", - "hostTypeIndex": 28, "ports": [], "initiators": [{"initiatorRef": "89000000600A098000A4B28D00303CFC5D4300F7", - "nodeName": {"ioInterfaceType": "iscsi", - "iscsiNodeName": "iqn.used_elsewhere", - "remoteNodeWWN": None, "nvmeNodeName": None}, - "alias": {"ioInterfaceType": "iscsi", "iscsiAlias": ""}, "label": "beegfs_metadata2_iscsi_0", - "hostRef": "84000000600A098000A4B9D10030370B5D430109", - "id": "89000000600A098000A4B28D00303CFC5D4300F7"}], - "hostSidePorts": [{"type": "iscsi", "address": "iqn.used_elsewhere", "label": "beegfs_metadata2_iscsi_0"}], - "id": "84000000600A098000A4B9D10030370B5D430120", "name": "beegfs_metadata2"}] - HOST_GROUPS = [{"clusterRef": "85000000600A098000A4B9D1003637135D483DEB", "label": "test_group", "isSAControlled": False, - "confirmLUNMappingCreation": False, "protectionInformationCapableAccessMethod": True, "isLun0Restricted": False, - "id": "85000000600A098000A4B9D1003637135D483DEB", "name": "test_group"}] - HOST_TYPES = [{"name": "FactoryDefault", "index": 0, "code": "FactoryDefault"}, - {"name": "Windows 2000/Server 2003/Server 2008 Non-Clustered", "index": 1, "code": "W2KNETNCL"}, - {"name": "Solaris", "index": 2, "code": "SOL"}, - {"name": "Linux", "index": 6, "code": "LNX"}, - {"name": "LnxALUA", "index": 7, "code": "LnxALUA"}, - {"name": "Windows 2000/Server 2003/Server 2008 Clustered", "index": 8, "code": "W2KNETCL"}, - {"name": "LnxTPGSALUA_SF", "index": 27, "code": "LnxTPGSALUA_SF"}, - {"name": "LnxDHALUA", "index": 28, "code": "LnxDHALUA"}] - REQ_FUNC = 'ansible.modules.storage.netapp.netapp_e_host.request' - - def _set_args(self, args): - module_args = self.REQUIRED_PARAMS.copy() - module_args.update(args) - set_module_args(module_args) - - def test_host_exists_pass(self): - """Verify host_exists produces expected results.""" - with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)): - self._set_args({'state': 'present', 'name': 'new_host', 'host_type': 'linux dm-mp', 'force_port': False, - 'ports': [{'label': 'new_host_port_1', 'type': 'fc', 'port': '0x08ef08ef08ef08ef'}]}) - host = Host() - self.assertFalse(host.host_exists()) - - self._set_args({'state': 'present', 'name': 'does_not_exist', 'host_type': 'linux dm-mp', - 'ports': [{'label': 'beegfs_storage1_iscsi_0', 'type': 'iscsi', - 'port': 'iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818'}]}) - host = Host() - self.assertFalse(host.host_exists()) - - self._set_args({'state': 'present', 'name': 'beegfs_storage1', 'host_type': 'linux dm-mp', - 'ports': [{'label': 'beegfs_storage1_iscsi_0', 'type': 'iscsi', 'port': 'iqn.differentiqn.org'}]}) - host = Host() - self.assertTrue(host.host_exists()) - - with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)): - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': True, - 'ports': [{'label': 'beegfs_metadata1_iscsi_0', 'type': 'iscsi', - 'port': 'iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818'}]}) - host = Host() - self.assertTrue(host.host_exists()) - - def test_host_exists_fail(self): - """Verify host_exists produces expected exceptions.""" - self._set_args({'state': 'present', 'host_type': 'linux dm-mp', 'ports': [{'label': 'abc', 'type': 'iscsi', 'port': 'iqn:0'}]}) - host = Host() - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to determine host existence."): - with mock.patch(self.REQ_FUNC, return_value=Exception()): - host.host_exists() - - def test_needs_update_pass(self): - """Verify needs_update produces expected results.""" - # No changes - with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)): - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', - 'ports': [{'label': 'beegfs_metadata1_iscsi_0', 'type': 'iscsi', - 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]}) - host = Host() - host.host_exists() - self.assertFalse(host.needs_update()) - - # Change host type - with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)): - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'windows', 'force_port': False, - 'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'iscsi', 'port': 'iqn.not_used'}]}) - host = Host() - host.host_exists() - self.assertTrue(host.needs_update()) - - # Add port to host - with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)): - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False, - 'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'iscsi', 'port': 'iqn.not_used'}]}) - host = Host() - host.host_exists() - self.assertTrue(host.needs_update()) - - # Change port name - with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)): - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False, - 'ports': [{'label': 'beegfs_metadata1_iscsi_2', 'type': 'iscsi', - 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]}) - host = Host() - host.host_exists() - self.assertTrue(host.needs_update()) - - # take port from another host by force - with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)): - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': True, - 'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi', - 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]}) - host = Host() - host.host_exists() - self.assertTrue(host.needs_update()) - - def test_needs_update_fail(self): - """Verify needs_update produces expected exceptions.""" - with self.assertRaisesRegexp(AnsibleFailJson, "is associated with a different host."): - with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)): - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False, - 'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi', - 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]}) - host = Host() - host.host_exists() - host.needs_update() - - def test_valid_host_type_pass(self): - """Validate the available host types.""" - with mock.patch(self.REQ_FUNC, return_value=(200, self.HOST_TYPES)): - self._set_args({'state': 'present', 'host_type': '0'}) - host = Host() - self.assertTrue(host.valid_host_type()) - self._set_args({'state': 'present', 'host_type': '28'}) - host = Host() - self.assertTrue(host.valid_host_type()) - self._set_args({'state': 'present', 'host_type': 'windows'}) - host = Host() - self.assertTrue(host.valid_host_type()) - self._set_args({'state': 'present', 'host_type': 'linux dm-mp'}) - host = Host() - self.assertTrue(host.valid_host_type()) - - def test_valid_host_type_fail(self): - """Validate the available host types.""" - with self.assertRaisesRegexp(AnsibleFailJson, "host_type must be either a host type name or host type index found integer the documentation"): - self._set_args({'state': 'present', 'host_type': 'non-host-type'}) - host = Host() - - with mock.patch(self.REQ_FUNC, return_value=(200, self.HOST_TYPES)): - with self.assertRaisesRegexp(AnsibleFailJson, "There is no host type with index"): - self._set_args({'state': 'present', 'host_type': '4'}) - host = Host() - host.valid_host_type() - - with mock.patch(self.REQ_FUNC, return_value=Exception()): - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to get host types."): - self._set_args({'state': 'present', 'host_type': '4'}) - host = Host() - host.valid_host_type() - - def test_group_id_pass(self): - """Verify group_id produces expected results.""" - with mock.patch(self.REQ_FUNC, return_value=(200, self.HOST_GROUPS)): - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False, - 'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi', - 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]}) - host = Host() - self.assertEqual(host.group_id(), "0000000000000000000000000000000000000000") - - self._set_args({'state': 'present', 'name': 'beegfs_metadata2', 'host_type': 'linux dm-mp', 'force_port': False, 'group': 'test_group', - 'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi', - 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]}) - host = Host() - self.assertEqual(host.group_id(), "85000000600A098000A4B9D1003637135D483DEB") - - def test_group_id_fail(self): - """Verify group_id produces expected exceptions.""" - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to get host groups."): - with mock.patch(self.REQ_FUNC, return_value=Exception()): - self._set_args({'state': 'present', 'name': 'beegfs_metadata2', 'host_type': 'linux dm-mp', 'force_port': False, 'group': 'test_group2', - 'ports': [ - {'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi', 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]}) - host = Host() - host.group_id() - - with self.assertRaisesRegexp(AnsibleFailJson, "No group with the name:"): - with mock.patch(self.REQ_FUNC, return_value=(200, self.HOST_GROUPS)): - self._set_args({'state': 'present', 'name': 'beegfs_metadata2', 'host_type': 'linux dm-mp', 'force_port': False, 'group': 'test_group2', - 'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi', - 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]}) - host = Host() - host.group_id() - - def test_assigned_host_ports_pass(self): - """Verify assigned_host_ports gives expected results.""" - - # Add an unused port to host - with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)): - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False, - 'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'iscsi', 'port': 'iqn.not_used'}]}) - host = Host() - host.host_exists() - self.assertTrue(host.needs_update()) - self.assertEqual(host.assigned_host_ports(), {}) - - # Change port name (force) - with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)): - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': True, - 'ports': [{'label': 'beegfs_metadata1_iscsi_2', 'type': 'iscsi', - 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]}) - host = Host() - host.host_exists() - self.assertTrue(host.needs_update()) - self.assertEqual(host.assigned_host_ports(), {'84000000600A098000A4B9D10030370B5D430109': ['89000000600A098000A4B28D00303CFC5D4300F7']}) - - # Change port type - with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)): - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': True, - 'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'fc', 'port': '08:ef:7e:24:52:a0'}]}) - host = Host() - host.host_exists() - self.assertTrue(host.needs_update()) - self.assertEqual(host.assigned_host_ports(), {}) - - # take port from another host by force - with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)): - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': True, - 'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi', 'port': 'iqn.used_elsewhere'}]}) - host = Host() - host.host_exists() - self.assertTrue(host.needs_update()) - self.assertEqual(host.assigned_host_ports(), {'84000000600A098000A4B9D10030370B5D430109': ['89000000600A098000A4B28D00303CFC5D4300F7']}) - - # take port from another host by force - with mock.patch(self.REQ_FUNC, side_effect=[(200, self.EXISTING_HOSTS), (200, {})]): - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': True, - 'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi', 'port': 'iqn.used_elsewhere'}]}) - host = Host() - host.host_exists() - self.assertTrue(host.needs_update()) - self.assertEqual(host.assigned_host_ports(apply_unassigning=True), - {'84000000600A098000A4B9D10030370B5D430109': ['89000000600A098000A4B28D00303CFC5D4300F7']}) - - def test_assigned_host_ports_fail(self): - """Verify assigned_host_ports gives expected exceptions.""" - # take port from another - with self.assertRaisesRegexp(AnsibleFailJson, "There are no host ports available OR there are not enough unassigned host ports"): - with mock.patch(self.REQ_FUNC, side_effect=[(200, self.EXISTING_HOSTS)]): - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False, - 'ports': [{'label': 'beegfs_metadata1_iscsi_2', 'type': 'iscsi', - 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]}) - host = Host() - host.host_exists() - self.assertTrue(host.needs_update()) - host.assigned_host_ports(apply_unassigning=True) - - # take port from another host and fail because force == False - with self.assertRaisesRegexp(AnsibleFailJson, "There are no host ports available OR there are not enough unassigned host ports"): - with mock.patch(self.REQ_FUNC, side_effect=[(200, self.EXISTING_HOSTS)]): - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False, - 'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi', 'port': 'iqn.used_elsewhere'}]}) - host = Host() - host.host_exists() - self.assertTrue(host.needs_update()) - host.assigned_host_ports(apply_unassigning=True) - - # take port from another host and fail because force == False - with self.assertRaisesRegexp(AnsibleFailJson, "There are no host ports available OR there are not enough unassigned host ports"): - with mock.patch(self.REQ_FUNC, side_effect=[(200, self.EXISTING_HOSTS)]): - self._set_args({'state': 'present', 'name': 'beegfs_metadata3', 'host_type': 'linux dm-mp', 'force_port': False, - 'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi', 'port': 'iqn.used_elsewhere'}]}) - host = Host() - host.host_exists() - host.assigned_host_ports(apply_unassigning=True) - - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to unassign host port."): - with mock.patch(self.REQ_FUNC, side_effect=[(200, self.EXISTING_HOSTS), Exception()]): - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': True, - 'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi', 'port': 'iqn.used_elsewhere'}]}) - host = Host() - host.host_exists() - self.assertTrue(host.needs_update()) - host.assigned_host_ports(apply_unassigning=True) - - def test_update_host_pass(self): - """Verify update_host produces expected results.""" - # Change host type - with self.assertRaises(AnsibleExitJson): - with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)): - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'windows', 'force_port': True, - 'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'iscsi', - 'port': 'iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818'}]}) - host = Host() - host.build_success_payload = lambda x: {} - host.host_exists() - self.assertTrue(host.needs_update()) - host.update_host() - - # Change port iqn - with self.assertRaises(AnsibleExitJson): - with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)): - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False, - 'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'iscsi', 'port': 'iqn.not_used'}]}) - host = Host() - host.build_success_payload = lambda x: {} - host.host_exists() - self.assertTrue(host.needs_update()) - host.update_host() - - # Change port type to fc - with self.assertRaises(AnsibleExitJson): - with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)): - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False, - 'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'fc', 'port': '0x08ef08ef08ef08ef'}]}) - host = Host() - host.build_success_payload = lambda x: {} - host.host_exists() - self.assertTrue(host.needs_update()) - host.update_host() - - # Change port name - with self.assertRaises(AnsibleExitJson): - with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)): - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'windows', 'force_port': True, - 'ports': [{'label': 'beegfs_metadata1_iscsi_12', 'type': 'iscsi', - 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]}) - host = Host() - host.build_success_payload = lambda x: {} - host.host_exists() - self.assertTrue(host.needs_update()) - host.update_host() - - # Change group - with self.assertRaises(AnsibleExitJson): - with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)): - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'windows', 'force_port': False, 'group': 'test_group', - 'ports': [{'label': 'beegfs_metadata1_iscsi_0', 'type': 'iscsi', - 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]}) - host = Host() - host.build_success_payload = lambda x: {} - host.group_id = lambda: "85000000600A098000A4B9D1003637135D483DEB" - host.host_exists() - self.assertTrue(host.needs_update()) - host.update_host() - - def test_update_host_fail(self): - """Verify update_host produces expected exceptions.""" - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to update host."): - with mock.patch(self.REQ_FUNC, side_effect=[(200, self.EXISTING_HOSTS), Exception()]): - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'windows', 'force_port': False, 'group': 'test_group', - 'ports': [{'label': 'beegfs_metadata1_iscsi_0', 'type': 'iscsi', - 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]}) - host = Host() - host.build_success_payload = lambda x: {} - host.group_id = lambda: "85000000600A098000A4B9D1003637135D483DEB" - host.host_exists() - self.assertTrue(host.needs_update()) - host.update_host() - - def test_create_host_pass(self): - """Verify create_host produces expected results.""" - def _assigned_host_ports(apply_unassigning=False): - return None - - with self.assertRaises(AnsibleExitJson): - with mock.patch(self.REQ_FUNC, return_value=(200, {'id': '84000000600A098000A4B9D10030370B5D430109'})): - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'windows', 'force_port': True, 'group': 'test_group', - 'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'iscsi', - 'port': 'iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818'}]}) - host = Host() - host.host_exists = lambda: False - host.assigned_host_ports = _assigned_host_ports - host.build_success_payload = lambda x: {} - host.group_id = lambda: "85000000600A098000A4B9D1003637135D483DEB" - host.create_host() - - def test_create_host_fail(self): - """Verify create_host produces expected exceptions.""" - def _assigned_host_ports(apply_unassigning=False): - return None - - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to create host."): - with mock.patch(self.REQ_FUNC, return_value=Exception()): - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'windows', 'force_port': True, 'group': 'test_group', - 'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'iscsi', - 'port': 'iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818'}]}) - host = Host() - host.host_exists = lambda: False - host.assigned_host_ports = _assigned_host_ports - host.build_success_payload = lambda x: {} - host.group_id = lambda: "85000000600A098000A4B9D1003637135D483DEB" - host.create_host() - - with self.assertRaisesRegexp(AnsibleExitJson, "Host already exists."): - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'windows', 'force_port': True, 'group': 'test_group', - 'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'iscsi', - 'port': 'iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818'}]}) - host = Host() - host.host_exists = lambda: True - host.assigned_host_ports = _assigned_host_ports - host.build_success_payload = lambda x: {} - host.group_id = lambda: "85000000600A098000A4B9D1003637135D483DEB" - host.create_host() - - def test_remove_host_pass(self): - """Verify remove_host produces expected results.""" - with mock.patch(self.REQ_FUNC, return_value=(200, None)): - self._set_args({'state': 'absent', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False, 'group': 'test_group', - 'ports': [{'label': 'beegfs_metadata1_iscsi_0', 'type': 'iscsi', - 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]}) - host = Host() - host.host_obj = {"id": "84000000600A098000A4B9D10030370B5D430109"} - host.remove_host() - - def test_remove_host_fail(self): - """Verify remove_host produces expected exceptions.""" - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to remove host."): - with mock.patch(self.REQ_FUNC, return_value=Exception()): - self._set_args({'state': 'absent', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False, 'group': 'test_group', - 'ports': [{'label': 'beegfs_metadata1_iscsi_0', 'type': 'iscsi', - 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]}) - host = Host() - host.host_obj = {"id": "84000000600A098000A4B9D10030370B5D430109"} - host.remove_host() - - def test_build_success_payload(self): - """Validate success payload.""" - def _assigned_host_ports(apply_unassigning=False): - return None - - self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'windows', 'force_port': True, 'group': 'test_group', - 'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'iscsi', 'port': 'iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818'}]}) - host = Host() - self.assertEqual(host.build_success_payload(), {'api_url': 'http://localhost/', 'ssid': '1'}) diff --git a/test/units/modules/storage/netapp/test_netapp_e_hostgroup.py b/test/units/modules/storage/netapp/test_netapp_e_hostgroup.py deleted file mode 100644 index d9d76a3ede..0000000000 --- a/test/units/modules/storage/netapp/test_netapp_e_hostgroup.py +++ /dev/null @@ -1,163 +0,0 @@ -# (c) 2018, NetApp Inc. -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from ansible.modules.storage.netapp.netapp_e_hostgroup import NetAppESeriesHostGroup -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args - -try: - from unittest import mock -except ImportError: - import mock - - -class HostTest(ModuleTestCase): - REQUIRED_PARAMS = {"api_username": "rw", - "api_password": "password", - "api_url": "http://localhost", - "ssid": "1"} - REQ_FUNC = "ansible.modules.storage.netapp.netapp_e_hostgroup.NetAppESeriesHostGroup.request" - HOSTS_GET_RESPONSE = [ - {"hostRef": "84000000600A098000A4B28D0030102E5C3DFC0F", - "clusterRef": "85000000600A098000A4B28D0036102C5C3DFC08", "id": "84000000600A098000A4B28D0030102E5C3DFC0F", - "name": "host1"}, - {"hostRef": "84000000600A098000A4B28D003010315C3DFC11", - "clusterRef": "85000000600A098000A4B9D100360F765C3DFC1C", "id": "84000000600A098000A4B28D003010315C3DFC11", - "name": "host2"}, - {"hostRef": "84000000600A098000A4B28D003010345C3DFC14", - "clusterRef": "85000000600A098000A4B9D100360F765C3DFC1C", "id": "84000000600A098000A4B28D003010345C3DFC14", - "name": "host3"}] - HOSTGROUPS_GET_RESPONSE = [ - {"clusterRef": "85000000600A098000A4B28D0036102C5C3DFC08", "id": "85000000600A098000A4B28D0036102C5C3DFC08", - "name": "group1"}, - {"clusterRef": "85000000600A098000A4B9D100360F765C3DFC1C", "id": "85000000600A098000A4B9D100360F765C3DFC1C", - "name": "group2"}, - {"clusterRef": "85000000600A098000A4B9D100360F775C3DFC1E", "id": "85000000600A098000A4B9D100360F775C3DFC1E", - "name": "group3"}] - - def _set_args(self, args): - self.module_args = self.REQUIRED_PARAMS.copy() - self.module_args.update(args) - set_module_args(self.module_args) - - def test_hosts_fail(self): - """Ensure that the host property method fails when self.request throws an exception.""" - self._set_args({"state": "present", "name": "hostgroup1", "hosts": ["host1", "host2"]}) - hostgroup_object = NetAppESeriesHostGroup() - with self.assertRaises(AnsibleFailJson): - with mock.patch(self.REQ_FUNC, return_value=Exception()): - hosts = hostgroup_object.hosts - - with mock.patch(self.REQ_FUNC, return_value=(200, [])): - with self.assertRaisesRegexp(AnsibleFailJson, "Expected host does not exist"): - hosts = hostgroup_object.hosts - - def test_hosts_pass(self): - """Evaluate hosts property method for valid returned data structure.""" - expected_host_list = ['84000000600A098000A4B28D003010315C3DFC11', '84000000600A098000A4B28D0030102E5C3DFC0F'] - for hostgroup_hosts in [["host1", "host2"], ["84000000600A098000A4B28D0030102E5C3DFC0F", - "84000000600A098000A4B28D003010315C3DFC11"]]: - self._set_args({"state": "present", "name": "hostgroup1", "hosts": hostgroup_hosts}) - hostgroup_object = NetAppESeriesHostGroup() - - with mock.patch(self.REQ_FUNC, return_value=(200, self.HOSTS_GET_RESPONSE)): - for item in hostgroup_object.hosts: - self.assertTrue(item in expected_host_list) - - # Create hostgroup with no hosts - self._set_args({"state": "present", "name": "hostgroup1"}) - hostgroup_object = NetAppESeriesHostGroup() - with mock.patch(self.REQ_FUNC, return_value=(200, [])): - self.assertEqual(hostgroup_object.hosts, []) - - def test_host_groups_fail(self): - """Ensure that the host_groups property method fails when self.request throws an exception.""" - self._set_args({"state": "present", "name": "hostgroup1", "hosts": ["host1", "host2"]}) - hostgroup_object = NetAppESeriesHostGroup() - with self.assertRaises(AnsibleFailJson): - with mock.patch(self.REQ_FUNC, return_value=Exception()): - host_groups = hostgroup_object.host_groups - - def test_host_groups_pass(self): - """Evaluate host_groups property method for valid return data structure.""" - expected_groups = [ - {'hosts': ['84000000600A098000A4B28D0030102E5C3DFC0F'], 'id': '85000000600A098000A4B28D0036102C5C3DFC08', - 'name': 'group1'}, - {'hosts': ['84000000600A098000A4B28D003010315C3DFC11', '84000000600A098000A4B28D003010345C3DFC14'], - 'id': '85000000600A098000A4B9D100360F765C3DFC1C', 'name': 'group2'}, - {'hosts': [], 'id': '85000000600A098000A4B9D100360F775C3DFC1E', 'name': 'group3'}] - - self._set_args({"state": "present", "name": "hostgroup1", "hosts": ["host1", "host2"]}) - hostgroup_object = NetAppESeriesHostGroup() - - with mock.patch(self.REQ_FUNC, - side_effect=[(200, self.HOSTGROUPS_GET_RESPONSE), (200, self.HOSTS_GET_RESPONSE)]): - self.assertEqual(hostgroup_object.host_groups, expected_groups) - - @mock.patch.object(NetAppESeriesHostGroup, "host_groups") - @mock.patch.object(NetAppESeriesHostGroup, "hosts") - @mock.patch.object(NetAppESeriesHostGroup, "create_host_group") - @mock.patch.object(NetAppESeriesHostGroup, "update_host_group") - @mock.patch.object(NetAppESeriesHostGroup, "delete_host_group") - def test_apply_pass(self, fake_delete_host_group, fake_update_host_group, fake_create_host_group, fake_hosts, - fake_host_groups): - """Apply desired host group state to the storage array.""" - hosts_response = ['84000000600A098000A4B28D003010315C3DFC11', '84000000600A098000A4B28D0030102E5C3DFC0F'] - host_groups_response = [ - {'hosts': ['84000000600A098000A4B28D0030102E5C3DFC0F'], 'id': '85000000600A098000A4B28D0036102C5C3DFC08', - 'name': 'group1'}, - {'hosts': ['84000000600A098000A4B28D003010315C3DFC11', '84000000600A098000A4B28D003010345C3DFC14'], - 'id': '85000000600A098000A4B9D100360F765C3DFC1C', 'name': 'group2'}, - {'hosts': [], 'id': '85000000600A098000A4B9D100360F775C3DFC1E', 'name': 'group3'}] - - fake_host_groups.return_value = host_groups_response - fake_hosts.return_value = hosts_response - fake_create_host_group.return_value = lambda x: "Host group created!" - fake_update_host_group.return_value = lambda x: "Host group updated!" - fake_delete_host_group.return_value = lambda x: "Host group deleted!" - - # Test create new host group - self._set_args({"state": "present", "name": "hostgroup1", "hosts": ["host1", "host2"]}) - hostgroup_object = NetAppESeriesHostGroup() - with self.assertRaises(AnsibleExitJson): - hostgroup_object.apply() - - # Test make no changes to existing host group - self._set_args({"state": "present", "name": "group1", "hosts": ["host1"]}) - hostgroup_object = NetAppESeriesHostGroup() - with self.assertRaises(AnsibleExitJson): - hostgroup_object.apply() - - # Test add host to existing host group - self._set_args({"state": "present", "name": "group1", "hosts": ["host1", "host2"]}) - hostgroup_object = NetAppESeriesHostGroup() - with self.assertRaises(AnsibleExitJson): - hostgroup_object.apply() - - # Test delete existing host group - self._set_args({"state": "absent", "name": "group1"}) - hostgroup_object = NetAppESeriesHostGroup() - with self.assertRaises(AnsibleExitJson): - hostgroup_object.apply() - - @mock.patch.object(NetAppESeriesHostGroup, "host_groups") - @mock.patch.object(NetAppESeriesHostGroup, "hosts") - def test_apply_fail(self, fake_hosts, fake_host_groups): - """Apply desired host group state to the storage array.""" - hosts_response = ['84000000600A098000A4B28D003010315C3DFC11', '84000000600A098000A4B28D0030102E5C3DFC0F'] - host_groups_response = [ - {'hosts': ['84000000600A098000A4B28D0030102E5C3DFC0F'], 'id': '85000000600A098000A4B28D0036102C5C3DFC08', - 'name': 'group1'}, - {'hosts': ['84000000600A098000A4B28D003010315C3DFC11', '84000000600A098000A4B28D003010345C3DFC14'], - 'id': '85000000600A098000A4B9D100360F765C3DFC1C', 'name': 'group2'}, - {'hosts': [], 'id': '85000000600A098000A4B9D100360F775C3DFC1E', 'name': 'group3'}] - - fake_host_groups.return_value = host_groups_response - fake_hosts.return_value = hosts_response - self._set_args( - {"state": "present", "id": "84000000600A098000A4B28D0030102E5C3DFC0F", "hosts": ["host1", "host2"]}) - hostgroup_object = NetAppESeriesHostGroup() - with self.assertRaisesRegexp(AnsibleFailJson, - "The option name must be supplied when creating a new host group."): - hostgroup_object.apply() diff --git a/test/units/modules/storage/netapp/test_netapp_e_iscsi_interface.py b/test/units/modules/storage/netapp/test_netapp_e_iscsi_interface.py deleted file mode 100644 index 927e5a907d..0000000000 --- a/test/units/modules/storage/netapp/test_netapp_e_iscsi_interface.py +++ /dev/null @@ -1,245 +0,0 @@ -# (c) 2018, NetApp Inc. -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from ansible.modules.storage.netapp.netapp_e_iscsi_interface import IscsiInterface -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args - -__metaclass__ = type -import mock - - -class IscsiInterfaceTest(ModuleTestCase): - REQUIRED_PARAMS = { - 'api_username': 'rw', - 'api_password': 'password', - 'api_url': 'http://localhost', - 'ssid': '1', - 'state': 'disabled', - 'name': 1, - 'controller': 'A', - } - REQ_FUNC = 'ansible.modules.storage.netapp.netapp_e_iscsi_interface.request' - - def _set_args(self, args=None): - module_args = self.REQUIRED_PARAMS.copy() - if args is not None: - module_args.update(args) - set_module_args(module_args) - - def test_validate_params(self): - """Ensure we can pass valid parameters to the module""" - # Provide a range of valid values for each - for controller in ['A', 'B']: - for i in range(1, 10): - for mtu in [1500, 2500, 9000]: - self._set_args(dict( - state='disabled', - name=i, - controller=controller, - mtu=mtu, - )) - iface = IscsiInterface() - - def test_invalid_params(self): - """Ensure that our input validation catches invalid parameters""" - - # Currently a 'C' controller is invalid - self._set_args(dict( - state='disabled', - name=1, - controller="C", - )) - with self.assertRaises(AnsibleFailJson) as result: - iface = IscsiInterface() - - # Each of these mtu values are invalid - for mtu in [500, 1499, 9001]: - self._set_args({ - 'state': 'disabled', - 'name': 1, - 'controller': 'A', - 'mtu': mtu - }) - with self.assertRaises(AnsibleFailJson) as result: - iface = IscsiInterface() - - def test_interfaces(self): - """Validate that we are processing the interface list properly""" - self._set_args() - - interfaces = [ - dict(interfaceType='iscsi', - iscsi=dict()), - dict(interfaceType='iscsi', - iscsi=dict()), - dict(interfaceType='fc', ) - ] - - # Ensure we filter out anything without an interfaceType of iscsi - expected = [iface['iscsi'] for iface in interfaces if iface['interfaceType'] == 'iscsi'] - - # We expect a single call to the API: retrieve the list of interfaces from the objectGraph. - with mock.patch(self.REQ_FUNC, return_value=(200, interfaces)): - iface = IscsiInterface() - interfaces = iface.interfaces - self.assertEqual(interfaces, expected) - - def test_interfaces_fail(self): - """Ensure we fail gracefully on an error to retrieve the interfaces""" - self._set_args() - - with self.assertRaises(AnsibleFailJson) as result: - # Simulate a failed call to the API - with mock.patch(self.REQ_FUNC, side_effect=Exception("Failure")): - iface = IscsiInterface() - interfaces = iface.interfaces - - def test_fetch_target_interface_bad_channel(self): - """Ensure we fail correctly when a bad channel is provided""" - self._set_args() - - interfaces = list(dict(channel=1, controllerId='1')) - - with self.assertRaisesRegexp(AnsibleFailJson, r".*?channels include.*"): - with mock.patch.object(IscsiInterface, 'interfaces', return_value=interfaces): - iface = IscsiInterface() - interfaces = iface.fetch_target_interface() - - def test_make_update_body_dhcp(self): - """Ensure the update body generates correctly for a transition from static to dhcp""" - self._set_args(dict(state='enabled', - config_method='dhcp') - ) - - iface = dict(id='1', - ipv4Enabled=False, - ipv4Data=dict(ipv4AddressData=dict(ipv4Address="0.0.0.0", - ipv4SubnetMask="0.0.0.0", - ipv4GatewayAddress="0.0.0.0", ), - ipv4AddressConfigMethod='configStatic', ), - interfaceData=dict(ethernetData=dict(maximumFramePayloadSize=1500, ), ), - ) - - # Test a transition from static to dhcp - inst = IscsiInterface() - update, body = inst.make_update_body(iface) - self.assertTrue(update, msg="An update was expected!") - self.assertEqual(body['settings']['ipv4Enabled'][0], True) - self.assertEqual(body['settings']['ipv4AddressConfigMethod'][0], 'configDhcp') - - def test_make_update_body_static(self): - """Ensure the update body generates correctly for a transition from dhcp to static""" - iface = dict(id='1', - ipv4Enabled=False, - ipv4Data=dict(ipv4AddressConfigMethod='configDhcp', - ipv4AddressData=dict(ipv4Address="0.0.0.0", - ipv4SubnetMask="0.0.0.0", - ipv4GatewayAddress="0.0.0.0", ), ), - interfaceData=dict(ethernetData=dict(maximumFramePayloadSize=1500, ), ), ) - - self._set_args(dict(state='enabled', - config_method='static', - address='10.10.10.10', - subnet_mask='255.255.255.0', - gateway='1.1.1.1')) - - inst = IscsiInterface() - update, body = inst.make_update_body(iface) - self.assertTrue(update, msg="An update was expected!") - self.assertEqual(body['settings']['ipv4Enabled'][0], True) - self.assertEqual(body['settings']['ipv4AddressConfigMethod'][0], 'configStatic') - self.assertEqual(body['settings']['ipv4Address'][0], '10.10.10.10') - self.assertEqual(body['settings']['ipv4SubnetMask'][0], '255.255.255.0') - self.assertEqual(body['settings']['ipv4GatewayAddress'][0], '1.1.1.1') - - CONTROLLERS = dict(A='1', B='2') - - def test_update_bad_controller(self): - """Ensure a bad controller fails gracefully""" - self._set_args(dict(controller='B')) - - inst = IscsiInterface() - with self.assertRaises(AnsibleFailJson) as result: - with mock.patch.object(inst, 'get_controllers', return_value=dict(A='1')) as get_controllers: - inst() - - @mock.patch.object(IscsiInterface, 'get_controllers', return_value=CONTROLLERS) - def test_update(self, get_controllers): - """Validate the good path""" - self._set_args() - - inst = IscsiInterface() - with self.assertRaises(AnsibleExitJson): - with mock.patch(self.REQ_FUNC, return_value=(200, "")) as request: - with mock.patch.object(inst, 'fetch_target_interface', side_effect=[{}, mock.MagicMock()]): - with mock.patch.object(inst, 'make_update_body', return_value=(True, {})): - inst() - request.assert_called_once() - - @mock.patch.object(IscsiInterface, 'get_controllers', return_value=CONTROLLERS) - def test_update_not_required(self, get_controllers): - """Ensure we don't trigger the update if one isn't required or if check mode is enabled""" - self._set_args() - - # make_update_body will report that no change is required, so we should see no call to the API. - inst = IscsiInterface() - with self.assertRaises(AnsibleExitJson) as result: - with mock.patch(self.REQ_FUNC, return_value=(200, "")) as request: - with mock.patch.object(inst, 'fetch_target_interface', side_effect=[{}, mock.MagicMock()]): - with mock.patch.object(inst, 'make_update_body', return_value=(False, {})): - inst() - request.assert_not_called() - self.assertFalse(result.exception.args[0]['changed'], msg="No change was expected.") - - # Since check_mode is enabled, we will run everything normally, but not make a request to the API - # to perform the actual change. - inst = IscsiInterface() - inst.check_mode = True - with self.assertRaises(AnsibleExitJson) as result: - with mock.patch(self.REQ_FUNC, return_value=(200, "")) as request: - with mock.patch.object(inst, 'fetch_target_interface', side_effect=[{}, mock.MagicMock()]): - with mock.patch.object(inst, 'make_update_body', return_value=(True, {})): - inst() - request.assert_not_called() - self.assertTrue(result.exception.args[0]['changed'], msg="A change was expected.") - - @mock.patch.object(IscsiInterface, 'get_controllers', return_value=CONTROLLERS) - def test_update_fail_busy(self, get_controllers): - """Ensure we fail correctly on receiving a busy response from the API.""" - self._set_args() - - inst = IscsiInterface() - with self.assertRaisesRegexp(AnsibleFailJson, r".*?busy.*") as result: - with mock.patch(self.REQ_FUNC, return_value=(422, dict(retcode="3"))) as request: - with mock.patch.object(inst, 'fetch_target_interface', side_effect=[{}, mock.MagicMock()]): - with mock.patch.object(inst, 'make_update_body', return_value=(True, {})): - inst() - request.assert_called_once() - - @mock.patch.object(IscsiInterface, 'get_controllers', return_value=CONTROLLERS) - @mock.patch.object(IscsiInterface, 'make_update_body', return_value=(True, {})) - def test_update_fail(self, get_controllers, make_body): - """Ensure we fail correctly on receiving a normal failure from the API.""" - self._set_args() - - inst = IscsiInterface() - # Test a 422 error with a non-busy status - with self.assertRaisesRegexp(AnsibleFailJson, r".*?Failed to modify.*") as result: - with mock.patch(self.REQ_FUNC, return_value=(422, mock.MagicMock())) as request: - with mock.patch.object(inst, 'fetch_target_interface', side_effect=[{}, mock.MagicMock()]): - inst() - request.assert_called_once() - - # Test a 401 (authentication) error - with self.assertRaisesRegexp(AnsibleFailJson, r".*?Failed to modify.*") as result: - with mock.patch(self.REQ_FUNC, return_value=(401, mock.MagicMock())) as request: - with mock.patch.object(inst, 'fetch_target_interface', side_effect=[{}, mock.MagicMock()]): - inst() - request.assert_called_once() - - # Test with a connection failure - with self.assertRaisesRegexp(AnsibleFailJson, r".*?Connection failure.*") as result: - with mock.patch(self.REQ_FUNC, side_effect=Exception()) as request: - with mock.patch.object(inst, 'fetch_target_interface', side_effect=[{}, mock.MagicMock()]): - inst() - request.assert_called_once() diff --git a/test/units/modules/storage/netapp/test_netapp_e_iscsi_target.py b/test/units/modules/storage/netapp/test_netapp_e_iscsi_target.py deleted file mode 100644 index 9d800cfd13..0000000000 --- a/test/units/modules/storage/netapp/test_netapp_e_iscsi_target.py +++ /dev/null @@ -1,132 +0,0 @@ -# coding=utf-8 -# (c) 2018, NetApp Inc. -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from ansible.modules.storage.netapp.netapp_e_iscsi_target import IscsiTarget -from units.modules.utils import AnsibleFailJson, ModuleTestCase, set_module_args - -__metaclass__ = type - -import mock - -from units.compat.mock import PropertyMock - - -class IscsiTargetTest(ModuleTestCase): - REQUIRED_PARAMS = { - 'api_username': 'rw', - 'api_password': 'password', - 'api_url': 'http://localhost', - 'ssid': '1', - 'name': 'abc', - } - - CHAP_SAMPLE = 'a' * 14 - - REQ_FUNC = 'ansible.modules.storage.netapp.netapp_e_iscsi_target.request' - - def _set_args(self, args=None): - module_args = self.REQUIRED_PARAMS.copy() - if args is not None: - module_args.update(args) - set_module_args(module_args) - - def test_validate_params(self): - """Ensure we can pass valid parameters to the module""" - for i in range(12, 57): - secret = 'a' * i - self._set_args(dict(chap=secret)) - tgt = IscsiTarget() - - def test_invalid_chap_secret(self): - for secret in [11 * 'a', 58 * 'a']: - with self.assertRaisesRegexp(AnsibleFailJson, r'.*?CHAP secret is not valid.*') as result: - self._set_args(dict(chap=secret)) - tgt = IscsiTarget() - - def test_apply_iscsi_settings(self): - """Ensure that the presence of CHAP always triggers an update.""" - self._set_args(dict(chap=self.CHAP_SAMPLE)) - tgt = IscsiTarget() - - # CHAP is enabled - fake = dict(alias=self.REQUIRED_PARAMS.get('name'), chap=True) - - # We don't care about the return here - with mock.patch(self.REQ_FUNC, return_value=(200, "")) as request: - with mock.patch.object(IscsiTarget, 'target', new_callable=PropertyMock) as call: - call.return_value = fake - self.assertTrue(tgt.apply_iscsi_settings()) - self.assertTrue(request.called, msg="An update was expected!") - - # Retest with check_mode enabled - tgt.check_mode = True - request.reset_mock() - self.assertTrue(tgt.apply_iscsi_settings()) - self.assertFalse(request.called, msg="No update was expected in check_mode!") - - def test_apply_iscsi_settings_no_change(self): - """Ensure that we don't make unnecessary requests or updates""" - name = 'abc' - self._set_args(dict(alias=name)) - fake = dict(alias=name, chap=False) - with mock.patch(self.REQ_FUNC, return_value=(200, "")) as request: - with mock.patch.object(IscsiTarget, 'target', new_callable=PropertyMock) as call: - call.return_value = fake - tgt = IscsiTarget() - self.assertFalse(tgt.apply_iscsi_settings()) - self.assertFalse(request.called, msg="No update was expected!") - - def test_apply_iscsi_settings_fail(self): - """Ensure we handle request failures cleanly""" - self._set_args() - fake = dict(alias='', chap=True) - with self.assertRaisesRegexp(AnsibleFailJson, r".*?update.*"): - with mock.patch(self.REQ_FUNC, side_effect=Exception) as request: - with mock.patch.object(IscsiTarget, 'target', new_callable=PropertyMock) as call: - call.return_value = fake - tgt = IscsiTarget() - tgt.apply_iscsi_settings() - - def test_apply_target_changes(self): - """Ensure that changes trigger an update.""" - self._set_args(dict(ping=True, unnamed_discovery=True)) - tgt = IscsiTarget() - - # CHAP is enabled - fake = dict(ping=False, unnamed_discovery=False) - - # We don't care about the return here - with mock.patch(self.REQ_FUNC, return_value=(200, "")) as request: - with mock.patch.object(IscsiTarget, 'target', new_callable=PropertyMock) as call: - call.return_value = fake - self.assertTrue(tgt.apply_target_changes()) - self.assertTrue(request.called, msg="An update was expected!") - - # Retest with check_mode enabled - tgt.check_mode = True - request.reset_mock() - self.assertTrue(tgt.apply_target_changes()) - self.assertFalse(request.called, msg="No update was expected in check_mode!") - - def test_apply_target_changes_no_change(self): - """Ensure that we don't make unnecessary requests or updates""" - self._set_args(dict(ping=True, unnamed_discovery=True)) - fake = dict(ping=True, unnamed_discovery=True) - with mock.patch(self.REQ_FUNC, return_value=(200, "")) as request: - with mock.patch.object(IscsiTarget, 'target', new_callable=PropertyMock) as call: - call.return_value = fake - tgt = IscsiTarget() - self.assertFalse(tgt.apply_target_changes()) - self.assertFalse(request.called, msg="No update was expected!") - - def test_apply_target_changes_fail(self): - """Ensure we handle request failures cleanly""" - self._set_args() - fake = dict(ping=False, unnamed_discovery=False) - with self.assertRaisesRegexp(AnsibleFailJson, r".*?update.*"): - with mock.patch(self.REQ_FUNC, side_effect=Exception) as request: - with mock.patch.object(IscsiTarget, 'target', new_callable=PropertyMock) as call: - call.return_value = fake - tgt = IscsiTarget() - tgt.apply_target_changes() diff --git a/test/units/modules/storage/netapp/test_netapp_e_ldap.py b/test/units/modules/storage/netapp/test_netapp_e_ldap.py deleted file mode 100644 index 0e3741ce7f..0000000000 --- a/test/units/modules/storage/netapp/test_netapp_e_ldap.py +++ /dev/null @@ -1,430 +0,0 @@ -# (c) 2018, NetApp Inc. -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -import os -import shutil -import tempfile - -from ansible.modules.storage.netapp.netapp_e_ldap import Ldap -from units.modules.utils import ModuleTestCase, set_module_args, AnsibleFailJson, AnsibleExitJson - -__metaclass__ = type -from units.compat import mock - - -class LdapTest(ModuleTestCase): - REQUIRED_PARAMS = { - 'api_username': 'admin', - 'api_password': 'password', - 'api_url': 'http://localhost', - 'ssid': '1', - 'state': 'absent', - } - REQ_FUNC = 'ansible.modules.storage.netapp.netapp_e_ldap.request' - - def setUp(self): - super(LdapTest, self).setUp() - - self.temp_dir = tempfile.mkdtemp('ansible-test_netapp_e_ldap-') - self.REQUIRED_PARAMS['log_path'] = os.path.join(self.temp_dir, 'debug.log') - - def tearDown(self): - super(LdapTest, self).tearDown() - - shutil.rmtree(self.temp_dir) - - def _make_ldap_instance(self): - self._set_args() - ldap = Ldap() - ldap.base_path = '/' - return ldap - - def _set_args(self, **kwargs): - module_args = self.REQUIRED_PARAMS.copy() - module_args.update(kwargs) - set_module_args(module_args) - - def test_init_defaults(self): - """Validate a basic run with required arguments set.""" - self._set_args(log_path=None, - state='present', - username='myBindAcct', - password='myBindPass', - server='ldap://example.com:384', - search_base='OU=Users,DC=example,DC=com', - role_mappings={'.*': ['storage.monitor']}, - ) - - ldap = Ldap() - - def test_init(self): - """Validate a basic run with required arguments set.""" - self._set_args(log_path=None) - ldap = Ldap() - - def test_is_embedded(self): - """Ensure we can properly detect the type of Web Services instance we're utilizing.""" - self._set_args() - - result = dict(runningAsProxy=False) - - with mock.patch(self.REQ_FUNC, return_value=(200, result)): - ldap = Ldap() - embedded = ldap.is_embedded() - self.assertTrue(embedded) - - result = dict(runningAsProxy=True) - - with mock.patch(self.REQ_FUNC, return_value=(200, result)): - ldap = Ldap() - embedded = ldap.is_embedded() - self.assertFalse(embedded) - - def test_is_embedded_fail(self): - """Ensure we fail gracefully when fetching the About data.""" - - self._set_args() - with self.assertRaises(AnsibleFailJson): - with mock.patch(self.REQ_FUNC, side_effect=Exception): - ldap = Ldap() - ldap.is_embedded() - - def test_get_full_configuration(self): - self._set_args() - - resp = dict(result=None) - - with mock.patch(self.REQ_FUNC, return_value=(200, resp)): - ldap = self._make_ldap_instance() - result = ldap.get_full_configuration() - self.assertEqual(resp, result) - - def test_get_full_configuration_failure(self): - self._set_args() - - resp = dict(result=None) - with self.assertRaises(AnsibleFailJson): - with mock.patch(self.REQ_FUNC, side_effect=Exception): - ldap = self._make_ldap_instance() - ldap.get_full_configuration() - - def test_get_configuration(self): - self._set_args() - - resp = dict(result=None) - - with mock.patch(self.REQ_FUNC, return_value=(200, resp)): - ldap = self._make_ldap_instance() - result = ldap.get_configuration('') - self.assertEqual(resp, result) - - with mock.patch(self.REQ_FUNC, return_value=(404, resp)): - ldap = self._make_ldap_instance() - result = ldap.get_configuration('') - self.assertIsNone(result) - - def test_clear_configuration(self): - self._set_args() - - # No changes are required if the domains are empty - config = dict(ldapDomains=[]) - - ldap = self._make_ldap_instance() - with mock.patch.object(ldap, 'get_full_configuration', return_value=config): - with mock.patch(self.REQ_FUNC, return_value=(204, None)): - msg, result = ldap.clear_configuration() - self.assertFalse(result) - - config = dict(ldapDomains=['abc']) - - # When domains exist, we need to clear - ldap = self._make_ldap_instance() - with mock.patch.object(ldap, 'get_full_configuration', return_value=config): - with mock.patch(self.REQ_FUNC, return_value=(204, None)) as req: - msg, result = ldap.clear_configuration() - self.assertTrue(result) - self.assertTrue(req.called) - - # Valid check_mode makes no changes - req.reset_mock() - ldap.check_mode = True - msg, result = ldap.clear_configuration() - self.assertTrue(result) - self.assertFalse(req.called) - - def test_clear_single_configuration(self): - self._set_args() - - # No changes are required if the domains are empty - config = 'abc' - - ldap = self._make_ldap_instance() - with mock.patch.object(ldap, 'get_configuration', return_value=config): - with mock.patch(self.REQ_FUNC, return_value=(204, None)) as req: - msg, result = ldap.clear_single_configuration() - self.assertTrue(result) - - # Valid check_mode makes no changes - req.reset_mock() - ldap.check_mode = True - msg, result = ldap.clear_single_configuration() - self.assertTrue(result) - self.assertFalse(req.called) - - # When domains exist, we need to clear - ldap = self._make_ldap_instance() - with mock.patch.object(ldap, 'get_configuration', return_value=None): - with mock.patch(self.REQ_FUNC, return_value=(204, None)) as req: - msg, result = ldap.clear_single_configuration() - self.assertFalse(result) - self.assertFalse(req.called) - - def test_update_configuration(self): - self._set_args() - - config = dict(id='abc') - body = dict(id='xyz') - - ldap = self._make_ldap_instance() - with mock.patch.object(ldap, 'make_configuration', return_value=body): - with mock.patch.object(ldap, 'get_configuration', return_value=config): - with mock.patch(self.REQ_FUNC, return_value=(200, None)) as req: - msg, result = ldap.update_configuration() - self.assertTrue(result) - - # Valid check_mode makes no changes - req.reset_mock() - ldap.check_mode = True - msg, result = ldap.update_configuration() - self.assertTrue(result) - self.assertFalse(req.called) - - def test_update(self): - self._set_args() - - ldap = self._make_ldap_instance() - with self.assertRaises(AnsibleExitJson): - with mock.patch.object(ldap, 'get_base_path', return_value='/'): - with mock.patch.object(ldap, 'update_configuration', return_value=('', True)) as update: - ldap.ldap = True - msg, result = ldap.update() - self.assertTrue(result) - self.assertTrue(update.called) - - def test_update_disable(self): - self._set_args() - - ldap = self._make_ldap_instance() - with self.assertRaises(AnsibleExitJson): - with mock.patch.object(ldap, 'get_base_path', return_value='/'): - with mock.patch.object(ldap, 'clear_single_configuration', return_value=('', True)) as update: - ldap.ldap = False - ldap.identifier = 'abc' - msg, result = ldap.update() - self.assertTrue(result) - self.assertTrue(update.called) - - def test_update_disable_all(self): - self._set_args() - - ldap = self._make_ldap_instance() - with self.assertRaises(AnsibleExitJson): - with mock.patch.object(ldap, 'get_base_path', return_value='/'): - with mock.patch.object(ldap, 'clear_configuration', return_value=('', True)) as update: - ldap.ldap = False - msg, result = ldap.update() - self.assertTrue(result) - self.assertTrue(update.called) - - def test_get_configuration_failure(self): - self._set_args() - - with self.assertRaises(AnsibleFailJson): - with mock.patch(self.REQ_FUNC, side_effect=Exception): - ldap = self._make_ldap_instance() - ldap.get_configuration('') - - # We expect this for any code not in [200, 404] - with self.assertRaises(AnsibleFailJson): - with mock.patch(self.REQ_FUNC, return_value=(401, '')): - ldap = self._make_ldap_instance() - result = ldap.get_configuration('') - self.assertIsNone(result) - - def test_make_configuration(self): - """Validate the make_configuration method that translates Ansible params to the input body""" - data = dict(log_path=None, - state='present', - username='myBindAcct', - password='myBindPass', - server='ldap://example.com:384', - search_base='OU=Users,DC=example,DC=com', - role_mappings={'.*': ['storage.monitor']}, - ) - - self._set_args(**data) - ldap = Ldap() - expected = dict(id='default', - bindLookupUser=dict(user=data['username'], - password=data['password'], ), - groupAttributes=['memberOf'], - ldapUrl=data['server'], - names=['example.com'], - searchBase=data['search_base'], - roleMapCollection=[{"groupRegex": ".*", - "ignoreCase": True, - "name": "storage.monitor" - } - ], - userAttribute='sAMAccountName' - ) - - actual = ldap.make_configuration() - self.maxDiff = None - self.assertEqual(expected, actual) - - # - # def test_get_config_on_demand_capable_false(self): - # """Ensure we fail correctly if ASUP is not available on this platform""" - # self._set_args() - # - # expected = dict(asupCapable=True, onDemandCapable=False) - # asup = Asup() - # # Expecting an update - # with self.assertRaisesRegexp(AnsibleFailJson, r"not supported"): - # with mock.patch(self.REQ_FUNC, return_value=(200, expected)): - # asup.get_configuration() - # - # def test_get_config(self): - # """Validate retrieving the ASUP configuration""" - # self._set_args() - # - # expected = dict(asupCapable=True, onDemandCapable=True) - # asup = Asup() - # - # with mock.patch(self.REQ_FUNC, return_value=(200, expected)): - # config = asup.get_configuration() - # self.assertEqual(config, expected) - # - # def test_update_configuration(self): - # """Validate retrieving the ASUP configuration""" - # self._set_args(dict(asup='present')) - # - # expected = dict() - # initial = dict(asupCapable=True, - # asupEnabled=True, - # onDemandEnabled=False, - # remoteDiagsEnabled=False, - # schedule=dict(daysOfWeek=[], dailyMinTime=0, weeklyMinTime=0, dailyMaxTime=24, weeklyMaxTime=24)) - # asup = Asup() - # - # with mock.patch(self.REQ_FUNC, return_value=(200, expected)) as req: - # with mock.patch.object(asup, 'get_configuration', return_value=initial): - # updated = asup.update_configuration() - # self.assertTrue(req.called) - # self.assertTrue(updated) - # - # def test_update_configuration_asup_disable(self): - # """Validate retrieving the ASUP configuration""" - # self._set_args(dict(asup='absent')) - # - # expected = dict() - # initial = dict(asupCapable=True, - # asupEnabled=True, - # onDemandEnabled=False, - # remoteDiagsEnabled=False, - # schedule=dict(daysOfWeek=[], dailyMinTime=0, weeklyMinTime=0, dailyMaxTime=24, weeklyMaxTime=24)) - # asup = Asup() - # - # with mock.patch(self.REQ_FUNC, return_value=(200, expected)) as req: - # with mock.patch.object(asup, 'get_configuration', return_value=initial): - # updated = asup.update_configuration() - # self.assertTrue(updated) - # - # self.assertTrue(req.called) - # - # # Ensure it was called with the right arguments - # called_with = req.call_args - # body = json.loads(called_with[1]['data']) - # self.assertFalse(body['asupEnabled']) - # - # def test_update_configuration_enable(self): - # """Validate retrieving the ASUP configuration""" - # self._set_args(dict(asup='enabled')) - # - # expected = dict() - # initial = dict(asupCapable=False, - # asupEnabled=False, - # onDemandEnabled=False, - # remoteDiagsEnabled=False, - # schedule=dict(daysOfWeek=[], dailyMinTime=0, weeklyMinTime=0, dailyMaxTime=24, weeklyMaxTime=24)) - # asup = Asup() - # - # with mock.patch(self.REQ_FUNC, return_value=(200, expected)) as req: - # with mock.patch.object(asup, 'get_configuration', return_value=initial): - # updated = asup.update_configuration() - # self.assertTrue(updated) - # - # self.assertTrue(req.called) - # - # # Ensure it was called with the right arguments - # called_with = req.call_args - # body = json.loads(called_with[1]['data']) - # self.assertTrue(body['asupEnabled']) - # self.assertTrue(body['onDemandEnabled']) - # self.assertTrue(body['remoteDiagsEnabled']) - # - # def test_update_configuration_request_exception(self): - # """Validate exception handling when request throws an exception.""" - # config_response = dict(asupEnabled=True, - # onDemandEnabled=True, - # remoteDiagsEnabled=True, - # schedule=dict(daysOfWeek=[], - # dailyMinTime=0, - # weeklyMinTime=0, - # dailyMaxTime=24, - # weeklyMaxTime=24)) - # - # self._set_args(dict(state="enabled")) - # asup = Asup() - # with self.assertRaises(Exception): - # with mock.patch.object(asup, 'get_configuration', return_value=config_response): - # with mock.patch(self.REQ_FUNC, side_effect=Exception): - # asup.update_configuration() - # - # def test_init_schedule(self): - # """Validate schedule correct schedule initialization""" - # self._set_args(dict(state="enabled", active=True, days=["sunday", "monday", "tuesday"], start=20, end=24)) - # asup = Asup() - # - # self.assertTrue(asup.asup) - # self.assertEqual(asup.days, ["sunday", "monday", "tuesday"]), - # self.assertEqual(asup.start, 1200) - # self.assertEqual(asup.end, 1439) - # - # def test_init_schedule_invalid(self): - # """Validate updating ASUP with invalid schedule fails test.""" - # self._set_args(dict(state="enabled", active=True, start=22, end=20)) - # with self.assertRaisesRegexp(AnsibleFailJson, r"start time is invalid"): - # Asup() - # - # def test_init_schedule_days_invalid(self): - # """Validate updating ASUP with invalid schedule fails test.""" - # self._set_args(dict(state="enabled", active=True, days=["someday", "thataday", "nonday"])) - # with self.assertRaises(AnsibleFailJson): - # Asup() - # - # def test_update(self): - # """Validate updating ASUP with valid schedule passes""" - # initial = dict(asupCapable=True, - # onDemandCapable=True, - # asupEnabled=True, - # onDemandEnabled=False, - # remoteDiagsEnabled=False, - # schedule=dict(daysOfWeek=[], dailyMinTime=0, weeklyMinTime=0, dailyMaxTime=24, weeklyMaxTime=24)) - # self._set_args(dict(state="enabled", active=True, days=["sunday", "monday", "tuesday"], start=10, end=20)) - # asup = Asup() - # with self.assertRaisesRegexp(AnsibleExitJson, r"ASUP settings have been updated"): - # with mock.patch(self.REQ_FUNC, return_value=(200, dict(asupCapable=True))): - # with mock.patch.object(asup, "get_configuration", return_value=initial): - # asup.update() diff --git a/test/units/modules/storage/netapp/test_netapp_e_mgmt_interface.py b/test/units/modules/storage/netapp/test_netapp_e_mgmt_interface.py deleted file mode 100644 index 7901dcee99..0000000000 --- a/test/units/modules/storage/netapp/test_netapp_e_mgmt_interface.py +++ /dev/null @@ -1,682 +0,0 @@ -# coding=utf-8 -# (c) 2018, NetApp Inc. -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from ansible.modules.storage.netapp.netapp_e_mgmt_interface import MgmtInterface -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args - -__metaclass__ = type - -import mock -from units.compat.mock import PropertyMock - - -class MgmtInterfaceTest(ModuleTestCase): - REQUIRED_PARAMS = { - 'api_username': 'rw', - 'api_password': 'password', - 'api_url': 'http://localhost', - 'ssid': '1', - } - - TEST_DATA = [ - { - "controllerRef": "070000000000000000000001", - "controllerSlot": 1, - "interfaceName": "wan0", - "interfaceRef": "2800070000000000000000000001000000000000", - "channel": 1, - "alias": "creG1g-AP-a", - "ipv4Enabled": True, - "ipv4Address": "10.1.1.10", - "linkStatus": "up", - "ipv4SubnetMask": "255.255.255.0", - "ipv4AddressConfigMethod": "configStatic", - "ipv4GatewayAddress": "10.1.1.1", - "ipv6Enabled": False, - "physicalLocation": { - "slot": 0, - }, - "dnsProperties": { - "acquisitionProperties": { - "dnsAcquisitionType": "stat", - "dnsServers": [ - { - "addressType": "ipv4", - "ipv4Address": "10.1.0.250", - }, - { - "addressType": "ipv4", - "ipv4Address": "10.10.0.20", - } - ] - }, - "dhcpAcquiredDnsServers": [] - }, - "ntpProperties": { - "acquisitionProperties": { - "ntpAcquisitionType": "disabled", - "ntpServers": None - }, - "dhcpAcquiredNtpServers": [] - }, - }, - { - "controllerRef": "070000000000000000000001", - "controllerSlot": 1, - "interfaceName": "wan1", - "interfaceRef": "2800070000000000000000000001000000000000", - "channel": 2, - "alias": "creG1g-AP-a", - "ipv4Enabled": True, - "ipv4Address": "0.0.0.0", - "ipv4SubnetMask": "0.0.0.0", - "ipv4AddressConfigMethod": "configDhcp", - "ipv4GatewayAddress": "10.1.1.1", - "ipv6Enabled": False, - "physicalLocation": { - "slot": 1, - }, - "dnsProperties": { - "acquisitionProperties": { - "dnsAcquisitionType": "stat", - "dnsServers": [ - { - "addressType": "ipv4", - "ipv4Address": "10.1.0.250", - "ipv6Address": None - }, - { - "addressType": "ipv4", - "ipv4Address": "10.10.0.20", - "ipv6Address": None - } - ] - }, - "dhcpAcquiredDnsServers": [] - }, - "ntpProperties": { - "acquisitionProperties": { - "ntpAcquisitionType": "disabled", - "ntpServers": None - }, - "dhcpAcquiredNtpServers": [] - }, - }, - { - "controllerRef": "070000000000000000000002", - "controllerSlot": 2, - "interfaceName": "wan0", - "interfaceRef": "2800070000000000000000000001000000000000", - "channel": 1, - "alias": "creG1g-AP-b", - "ipv4Enabled": True, - "ipv4Address": "0.0.0.0", - "ipv4SubnetMask": "0.0.0.0", - "ipv4AddressConfigMethod": "configDhcp", - "ipv4GatewayAddress": "10.1.1.1", - "ipv6Enabled": False, - "physicalLocation": { - "slot": 0, - }, - "dnsProperties": { - "acquisitionProperties": { - "dnsAcquisitionType": "stat", - "dnsServers": [ - { - "addressType": "ipv4", - "ipv4Address": "10.1.0.250", - "ipv6Address": None - } - ] - }, - "dhcpAcquiredDnsServers": [] - }, - "ntpProperties": { - "acquisitionProperties": { - "ntpAcquisitionType": "stat", - "ntpServers": [ - { - "addrType": "ipvx", - "domainName": None, - "ipvxAddress": { - "addressType": "ipv4", - "ipv4Address": "10.13.1.5", - "ipv6Address": None - } - }, - { - "addrType": "ipvx", - "domainName": None, - "ipvxAddress": { - "addressType": "ipv4", - "ipv4Address": "10.15.1.8", - "ipv6Address": None - } - } - ] - }, - "dhcpAcquiredNtpServers": [] - }, - }, - { - "controllerRef": "070000000000000000000002", - "controllerSlot": 2, - "interfaceName": "wan1", - "interfaceRef": "2801070000000000000000000001000000000000", - "channel": 2, - "alias": "creG1g-AP-b", - "ipv4Enabled": True, - "ipv4Address": "0.0.0.0", - "ipv4SubnetMask": "0.0.0.0", - "ipv4AddressConfigMethod": "configDhcp", - "ipv4GatewayAddress": "10.1.1.1", - "ipv6Enabled": False, - "physicalLocation": { - "slot": 1, - }, - "dnsProperties": { - "acquisitionProperties": { - "dnsAcquisitionType": "stat", - "dnsServers": [ - { - "addressType": "ipv4", - "ipv4Address": "10.19.1.2", - "ipv6Address": None - } - ] - }, - "dhcpAcquiredDnsServers": [] - }, - "ntpProperties": { - "acquisitionProperties": { - "ntpAcquisitionType": "stat", - "ntpServers": [ - { - "addrType": "ipvx", - "domainName": None, - "ipvxAddress": { - "addressType": "ipv4", - "ipv4Address": "10.13.1.5", - "ipv6Address": None - } - }, - { - "addrType": "ipvx", - "domainName": None, - "ipvxAddress": { - "addressType": "ipv4", - "ipv4Address": "10.15.1.18", - "ipv6Address": None - } - } - ] - }, - "dhcpAcquiredNtpServers": [] - }, - }, - ] - - REQ_FUNC = 'ansible.modules.storage.netapp.netapp_e_mgmt_interface.request' - - def _set_args(self, args=None): - module_args = self.REQUIRED_PARAMS.copy() - if args is not None: - module_args.update(args) - set_module_args(module_args) - - def test_controller_property_pass(self): - """Verify dictionary return from controller property.""" - initial = { - "state": "enable", - "controller": "A", - "channel": "1", - "address": "192.168.1.1", - "subnet_mask": "255.255.255.1", - "config_method": "static"} - controller_request = [ - {"physicalLocation": {"slot": 2}, - "controllerRef": "070000000000000000000002", - "networkSettings": {"remoteAccessEnabled": True}}, - {"physicalLocation": {"slot": 1}, - "controllerRef": "070000000000000000000001", - "networkSettings": {"remoteAccessEnabled": False}}] - expected = { - 'A': {'controllerRef': '070000000000000000000001', - 'controllerSlot': 1, 'ssh': False}, - 'B': {'controllerRef': '070000000000000000000002', - 'controllerSlot': 2, 'ssh': True}} - - self._set_args(initial) - mgmt_interface = MgmtInterface() - - with mock.patch(self.REQ_FUNC, return_value=(200, controller_request)): - response = mgmt_interface.controllers - self.assertTrue(response == expected) - - def test_controller_property_fail(self): - """Verify controllers endpoint request failure causes AnsibleFailJson exception.""" - initial = { - "state": "enable", - "controller": "A", - "channel": "1", - "address": "192.168.1.1", - "subnet_mask": "255.255.255.1", - "config_method": "static"} - controller_request = [ - {"physicalLocation": {"slot": 2}, - "controllerRef": "070000000000000000000002", - "networkSettings": {"remoteAccessEnabled": True}}, - {"physicalLocation": {"slot": 1}, - "controllerRef": "070000000000000000000001", - "networkSettings": {"remoteAccessEnabled": False}}] - expected = { - 'A': {'controllerRef': '070000000000000000000001', - 'controllerSlot': 1, 'ssh': False}, - 'B': {'controllerRef': '070000000000000000000002', - 'controllerSlot': 2, 'ssh': True}} - - self._set_args(initial) - mgmt_interface = MgmtInterface() - with self.assertRaisesRegexp(AnsibleFailJson, r"Failed to retrieve the controller settings."): - with mock.patch(self.REQ_FUNC, return_value=Exception): - response = mgmt_interface.controllers - - def test_interface_property_match_pass(self): - """Verify return value from interface property.""" - initial = { - "state": "enable", - "controller": "A", - "channel": "1", - "address": "192.168.1.1", - "subnet_mask": "255.255.255.0", - "config_method": "static"} - controller_request = [ - {"physicalLocation": {"slot": 2}, - "controllerRef": "070000000000000000000002", - "networkSettings": {"remoteAccessEnabled": True}}, - {"physicalLocation": {"slot": 1}, - "controllerRef": "070000000000000000000001", - "networkSettings": {"remoteAccessEnabled": False}}] - expected = { - "dns_servers": [{"ipv4Address": "10.1.0.250", "addressType": "ipv4"}, - {"ipv4Address": "10.10.0.20", "addressType": "ipv4"}], - "subnet_mask": "255.255.255.0", - "link_status": "up", - "ntp_servers": None, - "ntp_config_method": "disabled", - "controllerRef": "070000000000000000000001", - "config_method": "configStatic", - "enabled": True, - "gateway": "10.1.1.1", - "alias": "creG1g-AP-a", - "controllerSlot": 1, - "dns_config_method": "stat", - "id": "2800070000000000000000000001000000000000", - "address": "10.1.1.10", - "ipv6Enabled": False, - "channel": 1} - - self._set_args(initial) - mgmt_interface = MgmtInterface() - - with mock.patch(self.REQ_FUNC, side_effect=[(200, self.TEST_DATA), (200, controller_request)]): - iface = mgmt_interface.interface - self.assertTrue(iface == expected) - - def test_interface_property_request_exception_fail(self): - """Verify ethernet-interfaces endpoint request failure results in AnsibleFailJson exception.""" - initial = { - "state": "enable", - "controller": "A", - "channel": "1", - "address": "192.168.1.1", - "subnet_mask": "255.255.255.1", - "config_method": "static"} - controller_request = [ - {"physicalLocation": {"slot": 2}, - "controllerRef": "070000000000000000000002", - "networkSettings": {"remoteAccessEnabled": True}}, - {"physicalLocation": {"slot": 1}, - "controllerRef": "070000000000000000000001", - "networkSettings": {"remoteAccessEnabled": False}}] - - self._set_args(initial) - mgmt_interface = MgmtInterface() - - with self.assertRaisesRegexp(AnsibleFailJson, r"Failed to retrieve defined management interfaces."): - with mock.patch(self.REQ_FUNC, side_effect=[Exception, (200, controller_request)]): - iface = mgmt_interface.interface - - def test_interface_property_no_match_fail(self): - """Verify return value from interface property.""" - initial = { - "state": "enable", - "controller": "A", - "name": "wrong_name", - "address": "192.168.1.1", - "subnet_mask": "255.255.255.1", - "config_method": "static"} - controller_request = [ - {"physicalLocation": {"slot": 2}, - "controllerRef": "070000000000000000000002", - "networkSettings": {"remoteAccessEnabled": True}}, - {"physicalLocation": {"slot": 1}, - "controllerRef": "070000000000000000000001", - "networkSettings": {"remoteAccessEnabled": False}}] - expected = { - "dns_servers": [{"ipv4Address": "10.1.0.20", "addressType": "ipv4"}, - {"ipv4Address": "10.1.0.50", "addressType": "ipv4"}], - "subnet_mask": "255.255.255.0", - "ntp_servers": None, - "ntp_config_method": "disabled", - "controllerRef": "070000000000000000000001", - "config_method": "configStatic", - "enabled": True, - "gateway": "10.1.1.1", - "alias": "creG1g-AP-a", - "controllerSlot": 1, - "dns_config_method": "stat", - "id": "2800070000000000000000000001000000000000", - "address": "10.1.1.111", - "ipv6Enabled": False, - "channel": 1} - - self._set_args(initial) - mgmt_interface = MgmtInterface() - with self.assertRaisesRegexp(AnsibleFailJson, r"We could not find an interface matching"): - with mock.patch(self.REQ_FUNC, side_effect=[(200, self.TEST_DATA), (200, controller_request)]): - iface = mgmt_interface.interface - - def test_get_enable_interface_settings_enabled_pass(self): - """Validate get_enable_interface_settings updates properly.""" - initial = { - "state": "enable", - "controller": "A", - "name": "wrong_name", - "address": "192.168.1.1", - "subnet_mask": "255.255.255.1", - "config_method": "static"} - iface = {"enabled": False} - expected_iface = {} - - self._set_args(initial) - mgmt_interface = MgmtInterface() - - update, expected_iface, body = mgmt_interface.get_enable_interface_settings(iface, expected_iface, False, {}) - self.assertTrue(update and expected_iface["enabled"] and body["ipv4Enabled"]) - - def test_get_enable_interface_settings_disabled_pass(self): - """Validate get_enable_interface_settings updates properly.""" - initial = { - "state": "disable", - "controller": "A", - "name": "wan0", - "address": "192.168.1.1", - "subnet_mask": "255.255.255.1", - "config_method": "static"} - iface = {"enabled": True} - expected_iface = {} - - self._set_args(initial) - mgmt_interface = MgmtInterface() - - update, expected_iface, body = mgmt_interface.get_enable_interface_settings(iface, expected_iface, False, {}) - self.assertTrue(update and not expected_iface["enabled"] and not body["ipv4Enabled"]) - - def test_update_array_interface_ssh_pass(self): - """Verify get_interface_settings gives the right static configuration response.""" - initial = { - "state": "enable", - "controller": "A", - "name": "wan0", - "address": "192.168.1.1", - "subnet_mask": "255.255.255.1", - "config_method": "static", - "ssh": True} - iface = {"dns_servers": [{"ipv4Address": "10.1.0.20", "addressType": "ipv4"}, - {"ipv4Address": "10.1.0.50", "addressType": "ipv4"}], - "subnet_mask": "255.255.255.0", - "link_status": "up", - "ntp_servers": None, - "ntp_config_method": "disabled", - "controllerRef": "070000000000000000000001", - "config_method": "configStatic", - "enabled": True, - "gateway": "10.1.1.1", - "alias": "creG1g-AP-a", - "controllerSlot": 1, - "dns_config_method": "stat", - "id": "2800070000000000000000000001000000000000", - "address": "10.1.1.111", - "ipv6Enabled": False, - "channel": 1} - settings = {"controllerRef": "070000000000000000000001", - "ssh": False} - - self._set_args(initial) - mgmt_interface = MgmtInterface() - - with mock.patch(self.REQ_FUNC, return_value=(200, None)): - update = mgmt_interface.update_array(settings, iface) - self.assertTrue(update) - - def test_update_array_dns_static_ntp_disable_pass(self): - """Verify get_interface_settings gives the right static configuration response.""" - initial = { - "controller": "A", - "name": "wan0", - "dns_config_method": "static", - "dns_address": "192.168.1.1", - "dns_address_backup": "192.168.1.100", - "ntp_config_method": "disable"} - iface = {"dns_servers": [{"ipv4Address": "10.1.0.20", "addressType": "ipv4"}, - {"ipv4Address": "10.1.0.50", "addressType": "ipv4"}], - "subnet_mask": "255.255.255.0", - "link_status": "up", - "ntp_servers": None, - "ntp_config_method": "disabled", - "controllerRef": "070000000000000000000001", - "config_method": "configStatic", - "enabled": True, - "gateway": "10.1.1.1", - "alias": "creG1g-AP-a", - "controllerSlot": 1, - "dns_config_method": "configDhcp", - "id": "2800070000000000000000000001000000000000", - "address": "10.1.1.111", - "ipv6Enabled": False, - "channel": 1} - settings = {"controllerRef": "070000000000000000000001", - "ssh": False} - - self._set_args(initial) - mgmt_interface = MgmtInterface() - - with mock.patch(self.REQ_FUNC, return_value=(200, None)): - update = mgmt_interface.update_array(settings, iface) - self.assertTrue(update) - - def test_update_array_dns_dhcp_ntp_static_pass(self): - """Verify get_interface_settings gives the right static configuration response.""" - initial = { - "controller": "A", - "name": "wan0", - "ntp_config_method": "static", - "ntp_address": "192.168.1.1", - "ntp_address_backup": "192.168.1.100", - "dns_config_method": "dhcp"} - iface = {"dns_servers": [{"ipv4Address": "10.1.0.20", "addressType": "ipv4"}, - {"ipv4Address": "10.1.0.50", "addressType": "ipv4"}], - "subnet_mask": "255.255.255.0", - "link_status": "up", - "ntp_servers": None, - "ntp_config_method": "disabled", - "controllerRef": "070000000000000000000001", - "config_method": "configStatic", - "enabled": True, - "gateway": "10.1.1.1", - "alias": "creG1g-AP-a", - "controllerSlot": 1, - "dns_config_method": "configStatic", - "id": "2800070000000000000000000001000000000000", - "address": "10.1.1.111", - "ipv6Enabled": False, - "channel": 1} - settings = {"controllerRef": "070000000000000000000001", - "ssh": False} - - self._set_args(initial) - mgmt_interface = MgmtInterface() - - with mock.patch(self.REQ_FUNC, return_value=(200, None)): - update = mgmt_interface.update_array(settings, iface) - self.assertTrue(update) - - def test_update_array_dns_dhcp_ntp_static_no_change_pass(self): - """Verify get_interface_settings gives the right static configuration response.""" - initial = { - "controller": "A", - "name": "wan0", - "ntp_config_method": "dhcp", - "dns_config_method": "dhcp"} - iface = {"dns_servers": [{"ipv4Address": "10.1.0.20", "addressType": "ipv4"}, - {"ipv4Address": "10.1.0.50", "addressType": "ipv4"}], - "subnet_mask": "255.255.255.0", - "ntp_servers": None, - "ntp_config_method": "dhcp", - "controllerRef": "070000000000000000000001", - "config_method": "static", - "enabled": True, - "gateway": "10.1.1.1", - "alias": "creG1g-AP-a", - "controllerSlot": 1, - "dns_config_method": "dhcp", - "id": "2800070000000000000000000001000000000000", - "address": "10.1.1.11", - "ipv6Enabled": False, - "channel": 1} - settings = {"controllerRef": "070000000000000000000001", - "ssh": False} - - self._set_args(initial) - mgmt_interface = MgmtInterface() - - with mock.patch(self.REQ_FUNC, return_value=(200, None)): - update = mgmt_interface.update_array(settings, iface) - self.assertFalse(update) - - def test_update_array_ipv4_ipv6_disabled_fail(self): - """Verify exception is thrown when both ipv4 and ipv6 would be disabled at the same time.""" - initial = { - "state": "disable", - "controller": "A", - "name": "wan0", - "address": "192.168.1.1", - "subnet_mask": "255.255.255.1", - "config_method": "static", - "ssh": True} - iface = {"dns_servers": [{"ipv4Address": "10.1.0.20", "addressType": "ipv4"}, - {"ipv4Address": "10.1.0.50", "addressType": "ipv4"}], - "subnet_mask": "255.255.255.0", - "ntp_servers": None, - "ntp_config_method": "disabled", - "controllerRef": "070000000000000000000001", - "config_method": "configStatic", - "enabled": True, - "gateway": "10.1.1.1", - "alias": "creG1g-AP-a", - "controllerSlot": 1, - "dns_config_method": "stat", - "id": "2800070000000000000000000001000000000000", - "address": "10.1.1.11", - "ipv6Enabled": False, - "channel": 1} - settings = {"controllerRef": "070000000000000000000001", - "ssh": False} - - self._set_args(initial) - mgmt_interface = MgmtInterface() - - with self.assertRaisesRegexp(AnsibleFailJson, r"This storage-system already has IPv6 connectivity disabled."): - with mock.patch(self.REQ_FUNC, return_value=(422, dict(ipv4Enabled=False, retcode="4", errorMessage=""))): - mgmt_interface.update_array(settings, iface) - - def test_update_array_request_error_fail(self): - """Verify exception is thrown when request results in an error.""" - initial = { - "state": "disable", - "controller": "A", - "name": "wan0", - "address": "192.168.1.1", - "subnet_mask": "255.255.255.1", - "config_method": "static", - "ssh": True} - iface = {"dns_servers": [{"ipv4Address": "10.1.0.20", "addressType": "ipv4"}, - {"ipv4Address": "10.1.0.50", "addressType": "ipv4"}], - "subnet_mask": "255.255.255.0", - "ntp_servers": None, - "ntp_config_method": "disabled", - "controllerRef": "070000000000000000000001", - "config_method": "configStatic", - "enabled": True, - "gateway": "10.1.1.1", - "alias": "creG1g-AP-a", - "controllerSlot": 1, - "dns_config_method": "stat", - "id": "2800070000000000000000000001000000000000", - "address": "10.1.1.111", - "ipv6Enabled": False, - "channel": 1} - settings = {"controllerRef": "070000000000000000000001", - "ssh": False} - - self._set_args(initial) - mgmt_interface = MgmtInterface() - - with self.assertRaisesRegexp(AnsibleFailJson, r"We failed to configure the management interface."): - with mock.patch(self.REQ_FUNC, return_value=(300, dict(ipv4Enabled=False, retcode="4", errorMessage=""))): - mgmt_interface.update_array(settings, iface) - - def test_update_pass(self): - """Validate update method completes.""" - initial = { - "state": "enable", - "controller": "A", - "channel": "1", - "address": "192.168.1.1", - "subnet_mask": "255.255.255.1", - "config_method": "static", - "ssh": "yes"} - controller_request = [ - {"physicalLocation": {"slot": 2}, - "controllerRef": "070000000000000000000002", - "networkSettings": {"remoteAccessEnabled": True}}, - {"physicalLocation": {"slot": 1}, - "controllerRef": "070000000000000000000001", - "networkSettings": {"remoteAccessEnabled": False}}] - expected = { - "dns_servers": [{"ipv4Address": "10.1.0.20", "addressType": "ipv4"}, - {"ipv4Address": "10.1.0.50", "addressType": "ipv4"}], - "subnet_mask": "255.255.255.0", - "ntp_servers": None, - "ntp_config_method": "disabled", - "controllerRef": "070000000000000000000001", - "config_method": "configStatic", - "enabled": True, - "gateway": "10.1.1.1", - "alias": "creG1g-AP-a", - "controllerSlot": 1, - "dns_config_method": "stat", - "id": "2800070000000000000000000001000000000000", - "address": "10.1.1.111", - "ipv6Enabled": False, - "channel": 1} - - self._set_args(initial) - mgmt_interface = MgmtInterface() - - with self.assertRaisesRegexp(AnsibleExitJson, r"The interface settings have been updated."): - with mock.patch(self.REQ_FUNC, side_effect=[(200, None), (200, controller_request), (200, self.TEST_DATA), - (200, controller_request), (200, self.TEST_DATA)]): - mgmt_interface.update() diff --git a/test/units/modules/storage/netapp/test_netapp_e_storagepool.py b/test/units/modules/storage/netapp/test_netapp_e_storagepool.py deleted file mode 100644 index 1ce48bddb6..0000000000 --- a/test/units/modules/storage/netapp/test_netapp_e_storagepool.py +++ /dev/null @@ -1,724 +0,0 @@ -# coding=utf-8 -# (c) 2018, NetApp Inc. -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -from __future__ import absolute_import, division, print_function -__metaclass__ = type - -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args -from ansible.modules.storage.netapp.netapp_e_storagepool import NetAppESeriesStoragePool - -try: - from unittest.mock import patch, PropertyMock -except ImportError: - from mock import patch, PropertyMock - - -class StoragePoolTest(ModuleTestCase): - REQUIRED_PARAMS = {"api_username": "username", - "api_password": "password", - "api_url": "http://localhost/devmgr/v2", - "ssid": "1", - "validate_certs": "no"} - - STORAGE_POOL_DATA = [{"raidLevel": "raidDiskPool", "volumeGroupRef": "04000000600A098000A4B28D000017805C7BD4D8", - "securityType": "capable", - "protectionInformationCapabilities": {"protectionInformationCapable": True, - "protectionType": "type2Protection"}, - "volumeGroupData": {"diskPoolData": {"reconstructionReservedDriveCount": 2}}, - "totalRaidedSpace": "2735894167552", "name": "pool", - "id": "04000000600A098000A4B28D000017805C7BD4D8", "driveMediaType": "hdd"}] - DRIVES_DATA = [{'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000', - 'driveMediaType': 'hdd', 'id': '010000005000C500551ED1FF0000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', - 'driveMediaType': 'hdd', 'id': '010000005000C500551EB1930000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', - 'driveMediaType': 'hdd', 'id': '010000005000C500551EAAE30000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', - 'driveMediaType': 'hdd', 'id': '010000005000C500551ECB1F0000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', - 'driveMediaType': 'hdd', 'id': '010000005000C500551EB2930000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', - 'driveMediaType': 'hdd', 'id': '010000005000C500551ECB0B0000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', - 'driveMediaType': 'hdd', 'id': '010000005000C500551EC6C70000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', - 'driveMediaType': 'hdd', 'id': '010000005000C500551E9BA70000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', - 'driveMediaType': 'hdd', 'id': '010000005000C500551ED7CF0000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', - 'driveMediaType': 'hdd', 'id': '010000005000C500551ECB0F0000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', - 'driveMediaType': 'hdd', 'id': '010000005000C500551E72870000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', - 'driveMediaType': 'hdd', 'id': '010000005000C500551E9DBB0000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', - 'driveMediaType': 'hdd', 'id': '010000005000C500551EAC230000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', - 'driveMediaType': 'hdd', 'id': '010000005000C500551EA0BB0000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', - 'driveMediaType': 'hdd', 'id': '010000005000C500551EAC4B0000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000', - 'driveMediaType': 'hdd', 'id': '010000005000C500551E7F2B0000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000', - 'driveMediaType': 'hdd', 'id': '010000005000C500551EC9270000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000', - 'driveMediaType': 'hdd', 'id': '010000005000C500551EC97F0000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000', - 'driveMediaType': 'hdd', 'id': '010000005000C500551ECBFF0000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000', - 'driveMediaType': 'hdd', 'id': '010000005000C500551E9ED30000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000', - 'driveMediaType': 'hdd', 'id': '010000005000C500551EA4CF0000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000', - 'driveMediaType': 'hdd', 'id': '010000005000C500551EA29F0000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000', - 'driveMediaType': 'hdd', 'id': '010000005000C500551ECDFB0000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000', - 'driveMediaType': 'hdd', 'id': '010000005000C500551E99230000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000', - 'driveMediaType': 'ssd', 'id': '010000005000C500551E9ED31000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000', - 'driveMediaType': 'ssd', 'id': '010000005000C500551EA4CF2000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000', - 'driveMediaType': 'ssd', 'id': '010000005000C500551EA29F3000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000', - 'driveMediaType': 'ssd', 'id': '010000005000C500551ECDFB4000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}, - {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000', - 'driveMediaType': 'ssd', 'id': '010000005000C500551E99235000000000000000', 'fdeCapable': True, - 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False, - 'phyDriveType': 'sata', 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False, - 'usableCapacity': '299463129088'}] - - RAID6_CANDIDATE_DRIVES = {"volumeCandidate": [ - {"raidLevel": "raid6", "trayLossProtection": False, "rawSize": "898389368832", "usableSize": "898388459520", - "driveCount": 5, "freeExtentRef": "0000000000000000000000000000000000000000", "driveRefList": { - "driveRef": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551EC9270000000000000000", - "010000005000C500551EC97F0000000000000000", "010000005000C500551ECBFF0000000000000000", - "010000005000C500551E9ED30000000000000000"]}, "candidateSelectionType": "count", - "spindleSpeedMatch": True, "spindleSpeed": 10000, "phyDriveType": "sas", "dssPreallocEnabled": False, - "securityType": "capable", "drawerLossProtection": False, "driveMediaType": "hdd", - "protectionInformationCapable": False, - "protectionInformationCapabilities": {"protectionInformationCapable": True, - "protectionType": "type2Protection"}, - "volumeCandidateData": {"type": "traditional", "diskPoolVolumeCandidateData": None}, - "driveBlockFormat": "allNative", "allocateReservedSpace": False, "securityLevel": "fde"}, - {"raidLevel": "raid6", "trayLossProtection": False, "rawSize": "1197852491776", "usableSize": "1197851279360", - "driveCount": 6, "freeExtentRef": "0000000000000000000000000000000000000000", "driveRefList": { - "driveRef": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551EC9270000000000000000", - "010000005000C500551EC97F0000000000000000", "010000005000C500551ECBFF0000000000000000", - "010000005000C500551E9ED30000000000000000", "010000005000C500551EA4CF0000000000000000"]}, - "candidateSelectionType": "count", "spindleSpeedMatch": True, "spindleSpeed": 10000, "phyDriveType": "sas", - "dssPreallocEnabled": False, "securityType": "capable", "drawerLossProtection": False, "driveMediaType": "hdd", - "protectionInformationCapable": False, - "protectionInformationCapabilities": {"protectionInformationCapable": True, - "protectionType": "type2Protection"}, - "volumeCandidateData": {"type": "traditional", "diskPoolVolumeCandidateData": None}, - "driveBlockFormat": "allNative", "allocateReservedSpace": False, "securityLevel": "fde"}, - {"raidLevel": "raid6", "trayLossProtection": False, "rawSize": "1497315614720", "usableSize": "1497314099200", - "driveCount": 7, "freeExtentRef": "0000000000000000000000000000000000000000", "driveRefList": { - "driveRef": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551EC9270000000000000000", - "010000005000C500551EC97F0000000000000000", "010000005000C500551ECBFF0000000000000000", - "010000005000C500551E9ED30000000000000000", "010000005000C500551EA4CF0000000000000000", - "010000005000C500551ED1FF0000000000000000"]}, "candidateSelectionType": "count", - "spindleSpeedMatch": True, "spindleSpeed": 10000, "phyDriveType": "sas", "dssPreallocEnabled": False, - "securityType": "capable", "drawerLossProtection": False, "driveMediaType": "hdd", - "protectionInformationCapable": False, - "protectionInformationCapabilities": {"protectionInformationCapable": True, - "protectionType": "type2Protection"}, - "volumeCandidateData": {"type": "traditional", "diskPoolVolumeCandidateData": None}, - "driveBlockFormat": "allNative", "allocateReservedSpace": False, "securityLevel": "fde"}, - {"raidLevel": "raid6", "trayLossProtection": False, "rawSize": "1796778737664", "usableSize": "1796776919040", - "driveCount": 8, "freeExtentRef": "0000000000000000000000000000000000000000", "driveRefList": { - "driveRef": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551EC9270000000000000000", - "010000005000C500551EC97F0000000000000000", "010000005000C500551ECBFF0000000000000000", - "010000005000C500551E9ED30000000000000000", "010000005000C500551EA4CF0000000000000000", - "010000005000C500551ED1FF0000000000000000", "010000005000C500551EA29F0000000000000000"]}, - "candidateSelectionType": "count", "spindleSpeedMatch": True, "spindleSpeed": 10000, "phyDriveType": "sas", - "dssPreallocEnabled": False, "securityType": "capable", "drawerLossProtection": False, "driveMediaType": "hdd", - "protectionInformationCapable": False, - "protectionInformationCapabilities": {"protectionInformationCapable": True, - "protectionType": "type2Protection"}, - "volumeCandidateData": {"type": "traditional", "diskPoolVolumeCandidateData": None}, - "driveBlockFormat": "allNative", "allocateReservedSpace": False, "securityLevel": "fde"}, - {"raidLevel": "raid6", "trayLossProtection": False, "rawSize": "2096241860608", "usableSize": "2096239738880", - "driveCount": 9, "freeExtentRef": "0000000000000000000000000000000000000000", "driveRefList": { - "driveRef": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551EC9270000000000000000", - "010000005000C500551EC97F0000000000000000", "010000005000C500551ECBFF0000000000000000", - "010000005000C500551E9ED30000000000000000", "010000005000C500551EA4CF0000000000000000", - "010000005000C500551ED1FF0000000000000000", "010000005000C500551EA29F0000000000000000", - "010000005000C500551ECDFB0000000000000000"]}, "candidateSelectionType": "count", - "spindleSpeedMatch": True, "spindleSpeed": 10000, "phyDriveType": "sas", "dssPreallocEnabled": False, - "securityType": "capable", "drawerLossProtection": False, "driveMediaType": "hdd", - "protectionInformationCapable": False, - "protectionInformationCapabilities": {"protectionInformationCapable": True, - "protectionType": "type2Protection"}, - "volumeCandidateData": {"type": "traditional", "diskPoolVolumeCandidateData": None}, - "driveBlockFormat": "allNative", "allocateReservedSpace": False, "securityLevel": "fde"}, - {"raidLevel": "raid6", "trayLossProtection": False, "rawSize": "2395704983552", "usableSize": "2395702558720", - "driveCount": 10, "freeExtentRef": "0000000000000000000000000000000000000000", "driveRefList": { - "driveRef": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551EC9270000000000000000", - "010000005000C500551EC97F0000000000000000", "010000005000C500551ECBFF0000000000000000", - "010000005000C500551E9ED30000000000000000", "010000005000C500551EA4CF0000000000000000", - "010000005000C500551ED1FF0000000000000000", "010000005000C500551EA29F0000000000000000", - "010000005000C500551ECDFB0000000000000000", "010000005000C500551E99230000000000000000"]}, - "candidateSelectionType": "count", "spindleSpeedMatch": True, "spindleSpeed": 10000, "phyDriveType": "sas", - "dssPreallocEnabled": False, "securityType": "capable", "drawerLossProtection": False, "driveMediaType": "hdd", - "protectionInformationCapable": False, - "protectionInformationCapabilities": {"protectionInformationCapable": True, - "protectionType": "type2Protection"}, - "volumeCandidateData": {"type": "traditional", "diskPoolVolumeCandidateData": None}, - "driveBlockFormat": "allNative", "allocateReservedSpace": False, "securityLevel": "fde"}], "returnCode": "ok"} - - EXPANSION_DDP_DRIVES_LIST = ["010000005000C500551ED1FF0000000000000000", "010000005000C500551E7F2B0000000000000000", - "010000005000C500551EC9270000000000000000", "010000005000C500551EC97F0000000000000000", - "010000005000C500551ECBFF0000000000000000", "010000005000C500551E9ED30000000000000000", - "010000005000C500551EA4CF0000000000000000", "010000005000C500551EA29F0000000000000000", - "010000005000C500551ECDFB0000000000000000", "010000005000C500551E99230000000000000000", - "010000005000C500551E9ED31000000000000000", "010000005000C500551EA4CF2000000000000000", - "010000005000C500551EA29F3000000000000000", "010000005000C500551ECDFB4000000000000000", - "010000005000C500551E99235000000000000000"] - EXPANSION_DDP_DRIVE_DATA = {"returnCode": "ok", "candidates": [ - {"drives": ["010000005000C500551E7F2B0000000000000000"], "trayLossProtection": False, "wastedCapacity": "0", - "spindleSpeedMatch": True, "drawerLossProtection": False, "usableCapacity": "299463129088", - "driveBlockFormat": "allNative"}, - {"drives": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551E99230000000000000000"], - "trayLossProtection": False, "wastedCapacity": "0", "spindleSpeedMatch": True, "drawerLossProtection": False, - "usableCapacity": "598926258176", "driveBlockFormat": "allNative"}, - {"drives": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551E99230000000000000000", - "010000005000C500551E9ED30000000000000000"], "trayLossProtection": False, "wastedCapacity": "0", - "spindleSpeedMatch": True, "drawerLossProtection": False, "usableCapacity": "898389387264", - "driveBlockFormat": "allNative"}, - {"drives": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551E99230000000000000000", - "010000005000C500551E9ED30000000000000000", "010000005000C500551EA29F0000000000000000"], - "trayLossProtection": False, "wastedCapacity": "0", "spindleSpeedMatch": True, "drawerLossProtection": False, - "usableCapacity": "1197852516352", "driveBlockFormat": "allNative"}, - {"drives": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551E99230000000000000000", - "010000005000C500551E9ED30000000000000000", "010000005000C500551EA29F0000000000000000", - "010000005000C500551EA4CF0000000000000000"], "trayLossProtection": False, "wastedCapacity": "0", - "spindleSpeedMatch": True, "drawerLossProtection": False, "usableCapacity": "1497315645440", - "driveBlockFormat": "allNative"}, - {"drives": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551E99230000000000000000", - "010000005000C500551E9ED30000000000000000", "010000005000C500551EA29F0000000000000000", - "010000005000C500551EA4CF0000000000000000", "010000005000C500551EC9270000000000000000"], - "trayLossProtection": False, "wastedCapacity": "0", "spindleSpeedMatch": True, "drawerLossProtection": False, - "usableCapacity": "1796778774528", "driveBlockFormat": "allNative"}, - {"drives": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551E99230000000000000000", - "010000005000C500551E9ED30000000000000000", "010000005000C500551EA29F0000000000000000", - "010000005000C500551EA4CF0000000000000000", "010000005000C500551EC9270000000000000000", - "010000005000C500551EC97F0000000000000000"], "trayLossProtection": False, "wastedCapacity": "0", - "spindleSpeedMatch": True, "drawerLossProtection": False, "usableCapacity": "2096241903616", - "driveBlockFormat": "allNative"}, - {"drives": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551E99230000000000000000", - "010000005000C500551E9ED30000000000000000", "010000005000C500551EA29F0000000000000000", - "010000005000C500551EA4CF0000000000000000", "010000005000C500551EC9270000000000000000", - "010000005000C500551EC97F0000000000000000", "010000005000C500551ECBFF0000000000000000"], - "trayLossProtection": False, "wastedCapacity": "0", "spindleSpeedMatch": True, "drawerLossProtection": False, - "usableCapacity": "2395705032704", "driveBlockFormat": "allNative"}, - {"drives": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551E99230000000000000000", - "010000005000C500551E9ED30000000000000000", "010000005000C500551EA29F0000000000000000", - "010000005000C500551EA4CF0000000000000000", "010000005000C500551EC9270000000000000000", - "010000005000C500551EC97F0000000000000000", "010000005000C500551ECBFF0000000000000000", - "010000005000C500551ECDFB0000000000000000"], "trayLossProtection": False, "wastedCapacity": "0", - "spindleSpeedMatch": True, "drawerLossProtection": False, "usableCapacity": "2695168161792", - "driveBlockFormat": "allNative"}, - {"drives": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551E99230000000000000000", - "010000005000C500551E9ED30000000000000000", "010000005000C500551EA29F0000000000000000", - "010000005000C500551EA4CF0000000000000000", "010000005000C500551EC9270000000000000000", - "010000005000C500551EC97F0000000000000000", "010000005000C500551ECBFF0000000000000000", - "010000005000C500551ECDFB0000000000000000", "010000005000C500551ED1FF0000000000000000"], - "trayLossProtection": False, "wastedCapacity": "0", "spindleSpeedMatch": True, "drawerLossProtection": False, - "usableCapacity": "2994631290880", "driveBlockFormat": "allNative"}]} - - REQUEST_FUNC = "ansible.modules.storage.netapp.netapp_e_storagepool.request" - NETAPP_REQUEST_FUNC = "ansible.module_utils.netapp.NetAppESeriesModule.request" - VALIDATE_FUNC = "ansible.modules.storage.netapp.netapp_e_storagepool.NetAppESeriesModule.validate_instance" - - DRIVES_PROPERTY = "ansible.modules.storage.netapp.netapp_e_storagepool.NetAppESeriesStoragePool.drives" - STORAGE_POOL_PROPERTY = "ansible.modules.storage.netapp.netapp_e_storagepool.NetAppESeriesStoragePool.storage_pool" - - def _set_args(self, args=None): - module_args = self.REQUIRED_PARAMS.copy() - if args is not None: - module_args.update(args) - set_module_args(module_args) - - def _initialize_dummy_instance(self, alt_args=None): - """Initialize a dummy instance of NetAppESeriesStoragePool for the purpose of testing individual methods.""" - args = {"state": "absent", "name": "storage_pool"} - if alt_args: - args.update(alt_args) - self._set_args(args) - return NetAppESeriesStoragePool() - - def test_drives_fail(self): - """Verify exception is thrown.""" - - with patch(self.NETAPP_REQUEST_FUNC) as netapp_request: - netapp_request.return_value = Exception() - storagepool = self._initialize_dummy_instance() - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to fetch disk drives."): - drives = storagepool.drives - - def test_available_drives(self): - """Verify all drives returned are available""" - with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives: - drives.return_value = self.DRIVES_DATA - - storagepool = self._initialize_dummy_instance() - self.assertEqual(storagepool.available_drives, - ['010000005000C500551ED1FF0000000000000000', '010000005000C500551E7F2B0000000000000000', - '010000005000C500551EC9270000000000000000', '010000005000C500551EC97F0000000000000000', - '010000005000C500551ECBFF0000000000000000', '010000005000C500551E9ED30000000000000000', - '010000005000C500551EA4CF0000000000000000', '010000005000C500551EA29F0000000000000000', - '010000005000C500551ECDFB0000000000000000', '010000005000C500551E99230000000000000000', - '010000005000C500551E9ED31000000000000000', '010000005000C500551EA4CF2000000000000000', - '010000005000C500551EA29F3000000000000000', '010000005000C500551ECDFB4000000000000000', - '010000005000C500551E99235000000000000000']) - - def test_available_drive_types(self): - """Verify all drive types are returned in most common first order.""" - with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives: - drives.return_value = self.DRIVES_DATA - - storagepool = self._initialize_dummy_instance() - self.assertEqual(storagepool.available_drive_types[0], "hdd") - self.assertEqual(storagepool.available_drive_types[1], "ssd") - - def test_available_drive_interface_types(self): - """Verify all interface types are returned in most common first order.""" - with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives: - drives.return_value = self.DRIVES_DATA - - storagepool = self._initialize_dummy_instance() - self.assertEqual(storagepool.available_drive_interface_types[0], "sas") - self.assertEqual(storagepool.available_drive_interface_types[1], "sata") - - def test_storage_pool_drives(self): - """Verify storage pool drive collection.""" - with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives: - drives.return_value = self.DRIVES_DATA - - storagepool = self._initialize_dummy_instance( - {"state": "present", "name": "pool", "criteria_drive_count": "12", "raid_level": "raidDiskPool"}) - storagepool.pool_detail = self.STORAGE_POOL_DATA[0] - self.assertEqual(storagepool.storage_pool_drives, [ - {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False, - 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, 'fdeCapable': True, - 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False, - 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000', - 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False, - 'id': '010000005000C500551EB1930000000000000000'}, - {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False, - 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, 'fdeCapable': True, - 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False, - 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000', - 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False, - 'id': '010000005000C500551EAAE30000000000000000'}, - {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False, - 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, 'fdeCapable': True, - 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False, - 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000', - 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False, - 'id': '010000005000C500551ECB1F0000000000000000'}, - {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False, - 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, 'fdeCapable': True, - 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False, - 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000', - 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False, - 'id': '010000005000C500551EB2930000000000000000'}, - {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False, - 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, 'fdeCapable': True, - 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False, - 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000', - 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False, - 'id': '010000005000C500551ECB0B0000000000000000'}, - {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False, - 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, 'fdeCapable': True, - 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False, - 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000', - 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False, - 'id': '010000005000C500551EC6C70000000000000000'}, - {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False, - 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, 'fdeCapable': True, - 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False, - 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000', - 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False, - 'id': '010000005000C500551E9BA70000000000000000'}, - {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False, - 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, 'fdeCapable': True, - 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False, - 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000', - 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False, - 'id': '010000005000C500551ED7CF0000000000000000'}, - {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False, - 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, 'fdeCapable': True, - 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False, - 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000', - 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False, - 'id': '010000005000C500551ECB0F0000000000000000'}, - {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False, - 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, 'fdeCapable': True, - 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False, - 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000', - 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False, - 'id': '010000005000C500551E72870000000000000000'}, - {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False, - 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, 'fdeCapable': True, - 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False, - 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000', - 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False, - 'id': '010000005000C500551E9DBB0000000000000000'}, - {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False, - 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, 'fdeCapable': True, - 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False, - 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000', - 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False, - 'id': '010000005000C500551EAC230000000000000000'}, - {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False, - 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, 'fdeCapable': True, - 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False, - 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000', - 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False, - 'id': '010000005000C500551EA0BB0000000000000000'}, - {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False, - 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, 'fdeCapable': True, - 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False, - 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000', - 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False, - 'id': '010000005000C500551EAC4B0000000000000000'}]) - - def test_get_ddp_capacity(self): - """Evaluate returned capacity from get_ddp_capacity method.""" - with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives: - drives.return_value = self.DRIVES_DATA - - storagepool = self._initialize_dummy_instance( - {"state": "present", "name": "pool", "criteria_drive_count": "12", "raid_level": "raidDiskPool"}) - storagepool.pool_detail = self.STORAGE_POOL_DATA[0] - self.assertAlmostEqual(storagepool.get_ddp_capacity(self.EXPANSION_DDP_DRIVES_LIST), 6038680353645, - places=-2) # Allows for python version/architecture computational differences - - def test_get_candidate_drives(self): - """Verify correct candidate list is returned.""" - with patch(self.NETAPP_REQUEST_FUNC) as netapp_request: - netapp_request.return_value = (200, self.RAID6_CANDIDATE_DRIVES) - with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives: - drives.return_value = self.DRIVES_DATA - - storagepool = self._initialize_dummy_instance( - {"state": "present", "name": "raid6_vg", "criteria_drive_count": "6", "raid_level": "raid6"}) - self.assertEqual(storagepool.get_candidate_drives(), - {'candidateSelectionType': 'count', 'driveMediaType': 'hdd', - 'protectionInformationCapabilities': {'protectionInformationCapable': True, - 'protectionType': 'type2Protection'}, - 'dssPreallocEnabled': False, 'phyDriveType': 'sas', 'allocateReservedSpace': False, - 'trayLossProtection': False, 'raidLevel': 'raid6', 'spindleSpeed': 10000, - 'securityType': 'capable', 'securityLevel': 'fde', 'spindleSpeedMatch': True, - 'driveBlockFormat': 'allNative', 'protectionInformationCapable': False, - 'freeExtentRef': '0000000000000000000000000000000000000000', 'driveCount': 6, - 'driveRefList': {'driveRef': ['010000005000C500551E7F2B0000000000000000', - '010000005000C500551EC9270000000000000000', - '010000005000C500551EC97F0000000000000000', - '010000005000C500551ECBFF0000000000000000', - '010000005000C500551E9ED30000000000000000', - '010000005000C500551EA4CF0000000000000000']}, - 'rawSize': '1197852491776', 'usableSize': '1197851279360', - 'drawerLossProtection': False, - 'volumeCandidateData': {'type': 'traditional', 'diskPoolVolumeCandidateData': None}}) - - def test_get_expansion_candidate_drives(self): - """Verify correct drive list is returned""" - with patch(self.NETAPP_REQUEST_FUNC) as netapp_request: - netapp_request.return_value = (200, self.EXPANSION_DDP_DRIVE_DATA) - with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives: - drives.return_value = self.DRIVES_DATA - - storagepool = self._initialize_dummy_instance( - {"state": "present", "name": "pool", "criteria_drive_count": "20", "raid_level": "raidDiskPool"}) - storagepool.pool_detail = self.STORAGE_POOL_DATA[0] - self.assertEqual(storagepool.get_expansion_candidate_drives(), [ - {'drawerLossProtection': False, 'trayLossProtection': False, - 'drives': ['010000005000C500551E7F2B0000000000000000', '010000005000C500551E99230000000000000000', - '010000005000C500551E9ED30000000000000000', '010000005000C500551EA29F0000000000000000', - '010000005000C500551EA4CF0000000000000000', '010000005000C500551EC9270000000000000000'], - 'spindleSpeedMatch': True, 'driveBlockFormat': 'allNative', 'usableCapacity': '1796778774528', - 'wastedCapacity': '0'}]) - - def test_get_maximum_reserve_drive_count(self): - """Ensure maximum reserve drive count is accurately calculated.""" - with patch(self.NETAPP_REQUEST_FUNC) as netapp_request: - netapp_request.return_value = (200, self.EXPANSION_DDP_DRIVE_DATA) - with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives: - drives.return_value = self.DRIVES_DATA - - storagepool = self._initialize_dummy_instance( - {"state": "present", "name": "pool", "criteria_drive_count": "20", "raid_level": "raidDiskPool"}) - storagepool.pool_detail = self.STORAGE_POOL_DATA[0] - self.assertEqual(storagepool.get_maximum_reserve_drive_count(), 5) - - def test_apply_check_mode_unchange(self): - """Verify that the changes are appropriately determined.""" - # Absent storage pool required to be absent - with self.assertRaisesRegexp(AnsibleExitJson, "'changed': False"): - with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives: - drives.return_value = self.DRIVES_DATA - with patch(self.STORAGE_POOL_PROPERTY, new_callable=PropertyMock) as storage_pool: - storage_pool.return_value = {} - storagepool = self._initialize_dummy_instance( - {"state": "absent", "name": "not-a-pool", "erase_secured_drives": False, - "criteria_drive_count": "14", "raid_level": "raidDiskPool"}) - storagepool.module.check_mode = True - storagepool.is_drive_count_valid = lambda x: True - storagepool.apply() - - # Present storage pool with no changes - with self.assertRaisesRegexp(AnsibleExitJson, "'changed': False"): - with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives: - drives.return_value = self.DRIVES_DATA - with patch(self.STORAGE_POOL_PROPERTY, new_callable=PropertyMock) as storage_pool: - storage_pool.return_value = self.STORAGE_POOL_DATA[0] - storagepool = self._initialize_dummy_instance( - {"state": "present", "name": "pool", "erase_secured_drives": False, - "criteria_drive_count": "14", "raid_level": "raidDiskPool"}) - storagepool.module.check_mode = True - storagepool.is_drive_count_valid = lambda x: True - storagepool.apply() - - def test_apply_check_mode_change(self): - """Verify that the changes are appropriately determined.""" - # Remove absent storage pool - with self.assertRaisesRegexp(AnsibleExitJson, "'changed': True"): - with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives: - drives.return_value = self.DRIVES_DATA - with patch(self.STORAGE_POOL_PROPERTY, new_callable=PropertyMock) as storage_pool: - storage_pool.return_value = self.STORAGE_POOL_DATA[0] - storagepool = self._initialize_dummy_instance( - {"state": "absent", "name": "pool", "erase_secured_drives": False, "criteria_drive_count": "14", - "raid_level": "raidDiskPool"}) - storagepool.module.check_mode = True - storagepool.is_drive_count_valid = lambda x: True - storagepool.apply() - - # Expand present storage pool - with self.assertRaisesRegexp(AnsibleExitJson, "'changed': True"): - with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives: - drives.return_value = self.DRIVES_DATA - with patch(self.STORAGE_POOL_PROPERTY, new_callable=PropertyMock) as storage_pool: - storage_pool.return_value = self.STORAGE_POOL_DATA[0] - storagepool = self._initialize_dummy_instance( - {"state": "present", "name": "pool", "erase_secured_drives": False, - "criteria_drive_count": "15", "raid_level": "raidDiskPool"}) - storagepool.module.check_mode = True - storagepool.is_drive_count_valid = lambda x: True - storagepool.expand_storage_pool = lambda check_mode: (True, 100) - storagepool.migrate_raid_level = lambda check_mode: False - storagepool.secure_storage_pool = lambda check_mode: False - storagepool.set_reserve_drive_count = lambda check_mode: False - storagepool.apply() - - # Migrate present storage pool raid level - with self.assertRaisesRegexp(AnsibleExitJson, "'changed': True"): - with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives: - drives.return_value = self.DRIVES_DATA - with patch(self.STORAGE_POOL_PROPERTY, new_callable=PropertyMock) as storage_pool: - storage_pool.return_value = self.STORAGE_POOL_DATA[0] - storagepool = self._initialize_dummy_instance( - {"state": "present", "name": "pool", "erase_secured_drives": False, - "criteria_drive_count": "15", "raid_level": "raidDiskPool"}) - storagepool.module.check_mode = True - storagepool.is_drive_count_valid = lambda x: True - storagepool.expand_storage_pool = lambda check_mode: (False, 0) - storagepool.migrate_raid_level = lambda check_mode: True - storagepool.secure_storage_pool = lambda check_mode: False - storagepool.set_reserve_drive_count = lambda check_mode: False - storagepool.apply() - - # Secure present storage pool - with self.assertRaisesRegexp(AnsibleExitJson, "'changed': True"): - with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives: - drives.return_value = self.DRIVES_DATA - with patch(self.STORAGE_POOL_PROPERTY, new_callable=PropertyMock) as storage_pool: - storage_pool.return_value = self.STORAGE_POOL_DATA[0] - storagepool = self._initialize_dummy_instance( - {"state": "present", "name": "pool", "erase_secured_drives": False, - "criteria_drive_count": "15", "raid_level": "raidDiskPool"}) - storagepool.module.check_mode = True - storagepool.is_drive_count_valid = lambda x: True - storagepool.expand_storage_pool = lambda check_mode: (False, 0) - storagepool.migrate_raid_level = lambda check_mode: False - storagepool.secure_storage_pool = lambda check_mode: True - storagepool.set_reserve_drive_count = lambda check_mode: False - storagepool.apply() - - # Change present storage pool reserve drive count - with self.assertRaisesRegexp(AnsibleExitJson, "'changed': True"): - with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives: - drives.return_value = self.DRIVES_DATA - with patch(self.STORAGE_POOL_PROPERTY, new_callable=PropertyMock) as storage_pool: - storage_pool.return_value = self.STORAGE_POOL_DATA[0] - storagepool = self._initialize_dummy_instance( - {"state": "present", "name": "pool", "erase_secured_drives": False, - "criteria_drive_count": "15", "raid_level": "raidDiskPool"}) - storagepool.module.check_mode = True - storagepool.is_drive_count_valid = lambda x: True - storagepool.expand_storage_pool = lambda check_mode: (False, 0) - storagepool.migrate_raid_level = lambda check_mode: False - storagepool.secure_storage_pool = lambda check_mode: False - storagepool.set_reserve_drive_count = lambda check_mode: True - storagepool.apply() diff --git a/test/units/modules/storage/netapp/test_netapp_e_syslog.py b/test/units/modules/storage/netapp/test_netapp_e_syslog.py deleted file mode 100644 index e71d4c6b5d..0000000000 --- a/test/units/modules/storage/netapp/test_netapp_e_syslog.py +++ /dev/null @@ -1,123 +0,0 @@ -# (c) 2018, NetApp Inc. -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from ansible.modules.storage.netapp.netapp_e_syslog import Syslog -from units.modules.utils import AnsibleFailJson, ModuleTestCase, set_module_args - -__metaclass__ = type -from units.compat import mock - - -class AsupTest(ModuleTestCase): - REQUIRED_PARAMS = { - "api_username": "rw", - "api_password": "password", - "api_url": "http://localhost", - } - REQ_FUNC = 'ansible.modules.storage.netapp.netapp_e_syslog.request' - - def _set_args(self, args=None): - module_args = self.REQUIRED_PARAMS.copy() - if args is not None: - module_args.update(args) - set_module_args(module_args) - - def test_test_configuration_fail(self): - """Validate test_configuration fails when request exception is thrown.""" - initial = {"state": "present", - "ssid": "1", - "address": "192.168.1.1", - "port": "514", - "protocol": "udp", - "components": ["auditLog"]} - self._set_args(initial) - syslog = Syslog() - - with self.assertRaisesRegexp(AnsibleFailJson, r"We failed to send test message!"): - with mock.patch(self.REQ_FUNC, side_effect=Exception()): - with mock.patch("time.sleep", return_value=None): # mocking sleep is not working - syslog.test_configuration(self.REQUIRED_PARAMS) - - def test_update_configuration_record_match_pass(self): - """Verify existing syslog server record match does not issue update request.""" - initial = {"state": "present", - "ssid": "1", - "address": "192.168.1.1", - "port": "514", - "protocol": "udp", - "components": ["auditLog"]} - expected = [{"id": "123456", - "serverAddress": "192.168.1.1", - "port": 514, - "protocol": "udp", - "components": [{"type": "auditLog"}]}] - - self._set_args(initial) - syslog = Syslog() - - with mock.patch(self.REQ_FUNC, side_effect=[(200, expected), (200, None)]): - updated = syslog.update_configuration() - self.assertFalse(updated) - - def test_update_configuration_record_partial_match_pass(self): - """Verify existing syslog server record partial match results in an update request.""" - initial = {"state": "present", - "ssid": "1", - "address": "192.168.1.1", - "port": "514", - "protocol": "tcp", - "components": ["auditLog"]} - expected = [{"id": "123456", - "serverAddress": "192.168.1.1", - "port": 514, - "protocol": "udp", - "components": [{"type": "auditLog"}]}] - - self._set_args(initial) - syslog = Syslog() - - with mock.patch(self.REQ_FUNC, side_effect=[(200, expected), (200, None)]): - updated = syslog.update_configuration() - self.assertTrue(updated) - - def test_update_configuration_record_no_match_pass(self): - """Verify existing syslog server record partial match results in an update request.""" - initial = {"state": "present", - "ssid": "1", - "address": "192.168.1.1", - "port": "514", - "protocol": "tcp", - "components": ["auditLog"]} - expected = [{"id": "123456", - "serverAddress": "192.168.1.100", - "port": 514, - "protocol": "udp", - "components": [{"type": "auditLog"}]}] - - self._set_args(initial) - syslog = Syslog() - - with mock.patch(self.REQ_FUNC, side_effect=[(200, expected), (200, dict(id=1234))]): - updated = syslog.update_configuration() - self.assertTrue(updated) - - def test_update_configuration_record_no_match_defaults_pass(self): - """Verify existing syslog server record partial match results in an update request.""" - initial = {"state": "present", - "ssid": "1", - "address": "192.168.1.1", - "port": "514", - "protocol": "tcp", - "components": ["auditLog"]} - expected = [{"id": "123456", - "serverAddress": "192.168.1.100", - "port": 514, - "protocol": "udp", - "components": [{"type": "auditLog"}]}] - - self._set_args(initial) - syslog = Syslog() - - with mock.patch(self.REQ_FUNC, side_effect=[(200, expected), (200, dict(id=1234))]): - updated = syslog.update_configuration() - self.assertTrue(updated) diff --git a/test/units/modules/storage/netapp/test_netapp_e_volume.py b/test/units/modules/storage/netapp/test_netapp_e_volume.py deleted file mode 100644 index 348d0e4b1f..0000000000 --- a/test/units/modules/storage/netapp/test_netapp_e_volume.py +++ /dev/null @@ -1,870 +0,0 @@ -# coding=utf-8 -# (c) 2018, NetApp Inc. -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -from __future__ import absolute_import, division, print_function -__metaclass__ = type - -try: - from unittest import mock -except ImportError: - import mock - -from ansible.module_utils.netapp import NetAppESeriesModule -from ansible.modules.storage.netapp.netapp_e_volume import NetAppESeriesVolume -from units.modules.utils import AnsibleFailJson, ModuleTestCase, set_module_args - - -class NetAppESeriesVolumeTest(ModuleTestCase): - REQUIRED_PARAMS = {"api_username": "username", - "api_password": "password", - "api_url": "http://localhost/devmgr/v2", - "ssid": "1", - "validate_certs": "no"} - - THIN_VOLUME_RESPONSE = [{"capacity": "1288490188800", - "volumeRef": "3A000000600A098000A4B28D000010475C405428", - "status": "optimal", - "protectionType": "type1Protection", - "maxVirtualCapacity": "281474976710656", - "initialProvisionedCapacity": "4294967296", - "currentProvisionedCapacity": "4294967296", - "provisionedCapacityQuota": "1305670057984", - "growthAlertThreshold": 85, - "expansionPolicy": "automatic", - "flashCached": False, - "metadata": [{"key": "workloadId", "value": "4200000001000000000000000000000000000000"}, - {"key": "volumeTypeId", "value": "volume"}], - "dataAssurance": True, - "segmentSize": 131072, - "diskPool": True, - "listOfMappings": [], - "mapped": False, - "currentControllerId": "070000000000000000000001", - "cacheSettings": {"readCacheEnable": True, "writeCacheEnable": True, - "readAheadMultiplier": 0}, - "name": "thin_volume", - "id": "3A000000600A098000A4B28D000010475C405428"}] - VOLUME_GET_RESPONSE = [{"offline": False, - "raidLevel": "raid6", - "capacity": "214748364800", - "reconPriority": 1, - "segmentSize": 131072, - "volumeRef": "02000000600A098000A4B9D100000F095C2F7F31", - "status": "optimal", - "protectionInformationCapable": False, - "protectionType": "type0Protection", - "diskPool": True, - "flashCached": False, - "metadata": [{"key": "workloadId", "value": "4200000002000000000000000000000000000000"}, - {"key": "volumeTypeId", "value": "Clare"}], - "dataAssurance": False, - "currentControllerId": "070000000000000000000002", - "cacheSettings": {"readCacheEnable": True, "writeCacheEnable": False, - "readAheadMultiplier": 0}, - "thinProvisioned": False, - "totalSizeInBytes": "214748364800", - "name": "Matthew", - "id": "02000000600A098000A4B9D100000F095C2F7F31"}, - {"offline": False, - "raidLevel": "raid6", - "capacity": "107374182400", - "reconPriority": 1, - "segmentSize": 131072, - "volumeRef": "02000000600A098000A4B28D00000FBE5C2F7F26", - "status": "optimal", - "protectionInformationCapable": False, - "protectionType": "type0Protection", - "diskPool": True, - "flashCached": False, - "metadata": [{"key": "workloadId", "value": "4200000002000000000000000000000000000000"}, - {"key": "volumeTypeId", "value": "Samantha"}], - "dataAssurance": False, - "currentControllerId": "070000000000000000000001", - "cacheSettings": {"readCacheEnable": True, "writeCacheEnable": False, - "readAheadMultiplier": 0}, - "thinProvisioned": False, - "totalSizeInBytes": "107374182400", - "name": "Samantha", - "id": "02000000600A098000A4B28D00000FBE5C2F7F26"}, - {"offline": False, - "raidLevel": "raid6", - "capacity": "107374182400", - "segmentSize": 131072, - "volumeRef": "02000000600A098000A4B9D100000F0B5C2F7F40", - "status": "optimal", - "protectionInformationCapable": False, - "protectionType": "type0Protection", - "volumeGroupRef": "04000000600A098000A4B9D100000F085C2F7F26", - "diskPool": True, - "flashCached": False, - "metadata": [{"key": "workloadId", "value": "4200000002000000000000000000000000000000"}, - {"key": "volumeTypeId", "value": "Micah"}], - "dataAssurance": False, - "currentControllerId": "070000000000000000000002", - "cacheSettings": {"readCacheEnable": True, "writeCacheEnable": False, - "readAheadMultiplier": 0}, - "thinProvisioned": False, - "totalSizeInBytes": "107374182400", - "name": "Micah", - "id": "02000000600A098000A4B9D100000F0B5C2F7F40"}] - STORAGE_POOL_GET_RESPONSE = [{"offline": False, - "raidLevel": "raidDiskPool", - "volumeGroupRef": "04000000600A", - "securityType": "capable", - "protectionInformationCapable": False, - "protectionInformationCapabilities": {"protectionInformationCapable": True, - "protectionType": "type2Protection"}, - "volumeGroupData": {"type": "diskPool", - "diskPoolData": {"reconstructionReservedDriveCount": 1, - "reconstructionReservedAmt": "296889614336", - "reconstructionReservedDriveCountCurrent": 1, - "poolUtilizationWarningThreshold": 0, - "poolUtilizationCriticalThreshold": 85, - "poolUtilizationState": "utilizationOptimal", - "unusableCapacity": "0", - "degradedReconstructPriority": "high", - "criticalReconstructPriority": "highest", - "backgroundOperationPriority": "low", - "allocGranularity": "4294967296"}}, - "reservedSpaceAllocated": False, - "securityLevel": "fde", - "usedSpace": "863288426496", - "totalRaidedSpace": "2276332666880", - "raidStatus": "optimal", - "freeSpace": "1413044240384", - "drivePhysicalType": "sas", - "driveMediaType": "hdd", - "diskPool": True, - "id": "04000000600A098000A4B9D100000F085C2F7F26", - "name": "employee_data_storage_pool"}, - {"offline": False, - "raidLevel": "raid1", - "volumeGroupRef": "04000000600A098000A4B28D00000FBD5C2F7F19", - "state": "complete", - "securityType": "capable", - "drawerLossProtection": False, - "protectionInformationCapable": False, - "protectionInformationCapabilities": {"protectionInformationCapable": True, - "protectionType": "type2Protection"}, - "volumeGroupData": {"type": "unknown", "diskPoolData": None}, - "reservedSpaceAllocated": False, - "securityLevel": "fde", - "usedSpace": "322122547200", - "totalRaidedSpace": "598926258176", - "raidStatus": "optimal", - "freeSpace": "276803710976", - "drivePhysicalType": "sas", - "driveMediaType": "hdd", - "diskPool": False, - "id": "04000000600A098000A4B28D00000FBD5C2F7F19", - "name": "database_storage_pool"}] - - GET_LONG_LIVED_OPERATION_RESPONSE = [ - {"returnCode": "ok", - "longLivedOpsProgress": [ - {"volAction": "initializing", "reconstruct": None, "volExpansion": None, "volAndCapExpansion": None, - "init": {"volumeRef": "02000000600A098000A4B9D1000037315D494C6F", "pending": False, "percentComplete": 1, "timeToCompletion": 20}, - "format": None, "volCreation": None, "volDeletion": None}, - {"volAction": "initializing", "reconstruct": None, "volExpansion": None, "volAndCapExpansion": None, - "init": {"volumeRef": "02000000600A098000A4B28D00003D2C5D494C87", "pending": False, "percentComplete": 0, "timeToCompletion": 18}, - "volCreation": None, "volDeletion": None}]}, - {"returnCode": "ok", - "longLivedOpsProgress": [ - {"volAction": "complete", "reconstruct": None, "volExpansion": None, "volAndCapExpansion": None, - "init": {"volumeRef": "02000000600A098000A4B9D1000037315D494C6F", "pending": False, "percentComplete": 1, "timeToCompletion": 20}, - "format": None, "volCreation": None, "volDeletion": None}, - {"volAction": "initializing", "reconstruct": None, "volExpansion": None, "volAndCapExpansion": None, - "init": {"volumeRef": "02000000600A098000A4B28D00003D2C5D494C87", "pending": False, "percentComplete": 0, "timeToCompletion": 18}, - "volCreation": None, "volDeletion": None}]}, - {"returnCode": "ok", - "longLivedOpsProgress": [ - {"volAction": "initializing", "reconstruct": None, "volExpansion": None, "volAndCapExpansion": None, - "init": {"volumeRef": "02000000600A098000A4B9D1000037315D494C6F", "pending": False, "percentComplete": 1, "timeToCompletion": 20}, - "format": None, "volCreation": None, "volDeletion": None}, - {"volAction": "complete", "reconstruct": None, "volExpansion": None, "volAndCapExpansion": None, - "init": {"volumeRef": "02000000600A098000A4B28D00003D2C5D494C87", "pending": False, "percentComplete": 0, "timeToCompletion": 18}, - "volCreation": None, "volDeletion": None}]}, - {"returnCode": "ok", - "longLivedOpsProgress": [ - {"volAction": "complete", "reconstruct": None, "volExpansion": None, "volAndCapExpansion": None, - "init": {"volumeRef": "02000000600A098000A4B9D1000037315D494C6F", "pending": False, "percentComplete": 1, "timeToCompletion": 20}, - "format": None, "volCreation": None, "volDeletion": None}, - {"volAction": "complete", "reconstruct": None, "volExpansion": None, "volAndCapExpansion": None, - "init": {"volumeRef": "02000000600A098000A4B28D00003D2C5D494C87", "pending": False, "percentComplete": 0, "timeToCompletion": 18}, - "volCreation": None, "volDeletion": None}]}] - - WORKLOAD_GET_RESPONSE = [{"id": "4200000001000000000000000000000000000000", "name": "general_workload_1", - "workloadAttributes": [{"key": "profileId", "value": "Other_1"}]}, - {"id": "4200000002000000000000000000000000000000", "name": "employee_data", - "workloadAttributes": [{"key": "use", "value": "EmployeeData"}, - {"key": "location", "value": "ICT"}, - {"key": "private", "value": "public"}, - {"key": "profileId", "value": "ansible_workload_1"}]}, - {"id": "4200000003000000000000000000000000000000", "name": "customer_database", - "workloadAttributes": [{"key": "use", "value": "customer_information"}, - {"key": "location", "value": "global"}, - {"key": "profileId", "value": "ansible_workload_2"}]}, - {"id": "4200000004000000000000000000000000000000", "name": "product_database", - "workloadAttributes": [{"key": "use", "value": "production_information"}, - {"key": "security", "value": "private"}, - {"key": "location", "value": "global"}, - {"key": "profileId", "value": "ansible_workload_4"}]}] - - REQUEST_FUNC = "ansible.modules.storage.netapp.netapp_e_volume.NetAppESeriesVolume.request" - GET_VOLUME_FUNC = "ansible.modules.storage.netapp.netapp_e_volume.NetAppESeriesVolume.get_volume" - SLEEP_FUNC = "ansible.modules.storage.netapp.netapp_e_volume.sleep" - - def _set_args(self, args=None): - module_args = self.REQUIRED_PARAMS.copy() - if args is not None: - module_args.update(args) - set_module_args(module_args) - - def test_module_arguments_pass(self): - """Ensure valid arguments successful create a class instance.""" - arg_sets = [{"state": "present", "name": "vol", "storage_pool_name": "pool", "size": 100, "size_unit": "tb", - "thin_provision": True, "thin_volume_repo_size": 64, "thin_volume_max_repo_size": 1000, - "thin_volume_growth_alert_threshold": 10}, - {"state": "present", "name": "vol", "storage_pool_name": "pool", "size": 100, "size_unit": "gb", - "thin_provision": True, "thin_volume_repo_size": 64, "thin_volume_max_repo_size": 1024, - "thin_volume_growth_alert_threshold": 99}, - {"state": "present", "name": "vol", "storage_pool_name": "pool", "size": 100, "size_unit": "gb", - "thin_provision": True, "thin_volume_repo_size": 64}, - {"state": "present", "name": "vol", "storage_pool_name": "pool", "size": 100, "size_unit": "kb", - "thin_provision": True, "thin_volume_repo_size": 64, "thin_volume_max_repo_size": 67108864}] - - # validate size normalization - for arg_set in arg_sets: - self._set_args(arg_set) - volume_object = NetAppESeriesVolume() - - self.assertEqual(volume_object.size_b, volume_object.convert_to_aligned_bytes(arg_set["size"])) - self.assertEqual(volume_object.thin_volume_repo_size_b, volume_object.convert_to_aligned_bytes(arg_set["thin_volume_repo_size"])) - self.assertEqual(volume_object.thin_volume_expansion_policy, "automatic") - if "thin_volume_max_repo_size" not in arg_set.keys(): - self.assertEqual(volume_object.thin_volume_max_repo_size_b, volume_object.convert_to_aligned_bytes(arg_set["size"])) - else: - self.assertEqual(volume_object.thin_volume_max_repo_size_b, - volume_object.convert_to_aligned_bytes(arg_set["thin_volume_max_repo_size"])) - - # validate metadata form - self._set_args( - {"state": "present", "name": "vol", "storage_pool_name": "pool", "size": 10, "workload_name": "workload1", - "metadata": {"availability": "public", "security": "low"}}) - volume_object = NetAppESeriesVolume() - for entry in volume_object.metadata: - self.assertTrue(entry in [{'value': 'low', 'key': 'security'}, {'value': 'public', 'key': 'availability'}]) - - def test_module_arguments_fail(self): - """Ensure invalid arguments values do not create a class instance.""" - arg_sets = [{"state": "present", "name": "vol", "storage_pool_name": "pool", "size": 100, "size_unit": "tb", - "thin_provision": True, "thin_volume_repo_size": 260}, - {"state": "present", "name": "vol", "storage_pool_name": "pool", "size": 10000, "size_unit": "tb", - "thin_provision": True, "thin_volume_repo_size": 64, "thin_volume_max_repo_size": 10}, - {"state": "present", "name": "vol", "storage_pool_name": "pool", "size": 10000, "size_unit": "gb", - "thin_provision": True, "thin_volume_repo_size": 64, "thin_volume_max_repo_size": 1000, - "thin_volume_growth_alert_threshold": 9}, - {"state": "present", "name": "vol", "storage_pool_name": "pool", "size": 10000, "size_unit": "gb", - "thin_provision": True, "thin_volume_repo_size": 64, "thin_volume_max_repo_size": 1000, - "thin_volume_growth_alert_threshold": 100}] - - for arg_set in arg_sets: - with self.assertRaises(AnsibleFailJson): - self._set_args(arg_set) - print(arg_set) - volume_object = NetAppESeriesVolume() - - def test_get_volume_pass(self): - """Evaluate the get_volume method.""" - with mock.patch(self.REQUEST_FUNC, - side_effect=[(200, self.VOLUME_GET_RESPONSE), (200, self.THIN_VOLUME_RESPONSE)]): - self._set_args({"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100}) - volume_object = NetAppESeriesVolume() - self.assertEqual(volume_object.get_volume(), - [entry for entry in self.VOLUME_GET_RESPONSE if entry["name"] == "Matthew"][0]) - - with mock.patch(self.REQUEST_FUNC, - side_effect=[(200, self.VOLUME_GET_RESPONSE), (200, self.THIN_VOLUME_RESPONSE)]): - self._set_args({"state": "present", "name": "NotAVolume", "storage_pool_name": "pool", "size": 100}) - volume_object = NetAppESeriesVolume() - self.assertEqual(volume_object.get_volume(), {}) - - def test_get_volume_fail(self): - """Evaluate the get_volume exception paths.""" - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to obtain list of thick volumes."): - with mock.patch(self.REQUEST_FUNC, return_value=Exception()): - self._set_args({"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100}) - volume_object = NetAppESeriesVolume() - volume_object.get_volume() - - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to obtain list of thin volumes."): - with mock.patch(self.REQUEST_FUNC, side_effect=[(200, self.VOLUME_GET_RESPONSE), Exception()]): - self._set_args({"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100}) - volume_object = NetAppESeriesVolume() - volume_object.get_volume() - - def tests_wait_for_volume_availability_pass(self): - """Ensure wait_for_volume_availability completes as expected.""" - self._set_args({"state": "present", "name": "NewVolume", "storage_pool_name": "employee_data_storage_pool", "size": 100, - "wait_for_initialization": True}) - volume_object = NetAppESeriesVolume() - with mock.patch(self.SLEEP_FUNC, return_value=None): - with mock.patch(self.GET_VOLUME_FUNC, side_effect=[False, False, True]): - volume_object.wait_for_volume_availability() - - def tests_wait_for_volume_availability_fail(self): - """Ensure wait_for_volume_availability throws the expected exceptions.""" - self._set_args({"state": "present", "name": "NewVolume", "storage_pool_name": "employee_data_storage_pool", "size": 100, - "wait_for_initialization": True}) - volume_object = NetAppESeriesVolume() - volume_object.get_volume = lambda: False - with self.assertRaisesRegexp(AnsibleFailJson, "Timed out waiting for the volume"): - with mock.patch(self.SLEEP_FUNC, return_value=None): - volume_object.wait_for_volume_availability() - - def tests_wait_for_volume_action_pass(self): - """Ensure wait_for_volume_action completes as expected.""" - self._set_args({"state": "present", "name": "NewVolume", "storage_pool_name": "employee_data_storage_pool", "size": 100, - "wait_for_initialization": True}) - volume_object = NetAppESeriesVolume() - volume_object.volume_detail = {"id": "02000000600A098000A4B9D1000037315D494C6F", - "storageVolumeRef": "02000000600A098000A4B9D1000037315DXXXXXX"} - with mock.patch(self.SLEEP_FUNC, return_value=None): - with mock.patch(self.REQUEST_FUNC, side_effect=[(200, self.GET_LONG_LIVED_OPERATION_RESPONSE[0]), - (200, self.GET_LONG_LIVED_OPERATION_RESPONSE[1]), - (200, self.GET_LONG_LIVED_OPERATION_RESPONSE[2]), - (200, self.GET_LONG_LIVED_OPERATION_RESPONSE[3])]): - volume_object.wait_for_volume_action() - - self._set_args({"state": "present", "name": "NewVolume", "storage_pool_name": "employee_data_storage_pool", "size": 100, - "wait_for_initialization": True}) - volume_object = NetAppESeriesVolume() - volume_object.volume_detail = {"id": "02000000600A098000A4B9D1000037315DXXXXXX", - "storageVolumeRef": "02000000600A098000A4B9D1000037315D494C6F"} - with mock.patch(self.SLEEP_FUNC, return_value=None): - with mock.patch(self.REQUEST_FUNC, side_effect=[(200, self.GET_LONG_LIVED_OPERATION_RESPONSE[0]), - (200, self.GET_LONG_LIVED_OPERATION_RESPONSE[1]), - (200, self.GET_LONG_LIVED_OPERATION_RESPONSE[2]), - (200, self.GET_LONG_LIVED_OPERATION_RESPONSE[3])]): - volume_object.wait_for_volume_action() - - def tests_wait_for_volume_action_fail(self): - """Ensure wait_for_volume_action throws the expected exceptions.""" - self._set_args({"state": "present", "name": "NewVolume", "storage_pool_name": "employee_data_storage_pool", "size": 100, - "wait_for_initialization": True}) - volume_object = NetAppESeriesVolume() - volume_object.volume_detail = {"id": "02000000600A098000A4B9D1000037315DXXXXXX", - "storageVolumeRef": "02000000600A098000A4B9D1000037315D494C6F"} - with mock.patch(self.SLEEP_FUNC, return_value=None): - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to get volume expansion progress."): - with mock.patch(self.REQUEST_FUNC, return_value=Exception()): - volume_object.wait_for_volume_action() - - with self.assertRaisesRegexp(AnsibleFailJson, "Expansion action failed to complete."): - with mock.patch(self.REQUEST_FUNC, return_value=(200, self.GET_LONG_LIVED_OPERATION_RESPONSE[0])): - volume_object.wait_for_volume_action(timeout=300) - - def test_get_storage_pool_pass(self): - """Evaluate the get_storage_pool method.""" - with mock.patch(self.REQUEST_FUNC, return_value=(200, self.STORAGE_POOL_GET_RESPONSE)): - self._set_args({"state": "present", "name": "NewVolume", "storage_pool_name": "employee_data_storage_pool", - "size": 100}) - volume_object = NetAppESeriesVolume() - self.assertEqual(volume_object.get_storage_pool(), [entry for entry in self.STORAGE_POOL_GET_RESPONSE if - entry["name"] == "employee_data_storage_pool"][0]) - - self._set_args( - {"state": "present", "name": "NewVolume", "storage_pool_name": "NotAStoragePool", "size": 100}) - volume_object = NetAppESeriesVolume() - self.assertEqual(volume_object.get_storage_pool(), {}) - - def test_get_storage_pool_fail(self): - """Evaluate the get_storage_pool exception paths.""" - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to obtain list of storage pools."): - with mock.patch(self.REQUEST_FUNC, return_value=Exception()): - self._set_args({"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100}) - volume_object = NetAppESeriesVolume() - volume_object.get_storage_pool() - - def test_check_storage_pool_sufficiency_pass(self): - """Ensure passing logic.""" - self._set_args({"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100}) - volume_object = NetAppESeriesVolume() - volume_object.pool_detail = [entry for entry in self.STORAGE_POOL_GET_RESPONSE - if entry["name"] == "employee_data_storage_pool"][0] - volume_object.check_storage_pool_sufficiency() - - def test_check_storage_pool_sufficiency_fail(self): - """Validate exceptions are thrown for insufficient storage pool resources.""" - self._set_args({"state": "present", "name": "vol", "storage_pool_name": "pool", "size": 100, "size_unit": "tb", - "thin_provision": True, "thin_volume_repo_size": 64, "thin_volume_max_repo_size": 1000, - "thin_volume_growth_alert_threshold": 10}) - volume_object = NetAppESeriesVolume() - - with self.assertRaisesRegexp(AnsibleFailJson, "Requested storage pool"): - volume_object.check_storage_pool_sufficiency() - - with self.assertRaisesRegexp(AnsibleFailJson, - "Thin provisioned volumes can only be created on raid disk pools."): - volume_object.pool_detail = [entry for entry in self.STORAGE_POOL_GET_RESPONSE - if entry["name"] == "database_storage_pool"][0] - volume_object.volume_detail = {} - volume_object.check_storage_pool_sufficiency() - - with self.assertRaisesRegexp(AnsibleFailJson, "requires the storage pool to be DA-compatible."): - volume_object.pool_detail = {"diskPool": True, - "protectionInformationCapabilities": {"protectionType": "type0Protection", - "protectionInformationCapable": False}} - volume_object.volume_detail = {} - volume_object.data_assurance_enabled = True - volume_object.check_storage_pool_sufficiency() - - volume_object.pool_detail = {"diskPool": True, - "protectionInformationCapabilities": {"protectionType": "type2Protection", - "protectionInformationCapable": True}} - volume_object.check_storage_pool_sufficiency() - - self._set_args({"state": "present", "name": "vol", "storage_pool_name": "pool", "size": 100, "size_unit": "tb", - "thin_provision": False}) - volume_object = NetAppESeriesVolume() - with self.assertRaisesRegexp(AnsibleFailJson, - "Not enough storage pool free space available for the volume's needs."): - volume_object.pool_detail = {"freeSpace": 10, "diskPool": True, - "protectionInformationCapabilities": {"protectionType": "type2Protection", - "protectionInformationCapable": True}} - volume_object.volume_detail = {"totalSizeInBytes": 100} - volume_object.data_assurance_enabled = True - volume_object.size_b = 1 - volume_object.check_storage_pool_sufficiency() - - def test_update_workload_tags_pass(self): - """Validate updating workload tags.""" - test_sets = [[{"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100}, False], - [{"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, - "workload_name": "employee_data"}, False], - [{"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, - "workload_name": "customer_database", - "metadata": {"use": "customer_information", "location": "global"}}, False], - [{"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, - "workload_name": "customer_database", - "metadata": {"use": "customer_information"}}, True], - [{"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, - "workload_name": "customer_database", - "metadata": {"use": "customer_information", "location": "local"}}, True], - [{"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, - "workload_name": "customer_database", - "metadata": {"use": "customer_information", "location": "global", "importance": "no"}}, True], - [{"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, - "workload_name": "newWorkload", - "metadata": {"for_testing": "yes"}}, True], - [{"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, - "workload_name": "newWorkload"}, True]] - - for test in test_sets: - self._set_args(test[0]) - volume_object = NetAppESeriesVolume() - - with mock.patch(self.REQUEST_FUNC, side_effect=[(200, self.WORKLOAD_GET_RESPONSE), (200, {"id": 1})]): - self.assertEqual(volume_object.update_workload_tags(), test[1]) - - def test_update_workload_tags_fail(self): - """Validate updating workload tags fails appropriately.""" - self._set_args({"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, - "workload_name": "employee_data"}) - volume_object = NetAppESeriesVolume() - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve storage array workload tags."): - with mock.patch(self.REQUEST_FUNC, return_value=Exception()): - volume_object.update_workload_tags() - - self._set_args({"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, - "workload_name": "employee_data", "metadata": {"key": "not-use", "value": "EmployeeData"}}) - volume_object = NetAppESeriesVolume() - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to create new workload tag."): - with mock.patch(self.REQUEST_FUNC, side_effect=[(200, self.WORKLOAD_GET_RESPONSE), Exception()]): - volume_object.update_workload_tags() - - self._set_args({"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, - "workload_name": "employee_data2", "metadata": {"key": "use", "value": "EmployeeData"}}) - volume_object = NetAppESeriesVolume() - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to create new workload tag."): - with mock.patch(self.REQUEST_FUNC, side_effect=[(200, self.WORKLOAD_GET_RESPONSE), Exception()]): - volume_object.update_workload_tags() - - def test_get_volume_property_changes_pass(self): - """Verify correct dictionary is returned""" - - # no property changes - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "ssd_cache_enabled": True, - "read_cache_enable": True, "write_cache_enable": True, - "read_ahead_enable": True, "thin_provision": False}) - volume_object = NetAppESeriesVolume() - volume_object.volume_detail = {"metadata": [], - "cacheSettings": {"cwob": False, "readCacheEnable": True, "writeCacheEnable": True, - "readAheadMultiplier": 1}, "flashCached": True, - "segmentSize": str(128 * 1024)} - self.assertEqual(volume_object.get_volume_property_changes(), dict()) - - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "ssd_cache_enabled": True, - "read_cache_enable": True, "write_cache_enable": True, - "read_ahead_enable": True, "thin_provision": True, "thin_volume_repo_size": 64, - "thin_volume_max_repo_size": 1000, "thin_volume_growth_alert_threshold": 90}) - volume_object = NetAppESeriesVolume() - volume_object.volume_detail = {"metadata": [], - "cacheSettings": {"cwob": False, "readCacheEnable": True, "writeCacheEnable": True, - "readAheadMultiplier": 1}, - "flashCached": True, "growthAlertThreshold": "90", - "expansionPolicy": "automatic", "segmentSize": str(128 * 1024)} - self.assertEqual(volume_object.get_volume_property_changes(), dict()) - - # property changes - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "ssd_cache_enabled": True, - "read_cache_enable": True, "write_cache_enable": True, - "read_ahead_enable": True, "thin_provision": False}) - volume_object = NetAppESeriesVolume() - volume_object.volume_detail = {"metadata": [], - "cacheSettings": {"cwob": False, "readCacheEnable": False, "writeCacheEnable": True, - "readAheadMultiplier": 1}, "flashCached": True, - "segmentSize": str(128 * 1024)} - self.assertEqual(volume_object.get_volume_property_changes(), - {"metaTags": [], 'cacheSettings': {'readCacheEnable': True, 'writeCacheEnable': True}, - 'flashCache': True}) - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "ssd_cache_enabled": True, - "read_cache_enable": True, "write_cache_enable": True, "cache_without_batteries": False, - "read_ahead_enable": True, "thin_provision": False}) - volume_object = NetAppESeriesVolume() - volume_object.volume_detail = {"metadata": [], - "cacheSettings": {"cwob": False, "readCacheEnable": True, "writeCacheEnable": False, - "readAheadMultiplier": 1}, "flashCached": True, - "segmentSize": str(128 * 1024)} - self.assertEqual(volume_object.get_volume_property_changes(), - {"metaTags": [], 'cacheSettings': {'readCacheEnable': True, 'writeCacheEnable': True}, - 'flashCache': True}) - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "ssd_cache_enabled": True, - "read_cache_enable": True, "write_cache_enable": True, "cache_without_batteries": True, - "read_ahead_enable": True, "thin_provision": False}) - volume_object = NetAppESeriesVolume() - volume_object.volume_detail = {"metadata": [], - "cacheSettings": {"cwob": False, "readCacheEnable": True, "writeCacheEnable": True, - "readAheadMultiplier": 1}, "flashCached": False, - "segmentSize": str(128 * 1024)} - self.assertEqual(volume_object.get_volume_property_changes(), - {"metaTags": [], 'cacheSettings': {'readCacheEnable': True, 'writeCacheEnable': True, "cacheWithoutBatteries": True}, - 'flashCache': True}) - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "ssd_cache_enabled": True, - "read_cache_enable": True, "write_cache_enable": True, "cache_without_batteries": True, - "read_ahead_enable": False, "thin_provision": False}) - volume_object = NetAppESeriesVolume() - volume_object.volume_detail = {"metadata": [], - "cacheSettings": {"cwob": False, "readCacheEnable": True, "writeCacheEnable": True, - "readAheadMultiplier": 1}, "flashCached": False, - "segmentSize": str(128 * 1024)} - self.assertEqual(volume_object.get_volume_property_changes(), {"metaTags": [], - 'cacheSettings': {'readCacheEnable': True, - 'writeCacheEnable': True, - 'readAheadEnable': False, - "cacheWithoutBatteries": True}, - 'flashCache': True}) - - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "ssd_cache_enabled": True, - "read_cache_enable": True, "write_cache_enable": True, - "read_ahead_enable": True, "thin_provision": True, "thin_volume_repo_size": 64, - "thin_volume_max_repo_size": 1000, "thin_volume_growth_alert_threshold": 90}) - volume_object = NetAppESeriesVolume() - volume_object.volume_detail = {"metadata": [], - "cacheSettings": {"cwob": True, "readCacheEnable": True, "writeCacheEnable": True, - "readAheadMultiplier": 1}, - "flashCached": True, "growthAlertThreshold": "95", - "expansionPolicy": "automatic", "segmentSize": str(128 * 1024)} - self.assertEqual(volume_object.get_volume_property_changes(), - {"metaTags": [], 'cacheSettings': {'readCacheEnable': True, 'writeCacheEnable': True}, - 'growthAlertThreshold': 90, 'flashCache': True}) - - def test_get_volume_property_changes_fail(self): - """Verify correct exception is thrown""" - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "ssd_cache_enabled": True, - "read_cache_enable": True, "write_cache_enable": True, "read_ahead_enable": True, "thin_provision": False}) - volume_object = NetAppESeriesVolume() - volume_object.volume_detail = { - "cacheSettings": {"cwob": False, "readCacheEnable": True, "writeCacheEnable": True, "readAheadMultiplier": 1}, - "flashCached": True, "segmentSize": str(512 * 1024)} - with self.assertRaisesRegexp(AnsibleFailJson, "Existing volume segment size is"): - volume_object.get_volume_property_changes() - - def test_get_expand_volume_changes_pass(self): - """Verify expansion changes.""" - # thick volumes - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": False}) - volume_object = NetAppESeriesVolume() - volume_object.volume_detail = {"capacity": str(50 * 1024 * 1024 * 1024), "thinProvisioned": False} - self.assertEqual(volume_object.get_expand_volume_changes(), - {"sizeUnit": "bytes", "expansionSize": 100 * 1024 * 1024 * 1024}) - - # thin volumes - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True, - "thin_volume_expansion_policy": "automatic", "thin_volume_repo_size": 64, - "thin_volume_max_repo_size": 1000, "thin_volume_growth_alert_threshold": 90}) - volume_object = NetAppESeriesVolume() - volume_object.volume_detail = {"capacity": str(50 * 1024 * 1024 * 1024), "thinProvisioned": True, - "expansionPolicy": "automatic", - "provisionedCapacityQuota": str(1000 * 1024 * 1024 * 1024)} - self.assertEqual(volume_object.get_expand_volume_changes(), - {"sizeUnit": "bytes", "newVirtualSize": 100 * 1024 * 1024 * 1024}) - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True, - "thin_volume_expansion_policy": "automatic", "thin_volume_repo_size": 64, - "thin_volume_max_repo_size": 1000, "thin_volume_growth_alert_threshold": 90}) - volume_object = NetAppESeriesVolume() - volume_object.volume_detail = {"capacity": str(100 * 1024 * 1024 * 1024), "thinProvisioned": True, - "expansionPolicy": "automatic", - "provisionedCapacityQuota": str(500 * 1024 * 1024 * 1024)} - self.assertEqual(volume_object.get_expand_volume_changes(), - {"sizeUnit": "bytes", "newRepositorySize": 1000 * 1024 * 1024 * 1024}) - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True, - "thin_volume_expansion_policy": "manual", "thin_volume_repo_size": 504, "thin_volume_max_repo_size": 1000, - "thin_volume_growth_alert_threshold": 90}) - volume_object = NetAppESeriesVolume() - volume_object.volume_detail = {"capacity": str(100 * 1024 * 1024 * 1024), "thinProvisioned": True, - "expansionPolicy": "manual", - "currentProvisionedCapacity": str(500 * 1024 * 1024 * 1024)} - self.assertEqual(volume_object.get_expand_volume_changes(), - {"sizeUnit": "bytes", "newRepositorySize": 504 * 1024 * 1024 * 1024}) - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True, - "thin_volume_expansion_policy": "manual", "thin_volume_repo_size": 756, "thin_volume_max_repo_size": 1000, - "thin_volume_growth_alert_threshold": 90}) - volume_object = NetAppESeriesVolume() - volume_object.volume_detail = {"capacity": str(100 * 1024 * 1024 * 1024), "thinProvisioned": True, - "expansionPolicy": "manual", - "currentProvisionedCapacity": str(500 * 1024 * 1024 * 1024)} - self.assertEqual(volume_object.get_expand_volume_changes(), - {"sizeUnit": "bytes", "newRepositorySize": 756 * 1024 * 1024 * 1024}) - - def test_get_expand_volume_changes_fail(self): - """Verify exceptions are thrown.""" - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": False}) - volume_object = NetAppESeriesVolume() - volume_object.volume_detail = {"capacity": str(1000 * 1024 * 1024 * 1024)} - with self.assertRaisesRegexp(AnsibleFailJson, "Reducing the size of volumes is not permitted."): - volume_object.get_expand_volume_changes() - - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True, - "thin_volume_expansion_policy": "manual", "thin_volume_repo_size": 502, "thin_volume_max_repo_size": 1000, - "thin_volume_growth_alert_threshold": 90}) - volume_object = NetAppESeriesVolume() - volume_object.volume_detail = {"capacity": str(100 * 1024 * 1024 * 1024), "thinProvisioned": True, - "expansionPolicy": "manual", - "currentProvisionedCapacity": str(500 * 1024 * 1024 * 1024)} - with self.assertRaisesRegexp(AnsibleFailJson, "The thin volume repository increase must be between or equal"): - volume_object.get_expand_volume_changes() - - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True, - "thin_volume_expansion_policy": "manual", "thin_volume_repo_size": 760, "thin_volume_max_repo_size": 1000, - "thin_volume_growth_alert_threshold": 90}) - volume_object = NetAppESeriesVolume() - volume_object.volume_detail = {"capacity": str(100 * 1024 * 1024 * 1024), "thinProvisioned": True, - "expansionPolicy": "manual", - "currentProvisionedCapacity": str(500 * 1024 * 1024 * 1024)} - with self.assertRaisesRegexp(AnsibleFailJson, "The thin volume repository increase must be between or equal"): - volume_object.get_expand_volume_changes() - - def test_create_volume_pass(self): - """Verify volume creation.""" - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": False}) - volume_object = NetAppESeriesVolume() - volume_object.pool_detail = {"id": "12345"} - with mock.patch(self.REQUEST_FUNC, return_value=(200, {})): - volume_object.create_volume() - - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True, - "thin_volume_expansion_policy": "manual", "thin_volume_repo_size": 760, "thin_volume_max_repo_size": 1000, - "thin_volume_growth_alert_threshold": 90}) - volume_object = NetAppESeriesVolume() - volume_object.pool_detail = {"id": "12345"} - with mock.patch(self.REQUEST_FUNC, return_value=(200, {})): - volume_object.create_volume() - - def test_create_volume_fail(self): - """Verify exceptions thrown.""" - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": False}) - volume_object = NetAppESeriesVolume() - volume_object.pool_detail = {"id": "12345"} - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to create volume."): - with mock.patch(self.REQUEST_FUNC, return_value=Exception()): - volume_object.create_volume() - - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True, - "thin_volume_expansion_policy": "manual", "thin_volume_repo_size": 760, "thin_volume_max_repo_size": 1000, - "thin_volume_growth_alert_threshold": 90}) - volume_object = NetAppESeriesVolume() - volume_object.pool_detail = {"id": "12345"} - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to create thin volume."): - with mock.patch(self.REQUEST_FUNC, return_value=Exception()): - volume_object.create_volume() - - def test_update_volume_properties_pass(self): - """verify property update.""" - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": False}) - volume_object = NetAppESeriesVolume() - volume_object.pool_detail = {"id": "12345"} - volume_object.wait_for_volume_availability = lambda: None - volume_object.get_volume = lambda: {"id": "12345'"} - volume_object.get_volume_property_changes = lambda: { - 'cacheSettings': {'readCacheEnable': True, 'writeCacheEnable': True}, 'growthAlertThreshold': 90, - 'flashCached': True} - volume_object.workload_id = "4200000001000000000000000000000000000000" - with mock.patch(self.REQUEST_FUNC, return_value=(200, {})): - self.assertTrue(volume_object.update_volume_properties()) - - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True, - "thin_volume_expansion_policy": "manual", "thin_volume_repo_size": 760, "thin_volume_max_repo_size": 1000, - "thin_volume_growth_alert_threshold": 90}) - volume_object = NetAppESeriesVolume() - volume_object.pool_detail = {"id": "12345"} - volume_object.wait_for_volume_availability = lambda: None - volume_object.get_volume = lambda: {"id": "12345'"} - volume_object.get_volume_property_changes = lambda: { - 'cacheSettings': {'readCacheEnable': True, 'writeCacheEnable': True}, 'growthAlertThreshold': 90, - 'flashCached': True} - volume_object.workload_id = "4200000001000000000000000000000000000000" - with mock.patch(self.REQUEST_FUNC, return_value=(200, {})): - self.assertTrue(volume_object.update_volume_properties()) - - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": False}) - volume_object = NetAppESeriesVolume() - volume_object.pool_detail = {"metadata": [{"key": "workloadId", "value": "12345"}]} - volume_object.wait_for_volume_availability = lambda: None - volume_object.get_volume = lambda: {"id": "12345'"} - volume_object.get_volume_property_changes = lambda: {} - volume_object.workload_id = "4200000001000000000000000000000000000000" - self.assertFalse(volume_object.update_volume_properties()) - - def test_update_volume_properties_fail(self): - """Verify exceptions are thrown.""" - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": False}) - volume_object = NetAppESeriesVolume() - volume_object.pool_detail = {"id": "12345"} - volume_object.wait_for_volume_availability = lambda: None - volume_object.get_volume = lambda: {"id": "12345'"} - volume_object.get_volume_property_changes = lambda: { - 'cacheSettings': {'readCacheEnable': True, 'writeCacheEnable': True}, 'growthAlertThreshold': 90, - 'flashCached': True} - volume_object.workload_id = "4200000001000000000000000000000000000000" - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to update volume properties."): - with mock.patch(self.REQUEST_FUNC, return_value=Exception()): - self.assertTrue(volume_object.update_volume_properties()) - - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True, - "thin_volume_expansion_policy": "manual", "thin_volume_repo_size": 760, "thin_volume_max_repo_size": 1000, - "thin_volume_growth_alert_threshold": 90}) - volume_object = NetAppESeriesVolume() - volume_object.pool_detail = {"id": "12345"} - volume_object.wait_for_volume_availability = lambda: None - volume_object.get_volume = lambda: {"id": "12345'"} - volume_object.get_volume_property_changes = lambda: { - 'cacheSettings': {'readCacheEnable': True, 'writeCacheEnable': True}, 'growthAlertThreshold': 90, - 'flashCached': True} - volume_object.workload_id = "4200000001000000000000000000000000000000" - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to update thin volume properties."): - with mock.patch(self.REQUEST_FUNC, return_value=Exception()): - self.assertTrue(volume_object.update_volume_properties()) - - def test_expand_volume_pass(self): - """Verify volume expansion.""" - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": False}) - volume_object = NetAppESeriesVolume() - volume_object.get_expand_volume_changes = lambda: {"sizeUnit": "bytes", - "expansionSize": 100 * 1024 * 1024 * 1024} - volume_object.volume_detail = {"id": "12345", "thinProvisioned": True} - with mock.patch(self.REQUEST_FUNC, return_value=(200, {})): - volume_object.expand_volume() - - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True, - "thin_volume_expansion_policy": "manual", "thin_volume_repo_size": 760, "thin_volume_max_repo_size": 1000, - "thin_volume_growth_alert_threshold": 90}) - volume_object = NetAppESeriesVolume() - volume_object.get_expand_volume_changes = lambda: {"sizeUnit": "bytes", - "expansionSize": 100 * 1024 * 1024 * 1024} - volume_object.volume_detail = {"id": "12345", "thinProvisioned": True} - with mock.patch(self.REQUEST_FUNC, return_value=(200, {})): - volume_object.expand_volume() - - def test_expand_volume_fail(self): - """Verify exceptions are thrown.""" - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": False}) - volume_object = NetAppESeriesVolume() - volume_object.get_expand_volume_changes = lambda: {"sizeUnit": "bytes", - "expansionSize": 100 * 1024 * 1024 * 1024} - volume_object.volume_detail = {"id": "12345", "thinProvisioned": False} - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to expand volume."): - with mock.patch(self.REQUEST_FUNC, return_value=Exception()): - volume_object.expand_volume() - - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True}) - volume_object = NetAppESeriesVolume() - volume_object.get_expand_volume_changes = lambda: {"sizeUnit": "bytes", - "expansionSize": 100 * 1024 * 1024 * 1024} - volume_object.volume_detail = {"id": "12345", "thinProvisioned": True} - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to expand thin volume."): - with mock.patch(self.REQUEST_FUNC, return_value=Exception()): - volume_object.expand_volume() - - def test_delete_volume_pass(self): - """Verify volume deletion.""" - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": False}) - volume_object = NetAppESeriesVolume() - volume_object.volume_detail = {"id": "12345"} - with mock.patch(self.REQUEST_FUNC, return_value=(200, {})): - volume_object.delete_volume() - - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True, - "thin_volume_expansion_policy": "manual", "thin_volume_repo_size": 760, "thin_volume_max_repo_size": 1000, - "thin_volume_growth_alert_threshold": 90}) - volume_object = NetAppESeriesVolume() - volume_object.volume_detail = {"id": "12345"} - with mock.patch(self.REQUEST_FUNC, return_value=(200, {})): - volume_object.delete_volume() - - def test_delete_volume_fail(self): - """Verify exceptions are thrown.""" - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": False}) - volume_object = NetAppESeriesVolume() - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to delete volume."): - with mock.patch(self.REQUEST_FUNC, return_value=Exception()): - volume_object.delete_volume() - - self._set_args( - {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True}) - volume_object = NetAppESeriesVolume() - with self.assertRaisesRegexp(AnsibleFailJson, "Failed to delete thin volume."): - with mock.patch(self.REQUEST_FUNC, return_value=Exception()): - volume_object.delete_volume() diff --git a/test/units/modules/system/test_java_keystore.py b/test/units/modules/system/test_java_keystore.py deleted file mode 100644 index 434be518e3..0000000000 --- a/test/units/modules/system/test_java_keystore.py +++ /dev/null @@ -1,264 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2018, Ansible Project -# Copyright (c) 2018, Abhijeet Kasurde <akasurde@redhat.com> -# -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -import os - -from units.modules.utils import ModuleTestCase, set_module_args -from units.compat.mock import patch -from units.compat.mock import Mock -from ansible.module_utils.basic import AnsibleModule -from ansible.modules.system.java_keystore import create_jks, cert_changed, ArgumentSpec - - -class TestCreateJavaKeystore(ModuleTestCase): - """Test the creation of a Java keystore.""" - - def setUp(self): - """Setup.""" - super(TestCreateJavaKeystore, self).setUp() - - orig_exists = os.path.exists - self.spec = ArgumentSpec() - self.mock_create_file = patch('ansible.modules.system.java_keystore.create_file', - side_effect=lambda path, content: path) - self.mock_run_commands = patch('ansible.modules.system.java_keystore.run_commands') - self.mock_os_path_exists = patch('os.path.exists', - side_effect=lambda path: True if path == '/path/to/keystore.jks' else orig_exists(path)) - self.mock_selinux_context = patch('ansible.module_utils.basic.AnsibleModule.selinux_context', - side_effect=lambda path: ['unconfined_u', 'object_r', 'user_home_t', 's0']) - self.mock_is_special_selinux_path = patch('ansible.module_utils.basic.AnsibleModule.is_special_selinux_path', - side_effect=lambda path: (False, None)) - self.run_commands = self.mock_run_commands.start() - self.create_file = self.mock_create_file.start() - self.selinux_context = self.mock_selinux_context.start() - self.is_special_selinux_path = self.mock_is_special_selinux_path.start() - self.os_path_exists = self.mock_os_path_exists.start() - - def tearDown(self): - """Teardown.""" - super(TestCreateJavaKeystore, self).tearDown() - self.mock_create_file.stop() - self.mock_run_commands.stop() - self.mock_selinux_context.stop() - self.mock_is_special_selinux_path.stop() - self.mock_os_path_exists.stop() - - def test_create_jks_success(self): - set_module_args(dict( - certificate='cert-foo', - private_key='private-foo', - dest='/path/to/keystore.jks', - name='foo', - password='changeit' - )) - - module = AnsibleModule( - argument_spec=self.spec.argument_spec, - supports_check_mode=self.spec.supports_check_mode - ) - - module.exit_json = Mock() - - with patch('os.remove', return_value=True): - self.run_commands.side_effect = lambda args, kwargs: (0, '', '') - create_jks(module, "test", "openssl", "keytool", "/path/to/keystore.jks", "changeit") - module.exit_json.assert_called_once_with( - changed=True, - cmd="keytool -importkeystore " - "-destkeystore '/path/to/keystore.jks' " - "-srckeystore '/tmp/keystore.p12' -srcstoretype pkcs12 -alias 'test' " - "-deststorepass 'changeit' -srcstorepass 'changeit' -noprompt", - msg='', - rc=0, - stdout_lines='' - ) - - def test_create_jks_fail_export_pkcs12(self): - set_module_args(dict( - certificate='cert-foo', - private_key='private-foo', - dest='/path/to/keystore.jks', - name='foo', - password='changeit' - )) - - module = AnsibleModule( - argument_spec=self.spec.argument_spec, - supports_check_mode=self.spec.supports_check_mode - ) - - module.fail_json = Mock() - - with patch('os.remove', return_value=True): - self.run_commands.side_effect = [(1, '', ''), (0, '', '')] - create_jks(module, "test", "openssl", "keytool", "/path/to/keystore.jks", "changeit") - module.fail_json.assert_called_once_with( - cmd="openssl pkcs12 -export -name 'test' " - "-in '/tmp/foo.crt' -inkey '/tmp/foo.key' " - "-out '/tmp/keystore.p12' " - "-passout 'pass:changeit'", - msg='', - rc=1 - ) - - def test_create_jks_fail_import_key(self): - set_module_args(dict( - certificate='cert-foo', - private_key='private-foo', - dest='/path/to/keystore.jks', - name='foo', - password='changeit' - )) - - module = AnsibleModule( - argument_spec=self.spec.argument_spec, - supports_check_mode=self.spec.supports_check_mode - ) - - module.fail_json = Mock() - - with patch('os.remove', return_value=True): - self.run_commands.side_effect = [(0, '', ''), (1, '', '')] - create_jks(module, "test", "openssl", "keytool", "/path/to/keystore.jks", "changeit") - module.fail_json.assert_called_once_with( - cmd="keytool -importkeystore " - "-destkeystore '/path/to/keystore.jks' " - "-srckeystore '/tmp/keystore.p12' -srcstoretype pkcs12 -alias 'test' " - "-deststorepass 'changeit' -srcstorepass 'changeit' -noprompt", - msg='', - rc=1 - ) - - -class TestCertChanged(ModuleTestCase): - """Test if the cert has changed.""" - - def setUp(self): - """Setup.""" - super(TestCertChanged, self).setUp() - self.spec = ArgumentSpec() - self.mock_create_file = patch('ansible.modules.system.java_keystore.create_file', - side_effect=lambda path, content: path) - self.mock_run_commands = patch('ansible.modules.system.java_keystore.run_commands') - self.run_commands = self.mock_run_commands.start() - self.create_file = self.mock_create_file.start() - - def tearDown(self): - """Teardown.""" - super(TestCertChanged, self).tearDown() - self.mock_create_file.stop() - self.mock_run_commands.stop() - - def test_cert_unchanged_same_fingerprint(self): - set_module_args(dict( - certificate='cert-foo', - private_key='private-foo', - dest='/path/to/keystore.jks', - name='foo', - password='changeit' - )) - - module = AnsibleModule( - argument_spec=self.spec.argument_spec, - supports_check_mode=self.spec.supports_check_mode - ) - - with patch('os.remove', return_value=True): - self.run_commands.side_effect = [(0, 'foo=abcd:1234:efgh', ''), (0, 'SHA256: abcd:1234:efgh', '')] - result = cert_changed(module, "openssl", "keytool", "/path/to/keystore.jks", "changeit", 'foo') - self.assertFalse(result, 'Fingerprint is identical') - - def test_cert_changed_fingerprint_mismatch(self): - set_module_args(dict( - certificate='cert-foo', - private_key='private-foo', - dest='/path/to/keystore.jks', - name='foo', - password='changeit' - )) - - module = AnsibleModule( - argument_spec=self.spec.argument_spec, - supports_check_mode=self.spec.supports_check_mode - ) - - with patch('os.remove', return_value=True): - self.run_commands.side_effect = [(0, 'foo=abcd:1234:efgh', ''), (0, 'SHA256: wxyz:9876:stuv', '')] - result = cert_changed(module, "openssl", "keytool", "/path/to/keystore.jks", "changeit", 'foo') - self.assertTrue(result, 'Fingerprint mismatch') - - def test_cert_changed_alias_does_not_exist(self): - set_module_args(dict( - certificate='cert-foo', - private_key='private-foo', - dest='/path/to/keystore.jks', - name='foo', - password='changeit' - )) - - module = AnsibleModule( - argument_spec=self.spec.argument_spec, - supports_check_mode=self.spec.supports_check_mode - ) - - with patch('os.remove', return_value=True): - self.run_commands.side_effect = [(0, 'foo=abcd:1234:efgh', ''), - (1, 'keytool error: java.lang.Exception: Alias <foo> does not exist', '')] - result = cert_changed(module, "openssl", "keytool", "/path/to/keystore.jks", "changeit", 'foo') - self.assertTrue(result, 'Certificate does not exist') - - def test_cert_changed_fail_read_cert(self): - set_module_args(dict( - certificate='cert-foo', - private_key='private-foo', - dest='/path/to/keystore.jks', - name='foo', - password='changeit' - )) - - module = AnsibleModule( - argument_spec=self.spec.argument_spec, - supports_check_mode=self.spec.supports_check_mode - ) - - module.fail_json = Mock() - - with patch('os.remove', return_value=True): - self.run_commands.side_effect = [(1, '', 'Oops'), (0, 'SHA256: wxyz:9876:stuv', '')] - cert_changed(module, "openssl", "keytool", "/path/to/keystore.jks", "changeit", 'foo') - module.fail_json.assert_called_once_with( - cmd="openssl x509 -noout -in /tmp/foo.crt -fingerprint -sha256", - msg='', - err='Oops', - rc=1 - ) - - def test_cert_changed_fail_read_keystore(self): - set_module_args(dict( - certificate='cert-foo', - private_key='private-foo', - dest='/path/to/keystore.jks', - name='foo', - password='changeit' - )) - - module = AnsibleModule( - argument_spec=self.spec.argument_spec, - supports_check_mode=self.spec.supports_check_mode - ) - - module.fail_json = Mock(return_value=True) - - with patch('os.remove', return_value=True): - self.run_commands.side_effect = [(0, 'foo: wxyz:9876:stuv', ''), (1, '', 'Oops')] - cert_changed(module, "openssl", "keytool", "/path/to/keystore.jks", "changeit", 'foo') - module.fail_json.assert_called_with( - cmd="keytool -list -alias 'foo' -keystore '/path/to/keystore.jks' -storepass 'changeit' -v", - msg='', - err='Oops', - rc=1 - ) diff --git a/test/units/modules/system/test_pamd.py b/test/units/modules/system/test_pamd.py deleted file mode 100644 index 93c1d08ad4..0000000000 --- a/test/units/modules/system/test_pamd.py +++ /dev/null @@ -1,372 +0,0 @@ -from __future__ import (absolute_import, division, print_function) -from units.compat import unittest - -from ansible.modules.system.pamd import PamdRule -from ansible.modules.system.pamd import PamdLine -from ansible.modules.system.pamd import PamdComment -from ansible.modules.system.pamd import PamdInclude -from ansible.modules.system.pamd import PamdService - - -class PamdLineTestCase(unittest.TestCase): - - def setUp(self): - self.pamd_line = PamdLine("This is a test") - - def test_line(self): - self.assertEqual("This is a test", str(self.pamd_line)) - - def test_matches(self): - self.assertFalse(self.pamd_line.matches("test", "matches", "foo", "bar")) - - -class PamdIncludeTestCase(unittest.TestCase): - - def setUp(self): - self.good_include = PamdInclude("@include foobar") - self.bad_include = PamdInclude("include foobar") - - def test_line(self): - self.assertEqual("@include foobar", str(self.good_include)) - - def test_matches(self): - self.assertFalse(self.good_include.matches("something", "something", "dark", "side")) - - def test_valid(self): - self.assertTrue(self.good_include.is_valid) - self.assertFalse(self.bad_include.is_valid) - - -class PamdCommentTestCase(unittest.TestCase): - - def setUp(self): - self.good_comment = PamdComment("# This is a test comment") - self.bad_comment = PamdComment("This is a bad test comment") - - def test_line(self): - self.assertEqual("# This is a test comment", str(self.good_comment)) - - def test_matches(self): - self.assertFalse(self.good_comment.matches("test", "matches", "foo", "bar")) - - def test_valid(self): - self.assertTrue(self.good_comment.is_valid) - self.assertFalse(self.bad_comment.is_valid) - - -class PamdRuleTestCase(unittest.TestCase): - def setUp(self): - self.rule = PamdRule('account', 'optional', 'pam_keyinit.so', 'revoke') - - def test_type(self): - self.assertEqual(self.rule.rule_type, 'account') - - def test_control(self): - self.assertEqual(self.rule.rule_control, 'optional') - self.assertEqual(self.rule._control, 'optional') - - def test_path(self): - self.assertEqual(self.rule.rule_path, 'pam_keyinit.so') - - def test_args(self): - self.assertEqual(self.rule.rule_args, ['revoke']) - - def test_valid(self): - self.assertTrue(self.rule.validate()[0]) - - -class PamdRuleBadValidationTestCase(unittest.TestCase): - def setUp(self): - self.bad_type = PamdRule('foobar', 'optional', 'pam_keyinit.so', 'revoke') - self.bad_control_simple = PamdRule('account', 'foobar', 'pam_keyinit.so', 'revoke') - self.bad_control_value = PamdRule('account', '[foobar=1 default=ignore]', 'pam_keyinit.so', 'revoke') - self.bad_control_action = PamdRule('account', '[success=1 default=foobar]', 'pam_keyinit.so', 'revoke') - - def test_validate_bad_type(self): - self.assertFalse(self.bad_type.validate()[0]) - - def test_validate_bad_control_simple(self): - self.assertFalse(self.bad_control_simple.validate()[0]) - - def test_validate_bad_control_value(self): - self.assertFalse(self.bad_control_value.validate()[0]) - - def test_validate_bad_control_action(self): - self.assertFalse(self.bad_control_action.validate()[0]) - - -class PamdServiceTestCase(unittest.TestCase): - def setUp(self): - self.system_auth_string = """#%PAM-1.0 -# This file is auto-generated. -# User changes will be destroyed the next time authconfig is run. -@include common-auth -@include common-account -@include common-session -auth required pam_env.so -auth sufficient pam_unix.so nullok try_first_pass -auth requisite pam_succeed_if.so uid -auth required pam_deny.so -# Test comment -auth sufficient pam_rootok.so - -account required pam_unix.so -account sufficient pam_localuser.so -account sufficient pam_succeed_if.so uid -account [success=1 default=ignore] \ - pam_succeed_if.so user = vagrant use_uid quiet -account required pam_permit.so -account required pam_access.so listsep=, -session include system-auth - -password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= -password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok -password required pam_deny.so - -session optional pam_keyinit.so revoke -session required pam_limits.so --session optional pam_systemd.so -session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid -session [success=1 test=me default=ignore] pam_succeed_if.so service in crond quiet use_uid -session required pam_unix.so""" - - self.simple_system_auth_string = """#%PAM-1.0 - auth required pam_env.so -""" - - self.no_header_system_auth_string = """auth required pam_env.so -auth sufficient pam_unix.so nullok try_first_pass -auth requisite pam_succeed_if.so uid -auth required pam_deny.so -""" - - self.pamd = PamdService(self.system_auth_string) - - def test_properly_parsed(self): - num_lines = len(self.system_auth_string.splitlines()) + 1 - num_lines_processed = len(str(self.pamd).splitlines()) - self.assertEqual(num_lines, num_lines_processed) - - def test_has_rule(self): - self.assertTrue(self.pamd.has_rule('account', 'required', 'pam_permit.so')) - self.assertTrue(self.pamd.has_rule('account', '[success=1 default=ignore]', 'pam_succeed_if.so')) - - def test_doesnt_have_rule(self): - self.assertFalse(self.pamd.has_rule('account', 'requisite', 'pam_permit.so')) - - # Test Update - def test_update_rule_type(self): - self.assertTrue(self.pamd.update_rule('session', 'optional', 'pam_keyinit.so', new_type='account')) - self.assertTrue(self.pamd.has_rule('account', 'optional', 'pam_keyinit.so')) - test_rule = PamdRule('account', 'optional', 'pam_keyinit.so', 'revoke') - self.assertIn(str(test_rule), str(self.pamd)) - - def test_update_rule_that_doesnt_exist(self): - self.assertFalse(self.pamd.update_rule('blah', 'blah', 'blah', new_type='account')) - self.assertFalse(self.pamd.has_rule('blah', 'blah', 'blah')) - test_rule = PamdRule('blah', 'blah', 'blah', 'account') - self.assertNotIn(str(test_rule), str(self.pamd)) - - def test_update_rule_type_two(self): - self.assertTrue(self.pamd.update_rule('session', '[success=1 default=ignore]', 'pam_succeed_if.so', new_type='account')) - self.assertTrue(self.pamd.has_rule('account', '[success=1 default=ignore]', 'pam_succeed_if.so')) - test_rule = PamdRule('account', '[success=1 default=ignore]', 'pam_succeed_if.so') - self.assertIn(str(test_rule), str(self.pamd)) - - def test_update_rule_control_simple(self): - self.assertTrue(self.pamd.update_rule('session', 'optional', 'pam_keyinit.so', new_control='required')) - self.assertTrue(self.pamd.has_rule('session', 'required', 'pam_keyinit.so')) - test_rule = PamdRule('session', 'required', 'pam_keyinit.so') - self.assertIn(str(test_rule), str(self.pamd)) - - def test_update_rule_control_complex(self): - self.assertTrue(self.pamd.update_rule('session', - '[success=1 default=ignore]', - 'pam_succeed_if.so', - new_control='[success=2 test=me default=ignore]')) - self.assertTrue(self.pamd.has_rule('session', '[success=2 test=me default=ignore]', 'pam_succeed_if.so')) - test_rule = PamdRule('session', '[success=2 test=me default=ignore]', 'pam_succeed_if.so') - self.assertIn(str(test_rule), str(self.pamd)) - - def test_update_rule_control_more_complex(self): - - self.assertTrue(self.pamd.update_rule('session', - '[success=1 test=me default=ignore]', - 'pam_succeed_if.so', - new_control='[success=2 test=me default=ignore]')) - self.assertTrue(self.pamd.has_rule('session', '[success=2 test=me default=ignore]', 'pam_succeed_if.so')) - test_rule = PamdRule('session', '[success=2 test=me default=ignore]', 'pam_succeed_if.so') - self.assertIn(str(test_rule), str(self.pamd)) - - def test_update_rule_module_path(self): - self.assertTrue(self.pamd.update_rule('auth', 'required', 'pam_env.so', new_path='pam_limits.so')) - self.assertTrue(self.pamd.has_rule('auth', 'required', 'pam_limits.so')) - - def test_update_rule_module_path_slash(self): - self.assertTrue(self.pamd.update_rule('auth', 'required', 'pam_env.so', new_path='/lib64/security/pam_duo.so')) - self.assertTrue(self.pamd.has_rule('auth', 'required', '/lib64/security/pam_duo.so')) - - def test_update_rule_module_args(self): - self.assertTrue(self.pamd.update_rule('auth', 'sufficient', 'pam_unix.so', new_args='uid uid')) - test_rule = PamdRule('auth', 'sufficient', 'pam_unix.so', 'uid uid') - self.assertIn(str(test_rule), str(self.pamd)) - - test_rule = PamdRule('auth', 'sufficient', 'pam_unix.so', 'nullok try_first_pass') - self.assertNotIn(str(test_rule), str(self.pamd)) - - def test_update_first_three(self): - self.assertTrue(self.pamd.update_rule('auth', 'required', 'pam_env.so', - new_type='one', new_control='two', new_path='three')) - self.assertTrue(self.pamd.has_rule('one', 'two', 'three')) - - def test_update_first_three_with_module_args(self): - self.assertTrue(self.pamd.update_rule('auth', 'sufficient', 'pam_unix.so', - new_type='one', new_control='two', new_path='three')) - self.assertTrue(self.pamd.has_rule('one', 'two', 'three')) - test_rule = PamdRule('one', 'two', 'three') - self.assertIn(str(test_rule), str(self.pamd)) - self.assertIn(str(test_rule), str(self.pamd)) - - def test_update_all_four(self): - self.assertTrue(self.pamd.update_rule('auth', 'sufficient', 'pam_unix.so', - new_type='one', new_control='two', new_path='three', - new_args='four five')) - test_rule = PamdRule('one', 'two', 'three', 'four five') - self.assertIn(str(test_rule), str(self.pamd)) - - test_rule = PamdRule('auth', 'sufficient', 'pam_unix.so', 'nullok try_first_pass') - self.assertNotIn(str(test_rule), str(self.pamd)) - - def test_update_rule_with_slash(self): - self.assertTrue(self.pamd.update_rule('account', '[success=1 default=ignore]', 'pam_succeed_if.so', - new_type='session', new_path='pam_access.so')) - test_rule = PamdRule('session', '[success=1 default=ignore]', 'pam_access.so') - self.assertIn(str(test_rule), str(self.pamd)) - - # Insert Before - def test_insert_before_rule(self): - - count = self.pamd.insert_before('account', 'required', 'pam_access.so', - new_type='account', new_control='required', new_path='pam_limits.so') - self.assertEqual(count, 1) - - rules = self.pamd.get("account", "required", "pam_access.so") - for current_rule in rules: - self.assertTrue(current_rule.prev.matches("account", "required", "pam_limits.so")) - - def test_insert_before_rule_where_rule_doesnt_exist(self): - - count = self.pamd.insert_before('account', 'sufficient', 'pam_access.so', - new_type='account', new_control='required', new_path='pam_limits.so') - self.assertFalse(count) - - def test_insert_before_rule_with_args(self): - self.assertTrue(self.pamd.insert_before('account', 'required', 'pam_access.so', - new_type='account', new_control='required', new_path='pam_limits.so', - new_args='uid')) - - rules = self.pamd.get("account", "required", "pam_access.so") - for current_rule in rules: - self.assertTrue(current_rule.prev.matches("account", "required", "pam_limits.so", 'uid')) - - def test_insert_before_rule_test_duplicates(self): - self.assertTrue(self.pamd.insert_before('account', 'required', 'pam_access.so', - new_type='account', new_control='required', new_path='pam_limits.so')) - - self.pamd.insert_before('account', 'required', 'pam_access.so', - new_type='account', new_control='required', new_path='pam_limits.so') - - rules = self.pamd.get("account", "required", "pam_access.so") - for current_rule in rules: - previous_rule = current_rule.prev - self.assertTrue(previous_rule.matches("account", "required", "pam_limits.so")) - self.assertFalse(previous_rule.prev.matches("account", "required", "pam_limits.so")) - - def test_insert_before_first_rule(self): - self.assertTrue(self.pamd.insert_before('auth', 'required', 'pam_env.so', - new_type='account', new_control='required', new_path='pam_limits.so')) - - def test_insert_before_first_rule_simple(self): - simple_service = PamdService(self.simple_system_auth_string) - self.assertTrue(simple_service.insert_before('auth', 'required', 'pam_env.so', - new_type='account', new_control='required', new_path='pam_limits.so')) - - # Insert After - def test_insert_after_rule(self): - self.assertTrue(self.pamd.insert_after('account', 'required', 'pam_unix.so', - new_type='account', new_control='required', new_path='pam_permit.so')) - rules = self.pamd.get("account", "required", "pam_unix.so") - for current_rule in rules: - self.assertTrue(current_rule.next.matches("account", "required", "pam_permit.so")) - - def test_insert_after_rule_with_args(self): - self.assertTrue(self.pamd.insert_after('account', 'required', 'pam_access.so', - new_type='account', new_control='required', new_path='pam_permit.so', - new_args='uid')) - rules = self.pamd.get("account", "required", "pam_access.so") - for current_rule in rules: - self.assertTrue(current_rule.next.matches("account", "required", "pam_permit.so", "uid")) - - def test_insert_after_test_duplicates(self): - self.assertTrue(self.pamd.insert_after('account', 'required', 'pam_access.so', - new_type='account', new_control='required', new_path='pam_permit.so', - new_args='uid')) - self.assertFalse(self.pamd.insert_after('account', 'required', 'pam_access.so', - new_type='account', new_control='required', new_path='pam_permit.so', - new_args='uid')) - - rules = self.pamd.get("account", "required", "pam_access.so") - for current_rule in rules: - self.assertTrue(current_rule.next.matches("account", "required", "pam_permit.so", "uid")) - self.assertFalse(current_rule.next.next.matches("account", "required", "pam_permit.so", "uid")) - - def test_insert_after_rule_last_rule(self): - self.assertTrue(self.pamd.insert_after('session', 'required', 'pam_unix.so', - new_type='account', new_control='required', new_path='pam_permit.so', - new_args='uid')) - rules = self.pamd.get("session", "required", "pam_unix.so") - for current_rule in rules: - self.assertTrue(current_rule.next.matches("account", "required", "pam_permit.so", "uid")) - - # Remove Module Arguments - def test_remove_module_arguments_one(self): - self.assertTrue(self.pamd.remove_module_arguments('auth', 'sufficient', 'pam_unix.so', 'nullok')) - - def test_remove_module_arguments_one_list(self): - self.assertTrue(self.pamd.remove_module_arguments('auth', 'sufficient', 'pam_unix.so', ['nullok'])) - - def test_remove_module_arguments_two(self): - self.assertTrue(self.pamd.remove_module_arguments('session', '[success=1 default=ignore]', 'pam_succeed_if.so', 'service crond')) - - def test_remove_module_arguments_two_list(self): - self.assertTrue(self.pamd.remove_module_arguments('session', '[success=1 default=ignore]', 'pam_succeed_if.so', ['service', 'crond'])) - - def test_remove_module_arguments_where_none_existed(self): - self.assertTrue(self.pamd.add_module_arguments('session', 'required', 'pam_limits.so', 'arg1 arg2= arg3=arg3')) - - def test_add_module_arguments_where_none_existed(self): - self.assertTrue(self.pamd.add_module_arguments('account', 'required', 'pam_unix.so', 'arg1 arg2= arg3=arg3')) - - def test_add_module_arguments_where_none_existed_list(self): - self.assertTrue(self.pamd.add_module_arguments('account', 'required', 'pam_unix.so', ['arg1', 'arg2=', 'arg3=arg3'])) - - def test_add_module_arguments_where_some_existed(self): - self.assertTrue(self.pamd.add_module_arguments('auth', 'sufficient', 'pam_unix.so', 'arg1 arg2= arg3=arg3')) - - def test_remove_rule(self): - self.assertTrue(self.pamd.remove('account', 'required', 'pam_unix.so')) - # Second run should not change anything - self.assertFalse(self.pamd.remove('account', 'required', 'pam_unix.so')) - test_rule = PamdRule('account', 'required', 'pam_unix.so') - self.assertNotIn(str(test_rule), str(self.pamd)) - - def test_remove_first_rule(self): - no_header_service = PamdService(self.no_header_system_auth_string) - self.assertTrue(no_header_service.remove('auth', 'required', 'pam_env.so')) - test_rule = PamdRule('auth', 'required', 'pam_env.so') - self.assertNotIn(str(test_rule), str(no_header_service)) - - def test_remove_last_rule(self): - self.assertTrue(self.pamd.remove('session', 'required', 'pam_unix.so')) - test_rule = PamdRule('session', 'required', 'pam_unix.so') - self.assertNotIn(str(test_rule), str(self.pamd)) diff --git a/test/units/modules/system/test_parted.py b/test/units/modules/system/test_parted.py deleted file mode 100644 index 91439ffea3..0000000000 --- a/test/units/modules/system/test_parted.py +++ /dev/null @@ -1,240 +0,0 @@ -# (c) 2017 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -__metaclass__ = type -from units.compat.mock import patch, call -from ansible.modules.system import parted as parted_module -from ansible.modules.system.parted import parse_partition_info -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args - -# Example of output : parted -s -m /dev/sdb -- unit 'MB' print -parted_output1 = """ -BYT; -/dev/sdb:286061MB:scsi:512:512:msdos:ATA TOSHIBA THNSFJ25:; -1:1.05MB:106MB:105MB:fat32::esp; -2:106MB:368MB:262MB:ext2::; -3:368MB:256061MB:255692MB:::;""" - -# corresponding dictionary after parsing by parse_partition_info -parted_dict1 = { - "generic": { - "dev": "/dev/sdb", - "size": 286061.0, - "unit": "mb", - "table": "msdos", - "model": "ATA TOSHIBA THNSFJ25", - "logical_block": 512, - "physical_block": 512 - }, - "partitions": [{ - "num": 1, - "begin": 1.05, - "end": 106.0, - "size": 105.0, - "fstype": "fat32", - "name": '', - "flags": ["esp"], - "unit": "mb" - }, { - "num": 2, - "begin": 106.0, - "end": 368.0, - "size": 262.0, - "fstype": "ext2", - "name": '', - "flags": [], - "unit": "mb" - }, { - "num": 3, - "begin": 368.0, - "end": 256061.0, - "size": 255692.0, - "fstype": "", - "name": '', - "flags": [], - "unit": "mb" - }] -} - -parted_output2 = """ -BYT; -/dev/sdb:286061MB:scsi:512:512:msdos:ATA TOSHIBA THNSFJ25:;""" - -# corresponding dictionary after parsing by parse_partition_info -parted_dict2 = { - "generic": { - "dev": "/dev/sdb", - "size": 286061.0, - "unit": "mb", - "table": "msdos", - "model": "ATA TOSHIBA THNSFJ25", - "logical_block": 512, - "physical_block": 512 - }, - "partitions": [] -} - - -class TestParted(ModuleTestCase): - def setUp(self): - super(TestParted, self).setUp() - - self.module = parted_module - self.mock_check_parted_label = (patch('ansible.modules.system.parted.check_parted_label', return_value=False)) - self.check_parted_label = self.mock_check_parted_label.start() - - self.mock_parted = (patch('ansible.modules.system.parted.parted')) - self.parted = self.mock_parted.start() - - self.mock_run_command = (patch('ansible.module_utils.basic.AnsibleModule.run_command')) - self.run_command = self.mock_run_command.start() - - self.mock_get_bin_path = (patch('ansible.module_utils.basic.AnsibleModule.get_bin_path')) - self.get_bin_path = self.mock_get_bin_path.start() - - def tearDown(self): - super(TestParted, self).tearDown() - self.mock_run_command.stop() - self.mock_get_bin_path.stop() - self.mock_parted.stop() - self.mock_check_parted_label.stop() - - def execute_module(self, failed=False, changed=False, script=None): - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - - if script: - self.assertEqual(script, result['script'], result['script']) - - return result - - def failed(self): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def changed(self, changed=False): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertEqual(result['changed'], changed, result) - return result - - def test_parse_partition_info(self): - """Test that the parse_partition_info returns the expected dictionary""" - self.assertEqual(parse_partition_info(parted_output1, 'MB'), parted_dict1) - self.assertEqual(parse_partition_info(parted_output2, 'MB'), parted_dict2) - - def test_partition_already_exists(self): - set_module_args({ - 'device': '/dev/sdb', - 'number': 1, - 'state': 'present', - }) - with patch('ansible.modules.system.parted.get_device_info', return_value=parted_dict1): - self.execute_module(changed=False) - - def test_create_new_partition(self): - set_module_args({ - 'device': '/dev/sdb', - 'number': 4, - 'state': 'present', - }) - with patch('ansible.modules.system.parted.get_device_info', return_value=parted_dict1): - self.execute_module(changed=True, script='unit KiB mkpart primary 0% 100%') - - def test_create_new_partition_1G(self): - set_module_args({ - 'device': '/dev/sdb', - 'number': 4, - 'state': 'present', - 'part_end': '1GiB', - }) - with patch('ansible.modules.system.parted.get_device_info', return_value=parted_dict1): - self.execute_module(changed=True, script='unit KiB mkpart primary 0% 1GiB') - - def test_remove_partition_number_1(self): - set_module_args({ - 'device': '/dev/sdb', - 'number': 1, - 'state': 'absent', - }) - with patch('ansible.modules.system.parted.get_device_info', return_value=parted_dict1): - self.execute_module(changed=True, script='rm 1') - - def test_change_flag(self): - # Flags are set in a second run of parted(). - # Between the two runs, the partition dict is updated. - # use checkmode here allow us to continue even if the dictionary is - # not updated. - set_module_args({ - 'device': '/dev/sdb', - 'number': 3, - 'state': 'present', - 'flags': ['lvm', 'boot'], - '_ansible_check_mode': True, - }) - - with patch('ansible.modules.system.parted.get_device_info', return_value=parted_dict1): - self.parted.reset_mock() - self.execute_module(changed=True) - # When using multiple flags: - # order of execution is non deterministic, because set() operations are used in - # the current implementation. - expected_calls_order1 = [call('unit KiB set 3 lvm on set 3 boot on ', - '/dev/sdb', 'optimal')] - expected_calls_order2 = [call('unit KiB set 3 boot on set 3 lvm on ', - '/dev/sdb', 'optimal')] - self.assertTrue(self.parted.mock_calls == expected_calls_order1 or - self.parted.mock_calls == expected_calls_order2) - - def test_create_new_primary_lvm_partition(self): - # use check_mode, see previous test comment - set_module_args({ - 'device': '/dev/sdb', - 'number': 4, - 'flags': ["boot"], - 'state': 'present', - 'part_start': '257GiB', - '_ansible_check_mode': True, - }) - with patch('ansible.modules.system.parted.get_device_info', return_value=parted_dict1): - self.execute_module(changed=True, script='unit KiB mkpart primary 257GiB 100% unit KiB set 4 boot on') - - def test_create_label_gpt(self): - # Like previous test, current implementation use parted to create the partition and - # then retrieve and update the dictionary. Use check_mode to force to continue even if - # dictionary is not updated. - set_module_args({ - 'device': '/dev/sdb', - 'number': 1, - 'flags': ["lvm"], - 'label': 'gpt', - 'name': 'lvmpartition', - 'state': 'present', - '_ansible_check_mode': True, - }) - with patch('ansible.modules.system.parted.get_device_info', return_value=parted_dict2): - self.execute_module(changed=True, script='unit KiB mklabel gpt mkpart primary 0% 100% unit KiB name 1 \'"lvmpartition"\' set 1 lvm on') diff --git a/test/units/modules/system/test_ufw.py b/test/units/modules/system/test_ufw.py deleted file mode 100644 index b169e94e67..0000000000 --- a/test/units/modules/system/test_ufw.py +++ /dev/null @@ -1,434 +0,0 @@ - -from units.compat import unittest -from units.compat.mock import patch -from ansible.module_utils import basic -from ansible.module_utils._text import to_bytes -import ansible.modules.system.ufw as module - -import json - - -# mock ufw messages - -ufw_version_35 = """ufw 0.35\nCopyright 2008-2015 Canonical Ltd.\n""" - -ufw_verbose_header = """Status: active -Logging: on (low) -Default: deny (incoming), allow (outgoing), deny (routed) -New profiles: skip - -To Action From --- ------ ----""" - - -ufw_status_verbose_with_port_7000 = ufw_verbose_header + """ -7000/tcp ALLOW IN Anywhere -7000/tcp (v6) ALLOW IN Anywhere (v6) -""" - -user_rules_with_port_7000 = """### tuple ### allow tcp 7000 0.0.0.0/0 any 0.0.0.0/0 in -### tuple ### allow tcp 7000 ::/0 any ::/0 in -""" - -user_rules_with_ipv6 = """### tuple ### allow udp 5353 0.0.0.0/0 any 224.0.0.251 in -### tuple ### allow udp 5353 ::/0 any ff02::fb in -""" - -ufw_status_verbose_with_ipv6 = ufw_verbose_header + """ -5353/udp ALLOW IN 224.0.0.251 -5353/udp ALLOW IN ff02::fb -""" - -ufw_status_verbose_nothing = ufw_verbose_header - -skippg_adding_existing_rules = "Skipping adding existing rule\nSkipping adding existing rule (v6)\n" - -grep_config_cli = "grep -h '^### tuple' /lib/ufw/user.rules /lib/ufw/user6.rules /etc/ufw/user.rules /etc/ufw/user6.rules " -grep_config_cli += "/var/lib/ufw/user.rules /var/lib/ufw/user6.rules" - -dry_mode_cmd_with_port_700 = { - "ufw status verbose": ufw_status_verbose_with_port_7000, - "ufw --version": ufw_version_35, - "ufw --dry-run allow from any to any port 7000 proto tcp": skippg_adding_existing_rules, - "ufw --dry-run delete allow from any to any port 7000 proto tcp": "", - "ufw --dry-run delete allow from any to any port 7001 proto tcp": user_rules_with_port_7000, - "ufw --dry-run route allow in on foo out on bar from 1.1.1.1 port 7000 to 8.8.8.8 port 7001 proto tcp": "", - "ufw --dry-run allow in on foo from any to any port 7003 proto tcp": "", - "ufw --dry-run allow in on foo from 1.1.1.1 port 7002 to 8.8.8.8 port 7003 proto tcp": "", - "ufw --dry-run allow out on foo from any to any port 7004 proto tcp": "", - "ufw --dry-run allow out on foo from 1.1.1.1 port 7003 to 8.8.8.8 port 7004 proto tcp": "", - grep_config_cli: user_rules_with_port_7000 -} - -# setup configuration : -# ufw reset -# ufw enable -# ufw allow proto udp to any port 5353 from 224.0.0.251 -# ufw allow proto udp to any port 5353 from ff02::fb -dry_mode_cmd_with_ipv6 = { - "ufw status verbose": ufw_status_verbose_with_ipv6, - "ufw --version": ufw_version_35, - # CONTENT of the command sudo ufw --dry-run delete allow in from ff02::fb port 5353 proto udp | grep -E "^### tupple" - "ufw --dry-run delete allow from ff02::fb to any port 5353 proto udp": "### tuple ### allow udp any ::/0 5353 ff02::fb in", - grep_config_cli: user_rules_with_ipv6, - "ufw --dry-run allow from ff02::fb to any port 5353 proto udp": skippg_adding_existing_rules, - "ufw --dry-run allow from 224.0.0.252 to any port 5353 proto udp": """### tuple ### allow udp 5353 0.0.0.0/0 any 224.0.0.251 in -### tuple ### allow udp 5353 0.0.0.0/0 any 224.0.0.252 in -""", - "ufw --dry-run allow from 10.0.0.0/24 to any port 1577 proto udp": "### tuple ### allow udp 1577 0.0.0.0/0 any 10.0.0.0/24 in" -} - -dry_mode_cmd_nothing = { - "ufw status verbose": ufw_status_verbose_nothing, - "ufw --version": ufw_version_35, - grep_config_cli: "", - "ufw --dry-run allow from any to :: port 23": "### tuple ### allow any 23 :: any ::/0 in" -} - - -def do_nothing_func_nothing(*args, **kwarg): - return 0, dry_mode_cmd_nothing[args[0]], "" - - -def do_nothing_func_ipv6(*args, **kwarg): - return 0, dry_mode_cmd_with_ipv6[args[0]], "" - - -def do_nothing_func_port_7000(*args, **kwarg): - return 0, dry_mode_cmd_with_port_700[args[0]], "" - - -def set_module_args(args): - args = json.dumps({'ANSIBLE_MODULE_ARGS': args}) - """prepare arguments so that they will be picked up during module creation""" - basic._ANSIBLE_ARGS = to_bytes(args) - - -class AnsibleExitJson(Exception): - """Exception class to be raised by module.exit_json and caught by the test case""" - pass - - -class AnsibleFailJson(Exception): - """Exception class to be raised by module.fail_json and caught by the test case""" - pass - - -def exit_json(*args, **kwargs): - """function to patch over exit_json; package return data into an exception""" - if 'changed' not in kwargs: - kwargs['changed'] = False - raise AnsibleExitJson(kwargs) - - -def fail_json(*args, **kwargs): - """function to patch over fail_json; package return data into an exception""" - kwargs['failed'] = True - raise AnsibleFailJson(kwargs) - - -def get_bin_path(self, arg, required=False): - """Mock AnsibleModule.get_bin_path""" - return arg - - -class TestUFW(unittest.TestCase): - - def setUp(self): - self.mock_module_helper = patch.multiple(basic.AnsibleModule, - exit_json=exit_json, - fail_json=fail_json, - get_bin_path=get_bin_path) - self.mock_module_helper.start() - self.addCleanup(self.mock_module_helper.stop) - - def test_filter_line_that_contains_ipv4(self): - reg = module.compile_ipv4_regexp() - - self.assertTrue(reg.search("### tuple ### allow udp 5353 ::/0 any ff02::fb in") is None) - self.assertTrue(reg.search("### tuple ### allow udp 5353 0.0.0.0/0 any 224.0.0.251 in") is not None) - - self.assertTrue(reg.match("ff02::fb") is None) - self.assertTrue(reg.match("224.0.0.251") is not None) - self.assertTrue(reg.match("10.0.0.0/8") is not None) - self.assertTrue(reg.match("somethingElse") is None) - self.assertTrue(reg.match("::") is None) - self.assertTrue(reg.match("any") is None) - - def test_filter_line_that_contains_ipv6(self): - reg = module.compile_ipv6_regexp() - self.assertTrue(reg.search("### tuple ### allow udp 5353 ::/0 any ff02::fb in") is not None) - self.assertTrue(reg.search("### tuple ### allow udp 5353 0.0.0.0/0 any 224.0.0.251 in") is None) - self.assertTrue(reg.search("### tuple ### allow any 23 :: any ::/0 in") is not None) - self.assertTrue(reg.match("ff02::fb") is not None) - self.assertTrue(reg.match("224.0.0.251") is None) - self.assertTrue(reg.match("::") is not None) - - def test_check_mode_add_rules(self): - set_module_args({ - 'rule': 'allow', - 'proto': 'tcp', - 'port': '7000', - '_ansible_check_mode': True - }) - result = self.__getResult(do_nothing_func_port_7000) - self.assertFalse(result.exception.args[0]['changed']) - - def test_check_mode_add_detailed_route(self): - set_module_args({ - 'rule': 'allow', - 'route': 'yes', - 'interface_in': 'foo', - 'interface_out': 'bar', - 'proto': 'tcp', - 'from_ip': '1.1.1.1', - 'to_ip': '8.8.8.8', - 'from_port': '7000', - 'to_port': '7001', - '_ansible_check_mode': True - }) - - result = self.__getResult(do_nothing_func_port_7000) - self.assertTrue(result.exception.args[0]['changed']) - - def test_check_mode_add_ambiguous_route(self): - set_module_args({ - 'rule': 'allow', - 'route': 'yes', - 'interface_in': 'foo', - 'interface_out': 'bar', - 'direction': 'in', - 'interface': 'baz', - '_ansible_check_mode': True - }) - - with self.assertRaises(AnsibleFailJson) as result: - self.__getResult(do_nothing_func_port_7000) - - exc = result.exception.args[0] - self.assertTrue(exc['failed']) - self.assertIn('mutually exclusive', exc['msg']) - - def test_check_mode_add_interface_in(self): - set_module_args({ - 'rule': 'allow', - 'proto': 'tcp', - 'port': '7003', - 'interface_in': 'foo', - '_ansible_check_mode': True - }) - result = self.__getResult(do_nothing_func_port_7000) - self.assertTrue(result.exception.args[0]['changed']) - - def test_check_mode_add_interface_out(self): - set_module_args({ - 'rule': 'allow', - 'proto': 'tcp', - 'port': '7004', - 'interface_out': 'foo', - '_ansible_check_mode': True - }) - result = self.__getResult(do_nothing_func_port_7000) - self.assertTrue(result.exception.args[0]['changed']) - - def test_check_mode_add_non_route_interface_both(self): - set_module_args({ - 'rule': 'allow', - 'proto': 'tcp', - 'port': '7004', - 'interface_in': 'foo', - 'interface_out': 'bar', - '_ansible_check_mode': True - }) - - with self.assertRaises(AnsibleFailJson) as result: - self.__getResult(do_nothing_func_port_7000) - - exc = result.exception.args[0] - self.assertTrue(exc['failed']) - self.assertIn('combine', exc['msg']) - - def test_check_mode_add_direction_in(self): - set_module_args({ - 'rule': 'allow', - 'proto': 'tcp', - 'port': '7003', - 'direction': 'in', - 'interface': 'foo', - '_ansible_check_mode': True - }) - result = self.__getResult(do_nothing_func_port_7000) - self.assertTrue(result.exception.args[0]['changed']) - - def test_check_mode_add_direction_in_with_ip(self): - set_module_args({ - 'rule': 'allow', - 'proto': 'tcp', - 'from_ip': '1.1.1.1', - 'from_port': '7002', - 'to_ip': '8.8.8.8', - 'to_port': '7003', - 'direction': 'in', - 'interface': 'foo', - '_ansible_check_mode': True - }) - result = self.__getResult(do_nothing_func_port_7000) - self.assertTrue(result.exception.args[0]['changed']) - - def test_check_mode_add_direction_out(self): - set_module_args({ - 'rule': 'allow', - 'proto': 'tcp', - 'port': '7004', - 'direction': 'out', - 'interface': 'foo', - '_ansible_check_mode': True - }) - result = self.__getResult(do_nothing_func_port_7000) - self.assertTrue(result.exception.args[0]['changed']) - - def test_check_mode_add_direction_out_with_ip(self): - set_module_args({ - 'rule': 'allow', - 'proto': 'tcp', - 'from_ip': '1.1.1.1', - 'from_port': '7003', - 'to_ip': '8.8.8.8', - 'to_port': '7004', - 'direction': 'out', - 'interface': 'foo', - '_ansible_check_mode': True - }) - result = self.__getResult(do_nothing_func_port_7000) - self.assertTrue(result.exception.args[0]['changed']) - - def test_check_mode_delete_existing_rules(self): - - set_module_args({ - 'rule': 'allow', - 'proto': 'tcp', - 'port': '7000', - 'delete': 'yes', - '_ansible_check_mode': True, - }) - - self.assertTrue(self.__getResult(do_nothing_func_port_7000).exception.args[0]['changed']) - - def test_check_mode_delete_not_existing_rules(self): - - set_module_args({ - 'rule': 'allow', - 'proto': 'tcp', - 'port': '7001', - 'delete': 'yes', - '_ansible_check_mode': True, - }) - - self.assertFalse(self.__getResult(do_nothing_func_port_7000).exception.args[0]['changed']) - - def test_enable_mode(self): - set_module_args({ - 'state': 'enabled', - '_ansible_check_mode': True - }) - - self.assertFalse(self.__getResult(do_nothing_func_port_7000).exception.args[0]['changed']) - - def test_disable_mode(self): - set_module_args({ - 'state': 'disabled', - '_ansible_check_mode': True - }) - - self.assertTrue(self.__getResult(do_nothing_func_port_7000).exception.args[0]['changed']) - - def test_logging_off(self): - set_module_args({ - 'logging': 'off', - '_ansible_check_mode': True - }) - - self.assertTrue(self.__getResult(do_nothing_func_port_7000).exception.args[0]['changed']) - - def test_logging_on(self): - set_module_args({ - 'logging': 'on', - '_ansible_check_mode': True - }) - - self.assertFalse(self.__getResult(do_nothing_func_port_7000).exception.args[0]['changed']) - - def test_default_changed(self): - set_module_args({ - 'default': 'allow', - "direction": "incoming", - '_ansible_check_mode': True - }) - self.assertTrue(self.__getResult(do_nothing_func_port_7000).exception.args[0]['changed']) - - def test_default_not_changed(self): - set_module_args({ - 'default': 'deny', - "direction": "incoming", - '_ansible_check_mode': True - }) - self.assertFalse(self.__getResult(do_nothing_func_port_7000).exception.args[0]['changed']) - - def test_ipv6_remove(self): - set_module_args({ - 'rule': 'allow', - 'proto': 'udp', - 'port': '5353', - 'from': 'ff02::fb', - 'delete': 'yes', - '_ansible_check_mode': True, - }) - self.assertTrue(self.__getResult(do_nothing_func_ipv6).exception.args[0]['changed']) - - def test_ipv6_add_existing(self): - set_module_args({ - 'rule': 'allow', - 'proto': 'udp', - 'port': '5353', - 'from': 'ff02::fb', - '_ansible_check_mode': True, - }) - self.assertFalse(self.__getResult(do_nothing_func_ipv6).exception.args[0]['changed']) - - def test_add_not_existing_ipv4_submask(self): - set_module_args({ - 'rule': 'allow', - 'proto': 'udp', - 'port': '1577', - 'from': '10.0.0.0/24', - '_ansible_check_mode': True, - }) - self.assertTrue(self.__getResult(do_nothing_func_ipv6).exception.args[0]['changed']) - - def test_ipv4_add_with_existing_ipv6(self): - set_module_args({ - 'rule': 'allow', - 'proto': 'udp', - 'port': '5353', - 'from': '224.0.0.252', - '_ansible_check_mode': True, - }) - self.assertTrue(self.__getResult(do_nothing_func_ipv6).exception.args[0]['changed']) - - def test_ipv6_add_from_nothing(self): - set_module_args({ - 'rule': 'allow', - 'port': '23', - 'to': '::', - '_ansible_check_mode': True, - }) - result = self.__getResult(do_nothing_func_nothing).exception.args[0] - print(result) - self.assertTrue(result['changed']) - - def __getResult(self, cmd_fun): - with patch.object(basic.AnsibleModule, 'run_command') as mock_run_command: - mock_run_command.side_effect = cmd_fun - with self.assertRaises(AnsibleExitJson) as result: - module.main() - return result diff --git a/test/units/modules/web_infrastructure/test_apache2_module.py b/test/units/modules/web_infrastructure/test_apache2_module.py deleted file mode 100644 index 703b35b9da..0000000000 --- a/test/units/modules/web_infrastructure/test_apache2_module.py +++ /dev/null @@ -1,17 +0,0 @@ -import pytest - -from ansible.modules.web_infrastructure.apache2_module import create_apache_identifier - -REPLACEMENTS = [ - ('php7.1', 'php7_module'), - ('php5.6', 'php5_module'), - ('shib2', 'mod_shib'), - ('evasive', 'evasive20_module'), - ('thismoduledoesnotexist', 'thismoduledoesnotexist_module'), # the default -] - - -@pytest.mark.parametrize("replacement", REPLACEMENTS, ids=lambda x: x[0]) -def test_apache_identifier(replacement): - "test the correct replacement of an a2enmod name with an apache2ctl name" - assert create_apache_identifier(replacement[0]) == replacement[1] diff --git a/test/units/modules/web_infrastructure/test_jenkins_plugin.py b/test/units/modules/web_infrastructure/test_jenkins_plugin.py deleted file mode 100644 index 5d89c10d26..0000000000 --- a/test/units/modules/web_infrastructure/test_jenkins_plugin.py +++ /dev/null @@ -1,148 +0,0 @@ -from io import BytesIO - -from ansible.modules.web_infrastructure.jenkins_plugin import JenkinsPlugin -from ansible.module_utils.common._collections_compat import Mapping - - -def pass_function(*args, **kwargs): - pass - - -GITHUB_DATA = {"url": u'https://api.github.com/repos/ansible/ansible', - "response": b""" -{ - "id": 3638964, - "name": "ansible", - "full_name": "ansible/ansible", - "owner": { - "login": "ansible", - "id": 1507452, - "avatar_url": "https://avatars2.githubusercontent.com/u/1507452?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/ansible", - "html_url": "https://github.com/ansible", - "followers_url": "https://api.github.com/users/ansible/followers", - "following_url": "https://api.github.com/users/ansible/following{/other_user}", - "gists_url": "https://api.github.com/users/ansible/gists{/gist_id}", - "starred_url": "https://api.github.com/users/ansible/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/ansible/subscriptions", - "organizations_url": "https://api.github.com/users/ansible/orgs", - "repos_url": "https://api.github.com/users/ansible/repos", - "events_url": "https://api.github.com/users/ansible/events{/privacy}", - "received_events_url": "https://api.github.com/users/ansible/received_events", - "type": "Organization", - "site_admin": false - }, - "private": false, - "html_url": "https://github.com/ansible/ansible", - "description": "Ansible is a radically simple IT automation platform that makes your applications and systems easier to deploy.", - "fork": false, - "url": "https://api.github.com/repos/ansible/ansible", - "forks_url": "https://api.github.com/repos/ansible/ansible/forks", - "keys_url": "https://api.github.com/repos/ansible/ansible/keys{/key_id}", - "collaborators_url": "https://api.github.com/repos/ansible/ansible/collaborators{/collaborator}", - "teams_url": "https://api.github.com/repos/ansible/ansible/teams", - "hooks_url": "https://api.github.com/repos/ansible/ansible/hooks", - "issue_events_url": "https://api.github.com/repos/ansible/ansible/issues/events{/number}", - "events_url": "https://api.github.com/repos/ansible/ansible/events", - "assignees_url": "https://api.github.com/repos/ansible/ansible/assignees{/user}", - "branches_url": "https://api.github.com/repos/ansible/ansible/branches{/branch}", - "tags_url": "https://api.github.com/repos/ansible/ansible/tags", - "blobs_url": "https://api.github.com/repos/ansible/ansible/git/blobs{/sha}", - "git_tags_url": "https://api.github.com/repos/ansible/ansible/git/tags{/sha}", - "git_refs_url": "https://api.github.com/repos/ansible/ansible/git/refs{/sha}", - "trees_url": "https://api.github.com/repos/ansible/ansible/git/trees{/sha}", - "statuses_url": "https://api.github.com/repos/ansible/ansible/statuses/{sha}", - "languages_url": "https://api.github.com/repos/ansible/ansible/languages", - "stargazers_url": "https://api.github.com/repos/ansible/ansible/stargazers", - "contributors_url": "https://api.github.com/repos/ansible/ansible/contributors", - "subscribers_url": "https://api.github.com/repos/ansible/ansible/subscribers", - "subscription_url": "https://api.github.com/repos/ansible/ansible/subscription", - "commits_url": "https://api.github.com/repos/ansible/ansible/commits{/sha}", - "git_commits_url": "https://api.github.com/repos/ansible/ansible/git/commits{/sha}", - "comments_url": "https://api.github.com/repos/ansible/ansible/comments{/number}", - "issue_comment_url": "https://api.github.com/repos/ansible/ansible/issues/comments{/number}", - "contents_url": "https://api.github.com/repos/ansible/ansible/contents/{+path}", - "compare_url": "https://api.github.com/repos/ansible/ansible/compare/{base}...{head}", - "merges_url": "https://api.github.com/repos/ansible/ansible/merges", - "archive_url": "https://api.github.com/repos/ansible/ansible/{archive_format}{/ref}", - "downloads_url": "https://api.github.com/repos/ansible/ansible/downloads", - "issues_url": "https://api.github.com/repos/ansible/ansible/issues{/number}", - "pulls_url": "https://api.github.com/repos/ansible/ansible/pulls{/number}", - "milestones_url": "https://api.github.com/repos/ansible/ansible/milestones{/number}", - "notifications_url": "https://api.github.com/repos/ansible/ansible/notifications{?since,all,participating}", - "labels_url": "https://api.github.com/repos/ansible/ansible/labels{/name}", - "releases_url": "https://api.github.com/repos/ansible/ansible/releases{/id}", - "deployments_url": "https://api.github.com/repos/ansible/ansible/deployments", - "created_at": "2012-03-06T14:58:02Z", - "updated_at": "2017-09-19T18:10:54Z", - "pushed_at": "2017-09-19T18:04:51Z", - "git_url": "git://github.com/ansible/ansible.git", - "ssh_url": "git@github.com:ansible/ansible.git", - "clone_url": "https://github.com/ansible/ansible.git", - "svn_url": "https://github.com/ansible/ansible", - "homepage": "https://www.ansible.com/", - "size": 91174, - "stargazers_count": 25552, - "watchers_count": 25552, - "language": "Python", - "has_issues": true, - "has_projects": true, - "has_downloads": true, - "has_wiki": false, - "has_pages": false, - "forks_count": 8893, - "mirror_url": null, - "open_issues_count": 4283, - "forks": 8893, - "open_issues": 4283, - "watchers": 25552, - "default_branch": "devel", - "organization": { - "login": "ansible", - "id": 1507452, - "avatar_url": "https://avatars2.githubusercontent.com/u/1507452?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/ansible", - "html_url": "https://github.com/ansible", - "followers_url": "https://api.github.com/users/ansible/followers", - "following_url": "https://api.github.com/users/ansible/following{/other_user}", - "gists_url": "https://api.github.com/users/ansible/gists{/gist_id}", - "starred_url": "https://api.github.com/users/ansible/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/ansible/subscriptions", - "organizations_url": "https://api.github.com/users/ansible/orgs", - "repos_url": "https://api.github.com/users/ansible/repos", - "events_url": "https://api.github.com/users/ansible/events{/privacy}", - "received_events_url": "https://api.github.com/users/ansible/received_events", - "type": "Organization", - "site_admin": false - }, - "network_count": 8893, - "subscribers_count": 1733 -} -""" - } - - -def test__get_json_data(mocker): - "test the json conversion of _get_url_data" - - timeout = 30 - params = { - 'url': GITHUB_DATA['url'], - 'timeout': timeout - } - module = mocker.Mock() - module.params = params - - JenkinsPlugin._csrf_enabled = pass_function - JenkinsPlugin._get_installed_plugins = pass_function - JenkinsPlugin._get_url_data = mocker.Mock() - JenkinsPlugin._get_url_data.return_value = BytesIO(GITHUB_DATA['response']) - jenkins_plugin = JenkinsPlugin(module) - - json_data = jenkins_plugin._get_json_data( - "{url}".format(url=GITHUB_DATA['url']), - 'CSRF') - - assert isinstance(json_data, Mapping) |