From 87fd3ec7381fa2c2a7888f3797e6f493f26c07e7 Mon Sep 17 00:00:00 2001 From: Michael Hanselmann <hansmi@google.com> Date: Thu, 8 Sep 2011 14:35:16 +0200 Subject: [PATCH] rlib2: Convert /2/groups/[group_name]/assign-nodes 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 | 13 ++++++------- test/ganeti.rapi.rlib2_unittest.py | 25 +++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/lib/rapi/rlib2.py b/lib/rapi/rlib2.py index ace53cfb0..6827fe59b 100644 --- a/lib/rapi/rlib2.py +++ b/lib/rapi/rlib2.py @@ -665,24 +665,23 @@ class R_2_groups_name_rename(baserlib.OpcodeResource): }) -class R_2_groups_name_assign_nodes(baserlib.ResourceBase): +class R_2_groups_name_assign_nodes(baserlib.OpcodeResource): """/2/groups/[group_name]/assign-nodes resource. """ - def PUT(self): - """Assigns nodes to a group. + PUT_OPCODE = opcodes.OpGroupAssignNodes - @return: a job id + def GetPutOpInput(self): + """Assigns nodes to a group. """ - op = baserlib.FillOpcode(opcodes.OpGroupAssignNodes, self.request_body, { + assert len(self.items) == 1 + return (self.request_body, { "group_name": self.items[0], "dry_run": self.dryRun(), "force": self.useForce(), }) - return self.SubmitJob([op]) - def _ParseInstanceCreateRequestVersion1(data, dry_run): """Parses an instance creation request version 1. diff --git a/test/ganeti.rapi.rlib2_unittest.py b/test/ganeti.rapi.rlib2_unittest.py index 195fe03b3..649fa824d 100755 --- a/test/ganeti.rapi.rlib2_unittest.py +++ b/test/ganeti.rapi.rlib2_unittest.py @@ -272,6 +272,31 @@ class TestNodeEvacuate(unittest.TestCase): self.assertRaises(IndexError, cl.GetNextSubmittedJob) +class TestGroupAssignNodes(unittest.TestCase): + def test(self): + clfactory = _FakeClientFactory(_FakeClient) + handler = _CreateHandler(rlib2.R_2_groups_name_assign_nodes, ["grp-a"], { + "dry-run": ["1"], + "force": ["1"], + }, { + "nodes": ["n2", "n3"], + }, 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.OpGroupAssignNodes)) + self.assertEqual(op.group_name, "grp-a") + self.assertEqual(op.nodes, ["n2", "n3"]) + self.assertTrue(op.dry_run) + self.assertTrue(op.force) + + self.assertRaises(IndexError, cl.GetNextSubmittedJob) + + class TestParseInstanceCreateRequestVersion1(testutils.GanetiTestCase): def setUp(self): testutils.GanetiTestCase.setUp(self) -- GitLab