2018-03-05 19:28:35 +01:00
|
|
|
heat_template_version: rocky
|
Remove ipv6 specific network templates
This change renders the IPv6 versions of the isolated
networks using j2. To allow for backward compatibility,
there will be 2 versions of the network definitions,
<network>.yaml and <network>_v6.yaml. If the ip_subnet
contains an IPv6 address, or if ipv6: true is set on the
network definition in network_data.yaml, then the
<network>.yaml version will contain an IPv6 definition,
otherwise the <network>.yaml will be IPv4, and the
<network>_v6.yaml will be IPv6.
In a future follow-up patch, we will probably only
create the required versions of the networks, either
IPv4, IPv6, not both.
The ipv6_subnet, ipv6_allocation_pools, and ipv6_gateway
settings in the network_data.yaml definition file are
used for the <network>_v6.yaml network definition.
Note that these subnet/cidr/gateway definitions only set
the defaults, which can be overridden with parameters
set in an environment file.
Since the parameters for IP and subnet range are the
same (e.g. InternalApiNetCidr applies to both IPv4/v6),
only one version can be used at a time. If an operator
wishes to use dual-stack IPv4/IPv6, then two different
networks should be created, and both networks can be
applied to a single interface.
Note that the workflow for the operator is the same as
before this change, but a new example template has been
added to environments/network-environment-v6.yaml.
Change-Id: I0e674e4b1e43786717ae6416571dde3a0e11a5cc
Partially-Implements: blueprint composable-networks
Closes-bug: 1714115
2017-08-30 11:26:52 -07:00
|
|
|
|
|
|
|
description: >
|
|
|
|
{{network.name}} network definition (automatically generated).
|
|
|
|
|
|
|
|
parameters:
|
|
|
|
# the defaults here work for static IP assignment (IPAM) only
|
|
|
|
{{network.name}}NetCidr:
|
|
|
|
{%- if network.ipv6 or ipv6_override %}
|
|
|
|
default: "{{network.ipv6_subnet|default(network.ip_subnet|default(""))}}"
|
|
|
|
{%- else %}
|
|
|
|
default: "{{network.ip_subnet|default("")}}"
|
|
|
|
{%- endif %}
|
|
|
|
description: Cidr for the {{network.name_lower}} network.
|
|
|
|
type: string
|
|
|
|
{{network.name}}NetValueSpecs:
|
|
|
|
default: {'provider:physical_network': '{{network.name_lower}}', 'provider:network_type': 'flat'}
|
|
|
|
description: Value specs for the {{network.name_lower}} network.
|
|
|
|
type: json
|
|
|
|
{%- if not ":" in network.ip_subnet and not network.ipv6 and not ipv6_override %}
|
|
|
|
{{network.name}}NetEnableDHCP:
|
|
|
|
default: false
|
|
|
|
description: Whether to enable DHCP on the associated subnet (IPv4 only).
|
|
|
|
type: boolean
|
|
|
|
{%- endif %}
|
|
|
|
{{network.name}}NetAdminStateUp:
|
|
|
|
default: false
|
|
|
|
description: The admin state of the network.
|
|
|
|
type: boolean
|
|
|
|
{{network.name}}NetShared:
|
|
|
|
default: false
|
|
|
|
description: Whether this network is shared across all tenants.
|
|
|
|
type: boolean
|
|
|
|
{{network.name}}NetName:
|
|
|
|
default: {{network.name_lower}}
|
|
|
|
description: The name of the {{network.name_lower}} network.
|
|
|
|
type: string
|
|
|
|
{{network.name}}SubnetName:
|
|
|
|
default: {{network.name_lower}}_subnet
|
|
|
|
description: The name of the {{network.name_lower}} subnet in Neutron.
|
|
|
|
type: string
|
|
|
|
{{network.name}}AllocationPools:
|
|
|
|
{%- if ":" in network.ip_subnet or network.ipv6 or ipv6_override %}
|
|
|
|
default: {{network.ipv6_allocation_pools|default(network.allocation_pools|default([]))}}
|
|
|
|
{%- else %}
|
|
|
|
default: {{network.allocation_pools|default([])}}
|
|
|
|
{%- endif %}
|
|
|
|
description: Ip allocation pool range for the {{network.name_lower}} network.
|
|
|
|
type: json
|
|
|
|
{%- if ":" in network.ip_subnet or network.ipv6 or ipv6_override %}
|
|
|
|
IPv6AddressMode:
|
|
|
|
default: dhcpv6-stateful
|
|
|
|
description: Neutron subnet IPv6 address mode
|
|
|
|
type: string
|
|
|
|
IPv6RAMode:
|
|
|
|
default: dhcpv6-stateful
|
|
|
|
description: Neutron subnet IPv6 router advertisement mode
|
|
|
|
type: string
|
|
|
|
{%- endif %}
|
|
|
|
{{network.name}}InterfaceDefaultRoute:
|
|
|
|
{%- if network.ipv6 or ipv6_override %}
|
|
|
|
default: "{{network.gateway_ipv6|default(network.gateway_ip|default(''))}}"
|
|
|
|
{%- else %}
|
|
|
|
default: "{{network.gateway_ip|default('')}}"
|
|
|
|
{%- endif %}
|
|
|
|
description: default route for the {{network.name_lower}} network
|
|
|
|
type: string
|
|
|
|
{%- if network.vlan %}
|
|
|
|
{{network.name}}NetworkVlanID:
|
2019-03-21 10:02:25 +01:00
|
|
|
default: {{network.vlan|default(1)}}
|
Render NIC config templates with jinja2
This change converts the existing NIC templates to jinja2 in
order to dynamically render the ports and networks according
to the network_data.yaml. If networks are added to the
network_data.yaml file, parameters will be added to all
NIC templates. The YAML files (as output from jinja with
the default network_data.yaml) are present as an example.
The roles in roles_data.yaml are used to produce NIC configs
for the standard and custom composable roles. In order to
keep the ordering of NICs the same in the multiple-nics
templates, the order of networks was changed in the
network_data.yaml file. This is reflected in the network
templates, and in some of the files that is the only
change.
The roles and roles_data.yaml were modified to include
a legacy name for the NIC config templates for the
built-in roles Controller, Compute, Object Storage,
Block Storage, Ceph Storage, Compute-DPDK, and
Networker roles. There will now be a file produced
with the legacy name, but also one produced with the
<role>-role.j2.yaml format (along with environment
files to help use the new filenames).
Note this change also fixes some typos as well as
a number of templates that had VLANs with device:
entries which were ignored.
Closes-Bug: 1737041
Depends-On: I49c0245c36de3103671080fd1c8cfb3432856f35
Change-Id: I3bdb7d00dab5a023dd8b9c94c0f89f84357ae7a4
2017-11-28 17:00:59 -08:00
|
|
|
description: Vlan ID for the {{network.name_lower}} network traffic.
|
Remove ipv6 specific network templates
This change renders the IPv6 versions of the isolated
networks using j2. To allow for backward compatibility,
there will be 2 versions of the network definitions,
<network>.yaml and <network>_v6.yaml. If the ip_subnet
contains an IPv6 address, or if ipv6: true is set on the
network definition in network_data.yaml, then the
<network>.yaml version will contain an IPv6 definition,
otherwise the <network>.yaml will be IPv4, and the
<network>_v6.yaml will be IPv6.
In a future follow-up patch, we will probably only
create the required versions of the networks, either
IPv4, IPv6, not both.
The ipv6_subnet, ipv6_allocation_pools, and ipv6_gateway
settings in the network_data.yaml definition file are
used for the <network>_v6.yaml network definition.
Note that these subnet/cidr/gateway definitions only set
the defaults, which can be overridden with parameters
set in an environment file.
Since the parameters for IP and subnet range are the
same (e.g. InternalApiNetCidr applies to both IPv4/v6),
only one version can be used at a time. If an operator
wishes to use dual-stack IPv4/IPv6, then two different
networks should be created, and both networks can be
applied to a single interface.
Note that the workflow for the operator is the same as
before this change, but a new example template has been
added to environments/network-environment-v6.yaml.
Change-Id: I0e674e4b1e43786717ae6416571dde3a0e11a5cc
Partially-Implements: blueprint composable-networks
Closes-bug: 1714115
2017-08-30 11:26:52 -07:00
|
|
|
type: number
|
|
|
|
{%- endif %}
|
2018-07-04 23:05:27 +02:00
|
|
|
{{network.name}}Routes:
|
|
|
|
default: {{network.routes|default([])}}
|
|
|
|
description: >
|
|
|
|
Routes for the {{network.name_lower}} network traffic.
|
|
|
|
JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}]
|
|
|
|
Routes are added to the host_routes property on the subnet in neutron
|
|
|
|
when the network and subnet is created.
|
|
|
|
type: json
|
2018-09-04 01:08:28 +02:00
|
|
|
{{network.name}}Mtu:
|
|
|
|
default: {{network.mtu|default('1500')}}
|
|
|
|
description: The maximum transmission unit (MTU) size(in bytes) that is
|
|
|
|
guaranteed to pass through the data path of the segments in the
|
|
|
|
{{network.name}} network.
|
|
|
|
type: number
|
2018-07-12 15:03:23 +02:00
|
|
|
{%- for subnet in network.subnets|default({}) if network.subnets[subnet].enabled|default(true) %}
|
|
|
|
{{network.name}}SubnetCidr_{{subnet}}:
|
|
|
|
{%- if network.ipv6 or ipv6_override %}
|
|
|
|
default: "{{network.subnets[subnet]['ipv6_subnet']|default(network.subnets[subnet]['ip_subnet']|default(""))}}"
|
|
|
|
{%- else %}
|
|
|
|
default: "{{network.subnets[subnet]['ip_subnet']|default("")}}"
|
|
|
|
{%- endif %}
|
|
|
|
description: |
|
|
|
|
Cidr for the {{network.name_lower}} network's {{subnet}} subnet.
|
|
|
|
type: string
|
|
|
|
{{network.name}}AllocationPools_{{subnet}}:
|
|
|
|
{%- if ":" in network.subnets[subnet]['ip_subnet'] or network.ipv6 or ipv6_override %}
|
|
|
|
default: {{network.subnets[subnet]['ipv6_allocation_pools']|default(network.subnets[subnet]['allocation_pools']|default([]))}}
|
|
|
|
{%- else %}
|
|
|
|
default: {{network.subnets[subnet]['allocation_pools']|default([])}}
|
|
|
|
{%- endif %}
|
|
|
|
description: |
|
|
|
|
Ip allocation pool range for the {{network.name_lower}} network's {{subnet}} subnet.
|
|
|
|
type: json
|
|
|
|
{{network.name}}InterfaceDefaultRoute_{{subnet}}:
|
|
|
|
{%- if ":" in network.subnets[subnet]['ip_subnet'] or network.ipv6 or ipv6_override %}
|
|
|
|
default: "{{network.subnets[subnet]['gateway_ipv6']|default(network.subnets[subnet]['gateway_ip']|default([]))}}"
|
|
|
|
{%- else %}
|
|
|
|
default: "{{network.subnets[subnet]['gateway_ip']|default([])}}"
|
|
|
|
{%- endif %}
|
|
|
|
description: |
|
|
|
|
default route for the {{network.name_lower}} network's {{subnet}} subnet.
|
|
|
|
type: string
|
|
|
|
{{network.name}}NetworkVlanID_{{subnet}}:
|
2019-03-21 10:02:25 +01:00
|
|
|
default: {{network.subnets[subnet]['vlan']|default(1)}}
|
2018-07-12 15:03:23 +02:00
|
|
|
description: |
|
|
|
|
Vlan ID for the {{network.name_lower}} network's {{subnet}} subnet.
|
2019-03-21 10:02:25 +01:00
|
|
|
type: number
|
2018-07-12 15:03:23 +02:00
|
|
|
{{network.name}}Routes_{{subnet}}:
|
|
|
|
default: {{network.subnets[subnet]['routes']|default([])}}
|
|
|
|
description: >
|
|
|
|
Routes for the {{subnet}} subnet on {{network.name_lower}} network
|
|
|
|
traffic. JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}]
|
|
|
|
Routes are added to the host_routes property on the subnet in neutron
|
|
|
|
when the subnet is created.
|
|
|
|
type: json
|
|
|
|
{%- endfor %}
|
Remove ipv6 specific network templates
This change renders the IPv6 versions of the isolated
networks using j2. To allow for backward compatibility,
there will be 2 versions of the network definitions,
<network>.yaml and <network>_v6.yaml. If the ip_subnet
contains an IPv6 address, or if ipv6: true is set on the
network definition in network_data.yaml, then the
<network>.yaml version will contain an IPv6 definition,
otherwise the <network>.yaml will be IPv4, and the
<network>_v6.yaml will be IPv6.
In a future follow-up patch, we will probably only
create the required versions of the networks, either
IPv4, IPv6, not both.
The ipv6_subnet, ipv6_allocation_pools, and ipv6_gateway
settings in the network_data.yaml definition file are
used for the <network>_v6.yaml network definition.
Note that these subnet/cidr/gateway definitions only set
the defaults, which can be overridden with parameters
set in an environment file.
Since the parameters for IP and subnet range are the
same (e.g. InternalApiNetCidr applies to both IPv4/v6),
only one version can be used at a time. If an operator
wishes to use dual-stack IPv4/IPv6, then two different
networks should be created, and both networks can be
applied to a single interface.
Note that the workflow for the operator is the same as
before this change, but a new example template has been
added to environments/network-environment-v6.yaml.
Change-Id: I0e674e4b1e43786717ae6416571dde3a0e11a5cc
Partially-Implements: blueprint composable-networks
Closes-bug: 1714115
2017-08-30 11:26:52 -07:00
|
|
|
|
|
|
|
resources:
|
|
|
|
{{network.name}}Network:
|
|
|
|
type: OS::Neutron::Net
|
2019-02-13 14:00:59 -05:00
|
|
|
{%- if network.external_resource_network_id|default('') %}
|
|
|
|
external_id: {{ network.external_resource_network_id }}
|
|
|
|
{%- endif %}
|
Remove ipv6 specific network templates
This change renders the IPv6 versions of the isolated
networks using j2. To allow for backward compatibility,
there will be 2 versions of the network definitions,
<network>.yaml and <network>_v6.yaml. If the ip_subnet
contains an IPv6 address, or if ipv6: true is set on the
network definition in network_data.yaml, then the
<network>.yaml version will contain an IPv6 definition,
otherwise the <network>.yaml will be IPv4, and the
<network>_v6.yaml will be IPv6.
In a future follow-up patch, we will probably only
create the required versions of the networks, either
IPv4, IPv6, not both.
The ipv6_subnet, ipv6_allocation_pools, and ipv6_gateway
settings in the network_data.yaml definition file are
used for the <network>_v6.yaml network definition.
Note that these subnet/cidr/gateway definitions only set
the defaults, which can be overridden with parameters
set in an environment file.
Since the parameters for IP and subnet range are the
same (e.g. InternalApiNetCidr applies to both IPv4/v6),
only one version can be used at a time. If an operator
wishes to use dual-stack IPv4/IPv6, then two different
networks should be created, and both networks can be
applied to a single interface.
Note that the workflow for the operator is the same as
before this change, but a new example template has been
added to environments/network-environment-v6.yaml.
Change-Id: I0e674e4b1e43786717ae6416571dde3a0e11a5cc
Partially-Implements: blueprint composable-networks
Closes-bug: 1714115
2017-08-30 11:26:52 -07:00
|
|
|
properties:
|
|
|
|
admin_state_up: {get_param: {{network.name}}NetAdminStateUp}
|
|
|
|
name: {get_param: {{network.name}}NetName}
|
|
|
|
shared: {get_param: {{network.name}}NetShared}
|
2018-09-04 01:08:28 +02:00
|
|
|
value_specs:
|
|
|
|
map_merge:
|
|
|
|
- {get_param: {{network.name}}NetValueSpecs}
|
|
|
|
- {'mtu': {get_param: {{network.name}}Mtu}}
|
Remove ipv6 specific network templates
This change renders the IPv6 versions of the isolated
networks using j2. To allow for backward compatibility,
there will be 2 versions of the network definitions,
<network>.yaml and <network>_v6.yaml. If the ip_subnet
contains an IPv6 address, or if ipv6: true is set on the
network definition in network_data.yaml, then the
<network>.yaml version will contain an IPv6 definition,
otherwise the <network>.yaml will be IPv4, and the
<network>_v6.yaml will be IPv6.
In a future follow-up patch, we will probably only
create the required versions of the networks, either
IPv4, IPv6, not both.
The ipv6_subnet, ipv6_allocation_pools, and ipv6_gateway
settings in the network_data.yaml definition file are
used for the <network>_v6.yaml network definition.
Note that these subnet/cidr/gateway definitions only set
the defaults, which can be overridden with parameters
set in an environment file.
Since the parameters for IP and subnet range are the
same (e.g. InternalApiNetCidr applies to both IPv4/v6),
only one version can be used at a time. If an operator
wishes to use dual-stack IPv4/IPv6, then two different
networks should be created, and both networks can be
applied to a single interface.
Note that the workflow for the operator is the same as
before this change, but a new example template has been
added to environments/network-environment-v6.yaml.
Change-Id: I0e674e4b1e43786717ae6416571dde3a0e11a5cc
Partially-Implements: blueprint composable-networks
Closes-bug: 1714115
2017-08-30 11:26:52 -07:00
|
|
|
|
|
|
|
{{network.name}}Subnet:
|
|
|
|
type: OS::Neutron::Subnet
|
2019-02-13 14:00:59 -05:00
|
|
|
{%- if network.external_resource_subnet_id|default('') %}
|
|
|
|
external_id: {{ network.external_resource_subnet_id }}
|
|
|
|
{%- endif %}
|
Remove ipv6 specific network templates
This change renders the IPv6 versions of the isolated
networks using j2. To allow for backward compatibility,
there will be 2 versions of the network definitions,
<network>.yaml and <network>_v6.yaml. If the ip_subnet
contains an IPv6 address, or if ipv6: true is set on the
network definition in network_data.yaml, then the
<network>.yaml version will contain an IPv6 definition,
otherwise the <network>.yaml will be IPv4, and the
<network>_v6.yaml will be IPv6.
In a future follow-up patch, we will probably only
create the required versions of the networks, either
IPv4, IPv6, not both.
The ipv6_subnet, ipv6_allocation_pools, and ipv6_gateway
settings in the network_data.yaml definition file are
used for the <network>_v6.yaml network definition.
Note that these subnet/cidr/gateway definitions only set
the defaults, which can be overridden with parameters
set in an environment file.
Since the parameters for IP and subnet range are the
same (e.g. InternalApiNetCidr applies to both IPv4/v6),
only one version can be used at a time. If an operator
wishes to use dual-stack IPv4/IPv6, then two different
networks should be created, and both networks can be
applied to a single interface.
Note that the workflow for the operator is the same as
before this change, but a new example template has been
added to environments/network-environment-v6.yaml.
Change-Id: I0e674e4b1e43786717ae6416571dde3a0e11a5cc
Partially-Implements: blueprint composable-networks
Closes-bug: 1714115
2017-08-30 11:26:52 -07:00
|
|
|
properties:
|
|
|
|
{%- if ":" in network.ip_subnet or network.ipv6 or ipv6_override %}
|
|
|
|
ip_version: 6
|
|
|
|
ipv6_address_mode: {get_param: IPv6AddressMode}
|
|
|
|
ipv6_ra_mode: {get_param: IPv6RAMode}
|
|
|
|
{%- else %}
|
|
|
|
enable_dhcp: {get_param: {{network.name}}NetEnableDHCP}
|
|
|
|
{%- endif %}
|
|
|
|
cidr: {get_param: {{network.name}}NetCidr}
|
|
|
|
name: {get_param: {{network.name}}SubnetName}
|
|
|
|
network: {get_resource: {{network.name}}Network}
|
|
|
|
allocation_pools: {get_param: {{network.name}}AllocationPools}
|
|
|
|
gateway_ip: {get_param: {{network.name}}InterfaceDefaultRoute}
|
2018-07-04 23:05:27 +02:00
|
|
|
host_routes: {get_param: {{network.name}}Routes}
|
2018-07-12 15:03:23 +02:00
|
|
|
{%- if network.subnets|default({}) %}
|
|
|
|
# All networks have an implicit network segment when created, map this subnet to that segment.
|
|
|
|
segment: {get_attr: [{{network.name}}Network, segments, 0, id]}
|
|
|
|
{%- endif %}
|
2019-02-13 14:00:59 -05:00
|
|
|
|
2018-07-12 15:03:23 +02:00
|
|
|
{% for subnet in network.subnets|default({}) if network.subnets[subnet].enabled|default(true) %}
|
|
|
|
{{network.name}}Segment_{{subnet}}:
|
|
|
|
type: OS::Neutron::Segment
|
|
|
|
# NOTE(hjensas): Depends-On here to ensure we always create the base subnet
|
|
|
|
# first. We can only set the segment for existing subnet if there is only
|
|
|
|
# one segment and only one existing subnet on the network.
|
2019-02-13 14:00:59 -05:00
|
|
|
{%- if subnet.external_resource_segment_id|default('') %}
|
|
|
|
external_id: {{ subnet.external_resource_segment_id }}
|
|
|
|
{%- else %}
|
2018-07-12 15:03:23 +02:00
|
|
|
depends_on: {{network.name}}Subnet
|
2019-02-13 14:00:59 -05:00
|
|
|
{%- endif %}
|
2018-07-12 15:03:23 +02:00
|
|
|
properties:
|
|
|
|
name: {{network.name_lower}}_{{subnet}}
|
|
|
|
network: {get_resource: {{network.name}}Network}
|
|
|
|
network_type: flat
|
|
|
|
physical_network: {{network.name_lower}}_{{subnet}}
|
2019-02-13 14:00:59 -05:00
|
|
|
|
2018-07-12 15:03:23 +02:00
|
|
|
{{network.name}}Subnet_{{subnet}}:
|
|
|
|
type: OS::Neutron::Subnet
|
2019-02-13 14:00:59 -05:00
|
|
|
{%- if subnet.external_resource_subnet_id|default('') %}
|
|
|
|
external_id: {{ subnet.external_resource_subnet_id }}
|
|
|
|
{%- endif %}
|
2018-07-12 15:03:23 +02:00
|
|
|
properties:
|
|
|
|
{%- if ":" in network.ip_subnet or network.ipv6 or ipv6_override %}
|
|
|
|
ip_version: 6
|
|
|
|
ipv6_address_mode: {get_param: IPv6AddressMode}
|
|
|
|
ipv6_ra_mode: {get_param: IPv6RAMode}
|
|
|
|
{%- else %}
|
|
|
|
enable_dhcp: {get_param: {{network.name}}NetEnableDHCP}
|
|
|
|
{%- endif %}
|
|
|
|
cidr: {get_param: {{network.name}}SubnetCidr_{{subnet}}}
|
|
|
|
name: {{subnet}}
|
|
|
|
network: {get_resource: {{network.name}}Network}
|
|
|
|
allocation_pools: {get_param: {{network.name}}AllocationPools_{{subnet}}}
|
|
|
|
gateway_ip: {get_param: {{network.name}}InterfaceDefaultRoute_{{subnet}}}
|
|
|
|
host_routes: {get_param: {{network.name}}Routes_{{subnet}}}
|
|
|
|
segment: {get_resource: {{network.name}}Segment_{{subnet}}}
|
|
|
|
{% endfor %}
|
Remove ipv6 specific network templates
This change renders the IPv6 versions of the isolated
networks using j2. To allow for backward compatibility,
there will be 2 versions of the network definitions,
<network>.yaml and <network>_v6.yaml. If the ip_subnet
contains an IPv6 address, or if ipv6: true is set on the
network definition in network_data.yaml, then the
<network>.yaml version will contain an IPv6 definition,
otherwise the <network>.yaml will be IPv4, and the
<network>_v6.yaml will be IPv6.
In a future follow-up patch, we will probably only
create the required versions of the networks, either
IPv4, IPv6, not both.
The ipv6_subnet, ipv6_allocation_pools, and ipv6_gateway
settings in the network_data.yaml definition file are
used for the <network>_v6.yaml network definition.
Note that these subnet/cidr/gateway definitions only set
the defaults, which can be overridden with parameters
set in an environment file.
Since the parameters for IP and subnet range are the
same (e.g. InternalApiNetCidr applies to both IPv4/v6),
only one version can be used at a time. If an operator
wishes to use dual-stack IPv4/IPv6, then two different
networks should be created, and both networks can be
applied to a single interface.
Note that the workflow for the operator is the same as
before this change, but a new example template has been
added to environments/network-environment-v6.yaml.
Change-Id: I0e674e4b1e43786717ae6416571dde3a0e11a5cc
Partially-Implements: blueprint composable-networks
Closes-bug: 1714115
2017-08-30 11:26:52 -07:00
|
|
|
|
|
|
|
outputs:
|
|
|
|
OS::stack_id:
|
|
|
|
description: {{network.name_lower}} network
|
|
|
|
value: {get_resource: {{network.name}}Network}
|
2018-10-25 20:07:00 +02:00
|
|
|
network_cidrs:
|
2018-07-12 15:03:23 +02:00
|
|
|
description: List of {{network.name}} network's subnets in CIDR notation.
|
|
|
|
value:
|
|
|
|
list_concat:
|
|
|
|
- - {get_attr: [{{network.name}}Subnet, cidr]}
|
|
|
|
-
|
|
|
|
{%- for subnet in network.subnets|default({}) if network.subnets[subnet].enabled|default(true) %}
|
|
|
|
- {get_attr: [{{network.name}}Subnet_{{subnet}}, cidr]}
|
|
|
|
{%- endfor %}
|