Refacter Endpoints into EndpointMap
authorMark Chappell <mchappel@redhat.com>
Tue, 3 Nov 2015 13:29:57 +0000 (15:29 +0200)
committerMark Chappell <mchappel@redhat.com>
Wed, 11 Nov 2015 08:24:00 +0000 (09:24 +0100)
Because many of the service endpoints URLs use the same patterns for
generating the URLs it makes sense to use the same templates to reduce
the copy and paste.

In the process also adds support for explicitly specifying hostnames
for use in the endpoints.  Note: DNS must be pre-configured.   The
Heat templates do not directly configure DNS.

Change-Id: Ie3270909beca3d63f2d7e4bcb04c559380ddc54d
Co-Authored-By: Juan Antonio Osorio Robles <jaosorior@redhat.com>
network/endpoints/endpoint.yaml [new file with mode: 0644]
network/endpoints/endpoint_map.yaml [new file with mode: 0644]
os-apply-config/controller.yaml
overcloud-resource-registry-puppet.yaml
overcloud-resource-registry.yaml
overcloud-without-mergepy.yaml
puppet/cinder-storage.yaml
puppet/compute.yaml
puppet/controller.yaml

diff --git a/network/endpoints/endpoint.yaml b/network/endpoints/endpoint.yaml
new file mode 100644 (file)
index 0000000..8ffd6c4
--- /dev/null
@@ -0,0 +1,55 @@
+heat_template_version: 2015-04-30
+
+description: >
+  OpenStack Endpoint
+
+parameters:
+  EndpointName:
+    type: string
+    description: The name of the Endpoint being evaluated
+  EndpointMap:
+    type: json
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+  IP:
+    type: string
+    description: The IP address of the Neutron Port that the endpoint is attached to
+  UriSuffix:
+    type: string
+    default: ''
+    description: A suffix attached to the URL
+
+outputs:
+  endpoint:
+    description: >
+      A Hash containing a mapping of service endpoints to ports, protocols, uris
+      assigned IPs, and hostnames for a specific endpoint
+    value:
+      port: {get_param: [EndpointMap, {get_param: EndpointName }, port] }
+      protocol: {get_param: [EndpointMap, {get_param: EndpointName }, protocol] }
+      host:
+        str_replace:
+          template: {get_param: [EndpointMap, {get_param: EndpointName }, host]}
+          params: {IP_ADDRESS: {get_param: IP} }
+      uri:
+        list_join:
+          - ''
+          - - {get_param: [EndpointMap, {get_param: EndpointName }, protocol] }
+            - '://'
+            - str_replace:
+                template: {get_param: [EndpointMap, {get_param: EndpointName }, host]}
+                params: {IP_ADDRESS: {get_param: IP} }
+            - ':'
+            - {get_param: [EndpointMap, {get_param: EndpointName }, port] }
+            - {get_param: UriSuffix }
+      uri_no_suffix:
+        list_join:
+          - ''
+          - - {get_param: [EndpointMap, {get_param: EndpointName }, protocol] }
+            - '://'
+            - str_replace:
+                template: {get_param: [EndpointMap, {get_param: EndpointName }, host]}
+                params: {IP_ADDRESS: {get_param: IP} }
+            - ':'
+            - {get_param: [EndpointMap, {get_param: EndpointName }, port] }
diff --git a/network/endpoints/endpoint_map.yaml b/network/endpoints/endpoint_map.yaml
new file mode 100644 (file)
index 0000000..9c000c3
--- /dev/null
@@ -0,0 +1,374 @@
+heat_template_version: 2015-04-30
+
+description: >
+  A Map of OpenStack Endpoints
+
+parameters:
+  CeilometerApiVirtualIP:
+    type: string
+    default: ''
+  CinderApiVirtualIP:
+    type: string
+    default: ''
+  GlanceApiVirtualIP:
+    type: string
+    default: ''
+  GlanceRegistryVirtualIP:
+    type: string
+    default: ''
+  HeatApiVirtualIP:
+    type: string
+    default: ''
+  KeystoneAdminApiVirtualIP:
+    type: string
+    default: ''
+  KeystonePublicApiVirtualIP:
+    type: string
+    default: ''
+  MysqlVirtualIP:
+    type: string
+    default: ''
+  NeutronApiVirtualIP:
+    type: string
+    default: ''
+  NovaApiVirtualIP:
+    type: string
+    default: ''
+  PublicVirtualIP:
+    type: string
+    default: ''
+  SwiftProxyVirtualIP:
+    type: string
+    default: ''
+  EndpointMap:
+    type: json
+    default:
+      CeilometerAdmin: {protocol: 'http', port: '8777', host: 'IP_ADDRESS'}
+      CeilometerInternal: {protocol: 'http', port: '8777', host: 'IP_ADDRESS'}
+      CeilometerPublic: {protocol: 'http', port: '8777', host: 'IP_ADDRESS'}
+      CinderAdmin: {protocol: 'http', port: '8776', host: 'IP_ADDRESS'}
+      CinderInternal: {protocol: 'http', port: '8776', host: 'IP_ADDRESS'}
+      CinderPublic: {protocol: 'http', port: '8776', host: 'IP_ADDRESS'}
+      GlanceAdmin: {protocol: 'http', port: '9292', host: 'IP_ADDRESS'}
+      GlanceInternal: {protocol: 'http', port: '9292', host: 'IP_ADDRESS'}
+      GlancePublic: {protocol: 'http', port: '9292', host: 'IP_ADDRESS'}
+      HeatAdmin: {protocol: 'http', port: '8004', host: 'IP_ADDRESS'}
+      HeatInternal: {protocol: 'http', port: '8004', host: 'IP_ADDRESS'}
+      HeatPublic: {protocol: 'http', port: '8004', host: 'IP_ADDRESS'}
+      KeystoneAdmin: {protocol: 'http', port: '35357', host: 'IP_ADDRESS'}
+      KeystoneInternal: {protocol: 'http', port: '5000', host: 'IP_ADDRESS'}
+      KeystonePublic: {protocol: 'http', port: '5000', host: 'IP_ADDRESS'}
+      NeutronAdmin: {protocol: 'http', port: '9696', host: 'IP_ADDRESS'}
+      NeutronInternal: {protocol: 'http', port: '9696', host: 'IP_ADDRESS'}
+      NeutronPublic: {protocol: 'http', port: '9696', host: 'IP_ADDRESS'}
+      NovaAdmin: {protocol: 'http', port: '8774', host: 'IP_ADDRESS'}
+      NovaInternal: {protocol: 'http', port: '8774', host: 'IP_ADDRESS'}
+      NovaPublic: {protocol: 'http', port: '8774', host: 'IP_ADDRESS'}
+      NovaEC2Admin: {protocol: 'http', port: '8773', host: 'IP_ADDRESS'}
+      NovaEC2Internal: {protocol: 'http', port: '8773', host: 'IP_ADDRESS'}
+      NovaEC2Public: {protocol: 'http', port: '8773', host: 'IP_ADDRESS'}
+      SwiftAdmin: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
+      SwiftInternal: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
+      SwiftPublic: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+
+resources:
+
+  CeilometerInternal:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: CeilometerInternal
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: CeilometerApiVirtualIP}
+  CeilometerPublic:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: CeilometerPublic
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: PublicVirtualIP}
+  CeilometerAdmin:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: CeilometerAdmin
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: CeilometerApiVirtualIP}
+
+  CinderInternal:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: CinderInternal
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: CinderApiVirtualIP}
+      UriSuffix: '/v1/%(tenant_id)s'
+  CinderPublic:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: CinderPublic
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: PublicVirtualIP}
+      UriSuffix: '/v1/%(tenant_id)s'
+  CinderAdmin:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: CinderAdmin
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: CinderApiVirtualIP}
+      UriSuffix: '/v1/%(tenant_id)s'
+
+  CinderV2Internal:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: CinderInternal
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: CinderApiVirtualIP}
+      UriSuffix: '/v2/%(tenant_id)s'
+  CinderV2Public:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: CinderPublic
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: PublicVirtualIP}
+      UriSuffix: '/v2/%(tenant_id)s'
+  CinderV2Admin:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: CinderAdmin
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: CinderApiVirtualIP}
+      UriSuffix: '/v2/%(tenant_id)s'
+
+  GlanceInternal:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: GlanceInternal
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: GlanceApiVirtualIP}
+  GlancePublic:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: GlancePublic
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: PublicVirtualIP}
+  GlanceAdmin:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: GlanceAdmin
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: GlanceApiVirtualIP}
+
+  HeatInternal:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: HeatInternal
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: HeatApiVirtualIP}
+      UriSuffix: '/v1/%(tenant_id)s'
+  HeatPublic:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: HeatPublic
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: PublicVirtualIP}
+      UriSuffix: '/v1/%(tenant_id)s'
+  HeatAdmin:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: HeatAdmin
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: HeatApiVirtualIP}
+      UriSuffix: '/v1/%(tenant_id)s'
+
+  KeystoneInternal:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: KeystoneInternal
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: KeystonePublicApiVirtualIP}
+      UriSuffix: '/v2.0'
+  KeystonePublic:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: KeystonePublic
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: PublicVirtualIP}
+      UriSuffix: '/v2.0'
+  KeystoneAdmin:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: KeystoneAdmin
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: KeystoneAdminApiVirtualIP}
+      UriSuffix: '/v2.0'
+  KeystoneEC2:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: KeystoneInternal
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: KeystonePublicApiVirtualIP}
+      UriSuffix: '/v2.0/ec2tokens'
+
+  NeutronInternal:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: NeutronInternal
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: NeutronApiVirtualIP}
+  NeutronPublic:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: NeutronPublic
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: PublicVirtualIP}
+  NeutronAdmin:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: NeutronAdmin
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: NeutronApiVirtualIP}
+
+  NovaInternal:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: NovaInternal
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: NovaApiVirtualIP}
+      UriSuffix: '/v2/%(tenant_id)s'
+  NovaPublic:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: NovaPublic
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: PublicVirtualIP}
+      UriSuffix: '/v2/%(tenant_id)s'
+  NovaAdmin:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: NovaAdmin
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: NovaApiVirtualIP}
+      UriSuffix: '/v2/%(tenant_id)s'
+  NovaV3Internal:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: NovaInternal
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: NovaApiVirtualIP}
+      UriSuffix: '/v3'
+  NovaV3Public:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: NovaPublic
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: PublicVirtualIP}
+      UriSuffix: '/v3'
+  NovaV3Admin:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: NovaAdmin
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: NovaApiVirtualIP}
+      UriSuffix: '/v3'
+
+  NovaEC2Internal:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: NovaEC2Internal
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: NovaApiVirtualIP}
+      UriSuffix: '/services/Cloud'
+  NovaEC2Public:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: NovaEC2Public
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: PublicVirtualIP}
+      UriSuffix: '/services/Cloud'
+  NovaEC2Admin:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: NovaEC2Admin
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: NovaApiVirtualIP}
+      UriSuffix: '/services/Admin'
+
+  SwiftInternal:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: SwiftInternal
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: SwiftProxyVirtualIP}
+      UriSuffix: '/v1/AUTH_%(tenant_id)s'
+  SwiftPublic:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: SwiftPublic
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: PublicVirtualIP}
+      UriSuffix: '/v1/AUTH_%(tenant_id)s'
+  SwiftAdmin:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: SwiftAdmin
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: SwiftProxyVirtualIP}
+      # No Suffix for the Admin interface
+  SwiftS3Internal:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: SwiftInternal
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: SwiftProxyVirtualIP}
+  SwiftS3Public:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: SwiftPublic
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: PublicVirtualIP}
+  SwiftS3Admin:
+    type: OS::TripleO::Endpoint
+    properties:
+      EndpointName: SwiftAdmin
+      EndpointMap: { get_param: EndpointMap }
+      IP: {get_param: SwiftProxyVirtualIP}
+
+outputs:
+  endpoint_map:
+    value:
+      CeilometerInternal: {get_attr: [ CeilometerInternal, endpoint] }
+      CeilometerPublic: {get_attr: [ CeilometerPublic, endpoint] }
+      CeilometerAdmin: {get_attr: [ CeilometerAdmin, endpoint] }
+      CinderInternal: {get_attr: [ CinderInternal, endpoint] }
+      CinderPublic: {get_attr: [ CinderPublic, endpoint] }
+      CinderAdmin: {get_attr: [ CinderAdmin, endpoint] }
+      CinderV2Internal: {get_attr: [ CinderV2Internal, endpoint] }
+      CinderV2Public: {get_attr: [ CinderV2Public, endpoint] }
+      CinderV2Admin: {get_attr: [ CinderV2Admin, endpoint] }
+      GlanceInternal: {get_attr: [ GlanceInternal, endpoint] }
+      GlancePublic: {get_attr: [ GlancePublic, endpoint] }
+      GlanceAdmin: {get_attr: [ GlanceAdmin, endpoint] }
+      HeatInternal: {get_attr: [ HeatInternal, endpoint] }
+      HeatPublic: {get_attr: [ HeatPublic, endpoint] }
+      HeatAdmin: {get_attr: [ HeatAdmin, endpoint] }
+      KeystoneInternal: {get_attr: [ KeystoneInternal, endpoint] }
+      KeystonePublic: {get_attr: [ KeystonePublic, endpoint] }
+      KeystoneAdmin: {get_attr: [ KeystoneAdmin, endpoint] }
+      KeystoneEC2: {get_attr: [ KeystoneEC2, endpoint] }
+      NeutronInternal: {get_attr: [ NeutronInternal, endpoint] }
+      NeutronPublic: {get_attr: [ NeutronPublic, endpoint] }
+      NeutronAdmin: {get_attr: [ NeutronAdmin, endpoint] }
+      NovaInternal: {get_attr: [ NovaInternal, endpoint] }
+      NovaPublic: {get_attr: [ NovaPublic, endpoint] }
+      NovaAdmin: {get_attr: [ NovaAdmin, endpoint] }
+      NovaV3Internal: {get_attr: [ NovaV3Internal, endpoint] }
+      NovaV3Public: {get_attr: [ NovaV3Public, endpoint] }
+      NovaV3Admin: {get_attr: [ NovaV3Admin, endpoint] }
+      NovaEC2Internal: {get_attr: [ NovaEC2Internal, endpoint] }
+      NovaEC2Public: {get_attr: [ NovaEC2Public, endpoint] }
+      NovaEC2Admin: {get_attr: [ NovaEC2Admin, endpoint] }
+      SwiftInternal: {get_attr: [ SwiftInternal, endpoint] }
+      SwiftPublic: {get_attr: [ SwiftPublic, endpoint] }
+      SwiftAdmin: {get_attr: [ SwiftAdmin, endpoint] }
+      SwiftS3Internal: {get_attr: [ SwiftS3Internal, endpoint] }
+      SwiftS3Public: {get_attr: [ SwiftS3Public, endpoint] }
+      SwiftS3Admin: {get_attr: [ SwiftS3Admin, endpoint] }
index f289d9b..09ea49b 100644 (file)
@@ -673,6 +673,7 @@ resources:
           debug: {get_input: debug}
           host: {get_input: controller_virtual_ip}
           port: {get_input: glance_port}
