Merge "Containerize MySQL for HA"
[apex-tripleo-heat-templates.git] / network / ports / net_ip_map.yaml
index b7138b2..75818bf 100644 (file)
-heat_template_version: 2014-10-16
+heat_template_version: pike
 
 parameters:
+  ControlPlaneIp:
+    default: ''
+    type: string
+  ControlPlaneSubnetCidr: # Override this via parameter_defaults
+    default: '24'
+    description: The subnet CIDR of the control plane network.
+    type: string
   ExternalIp:
     default: ''
     type: string
+  ExternalIpSubnet:
+    default: ''
+    type: string
+  ExternalIpUri:
+    default: ''
+    type: string
+    description: IP address with brackets in case of IPv6
   InternalApiIp:
     default: ''
     type: string
+  InternalApiIpSubnet:
+    default: ''
+    type: string
+  InternalApiIpUri:
+    default: ''
+    type: string
+    description: IP address with brackets in case of IPv6
   StorageIp:
     default: ''
     type: string
+  StorageIpSubnet:
+    default: ''
+    type: string
+  StorageIpUri:
+    default: ''
+    type: string
+    description: IP address with brackets in case of IPv6
   StorageMgmtIp:
     default: ''
     type: string
+  StorageMgmtIpSubnet:
+    default: ''
+    type: string
+  StorageMgmtIpUri:
+    default: ''
+    type: string
+    description: IP address with brackets in case of IPv6
   TenantIp:
     default: ''
     type: string
+  TenantIpSubnet:
+    default: ''
+    type: string
+  TenantIpUri:
+    default: ''
+    type: string
+    description: IP address with brackets in case of IPv6
+  ManagementIp:
+    default: ''
+    type: string
+  ManagementIpSubnet:
+    default: ''
+    type: string
+  ManagementIpUri:
+    default: ''
+    type: string
+    description: IP address with brackets in case of IPv6
+
+  InternalApiNetName:
+    default: internal_api
+    description: The name of the internal API network.
+    type: string
+  ExternalNetName:
+    default: external
+    description: The name of the external network.
+    type: string
+  ManagementNetName:
+    default: management
+    description: The name of the management network.
+    type: string
+  StorageNetName:
+    default: storage
+    description: The name of the storage network.
+    type: string
+  StorageMgmtNetName:
+    default: storage_mgmt
+    description: The name of the Storage management network.
+    type: string
+  TenantNetName:
+    default: tenant
+    description: The name of the tenant network.
+    type: string
+
+resources:
+
+  NetIpMapValue:
+    type: OS::Heat::Value
+    properties:
+      type: json
+      value:
+        map_replace:
+          - ctlplane: {get_param: ControlPlaneIp}
+            external: {get_param: ExternalIp}
+            internal_api: {get_param: InternalApiIp}
+            storage: {get_param: StorageIp}
+            storage_mgmt: {get_param: StorageMgmtIp}
+            tenant: {get_param: TenantIp}
+            management: {get_param: ManagementIp}
+            ctlplane_subnet:
+              list_join:
+                - ''
+                - - {get_param: ControlPlaneIp}
+                  - '/'
+                  - {get_param: ControlPlaneSubnetCidr}
+            external_subnet: {get_param: ExternalIpSubnet}
+            internal_api_subnet: {get_param: InternalApiIpSubnet}
+            storage_subnet: {get_param: StorageIpSubnet}
+            storage_mgmt_subnet: {get_param: StorageMgmtIpSubnet}
+            tenant_subnet: {get_param: TenantIpSubnet}
+            management_subnet: {get_param: ManagementIpSubnet}
+            ctlplane_uri: {get_param: ControlPlaneIp}
+            external_uri: {get_param: ExternalIpUri}
+            internal_api_uri: {get_param: InternalApiIpUri}
+            storage_uri: {get_param: StorageIpUri}
+            storage_mgmt_uri: {get_param: StorageMgmtIpUri}
+            tenant_uri: {get_param: TenantIpUri}
+            management_uri: {get_param: ManagementIpUri}
+          - keys:
+              external: {get_param: ExternalNetName}
+              internal_api: {get_param: InternalApiNetName}
+              storage: {get_param: StorageNetName}
+              storage_mgmt: {get_param: StorageMgmtNetName}
+              tenant: {get_param: TenantNetName}
+              management: {get_param: ManagementNetName}
+              external_subnet:
+                str_replace:
+                  template: NAME_subnet
+                  params:
+                    NAME: {get_param: ExternalNetName}
+              internal_api_subnet:
+                str_replace:
+                  template: NAME_subnet
+                  params:
+                    NAME: {get_param: InternalApiNetName}
+              storage_subnet:
+                str_replace:
+                  template: NAME_subnet
+                  params:
+                    NAME: {get_param: StorageNetName}
+              storage_mgmt_subnet:
+                str_replace:
+                  template: NAME_subnet
+                  params:
+                    NAME: {get_param: StorageMgmtNetName}
+              tenant_subnet:
+                str_replace:
+                  template: NAME_subnet
+                  params:
+                    NAME: {get_param: TenantNetName}
+              management_subnet:
+                str_replace:
+                  template: NAME_subnet
+                  params:
+                    NAME: {get_param: ManagementNetName}
+              external_uri:
+                str_replace:
+                  template: NAME_uri
+                  params:
+                    NAME: {get_param: ExternalNetName}
+              internal_api_uri:
+                str_replace:
+                  template: NAME_uri
+                  params:
+                    NAME: {get_param: InternalApiNetName}
+              storage_uri:
+                str_replace:
+                  template: NAME_uri
+                  params:
+                    NAME: {get_param: StorageNetName}
+              storage_mgmt_uri:
+                str_replace:
+                  template: NAME_uri
+                  params:
+                    NAME: {get_param: StorageMgmtNetName}
+              tenant_uri:
+                str_replace:
+                  template: NAME_uri
+                  params:
+                    NAME: {get_param: TenantNetName}
+              management_uri:
+                str_replace:
+                  template: NAME_uri
+                  params:
+                    NAME: {get_param: ManagementNetName}
 
 outputs:
   net_ip_map:
     description: >
       A Hash containing a mapping of network names to assigned IPs
       for a specific machine.
-    value:
-      external: {get_param: ExternalIp}
-      internal_api: {get_param: InternalApiIp}
-      storage: {get_param: StorageIp}
-      storage_mgmt: {get_param: StorageMgmtIp}
-      tenant: {get_param: TenantIp}
+    value: {get_attr: [NetIpMapValue, value]}