heat_template_version: wallaby description: > StorageMgmt network definition (automatically generated). parameters: # the defaults here work for static IP assignment (IPAM) only StorageMgmtNetCidr: default: "" description: Cidr for the storage_mgmt network. type: string StorageMgmtNetValueSpecs: default: {'provider:physical_network': 'storage_mgmt', 'provider:network_type': 'flat'} description: Value specs for the storage_mgmt network. type: json StorageMgmtNetEnableDHCP: default: false description: Whether to enable DHCP on the associated subnet. type: boolean StorageMgmtNetAdminStateUp: default: false description: The admin state of the network. type: boolean StorageMgmtNetShared: default: false description: Whether this network is shared across all tenants. type: boolean StorageMgmtNetName: default: storage_mgmt description: The name of the storage_mgmt network. type: string StorageMgmtSubnetName: default: storage_mgmt_subnet description: The name of the storage_mgmt subnet in Neutron. type: string StorageMgmtAllocationPools: default: [] description: Ip allocation pool range for the storage_mgmt network. type: json StorageMgmtInterfaceDefaultRoute: default: "" description: default route for the storage_mgmt network type: string StorageMgmtNetworkVlanID: default: 23 description: Vlan ID for the storage_mgmt network traffic. type: number StorageMgmtRoutes: default: [] description: > Routes for the storage_mgmt network traffic. JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}] Routes are added to the host_routes property on the subnet in neutron when the network and subnet is created. type: json StorageMgmtMtu: default: 1500 description: The maximum transmission unit (MTU) size(in bytes) that is guaranteed to pass through the data path of the segments in the StorageMgmt network. type: number StorageMgmtSubnetCidr_storage_mgmt_subnet: default: "172.20.0.0/24" description: | Cidr for the storage_mgmt network's storage_mgmt_subnet subnet. type: string StorageMgmtAllocationPools_storage_mgmt_subnet: default: [{'start': '172.20.0.4', 'end': '172.20.0.250'}] description: | Ip allocation pool range for the storage_mgmt network's storage_mgmt_subnet subnet. type: json StorageMgmtInterfaceDefaultRoute_storage_mgmt_subnet: default: "[]" description: | default route for the storage_mgmt network's storage_mgmt_subnet subnet. type: string StorageMgmtNetworkVlanID_storage_mgmt_subnet: default: 1 description: | Vlan ID for the storage_mgmt network's storage_mgmt_subnet subnet. type: number StorageMgmtRoutes_storage_mgmt_subnet: default: [] description: > Routes for the storage_mgmt_subnet subnet on storage_mgmt network traffic. JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}] Routes are added to the host_routes property on the subnet in neutron when the subnet is created. type: json ManageNetworks: default: true type: boolean description: > Manage the network and related resources (subnets and segments) with either create, update, or delete operations (depending on the stack operation). Does not apply to ports which will always be managed as needed. Defaults to true. For multi-stack use cases where the network related resources have already been managed by a separate stack, this parameter can be set to false. CloudDomain: default: 'localdomain' type: string description: > The DNS domain used for the hosts. This must match the overcloud_domain_name configured on the undercloud. NetworkDeletionPolicy: description: > Whether to retain or delete network resource on deletion of the stack type: string default: delete constraints: - allowed_values: [delete, retain] conditions: manage_networks: {get_param: ManageNetworks} is_ipv6: yaql: expression: '":" in $.data' data: {get_param: StorageMgmtNetCidr} resources: StorageMgmtNetwork: type: OS::Neutron::Net deletion_policy: {get_param: NetworkDeletionPolicy} condition: manage_networks properties: admin_state_up: {get_param: StorageMgmtNetAdminStateUp} name: {get_param: StorageMgmtNetName} dns_domain: list_join: - '.' - - storagemgmt - {get_param: CloudDomain} - '' shared: {get_param: StorageMgmtNetShared} value_specs: map_merge: - {get_param: StorageMgmtNetValueSpecs} - {'mtu': {get_param: StorageMgmtMtu}} tags: - tripleo_net_idx=1 - tripleo_network_name=StorageMgmt - tripleo_vip=True - tripleo_service_net_map_replace=storage_mgmt StorageMgmtSubnet: type: OS::Neutron::Subnet deletion_policy: {get_param: NetworkDeletionPolicy} condition: manage_networks properties: cidr: {get_param: StorageMgmtNetCidr} name: {get_param: StorageMgmtSubnetName} network: {get_resource: StorageMgmtNetwork} allocation_pools: {get_param: StorageMgmtAllocationPools} gateway_ip: {get_param: StorageMgmtInterfaceDefaultRoute} host_routes: {get_param: StorageMgmtRoutes} # All networks have an implicit network segment when created, map this subnet to that segment. segment: {get_attr: [StorageMgmtNetwork, segments, 0, id]} ip_version: {if: [is_ipv6, 6, 4]} enable_dhcp: {get_param: StorageMgmtNetEnableDHCP} tags: - str_replace: template: tripleo_vlan_id=$vlan_id params: $vlan_id: {get_param: StorageMgmtNetworkVlanID} StorageMgmtSegment_storage_mgmt_subnet: type: OS::Neutron::Segment deletion_policy: {get_param: NetworkDeletionPolicy} condition: manage_networks # NOTE(hjensas): Depends-On here to ensure we always create the base subnet # first. We can only set the segment for existing subnet if there is only # one segment and only one existing subnet on the network. depends_on: StorageMgmtSubnet properties: name: storage_mgmt_storage_mgmt_subnet network: {get_resource: StorageMgmtNetwork} network_type: flat physical_network: storage_mgmt_storage_mgmt_subnet StorageMgmtSubnet_storage_mgmt_subnet: type: OS::Neutron::Subnet deletion_policy: {get_param: NetworkDeletionPolicy} condition: manage_networks properties: cidr: {get_param: StorageMgmtSubnetCidr_storage_mgmt_subnet} name: storage_mgmt_subnet network: {get_resource: StorageMgmtNetwork} allocation_pools: {get_param: StorageMgmtAllocationPools_storage_mgmt_subnet} gateway_ip: {get_param: StorageMgmtInterfaceDefaultRoute_storage_mgmt_subnet} host_routes: {get_param: StorageMgmtRoutes_storage_mgmt_subnet} segment: {get_resource: StorageMgmtSegment_storage_mgmt_subnet} ip_version: {if: [is_ipv6, 6, 4]} enable_dhcp: {get_param: StorageMgmtNetEnableDHCP} tags: - str_replace: template: tripleo_vlan_id=$vlan_id params: $vlan_id: {get_param: StorageMgmtNetworkVlanID_storage_mgmt_subnet} outputs: OS::stack_id: description: storage_mgmt network value: {get_resource: StorageMgmtNetwork} ip_version: description: IP version of StorageMgmt network. value: {if: [is_ipv6, 6, 4]} network_cidrs: description: List of StorageMgmt network's subnets in CIDR notation. value: if: - manage_networks - - {get_attr: [StorageMgmtSubnet, cidr]} - {get_attr: [StorageMgmtSubnet_storage_mgmt_subnet, cidr]} - - {get_param: StorageMgmtNetCidr} - {get_param: StorageMgmtSubnetCidr_storage_mgmt_subnet} network_attrs: description: StorageMgmt network's attributes value: if: - manage_networks - {get_attr: [StorageMgmtNetwork, show]} - name: storage_mgmt dns_domain: list_join: - '.' - - storagemgmt - {get_param: CloudDomain} - '' mtu: 1500 subnet_attrs: description: Map of attributes for subnets in the StorageMgmt network value: if: - manage_networks - storage_mgmt_subnet: {get_attr: [StorageMgmtSubnet, show]} storage_mgmt_subnet: {get_attr: [StorageMgmtSubnet_storage_mgmt_subnet, show]} - storage_mgmt_subnet: name: storage_mgmt_subnet cidr: {get_param: StorageMgmtNetCidr} dns_nameservers: [] gateway_ip: {get_param: StorageMgmtInterfaceDefaultRoute} host_routes: {get_param: StorageMgmtRoutes} ip_version: {if: [is_ipv6, 6, 4]} storage_mgmt_subnet: name: storage_mgmt_subnet cidr: {get_param: StorageMgmtSubnetCidr_storage_mgmt_subnet} dns_nameservers: [] gateway_ip: {get_param: StorageMgmtInterfaceDefaultRoute_storage_mgmt_subnet} host_routes: {get_param: StorageMgmtRoutes_storage_mgmt_subnet} ip_version: {if: [is_ipv6, 6, 4]}