Fix role id logic

There was a minor bug in the role id logic that was causing the
id to incorrectly have a trailing - if a role of '' was passed in
the deployment.  Since env-base.yaml includes this value, we need
to handle it correctly.
This commit is contained in:
Ben Nemec 2017-08-16 16:18:46 -05:00
parent d67f0cf65b
commit b315f165e2
2 changed files with 22 additions and 1 deletions

View File

@ -131,7 +131,7 @@ def _generate_id_env(args):
_add_identifier(env_data, 'public_net', args.id, default='public')
_add_identifier(env_data, 'baremetal_prefix', args.id, default='baremetal')
role = env_data['parameter_defaults'].get('role')
if role is not None:
if role:
_add_identifier(env_data, 'baremetal_prefix', role)
_add_identifier(env_data, 'bmc_prefix', args.id, default='bmc')
_add_identifier(env_data, 'undercloud_name', args.id, default='undercloud')

View File

@ -93,6 +93,7 @@ test_env = u"""parameters:
test_env_param_defaults = u"""
parameter_defaults:
overcloud_internal_net: internalapi
role: ''
"""
test_env_output = {
'baremetal_prefix': 'baremetal-foo',
@ -162,6 +163,26 @@ class TestIdEnv(unittest.TestCase):
self.assertEqual(v, dumped_dict['parameters'][k])
self.assertEqual(v, dumped_dict['parameter_defaults'][k])
@mock.patch('openstack_virtual_baremetal.deploy._build_env_data')
@mock.patch('yaml.safe_dump')
def test_generate_with_role(self, mock_safe_dump, mock_bed):
mock_args = mock.Mock()
mock_args.id = 'foo'
mock_args.env = ['foo.yaml']
env = (test_env + test_env_param_defaults)
mock_bed.return_value = yaml.safe_load(env)
mock_bed.return_value['parameter_defaults']['role'] = 'compute'
env_output = dict(test_env_output)
env_output['overcloud_internal_net'] = 'internalapi-foo'
env_output['baremetal_prefix'] = 'baremetal-foo-compute'
path = deploy._generate_id_env(mock_args)
self.assertEqual(['foo.yaml', 'env-foo.yaml'], path)
dumped_dict = mock_safe_dump.call_args_list[0][0][0]
for k, v in env_output.items():
if k in mock_bed.return_value['parameters']:
self.assertEqual(v, dumped_dict['parameters'][k])
self.assertEqual(v, dumped_dict['parameter_defaults'][k])
# _process_role test data
role_base_data = {
'parameter_defaults': {