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 nose.tools import (
20 from apex.common.constants import (
26 from apex import NetworkEnvironment
27 from apex.network.network_environment import NetworkEnvException
28 from apex import NetworkSettings
29 from apex.tests.constants import TEST_CONFIG_DIR
30 from apex.tests.constants import TEST_BUILD_DIR
33 class TestNetworkEnvironment:
36 """This method is run once for each class before any tests are run"""
37 cls.ns = NetworkSettings(
38 os.path.join(TEST_CONFIG_DIR, 'network/network_settings.yaml'))
39 cls.ns_vlans = NetworkSettings(
40 os.path.join(TEST_CONFIG_DIR,
41 'network/network_settings_vlans.yaml'))
42 cls.ns_ipv6 = NetworkSettings(
43 os.path.join(TEST_CONFIG_DIR, 'network/network_settings_v6.yaml'))
46 def teardown_class(klass):
47 """This method is run once for each class _after_ all tests are run"""
50 """This method is run once before _each_ test method is executed"""
53 """This method is run once after _each_ test method is executed"""
56 assert_raises(NetworkEnvException, NetworkEnvironment,
57 None, os.path.join(TEST_BUILD_DIR, NET_ENV_FILE))
59 def test_netenv_settings_external_network_vlans(self):
61 ne = NetworkEnvironment(self.ns_vlans,
62 os.path.join(TEST_BUILD_DIR, NET_ENV_FILE))
63 assert_equal(ne['parameter_defaults']['NeutronExternalNetworkBridge'],
65 assert_equal(ne['parameter_defaults']['ExternalNetworkVlanID'], 501)
67 def test_netenv_settings_external_network_ipv6(self):
69 ne = NetworkEnvironment(self.ns_ipv6,
70 os.path.join(TEST_BUILD_DIR, NET_ENV_FILE))
71 regstr = ne['resource_registry']['OS::TripleO::Network::External']
72 assert_equal(regstr.split('/')[-1], 'external_v6.yaml')
74 def test_netenv_settings_external_network_removed(self):
76 # Test removing EXTERNAL_NETWORK
77 ns.enabled_network_list.remove(EXTERNAL_NETWORK)
78 ne = NetworkEnvironment(ns, os.path.join(TEST_BUILD_DIR, NET_ENV_FILE))
79 assert 'OS::TripleO::Network::External' not in ne['resource_registry']
81 def test_netenv_settings_tenant_network_vlans(self):
83 ne = NetworkEnvironment(self.ns_vlans,
84 os.path.join(TEST_BUILD_DIR, NET_ENV_FILE))
85 assert_equal(ne['parameter_defaults']['TenantNetworkVlanID'], 401)
87 # Apex is does not support v6 tenant networks
88 # Though there is code that would fire if a
89 # v6 cidr was passed in, just uncomment this to
91 # def test_netenv_settings_tenant_network_v6(self):
93 # ne = NetworkEnvironment(self.ns_ipv6,
94 # '../build/network-environment.yaml')
95 # regstr = ne['resource_registry'][next(iter(TENANT_RESOURCES.keys()))]
96 # assert_equal(regstr.split('/')[-1], 'tenant_v6.yaml')
98 def test_netenv_settings_tenant_network_removed(self):
100 # Test removing TENANT_NETWORK
101 ns.enabled_network_list.remove(TENANT_NETWORK)
102 ne = NetworkEnvironment(ns, os.path.join(TEST_BUILD_DIR, NET_ENV_FILE))
103 assert 'OS::TripleO::Network::Tenant' not in ne['resource_registry']
105 def test_netenv_settings_storage_network_vlans(self):
107 ne = NetworkEnvironment(self.ns_vlans,
108 os.path.join(TEST_BUILD_DIR, NET_ENV_FILE))
109 assert_equal(ne['parameter_defaults']['StorageNetworkVlanID'], 201)
111 def test_netenv_settings_storage_network_v6(self):
113 ne = NetworkEnvironment(self.ns_ipv6,
114 os.path.join(TEST_BUILD_DIR, NET_ENV_FILE))
115 regstr = ne['resource_registry']['OS::TripleO::Network::Storage']
116 assert_equal(regstr.split('/')[-1], 'storage_v6.yaml')
118 def test_netenv_settings_storage_network_removed(self):
120 # Test removing STORAGE_NETWORK
121 ns.enabled_network_list.remove(STORAGE_NETWORK)
122 ne = NetworkEnvironment(ns, os.path.join(TEST_BUILD_DIR, NET_ENV_FILE))
123 assert 'OS::TripleO::Network::Storage' not in ne['resource_registry']
125 def test_netenv_settings_api_network_v4(self):
126 ns = copy(self.ns_vlans)
127 ns['networks'][API_NETWORK]['enabled'] = True
128 ns['networks'][API_NETWORK]['cidr'] = '10.11.12.0/24'
129 ns = NetworkSettings(ns)
131 ne = NetworkEnvironment(ns, os.path.join(TEST_BUILD_DIR, NET_ENV_FILE))
132 assert_equal(ne['parameter_defaults']['InternalApiNetworkVlanID'], 101)
134 def test_netenv_settings_api_network_vlans(self):
135 ns = copy(self.ns_vlans)
136 ns['networks'][API_NETWORK]['enabled'] = True
137 ns = NetworkSettings(ns)
139 ne = NetworkEnvironment(ns, os.path.join(TEST_BUILD_DIR, NET_ENV_FILE))
140 assert_equal(ne['parameter_defaults']['InternalApiNetworkVlanID'], 101)
142 def test_netenv_settings_api_network_v6(self):
144 ne = NetworkEnvironment(self.ns_ipv6,
145 os.path.join(TEST_BUILD_DIR, NET_ENV_FILE))
146 regstr = ne['resource_registry']['OS::TripleO::Network::InternalApi']
147 assert_equal(regstr.split('/')[-1], 'internal_api_v6.yaml')
149 def test_netenv_settings_api_network_removed(self):
151 # API_NETWORK is not in the default network settings file
152 ne = NetworkEnvironment(ns, os.path.join(TEST_BUILD_DIR, NET_ENV_FILE))
153 assert 'OS::TripleO::Network::InternalApi' not in ne[
156 def test_numa_configs(self):
157 ne = NetworkEnvironment(self.ns,
158 os.path.join(TEST_BUILD_DIR, NET_ENV_FILE),
159 compute_pre_config=True,
160 controller_pre_config=True)
161 assert_is_instance(ne, dict)
162 assert_not_equal(ne, {})
164 def test_exception(self):
165 e = NetworkEnvException("test")
167 assert_is_instance(e, NetworkEnvException)