From 847f7673f8ba68583c85eee5c30d7657f82ad50f Mon Sep 17 00:00:00 2001 From: Tim Rozet Date: Thu, 11 Jan 2018 10:41:29 -0500 Subject: Fixes including default SDN env file in deploy cmd The latest method to deploy opendaylight features upstream is to include the default SDN file and then add-on the feature env file which should override any default settings in the previous SDN env file. For example for bgpvpn: openstack overcloud deploy -e /neutron-opendaylight.yaml -e \ /neutron-bgpvpn-opendaylight.yaml This change documents the recursive function used to find the SDN env files and includes the default for the SDN controller. JIRA: APEX-555 Change-Id: I4270932ca4fbc21ea54e965d9d6491424f4463e2 Signed-off-by: Tim Rozet --- apex/overcloud/deploy.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'apex/overcloud/deploy.py') diff --git a/apex/overcloud/deploy.py b/apex/overcloud/deploy.py index 809afc13..5c957965 100644 --- a/apex/overcloud/deploy.py +++ b/apex/overcloud/deploy.py @@ -71,14 +71,37 @@ ODL_NETVIRT_VPP_RPM = "/root/opendaylight-7.0.0-0.1.20170531snap665.el7" \ def build_sdn_env_list(ds, sdn_map, env_list=None): + """ + Builds a list of SDN environment files to be used in the deploy cmd. + + This function recursively searches an sdn_map. First the sdn controller is + matched and then the function looks for enabled features for that + controller to determine which environment files should be used. By + default the feature will be checked if set to true in deploy settings to be + added to the list. If a feature does not have a boolean value, then the + key and value pair to compare with are checked as a tuple (k,v). + + :param ds: deploy settings + :param sdn_map: SDN map to recursively search + :param env_list: recursive var to hold previously found env_list + :return: A list of env files + """ if env_list is None: env_list = list() for k, v in sdn_map.items(): if ds['sdn_controller'] == k or (k in ds and ds[k] is True): if isinstance(v, dict): + # Append default SDN env file first + # The assumption is that feature-enabled SDN env files + # override and do not conflict with previously set default + # settings + if ds['sdn_controller'] == k and 'default' in v: + env_list.append(os.path.join(con.THT_ENV_DIR, + v['default'])) env_list.extend(build_sdn_env_list(ds, v)) else: env_list.append(os.path.join(con.THT_ENV_DIR, v)) + # check if the value is not a boolean elif isinstance(v, tuple): if ds[k] == v[0]: env_list.append(os.path.join(con.THT_ENV_DIR, v[1])) -- cgit 1.2.3-korg