+          uri: {get_input: glance_uri}
           protocol: {get_input: glance_protocol}
           service-password: {get_input: glance_password}
           swift-store-user: service:glance
index 7e65d4b..4cfed6b 100644 (file)
@@ -89,6 +89,10 @@ resource_registry:
   # Port assignments for service virtual IPs for the controller role
   OS::TripleO::Controller::Ports::RedisVipPort: network/ports/ctlplane_vip.yaml
 
+  # Service Endpoint Mappings
+  OS::TripleO::Endpoint: network/endpoints/endpoint.yaml
+  OS::TripleO::EndpointMap: network/endpoints/endpoint_map.yaml
+
   # validation resources
   OS::TripleO::AllNodes::Validation: all-nodes-validation.yaml
 
index d6eb97f..ed02551 100644 (file)
@@ -72,5 +72,9 @@ resource_registry:
   # Port assignments for service virtual IPs for the controller role
   OS::TripleO::Controller::Ports::RedisVipPort: network/ports/noop.yaml
 
+  # Service Endpoint Mappings
+  OS::TripleO::Endpoint: network/endpoints/endpoint.yaml
+  OS::TripleO::EndpointMap: network/endpoints/endpoint_map.yaml
+
   # validation resources
   OS::TripleO::AllNodes::Validation: os-apply-config/all-nodes-validation.yaml
