summaryrefslogtreecommitdiffstats
path: root/network/network.j2
diff options
context:
space:
mode:
Diffstat (limited to 'network/network.j2')
-rw-r--r--network/network.j2105
1 files changed, 105 insertions, 0 deletions
diff --git a/network/network.j2 b/network/network.j2
new file mode 100644
index 00000000..61a5b57c
--- /dev/null
+++ b/network/network.j2
@@ -0,0 +1,105 @@
+heat_template_version: pike
+
+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:
+ default: {{network.vlan}}
+ description: Vlan ID for the {{network.name}} network traffic.
+ type: number
+{%- endif %}
+
+resources:
+ {{network.name}}Network:
+ type: OS::Neutron::Net
+ properties:
+ admin_state_up: {get_param: {{network.name}}NetAdminStateUp}
+ name: {get_param: {{network.name}}NetName}
+ shared: {get_param: {{network.name}}NetShared}
+ value_specs: {get_param: {{network.name}}NetValueSpecs}
+
+ {{network.name}}Subnet:
+ type: OS::Neutron::Subnet
+ 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}
+
+outputs:
+ OS::stack_id:
+ description: {{network.name_lower}} network
+ value: {get_resource: {{network.name}}Network}
+ subnet_cidr:
+ value: {get_attr: [{{network.name}}Subnet, cidr]}