diff --git a/network/ports/net_ip_list_map.j2.yaml b/network/ports/net_ip_list_map.j2.yaml index e39df426ed..8268265708 100644 --- a/network/ports/net_ip_list_map.j2.yaml +++ b/network/ports/net_ip_list_map.j2.yaml @@ -29,6 +29,9 @@ parameters: default: false description: Whether this is an cell additional to the default cell. type: boolean + RoleNetworks: + default: ctlplane + type: comma_delimited_list conditions: is_cell: {equals: [{get_param: NovaAdditionalCell}, true]} @@ -62,9 +65,14 @@ resources: type: json value: map_replace: - - ctlplane: {get_param: ControlPlaneIpList} + - yaql: + expression: let(root => $) -> dict($.data.net_ip_map.items().where($[0] in $root.data.role_networks)) + data: + role_networks: {get_param: RoleNetworks} + net_ip_map: + ctlplane: {get_param: ControlPlaneIpList} {%- for network in networks if network.enabled|default(true) %} - {{network.name_lower}}: {get_param: {{network.name}}IpList} + {{network.name_lower}}: {get_param: {{network.name}}IpList} {%- endfor %} - keys: ctlplane: ctlplane # Ensure one key is present, in case no enabled networks diff --git a/overcloud.j2.yaml b/overcloud.j2.yaml index d17453eddd..57a196e61f 100644 --- a/overcloud.j2.yaml +++ b/overcloud.j2.yaml @@ -660,12 +660,13 @@ resources: type: OS::TripleO::Network::Ports::NetIpListMap properties: ControlPlaneIpList: {get_attr: [{{role.name}}, ip_address]} - {%- for network in networks %} - {%- if network.enabled|default(true) and network.name in role.networks|default([]) %} + {%- for network in networks if network.enabled|default(true) and network.name in role.networks|default([]) %} {{network.name}}IpList: {get_attr: [{{role.name}}, {{network.name_lower}}_ip_address]} - {%- else %} - {{network.name}}IpList: {get_attr: [{{role.name}}, ip_address]} - {%- endif %} + {%- endfor %} + RoleNetworks: + - ctlplane + {%- for network in networks if network.enabled|default(true) and network.name in role.networks|default([]) %} + - {{network.name_lower}} {%- endfor %} EnabledServices: {get_attr: [{{role.name}}ServiceNames, value]} ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map_lower]} diff --git a/releasenotes/notes/fix-deployment-failure-when-network-disabled-156190243ff239ea.yaml b/releasenotes/notes/fix-deployment-failure-when-network-disabled-156190243ff239ea.yaml new file mode 100644 index 0000000000..af565a0e67 --- /dev/null +++ b/releasenotes/notes/fix-deployment-failure-when-network-disabled-156190243ff239ea.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + Fixed an issue where disabling one or more networks in + ``network_data.yaml`` caused deployment failure. (See bug: + `#1842001 `_)