index a1ae390..55c14dc 100644 (file)
@@ -79,14 +79,6 @@ parameters:
     default: ''
     description: Set to True to enable debugging on all services.
     type: string
-  GlancePort:
-    default: "9292"
-    description: Glance port.
-    type: string
-  GlanceProtocol:
-    default: http
-    description: Protocol to use when connecting to glance, set to https for SSL.
-    type: string
   HAProxySyslogAddress:
     default: /dev/log
     description: Syslog address where HAproxy will send its log
@@ -759,6 +751,22 @@ resources:
     properties:
       length: 10
 
+  EndpointMap:
+    type: OS::TripleO::EndpointMap
+    properties:
+      CeilometerApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
+      CinderApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
+      GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
+      GlanceRegistryVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
+      HeatApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
+      KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
+      KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
+      MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
+      NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
+      NovaApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
+      SwiftProxyVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
+      PublicVirtualIP: {get_attr: [VipMap, net_ip_map, external]}
+
   Controller:
     type: OS::Heat::ResourceGroup
     depends_on: Networks
@@ -792,8 +800,6 @@ resources:
           ExtraConfig: {get_param: ExtraConfig}
           FencingConfig: {get_param: FencingConfig}
           Flavor: {get_param: OvercloudControlFlavor}
