Browse Source

Render port templates via j2

Remove these from the j2 excludes and instead render all the networks
to avoid duplication.

Change-Id: Id8e14e06ffe959c50456b4c88fef306046a8b478
Partially-Implements: blueprint composable-networks
changes/67/495367/2
Steven Hardy 5 years ago
parent
commit
700b82bf20
  1. 24
      j2_excludes.yaml
  2. 61
      network/ports/external.yaml
  3. 46
      network/ports/external_from_pool.yaml
  4. 52
      network/ports/external_from_pool_v6.yaml
  5. 57
      network/ports/internal_api.yaml
  6. 46
      network/ports/internal_api_from_pool.yaml
  7. 52
      network/ports/internal_api_from_pool_v6.yaml
  8. 61
      network/ports/internal_api_v6.yaml
  9. 49
      network/ports/management.yaml
  10. 46
      network/ports/management_from_pool.yaml
  11. 52
      network/ports/management_from_pool_v6.yaml
  12. 54
      network/ports/management_v6.yaml
  13. 34
      network/ports/port.j2
  14. 73
      network/ports/port.network.j2.yaml
  15. 65
      network/ports/port_from_pool.j2
  16. 66
      network/ports/port_from_pool.network.j2.yaml
  17. 2
      network/ports/port_from_pool_v6.network.j2.yaml
  18. 2
      network/ports/port_v6.network.j2.yaml
  19. 56
      network/ports/storage.yaml
  20. 46
      network/ports/storage_from_pool.yaml
  21. 52
      network/ports/storage_from_pool_v6.yaml
  22. 57
      network/ports/storage_mgmt.yaml
  23. 46
      network/ports/storage_mgmt_from_pool.yaml
  24. 52
      network/ports/storage_mgmt_from_pool_v6.yaml
  25. 61
      network/ports/storage_mgmt_v6.yaml
  26. 61
      network/ports/storage_v6.yaml
  27. 56
      network/ports/tenant.yaml
  28. 46
      network/ports/tenant_from_pool.yaml
  29. 51
      network/ports/tenant_from_pool_v6.yaml
  30. 61
      network/ports/tenant_v6.yaml

24
j2_excludes.yaml

@ -11,27 +11,3 @@ name:
- network/storage_mgmt_v6.yaml
- network/tenant_v6.yaml
- network/management_v6.yaml
- network/ports/internal_api.yaml
- network/ports/external.yaml
- network/ports/storage.yaml
- network/ports/storage_mgmt.yaml
- network/ports/tenant.yaml
- network/ports/management.yaml
- network/ports/internal_api_v6.yaml
- network/ports/external_v6.yaml
- network/ports/storage_v6.yaml
- network/ports/storage_mgmt_v6.yaml
- network/ports/tenant_v6.yaml
- network/ports/management_v6.yaml
- network/ports/internal_api_from_pool.yaml
- network/ports/external_from_pool.yaml
- network/ports/storage_from_pool.yaml
- network/ports/storage_mgmt_from_pool.yaml
- network/ports/tenant_from_pool.yaml
- network/ports/management_from_pool.yaml
- network/ports/internal_api_from_pool_v6.yaml
- network/ports/external_from_pool_v6.yaml
- network/ports/storage_from_pool_v6.yaml
- network/ports/storage_mgmt_from_pool_v6.yaml
- network/ports/tenant_from_pool_v6.yaml
- network/ports/management_from_pool_v6.yaml

61
network/ports/external.yaml

@ -1,61 +0,0 @@
heat_template_version: pike
description: >
Creates a port on the external network. The IP address will be chosen
automatically if FixedIPs is empty.
parameters:
ExternalNetName:
description: The name of the external network.
default: external
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatibility with noop.yaml
description: IP address on the control plane
default: ''
type: string
ControlPlaneNetwork: # Here for compatibility with ctlplane_vip.yaml
description: The name of the undercloud Neutron control plane
default: ctlplane
type: string
FixedIPs:
description: >
Control the IP allocation for the VIP port. E.g.
[{'ip_address':'1.2.3.4'}]
default: []
type: json
IPPool: # Here for compatibility with from_pool.yaml
default: {}
type: json
NodeIndex: # Here for compatibility with from_pool.yaml
default: 0
type: number
resources:
ExternalPort:
type: OS::Neutron::Port
properties:
network: {get_param: ExternalNetName}
name: {get_param: PortName}
fixed_ips: {get_param: FixedIPs}
replacement_policy: AUTO
outputs:
ip_address:
description: external network IP
value: {get_attr: [ExternalPort, fixed_ips, 0, ip_address]}
ip_address_uri:
description: external network IP (for compatibility with external_v6.yaml)
value: {get_attr: [ExternalPort, fixed_ips, 0, ip_address]}
ip_subnet:
description: IP/Subnet CIDR for the external network IP
value:
list_join:
- ''
- - {get_attr: [ExternalPort, fixed_ips, 0, ip_address]}
- '/'
- {str_split: ['/', {get_attr: [ExternalPort, subnets, 0, cidr]}, 1]}

46
network/ports/external_from_pool.yaml

