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 assert_equal
15 from nose.tools import assert_is_instance
16 from nose.tools import assert_not_equal
17 from nose.tools import assert_raises
19 from apex.common.constants import (
25 from apex import NetworkEnvironment
26 from apex.network.network_environment import NetworkEnvException
27 from apex import NetworkSettings
28 from apex.tests.constants import TEST_CONFIG_DIR
29 from apex.tests.constants import TEST_BUILD_DIR
32 class TestNetworkEnvironment(object):
34 def setup_class(klass):
35 """This method is run once for each class before any tests are run"""
36 klass.ns = NetworkSettings(
37 os.path.join(TEST_CONFIG_DIR, 'network/network_settings.yaml'))
38 klass.ns_vlans = NetworkSettings(
39 os.path.join(TEST_CONFIG_DIR,
40 'network/network_settings_vlans.yaml'))
41 klass.ns_ipv6 = NetworkSettings(
42 os.path.join(TEST_CONFIG_DIR, 'network/network_settings_v6.yaml'))
45 def teardown_class(klass):
46 """This method is run once for each class _after_ all tests are run"""
49 """This method is run once before _each_ test method is executed"""
52 """This method is run once after _each_ test method is executed"""
55 assert_raises(NetworkEnvException, NetworkEnvironment,
56 None, os.path.join(TEST_BUILD_DIR, NET_ENV_FILE))
58 def test_netenv_settings_external_network_vlans(self):
60 ne = NetworkEnvironment(self.ns_vlans,
61 os.path.join(TEST_BUILD_DIR, NET_ENV_FILE))
62 assert_equal(ne['parameter_defaults']['NeutronExternalNetworkBridge'],
64 assert_equal(ne['parameter_defaults']['ExternalNetworkVlanID'], 501)
66 def test_netenv_settings_external_network_ipv6(self):
68 ne = NetworkEnvironment(self.ns_ipv6,
69 os.path.join(TEST_BUILD_DIR, NET_ENV_FILE))
70 regstr = ne['resource_registry']['OS::TripleO::Network::External']
71 assert_equal(regstr.split('/')[-1], 'external_v6.yaml')
73 def test_netenv_settings_external_network_removed(self):
75 # Test removing EXTERNAL_NETWORK
76 ns.enabled_network_list.remove(EXTERNAL_NETWORK)
77 ne = NetworkEnvironment(ns, os.path.join(TEST_BUILD_DIR, NET_ENV_FILE))
78 regstr = ne['resource_registry']['OS::TripleO::Network::External']
79 assert_equal(regstr.split('/')[-1], 'OS::Heat::None')
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 regstr = ne['resource_registry']['OS::TripleO::Network::Tenant']
104 assert_equal(regstr.split('/')[-1], 'OS::Heat::None')
106 def test_netenv_settings_storage_network_vlans(self):
108 ne = NetworkEnvironment(self.ns_vlans,
109 os.path.join(TEST_BUILD_DIR, NET_ENV_FILE))
110 assert_equal(ne['parameter_defaults']['StorageNetworkVlanID'], 201)
112 def test_netenv_settings_storage_network_v6(self):
114 ne = NetworkEnvironment(self.ns_ipv6,
115 os.path.join(TEST_BUILD_DIR, NET_ENV_FILE))
116 regstr = ne['resource_registry']['OS::TripleO::Network::Storage']
117 assert_equal(regstr.split('/')[-1], 'storage_v6.yaml')
119 def test_netenv_settings_storage_network_removed(self):
121 # Test removing STORAGE_NETWORK
122 ns.enabled_network_list.remove(STORAGE_NETWORK)
123 ne = NetworkEnvironment(ns, os.path.join(TEST_BUILD_DIR, NET_ENV_FILE))
124 regstr = ne['resource_registry']['OS::TripleO::Network::Storage']
125 assert_equal(regstr.split('/')[-1], 'OS::Heat::None')
127 def test_netenv_settings_api_network_v4(self):
128 ns = copy(self.ns_vlans)
129 ns['networks'][API_NETWORK]['enabled'] = True
130 ns['networks'][API_NETWORK]['cidr'] = '10.11.12.0/24'
131 ns = NetworkSettings(ns)
133 ne = NetworkEnvironment(ns, os.path.join(TEST_BUILD_DIR, NET_ENV_FILE))
134 assert_equal(ne['parameter_defaults']['InternalApiNetworkVlanID'], 101)
136 def test_netenv_settings_api_network_vlans(self):
137 ns = copy(self.ns_vlans)
138 ns['networks'][API_NETWORK]['enabled'] = True
139 ns = NetworkSettings(ns)
141 ne = NetworkEnvironment(ns, os.path.join(TEST_BUILD_DIR, NET_ENV_FILE))
142 assert_equal(ne['parameter_defaults']['InternalApiNetworkVlanID'], 101)
144 def test_netenv_settings_api_network_v6(self):
146 ne = NetworkEnvironment(self.ns_ipv6,
147 os.path.join(TEST_BUILD_DIR, NET_ENV_FILE))
148 regstr = ne['resource_registry']['OS::TripleO::Network::InternalApi']
149 assert_equal(regstr.split('/')[-1], 'internal_api_v6.yaml')
151 def test_netenv_settings_api_network_removed(self):
153 # API_NETWORK is not in the default network settings file
154 ne = NetworkEnvironment(ns, os.path.join(TEST_BUILD_DIR, NET_ENV_FILE))
155 regstr = ne['resource_registry']['OS::TripleO::Network::InternalApi']
156 assert_equal(regstr.split('/')[-1], 'OS::Heat::None')
158 def test_numa_configs(self):
159 ne = NetworkEnvironment(self.ns,
160 os.path.join(TEST_BUILD_DIR, NET_ENV_FILE),
161 compute_pre_config=True,
162 controller_pre_config=True)
163 assert_is_instance(ne, dict)
164 assert_not_equal(ne, {})
166 def test_exception(self):
167 e = NetworkEnvException("test")
169 assert_is_instance(e, NetworkEnvException)