keystone.catalog.backends package¶
Submodules¶
keystone.catalog.backends.base module¶
- 
class 
keystone.catalog.backends.base.CatalogDriverBase[source]¶ Bases:
objectInterface description for the Catalog driver.
- 
add_endpoint_group_to_project(endpoint_group_id, project_id)[source]¶ Add an endpoint group to project association.
Parameters: - endpoint_group_id (string) – identity of endpoint to associate
 - project_id (string) – identity of project to associate
 
Raises: keystone.exception.Conflict – If the endpoint group was already added to the project.
Returns: None.
- 
add_endpoint_to_project(endpoint_id, project_id)[source]¶ Create an endpoint to project association.
Parameters: - endpoint_id (string) – identity of endpoint to associate
 - project_id (string) – identity of the project to be associated with
 
Raises: keystone.exception.Conflict: If the endpoint was already added to project.
Returns: None.
- 
check_endpoint_in_project(endpoint_id, project_id)[source]¶ Check if an endpoint is associated with a project.
Parameters: - endpoint_id (string) – identity of endpoint to check
 - project_id (string) – identity of the project associated with
 
Raises: keystone.exception.NotFound – If the endpoint was not found in the project.
Returns: None.
- 
create_endpoint(endpoint_id, endpoint_ref)[source]¶ Create a new endpoint for a service.
Raises: - keystone.exception.Conflict – If a duplicate endpoint exists.
 - keystone.exception.ServiceNotFound – If the service doesn’t exist.
 
- 
create_endpoint_group(endpoint_group)[source]¶ Create an endpoint group.
Parameters: endpoint_group (dictionary) – endpoint group to create Raises: keystone.exception.Conflict: If a duplicate endpoint group already exists. Returns: an endpoint group representation. 
- 
create_region(region_ref)[source]¶ Create a new region.
Raises: - keystone.exception.Conflict – If the region already exists.
 - keystone.exception.RegionNotFound – If the parent region is invalid.
 
