Check for available networks for a role

For network isolation, we specifcy available networks for role.
Therefore, there is no point in creating noop network resources for
networks that are not available/connected. This results in redundant
host entries for not available networks on overcloud nodes.

If a network is not available for a role we don't need to create
those extra noop resources.

For Undercloud/Standalone role we keep all networks in roles data
as the default ServiceNetMap specifies non ctlplane networks though
they map to ctlplane.

Change-Id: I07822ec0cba7eed352c0010eb893b5e5a522e95c
Depends-On: #https://review.openstack.org/624563
Closes-Bug: #1800811
(cherry picked from commit 5d275fb922)
This commit is contained in:
Rabi Mishra 2018-10-31 14:27:16 +05:30
parent ef36b443b7
commit 719d0098f2
4 changed files with 42 additions and 4 deletions

View File

@ -514,7 +514,7 @@ resources:
depends_on: {{role.name}}AllNodesDeployment depends_on: {{role.name}}AllNodesDeployment
properties: properties:
name: {{role.name}}AllNodesValidationDeployment name: {{role.name}}AllNodesValidationDeployment
config: {get_resource: AllNodesValidationConfig} config: {get_resource: {{role.name}}AllNodesValidationConfig}
servers: {get_attr: [{{role.name}}Servers, value]} servers: {get_attr: [{{role.name}}Servers, value]}
{{role.name}}IpListMap: {{role.name}}IpListMap:
@ -522,7 +522,7 @@ resources:
properties: properties:
ControlPlaneIpList: {get_attr: [{{role.name}}, ip_address]} ControlPlaneIpList: {get_attr: [{{role.name}}, ip_address]}
{%- for network in networks %} {%- for network in networks %}
{%- if network.enabled|default(true) %} {%- if network.enabled|default(true) and network.name in role.networks|default([]) %}
{{network.name}}IpList: {get_attr: [{{role.name}}, {{network.name_lower}}_ip_address]} {{network.name}}IpList: {get_attr: [{{role.name}}, {{network.name_lower}}_ip_address]}
{%- else %} {%- else %}
{{network.name}}IpList: {get_attr: [{{role.name}}, ip_address]} {{network.name}}IpList: {get_attr: [{{role.name}}, ip_address]}
@ -824,18 +824,22 @@ resources:
# ServiceNetMap's attribute values are available. # ServiceNetMap's attribute values are available.
depends_on: ServiceNetMap depends_on: ServiceNetMap
{%- for role in roles %}
# All Nodes Validations # All Nodes Validations
AllNodesValidationConfig: {{role.name}}AllNodesValidationConfig:
type: OS::TripleO::AllNodes::Validation type: OS::TripleO::AllNodes::Validation
properties: properties:
PingTestIps: PingTestIps:
list_join: list_join:
- ' ' - ' '
- -
{%- for network in networks if network.enabled|default(true) %} {%- for network in networks %}
{%- if network.enabled|default(true) and network.name in role.networks|default([]) %}
- yaql: - yaql:
expression: coalesce($.data, []).first(null) expression: coalesce($.data, []).first(null)
data: {get_attr: [{{primary_role_name}}, {{network.name_lower}}_ip_address]} data: {get_attr: [{{primary_role_name}}, {{network.name_lower}}_ip_address]}
{%- endif %}
{%- endfor %}
{%- endfor %} {%- endfor %}
UpdateWorkflow: UpdateWorkflow:

View File

