From 5986d763fcc7fe6296c4df30ffca992c3a21baa3 Mon Sep 17 00:00:00 2001 From: ivo5307 Date: Tue, 9 Dec 2014 11:03:24 -0600 Subject: [PATCH] Added rescue image ref parameter * Added rescue image ref to the rescue client * Refactored rescue model request object and methods to take rescue image ref under consideration Change-Id: Ice0d07e90e6c326310ad5a66a03908acfd753003 --- .../compute/extensions/rescue_api/client.py | 5 +++-- .../extensions/rescue_api/models/requests.py | 17 ++++++++++++++++- pip-requires | 3 +-- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/cloudcafe/compute/extensions/rescue_api/client.py b/cloudcafe/compute/extensions/rescue_api/client.py index f00755e6..1c04f274 100644 --- a/cloudcafe/compute/extensions/rescue_api/client.py +++ b/cloudcafe/compute/extensions/rescue_api/client.py @@ -47,13 +47,14 @@ class RescueClient(AutoMarshallingHTTPClient): self.default_headers['Accept'] = accept self.url = url - def rescue(self, server_id, requestslib_kwargs=None): + def rescue(self, server_id, rescue_image_ref=None, + requestslib_kwargs=None): self.server_id = server_id url = '{base_url}/servers/{server_id}/action'.format( base_url=self.url, server_id=server_id) resp = self.request( 'POST', url, response_entity_type=RescueResponse, - request_entity=RescueMode(), + request_entity=RescueMode(rescue_image_ref=rescue_image_ref), requestslib_kwargs=requestslib_kwargs) return resp diff --git a/cloudcafe/compute/extensions/rescue_api/models/requests.py b/cloudcafe/compute/extensions/rescue_api/models/requests.py index dcd75324..861215b6 100644 --- a/cloudcafe/compute/extensions/rescue_api/models/requests.py +++ b/cloudcafe/compute/extensions/rescue_api/models/requests.py @@ -22,14 +22,29 @@ from cloudcafe.compute.common.constants import Constants class RescueMode(AutoMarshallingModel): + """ + @summary: Rebuild Request Object for Server + """ + + def __init__(self, rescue_image_ref=None): + super(RescueMode, self).__init__() + self.rescue_image_ref = rescue_image_ref def _obj_to_json(self): - return json.dumps({'rescue': {}}) + + body = { + 'rescue_image_ref': self.rescue_image_ref + } + + body = self._remove_empty_values(body) + return json.dumps({'rescue': body}) def _obj_to_xml(self): xml = Constants.XML_HEADER element = ET.Element('rescue') element.set('xmlns', Constants.XML_API_RESCUE) + if self.rescue_image_ref is not None: + element.set('rescue_image_ref', self.rescue_image_ref) xml += ET.tostring(element) return xml diff --git a/pip-requires b/pip-requires index 9139140c..633f394a 100644 --- a/pip-requires +++ b/pip-requires @@ -1,6 +1,5 @@ mock -unittest2 IPy netaddr XenAPI -dateutils \ No newline at end of file +dateutils