From 8a3a319492b82034b0e3515b5c4fa9c032148511 Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Mon, 25 Jan 2021 19:53:08 +0900 Subject: [PATCH] Add host_vars to define tasks executed before network configurations This change is a prep work to ensure tasks defined in ExtraConfigPre and NodeExtraConfig are executed after network configurations. Related-Bug: #1907214 Change-Id: I0e45090f8db1c1737e69ce906a12027bfe5c3ef0 (cherry picked from commit f19f451f88141c656c18a1c2a96b49874cfb1b0d) (cherry picked from commit adfee2e68d9efaac7b7b3f24f428ee1d366003cb) --- tripleo_common/templates/host_var_server.j2 | 6 ++++++ .../tests/utils/data/host_vars/overcloud-controller-0 | 2 ++ .../tests/utils/data/host_vars/overcloud-novacompute-0 | 2 ++ .../tests/utils/data/host_vars/overcloud-novacompute-1 | 2 ++ .../tests/utils/data/host_vars/overcloud-novacompute-2 | 2 ++ tripleo_common/utils/config.py | 9 +++++++++ 6 files changed, 23 insertions(+) diff --git a/tripleo_common/templates/host_var_server.j2 b/tripleo_common/templates/host_var_server.j2 index 8dd0126d9..a85b96d0c 100644 --- a/tripleo_common/templates/host_var_server.j2 +++ b/tripleo_common/templates/host_var_server.j2 @@ -1,3 +1,9 @@ +pre_network_{{ role }}: {% if not pre_network %} [] {% endif %} + +{% for deployment in pre_network %} + - {{ deployment }} +{% endfor %} + pre_deployments_{{ role }}: {% if not pre_deployments %} [] {% endif %} {% for deployment in pre_deployments %} diff --git a/tripleo_common/tests/utils/data/host_vars/overcloud-controller-0 b/tripleo_common/tests/utils/data/host_vars/overcloud-controller-0 index cd0dbe796..14de724db 100644 --- a/tripleo_common/tests/utils/data/host_vars/overcloud-controller-0 +++ b/tripleo_common/tests/utils/data/host_vars/overcloud-controller-0 @@ -1,3 +1,5 @@ +pre_network_Controller: [] + pre_deployments_Controller: - ControllerHostEntryDeployment - NetworkDeployment diff --git a/tripleo_common/tests/utils/data/host_vars/overcloud-novacompute-0 b/tripleo_common/tests/utils/data/host_vars/overcloud-novacompute-0 index 27d1d0bec..c7460b8d0 100644 --- a/tripleo_common/tests/utils/data/host_vars/overcloud-novacompute-0 +++ b/tripleo_common/tests/utils/data/host_vars/overcloud-novacompute-0 @@ -1,3 +1,5 @@ +pre_network_Compute: [] + pre_deployments_Compute: - ComputeHostEntryDeployment - NetworkDeployment diff --git a/tripleo_common/tests/utils/data/host_vars/overcloud-novacompute-1 b/tripleo_common/tests/utils/data/host_vars/overcloud-novacompute-1 index 2f7d0bd65..ccd90109a 100644 --- a/tripleo_common/tests/utils/data/host_vars/overcloud-novacompute-1 +++ b/tripleo_common/tests/utils/data/host_vars/overcloud-novacompute-1 @@ -1,3 +1,5 @@ +pre_network_Compute: [] + pre_deployments_Compute: - ComputeHostEntryDeployment - NetworkDeployment diff --git a/tripleo_common/tests/utils/data/host_vars/overcloud-novacompute-2 b/tripleo_common/tests/utils/data/host_vars/overcloud-novacompute-2 index 755bde995..eb15e09c9 100644 --- a/tripleo_common/tests/utils/data/host_vars/overcloud-novacompute-2 +++ b/tripleo_common/tests/utils/data/host_vars/overcloud-novacompute-2 @@ -1,3 +1,5 @@ +pre_network_Compute: [] + pre_deployments_Compute: - ComputeHostEntryDeployment - NetworkDeployment diff --git a/tripleo_common/utils/config.py b/tripleo_common/utils/config.py index 8246c1505..0c71f20d3 100644 --- a/tripleo_common/utils/config.py +++ b/tripleo_common/utils/config.py @@ -443,6 +443,9 @@ class Config(object): raise Exception(err_msg) role = self.get_role_from_server_id(stack, server_id) + server_pre_network = server_deployment_names.setdefault( + server_names[server_id], {}).setdefault( + 'pre_network', []) server_pre_deployments = server_deployment_names.setdefault( server_names[server_id], {}).setdefault( 'pre_deployments', []) @@ -460,6 +463,9 @@ class Config(object): 'PostConfig' in deployment.physical_resource_id: if deployment_name not in server_post_deployments: server_post_deployments.append(deployment_name) + elif 'PreNetworkConfig' in deployment.physical_resource_id: + if deployment_name not in server_pre_network: + server_pre_network.append(deployment_name) else: if deployment_name not in server_pre_deployments: server_pre_deployments.append(deployment_name) @@ -552,6 +558,8 @@ class Config(object): role_host_vars[role][server], default_flow_style=False) if role_host_vars else None) + pre_network = server_deployment_names.get( + server, {}).get('pre_network', []) pre_deployments = server_deployment_names.get( server, {}).get('pre_deployments', []) post_deployments = server_deployment_names.get( @@ -560,6 +568,7 @@ class Config(object): with open(host_var_server_path, 'w') as f: template_data = host_var_server_template.render( role=role, + pre_network=pre_network, pre_deployments=pre_deployments, post_deployments=post_deployments, ansible_host_vars=ansible_host_vars)