aboutsummaryrefslogtreecommitdiffstats
path: root/os_net_config/tests
diff options
context:
space:
mode:
authorSarath Kumar <sarath.kutty@bigswitch.com>2016-07-21 11:14:39 -0700
committerSarath Kumar <sarath.kutty@bigswitch.com>2016-08-02 11:45:46 -0700
commit15974244f6212905540e1daf9ca596c83f510bdd (patch)
tree26bcd9086d93e4501e9387a126725a847ce3f9bb /os_net_config/tests
parent311df0c3828fe7571079fad9763bca9e2414b51a (diff)
Enable os-net-config to support and configure NFVSwitch
These changes are to generate /etc/sysconf/network-scripts/ifcfg-* and /etc/sysconfig/nfvswitch configuration files for nfvswitch and its interfaces. NFVSwitch is a virtual switch implementation based on DPDK for datacenter workloads with very high throughput needs. Change-Id: If02edb9c4c54c014f67290fe0c34e2fc73cb95bd
Diffstat (limited to 'os_net_config/tests')
-rw-r--r--os_net_config/tests/test_cli.py18
-rw-r--r--os_net_config/tests/test_impl_ifcfg.py47
-rw-r--r--os_net_config/tests/test_objects.py81
3 files changed, 146 insertions, 0 deletions
diff --git a/os_net_config/tests/test_cli.py b/os_net_config/tests/test_cli.py
index 98477fc..e598dcb 100644
--- a/os_net_config/tests/test_cli.py
+++ b/os_net_config/tests/test_cli.py
@@ -146,3 +146,21 @@ class TestCli(base.TestCase):
stdout_yaml, stderr = self.run_cli('ARG0 --provider=ifcfg --noop '
'-c %s --detailed-exit-codes'
% interface_yaml, exitcodes=(0,))
+
+ def test_nfvswitch_noop_output(self):
+ nfvswitch_yaml = os.path.join(SAMPLE_BASE, 'nfvswitch.yaml')
+ nfvswitch_json = os.path.join(SAMPLE_BASE, 'nfvswitch.json')
+ stdout_yaml, stderr = self.run_cli('ARG0 --provider=ifcfg --noop '
+ '-c %s' % nfvswitch_yaml)
+ self.assertEqual('', stderr)
+ stdout_json, stderr = self.run_cli('ARG0 --provider=ifcfg --noop '
+ '-c %s' % nfvswitch_json)
+ self.assertEqual('', stderr)
+ sanity_devices = ['DEVICE=nic2',
+ 'DEVICE=nic3',
+ 'DEVICE=api201',
+ 'DEVICE=storage202',
+ 'DEVICETYPE=nfvswitch']
+ for dev in sanity_devices:
+ self.assertIn(dev, stdout_yaml)
+ self.assertEqual(stdout_yaml, stdout_json)
diff --git a/os_net_config/tests/test_impl_ifcfg.py b/os_net_config/tests/test_impl_ifcfg.py
index b8a8402..467db65 100644
--- a/os_net_config/tests/test_impl_ifcfg.py
+++ b/os_net_config/tests/test_impl_ifcfg.py
@@ -292,6 +292,34 @@ NETMASK=255.255.255.0
_IVS_CONFIG = ('DAEMON_ARGS=\"--hitless --certificate /etc/ivs '
'--inband-vlan 4092 -u em1 --internal-port=storage5\"')
+_NFVSWITCH_INTERFACE = """# This file is autogenerated by os-net-config
+DEVICE=em1
+ONBOOT=yes
+HOTPLUG=no
+NM_CONTROLLED=no
+PEERDNS=no
+DEVICETYPE=nfvswitch
+NFVSWITCH_BRIDGE=nfvswitch
+BOOTPROTO=none
+"""
+
+_NFVSWITCH_INTERNAL = """# This file is autogenerated by os-net-config
+DEVICE=storage5
+ONBOOT=yes
+HOTPLUG=no
+NM_CONTROLLED=no
+PEERDNS=no
+TYPE=NFVSWITCHIntPort
+DEVICETYPE=nfvswitch
+NFVSWITCH_BRIDGE=nfvswitch
+MTU=1500
+BOOTPROTO=static
+IPADDR=172.16.2.7
+NETMASK=255.255.255.0
+"""
+
+_NFVSWITCH_CONFIG = ('SETUP_ARGS=\" -c 2,3,4,5 -u em1 -m storage5\"')
+
_OVS_IFCFG_PATCH_PORT = """# This file is autogenerated by os-net-config
DEVICE=br-pub-patch
ONBOOT=yes
@@ -553,6 +581,25 @@ class TestIfcfgNetConfig(base.TestCase):
data = self.provider.generate_ivs_config(['em1'], ['storage5'])
self.assertEqual(_IVS_CONFIG, data)
+ def test_network_nfvswitch_with_interfaces_and_internal_interfaces(self):
+ interface = objects.Interface('em1')
+ v4_addr = objects.Address('172.16.2.7/24')
+ nfvswitch_internal = objects.NfvswitchInternal(vlan_id=5,
+ name='storage',
+ addresses=[v4_addr])
+ iface_name = nfvswitch_internal.name
+ bridge = objects.NfvswitchBridge(members=[interface,
+ nfvswitch_internal],
+ cpus="2,3,4,5")
+ self.provider.add_interface(interface)
+ self.provider.add_nfvswitch_internal(nfvswitch_internal)
+ self.provider.add_nfvswitch_bridge(bridge)
+ self.assertEqual(_NFVSWITCH_INTERFACE, self.get_interface_config())
+ self.assertEqual(_NFVSWITCH_INTERNAL,
+ self.provider.nfvswitch_intiface_data[iface_name])
+ data = self.provider.generate_nfvswitch_config(['em1'], ['storage5'])
+ self.assertEqual(_NFVSWITCH_CONFIG, data)
+
def test_add_ib_interface_with_v4_multiple(self):
addresses = [objects.Address('192.168.1.2/24'),
objects.Address('192.168.1.3/32'),
diff --git a/os_net_config/tests/test_objects.py b/os_net_config/tests/test_objects.py
index 17b6927..bbff1f3 100644
--- a/os_net_config/tests/test_objects.py
+++ b/os_net_config/tests/test_objects.py
@@ -398,6 +398,87 @@ class TestIvsBridge(base.TestCase):
self.assertIn(expected, err)
+class TestNfvswitchBridge(base.TestCase):
+
+ def test_from_json(self):
+ data = """{
+"type": "nfvswitch_bridge",
+"cpus": "2,3,4,5",
+"members": [
+ {"type": "interface", "name": "nic2"}
+ ]
+}
+"""
+ bridge = objects.object_from_json(json.loads(data))
+ self.assertEqual("nfvswitch", bridge.name)
+ self.assertEqual("2,3,4,5", bridge.cpus)
+ interface1 = bridge.members[0]
+ self.assertEqual("nic2", interface1.name)
+ self.assertEqual(False, interface1.ovs_port)
+ self.assertEqual("nfvswitch", interface1.nfvswitch_bridge_name)
+
+
+class TestNfvswitchInterface(base.TestCase):
+
+ def test_interface_from_json(self):
+ data = """{
+"type": "nfvswitch_bridge",
+"cpus": "2,3,4,5",
+"members": [
+ {"type": "interface","name": "nic1"},
+ {"type": "interface","name": "nic2"}
+ ]
+}
+"""
+ bridge = objects.object_from_json(json.loads(data))
+ self.assertEqual("nfvswitch", bridge.name)
+ self.assertEqual("2,3,4,5", bridge.cpus)
+ interface1 = bridge.members[0]
+ self.assertEqual("nic1", interface1.name)
+ interface2 = bridge.members[1]
+ self.assertEqual("nic2", interface2.name)
+ self.assertEqual(False, interface2.ovs_port)
+ self.assertEqual("nfvswitch", interface1.nfvswitch_bridge_name)
+
+ def test_nfvswitch_internal_from_json(self):
+ data = """{
+"type": "nfvswitch_bridge",
+"cpus": "2,3,4,5",
+"members": [
+ {"type": "nfvswitch_internal", "name": "storage", "vlan_id": 202},
+ {"type": "nfvswitch_internal", "name": "api", "vlan_id": 201}
+ ]
+}
+"""
+ bridge = objects.object_from_json(json.loads(data))
+ self.assertEqual("nfvswitch", bridge.name)
+ self.assertEqual("2,3,4,5", bridge.cpus)
+ interface1 = bridge.members[0]
+ self.assertEqual("storage202", interface1.name)
+ interface2 = bridge.members[1]
+ self.assertEqual("api201", interface2.name)
+ self.assertEqual(False, interface1.ovs_port)
+ self.assertEqual("nfvswitch", interface1.nfvswitch_bridge_name)
+
+ def test_bond_interface_from_json(self):
+ data = """{
+"type": "nfvswitch_bridge",
+"cpus": "2,3,4,5",
+"members": [{
+ "type": "linux_bond", "name": "bond1", "members":
+ [{"type": "interface", "name": "nic2"},
+ {"type": "interface", "name": "nic3"}]
+ }
+ ]
+}
+"""
+ err = self.assertRaises(objects.InvalidConfigException,
+ objects.NfvswitchBridge.from_json,
+ json.loads(data))
+ expected = 'NFVSwitch does not support bond interfaces.'
+ self.assertIn(expected, err)
+
+
class TestBond(base.TestCase):
def test_from_json_dhcp(self):