-          GlancePort: {get_param: GlancePort}
-          GlanceProtocol: {get_param: GlanceProtocol}
           GlancePassword: {get_param: GlancePassword}
           GlanceBackend: {get_param: GlanceBackend}
           GlanceNotifierStrategy: {get_param: GlanceNotifierStrategy}
@@ -867,6 +873,7 @@ resources:
           VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
           PublicVirtualIP: {get_attr: [PublicVirtualIP, ip_address]}
           ServiceNetMap: {get_param: ServiceNetMap}
+          EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
           CeilometerApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
           CinderApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
           HeatApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
@@ -904,8 +911,6 @@ resources:
           ExtraConfig: {get_param: ExtraConfig}
           Flavor: {get_param: OvercloudComputeFlavor}
           GlanceHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
-          GlancePort: {get_param: GlancePort}
-          GlanceProtocol: {get_param: GlanceProtocol}
           Image: {get_param: NovaImage}
           ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
           KeyName: {get_param: KeyName}
@@ -948,6 +953,7 @@ resources:
           SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
           SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
           ServiceNetMap: {get_param: ServiceNetMap}
+          EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
           UpdateIdentifier: {get_param: UpdateIdentifier}
           Hostname:
             str_replace:
@@ -974,8 +980,6 @@ resources:
           KeyName: {get_param: KeyName}
           Flavor: {get_param: OvercloudBlockStorageFlavor}
           VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