@ -1,46 +0,0 @@
heat_template_version: pike
description: >
Returns an IP from a network mapped list of IPs
parameters:
ExternalNetName:
description: The name of the external network.
default: external
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatibility with noop.yaml
description: IP address on the control plane
default: ''
type: string
IPPool:
default: {}
description: A network mapped list of IPs
type: json
NodeIndex:
default: 0
description: Index of the IP to get from Pool
type: number
ExternalNetCidr:
default: '10.0.0.0/24'
description: Cidr for the external network.
type: string
outputs:
ip_address:
description: external network IP
value: {get_param: [IPPool, {get_param: ExternalNetName}, {get_param: NodeIndex}]}
ip_address_uri:
description: external network IP (for compatibility with IPv6)
value: {get_param: [IPPool, {get_param: ExternalNetName}, {get_param: NodeIndex}]}
ip_subnet:
description: IP/Subnet CIDR for the external network IP
value:
list_join:
- ''
- - {get_param: [IPPool, {get_param: ExternalNetName}, {get_param: NodeIndex}]}
- '/'
- {str_split: ['/', {get_param: ExternalNetCidr}, 1]}

52
network/ports/external_from_pool_v6.yaml

@ -1,52 +0,0 @@
heat_template_version: pike
description: >
Returns an IP from a network mapped list of IPs. This version is for IPv6
addresses. The ip_address_uri output will have brackets for use in URLs.
parameters:
ExternalNetName:
description: The name of the external network.
default: external
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatability with noop.yaml
description: IP address on the control plane
default: ''
type: string
IPPool:
default: {}
description: A network mapped list of IPs
type: json
NodeIndex:
default: 0
description: Index of the IP to get from Pool
type: number
ExternalNetCidr:
default: '2001:db8:fd00:1000::/64'
description: Cidr for the external network.
type: string
outputs:
ip_address:
description: external network IP
value: {get_param: [IPPool, {get_param: ExternalNetName}, {get_param: NodeIndex}]}
ip_address_uri:
description: external network IP (for compatibility with IPv6)
value:
list_join:
- ''
- - '['
- {get_param: [IPPool, {get_param: ExternalNetName}, {get_param: NodeIndex}]}
- ']'
ip_subnet:
description: IP/Subnet CIDR for the external network IP
value:
list_join:
- ''
- - {get_param: [IPPool, {get_param: ExternalNetName}, {get_param: NodeIndex}]}
- '/'
- {str_split: ['/', {get_param: ExternalNetCidr}, 1]}

57
network/ports/internal_api.yaml

@ -1,57 +0,0 @@
heat_template_version: pike
description: >
Creates a port on the internal_api network.
parameters:
InternalApiNetName:
description: The name of the internal_api network.
default: internal_api
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatibility with noop.yaml
description: IP address on the control plane
default: ''
type: string
FixedIPs:
description: >
Control the IP allocation for the VIP port. E.g.
[{'ip_address':'1.2.3.4'}]
default: []
type: json
IPPool: # Here for compatibility with from_pool.yaml
default: {}
type: json
NodeIndex: # Here for compatibility with from_pool.yaml
default: 0
type: number
resources:
InternalApiPort:
type: OS::Neutron::Port
properties:
network: {get_param: InternalApiNetName}
name: {get_param: PortName}
fixed_ips: {get_param: FixedIPs}
replacement_policy: AUTO
outputs:
ip_address:
description: internal API network IP
value: {get_attr: [InternalApiPort, fixed_ips, 0, ip_address]}
ip_address_uri:
description: |
internal API network IP (for compatibility with internal_api_v6.yaml)
value: {get_attr: [InternalApiPort, fixed_ips, 0, ip_address]}
ip_subnet:
description: IP/Subnet CIDR for the internal API network IP
value:
list_join:
- ''
- - {get_attr: [InternalApiPort, fixed_ips, 0, ip_address]}
- '/'
- {str_split: ['/', {get_attr: [InternalApiPort, subnets, 0, cidr]}, 1]}

46
network/ports/internal_api_from_pool.yaml

@ -1,46 +0,0 @@
heat_template_version: pike
description: >
Returns an IP from a network mapped list of IPs
parameters:
InternalApiNetName:
description: The name of the internal_api network.
default: internal_api
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatibility with noop.yaml
description: IP address on the control plane
default: ''
type: string
IPPool:
default: {}
description: A network mapped list of IPs
type: json
NodeIndex:
default: 0
description: Index of the IP to get from Pool
type: number
InternalApiNetCidr:
default: '172.16.2.0/24'
description: Cidr for the internal_api network.
type: string
outputs:
ip_address:
description: internal API network IP
value: {get_param: [IPPool, {get_param: InternalApiNetName}, {get_param: NodeIndex}]}
ip_address_uri:
description: internal API network IP (for compatibility with internal_api_v6.yaml)
value: {get_param: [IPPool, {get_param: InternalApiNetName}, {get_param: NodeIndex}]}
ip_subnet:
description: IP/Subnet CIDR for the internal API network IP
value:
list_join:
- ''
- - {get_param: [IPPool, {get_param: InternalApiNetName}, {get_param: NodeIndex}]}
- '/'
- {str_split: ['/', {get_param: InternalApiNetCidr}, 1]}

