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 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_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]}