-          GlancePort: {get_param: GlancePort}
-          GlanceProtocol: {get_param: GlanceProtocol}
           GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
           RabbitPassword: {get_param: RabbitPassword}
           RabbitUserName: {get_param: RabbitUserName}
@@ -989,6 +993,7 @@ resources:
               params:
                 '%stackname%': {get_param: 'OS::stack_name'}
           ServiceNetMap: {get_param: ServiceNetMap}
+          EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
           MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
           ExtraConfig: {get_param: ExtraConfig}
           BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
@@ -1414,12 +1419,7 @@ resources:
 outputs:
   KeystoneURL:
     description: URL for the Overcloud Keystone service
-    value:
-      list_join:
-      - ''
-      - - http://
-        - {get_attr: [PublicVirtualIP, ip_address]}
-        - :5000/v2.0/
+    value: {get_attr: [EndpointMap, endpoint_map, KeystonePublic, uri]}
   KeystoneAdminVip:
     description: Keystone Admin VIP endpoint
     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
index 6a86921..bee2e56 100644 (file)
@@ -44,14 +44,6 @@ parameters:
     type: string
     constraints:
       - custom_constraint: nova.flavor
-  GlancePort:
-    default: "9292"
-    description: Glance port.
-    type: string
-  GlanceProtocol:
-    default: http
-    description: Protocol to use when connecting to glance, set to https for SSL.
-    type: string
   KeyName:
     default: default
     description: Name of an existing EC2 KeyPair to enable SSH access to the instances
