From 741e8d3be8d549ded0ea14180e156df70f108a19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Harald=20Jens=C3=A5s?= Date: Thu, 26 Nov 2020 16:15:19 +0100 Subject: [PATCH] Add role_net_map to expand roles output A mapping of roles to associated networks. The mapping will be used to write resource registry overrides in the populate network ports environment module. Partial-Implements: blueprint network-data-v2-ports Change-Id: I7bc7f2986cd7574b6c7252dc20f196f59d1f9df6 --- .../module_utils/baremetal_deploy.py | 7 +++- .../modules/tripleo_baremetal_expand_roles.py | 8 +++-- .../module_utils/test_baremetal_deploy.py | 36 +++++++++---------- 3 files changed, 29 insertions(+), 22 deletions(-) diff --git a/tripleo_ansible/ansible_plugins/module_utils/baremetal_deploy.py b/tripleo_ansible/ansible_plugins/module_utils/baremetal_deploy.py index ac02d49d1..a9990294b 100644 --- a/tripleo_ansible/ansible_plugins/module_utils/baremetal_deploy.py +++ b/tripleo_ansible/ansible_plugins/module_utils/baremetal_deploy.py @@ -170,8 +170,10 @@ def expand(roles, stack_name, expand_provisioned=True, default_image=None, instances = [] hostname_map = {} parameter_defaults = {'HostnameMap': hostname_map} + role_net_map = {} for role in roles: name = role['name'] + role_net_map.setdefault(name, set()) hostname_format = build_hostname_format( role.get('hostname_format'), name) count = role.get('count', 1) @@ -260,6 +262,9 @@ def expand(roles, stack_name, expand_provisioned=True, default_image=None, if provisioned == expand_provisioned: instances.append(inst) + role_net_map[name].update( + [x['network'] for x in inst.get('networks', [])]) + parameter_defaults['%sCount' % name] = ( provisioned_count) @@ -268,7 +273,7 @@ def expand(roles, stack_name, expand_provisioned=True, default_image=None, env = {'parameter_defaults': parameter_defaults} else: env = {} - return instances, env + return instances, env, role_net_map def merge_networks_defaults(defaults, instance): diff --git a/tripleo_ansible/ansible_plugins/modules/tripleo_baremetal_expand_roles.py b/tripleo_ansible/ansible_plugins/modules/tripleo_baremetal_expand_roles.py index 4ad776cc5..4dea1672e 100644 --- a/tripleo_ansible/ansible_plugins/modules/tripleo_baremetal_expand_roles.py +++ b/tripleo_ansible/ansible_plugins/modules/tripleo_baremetal_expand_roles.py @@ -216,7 +216,7 @@ def main(): try: if state in ('present', 'all'): - present, env = bd.expand( + present, env, role_net_map = bd.expand( roles=module.params['baremetal_deployment'], stack_name=module.params['stack_name'], expand_provisioned=True, @@ -226,13 +226,14 @@ def main(): ssh_public_keys=module.params['ssh_public_keys'], ) if state in ('absent', 'all'): - absent, _ = bd.expand( + absent, _, _ = bd.expand( roles=module.params['baremetal_deployment'], stack_name=module.params['stack_name'], expand_provisioned=False, default_image=module.params['default_image'], ) env = {} + role_net_map = {} if state == 'present': instances = present elif state == 'absent': @@ -244,7 +245,8 @@ def main(): changed=True, msg='Expanded to %d instances' % len(instances), instances=instances, - environment=env + environment=env, + role_net_map=role_net_map ) except Exception as e: module.fail_json(msg=str(e)) diff --git a/tripleo_ansible/tests/plugins/module_utils/test_baremetal_deploy.py b/tripleo_ansible/tests/plugins/module_utils/test_baremetal_deploy.py index cd8f17e7c..21dc0f65d 100644 --- a/tripleo_ansible/tests/plugins/module_utils/test_baremetal_deploy.py +++ b/tripleo_ansible/tests/plugins/module_utils/test_baremetal_deploy.py @@ -102,7 +102,7 @@ class TestExpandRoles(base.TestCase): {'name': 'Compute'}, {'name': 'Controller'}, ] - instances, environment = bd.expand( + instances, environment, role_net_map = bd.expand( roles, 'overcloud', True, self.default_image ) @@ -134,7 +134,7 @@ class TestExpandRoles(base.TestCase): {'name': 'Compute'}, {'name': 'Controller'}, ] - instances, environment = bd.expand( + instances, environment, role_net_map = bd.expand( roles, 'overcloud', True, self.default_image, self.default_network ) self.assertEqual( @@ -165,7 +165,7 @@ class TestExpandRoles(base.TestCase): ]} }, ] - instances, environment = bd.expand( + instances, environment, role_net_map = bd.expand( roles, 'overcloud', True, self.default_image, None ) self.assertEqual( @@ -196,7 +196,7 @@ class TestExpandRoles(base.TestCase): ]} }, ] - instances, environment = bd.expand( + instances, environment, role_net_map = bd.expand( roles, 'overcloud', True, self.default_image, self.default_network ) self.assertEqual( @@ -229,7 +229,7 @@ class TestExpandRoles(base.TestCase): ]} }, ] - instances, environment = bd.expand( + instances, environment, role_net_map = bd.expand( roles, 'overcloud', True, self.default_image, self.default_network ) self.assertEqual( @@ -289,7 +289,7 @@ class TestExpandRoles(base.TestCase): 'hostname': 'overcloud-controller-1', }] }] - instances, environment = bd.expand( + instances, environment, role_net_map = bd.expand( roles, 'overcloud', True, self.default_image ) self.assertEqual( @@ -321,7 +321,7 @@ class TestExpandRoles(base.TestCase): }, 'hostname_format': 'controller-%index%.example.com' }] - instances, environment = bd.expand( + instances, environment, role_net_map = bd.expand( roles, 'overcloud', True, self.default_image, user_name='heat-admin', ssh_public_keys='aaaa' ) @@ -397,7 +397,7 @@ class TestExpandRoles(base.TestCase): 'vif': True}]}, ]}, ] - instances, environment = bd.expand( + instances, environment, role_net_map = bd.expand( roles, 'overcloud', True, self.default_image ) self.assertEqual( @@ -464,7 +464,7 @@ class TestExpandRoles(base.TestCase): 'nics': [{'subnet': 'leaf-2'}]}, ]}, ] - instances, environment = bd.expand( + instances, environment, role_net_map = bd.expand( roles, 'overcloud', True, self.default_image ) self.assertEqual([ @@ -524,7 +524,7 @@ class TestExpandRoles(base.TestCase): 'provisioned': False }] }] - instances, environment = bd.expand( + instances, environment, role_net_map = bd.expand( roles, 'overcloud', True, self.default_image ) self.assertEqual([ @@ -553,7 +553,7 @@ class TestExpandRoles(base.TestCase): }, environment['parameter_defaults']) - instances, environment = bd.expand( + instances, environment, role_net_map = bd.expand( roles, 'overcloud', False, self.default_image ) self.assertEqual([ @@ -584,7 +584,7 @@ class TestExpandRoles(base.TestCase): 'provisioned': False }] }] - instances, environment = bd.expand( + instances, environment, role_net_map = bd.expand( roles, 'overcloud', True, self.default_image ) self.assertEqual([ @@ -623,7 +623,7 @@ class TestExpandRoles(base.TestCase): }, environment['parameter_defaults']) - instances, environment = bd.expand( + instances, environment, role_net_map = bd.expand( roles, 'overcloud', False, self.default_image ) self.assertEqual([ @@ -663,7 +663,7 @@ class TestExpandRoles(base.TestCase): 'provisioned': True }] }] - instances, environment = bd.expand( + instances, environment, role_net_map = bd.expand( roles, 'overcloud', True, self.default_image ) self.assertEqual([ @@ -694,7 +694,7 @@ class TestExpandRoles(base.TestCase): }, environment['parameter_defaults']) - instances, environment = bd.expand( + instances, environment, role_net_map = bd.expand( roles, 'overcloud', False, self.default_image ) self.assertEqual([ @@ -732,7 +732,7 @@ class TestExpandRoles(base.TestCase): 'provisioned': True }] }] - instances, environment = bd.expand( + instances, environment, role_net_map = bd.expand( roles, 'overcloud', True, self.default_image ) self.assertEqual([ @@ -763,7 +763,7 @@ class TestExpandRoles(base.TestCase): }, environment['parameter_defaults']) - instances, environment = bd.expand( + instances, environment, role_net_map = bd.expand( roles, 'overcloud', False, self.default_image ) self.assertEqual([ @@ -836,7 +836,7 @@ class TestExpandRoles(base.TestCase): 'nics': [{'subnet': 'leaf-2'}]}, ]}, ] - instances, environment = bd.expand( + instances, environment, role_net_map = bd.expand( roles, 'overcloud', True, self.default_image ) self.assertEqual(