From 6eac65a8e13d3040c0c6561709f59b3d9bab5435 Mon Sep 17 00:00:00 2001 From: Édouard Thuleau Date: Thu, 25 Oct 2012 10:32:48 +0200 Subject: 'BackupCreate' rotation parameter >= 0 In the extension 'admin-actions' of OpenStack Compute API, the action create backups should only accept rotation parameter greater than or equal to zero. If the 'rotation' parameter is negative, OS API returns a badRequest 400 HTTP error. Fixes LP bug #1071168 Change-Id: I6ef08fbecb0f88942cdb16193e9d2c3831866fe9 --- nova/api/openstack/compute/contrib/admin_actions.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'nova/api') diff --git a/nova/api/openstack/compute/contrib/admin_actions.py b/nova/api/openstack/compute/contrib/admin_actions.py index 1bac0851d..02a588ffa 100644 --- a/nova/api/openstack/compute/contrib/admin_actions.py +++ b/nova/api/openstack/compute/contrib/admin_actions.py @@ -229,6 +229,10 @@ class AdminActionsController(wsgi.Controller): except ValueError: msg = _("createBackup attribute 'rotation' must be an integer") raise exc.HTTPBadRequest(explanation=msg) + if rotation < 0: + msg = _("createBackup attribute 'rotation' must be greater " + "than or equal to zero") + raise exc.HTTPBadRequest(explanation=msg) props = {} metadata = entity.get('metadata', {}) @@ -251,12 +255,14 @@ class AdminActionsController(wsgi.Controller): common.raise_http_conflict_for_instance_invalid_state(state_error, 'createBackup') - # build location of newly-created image entity - image_id = str(image['id']) - image_ref = os.path.join(req.application_url, 'images', image_id) - resp = webob.Response(status_int=202) - resp.headers['Location'] = image_ref + + # build location of newly-created image entity if rotation is not zero + if rotation > 0: + image_id = str(image['id']) + image_ref = os.path.join(req.application_url, 'images', image_id) + resp.headers['Location'] = image_ref + return resp @wsgi.action('os-migrateLive') -- cgit