@@ -103,6 +95,11 @@ parameters:
     description: Mapping of service_name -> network name. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
   GlanceApiVirtualIP:
     type: string
     default: ''
@@ -200,14 +197,7 @@ resources:
         cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
         cinder_iscsi_helper: {get_param: CinderISCSIHelper}
         cinder_iscsi_ip_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
-        glance_api_servers:
-          list_join:
-            - ''
-            - - {get_param: GlanceProtocol}
-              - '://'
-              - {get_param: GlanceApiVirtualIP}
-              - ':'
-              - {get_param: GlancePort}
+        glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
         rabbit_username: {get_param: RabbitUserName}
         rabbit_password: {get_param: RabbitPassword}
         rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
index 2b63535..70c7403 100644 (file)
@@ -51,14 +51,6 @@ parameters:
   GlanceHost:
     type: string
     default: ''  # Has to be here because of the ignored empty value bug
-  GlancePort:
-    default: "9292"
-    description: Glance port.
-    type: string
-  GlanceProtocol:
-    default: http
-    description: Protocol to use when connecting to glance, set to https for SSL.
-    type: string
   Image:
     type: string
     default: overcloud-compute
@@ -261,6 +253,11 @@ parameters:
     description: Mapping of service_name -> network name. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
   UpdateIdentifier:
     default: ''
     type: string
@@ -423,7 +420,7 @@ resources:
                 neutron_physical_bridge: {get_input: neutron_physical_bridge}
                 neutron_public_interface: {get_input: neutron_public_interface}
                 nova::network::neutron::neutron_admin_password: {get_input: neutron_password}
-                nova::network::neutron::neutron_url: {get_input: neutron_url}
+                nova::network::neutron::neutron_url: {get_input: neutron_internal_url}
                 nova::network::neutron::neutron_admin_auth_url: {get_input: neutron_admin_auth_url}
                 neutron_router_distributed: {get_input: neutron_router_distributed}
                 neutron_agent_mode: {get_input: neutron_agent_mode}
@@ -458,22 +455,10 @@ resources:
         ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
         ceilometer_password: {get_param: CeilometerPassword}
         ceilometer_compute_agent: {get_param: CeilometerComputeAgent}
-        ceilometer_agent_auth_url:
-          list_join:
-            - ''
-            - - 'http://'
-              - {get_param: KeystonePublicApiVirtualIP}
-              - ':5000/v2.0'
+        ceilometer_agent_auth_url: {get_param: [EndpointMap, KeystoneInternal, uri]}
         snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
         snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
