You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
153 lines
4.6 KiB
153 lines
4.6 KiB
heat_template_version: wallaby |
|
|
|
description: > |
|
Creates a port on the {{network.name}} network. The IP address will be chosen |
|
automatically if FixedIPs is empty. |
|
|
|
parameters: |
|
RootStackName: |
|
description: The name of the stack/plan. |
|
type: string |
|
{{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 |
|
DnsName: |
|
description: DNS name of the port |
|
default: '' |
|
type: string |
|
ControlPlaneIP: # Here for compatibility with noop.yaml |
|
description: IP address on the control plane |
|
default: '' |
|
type: string |
|
ControlPlaneSubnetCidr: # Here for compatibility with noop.yaml |
|
default: '' |
|
description: > |
|
The subnet CIDR of the control plane network. (The parameter is |
|
automatically resolved from the ctlplane subnet's cidr attribute.) |
|
type: string |
|
ControlPlaneNetwork: # Here for compatibility with ctlplane_vip.yaml |
|
description: The name of the undercloud Neutron control plane |
|
default: ctlplane |
|
type: string |
|
ControlPlaneSubnet: # Here for compatibility with ctlplane_vip.yaml |
|
description: The name of the undercloud Neutron control plane subnet |
|
default: ctlplane-subnet |
|
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 |
|
PortDeletionPolicy: |
|
description: > |
|
Whether to retain or delete the neutron port resource on deletion of the |
|
stack |
|
type: string |
|
default: delete |
|
constraints: |
|
- allowed_values: [delete, retain] |
|
DefaultRoute: |
|
description: > |
|
Whether this interface is used for the default route |
|
type: boolean |
|
default: false |
|
IsVirtualIP: |
|
type: boolean |
|
default: false |
|
Role: |
|
description: > |
|
The TripleO Role Name |
|
type: string |
|
default: '' |
|
|
|
conditions: |
|
network_is_ctlplane: |
|
equals: |
|
- get_param: {{network.name}}NetName |
|
- ctlplane |
|
fixed_ip_not_set: |
|
equals: |
|
- yaql: |
|
expression: $.data.where($.get('ip_address')) |
|
data: {get_param: FixedIPs} |
|
- [] |
|
net_is_ctlplane_and_fixed_ip_not_set: |
|
and: |
|
- network_is_ctlplane |
|
- fixed_ip_not_set |
|
|
|
resources: |
|
|
|
{{network.name}}Port: |
|
type: OS::Neutron::Port |
|
deletion_policy: {get_param: PortDeletionPolicy} |
|
{%- if set_external_id|default(false) and network.external_resource_vip_id|default('') %} |
|
external_id: {{network.external_resource_vip_id}} |
|
{%- endif %} |
|
properties: |
|
network: {get_param: {{network.name}}NetName} |
|
name: {get_param: PortName} |
|
dns_name: {get_param: DnsName} |
|
fixed_ips: |
|
if: |
|
- net_is_ctlplane_and_fixed_ip_not_set |
|
- [{subnet: {get_param: ControlPlaneSubnet}}] |
|
- get_param: FixedIPs |
|
replacement_policy: AUTO |
|
tags: |
|
if: |
|
- {get_param: IsVirtualIP} |
|
- - str_replace: |
|
template: tripleo_vip_net=$NET_NAME |
|
params: |
|
$NET_NAME: {get_param: {{network.name}}NetName} |
|
- str_replace: |
|
template: tripleo_stack_name=$STACK_NAME |
|
params: |
|
$STACK_NAME: {get_param: RootStackName} |
|
- - str_replace: |
|
template: tripleo_stack_name=$STACK_NAME |
|
params: |
|
$STACK_NAME: {get_param: RootStackName} |
|
- str_replace: |
|
template: tripleo_default_route=$BOOL |
|
params: |
|
$BOOL: {get_param: DefaultRoute} |
|
- str_replace: |
|
template: tripleo_role=$ROLE |
|
params: |
|
$ROLE: {get_param: Role} |
|
|
|
outputs: |
|
ip_address: |
|
description: {{network.name}} network IP |
|
value: {get_attr: [{{network.name}}Port, fixed_ips, 0, ip_address]} |
|
ip_address_uri: |
|
description: {{network.name}} network IP (with brackets for IPv6 URLs) |
|
value: |
|
str_replace: |
|
template: |
|
make_url: |
|
host: {get_attr: [{{network.name}}Port, fixed_ips, 0, ip_address]} |
|
params: |
|
//: '' |
|
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]}
|
|
|