@ -394,6 +394,7 @@ resources:
type: OS::TripleO::{{role.name}}::NodeUserData type: OS::TripleO::{{role.name}}::NodeUserData
{%- for network in networks %} {%- for network in networks %}
{%- if network.enabled|default(true) and network.name in role.networks|default([]) %}
{{network.name}}Port: {{network.name}}Port:
type: OS::TripleO::{{role.name}}::Ports::{{network.name}}Port type: OS::TripleO::{{role.name}}::Ports::{{network.name}}Port
properties: properties:
@ -405,6 +406,7 @@ resources:
{%- endif %} {%- endif %}
- {get_param: {{role.name}}IPs} - {get_param: {{role.name}}IPs}
NodeIndex: {get_param: NodeIndex} NodeIndex: {get_param: NodeIndex}
{%- endif %}
{%- endfor %} {%- endfor %}
NetworkConfig: NetworkConfig:
@ -412,7 +414,9 @@ resources:
properties: properties:
ControlPlaneIp: {get_attr: [{{server_resource_name}}, networks, ctlplane, 0]} ControlPlaneIp: {get_attr: [{{server_resource_name}}, networks, ctlplane, 0]}
{%- for network in networks %} {%- for network in networks %}
{%- if network.enabled|default(true) and network.name in role.networks|default([]) %}
{{network.name}}IpSubnet: {get_attr: [{{network.name}}Port, ip_subnet]} {{network.name}}IpSubnet: {get_attr: [{{network.name}}Port, ip_subnet]}
{%- endif %}
{%- endfor %} {%- endfor %}
NetIpMap: NetIpMap:
@ -420,9 +424,11 @@ resources:
properties: properties:
ControlPlaneIp: {get_attr: [{{server_resource_name}}, networks, ctlplane, 0]} ControlPlaneIp: {get_attr: [{{server_resource_name}}, networks, ctlplane, 0]}
{%- for network in networks %} {%- for network in networks %}
{%- if network.enabled|default(true) and network.name in role.networks|default([]) %}
{{network.name}}Ip: {get_attr: [{{network.name}}Port, ip_address]} {{network.name}}Ip: {get_attr: [{{network.name}}Port, ip_address]}
{{network.name}}IpSubnet: {get_attr: [{{network.name}}Port, ip_subnet]} {{network.name}}IpSubnet: {get_attr: [{{network.name}}Port, ip_subnet]}
{{network.name}}IpUri: {get_attr: [{{network.name}}Port, ip_address_uri]} {{network.name}}IpUri: {get_attr: [{{network.name}}Port, ip_address_uri]}
{%- endif %}
{%- endfor %} {%- endfor %}
NetHostMap: NetHostMap:
@ -431,6 +437,7 @@ resources:
type: json type: json
value: value:
{%- for network in networks %} {%- for network in networks %}
{%- if network.enabled|default(true) and network.name in role.networks|default([]) %}
{{network.name_lower}}: {{network.name_lower}}:
fqdn: fqdn:
list_join: list_join:
@ -443,6 +450,7 @@ resources:
- '.' - '.'
- - {get_attr: [{{server_resource_name}}, name]} - - {get_attr: [{{server_resource_name}}, name]}
- {{network.name.lower()}} - {{network.name.lower()}}
{%- endif %}
{%- endfor %} {%- endfor %}
ctlplane: ctlplane:
fqdn: fqdn:
@ -584,7 +592,9 @@ resources:
tripleo::profile::base::logging::fluentd::fluentd_groups: {get_param: LoggingGroups} tripleo::profile::base::logging::fluentd::fluentd_groups: {get_param: LoggingGroups}
tripleo::clouddomain: {get_param: CloudDomain} tripleo::clouddomain: {get_param: CloudDomain}
{%- for network in networks %} {%- for network in networks %}
{%- if network.enabled|default(true) and network.name in role.networks|default([]) %}
fqdn_{{network.name_lower}}: {get_attr: [NetHostMap, value, {{network.name_lower}}, fqdn]} fqdn_{{network.name_lower}}: {get_attr: [NetHostMap, value, {{network.name_lower}}, fqdn]}
{%- endif %}
{%- endfor %} {%- endfor %}
fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]} fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
fqdn_canonical: {get_attr: [NetHostMap, value, canonical, fqdn]} fqdn_canonical: {get_attr: [NetHostMap, value, canonical, fqdn]}
@ -675,7 +685,9 @@ resources:
str_replace: str_replace:
template: "PRIMARYIP,PRIMARYHOST.DOMAIN,PRIMARYHOST,\ template: "PRIMARYIP,PRIMARYHOST.DOMAIN,PRIMARYHOST,\
{%- for network in networks %} {%- for network in networks %}
{%- if network.enabled|default(true) and network.name in role.networks|default([]) %}
{{network.name}}IP,{{network.name}}HOST.DOMAIN,{{network.name}}HOST,\ {{network.name}}IP,{{network.name}}HOST.DOMAIN,{{network.name}}HOST,\
{%- endif %}
{%- endfor %} {%- endfor %}
CTLPLANEIP,CTLPLANEHOST.DOMAIN,CTLPLANEHOST" CTLPLANEIP,CTLPLANEHOST.DOMAIN,CTLPLANEHOST"
params: params:
@ -683,8 +695,10 @@ resources:
DOMAIN: {get_param: CloudDomain} DOMAIN: {get_param: CloudDomain}
PRIMARYHOST: {get_attr: [{{server_resource_name}}, name]} PRIMARYHOST: {get_attr: [{{server_resource_name}}, name]}
{%- for network in networks %} {%- for network in networks %}
{%- if network.enabled|default(true) and network.name in role.networks|default([]) %}
{{network.name}}IP: {get_attr: [{{network.name}}Port, ip_address]} {{network.name}}IP: {get_attr: [{{network.name}}Port, ip_address]}
{{network.name}}HOST: {get_attr: [NetHostMap, value, {{network.name_lower|default(network.name.lower())}}, short]} {{network.name}}HOST: {get_attr: [NetHostMap, value, {{network.name_lower|default(network.name.lower())}}, short]}
{%- endif %}
{%- endfor %} {%- endfor %}
CTLPLANEIP: {get_attr: [{{server_resource_name}}, networks, ctlplane, 0]} CTLPLANEIP: {get_attr: [{{server_resource_name}}, networks, ctlplane, 0]}
CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]} CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
@ -714,7 +728,9 @@ outputs:
description: Mapping of network names to hostnames description: Mapping of network names to hostnames
value: value:
{%- for network in networks %} {%- for network in networks %}
{%- if network.enabled|default(true) and network.name in role.networks|default([]) %}
{{network.name_lower|default(network.name.lower())}}: {get_attr: [NetHostMap, value, {{network.name_lower|default(network.name.lower()) }}, fqdn]} {{network.name_lower|default(network.name.lower())}}: {get_attr: [NetHostMap, value, {{network.name_lower|default(network.name.lower()) }}, fqdn]}
{%- endif %}
{%- endfor %} {%- endfor %}
ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]} ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
canonical: {get_attr: [NetHostMap, value, canonical, fqdn]} canonical: {get_attr: [NetHostMap, value, canonical, fqdn]}
@ -724,7 +740,9 @@ outputs:
template: | template: |
PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
{%- for network in networks %} {%- for network in networks %}
{%- if network.enabled|default(true) and network.name in role.networks|default([]) %}
{{network.name}}IP {{network.name}}HOST.DOMAIN {{network.name}}HOST {{network.name}}IP {{network.name}}HOST.DOMAIN {{network.name}}HOST
{%- endif %}
{%- endfor %} {%- endfor %}
CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
params: params:
@ -732,8 +750,10 @@ outputs:
DOMAIN: {get_param: CloudDomain} DOMAIN: {get_param: CloudDomain}
PRIMARYHOST: {get_attr: [{{server_resource_name}}, name]} PRIMARYHOST: {get_attr: [{{server_resource_name}}, name]}
{%- for network in networks %} {%- for network in networks %}
{%- if network.enabled|default(true) and network.name in role.networks|default([]) %}
{{network.name}}IP: {get_attr: [{{network.name}}Port, ip_address]} {{network.name}}IP: {get_attr: [{{network.name}}Port, ip_address]}
{{network.name}}HOST: {get_attr: [NetHostMap, value, {{network.name_lower|default(network.name.lower())}}, short]} {{network.name}}HOST: {get_attr: [NetHostMap, value, {{network.name_lower|default(network.name.lower())}}, short]}
{%- endif %}
{%- endfor %} {%- endfor %}
CTLPLANEIP: {get_attr: [{{server_resource_name}}, networks, ctlplane, 0]} CTLPLANEIP: {get_attr: [{{server_resource_name}}, networks, ctlplane, 0]}
CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]} CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
@ -807,7 +827,9 @@ outputs:
description: The os-collect-config configuration associated with this server resource description: The os-collect-config configuration associated with this server resource
value: {get_attr: [{{server_resource_name}}, os_collect_config]} value: {get_attr: [{{server_resource_name}}, os_collect_config]}
{%- for network in networks %} {%- for network in networks %}
{%- if network.enabled|default(true) and network.name in role.networks|default([]) %}
{{network.name_lower|default(network.name.lower())}}_ip_address: {{network.name_lower|default(network.name.lower())}}_ip_address:
description: IP address of the server in the {{network.name}} network description: IP address of the server in the {{network.name}} network
value: {get_attr: [{{network.name}}Port, ip_address]} value: {get_attr: [{{network.name}}Port, ip_address]}
{%- endif %}
{%- endfor %} {%- endfor %}

View File

@ -10,6 +10,12 @@
tags: tags:
- primary - primary
- controller - controller
networks:
- External
- InternalApi
- Storage
- StorageMgmt
- Tenant
ServicesDefault: ServicesDefault:
- OS::TripleO::Services::Aide - OS::TripleO::Services::Aide
- OS::TripleO::Services::Apache - OS::TripleO::Services::Apache

View File

@ -13,6 +13,12 @@
tags: tags:
- primary - primary
- controller - controller
networks:
- External
- InternalApi
- Storage
- StorageMgmt
- Tenant
ServicesDefault: ServicesDefault:
- OS::TripleO::Services::Aide - OS::TripleO::Services::Aide
- OS::TripleO::Services::Apache - OS::TripleO::Services::Apache