diff --git a/nova/api/openstack/compute/quota_classes.py b/nova/api/openstack/compute/quota_classes.py index e09631b396a6..efc01dd781ac 100644 --- a/nova/api/openstack/compute/quota_classes.py +++ b/nova/api/openstack/compute/quota_classes.py @@ -28,7 +28,6 @@ from nova import utils QUOTAS = quota.QUOTAS -ALIAS = "os-quota-class-sets" # Quotas that are only enabled by specific extensions EXTENDED_QUOTAS = {'server_groups': 'os-server-group-quotas', @@ -41,10 +40,10 @@ class QuotaClassSetsController(wsgi.Controller): def __init__(self, **kwargs): self.supported_quotas = QUOTAS.resources - extension_info = kwargs.pop('extension_info').get_extensions() + # TODO(jichenjc): need fix v2 and v2.1 API difference here see bug + # 1693168 for more info for resource, extension in EXTENDED_QUOTAS.items(): - if extension not in extension_info: - self.supported_quotas.remove(resource) + self.supported_quotas.remove(resource) def _format_quota_set(self, quota_class, quota_set): """Convert the quota object to a result dict.""" @@ -89,22 +88,3 @@ class QuotaClassSetsController(wsgi.Controller): values = QUOTAS.get_class_quotas(context, quota_class) return self._format_quota_set(None, values) - - -class QuotaClasses(extensions.V21APIExtensionBase): - """Quota classes management support.""" - - name = "QuotaClasses" - alias = ALIAS - version = 1 - - def get_resources(self): - resources = [] - res = extensions.ResourceExtension( - ALIAS, - QuotaClassSetsController(extension_info=self.extension_info)) - resources.append(res) - return resources - - def get_controller_extensions(self): - return [] diff --git a/nova/api/openstack/compute/routes.py b/nova/api/openstack/compute/routes.py index c216e22203cb..0c35ecb375ea 100644 --- a/nova/api/openstack/compute/routes.py +++ b/nova/api/openstack/compute/routes.py @@ -61,6 +61,7 @@ from nova.api.openstack.compute import migrate_server from nova.api.openstack.compute import migrations from nova.api.openstack.compute import multinic from nova.api.openstack.compute import pause_server +from nova.api.openstack.compute import quota_classes from nova.api.openstack.compute import quota_sets from nova.api.openstack.compute import remote_consoles from nova.api.openstack.compute import rescue @@ -209,6 +210,10 @@ migrations_controller = functools.partial(_create_controller, migrations.MigrationsController, [], []) +quota_classes_controller = functools.partial(_create_controller, + quota_classes.QuotaClassSetsController, [], []) + + quota_set_controller = functools.partial(_create_controller, quota_sets.QuotaSetsController, [], []) @@ -484,6 +489,10 @@ ROUTE_LIST = ( ('/os-migrations', { 'GET': [migrations_controller, 'index'] }), + ('/os-quota-class-sets/{id}', { + 'GET': [quota_classes_controller, 'show'], + 'PUT': [quota_classes_controller, 'update'] + }), ('/os-quota-sets/{id}', { 'GET': [quota_set_controller, 'show'], 'PUT': [quota_set_controller, 'update'], diff --git a/setup.cfg b/setup.cfg index 53d8e9a24692..8f55a1bfe5f7 100644 --- a/setup.cfg +++ b/setup.cfg @@ -82,7 +82,6 @@ nova.api.v21.extensions = multiple_create = nova.api.openstack.compute.multiple_create:MultipleCreate networks = nova.api.openstack.compute.networks:Networks networks_associate = nova.api.openstack.compute.networks_associate:NetworksAssociate - quota_classes = nova.api.openstack.compute.quota_classes:QuotaClasses remote_consoles = nova.api.openstack.compute.remote_consoles:RemoteConsoles security_group_default_rules = nova.api.openstack.compute.security_group_default_rules:SecurityGroupDefaultRules security_groups = nova.api.openstack.compute.security_groups:SecurityGroups