diff options
-rw-r--r-- | lib/python/apex/network_environment.py | 92 | ||||
-rwxr-xr-x | lib/python/apex_python_utils.py | 2 | ||||
-rw-r--r-- | tests/test_apex_network_environment.py | 4 |
3 files changed, 45 insertions, 53 deletions
diff --git a/lib/python/apex/network_environment.py b/lib/python/apex/network_environment.py index 22dcc352..d96fa44e 100644 --- a/lib/python/apex/network_environment.py +++ b/lib/python/apex/network_environment.py @@ -43,7 +43,7 @@ IPV6_FLAGS = ["NovaIPv6", "MongoDbIPv6", "CorosyncIPv6", "CephIPv6", "RabbitIPv6", "MemcachedIPv6"] -class NetworkEnvironment: +class NetworkEnvironment(dict): """ This class creates a Network Environment to be used in TripleO Heat Templates. @@ -53,18 +53,19 @@ class NetworkEnvironment: """ def __init__(self, net_settings, filename, compute_pre_config=False, controller_pre_config=False): - with open(filename, 'r') as net_env_fh: - self.compute_pre = compute_pre_config - self.controller_pre = controller_pre_config - self.netenv_obj = yaml.load(net_env_fh) - self._update_net_environment(net_settings) - - def _update_net_environment(self, net_settings): - """ - Updates Network Environment according to Network Settings - :param: network settings object - :return: None - """ + init_dict = {} + if type(filename) is str: + with open(filename, 'r') as net_env_fh: + init_dict = yaml.load(net_env_fh) + + super().__init__(init_dict) + try: + enabled_networks = net_settings.enabled_network_list + except: + raise NetworkEnvException('Invalid Network Setting object') + param_def = self['parameter_defaults'] + reg = self['resource_registry'] + if not net_settings: raise NetworkEnvException("Network Settings does not exist") @@ -74,7 +75,7 @@ class NetworkEnvironment: for key, prefix in TENANT_RESOURCES.items(): if prefix is None: prefix = '' - m = re.split('%s/\w+\.yaml' % prefix, self.netenv_obj[reg][key]) + m = re.split('%s/\w+\.yaml' % prefix, self[reg][key]) if m is not None: tht_dir = m[0] break @@ -83,27 +84,27 @@ class NetworkEnvironment: admin_cidr = net_settings[ADMIN_NETWORK]['cidr'] admin_prefix = str(admin_cidr.prefixlen) - self.netenv_obj[param_def]['ControlPlaneSubnetCidr'] = admin_prefix - self.netenv_obj[param_def]['ControlPlaneDefaultRoute'] = \ + self[param_def]['ControlPlaneSubnetCidr'] = admin_prefix + self[param_def]['ControlPlaneDefaultRoute'] = \ net_settings[ADMIN_NETWORK]['provisioner_ip'] public_cidr = net_settings[PUBLIC_NETWORK]['cidr'] - self.netenv_obj[param_def]['ExternalNetCidr'] = str(public_cidr) + self[param_def]['ExternalNetCidr'] = str(public_cidr) if net_settings[PUBLIC_NETWORK]['vlan'] != 'native': - self.netenv_obj[param_def]['NeutronExternalNetworkBridge'] = '""' - self.netenv_obj[param_def]['ExternalNetworkVlanID'] = \ + self[param_def]['NeutronExternalNetworkBridge'] = '""' + self[param_def]['ExternalNetworkVlanID'] = \ net_settings[PUBLIC_NETWORK]['vlan'] public_range = \ net_settings[PUBLIC_NETWORK]['usable_ip_range'].split(',') - self.netenv_obj[param_def]['ExternalAllocationPools'] = \ + self[param_def]['ExternalAllocationPools'] = \ [{'start': public_range[0], 'end': public_range[1] }] - self.netenv_obj[param_def]['ExternalInterfaceDefaultRoute'] = \ + self[param_def]['ExternalInterfaceDefaultRoute'] = \ net_settings[PUBLIC_NETWORK]['gateway'] - self.netenv_obj[param_def]['EC2MetadataIp'] = \ + self[param_def]['EC2MetadataIp'] = \ net_settings[ADMIN_NETWORK]['provisioner_ip'] - self.netenv_obj[param_def]['DnsServers'] = net_settings['dns_servers'] + self[param_def]['DnsServers'] = net_settings['dns_servers'] if public_cidr.version == 6: postfix = '/external_v6.yaml' @@ -113,24 +114,24 @@ class NetworkEnvironment: for key, prefix in EXTERNAL_RESOURCES.items(): if prefix is None: prefix = '' - self.netenv_obj[reg][key] = tht_dir + prefix + postfix + self[reg][key] = tht_dir + prefix + postfix if PRIVATE_NETWORK in enabled_networks: priv_range = net_settings[PRIVATE_NETWORK][ 'usable_ip_range'].split(',') - self.netenv_obj[param_def]['TenantAllocationPools'] = \ + self[param_def]['TenantAllocationPools'] = \ [{'start': priv_range[0], 'end': priv_range[1] }] priv_cidr = net_settings[PRIVATE_NETWORK]['cidr'] - self.netenv_obj[param_def]['TenantNetCidr'] = str(priv_cidr) + self[param_def]['TenantNetCidr'] = str(priv_cidr) if priv_cidr.version == 6: postfix = '/tenant_v6.yaml' else: postfix = '/tenant.yaml' if net_settings[PRIVATE_NETWORK]['vlan'] != 'native': - self.netenv_obj[param_def]['TenantNetworkVlanID'] = \ + self[param_def]['TenantNetworkVlanID'] = \ net_settings[PRIVATE_NETWORK]['vlan'] else: postfix = '/noop.yaml' @@ -138,25 +139,25 @@ class NetworkEnvironment: for key, prefix in TENANT_RESOURCES.items(): if prefix is None: prefix = '' - self.netenv_obj[reg][key] = tht_dir + prefix + postfix + self[reg][key] = tht_dir + prefix + postfix if STORAGE_NETWORK in enabled_networks: storage_range = net_settings[STORAGE_NETWORK][ 'usable_ip_range'].split(',') - self.netenv_obj[param_def]['StorageAllocationPools'] = \ + self[param_def]['StorageAllocationPools'] = \ [{'start': storage_range[0], 'end': storage_range[1] }] storage_cidr = net_settings[STORAGE_NETWORK]['cidr'] - self.netenv_obj[param_def]['StorageNetCidr'] = str(storage_cidr) + self[param_def]['StorageNetCidr'] = str(storage_cidr) if storage_cidr.version == 6: postfix = '/storage_v6.yaml' else: postfix = '/storage.yaml' if net_settings[STORAGE_NETWORK]['vlan'] != 'native': - self.netenv_obj[param_def]['StorageNetworkVlanID'] = \ + self[param_def]['StorageNetworkVlanID'] = \ net_settings[STORAGE_NETWORK]['vlan'] else: postfix = '/noop.yaml' @@ -164,23 +165,23 @@ class NetworkEnvironment: for key, prefix in STORAGE_RESOURCES.items(): if prefix is None: prefix = '' - self.netenv_obj[reg][key] = tht_dir + prefix + postfix + self[reg][key] = tht_dir + prefix + postfix if API_NETWORK in enabled_networks: api_range = net_settings[API_NETWORK][ 'usable_ip_range'].split(',') - self.netenv_obj[param_def]['InternalApiAllocationPools'] = \ + self[param_def]['InternalApiAllocationPools'] = \ [{'start': api_range[0], 'end': api_range[1] }] api_cidr = net_settings[API_NETWORK]['cidr'] - self.netenv_obj[param_def]['InternalApiNetCidr'] = str(api_cidr) + self[param_def]['InternalApiNetCidr'] = str(api_cidr) if api_cidr.version == 6: postfix = '/internal_api_v6.yaml' else: postfix = '/internal_api.yaml' if net_settings[API_NETWORK]['vlan'] != 'native': - self.netenv_obj[param_def]['InternalApiNetworkVlanID'] = \ + self[param_def]['InternalApiNetworkVlanID'] = \ net_settings[API_NETWORK]['vlan'] else: postfix = '/noop.yaml' @@ -188,28 +189,19 @@ class NetworkEnvironment: for key, prefix in API_RESOURCES.items(): if prefix is None: prefix = '' - self.netenv_obj[reg][key] = tht_dir + prefix + postfix + self[reg][key] = tht_dir + prefix + postfix - if self.compute_pre: - self.netenv_obj[reg][COMPUTE_PRE] = PRE_CONFIG_DIR + \ - "compute/numa.yaml" - if self.controller_pre: - self.netenv_obj[reg][CONTROLLER_PRE] = PRE_CONFIG_DIR + \ - "controller/numa.yaml" + if compute_pre_config: + self[reg][COMPUTE_PRE] = PRE_CONFIG_DIR + "compute/numa.yaml" + if controller_pre_config: + self[reg][CONTROLLER_PRE] = PRE_CONFIG_DIR + "controller/numa.yaml" # Set IPv6 related flags to True. Not that we do not set those to False # when IPv4 is configured, we'll use the default or whatever the user # may have set. if net_settings.get_ip_addr_family() == 6: for flag in IPV6_FLAGS: - self.netenv_obj[param_def][flag] = True - - def get_netenv_settings(self): - """ - Getter for netenv settings - :return: Dictionary of network environment settings - """ - return self.netenv_obj + self[param_def][flag] = True class NetworkEnvException(Exception): diff --git a/lib/python/apex_python_utils.py b/lib/python/apex_python_utils.py index dcf483d1..829b3a0f 100755 --- a/lib/python/apex_python_utils.py +++ b/lib/python/apex_python_utils.py @@ -41,7 +41,7 @@ def parse_net_settings(args): net_env = NetworkEnvironment(settings, args.net_env_file, args.compute_pre_config, args.controller_pre_config) - dump_yaml(net_env.get_netenv_settings(), '/tmp/network-environment.yaml') + dump_yaml(dict(net_env), '/tmp/network-environment.yaml') settings.dump_bash() diff --git a/tests/test_apex_network_environment.py b/tests/test_apex_network_environment.py index 97bdd370..9dcaffc0 100644 --- a/tests/test_apex_network_environment.py +++ b/tests/test_apex_network_environment.py @@ -41,5 +41,5 @@ class TestNetworkEnvironment(object): ne = NetworkEnvironment(ns, '../build/network-environment.yaml', compute_pre_config=True, controller_pre_config=True) - assert_is_instance(ne.get_netenv_settings(), dict) - assert_not_equal(ne.get_netenv_settings(), {}) + assert_is_instance(ne, dict) + assert_not_equal(ne, {}) |