-        glance_api_servers:
-          list_join:
-            - ''
-            - - {get_param: GlanceProtocol}
-              - '://'
-              - {get_param: GlanceHost}
-              - ':'
-              - {get_param: GlancePort}
+        glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
         neutron_flat_networks: {get_param: NeutronFlatNetworks}
         neutron_host: {get_param: NeutronHost}
         neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
@@ -530,18 +515,8 @@ resources:
                 - {get_param: NeutronTypeDrivers}
         neutron_mechanism_drivers: {get_param: NeutronMechanismDrivers}
         neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
-        neutron_url:
-          list_join:
-            - ''
-            - - 'http://'
-              - {get_param: NeutronHost}
-              - ':9696'
-        neutron_admin_auth_url:
-          list_join:
-            - ''
-            - - 'http://'
-              - {get_param: KeystoneAdminApiVirtualIP}
-              - ':35357/v2.0'
+        neutron_internal_url: {get_param: [EndpointMap, NeutronInternal, uri]}
+        neutron_admin_auth_url: {get_param: [EndpointMap, KeystoneAdmin, uri]}
         admin_password: {get_param: AdminPassword}
         rabbit_username: {get_param: RabbitUserName}
         rabbit_password: {get_param: RabbitPassword}
index 4504428..dc38149 100644 (file)
@@ -170,14 +170,6 @@ parameters:
     description: The password for the glance service and db account, used by the glance services.
     type: string
     hidden: true
-  GlancePort:
-    default: "9292"
-    description: Glance port.
-    type: string
-  GlanceProtocol:
-    default: http
-    description: Protocol to use when connecting to glance, set to https for SSL.
-    type: string
   GlanceBackend:
     default: swift
     description: The short name of the Glance backend to use. Should be one
@@ -590,6 +582,11 @@ parameters:
     description: Mapping of service_name -> network name. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
   UpdateIdentifier:
     default: ''
     type: string
@@ -759,7 +756,7 @@ resources:
               - '@'
               - {get_param: MysqlVirtualIP}
               - '/cinder'
-        glance_port: {get_param: GlancePort}
+        glance_port: {get_param: [EndpointMap, GlanceInternal, port]}
         glance_password: {get_param: GlancePassword}
         glance_backend: {get_param: GlanceBackend}
         glance_file_pcmk_device: {get_param: GlanceFilePcmkDevice}
@@ -786,7 +783,6 @@ resources:
               - '@'
               - {get_param: MysqlVirtualIP}
               - '/heat'
-        keystone_auth_address: {list_join: ['', ['http://', {get_param: KeystonePublicApiVirtualIP} , ':5000/v2.0']]}
         keystone_ca_certificate: {get_param: KeystoneCACertificate}
         keystone_signing_key: {get_param: KeystoneSigningKey}
         keystone_signing_certificate: {get_param: KeystoneSigningCertificate}
@@ -802,36 +798,11 @@ resources:
               - '@'
               - {get_param: MysqlVirtualIP}
               - '/keystone'
-        keystone_identity_uri:
-          list_join:
-            - ''
-            - - 'http://'
-              - {get_param: KeystoneAdminApiVirtualIP}
-              - ':35357'
-        keystone_auth_uri:
-          list_join:
-            - ''
-            - - 'http://'
-              - {get_param: KeystonePublicApiVirtualIP}
-              - ':5000/v2.0/'
-        keystone_public_url:
-          list_join:
-            - ''
-            - - 'http://'
-              - {get_param: PublicVirtualIP}
-              - ':5000'
-        keystone_internal_url:
-          list_join:
-            - ''
-            - - 'http://'
-              - {get_param: KeystonePublicApiVirtualIP}
-              - ':5000'
-        keystone_ec2_uri:
-          list_join:
-            - ''
-            - - 'http://'
-              - {get_param: KeystonePublicApiVirtualIP}
-              - ':5000/v2.0/ec2tokens'
+        keystone_identity_uri: { get_param: [EndpointMap, KeystoneAdmin, uri_no_suffix] }
+        keystone_auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri] }
+        keystone_public_url: { get_param: [EndpointMap, KeystonePublic, uri_no_suffix] }
+        keystone_internal_url: { get_param: [EndpointMap, KeystoneInternal, uri_no_suffix] }
+        keystone_ec2_uri: { get_param: [EndpointMap, KeystoneEC2, uri] }
         enable_fencing: {get_param: EnableFencing}
         enable_galera: {get_param: EnableGalera}
         enable_ceph_storage: {get_param: EnableCephStorage}