52
network/ports/internal_api_from_pool_v6.yaml

@ -1,52 +0,0 @@
heat_template_version: pike
description: >
Returns an IP from a network mapped list of IPs. This version is for IPv6
addresses. The ip_address_uri output will have brackets for use in URLs.
parameters:
InternalApiNetName:
description: The name of the internal_api network.
default: internal_api
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatability with noop.yaml
description: IP address on the control plane
default: ''
type: string
IPPool:
default: {}
description: A network mapped list of IPs
type: json
NodeIndex:
default: 0
description: Index of the IP to get from Pool
type: number
InternalApiNetCidr:
default: 'fd00:fd00:fd00:2000::/64'
description: Cidr for the internal_api network.
type: string
outputs:
ip_address:
description: internal API network IP
value: {get_param: [IPPool, {get_param: InternalApiNetName}, {get_param: NodeIndex}]}
ip_address_uri:
description: internal API network IP (for compatibility with internal_api_v6.yaml)
value:
list_join:
- ''
- - '['
- {get_param: [IPPool, {get_param: InternalApiNetName}, {get_param: NodeIndex}]}
- ']'
ip_subnet:
description: IP/Subnet CIDR for the internal API network IP
value:
list_join:
- ''
- - {get_param: [IPPool, {get_param: InternalApiNetName}, {get_param: NodeIndex}]}
- '/'
- {str_split: ['/', {get_param: InternalApiNetCidr}, 1]}

61
network/ports/internal_api_v6.yaml

@ -1,61 +0,0 @@
heat_template_version: pike
description: >
Creates a port on the internal_api network.
parameters:
InternalApiNetName:
description: The name of the internal_api network.
default: internal_api
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatability with noop.yaml
description: IP address on the control plane
default: ''
type: string
FixedIPs:
description: >
Control the IP allocation for the VIP port. E.g.
[{'ip_address':'1.2.3.4'}]
default: []
type: json
IPPool: # Here for compatibility with from_pool.yaml
default: {}
type: json
NodeIndex: # Here for compatibility with from_pool.yaml
default: 0
type: number
resources:
InternalApiPort:
type: OS::Neutron::Port
properties:
network: {get_param: InternalApiNetName}
name: {get_param: PortName}
fixed_ips: {get_param: FixedIPs}
replacement_policy: AUTO
outputs:
ip_address:
description: internal API network IP
value: {get_attr: [InternalApiPort, fixed_ips, 0, ip_address]}
ip_address_uri:
description: internal api network IP with brackets suitable for a URL
value:
list_join:
- ''
- - '['
- {get_attr: [InternalApiPort, fixed_ips, 0, ip_address]}
- ']'
ip_subnet:
description: IP/Subnet CIDR for the internal API network IP
value:
list_join:
- ''
- - {get_attr: [InternalApiPort, fixed_ips, 0, ip_address]}
- '/'
- {str_split: ['/', {get_attr: [InternalApiPort, subnets, 0, cidr]}, 1]}

49
network/ports/management.yaml

@ -1,49 +0,0 @@
heat_template_version: pike
description: >
Creates a port on the management network. The IP address will be chosen
automatically if FixedIPs is empty.
parameters:
ManagementNetName:
description: The name of the management network.
default: management
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatibility with noop.yaml
description: IP address on the control plane
type: string
IPPool: # Here for compatibility with from_pool.yaml
default: {}
type: json
NodeIndex: # Here for compatibility with from_pool.yaml
default: 0
type: number
resources:
ManagementPort:
type: OS::Neutron::Port
properties:
network: {get_param: ManagementNetName}
name: {get_param: PortName}
replacement_policy: AUTO
outputs:
ip_address:
description: management network IP
value: {get_attr: [ManagementPort, fixed_ips, 0, ip_address]}
ip_address_uri:
description: management network IP (for compatibility with management_v6.yaml)
value: {get_attr: [ManagementPort, fixed_ips, 0, ip_address]}
ip_subnet:
description: IP/Subnet CIDR for the management network IP
value:
list_join:
- ''
- - {get_attr: [ManagementPort, fixed_ips, 0, ip_address]}
- '/'
- {str_split: ['/', {get_attr: [ManagementPort, subnets, 0, cidr]}, 1]}

46
network/ports/management_from_pool.yaml

@ -1,46 +0,0 @@
heat_template_version: pike
description: >
Returns an IP from a network mapped list of IPs
parameters:
ManagementNetName:
description: The name of the management network.
default: management
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatability with noop.yaml
description: IP address on the control plane
default: ''
type: string
IPPool:
default: {}
description: A network mapped list of IPs
type: json
NodeIndex:
default: 0
description: Index of the IP to get from Pool
type: number
ManagementNetCidr:
default: '172.16.4.0/24'
description: Cidr for the management network.
type: string
outputs:
ip_address:
description: management network IP
value: {get_param: [IPPool, {get_param: ManagementNetName}, {get_param: NodeIndex}]}
ip_address_uri:
description: management network IP (for compatibility with management_v6.yaml)
value: {get_param: [IPPool, {get_param: ManagementNetName}, {get_param: NodeIndex}]}
ip_subnet:
description: IP/Subnet CIDR for the management network IP
value:
list_join:
- ''
- - {get_param: [IPPool, {get_param: ManagementNetName}, {get_param: NodeIndex}]}
- '/'
- {str_split: ['/', {get_param: ManagementNetCidr}, 1]}

