heat_template_version: pike description: > Tenant IPv6 network. parameters: # the defaults here work for static IP assignment (IPAM) only TenantNetCidr: # OpenStack uses the EUI-64 address format, which requires a /64 prefix default: 'fd00:fd00:fd00:5000::/64' description: Cidr for the tenant network. type: string TenantNetValueSpecs: default: {'provider:physical_network': 'tenant', 'provider:network_type': 'flat'} description: Value specs for the tenant network. type: json TenantNetAdminStateUp: default: false description: The admin state of the network. type: boolean TenantNetShared: default: false description: Whether this network is shared across all tenants. type: boolean TenantNetName: default: tenant description: The name of the tenant network. type: string TenantSubnetName: default: tenant_subnet description: The name of the tenant subnet in Neutron. type: string TenantAllocationPools: default: [{'start': 'fd00:fd00:fd00:5000::10', 'end': 'fd00:fd00:fd00:5000:ffff:ffff:ffff:fffe'}] description: Ip allocation pool range for the tenant network. type: json 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 resources: TenantNetwork: type: OS::Neutron::Net properties: admin_state_up: {get_param: TenantNetAdminStateUp} name: {get_param: TenantNetName} shared: {get_param: TenantNetShared} value_specs: {get_param: TenantNetValueSpecs} TenantSubnet: type: OS::Neutron::Subnet properties: ip_version: 6 ipv6_address_mode: {get_param: IPv6AddressMode} ipv6_ra_mode: {get_param: IPv6RAMode} cidr: {get_param: TenantNetCidr} name: {get_param: TenantSubnetName} network: {get_resource: TenantNetwork} allocation_pools: {get_param: TenantAllocationPools} gateway_ip: null outputs: OS::stack_id: description: Neutron tenant network value: {get_resource: TenantNetwork} subnet_cidr: value: {get_attr: TenantSubnet, cidr}