keystone/keystone/catalog/core.py

58 lines
1.7 KiB
Python

# vim: tabstop=4 shiftwidth=4 softtabstop=4
"""Main entry point into the Catalog service."""
import uuid
import webob.exc
from keystone import config
from keystone.common import manager
from keystone.common import wsgi
CONF = config.CONF
class Manager(manager.Manager):
"""Default pivot point for the Catalog backend.
See :mod:`keystone.common.manager.Manager` for more details on how this
dynamically calls the backend.
"""
def __init__(self):
super(Manager, self).__init__(CONF.catalog.driver)
class ServiceController(wsgi.Application):
def __init__(self):
self.catalog_api = Manager()
super(ServiceController, self).__init__()
# CRUD extensions
# NOTE(termie): this OS-KSADM stuff is not very consistent
def get_services(self, context):
service_list = self.catalog_api.list_services(context)
service_refs = [self.catalog_api.get_service(context, x)
for x in service_list]
return {'OS-KSADM:services': service_refs}
def get_service(self, context, service_id):
service_ref = self.catalog_api.get_service(context, service_id)
if not service_ref:
raise webob.exc.HTTPNotFound()
return {'OS-KSADM:service': service_ref}
def delete_service(self, context, service_id):
service_ref = self.catalog_api.delete_service(context, service_id)
def create_service(self, context, OS_KSADM_service):
service_id = uuid.uuid4().hex
service_ref = OS_KSADM_service.copy()
service_ref['id'] = service_id
new_service_ref = self.catalog_api.create_service(
context, service_id, service_ref)
return {'OS-KSADM:service': new_service_ref}