From e1c6f92cdac07949b00c758bab5c79ff20639dd9 Mon Sep 17 00:00:00 2001 From: Tim Rozet Date: Thu, 3 Jan 2019 10:31:23 -0500 Subject: Renders service net map for THT Previously if a service mapped to a network which was disabled, the disabled network would fallback to using the ctlplane network. With the recent change in THT, this is no longer the case: https://review.openstack.org/#/c/614457/ With the above change, now any service pointing to a disabled network now results in an empty string value being given for network variables. This patch sets the service netmap in network-enviornment.yaml appropriately based on which networks are enabled in apex. Change-Id: Idf2919935aa707da6ca48968a04cf6653923d19d Signed-off-by: Tim Rozet --- apex/network/network_environment.py | 9 +++++++++ apex/tests/test_apex_network_environment.py | 7 +++++++ 2 files changed, 16 insertions(+) diff --git a/apex/network/network_environment.py b/apex/network/network_environment.py index 0a4d1036..52b4452a 100644 --- a/apex/network/network_environment.py +++ b/apex/network/network_environment.py @@ -186,6 +186,8 @@ class NetworkEnvironment(dict): for flag in IPV6_FLAGS: self[param_def][flag] = True + self._update_service_netmap(net_settings.enabled_network_list) + def _get_vlan(self, network): if isinstance(network['nic_mapping'][CONTROLLER]['vlan'], int): return network['nic_mapping'][CONTROLLER]['vlan'] @@ -218,6 +220,13 @@ class NetworkEnvironment(dict): prefix = '' self[reg][key] = self.tht_dir + prefix + postfix + def _update_service_netmap(self, network_list): + if 'ServiceNetMap' not in self[param_def]: + return + for service, network in self[param_def]['ServiceNetMap'].items(): + if network not in network_list: + self[param_def]['ServiceNetMap'][service] = 'ctlplane' + class NetworkEnvException(Exception): def __init__(self, value): diff --git a/apex/tests/test_apex_network_environment.py b/apex/tests/test_apex_network_environment.py index 79a72a55..7aa6ef15 100644 --- a/apex/tests/test_apex_network_environment.py +++ b/apex/tests/test_apex_network_environment.py @@ -165,3 +165,10 @@ class TestNetworkEnvironment: e = NetworkEnvException("test") print(e) assert_is_instance(e, NetworkEnvException) + + def test_service_netmap(self): + ns = copy(self.ns) + ns.enabled_network_list = ['admin'] + ne = NetworkEnvironment(ns, os.path.join(TEST_BUILD_DIR, NET_ENV_FILE)) + for network in ne['parameter_defaults']['ServiceNetMap'].values(): + assert_equal(network, 'ctlplane') -- cgit 1.2.3-korg