52
network/ports/management_from_pool_v6.yaml

@ -1,52 +0,0 @@
heat_template_version: pike
description: >
Returns an IP from a network mapped list of IPs. This version is for IPv6
addresses. The ip_address_uri output will have brackets for use in URLs.
parameters:
ManagementNetName:
description: The name of the management network.
default: management
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatability with noop.yaml
description: IP address on the control plane
default: ''
type: string
IPPool:
default: {}
description: A network mapped list of IPs
type: json
NodeIndex:
default: 0
description: Index of the IP to get from Pool
type: number
ManagementNetCidr:
default: 'fd00:fd00:fd00:6000::/64'
description: Cidr for the management network.
type: string
outputs:
ip_address:
description: management network IP
value: {get_param: [IPPool, {get_param: ManagementNetName}, {get_param: NodeIndex}]}
ip_address_uri:
description: management network IP (for compatibility with management_v6.yaml)
value:
list_join:
- ''
- - '['
- {get_param: [IPPool, {get_param: ManagementNetName}, {get_param: NodeIndex}]}
- ']'
ip_subnet:
description: IP/Subnet CIDR for the management network IP
value:
list_join:
- ''
- - {get_param: [IPPool, {get_param: ManagementNetName}, {get_param: NodeIndex}]}
- '/'
- {str_split: ['/', {get_param: ManagementNetCidr}, 1]}

54
network/ports/management_v6.yaml

@ -1,54 +0,0 @@
heat_template_version: pike
description: >
Creates a port on the management network. The IP address will be chosen
automatically if FixedIPs is empty.
parameters:
ManagementNetName:
description: The name of the management network.
default: management
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatibility with noop.yaml
description: IP address on the control plane
type: string
IPPool: # Here for compatibility with from_pool.yaml
default: {}
type: json
NodeIndex: # Here for compatibility with from_pool.yaml
default: 0
type: number
resources:
ManagementPort:
type: OS::Neutron::Port
properties:
network: {get_param: ManagementNetName}
name: {get_param: PortName}
replacement_policy: AUTO
outputs:
ip_address:
description: management network IP
value: {get_attr: [ManagementPort, fixed_ips, 0, ip_address]}
ip_address_uri:
description: management network IP with brackets suitable for a URL
value:
list_join:
- ''
- - '['
- {get_attr: [ManagementPort, fixed_ips, 0, ip_address]}
- ']'
ip_subnet:
description: IP/Subnet CIDR for the management network IP
value:
list_join:
- ''
- - {get_attr: [ManagementPort, fixed_ips, 0, ip_address]}
- '/'
- {str_split: ['/', {get_attr: [ManagementPort, subnets, 0, cidr]}, 1]}

34
network/ports/external_v6.yaml → network/ports/port.j2

@ -1,19 +1,19 @@
heat_template_version: pike
description: >
Creates a port on the external network. The IP address will be chosen
Creates a port on the {{network.name}} network. The IP address will be chosen
automatically if FixedIPs is empty.
parameters:
ExternalNetName:
description: The name of the external network.
default: external
{{network.name}}NetName:
description: The name of the {{network.name_lower}} network.
default: {{network.name_lower|default(network.name|lower)}}
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatability with noop.yaml
ControlPlaneIP: # Here for compatibility with noop.yaml
description: IP address on the control plane
default: ''
type: string
@ -36,31 +36,37 @@ parameters:
resources:
ExternalPort:
{{network.name}}Port:
type: OS::Neutron::Port
properties:
network: {get_param: ExternalNetName}
network: {get_param: {{network.name}}NetName}
name: {get_param: PortName}
fixed_ips: {get_param: FixedIPs}
replacement_policy: AUTO
outputs:
ip_address:
description: external network IP
value: {get_attr: [ExternalPort, fixed_ips, 0, ip_address]}
description: {{network.name}} network IP
value: {get_attr: [{{network.name}}Port, fixed_ips, 0, ip_address]}
ip_address_uri:
description: external network IP with brackets suitable for a URL
{%- if network.ipv6 or ipv6_override|default(false) %}
description: {{network.name}} network IP (with brackets for IPv6 URLs)
value:
list_join:
- ''
- - '['
- {get_attr: [ExternalPort, fixed_ips, 0, ip_address]}
- {get_attr: [{{network.name}}Port, fixed_ips, 0, ip_address]}
- ']'
{%- else %}
description: {{network.name}} network IP (for compatibility with IPv6 URLs)
value: {get_attr: [{{network.name}}Port, fixed_ips, 0, ip_address]}
{%- endif %}
ip_subnet:
description: IP/Subnet CIDR for the external network IP
description: IP/Subnet CIDR for the {{network.name}} network IP
value:
list_join:
- ''
- - {get_attr: [ExternalPort, fixed_ips, 0, ip_address]}
- - {get_attr: [{{network.name}}Port, fixed_ips, 0, ip_address]}
- '/'
- {str_split: ['/', {get_attr: [ExternalPort, subnets, 0, cidr]}, 1]}
- {str_split: ['/', {get_attr: [{{network.name}}Port, subnets, 0, cidr]}, 1]}

73
network/ports/port.network.j2.yaml

@ -1,72 +1 @@
heat_template_version: pike
description: >
Creates a port on the {{network.name}} network. The IP address will be chosen
automatically if FixedIPs is empty.
parameters:
{{network.name}}NetName:
description: Name of the {{network.name_lower}} neutron network
default: {{network.name_lower|default(network.name|lower)}}
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatibility with noop.yaml
description: IP address on the control plane
default: ''
type: string
ControlPlaneNetwork: # Here for compatibility with ctlplane_vip.yaml
description: The name of the undercloud Neutron control plane
default: ctlplane
type: string
FixedIPs:
description: >
Control the IP allocation for the VIP port. E.g.
[{'ip_address':'1.2.3.4'}]
default: []
type: json
IPPool: # Here for compatibility with from_pool.yaml
default: {}
type: json
NodeIndex: # Here for compatibility with from_pool.yaml
default: 0
type: number
resources:
{{network.name}}Port:
type: OS::Neutron::Port
properties:
network: {get_param: {{network.name}}NetName}
name: {get_param: PortName}
fixed_ips: {get_param: FixedIPs}
replacement_policy: AUTO
outputs:
ip_address:
description: {{network.name}} network IP
value: {get_attr: [{{network.name}}Port, fixed_ips, 0, ip_address]}
ip_address_uri:
{%- if network.ipv6 %}
description: {{network.name}} network IP (with brackets for IPv6 URLs)
value:
list_join:
- ''
- - '['
- {get_attr: [{{network.name}}Port, fixed_ips, 0, ip_address]}
- ']'
{%- else %}
description: {{network.name}} network IP (for compatibility with IPv6 URLs)
value: {get_attr: [{{network.name}}Port, fixed_ips, 0, ip_address]}
{%- endif %}
ip_subnet:
description: IP/Subnet CIDR for the {{network.name}} network IP
value:
list_join:
- ''
- - {get_attr: [{{network.name}}Port, fixed_ips, 0, ip_address]}
- '/'
- {str_split: ['/', {get_attr: [{{network.name}}Port, subnets, 0, cidr]}, 1]}
{% include 'port.j2' %}

65
network/ports/port_from_pool.j2

@ -0,0 +1,65 @@
heat_template_version: pike
description: >
Creates a port on the {{network.name}} network, using a map of IPs per role.
Each role has a map of IPs in <Role>IPs parameters, with a list of IPs by
network (lower_name or lower case). For example:
ControllerIPs:
external:
- 1.2.3.4 # First controller
- 1.2.3.5 # Second controller
parameters:
{{network.name}}NetName:
description: The name of the {{network.name_lower}} network.
default: {{network.name_lower}}
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatibility with noop.yaml
description: IP address on the control plane
default: ''
type: string
ControlPlaneNetwork: # Here for compatibility with ctlplane_vip.yaml
description: The name of the undercloud Neutron control plane
default: ctlplane
type: string
IPPool: # Set in <Role>IPs map, see environments/ips-from-pool-all.yaml
default: {}
type: json
NodeIndex: # First node in the role will get first IP, and so on...
default: 0
type: number
{{network.name}}NetCidr:
default: {{network.ip_subnet}}
description: Cidr for the {{network.name_lower}} network.
type: string
outputs:
ip_address:
description: {{network.name}} network IP
value: {get_param: [IPPool, {get_param: {{network.name}}NetName}, {get_param: NodeIndex}]}
ip_address_uri:
{%- if network.ipv6 or ipv6_override|default(false) %}
description: {{network.name}} network IP (with brackets for IPv6 URLs)
value:
list_join:
- ''
- - '['
- {get_param: [IPPool, {get_param: {{network.name}}NetName}, {get_param: NodeIndex}]}
- ']'
{%- else %}
description: {{network.name}} network IP (for compatibility with {{network.name_lower}}_v6.yaml)
value: {get_param: [IPPool, {get_param: {{network.name}}NetName}, {get_param: NodeIndex}]}
{%- endif %}
ip_subnet:
description: IP/Subnet CIDR for the {{network.name}} network IP
value:
list_join:
- ''
- - {get_param: [IPPool, {get_param: {{network.name}}NetName}, {get_param: NodeIndex}]}
- '/'
- {str_split: ['/', {get_param: {{network.name}}NetCidr}, 1]}

66
network/ports/port_from_pool.network.j2.yaml

@ -1,65 +1 @@
heat_template_version: pike
description: >
Creates a port on the {{network.name}} network, using a map of IPs per role.
Each role has a map of IPs in <Role>IPs parameters, with a list of IPs by
network (lower_name or lower case). For example:
ControllerIPs:
external:
- 1.2.3.4 # First controller
- 1.2.3.5 # Second controller
parameters:
{{network.name}}NetName:
description: Name of the {{network.name}} neutron network
default: {{network.name_lower}}
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatibility with noop.yaml
description: IP address on the control plane
default: ''
type: string
ControlPlaneNetwork: # Here for compatibility with ctlplane_vip.yaml
description: The name of the undercloud Neutron control plane
default: ctlplane
type: string
IPPool: # Set in <Role>IPs map, see environments/ips-from-pool-all.yaml
default: {}
type: json
NodeIndex: # First node in the role will get first IP, and so on...
default: 0
type: number
{{network.name}}NetCidr:
default: {{network.ip_subnet}}
description: Cidr for the {{network.name_lower}} network.
type: string
outputs:
ip_address:
description: {{network.name}} network IP
value: {get_param: [IPPool, {get_param: {{network.name}}NetName}, {get_param: NodeIndex}]}
ip_address_uri:
{%- if network.ipv6 %}
description: {{network.name}} network IP (with brackets for IPv6 URLs)
value:
list_join:
- ''
- - '['
- {get_param: [IPPool, {get_param: {{network.name}}NetName}, {get_param: NodeIndex}]}
- ']'
{%- else %}
description: {{network.name}} network IP (for compatibility with {{network.name_lower}}_v6.yaml)
value: {get_param: [IPPool, {get_param: {{network.name}}NetName}, {get_param: NodeIndex}]}
{%- endif %}
ip_subnet:
description: IP/Subnet CIDR for the {{network.name}} network IP
value:
list_join:
- ''
- - {get_param: [IPPool, {get_param: {{network.name}}NetName}, {get_param: NodeIndex}]}
- '/'
- {str_split: ['/', {get_param: {{network.name}}NetCidr}, 1]}
{% include 'port_from_pool.j2' %}

2
network/ports/port_from_pool_v6.network.j2.yaml

@ -0,0 +1,2 @@
{% set ipv6_override = true -%}
{% include 'port_from_pool.j2' %}

2
network/ports/port_v6.network.j2.yaml

@ -0,0 +1,2 @@
{% set ipv6_override = true -%}
{% include 'port.j2' %}

56
network/ports/storage.yaml

@ -1,56 +0,0 @@
heat_template_version: pike
description: >
Creates a port on the storage network.
parameters:
StorageNetName:
description: The name of the storage network.
default: storage
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatibility with noop.yaml
description: IP address on the control plane
default: ''
type: string
FixedIPs:
description: >
Control the IP allocation for the VIP port. E.g.
[{'ip_address':'1.2.3.4'}]
default: []
type: json
IPPool: # Here for compatibility with from_pool.yaml
default: {}
type: json
NodeIndex: # Here for compatibility with from_pool.yaml
default: 0
type: number
resources:
StoragePort:
type: OS::Neutron::Port
properties:
network: {get_param: StorageNetName}
name: {get_param: PortName}
fixed_ips: {get_param: FixedIPs}
replacement_policy: AUTO
outputs:
ip_address:
description: storage network IP
value: {get_attr: [StoragePort, fixed_ips, 0, ip_address]}
ip_address_uri:
description: storage network IP (for compatibility with storage_v6.yaml)
value: {get_attr: [StoragePort, fixed_ips, 0, ip_address]}
ip_subnet:
description: IP/Subnet CIDR for the storage network IP
value:
list_join:
- ''
- - {get_attr: [StoragePort, fixed_ips, 0, ip_address]}
- '/'
- {str_split: ['/', {get_attr: [StoragePort, subnets, 0, cidr]}, 1]}

46
network/ports/storage_from_pool.yaml

@ -1,46 +0,0 @@
heat_template_version: pike
description: >
Returns an IP from a network mapped list of IPs
parameters:
StorageNetName:
description: The name of the storage network.
default: storage
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatibility with noop.yaml
description: IP address on the control plane
default: ''
type: string
IPPool:
default: {}
description: A network mapped list of IPs
type: json
NodeIndex:
default: 0
description: Index of the IP to get from Pool
type: number
StorageNetCidr:
default: '172.16.1.0/24'
description: Cidr for the storage network.
type: string
outputs:
ip_address:
description: storage network IP
value: {get_param: [IPPool, {get_param: StorageNetName}, {get_param: NodeIndex}]}
ip_address_uri:
description: storage network IP (for compatibility with storage_v6.yaml)
value: {get_param: [IPPool, {get_param: StorageNetName}, {get_param: NodeIndex}]}
ip_subnet:
description: IP/Subnet CIDR for the storage network IP
value:
list_join:
- ''
- - {get_param: [IPPool, {get_param: StorageNetName}, {get_param: NodeIndex}]}
- '/'
- {str_split: ['/', {get_param: StorageNetCidr}, 1]}

52
network/ports/storage_from_pool_v6.yaml

@ -1,52 +0,0 @@
heat_template_version: pike
description: >
Returns an IP from a network mapped list of IPs. This version is for IPv6
addresses. The ip_address_uri output will have brackets for use in URLs.
parameters:
StorageNetName:
description: The name of the storage network.
default: storage
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatability with noop.yaml
description: IP address on the control plane
default: ''
type: string
IPPool:
default: {}
description: A network mapped list of IPs
type: json
NodeIndex:
default: 0
description: Index of the IP to get from Pool
type: number
StorageNetCidr:
default: 'fd00:fd00:fd00:3000::/64'
description: Cidr for the storage network.
type: string
outputs:
ip_address:
description: storage network IP
value: {get_param: [IPPool, {get_param: StorageNetName}, {get_param: NodeIndex}]}
ip_address_uri:
description: storage network IP (for compatibility with storage_v6.yaml)
value:
list_join:
- ''
- - '['
- {get_param: [IPPool, {get_param: StorageNetName}, {get_param: NodeIndex}]}
- ']'
ip_subnet:
description: IP/Subnet CIDR for the storage network IP
value:
list_join:
- ''
- - {get_param: [IPPool, {get_param: StorageNetName}, {get_param: NodeIndex}]}
- '/'
- {str_split: ['/', {get_param: StorageNetCidr}, 1]}

57
network/ports/storage_mgmt.yaml

@ -1,57 +0,0 @@
heat_template_version: pike
description: >
Creates a port on the storage_mgmt API network.
parameters:
StorageMgmtNetName:
description: The name of the storage_mgmt network.
default: storage_mgmt
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatibility with noop.yaml
description: IP address on the control plane
default: ''
type: string
FixedIPs:
description: >
Control the IP allocation for the VIP port. E.g.
[{'ip_address':'1.2.3.4'}]
default: []
type: json
IPPool: # Here for compatibility with from_pool.yaml
default: {}
type: json
NodeIndex: # Here for compatibility with from_pool.yaml
default: 0
type: number
resources:
StorageMgmtPort:
type: OS::Neutron::Port
properties:
network: {get_param: StorageMgmtNetName}
name: {get_param: PortName}
fixed_ips: {get_param: FixedIPs}
replacement_policy: AUTO
outputs:
ip_address:
description: storage_mgmt network IP
value: {get_attr: [StorageMgmtPort, fixed_ips, 0, ip_address]}
ip_address_uri:
description: |
storage_mgmt network IP (for compatibility with storage_mgmt_v6.yaml)
value: {get_attr: [StorageMgmtPort, fixed_ips, 0, ip_address]}
ip_subnet:
description: IP/Subnet CIDR for the storage_mgmt network IP
value:
list_join:
- ''
- - {get_attr: [StorageMgmtPort, fixed_ips, 0, ip_address]}
- '/'
- {str_split: ['/', {get_attr: [StorageMgmtPort, subnets, 0, cidr]}, 1]}

46
network/ports/storage_mgmt_from_pool.yaml

@ -1,46 +0,0 @@
heat_template_version: pike
description: >
Returns an IP from a network mapped list of IPs
parameters:
StorageMgmtNetName:
description: The name of the storage_mgmt network.
default: storage_mgmt
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatibility with noop.yaml
description: IP address on the control plane
default: ''
type: string
IPPool:
default: {}
description: A network mapped list of IPs
type: json
NodeIndex:
default: 0
description: Index of the IP to get from Pool
type: number
StorageMgmtNetCidr:
default: '172.16.3.0/24'
description: Cidr for the storage_mgmt network.
type: string
outputs:
ip_address:
description: storage MGMT network IP
value: {get_param: [IPPool, {get_param: StorageMgmtNetName}, {get_param: NodeIndex}]}
ip_address_uri:
description: storage MGMT network IP (for compatibility with storage_mgmt_v6.yaml)
value: {get_param: [IPPool, {get_param: StorageMgmtNetName}, {get_param: NodeIndex}]}
ip_subnet:
description: IP/Subnet CIDR for the storage MGMT network IP
value:
list_join:
- ''
- - {get_param: [IPPool, {get_param: StorageMgmtNetName}, {get_param: NodeIndex}]}
- '/'
- {str_split: ['/', {get_param: StorageMgmtNetCidr}, 1]}

52
network/ports/storage_mgmt_from_pool_v6.yaml

@ -1,52 +0,0 @@
heat_template_version: pike
description: >
Returns an IP from a network mapped list of IPs This version is for IPv6
addresses. The ip_address_uri output will have brackets for use in URLs.
parameters:
StorageMgmtNetName:
description: The name of the storage_mgmt network.
default: storage_mgmt
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatability with noop.yaml
description: IP address on the control plane
default: ''
type: string
IPPool:
default: {}
description: A network mapped list of IPs
type: json
NodeIndex:
default: 0
description: Index of the IP to get from Pool
type: number
StorageMgmtNetCidr:
default: 'fd00:fd00:fd00:4000::/64'
description: Cidr for the storage_mgmt network.
type: string
outputs:
ip_address:
description: storage MGMT network IP
value: {get_param: [IPPool, {get_param: StorageMgmtNetName}, {get_param: NodeIndex}]}
ip_address_uri:
description: storage MGMT network IP (for compatibility with storage_mgmt_v6.yaml)
value:
list_join:
- ''
- - '['
- {get_param: [IPPool, {get_param: StorageMgmtNetName}, {get_param: NodeIndex}]}
- ']'
ip_subnet:
description: IP/Subnet CIDR for the storage MGMT network IP
value:
list_join:
- ''
- - {get_param: [IPPool, {get_param: StorageMgmtNetName}, {get_param: NodeIndex}]}
- '/'
- {str_split: ['/', {get_param: StorageMgmtNetCidr}, 1]}

61
network/ports/storage_mgmt_v6.yaml

@ -1,61 +0,0 @@
heat_template_version: pike
description: >
Creates a port on the storage_mgmt API network.
parameters:
StorageMgmtNetName:
description: The name of the storage_mgmt network.
default: storage_mgmt
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatability with noop.yaml
description: IP address on the control plane
default: ''
type: string
FixedIPs:
description: >
Control the IP allocation for the VIP port. E.g.
[{'ip_address':'1.2.3.4'}]
default: []
type: json
IPPool: # Here for compatibility with from_pool.yaml
default: {}
type: json
NodeIndex: # Here for compatibility with from_pool.yaml
default: 0
type: number
resources:
StorageMgmtPort:
type: OS::Neutron::Port
properties:
network: {get_param: StorageMgmtNetName}
name: {get_param: PortName}
fixed_ips: {get_param: FixedIPs}
replacement_policy: AUTO
outputs:
ip_address:
description: storage_mgmt network IP
value: {get_attr: [StorageMgmtPort, fixed_ips, 0, ip_address]}
ip_address_uri:
description: storage_mgmt network IP with brackets suitable for a URI
value:
list_join:
- ''
- - '['
- {get_attr: [StorageMgmtPort, fixed_ips, 0, ip_address]}
- ']'
ip_subnet:
description: IP/Subnet CIDR for the storage_mgmt network IP
value:
list_join:
- ''
- - {get_attr: [StorageMgmtPort, fixed_ips, 0, ip_address]}
- '/'
- {str_split: ['/', {get_attr: [StorageMgmtPort, subnets, 0, cidr]}, 1]}

61
network/ports/storage_v6.yaml

@ -1,61 +0,0 @@
heat_template_version: pike
description: >
Creates a port on the storage network.
parameters:
StorageNetName:
description: The name of the storage network.
default: storage
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatability with noop.yaml
description: IP address on the control plane
default: ''
type: string
FixedIPs:
description: >
Control the IP allocation for the VIP port. E.g.
[{'ip_address':'1.2.3.4'}]
default: []
type: json
IPPool: # Here for compatibility with from_pool.yaml
default: {}
type: json
NodeIndex: # Here for compatibility with from_pool.yaml
default: 0
type: number
resources:
StoragePort:
type: OS::Neutron::Port
properties:
network: {get_param: StorageNetName}
name: {get_param: PortName}
fixed_ips: {get_param: FixedIPs}
replacement_policy: AUTO
outputs:
ip_address:
description: storage network IP
value: {get_attr: [StoragePort, fixed_ips, 0, ip_address]}
ip_address_uri:
description: storage network IP with brackets suitable for a URL
value:
list_join:
- ''
- - '['
- {get_attr: [StoragePort, fixed_ips, 0, ip_address]}
- ']'
ip_subnet:
description: IP/Subnet CIDR for the storage network IP
value:
list_join:
- ''
- - {get_attr: [StoragePort, fixed_ips, 0, ip_address]}
- '/'
- {str_split: ['/', {get_attr: [StoragePort, subnets, 0, cidr]}, 1]}

56
network/ports/tenant.yaml

@ -1,56 +0,0 @@
heat_template_version: pike
description: >
Creates a port on the tenant network.
parameters:
TenantNetName:
description: The name of the tenant network.
default: tenant
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatibility with noop.yaml
description: IP address on the control plane
default: ''
type: string
FixedIPs:
description: >
Control the IP allocation for the VIP port. E.g.
[{'ip_address':'1.2.3.4'}]
default: []
type: json
IPPool: # Here for compatibility with from_pool.yaml
default: {}
type: json
NodeIndex: # Here for compatibility with from_pool.yaml
default: 0
type: number
resources:
TenantPort:
type: OS::Neutron::Port
properties:
network: {get_param: TenantNetName}
name: {get_param: PortName}
fixed_ips: {get_param: FixedIPs}
replacement_policy: AUTO
outputs:
ip_address:
description: tenant network IP
value: {get_attr: [TenantPort, fixed_ips, 0, ip_address]}
ip_address_uri:
description: tenant network IP (for compatibility with tenant_v6.yaml)
value: {get_attr: [TenantPort, fixed_ips, 0, ip_address]}
ip_subnet:
description: IP/Subnet CIDR for the tenant network IP
value:
list_join:
- ''
- - {get_attr: [TenantPort, fixed_ips, 0, ip_address]}
- '/'
- {str_split: ['/', {get_attr: [TenantPort, subnets, 0, cidr]}, 1]}

46
network/ports/tenant_from_pool.yaml

@ -1,46 +0,0 @@
heat_template_version: pike
description: >
Returns an IP from a network mapped list of IPs
parameters:
TenantNetName:
description: The name of the tenant network.
default: tenant
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatibility with noop.yaml
description: IP address on the control plane
default: ''
type: string
IPPool:
default: {}
description: A network mapped list of IPs
type: json
NodeIndex:
default: 0