Fix a key error in _process_role() + pep8 and py27 tests

The role does not always override the network information.
Update the networks in role_env, get the network from
parameter_defaults, fallback to parameters if not set and
finally if the netwok is not in parameters set default.

Also make default for networks: in templates json instead
of literal string.
This commit is contained in:
Harald Jensås 2018-10-09 19:49:56 +02:00
parent ef30ff2e56
commit c1364026fa
3 changed files with 22 additions and 11 deletions

View File

@ -354,11 +354,14 @@ def _process_role(role_file, base_envs, stack_name, args):
_add_identifier(role_env, 'overcloud_storage_net', args.id)
_add_identifier(role_env, 'overcloud_storage_mgmt_net', args.id)
_add_identifier(role_env, 'overcloud_tenant_net', args.id)
role_env['parameter_defaults']['networks'] = {
'private': role_env['parameter_defaults']['private_net'],
'provision': role_env['parameter_defaults']['provision_net'],
'public': role_env['parameter_defaults']['public_net'],
}
if not role_env['parameter_defaults'].get('networks'):
role_env['parameter_defaults']['networks'] = {}
for k, v in {'private': 'private_net',
'provision': 'provision_net',
'public': 'public_net'}.items():
role_env['parameter_defaults']['networks'].update(
{k: role_env['parameter_defaults'].get(
v, role_env['parameters'].get(v, k))})
role_file = 'env-%s-%s.yaml' % (stack_name, role)
_write_role_file(role_env, role_file)
return role_file, role

View File

@ -192,11 +192,11 @@ class TestIdEnv(unittest.TestCase):
# _process_role test data
role_base_data = {
'parameter_defaults': {
'overcloud_storage_mgmt_net': 'storage_mgmt-foo',
'overcloud_internal_net': 'internal-foo',
'overcloud_storage_net': 'storage-foo',
'overcloud_storage_mgmt_net': 'storage_mgmt',
'overcloud_internal_net': 'internal',
'overcloud_storage_net': 'storage',
'overcloud_tenant_net': 'tenant',
'role': 'control',
'overcloud_tenant_net': 'tenant-foo'
},
'parameters': {
'os_user': 'admin',
@ -398,8 +398,16 @@ class TestDeploy(testtools.TestCase):
output['parameters']['bmc_prefix'])
# These should be inherited
self.assertEqual('ipxe-boot', output['parameters']['baremetal_image'])
self.assertEqual('tenant-foo',
self.assertEqual('tenant-' + args.id,
output['parameter_defaults']['overcloud_tenant_net'])
self.assertEqual('internal-' + args.id,
output['parameter_defaults']['overcloud_internal_net']
)
self.assertEqual('storage-' + args.id,
output['parameter_defaults']['overcloud_storage_net'])
self.assertEqual('storage_mgmt-' + args.id,
output['parameter_defaults'][
'overcloud_storage_mgmt_net'])
# This should not be present in a role env, even if set in the file
self.assertNotIn('OS::OVB::BaremetalNetworks',
output['resource_registry'])

View File

@ -52,7 +52,7 @@ parameters:
networks:
type: json
default: '{"private": "private", "provision": "provision"}'
default: {"private": "private", "provision": "provision"}
description: A map of networks to their names.
bmc_prefix: