From b33aabee07faa86d529edf64682117ff6ca2c02a Mon Sep 17 00:00:00 2001 From: ghanshyam Date: Mon, 1 May 2017 21:22:09 +0300 Subject: [PATCH] Use plain routes list for os-availability-zone endpoint instead of stevedore This patch adds os-availability-zone 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. Partial-implement-blueprint api-no-more-extensions-pike Change-Id: I19ad0d6a3fce2342097d8a61ee4f60adf0e14aa3 --- .../openstack/compute/availability_zone.py | 23 ------------------- nova/api/openstack/compute/extension_info.py | 5 ++++ nova/api/openstack/compute/routes.py | 11 +++++++++ setup.cfg | 1 - 4 files changed, 16 insertions(+), 24 deletions(-) diff --git a/nova/api/openstack/compute/availability_zone.py b/nova/api/openstack/compute/availability_zone.py index e31f40aa42..33e61d3fb1 100644 --- a/nova/api/openstack/compute/availability_zone.py +++ b/nova/api/openstack/compute/availability_zone.py @@ -22,7 +22,6 @@ from nova.policies import availability_zone as az_policies from nova import servicegroup CONF = nova.conf.CONF -ALIAS = "os-availability-zone" ATTRIBUTE_NAME = "availability_zone" @@ -121,28 +120,6 @@ class AvailabilityZoneController(wsgi.Controller): return self._describe_availability_zones_verbose(context) -class AvailabilityZone(extensions.V21APIExtensionBase): - """1. Add availability_zone to the Create Server API. - 2. Add availability zones describing. - """ - - name = "AvailabilityZone" - alias = ALIAS - version = 1 - - def get_resources(self): - resource = [extensions.ResourceExtension(ALIAS, - AvailabilityZoneController(), - collection_actions={'detail': 'GET'})] - return resource - - def get_controller_extensions(self): - """It's an abstract function V21APIExtensionBase and the extension - will not be loaded without it. - """ - return [] - - # NOTE(gmann): This function is not supposed to use 'body_deprecated_param' # parameter as this is placed to handle scheduler_hint extension for V2.1. def server_create(server_dict, create_kwargs, body_deprecated_param): diff --git a/nova/api/openstack/compute/extension_info.py b/nova/api/openstack/compute/extension_info.py index 2fa678a320..3da22658fa 100644 --- a/nova/api/openstack/compute/extension_info.py +++ b/nova/api/openstack/compute/extension_info.py @@ -181,6 +181,11 @@ hardcoded_extensions = [ 'alias': 'os-assisted-volume-snapshots', 'description': 'Assisted volume snapshots.' }, + {'name': 'AvailabilityZone', + 'alias': 'os-availability-zone', + 'description': '1. Add availability_zone to the Create Server API.\n' + ' 2. Add availability zones describing.\n ', + }, {'name': 'DiskConfig', 'alias': 'os-disk-config', 'description': 'Disk Management Extension.'}, diff --git a/nova/api/openstack/compute/routes.py b/nova/api/openstack/compute/routes.py index bed453b6dc..63002a086a 100644 --- a/nova/api/openstack/compute/routes.py +++ b/nova/api/openstack/compute/routes.py @@ -22,6 +22,7 @@ from nova.api.openstack.compute import admin_password from nova.api.openstack.compute import agents from nova.api.openstack.compute import aggregates from nova.api.openstack.compute import assisted_volume_snapshots +from nova.api.openstack.compute import availability_zone from nova.api.openstack.compute import config_drive from nova.api.openstack.compute import console_output from nova.api.openstack.compute import create_backup @@ -90,6 +91,10 @@ assisted_volume_snapshots_controller = functools.partial( assisted_volume_snapshots.AssistedVolumeSnapshotsController, [], []) +availability_zone_controller = functools.partial( + _create_controller, availability_zone.AvailabilityZoneController, [], []) + + keypairs_controller = functools.partial( _create_controller, keypairs.KeypairController, [], []) @@ -239,6 +244,12 @@ ROUTE_LIST = ( ('/os-assisted-volume-snapshots/{id}', { 'DELETE': [assisted_volume_snapshots_controller, 'delete'] }), + ('/os-availability-zone', { + 'GET': [availability_zone_controller, 'index'] + }), + ('/os-availability-zone/detail', { + 'GET': [availability_zone_controller, 'detail'], + }), ('/os-floating-ip-dns', { 'GET': [floating_ip_dns_controller, 'index'] }), diff --git a/setup.cfg b/setup.cfg index 1cd7d7f4d7..416ea8d151 100644 --- a/setup.cfg +++ b/setup.cfg @@ -73,7 +73,6 @@ wsgi_scripts = nova.api.v21.extensions = attach_interfaces = nova.api.openstack.compute.attach_interfaces:AttachInterfaces - availability_zone = nova.api.openstack.compute.availability_zone:AvailabilityZone baremetal_nodes = nova.api.openstack.compute.baremetal_nodes:BareMetalNodes block_device_mapping = nova.api.openstack.compute.block_device_mapping:BlockDeviceMapping cells = nova.api.openstack.compute.cells:Cells