From 81559a88884fdde14d6ca6bd788c0e37ca3d56cf Mon Sep 17 00:00:00 2001 From: Johannes Erdfelt Date: Tue, 20 Dec 2011 20:34:15 +0000 Subject: Set Location header in server create and rebuild actions The API documentation states that the Location header should be filled with the URL of the server. This change implemnts this for both the create and rebuild actions. Change-Id: Ic0372aeaea58c9288065e2cfc222ca9257d35c87 --- nova/api/openstack/v2/servers.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'nova/api') diff --git a/nova/api/openstack/v2/servers.py b/nova/api/openstack/v2/servers.py index 049a17ef6..e2d84b688 100644 --- a/nova/api/openstack/v2/servers.py +++ b/nova/api/openstack/v2/servers.py @@ -876,13 +876,25 @@ class Controller(wsgi.Controller): class HeadersSerializer(wsgi.ResponseHeadersSerializer): + def _add_server_location(self, response, data): + link = filter(lambda l: l['rel'] == 'self', data['server']['links']) + if link: + response.headers['Location'] = link[0]['href'] + def create(self, response, data): + if 'server' in data: + self._add_server_location(response, data) response.status_int = 202 def delete(self, response, data): response.status_int = 204 def action(self, response, data): + # FIXME(jerdfelt): This is kind of a hack. Unfortunately the original + # action requested isn't available to us, so we need to look at the + # response to see if it looks like a rebuild response. + if data.get('server', {}).get('status') == 'REBUILD': + self._add_server_location(response, data) response.status_int = 202 -- cgit