summaryrefslogtreecommitdiffstats
path: root/keystone/catalog
diff options
context:
space:
mode:
authorDolph Mathews <dolph.mathews@gmail.com>2012-12-19 10:04:21 -0600
committerDolph Mathews <dolph.mathews@gmail.com>2012-12-21 11:57:44 -0600
commit03eb2801a3ad38a39e9cf127c05ab710bf38ee1d (patch)
treec91ae80657c574cabcecf5abfa78f3940392c517 /keystone/catalog
parentac2d92ca2eea1070f765be320acb62fd5bef6dd3 (diff)
downloadkeystone-03eb2801a3ad38a39e9cf127c05ab710bf38ee1d.tar.gz
keystone-03eb2801a3ad38a39e9cf127c05ab710bf38ee1d.tar.xz
keystone-03eb2801a3ad38a39e9cf127c05ab710bf38ee1d.zip
Driver registry
Uses automatic dependency injection to provide controllers with driver interfaces (identity_api, token_api, etc). See tests/test_injection.py for a self-contained example. Change-Id: I255087de534292fbf57a45b19f97488f831f607c
Diffstat (limited to 'keystone/catalog')
-rw-r--r--keystone/catalog/controllers.py11
-rw-r--r--keystone/catalog/core.py2
-rw-r--r--keystone/catalog/routers.py8
3 files changed, 11 insertions, 10 deletions
diff --git a/keystone/catalog/controllers.py b/keystone/catalog/controllers.py
index 42ba4ed7..78afffe7 100644
--- a/keystone/catalog/controllers.py
+++ b/keystone/catalog/controllers.py
@@ -17,20 +17,16 @@
import uuid
-from keystone.catalog import core
from keystone.common import controller
-from keystone.common import wsgi
+from keystone.common import dependency
from keystone import exception
-from keystone import identity
-from keystone import policy
-from keystone import token
INTERFACES = ['public', 'internal', 'admin']
+@dependency.requires('catalog_api')
class Service(controller.V2Controller):
-
def get_services(self, context):
self.assert_admin(context)
service_list = self.catalog_api.list_services(context)
@@ -55,6 +51,7 @@ class Service(controller.V2Controller):
return {'OS-KSADM:service': new_service_ref}
+@dependency.requires('catalog_api')
class Endpoint(controller.V2Controller):
def get_endpoints(self, context):
"""Merge matching v3 endpoint refs into legacy refs."""
@@ -115,6 +112,7 @@ class Endpoint(controller.V2Controller):
raise exception.EndpointNotFound(endpoint_id=endpoint_id)
+@dependency.requires('catalog_api')
class ServiceV3(controller.V3Controller):
@controller.protected
def create_service(self, context, service):
@@ -147,6 +145,7 @@ class ServiceV3(controller.V3Controller):
return self.catalog_api.delete_service(context, service_id)
+@dependency.requires('catalog_api')
class EndpointV3(controller.V3Controller):
@controller.protected
def create_endpoint(self, context, endpoint):
diff --git a/keystone/catalog/core.py b/keystone/catalog/core.py
index 7a8e8be7..7afeed95 100644
--- a/keystone/catalog/core.py
+++ b/keystone/catalog/core.py
@@ -17,6 +17,7 @@
"""Main entry point into the Catalog service."""
+from keystone.common import dependency
from keystone.common import logging
from keystone.common import manager
from keystone import config
@@ -51,6 +52,7 @@ def format_url(url, data):
return result
+@dependency.provider('catalog_api')
class Manager(manager.Manager):
"""Default pivot point for the Catalog backend.
diff --git a/keystone/catalog/routers.py b/keystone/catalog/routers.py
index f0c547f8..b3af4bc1 100644
--- a/keystone/catalog/routers.py
+++ b/keystone/catalog/routers.py
@@ -13,13 +13,13 @@
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
+
from keystone.catalog import controllers
from keystone.common import router
-from keystone.common import wsgi
-def append_v3_routers(mapper, routers, apis):
- routers.append(router.Router(controllers.ServiceV3(**apis),
+def append_v3_routers(mapper, routers):
+ routers.append(router.Router(controllers.ServiceV3(),
'services', 'service'))
- routers.append(router.Router(controllers.EndpointV3(**apis),
+ routers.append(router.Router(controllers.EndpointV3(),
'endpoints', 'endpoint'))