python-group-based-policy-c.../gbpclient/tests/unit/test_network.py

242 lines
9.9 KiB
Python

# 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.
#
from unittest import mock
from gbpclient.gbp.v2_0 import network as network_ext
from gbpclient.tests.unit import test_cli20
from openstackclient.network.v2 import network
from openstackclient.tests.unit.network.v2 import test_network
# Tests for network create with APIC extensions
#
class TestNetworkCreate(test_network.TestNetwork, test_cli20.CLITestV20Base):
_network = test_network.TestCreateNetworkIdentityV3._network
def setUp(self):
super(TestNetworkCreate, self).setUp()
self.network.create_network = mock.Mock(
return_value=self._network)
self.cmd = network.CreateNetwork(self.app, self.namespace)
def test_create_default_options(self):
arglist = [
self._network.name,
]
verifylist = [
('name', self._network.name),
('apic_nested_domain_name', None),
('apic_nested_domain_type', None),
('apic_distinguished_names', None),
('apic_synchronization_state', None),
('apic_nat_type', None),
('apic_external_cidrs', None),
('apic_svi_enable', None),
('apic_bgp_enable', None),
('apic_bgp_asn', None),
('apic_bgp_type', None),
('apic_nested_domain_infra_vlan', None),
('apic_nested_domain_allowed_vlans', None),
('apic_nested_domain_service_vlan', None),
('apic_nested_domain_node_network_vlan', None),
('apic_extra_provided_contracts', None),
('apic_extra_consumed_contracts', None),
]
create_ext = network_ext.CreateAndSetNetworkExtension(self.app)
parsed_args = self.check_parser_ext(
self.cmd, arglist, verifylist, create_ext)
columns, data = self.cmd.take_action(parsed_args)
self.network.create_network.assert_called_once_with(**{
'admin_state_up': True,
'name': self._network.name,
})
def test_create_all_options(self):
arglist = [
self._network.name,
"--external",
"--apic-nested-domain-name", "dntest1",
"--apic-nested-domain-type", "dntype1",
"--apic-distinguished-names", '{"disttest1": "test1"}',
"--apic-nat-type", "edge",
"--apic-external-cidrs", "['20.20.20.0/8']",
"--apic-svi-enable",
"--apic-bgp-enable",
"--apic-bgp-asn", '1',
"--apic-bgp-type", "bgptest1",
"--apic-nested-domain-infra-vlan", '1',
"--apic-nested-domain-allowed-vlans", "[2]",
"--apic-nested-domain-service-vlan", '3',
"--apic-nested-domain-node-network-vlan", '4',
"--apic-extra-provided-contracts", "['pcontest1']",
"--apic-extra-consumed-contracts", "['contest1']",
]
verifylist = [
('name', self._network.name),
('external', True),
('apic_nested_domain_name', "dntest1"),
('apic_nested_domain_type', "dntype1"),
('apic_distinguished_names', '{"disttest1": "test1"}'),
('apic_synchronization_state', None),
('apic_nat_type', "edge"),
('apic_external_cidrs', "['20.20.20.0/8']"),
('apic_svi_enable', True),
('apic_bgp_enable', True),
('apic_bgp_asn', '1'),
('apic_bgp_type', "bgptest1"),
('apic_nested_domain_infra_vlan', '1'),
('apic_nested_domain_allowed_vlans', "[2]"),
('apic_nested_domain_service_vlan', '3'),
('apic_nested_domain_node_network_vlan', '4'),
('apic_extra_provided_contracts', "['pcontest1']"),
('apic_extra_consumed_contracts', "['contest1']"),
]
create_ext = network_ext.CreateAndSetNetworkExtension(self.app)
parsed_args = self.check_parser_ext(
self.cmd, arglist, verifylist, create_ext)
columns, data = self.cmd.take_action(parsed_args)
self.network.create_network.assert_called_once_with(**{
'admin_state_up': True,
'name': self._network.name,
'router:external': True,
'apic:nested_domain_name': 'dntest1',
'apic:distinguished_names': {"disttest1": "test1"},
'apic:external_cidrs': ['20.20.20.0/8'],
'apic:nat_type': 'edge',
'apic:nested_domain_name': 'dntest1',
'apic:nested_domain_type': 'dntype1',
'apic:svi': True,
'apic:bgp_enable': True,
'apic:bgp_asn': '1',
'apic:bgp_type': 'bgptest1',
'apic:extra_consumed_contracts': ['contest1'],
'apic:extra_provided_contracts': ['pcontest1'],
'apic:nested_domain_allowed_vlans': [2],
'apic:nested_domain_infra_vlan': '1',
'apic:nested_domain_node_network_vlan': '4',
'apic:nested_domain_service_vlan': '3',
})
# Tests for network set with APIC extensions
#
class TestNetworkSet(test_network.TestNetwork, test_cli20.CLITestV20Base):
_network = test_network.TestSetNetwork._network
def setUp(self):
super(TestNetworkSet, self).setUp()
self.network.update_network = mock.Mock(return_value=None)
self.network.find_network = mock.Mock(return_value=self._network)
self.cmd = network.SetNetwork(self.app, self.namespace)
def test_set_no_options(self):
arglist = [
self._network.name,
]
verifylist = [
('network', self._network.name),
('apic_nested_domain_name', None),
('apic_nested_domain_type', None),
('apic_distinguished_names', None),
('apic_synchronization_state', None),
('apic_nat_type', None),
('apic_external_cidrs', None),
('apic_svi_enable', None),
('apic_bgp_enable', None),
('apic_bgp_asn', None),
('apic_bgp_type', None),
('apic_nested_domain_infra_vlan', None),
('apic_nested_domain_allowed_vlans', None),
('apic_nested_domain_service_vlan', None),
('apic_nested_domain_node_network_vlan', None),
('apic_extra_provided_contracts', None),
('apic_extra_consumed_contracts', None),
]
set_ext = network_ext.CreateAndSetNetworkExtension(self.app)
parsed_args = self.check_parser_ext(
self.cmd, arglist, verifylist, set_ext)
result = self.cmd.take_action(parsed_args)
self.assertFalse(self.network.update_network.called)
self.assertIsNone(result)
def test_set_all_valid_options(self):
arglist = [
self._network.name,
"--external",
"--apic-nested-domain-name", "dntest11",
"--apic-nested-domain-type", "dntype11",
"--apic-nat-type", "distributed",
"--apic-external-cidrs", "['30.30.30.0/8']",
"--apic-bgp-disable",
"--apic-bgp-asn", '2',
"--apic-bgp-type", "bgptest11",
"--apic-nested-domain-infra-vlan", '2',
"--apic-nested-domain-allowed-vlans", "[2, 3]",
"--apic-nested-domain-service-vlan", '4',
"--apic-nested-domain-node-network-vlan", '5',
"--apic-extra-provided-contracts", "['pcontest1', 'pcontest11']",
"--apic-extra-consumed-contracts", "['contest1', 'contest11']",
]
verifylist = [
('network', self._network.name),
('external', True),
('apic_nested_domain_name', "dntest11"),
('apic_nested_domain_type', "dntype11"),
('apic_distinguished_names', None),
('apic_synchronization_state', None),
('apic_nat_type', "distributed"),
('apic_external_cidrs', "['30.30.30.0/8']"),
('apic_svi_enable', None),
('apic_bgp_disable', True),
('apic_bgp_asn', '2'),
('apic_bgp_type', "bgptest11"),
('apic_nested_domain_infra_vlan', '2'),
('apic_nested_domain_allowed_vlans', "[2, 3]"),
('apic_nested_domain_service_vlan', '4'),
('apic_nested_domain_node_network_vlan', '5'),
('apic_extra_provided_contracts', "['pcontest1', 'pcontest11']"),
('apic_extra_consumed_contracts', "['contest1', 'contest11']"),
]
set_ext = network_ext.CreateAndSetNetworkExtension(self.app)
parsed_args = self.check_parser_ext(
self.cmd, arglist, verifylist, set_ext)
result = self.cmd.take_action(parsed_args)
attrs = {
'router:external': True,
'apic:nested_domain_name': 'dntest11',
'apic:external_cidrs': ['30.30.30.0/8'],
'apic:nat_type': 'distributed',
'apic:nested_domain_name': 'dntest11',
'apic:nested_domain_type': 'dntype11',
'apic:bgp_enable': False,
'apic:bgp_asn': '2',
'apic:bgp_type': 'bgptest11',
'apic:extra_consumed_contracts': ['contest1', 'contest11'],
'apic:extra_provided_contracts': ['pcontest1', 'pcontest11'],
'apic:nested_domain_allowed_vlans': [2, 3],
'apic:nested_domain_infra_vlan': '2',
'apic:nested_domain_node_network_vlan': '5',
'apic:nested_domain_service_vlan': '4',
}
self.network.update_network.assert_called_once_with(
self._network, **attrs)
self.assertIsNone(result)