node extract provisioned - warning no net_conf tpl

Add a warning to the baremetal_deployment.yaml generated
with the node extract provisioned command in case no
network config was found for a role in the deployed stack.

This is always true if the current stack is pre-Victoria, since
the command looks for Ansible J2 template. pre-Victoria used
Heat template so the template parameter won't be set.

Change-Id: I6789799480a1391b92336e2518a2ac2b800288e5
(cherry picked from commit 90ee1b3a72)
This commit is contained in:
Harald Jensås 2022-01-21 16:28:08 +01:00 committed by Lukas Bezdicka
parent d451aaa291
commit 930663240b
2 changed files with 18 additions and 4 deletions

View File

@ -751,7 +751,6 @@ class TestExtractProvisionedNode(test_utils.TestCommand):
'parameters': {
'ComputeHostnameFormat': '%stackname%-novacompute-%index%',
'ControllerHostnameFormat': '%stackname%-controller-%index%',
'ComputeNetworkConfigTemplate': 'templates/compute.j2',
'ControllerNetworkConfigTemplate': 'templates/controller.j2'
},
'outputs': [{
@ -927,7 +926,7 @@ class TestExtractProvisionedNode(test_utils.TestCommand):
'network_config': {'network_config_update': False,
'physical_bridge_name': 'br-ex',
'public_interface_name': 'nic1',
'template': 'templates/compute.j2'},
'template': None},
'networks': [{'network': 'ctlplane',
'vif': True},
{'network': 'internal_api',
@ -968,7 +967,11 @@ class TestExtractProvisionedNode(test_utils.TestCommand):
}], yaml.safe_load(result))
with open(self.extract_file.name) as f:
self.assertEqual(yaml.safe_load(result), yaml.safe_load(f))
file_content = f.read()
self.assertEqual(yaml.safe_load(result), yaml.safe_load(file_content))
self.assertIn('# WARNING: No network config found for role Compute. '
'Please edit the file and set the path to the correct '
'network config template.\n', file_content)
def test_extract_ips_from_pool(self):
stack = mock.Mock()
@ -1006,7 +1009,7 @@ class TestExtractProvisionedNode(test_utils.TestCommand):
'network_config': {'network_config_update': False,
'physical_bridge_name': 'br-ex',
'public_interface_name': 'nic1',
'template': 'templates/compute.j2'},
'template': None},
'networks': [{'network': 'ctlplane',
'vif': True},
{'network': 'internal_api',

View File

@ -550,6 +550,7 @@ class ExtractProvisionedNode(command.Command):
hostname_node_map[hostname] = node.name
data = []
warnings = []
for role_name, entries in host_vars.items():
role_count = len(entries)
@ -588,6 +589,11 @@ class ExtractProvisionedNode(command.Command):
net_conf = defaults['network_config'] = {}
net_conf['template'] = parameters.get(
role_name + 'NetworkConfigTemplate')
if net_conf['template'] is None:
warnings.append(
'WARNING: No network config found for role {}. Please '
'edit the file and set the path to the correct network '
'config template.'.format(role_name))
if parameters.get(role_name + 'NetworkDeploymentActions'):
network_deployment_actions = parameters.get(
@ -649,6 +655,11 @@ class ExtractProvisionedNode(command.Command):
datetime.datetime.now().isoformat())
file_data.write('# openstack %s\n#\n\n' %
' '.join(self.app.command_options))
# Write any warnings in the file header
for warning in warnings:
file_data.write('# {}\n'.format(warning))
if warnings:
file_data.write(('#\n\n'))
# Write the data
if data:
yaml.dump(data, file_data, RoleDataDumper, width=120,