Use abstract base class for catalog driver
Use the abc module for managing abstract base classes in the driver layer and add missing methods to concrete classes. bp abstract-base-class-drivers Change-Id: If66b9bd3ebcfc3a59151b52a46407a36d2a9352b
This commit is contained in:
parent
c0f6653a13
commit
8c1899cc8f
@ -17,6 +17,7 @@
|
||||
|
||||
from keystone import catalog
|
||||
from keystone.common import kvs
|
||||
from keystone import exception
|
||||
|
||||
|
||||
class Catalog(kvs.Base, catalog.Driver):
|
||||
@ -84,3 +85,6 @@ class Catalog(kvs.Base, catalog.Driver):
|
||||
def _create_catalog(self, user_id, tenant_id, data):
|
||||
self.db.set('catalog-%s-%s' % (tenant_id, user_id), data)
|
||||
return data
|
||||
|
||||
def get_v3_catalog(self, user_id, tenant_id, metadata=None):
|
||||
raise exception.NotImplemented()
|
||||
|
@ -19,6 +19,7 @@ import os.path
|
||||
from keystone.catalog.backends import kvs
|
||||
from keystone.catalog import core
|
||||
from keystone import config
|
||||
from keystone import exception
|
||||
from keystone.openstack.common import log as logging
|
||||
|
||||
|
||||
@ -120,3 +121,6 @@ class TemplatedCatalog(kvs.Catalog):
|
||||
o[region][service][k] = core.format_url(v, d)
|
||||
|
||||
return o
|
||||
|
||||
def get_v3_catalog(self, user_id, tenant_id, metadata=None):
|
||||
raise exception.NotImplemented()
|
||||
|
@ -17,6 +17,10 @@
|
||||
|
||||
"""Main entry point into the Catalog service."""
|
||||
|
||||
import abc
|
||||
|
||||
import six
|
||||
|
||||
from keystone.common import dependency
|
||||
from keystone.common import manager
|
||||
from keystone import config
|
||||
@ -102,8 +106,11 @@ class Manager(manager.Manager):
|
||||
raise exception.NotFound('Catalog not found for user and tenant')
|
||||
|
||||
|
||||
@six.add_metaclass(abc.ABCMeta)
|
||||
class Driver(object):
|
||||
"""Interface description for an Catalog driver."""
|
||||
|
||||
@abc.abstractmethod
|
||||
def create_service(self, service_id, service_ref):
|
||||
"""Creates a new service.
|
||||
|
||||
@ -112,6 +119,7 @@ class Driver(object):
|
||||
"""
|
||||
raise exception.NotImplemented()
|
||||
|
||||
@abc.abstractmethod
|
||||
def list_services(self):
|
||||
"""List all services.
|
||||
|
||||
@ -120,6 +128,7 @@ class Driver(object):
|
||||
"""
|
||||
raise exception.NotImplemented()
|
||||
|
||||
@abc.abstractmethod
|
||||
def get_service(self, service_id):
|
||||
"""Get service by id.
|
||||
|
||||
@ -129,6 +138,7 @@ class Driver(object):
|
||||
"""
|
||||
raise exception.NotImplemented()
|
||||
|
||||
@abc.abstractmethod
|
||||
def update_service(self, service_id):
|
||||
"""Update service by id.
|
||||
|
||||
@ -138,6 +148,7 @@ class Driver(object):
|
||||
"""
|
||||
raise exception.NotImplemented()
|
||||
|
||||
@abc.abstractmethod
|
||||
def delete_service(self, service_id):
|
||||
"""Deletes an existing service.
|
||||
|
||||
@ -146,6 +157,7 @@ class Driver(object):
|
||||
"""
|
||||
raise exception.NotImplemented()
|
||||
|
||||
@abc.abstractmethod
|
||||
def create_endpoint(self, endpoint_id, endpoint_ref):
|
||||
"""Creates a new endpoint for a service.
|
||||
|
||||
@ -155,6 +167,7 @@ class Driver(object):
|
||||
"""
|
||||
raise exception.NotImplemented()
|
||||
|
||||
@abc.abstractmethod
|
||||
def get_endpoint(self, endpoint_id):
|
||||
"""Get endpoint by id.
|
||||
|
||||
@ -164,6 +177,7 @@ class Driver(object):
|
||||
"""
|
||||
raise exception.NotImplemented()
|
||||
|
||||
@abc.abstractmethod
|
||||
def list_endpoints(self):
|
||||
"""List all endpoints.
|
||||
|
||||
@ -172,6 +186,7 @@ class Driver(object):
|
||||
"""
|
||||
raise exception.NotImplemented()
|
||||
|
||||
@abc.abstractmethod
|
||||
def update_endpoint(self, endpoint_id, endpoint_ref):
|
||||
"""Get endpoint by id.
|
||||
|
||||
@ -182,6 +197,7 @@ class Driver(object):
|
||||
"""
|
||||
raise exception.NotImplemented()
|
||||
|
||||
@abc.abstractmethod
|
||||
def delete_endpoint(self, endpoint_id):
|
||||
"""Deletes an endpoint for a service.
|
||||
|
||||
@ -190,6 +206,7 @@ class Driver(object):
|
||||
"""
|
||||
raise exception.NotImplemented()
|
||||
|
||||
@abc.abstractmethod
|
||||
def get_catalog(self, user_id, tenant_id, metadata=None):
|
||||
"""Retrieve and format the current service catalog.
|
||||
|
||||
@ -214,6 +231,7 @@ class Driver(object):
|
||||
"""
|
||||
raise exception.NotImplemented()
|
||||
|
||||
@abc.abstractmethod
|
||||
def get_v3_catalog(self, user_id, tenant_id, metadata=None):
|
||||
"""Retrieve and format the current V3 service catalog.
|
||||
|
||||
|
@ -17,7 +17,6 @@
|
||||
import inspect
|
||||
import testtools
|
||||
|
||||
from keystone import catalog
|
||||
from keystone.contrib import endpoint_filter
|
||||
from keystone.contrib import oauth1
|
||||
from keystone import exception
|
||||
@ -51,10 +50,6 @@ class TestDrivers(testtools.TestCase):
|
||||
if name[0] != '_' and callable(method):
|
||||
self.assertMethodNotImplemented(method)
|
||||
|
||||
def test_catalog_driver_unimplemented(self):
|
||||
interface = catalog.Driver()
|
||||
self.assertInterfaceNotImplemented(interface)
|
||||
|
||||
def test_policy_driver_unimplemented(self):
|
||||
interface = policy.Driver()
|
||||
self.assertInterfaceNotImplemented(interface)
|
||||
|
Loading…
Reference in New Issue
Block a user