This scenario occurs under the following conditions:
* A service of a given type (for example 'compute') is registered in keystone.
* There are more than 1 endpoints in keystone for the associated service's type. For example there are 2 different endpoints in keystone, both for the compute service of the 'compute' type.
In the above scenario a response from the POST /tokens API only returns a single endpoint per service type. So for example in the above scenario my endpoint catalog in the POST /tokens response would only include 1 'compute' service endpoint -- the other is not returned.
Note that in this scenario you can still use the admin API for GET /services -- this will return all endpoints regardless of if there are multiple endpoints for a single service.
See keystone.catalog.backend.sql.get_catalog()
To repo you can use the templated catalog driver with this templated catalog:
-------------
# config for TemplatedCatalog, using camelCase because I don't want to do
# translations for keystone compat
catalog.RegionOne.identity.publicURL = http://localhost:$(public_port)s/v2.0
catalog.RegionOne.identity.adminURL = http://localhost:$(admin_port)s/v2.0
catalog.RegionOne.identity.internalURL = http://localhost:$(public_port)s/v2.0
catalog.RegionOne.identity.name = Identity Service
# fake compute service for now to help novaclient tests work
catalog.RegionOne.compute.publicURL = http://localhost:$(compute_port)s/v1.1/$(tenant_id)s
catalog.RegionOne.compute.adminURL = http://localhost:$(compute_port)s/v1.1/$(tenant_id)s
catalog.RegionOne.compute.internalURL = http://localhost:$(compute_port)s/v1.1/$(tenant_id)s
catalog.RegionOne.compute.name = Compute Service
# 2nd compute endpoint for bug repo
catalog.RegionOne.compute.publicURL = http://localhost2:$(compute_port)s/v1.1/$(tenant_id)s
catalog.RegionOne.compute.adminURL = http://localhost2:$(compute_port)s/v1.1/$(tenant_id)s
catalog.RegionOne.compute.internalURL = http://localhost2:$(compute_port)s/v1.1/$(tenant_id)s
catalog.RegionOne.compute.name = Compute Service
This scenario occurs under the following conditions:
* A service of a given type (for example 'compute') is registered in keystone.
* There are more than 1 endpoints in keystone for the associated service's type. For example there are 2 different endpoints in keystone, both for the compute service of the 'compute' type.
In the above scenario a response from the POST /tokens API only returns a single endpoint per service type. So for example in the above scenario my endpoint catalog in the POST /tokens response would only include 1 'compute' service endpoint -- the other is not returned.
Note that in this scenario you can still use the admin API for GET /services -- this will return all endpoints regardless of if there are multiple endpoints for a single service.
See keystone. catalog. backend. sql.get_ catalog( )
To repo you can use the templated catalog driver with this templated catalog: RegionOne. identity. publicURL = http:// localhost:$(public_ port)s/ v2.0 RegionOne. identity. adminURL = http:// localhost:$(admin_port)s/v2.0 RegionOne. identity. internalURL = http:// localhost:$(public_ port)s/ v2.0 RegionOne. identity. name = Identity Service
-------------
# config for TemplatedCatalog, using camelCase because I don't want to do
# translations for keystone compat
catalog.
catalog.
catalog.
catalog.
# fake compute service for now to help novaclient tests work RegionOne. compute. publicURL = http:// localhost:$(compute_ port)s/ v1.1/$( tenant_ id)s RegionOne. compute. adminURL = http:// localhost:$(compute_ port)s/ v1.1/$( tenant_ id)s RegionOne. compute. internalURL = http:// localhost:$(compute_ port)s/ v1.1/$( tenant_ id)s RegionOne. compute. name = Compute Service
catalog.
catalog.
catalog.
catalog.
# 2nd compute endpoint for bug repo RegionOne. compute. publicURL = http:// localhost2:$(compute_ port)s/ v1.1/$( tenant_ id)s RegionOne. compute. adminURL = http:// localhost2:$(compute_ port)s/ v1.1/$( tenant_ id)s RegionOne. compute. internalURL = http:// localhost2:$(compute_ port)s/ v1.1/$( tenant_ id)s RegionOne. compute. name = Compute Service
catalog.
catalog.
catalog.
catalog.
catalog. RegionOne. volume. publicURL = http:// localhost: 8776/v1/ $(tenant_ id)s RegionOne. volume. adminURL = http:// localhost: 8776/v1/ $(tenant_ id)s RegionOne. volume. internalURL = http:// localhost: 8776/v1/ $(tenant_ id)s RegionOne. volume. name = Volume Service
catalog.
catalog.
catalog.
catalog. RegionOne. ec2.publicURL = http:// localhost: 8773/services/ Cloud RegionOne. ec2.adminURL = http:// localhost: 8773/services/ Admin RegionOne. ec2.internalURL = http:// localhost: 8773/services/ Cloud RegionOne. ec2.name = EC2 Service
catalog.
catalog.
catalog.
catalog. RegionOne. image.publicURL = http:// localhost: 9292/v1 RegionOne. image.adminURL = http:// localhost: 9292/v1 RegionOne. image.internalU RL = http:// localhost: 9292/v1 RegionOne. image.name = Image Service
catalog.
catalog.
catalog.
-------------
When you do a POST /tokens, you get back a token which contains only a single set of endpoint links for 'compute':
{
"endpoints _links" :[
],
"endpoints ":[
"adminURL" :"http:// localhost2: 8774/v1. 1/6f8945f2d47f4 abea149b7a0176b 12a8",
"region" :"RegionOne" ,
"internalUR L":"http:// localhost2: 8774/v1. 1/6f8945f2d47f4 abea149b7a0176b 12a8",
"publicURL" :"http:// localhost2: 8774/v1. 1/6f8945f2d47f4 abea149b7a0176b 12a8"
"type" :"compute" ,
"name" :"Compute Service"
{
}
],
},