@@ -911,18 +882,10 @@ resources:
               - '@'
               - {get_param: MysqlVirtualIP}
               - '/ovs_neutron?charset=utf8'
-        neutron_url:
-          list_join:
-            - ''
-            - - 'http://'
-              - {get_param: NeutronApiVirtualIP}
-              - ':9696'
-        neutron_admin_auth_url:
-          list_join:
-            - ''
-            - - 'http://'
-              - {get_param: KeystoneAdminApiVirtualIP}
-              - ':35357/v2.0'
+        neutron_internal_url: { get_param: [ EndpointMap, NeutronInternal, uri ] }
+        neutron_public_url: { get_param: [ EndpointMap, NeutronPublic, uri ] }
+        neutron_admin_url: { get_param: [ EndpointMap, NeutronAdmin, uri ] }
+        neutron_admin_auth_url: { get_param: [ EndpointMap, KeystoneAdmin, uri ] }
         ceilometer_backend: {get_param: CeilometerBackend}
         ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
         ceilometer_password: {get_param: CeilometerPassword}
@@ -988,14 +951,7 @@ resources:
         cinder_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
         glance_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
         glance_registry_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
-        glance_api_servers:
-          list_join:
-            - ''
-            - - {get_param: GlanceProtocol}
-              - '://'
-              - {get_param: GlanceApiVirtualIP}
-              - ':'
-              - {get_param: GlancePort}
+        glance_api_servers: { get_param: [EndpointMap, GlanceInternal, uri]}
         glance_registry_host: {get_param: GlanceRegistryVirtualIP}
         heat_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
         keystone_public_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
@@ -1129,7 +1085,7 @@ resources:
                 glance::registry::auth_uri: {get_input: keystone_auth_uri}
                 glance::registry::identity_uri: {get_input: keystone_identity_uri}
                 glance::registry::debug: {get_input: debug}
-                glance::backend::swift::swift_store_auth_address: {get_input: keystone_auth_address}
+                glance::backend::swift::swift_store_auth_address: {get_input: keystone_auth_uri}
                 glance::backend::swift::swift_store_user: service:glance
                 glance::backend::swift::swift_store_key: {get_input: glance_password}
                 glance_backend: {get_input: glance_backend}
@@ -1255,7 +1211,7 @@ resources:
                 ceilometer::api::keystone_auth_uri: {get_input: keystone_auth_uri}
                 ceilometer::api::keystone_identity_uri: {get_input: keystone_identity_uri}
                 ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
-                ceilometer::agent::auth::auth_url: {get_input: keystone_auth_address}
+                ceilometer::agent::auth::auth_url: {get_input: keystone_auth_uri}
                 ceilometer::agent::central::coordination_url: {get_input: ceilometer_coordination_url}
                 ceilometer::db::mysql::password: {get_input: ceilometer_password}
                 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
@@ -1276,7 +1232,7 @@ resources:
                 nova::glance_api_servers: {get_input: glance_api_servers}
                 nova::api::neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
                 nova::network::neutron::neutron_admin_password: {get_input: neutron_password}
-                nova::network::neutron::neutron_url: {get_input: neutron_url}
+                nova::network::neutron::neutron_url: {get_input: neutron_internal_url}
                 nova::network::neutron::neutron_admin_auth_url: {get_input: neutron_admin_auth_url}
                 nova::vncproxy::host: {get_input: nova_api_network}
                 nova::db::mysql::password: {get_input: nova_password}