Renders service net map for THT 59/66159/1
authorTim Rozet <trozet@redhat.com>
Thu, 3 Jan 2019 15:31:23 +0000 (10:31 -0500)
committerTim Rozet <trozet@redhat.com>
Thu, 3 Jan 2019 15:31:23 +0000 (10:31 -0500)
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 <trozet@redhat.com>
apex/network/network_environment.py
apex/tests/test_apex_network_environment.py

index 0a4d103..52b4452 100644 (file)
@@ -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):
index 79a72a5..7aa6ef1 100644 (file)
@@ -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')