diff options
author | Dolph Mathews <dolph.mathews@gmail.com> | 2012-12-19 10:04:21 -0600 |
---|---|---|
committer | Dolph Mathews <dolph.mathews@gmail.com> | 2012-12-21 11:57:44 -0600 |
commit | 03eb2801a3ad38a39e9cf127c05ab710bf38ee1d (patch) | |
tree | c91ae80657c574cabcecf5abfa78f3940392c517 /keystone/catalog | |
parent | ac2d92ca2eea1070f765be320acb62fd5bef6dd3 (diff) | |
download | keystone-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.py | 11 | ||||
-rw-r--r-- | keystone/catalog/core.py | 2 | ||||
-rw-r--r-- | keystone/catalog/routers.py | 8 |
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')) |