diff --git a/lib/rapi/rlib2.py b/lib/rapi/rlib2.py index ed913325985db8973211dc3f1f76fa65f75ab73c..167abe39efce2dc48089b814a66e39b3c4616d11 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 de29003287eff523cefc30946f06add0e5c1bc3f..2fe0511db3e417340698a56b98d39d49d0710659 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))