Don't assume default network names in net_ip*map
authorSteven Hardy <shardy@redhat.com>
Wed, 21 Dec 2016 13:19:20 +0000 (13:19 +0000)
committerSteven Hardy <shardy@redhat.com>
Fri, 17 Feb 2017 13:38:31 +0000 (13:38 +0000)
This needs to handle a ServiceNetMap containing non-default
network names when they are overridden via the *NetName parameters.

Closes-Bug: #1651541
Change-Id: I95d808444642a37612a495e822e50449a7e7da63

network/ports/net_ip_list_map.yaml
network/ports/net_ip_map.yaml
puppet/all-nodes-config.yaml

index 5782bbe..83d875e 100644 (file)
@@ -35,6 +35,32 @@ parameters:
     default: []
     type: json
 
+  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:
    # This adds the extra "services" on for keystone
    # so that keystone_admin_api_network and
@@ -58,19 +84,33 @@ resources:
                 - keystone_admin_api
                 - keystone_public_api
 
+  NetIpMapValue:
+    type: OS::Heat::Value
+    properties:
+      type: json
+      value:
+        map_replace:
+          - ctlplane: {get_param: ControlPlaneIpList}
+            external: {get_param: ExternalIpList}
+            internal_api: {get_param: InternalApiIpList}
+            storage: {get_param: StorageIpList}
+            storage_mgmt: {get_param: StorageMgmtIpList}
+            tenant: {get_param: TenantIpList}
+            management: {get_param: ManagementIpList}
+          - 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}
+
 outputs:
   net_ip_map:
     description: >
       A Hash containing a mapping of network names to assigned lists
       of IP addresses.
-    value:
-      ctlplane: {get_param: ControlPlaneIpList}
-      external: {get_param: ExternalIpList}
-      internal_api: {get_param: InternalApiIpList}
-      storage: {get_param: StorageIpList}
-      storage_mgmt: {get_param: StorageMgmtIpList}
-      tenant: {get_param: TenantIpList}
-      management: {get_param: ManagementIpList}
+    value: {get_attr: [NetIpMapValue, value]}
   service_ips:
     description: >
       Map of enabled services to a list of their IP addresses
@@ -92,14 +132,7 @@ outputs:
                         for_each:
                           SERVICE: {get_attr: [EnabledServicesValue, value]}
                   - values: {get_param: ServiceNetMap}
-              - values:
-                  ctlplane: {get_param: ControlPlaneIpList}
-                  external: {get_param: ExternalIpList}
-                  internal_api: {get_param: InternalApiIpList}
-                  storage: {get_param: StorageIpList}
-                  storage_mgmt: {get_param: StorageMgmtIpList}
-                  tenant: {get_param: TenantIpList}
-                  management: {get_param: ManagementIpList}
+              - values: {get_attr: [NetIpMapValue, value]}
   service_hostnames:
     description: >
       Map of enabled services to a list of hostnames where they're running
index c8cf733..c974d72 100644 (file)
@@ -69,35 +69,136 @@ parameters:
     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:
-      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}
+    value: {get_attr: [NetIpMapValue, value]}
index ee43c3a..7edf17a 100644 (file)
@@ -68,6 +68,32 @@ parameters:
     type: boolean
     default: false
 
+  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:
 
   allNodesConfigImpl:
@@ -175,21 +201,21 @@ resources:
                   get_param: [NetVipMap, {get_param: [ServiceNetMap, keystone_admin_api_network]}]
                 keystone_public_api_vip:
                   get_param: [NetVipMap, {get_param: [ServiceNetMap, keystone_public_api_network]}]
-                public_virtual_ip: {get_param: [NetVipMap, external]}
+                public_virtual_ip: {get_param: [NetVipMap, {get_param: ExternalNetName}]}
                 controller_virtual_ip: {get_param: [NetVipMap, ctlplane]}
-                internal_api_virtual_ip: {get_param: [NetVipMap, internal_api]}
-                storage_virtual_ip: {get_param: [NetVipMap, storage]}
-                storage_mgmt_virtual_ip: {get_param: [NetVipMap, storage_mgmt]}
+                internal_api_virtual_ip: {get_param: [NetVipMap, {get_param: InternalApiNetName}]}
+                storage_virtual_ip: {get_param: [NetVipMap, {get_param: StorageNetName}]}
+                storage_mgmt_virtual_ip: {get_param: [NetVipMap, {get_param: StorageMgmtNetName}]}
                 redis_vip: {get_param: RedisVirtualIP}
                 # public_virtual_ip and controller_virtual_ip are needed in
                 # both HAproxy & keepalived.
-                tripleo::haproxy::public_virtual_ip: {get_param: [NetVipMap, external]}
+                tripleo::haproxy::public_virtual_ip: {get_param: [NetVipMap, {get_param: ExternalNetName}]}
                 tripleo::haproxy::controller_virtual_ip: {get_param: [NetVipMap, ctlplane]}
-                tripleo::keepalived::public_virtual_ip: {get_param: [NetVipMap, external]}
+                tripleo::keepalived::public_virtual_ip: {get_param: [NetVipMap, {get_param: ExternalNetName}]}
                 tripleo::keepalived::controller_virtual_ip: {get_param: [NetVipMap, ctlplane]}
-                tripleo::keepalived::internal_api_virtual_ip: {get_param: [NetVipMap, internal_api]}
-                tripleo::keepalived::storage_virtual_ip: {get_param: [NetVipMap, storage]}
-                tripleo::keepalived::storage_mgmt_virtual_ip: {get_param: [NetVipMap, storage_mgmt]}
+                tripleo::keepalived::internal_api_virtual_ip: {get_param: [NetVipMap, {get_param: InternalApiNetName}]}
+                tripleo::keepalived::storage_virtual_ip: {get_param: [NetVipMap, {get_param: StorageNetName}]}
+                tripleo::keepalived::storage_mgmt_virtual_ip: {get_param: [NetVipMap, {get_param: StorageMgmtNetName}]}
                 tripleo::keepalived::redis_virtual_ip: {get_param: RedisVirtualIP}
                 tripleo::redis_notification::haproxy_monitor_ip: {get_param: [NetVipMap, ctlplane]}
                 cloud_name_external: {get_param: cloud_name_external}