[ffwd3] Create nework_environment during node_extraction

When extracting nodes from stack during Undercloud upgrade
we should also extract network environment so we can use it
during the subsequent Overcloud upgrade.

Change-Id: Ic86c1cab0b5e79326c52098ebf1b3369a6cd3da2
(cherry picked from commit 61752801c0)
This commit is contained in:
Lukas Bezdicka
2022-07-20 16:22:11 +02:00
committed by Jesse Pretorius
parent 1908ed14eb
commit 556c1b54ed

View File

@@ -643,9 +643,17 @@ class ExtractProvisionedNode(command.Command):
data = []
warnings = []
network_environment = {'resource_registry': {},
'parameter_defaults': {}}
for role_name, entries in host_vars.items():
role_count = len(entries)
net_parameter_defaults = {}
net_resource_registry = {
"OS::TripleO::{}::Net::SoftwareConfig".format(role_name):
"OS::Heat::None"}
network_environment['resource_registry'].update(
net_resource_registry)
# skip zero count roles
if not role_count:
continue
@@ -692,6 +700,9 @@ class ExtractProvisionedNode(command.Command):
'Please edit the file and set the path to the correct '
'network config template.'.format(role_name))
else:
net_parameter_defaults = {
"{}NetworkConfigTemplate".format(role_name):
"{}".format(net_conf['template'])}
warnings.append(
'WARNING: Network config for role {} was '
'automatically converted from Heat template to '
@@ -752,7 +763,9 @@ class ExtractProvisionedNode(command.Command):
role_net_ip_map[role_name][net['network']][idx])
instances.append(instance)
if net_parameter_defaults != {}:
network_environment['parameter_defaults'].update(
net_parameter_defaults)
data.append(role)
# Write the file header
@@ -771,6 +784,15 @@ class ExtractProvisionedNode(command.Command):
yaml.dump(data, file_data, RoleDataDumper, width=120,
default_flow_style=False)
if len(network_environment['parameter_defaults']) > 0:
net_env_file = os.path.join(self.working_dir,
"{}-network-environment.yaml".format(
parsed_args.stack))
with open(net_env_file, 'w+') as nfp:
nfp.write(yaml.dump(network_environment,
width=120,
default_flow_style=False))
if parsed_args.output:
if (os.path.exists(parsed_args.output)
and not parsed_args.yes and sys.stdin.isatty()):