diff --git a/common/deploy-steps.j2 b/common/deploy-steps.j2 index 2a09bf792f..fb5b299b83 100644 --- a/common/deploy-steps.j2 +++ b/common/deploy-steps.j2 @@ -131,6 +131,10 @@ parameters: default: false description: Optional validation to ensure FQDN as set by Nova matches the name set in /etc/hosts. type: boolean + PingTestGatewayIPsMap: + default: {} + description: A map of role name to list of gateway IP addresses for each network, used to ping test each gateway. + type: json PingTestIpsMap: default: '' description: A map of role name to a space separated list of IP addresses used to ping test each available network interface. @@ -384,6 +388,7 @@ outputs: validate_controllers_icmp: {get_param: ValidateControllersIcmp} validate_gateways_icmp: {get_param: ValidateGatewaysIcmp} validate_fqdn: {get_param: ValidateFqdn} + ping_test_gateway_ips: {get_param: PingTestGatewayIPsMap} ping_test_ips: {get_param: PingTestIpsMap} stack_action: {get_param: StackAction} network_safe_defaults: {get_param: NetworkSafeDefaults} @@ -641,6 +646,7 @@ outputs: tripleo_nodes_validation_validate_gateway_icmp: "{{ validate_gateways_icmp }}" tripleo_nodes_validation_validate_fqdn: "{{ validate_fqdn }}" tripleo_nodes_validation_ping_test_ips: "{{ ping_test_ips.get(tripleo_role_name).split(' ') | list | unique }}" + tripleo_nodes_validation_ping_test_gateway_ips: "{{ ping_test_gateway_ips.get(tripleo_role_name) }}" tags: - overcloud - pre_deploy_steps diff --git a/overcloud.j2.yaml b/overcloud.j2.yaml index 7b3dcc92df..caf4e44836 100644 --- a/overcloud.j2.yaml +++ b/overcloud.j2.yaml @@ -1186,6 +1186,24 @@ resources: {{role.name}}Count: {get_param: {{role.name}}Count} {%- endfor %} ServiceNetMapLower: {get_attr: [ServiceNetMap, service_net_map_lower]} + PingTestGatewayIPsMap: +{%- for role in roles %} + {{role.name}}: + yaql: + expression: list($.data.where($ != null)).flatten() + data: + - {get_attr: [Networks, net_attributes_map, ctlplane, subnets, {get_param: {{role.name}}ControlPlaneSubnet}, gateway_ip]} + {%- for network in networks %} + {%- if network.enabled|default(true) and network.name in role.networks|default([]) %} + {%- if role.networks is mapping %} + {%- set _role_net_subnet = role.networks[network.name]['subnet'] %} + {%- else %} + {%- set _role_net_subnet = network.name_lower + '_subnet' %} + {%- endif %} + - {get_attr: [Networks, net_attributes_map, {{network.name_lower}}, subnets, {{ _role_net_subnet }}, gateway_ip]} + {%- endif %} + {%- endfor %} +{%- endfor %} PingTestIpsMap: {%- for role in roles %} {{role.name}}: