heat_template_version: 2015-04-30
description: >
Creates a port on the external network. The IP address will be chosen
automatically if FixedIPs is empty.
parameters:
ExternalNetName:
description: Name of the external neutron 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
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
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_subnet:
# FIXME: this assumes a 2 digit subnet CIDR (need more heat functions?)
description: IP/Subnet CIDR for the external network IP
value:
list_join:
- ''
- - {get_attr: [ExternalPort, fixed_ips, 0, ip_address]}
- '/'
- {get_attr: [ExternalPort, subnets, 0, cidr, -2]}
- {get_attr: [ExternalPort, subnets, 0, cidr, -1]}