- 
create_service(service_id, service_ref)[source]¶ Create a new service.
Raises: keystone.exception.Conflict – If a duplicate service exists. 
- 
delete_association_by_endpoint(endpoint_id)[source]¶ Remove all the endpoints to project association with endpoint.
Parameters: endpoint_id (string) – identity of endpoint to check Returns: None 
- 
delete_association_by_project(project_id)[source]¶ Remove all the endpoints to project association with project.
Parameters: project_id (string) – identity of the project to check Returns: None 
- 
delete_endpoint(endpoint_id)[source]¶ Delete an endpoint for a service.
Raises: keystone.exception.EndpointNotFound – If the endpoint doesn’t exist. 
- 
delete_endpoint_group(endpoint_group_id)[source]¶ Delete an endpoint group.
Parameters: endpoint_group_id (string) – identity of endpoint group to delete Raises: keystone.exception.NotFound – If the endpoint group was not found. Returns: None. 
- 
delete_endpoint_group_association_by_project(project_id)[source]¶ Remove endpoint group to project associations.
Parameters: project_id (string) – identity of the project to check Returns: None 
- 
delete_region(region_id)[source]¶ Delete an existing region.
Raises: keystone.exception.RegionNotFound – If the region doesn’t exist. 
- 
delete_service(service_id)[source]¶ Delete an existing service.
Raises: keystone.exception.ServiceNotFound – If the service doesn’t exist. 
- 
get_catalog(user_id, project_id)[source]¶ Retrieve and format the current service catalog.
Example:
{ 'RegionOne': {'compute': { 'adminURL': u'http://host:8774/v1.1/project_id', 'internalURL': u'http://host:8774/v1.1/project_id', 'name': 'Compute Service', 'publicURL': u'http://host:8774/v1.1/project_id'}, 'ec2': { 'adminURL': 'http://host:8773/services/Admin', 'internalURL': 'http://host:8773/services/Cloud', 'name': 'EC2 Service', 'publicURL': 'http://host:8773/services/Cloud'}}Returns: A nested dict representing the service catalog or an empty dict. Raises: keystone.exception.NotFound – If the endpoint doesn’t exist. 
- 
get_endpoint(endpoint_id)[source]¶ Get endpoint by id.
Returns: endpoint_ref dict Raises: keystone.exception.EndpointNotFound – If the endpoint doesn’t exist. 
- 
get_endpoint_group(endpoint_group_id)[source]¶ Get an endpoint group.
Parameters: endpoint_group_id (string) – identity of endpoint group to retrieve Raises: keystone.exception.NotFound – If the endpoint group was not found. Returns: an endpoint group representation. 
- 
get_endpoint_group_in_project(endpoint_group_id, project_id)[source]¶ Get endpoint group to project association.
Parameters: - endpoint_group_id (string) – identity of endpoint group to retrieve
 - project_id (string) – identity of project to associate
 
Raises: keystone.exception.NotFound – If the endpoint group to the project association was not found.
Returns: a project endpoint group representation.
- 
get_region(region_id)[source]¶ Get region by id.
Returns: region_ref dict Raises: keystone.exception.RegionNotFound – If the region doesn’t exist. 
- 
get_service(service_id)[source]¶ Get service by id.
Returns: service_ref dict Raises: keystone.exception.ServiceNotFound – If the service doesn’t exist. 
- 
get_v3_catalog(user_id, project_id)[source]¶ Retrieve and format the current V3 service catalog.
The default implementation builds the V3 catalog from the V2 catalog.
Example:
[ { "endpoints": [ { "interface": "public", "id": "--endpoint-id--", "region": "RegionOne", "url": "http://external:8776/v1/--project-id--" }, { "interface": "internal", "id": "--endpoint-id--", "region": "RegionOne", "url": "http://internal:8776/v1/--project-id--" }], "id": "--service-id--", "type": "volume" }]
Returns: A list representing the service catalog or an empty list Raises: keystone.exception.NotFound – If the endpoint doesn’t exist. 
- 
list_endpoint_groups_for_project(project_id)[source]¶ List all endpoint group to project associations for a project.
Parameters: project_id (string) – identity of project to associate Returns: None. 
- 
list_endpoints(hints)[source]¶ List all endpoints.
Parameters: hints – contains the list of filters yet to be satisfied. Any filters satisfied here will be removed so that the caller will know if any filters remain. Returns: list of endpoint_refs or an empty list. 
- 
list_endpoints_for_project(project_id)[source]¶ List all endpoints associated with a project.
Parameters: project_id (string) – identity of the project to check Returns: a list of identity endpoint ids or an empty list. 
- 
list_projects_associated_with_endpoint_group(endpoint_group_id)[source]¶ List all projects associated with endpoint group.
Parameters: endpoint_group_id (string) – identity of endpoint to associate Returns: None. 
- 
list_projects_for_endpoint(endpoint_id)[source]¶ List all projects associated with an endpoint.
Parameters: endpoint_id (string) – identity of endpoint to check Returns: a list of projects or an empty list. 
- 
list_regions(hints)[source]¶ List all regions.
Parameters: hints – contains the list of filters yet to be satisfied. Any filters satisfied here will be removed so that the caller will know if any filters remain. Returns: list of region_refs or an empty list. 
- 
list_services(hints)[source]¶ List all services.
Parameters: hints – contains the list of filters yet to be satisfied. Any filters satisfied here will be removed so that the caller will know if any filters remain. Returns: list of service_refs or an empty list. 
- 
remove_endpoint_from_project(endpoint_id, project_id)[source]¶ Remove an endpoint to project association.
Parameters: - endpoint_id (string) – identity of endpoint to remove
 - project_id (string) – identity of the project associated with
 
Raises: keystone.exception.NotFound – If the endpoint was not found in the project.
Returns: None.
- 
remove_endpoint_group_from_project(endpoint_group_id, project_id)[source]¶ Remove an endpoint to project association.
Parameters: - endpoint_group_id (string) – identity of endpoint to associate
 - project_id (string) – identity of project to associate
 
Raises: keystone.exception.NotFound – If endpoint group project association was not found.
Returns: None.
- 
update_endpoint(endpoint_id, endpoint_ref)[source]¶ Get endpoint by id.
Returns: endpoint_ref dict
Raises: - keystone.exception.EndpointNotFound – If the endpoint doesn’t exist.
 - keystone.exception.ServiceNotFound – If the service doesn’t exist.
 
- 
update_endpoint_group(endpoint_group_id, endpoint_group)[source]¶ Update an endpoint group.
Parameters: - endpoint_group_id (string) – identity of endpoint group to retrieve
 - endpoint_group (dictionary) – A full or partial endpoint_group
 
Raises: keystone.exception.NotFound – If the endpoint group was not found.
Returns: an endpoint group representation.
- 
update_region(region_id, region_ref)[source]¶ Update region by id.
Returns: region_ref dict Raises: keystone.exception.RegionNotFound – If the region doesn’t exist. 
- 
update_service(service_id, service_ref)[source]¶ Update service by id.
Returns: service_ref dict Raises: keystone.exception.ServiceNotFound – If the service doesn’t exist. 
- 
 
keystone.catalog.backends.sql module¶
- 
class 
keystone.catalog.backends.sql.Catalog(*args, **kwargs)[source]¶ Bases:
keystone.catalog.backends.base.CatalogDriverBase- 
get_catalog(user_id, project_id)[source]¶ Retrieve and format the V2 service catalog.
Parameters: - user_id – The id of the user who has been authenticated for creating service catalog.
 - project_id – The id of the project. ‘project_id’ will be None in the case this being called to create a catalog to go in a domain scoped token. In this case, any endpoint that requires a project_id as part of their URL will be skipped (as would a whole service if, as a consequence, it has no valid endpoints).
 
Returns: A nested dict representing the service catalog or an empty dict.
- 
get_v3_catalog(user_id, project_id)[source]¶ Retrieve and format the current V3 service catalog.
Parameters: - user_id – The id of the user who has been authenticated for creating service catalog.
 - project_id – The id of the project. ‘project_id’ will be None in the case this being called to create a catalog to go in a domain scoped token. In this case, any endpoint that requires a project_id as part of their URL will be skipped.
 
Returns: A list representing the service catalog or an empty list
- 
 
- 
class 
keystone.catalog.backends.sql.Endpoint(*args, **kwargs)[source]¶ Bases:
sqlalchemy.ext.declarative.api.Base,keystone.common.sql.core.DictBase- 
attributes= ['id', 'interface', 'region_id', 'service_id', 'url', 'legacy_endpoint_id', 'enabled']¶ 
- 
enabled¶ 
- 
extra¶ 
- 
id¶ 
- 
interface¶ 
- 
legacy_endpoint_id¶ 
- 
region_id¶ 
- 
service_id¶ 
- 
url¶ 
- 
 
- 
class 
keystone.catalog.backends.sql.EndpointGroup(*args, **kwargs)[source]¶ Bases:
sqlalchemy.ext.declarative.api.Base,keystone.common.sql.core.ModelDictMixinEndpoint Groups table.
- 
attributes= ['id', 'name', 'description', 'filters']¶ 
- 
description¶ 
- 
filters¶ 
- 
id¶ 
- 
mutable_attributes= frozenset(['filters', 'name', 'description'])¶ 
- 
name¶ 
- 
 
- 
class 
keystone.catalog.backends.sql.ProjectEndpoint(*args, **kwargs)[source]¶ Bases:
sqlalchemy.ext.declarative.api.Base,keystone.common.sql.core.ModelDictMixinproject-endpoint relationship table.
- 
attributes= ['endpoint_id', 'project_id']¶ 
- 
endpoint_id¶ 
- 
project_id¶ 
- 
 
- 
class 
keystone.catalog.backends.sql.ProjectEndpointGroupMembership(*args, **kwargs)[source]¶ Bases:
sqlalchemy.ext.declarative.api.Base,keystone.common.sql.core.ModelDictMixinProject to Endpoint group relationship table.
- 
attributes= ['endpoint_group_id', 'project_id']¶ 
- 
endpoint_group_id¶ 
- 
project_id¶ 
- 
 
keystone.catalog.backends.templated module¶
- 
class 
keystone.catalog.backends.templated.Catalog(templates=None)[source]¶ Bases:
keystone.catalog.backends.base.CatalogDriverBaseA backend that generates endpoints for the Catalog based on templates.
It is usually configured via config entries that look like:
catalog.$REGION.$SERVICE.$key = $valueand is stored in a similar looking hierarchy. Where a value can contain values to be interpolated by standard python string interpolation that look like (the % is replaced by a $ due to paste attempting to interpolate on its own:
When expanding the template it will pass in a dict made up of the conf instance plus a few additional key-values, notably project_id and user_id.
It does not care what the keys and values are but it is worth noting that keystone_compat will expect certain keys to be there so that it can munge them into the output format keystone expects. These keys are:
- name - the name of the service, most likely repeated for all services of
 - the same type, across regions.
 
adminURL - the url of the admin endpoint
publicURL - the url of the public endpoint
internalURL - the url of the internal endpoint
- 
get_catalog(user_id, project_id)[source]¶ Retrieve and format the V2 service catalog.
Parameters: - user_id – The id of the user who has been authenticated for creating service catalog.
 - project_id – The id of the project. ‘project_id’ will be None in the case this being called to create a catalog to go in a domain scoped token. In this case, any endpoint that requires a project_id as part of their URL will be skipped.
 
Returns: A nested dict representing the service catalog or an empty dict.