From ceed63ff7dc328993615d05a7fc63966e19d451e Mon Sep 17 00:00:00 2001 From: jichenjc Date: Fri, 28 Apr 2017 21:57:48 +0800 Subject: [PATCH] Use plain routes list for os-quota-classes endpoint instead of stevedore This patch adds os-quota-classes related routes by a plain list, instead of using stevedore. After all the Nova API endpoints moves to the plain routes list, the usage of stevedore for API loading will be removed from Nova. Because of os-server-group-quotas is never loaded, we can safely removed the logic check for server-group data and possibily return it though a microversion update if needed. Partial-implement-blueprint api-no-more-extensions-pike Change-Id: I34c776bedc0bc5fc0ef4d29dd3b8f84e914d83e2 --- nova/api/openstack/compute/quota_classes.py | 26 +++------------------ nova/api/openstack/compute/routes.py | 9 +++++++ setup.cfg | 1 - 3 files changed, 12 insertions(+), 24 deletions(-) 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