Use is_supported() to check microversion

Method is_supported from api_version_request.py could
be used in several places to check support of microversions.

Change-Id: I1c72d924df3afac69d596e529570dc725faa8968
This commit is contained in:
Sergey Nikitin 2015-11-24 13:36:09 +03:00
parent 727656d2f5
commit ced866c4c4
3 changed files with 13 additions and 25 deletions

View File

@ -43,11 +43,10 @@ class EvacuateController(wsgi.Controller):
self.host_api = compute.HostAPI()
def _get_on_shared_storage(self, req, evacuate_body):
if (req.api_version_request <
api_version_request.APIVersionRequest("2.14")):
return strutils.bool_from_string(evacuate_body["onSharedStorage"])
else:
if api_version_request.is_supported(req, min_version='2.14'):
return None
else:
return strutils.bool_from_string(evacuate_body["onSharedStorage"])
def _get_password(self, req, evacuate_body, on_shared_storage):
password = None
@ -91,12 +90,11 @@ class EvacuateController(wsgi.Controller):
on_shared_storage = self._get_on_shared_storage(req, evacuate_body)
if (req.api_version_request <
api_version_request.APIVersionRequest("2.14")):
if api_version_request.is_supported(req, min_version='2.14'):
password = self._get_password_v214(req, evacuate_body)
else:
password = self._get_password(req, evacuate_body,
on_shared_storage)
else:
password = self._get_password_v214(req, evacuate_body)
if host is not None:
try:
@ -121,8 +119,7 @@ class EvacuateController(wsgi.Controller):
except exception.ComputeServiceInUse as e:
raise exc.HTTPBadRequest(explanation=e.format_message())
if (req.api_version_request <
api_version_request.APIVersionRequest("2.14") and
if (not api_version_request.is_supported(req, min_version='2.14') and
CONF.enable_instance_password):
return {'adminPass': password}
else:

View File

@ -47,7 +47,7 @@ def _authorize_context(req):
class ServerGroupController(wsgi.Controller):
"""The Server group API controller for the OpenStack API."""
def _format_server_group(self, context, group, req_ver):
def _format_server_group(self, context, group, req):
# the id field has its value as the uuid of the server group
# There is no 'uuid' key in server_group seen by clients.
# In addition, clients see policies as a ["policy-name"] list;
@ -69,7 +69,7 @@ class ServerGroupController(wsgi.Controller):
server_group['members'] = members
# Add project id information to the response data for
# API version v2.13
if req_ver >= api_version_request.APIVersionRequest("2.13"):
if api_version_request.is_supported(req, min_version="2.13"):
server_group['project_id'] = group.project_id
server_group['user_id'] = group.user_id
return server_group
@ -77,15 +77,12 @@ class ServerGroupController(wsgi.Controller):
@extensions.expected_errors(404)
def show(self, req, id):
"""Return data about the given server group."""
req_ver = req.api_version_request
context = _authorize_context(req)
try:
sg = objects.InstanceGroup.get_by_uuid(context, id)
except nova.exception.InstanceGroupNotFound as e:
raise webob.exc.HTTPNotFound(explanation=e.format_message())
return {'server_group': self._format_server_group(
context, sg, req_ver)}
return {'server_group': self._format_server_group(context, sg, req)}
@wsgi.response(204)
@extensions.expected_errors(404)
@ -122,8 +119,6 @@ class ServerGroupController(wsgi.Controller):
@extensions.expected_errors(())
def index(self, req):
"""Returns a list of server groups."""
req_ver = req.api_version_request
context = _authorize_context(req)
project_id = context.project_id
if 'all_projects' in req.GET and context.is_admin:
@ -132,7 +127,7 @@ class ServerGroupController(wsgi.Controller):
sgs = objects.InstanceGroupList.get_by_project_id(
context, project_id)
limited_list = common.limited(sgs.objects, req)
result = [self._format_server_group(context, group, req_ver)
result = [self._format_server_group(context, group, req)
for group in limited_list]
return {'server_groups': result}
@ -140,8 +135,6 @@ class ServerGroupController(wsgi.Controller):
@validation.schema(schema.create)
def create(self, req, body):
"""Creates a new server group."""
req_ver = req.api_version_request
context = _authorize_context(req)
quotas = objects.Quotas(context=context)
@ -165,8 +158,7 @@ class ServerGroupController(wsgi.Controller):
raise exc.HTTPBadRequest(explanation=e)
quotas.commit()
return {'server_group': self._format_server_group(context, sg,
req_ver)}
return {'server_group': self._format_server_group(context, sg, req)}
class ServerGroups(extensions.V21APIExtensionBase):

View File

@ -305,8 +305,7 @@ class ViewBuilderV21(ViewBuilder):
if server["server"]["status"] in self._progress_statuses:
server["server"]["progress"] = instance.get("progress", 0)
if (request.api_version_request >=
api_version_request.APIVersionRequest("2.9")):
if api_version_request.is_supported(request, min_version="2.9"):
server["server"]["locked"] = (True if instance["locked_by"]
else False)