1 ##############################################################################
2 # Copyright (c) 2016 Dan Radez (Red Hat)
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8 ##############################################################################
14 from apex.common.constants import (
20 from apex.network_settings import NetworkSettings
21 from apex.network_environment import (
29 from nose.tools import assert_equal
30 from nose.tools import assert_raises
31 from nose.tools import assert_is_instance
32 from nose.tools import assert_not_equal
35 class TestNetworkEnvironment(object):
37 def setup_class(klass):
38 """This method is run once for each class before any tests are run"""
39 klass.ns = NetworkSettings(
40 '../config/network/network_settings.yaml')
41 klass.ns_vlans = NetworkSettings(
42 '../config/network/network_settings_vlans.yaml')
43 klass.ns_ipv6 = NetworkSettings(
44 '../config/network/network_settings_v6.yaml')
47 def teardown_class(klass):
48 """This method is run once for each class _after_ all tests are run"""
51 """This method is run once before _each_ test method is executed"""
54 """This method is run once after _each_ test method is executed"""
57 assert_raises(NetworkEnvException, NetworkEnvironment,
58 None, '../build/network-environment.yaml')
60 def test_netenv_settings_external_network_vlans(self):
62 ne = NetworkEnvironment(self.ns_vlans,
63 '../build/network-environment.yaml')
64 assert_equal(ne['parameter_defaults']['NeutronExternalNetworkBridge'],
66 assert_equal(ne['parameter_defaults']['ExternalNetworkVlanID'], 501)
68 def test_netenv_settings_external_network_ipv6(self):
70 ne = NetworkEnvironment(self.ns_ipv6,
71 '../build/network-environment.yaml')
72 regstr = ne['resource_registry']['OS::TripleO::Network::External']
73 assert_equal(regstr.split('/')[-1], 'external_v6.yaml')
75 def test_netenv_settings_external_network_removed(self):
77 # Test removing EXTERNAL_NETWORK
78 ns.enabled_network_list.remove(EXTERNAL_NETWORK)
79 ne = NetworkEnvironment(ns, '../build/network-environment.yaml')
80 regstr = ne['resource_registry']['OS::TripleO::Network::External']
81 assert_equal(regstr.split('/')[-1], 'OS::Heat::None')
83 def test_netenv_settings_tenant_network_vlans(self):
85 ne = NetworkEnvironment(self.ns_vlans,
86 '../build/network-environment.yaml')
87 assert_equal(ne['parameter_defaults']['TenantNetworkVlanID'], 401)
89 # Apex is does not support v6 tenant networks
90 # Though there is code that would fire if a
91 # v6 cidr was passed in, just uncomment this to
93 # def test_netenv_settings_tenant_network_v6(self):
95 # ne = NetworkEnvironment(self.ns_ipv6,
96 # '../build/network-environment.yaml')
97 # regstr = ne['resource_registry'][next(iter(TENANT_RESOURCES.keys()))]
98 # assert_equal(regstr.split('/')[-1], 'tenant_v6.yaml')
100 def test_netenv_settings_tenant_network_removed(self):
102 # Test removing TENANT_NETWORK
103 ns.enabled_network_list.remove(TENANT_NETWORK)
104 ne = NetworkEnvironment(ns, '../build/network-environment.yaml')
105 regstr = ne['resource_registry']['OS::TripleO::Network::Tenant']
106 assert_equal(regstr.split('/')[-1], 'OS::Heat::None')
108 def test_netenv_settings_storage_network_vlans(self):
110 ne = NetworkEnvironment(self.ns_vlans,
111 '../build/network-environment.yaml')
112 assert_equal(ne['parameter_defaults']['StorageNetworkVlanID'], 201)
114 def test_netenv_settings_storage_network_v6(self):
116 ne = NetworkEnvironment(self.ns_ipv6,
117 '../build/network-environment.yaml')
118 regstr = ne['resource_registry']['OS::TripleO::Network::Storage']
119 assert_equal(regstr.split('/')[-1], 'storage_v6.yaml')
121 def test_netenv_settings_storage_network_removed(self):
123 # Test removing STORAGE_NETWORK
124 ns.enabled_network_list.remove(STORAGE_NETWORK)
125 ne = NetworkEnvironment(ns, '../build/network-environment.yaml')
126 regstr = ne['resource_registry']['OS::TripleO::Network::Storage']
127 assert_equal(regstr.split('/')[-1], 'OS::Heat::None')
129 def test_netenv_settings_api_network_v4(self):
130 ns = copy(self.ns_vlans)
131 ns['networks'][API_NETWORK]['enabled'] = True
132 ns['networks'][API_NETWORK]['cidr'] = '10.11.12.0/24'
133 ns = NetworkSettings(ns)
135 ne = NetworkEnvironment(ns, '../build/network-environment.yaml')
136 assert_equal(ne['parameter_defaults']['InternalApiNetworkVlanID'], 101)
138 def test_netenv_settings_api_network_vlans(self):
139 ns = copy(self.ns_vlans)
140 ns['networks'][API_NETWORK]['enabled'] = True
141 ns = NetworkSettings(ns)
143 ne = NetworkEnvironment(ns, '../build/network-environment.yaml')
144 assert_equal(ne['parameter_defaults']['InternalApiNetworkVlanID'], 101)
146 def test_netenv_settings_api_network_v6(self):
148 ne = NetworkEnvironment(self.ns_ipv6,
149 '../build/network-environment.yaml')
150 regstr = ne['resource_registry']['OS::TripleO::Network::InternalApi']
151 assert_equal(regstr.split('/')[-1], 'internal_api_v6.yaml')
153 def test_netenv_settings_api_network_removed(self):
155 # API_NETWORK is not in the default network settings file
156 ne = NetworkEnvironment(ns, '../build/network-environment.yaml')
157 regstr = ne['resource_registry']['OS::TripleO::Network::InternalApi']
158 assert_equal(regstr.split('/')[-1], 'OS::Heat::None')
160 def test_numa_configs(self):
161 ne = NetworkEnvironment(self.ns, '../build/network-environment.yaml',
162 compute_pre_config=True,
163 controller_pre_config=True)
164 assert_is_instance(ne, dict)
165 assert_not_equal(ne, {})
167 def test_exception(self):
168 e = NetworkEnvException("test")
170 assert_is_instance(e, NetworkEnvException)