72 lines
2.3 KiB
Python
72 lines
2.3 KiB
Python
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
|
|
|
# Copyright 2012 OpenStack LLC
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
"""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}
|