From f3db88bac8ec5c1b5716c2ec6e193045c8da82a8 Mon Sep 17 00:00:00 2001 From: Michael Hanselmann <hansmi@google.com> Date: Thu, 8 Sep 2011 18:34:25 +0200 Subject: [PATCH] rlib2: Convert /2/instances/[inst]/modify to OpcodeResource 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/rlib2.py | 28 ++++++--------------- test/ganeti.rapi.rlib2_unittest.py | 39 ++++++++++++++++++++++-------- 2 files changed, 36 insertions(+), 31 deletions(-) diff --git a/lib/rapi/rlib2.py b/lib/rapi/rlib2.py index ed9133259..167abe39e 100644 --- a/lib/rapi/rlib2.py +++ b/lib/rapi/rlib2.py @@ -1065,33 +1065,19 @@ class R_2_instances_name_rename(baserlib.OpcodeResource): }) -def _ParseModifyInstanceRequest(name, data): - """Parses a request for modifying an instance. - - @rtype: L{opcodes.OpInstanceSetParams} - @return: Instance modify opcode - - """ - return baserlib.FillOpcode(opcodes.OpInstanceSetParams, data, { - "instance_name": name, - }) - - -class R_2_instances_name_modify(baserlib.ResourceBase): +class R_2_instances_name_modify(baserlib.OpcodeResource): """/2/instances/[instance_name]/modify resource. """ - def PUT(self): - """Changes some parameters of an instance. + PUT_OPCODE = opcodes.OpInstanceSetParams - @return: a job id + def GetPutOpInput(self): + """Changes parameters of an instance. """ - baserlib.CheckType(self.request_body, dict, "Body contents") - - op = _ParseModifyInstanceRequest(self.items[0], self.request_body) - - return self.SubmitJob([op]) + return (self.request_body, { + "instance_name": self.items[0], + }) class R_2_instances_name_disk_grow(baserlib.ResourceBase): diff --git a/test/ganeti.rapi.rlib2_unittest.py b/test/ganeti.rapi.rlib2_unittest.py index de2900328..2fe0511db 100755 --- a/test/ganeti.rapi.rlib2_unittest.py +++ b/test/ganeti.rapi.rlib2_unittest.py @@ -867,13 +867,10 @@ class TestParseRenameInstanceRequest(testutils.GanetiTestCase): self.assertRaises(IndexError, cl.GetNextSubmittedJob) -class TestParseModifyInstanceRequest(testutils.GanetiTestCase): - def setUp(self): - testutils.GanetiTestCase.setUp(self) - - self.Parse = rlib2._ParseModifyInstanceRequest - +class TestParseModifyInstanceRequest(unittest.TestCase): def test(self): + clfactory = _FakeClientFactory(_FakeClient) + name = "instush8gah" test_disks = [ @@ -898,8 +895,16 @@ class TestParseModifyInstanceRequest(testutils.GanetiTestCase): "disk_template": disk_template, } - op = self.Parse(name, data) - self.assert_(isinstance(op, opcodes.OpInstanceSetParams)) + handler = _CreateHandler(rlib2.R_2_instances_name_modify, + [name], {}, data, clfactory) + job_id = handler.PUT() + + cl = clfactory.GetNextClient() + self.assertRaises(IndexError, clfactory.GetNextClient) + + (exp_job_id, (op, )) = cl.GetNextSubmittedJob() + self.assertEqual(job_id, exp_job_id) + self.assertTrue(isinstance(op, opcodes.OpInstanceSetParams)) self.assertEqual(op.instance_name, name) self.assertEqual(op.hvparams, hvparams) self.assertEqual(op.beparams, beparams) @@ -911,13 +916,27 @@ class TestParseModifyInstanceRequest(testutils.GanetiTestCase): self.assertFalse(hasattr(op, "remote_node")) self.assertFalse(hasattr(op, "os_name")) self.assertFalse(hasattr(op, "force_variant")) + self.assertFalse(hasattr(op, "dry_run")) + + self.assertRaises(IndexError, cl.GetNextSubmittedJob) def testDefaults(self): + clfactory = _FakeClientFactory(_FakeClient) + name = "instir8aish31" - op = self.Parse(name, {}) - self.assert_(isinstance(op, opcodes.OpInstanceSetParams)) + handler = _CreateHandler(rlib2.R_2_instances_name_modify, + [name], {}, {}, clfactory) + job_id = handler.PUT() + + cl = clfactory.GetNextClient() + self.assertRaises(IndexError, clfactory.GetNextClient) + + (exp_job_id, (op, )) = cl.GetNextSubmittedJob() + self.assertEqual(job_id, exp_job_id) + self.assertTrue(isinstance(op, opcodes.OpInstanceSetParams)) self.assertEqual(op.instance_name, name) + for i in ["hvparams", "beparams", "osparams", "force", "nics", "disks", "disk_template", "remote_node", "os_name", "force_variant"]: self.assertFalse(hasattr(op, i)) -- GitLab