From b680c8be2469f9317b23335b2ea70803e4ecf5e4 Mon Sep 17 00:00:00 2001 From: Michael Hanselmann <hansmi@google.com> Date: Wed, 26 Jan 2011 19:17:18 +0100 Subject: [PATCH] RAPI client: De-/activating instance disks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Michael Hanselmann <hansmi@google.com> Reviewed-by: RenΓ© Nussbaumer <rn@google.com> --- lib/rapi/client.py | 30 +++++++++++++++++++++++++++++ test/ganeti.rapi.client_unittest.py | 24 +++++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/lib/rapi/client.py b/lib/rapi/client.py index 51582ca59..9e076e80f 100644 --- a/lib/rapi/client.py +++ b/lib/rapi/client.py @@ -767,6 +767,36 @@ class GanetiRapiClient(object): # pylint: disable-msg=R0904 ("/%s/instances/%s/modify" % (GANETI_RAPI_VERSION, instance)), None, body) + def ActivateInstanceDisks(self, instance, ignore_size=None): + """Activates an instance's disks. + + @type instance: string + @param instance: Instance name + @type ignore_size: bool + @param ignore_size: Whether to ignore recorded size + @return: job id + + """ + query = [] + if ignore_size: + query.append(("ignore_size", 1)) + + return self._SendRequest(HTTP_PUT, + ("/%s/instances/%s/activate-disks" % + (GANETI_RAPI_VERSION, instance)), query, None) + + def DeactivateInstanceDisks(self, instance): + """Deactivates an instance's disks. + + @type instance: string + @param instance: Instance name + @return: job id + + """ + return self._SendRequest(HTTP_PUT, + ("/%s/instances/%s/deactivate-disks" % + (GANETI_RAPI_VERSION, instance)), None, None) + def GrowInstanceDisk(self, instance, disk, amount, wait_for_sync=None): """Grows a disk of an instance. diff --git a/test/ganeti.rapi.client_unittest.py b/test/ganeti.rapi.client_unittest.py index fc63d0013..bdc4010ec 100755 --- a/test/ganeti.rapi.client_unittest.py +++ b/test/ganeti.rapi.client_unittest.py @@ -1085,6 +1085,30 @@ class GanetiRapiClientTests(testutils.GanetiTestCase): self.assertItems([]) self.assertHandler(rlib2.R_2_redist_config) + def testActivateInstanceDisks(self): + self.rapi.AddResponse("23547") + job_id = self.client.ActivateInstanceDisks("inst28204") + self.assertEqual(job_id, 23547) + self.assertItems(["inst28204"]) + self.assertHandler(rlib2.R_2_instances_name_activate_disks) + self.assertFalse(self.rapi.GetLastHandler().queryargs) + + def testActivateInstanceDisksIgnoreSize(self): + self.rapi.AddResponse("11044") + job_id = self.client.ActivateInstanceDisks("inst28204", ignore_size=True) + self.assertEqual(job_id, 11044) + self.assertItems(["inst28204"]) + self.assertHandler(rlib2.R_2_instances_name_activate_disks) + self.assertQuery("ignore_size", ["1"]) + + def testDeactivateInstanceDisks(self): + self.rapi.AddResponse("14591") + job_id = self.client.DeactivateInstanceDisks("inst28234") + self.assertEqual(job_id, 14591) + self.assertItems(["inst28234"]) + self.assertHandler(rlib2.R_2_instances_name_deactivate_disks) + self.assertFalse(self.rapi.GetLastHandler().queryargs) + def testGrowInstanceDisk(self): for idx, wait_for_sync in enumerate([None, False, True]): amount = 128 + (512 * idx) -- GitLab