diff --git a/lib/rapi/rlib2.py b/lib/rapi/rlib2.py index 1c2f22b91c9dde16f804c98dedee9180dde04770..ace53cfb0cdb6ee60df13912eecf547d7db2a7e7 100644 --- a/lib/rapi/rlib2.py +++ b/lib/rapi/rlib2.py @@ -648,40 +648,21 @@ class R_2_groups_name_modify(baserlib.OpcodeResource): }) -def _ParseRenameGroupRequest(name, data, dry_run): - """Parses a request for renaming a node group. - - @type name: string - @param name: name of the node group to rename - @type data: dict - @param data: the body received by the rename request - @type dry_run: bool - @param dry_run: whether to perform a dry run - - @rtype: L{opcodes.OpGroupRename} - @return: Node group rename opcode - - """ - return baserlib.FillOpcode(opcodes.OpGroupRename, data, { - "group_name": name, - "dry_run": dry_run, - }) - - -class R_2_groups_name_rename(baserlib.ResourceBase): +class R_2_groups_name_rename(baserlib.OpcodeResource): """/2/groups/[group_name]/rename resource. """ - def PUT(self): - """Changes the name of a node group. + PUT_OPCODE = opcodes.OpGroupRename - @return: a job id + def GetPutOpInput(self): + """Changes the name of a node group. """ - baserlib.CheckType(self.request_body, dict, "Body contents") - op = _ParseRenameGroupRequest(self.items[0], self.request_body, - self.dryRun()) - return self.SubmitJob([op]) + assert len(self.items) == 1 + return (self.request_body, { + "group_name": self.items[0], + "dry_run": self.dryRun(), + }) class R_2_groups_name_assign_nodes(baserlib.ResourceBase): diff --git a/test/ganeti.rapi.rlib2_unittest.py b/test/ganeti.rapi.rlib2_unittest.py index d3471c4828b1243ea1d0feefc6804a3163cdaa1a..195fe03b304d874059b83b8c3f4f294217e78ebd 100755 --- a/test/ganeti.rapi.rlib2_unittest.py +++ b/test/ganeti.rapi.rlib2_unittest.py @@ -680,37 +680,55 @@ class TestParseInstanceReinstallRequest(testutils.GanetiTestCase): self.assertFalse(ops[1].osparams) -class TestParseRenameGroupRequest(testutils.GanetiTestCase): - def setUp(self): - testutils.GanetiTestCase.setUp(self) - - self.Parse = rlib2._ParseRenameGroupRequest - +class TestGroupRename(unittest.TestCase): def test(self): - name = "instij0eeph7" + clfactory = _FakeClientFactory(_FakeClient) + + name = "group608242564" data = { - "new_name": "ua0aiyoo", + "new_name": "ua0aiyoo15112", } - op = self.Parse(name, data, False) + handler = _CreateHandler(rlib2.R_2_groups_name_rename, [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.assert_(isinstance(op, opcodes.OpGroupRename)) + self.assertTrue(isinstance(op, opcodes.OpGroupRename)) self.assertEqual(op.group_name, name) - self.assertEqual(op.new_name, "ua0aiyoo") + self.assertEqual(op.new_name, "ua0aiyoo15112") self.assertFalse(op.dry_run) + self.assertRaises(IndexError, cl.GetNextSubmittedJob) def testDryRun(self): - name = "instij0eeph7" + clfactory = _FakeClientFactory(_FakeClient) + + name = "group28548" data = { "new_name": "ua0aiyoo", } - op = self.Parse(name, data, True) + handler = _CreateHandler(rlib2.R_2_groups_name_rename, [name], { + "dry-run": ["1"], + }, 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.assert_(isinstance(op, opcodes.OpGroupRename)) + self.assertTrue(isinstance(op, opcodes.OpGroupRename)) self.assertEqual(op.group_name, name) self.assertEqual(op.new_name, "ua0aiyoo") - self.assert_(op.dry_run) + self.assertTrue(op.dry_run) + self.assertRaises(IndexError, cl.GetNextSubmittedJob) class TestParseInstanceReplaceDisksRequest(unittest.TestCase):