From b5f2ab80c01f6d359c34e5aad3981cc0e529c09d Mon Sep 17 00:00:00 2001 From: Michael Hanselmann <hansmi@google.com> Date: Thu, 8 Sep 2011 18:23:21 +0200 Subject: [PATCH] rlib2: Convert /2/instances/[inst]/failover 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 | 14 +++++--------- test/ganeti.rapi.rlib2_unittest.py | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/lib/rapi/rlib2.py b/lib/rapi/rlib2.py index e09a923bb..5bda4533c 100644 --- a/lib/rapi/rlib2.py +++ b/lib/rapi/rlib2.py @@ -1035,24 +1035,20 @@ class R_2_instances_name_migrate(baserlib.OpcodeResource): }) -class R_2_instances_name_failover(baserlib.ResourceBase): +class R_2_instances_name_failover(baserlib.OpcodeResource): """/2/instances/[instance_name]/failover resource. """ - def PUT(self): - """Does a failover of an instance. + PUT_OPCODE = opcodes.OpInstanceFailover - @return: a job id + def GetPutOpInput(self): + """Does a failover of an instance. """ - baserlib.CheckType(self.request_body, dict, "Body contents") - - op = baserlib.FillOpcode(opcodes.OpInstanceFailover, self.request_body, { + return (self.request_body, { "instance_name": self.items[0], }) - return self.SubmitJob([op]) - def _ParseRenameInstanceRequest(name, data): """Parses a request for renaming an instance. diff --git a/test/ganeti.rapi.rlib2_unittest.py b/test/ganeti.rapi.rlib2_unittest.py index 12ce4cdcf..382b4aee9 100755 --- a/test/ganeti.rapi.rlib2_unittest.py +++ b/test/ganeti.rapi.rlib2_unittest.py @@ -446,6 +446,26 @@ class TestInstanceDeactivateDisks(unittest.TestCase): self.assertRaises(IndexError, cl.GetNextSubmittedJob) +class TestInstanceFailover(unittest.TestCase): + def test(self): + clfactory = _FakeClientFactory(_FakeClient) + handler = _CreateHandler(rlib2.R_2_instances_name_failover, + ["inst12794"], {}, {}, 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.OpInstanceFailover)) + self.assertEqual(op.instance_name, "inst12794") + self.assertFalse(hasattr(op, "dry_run")) + self.assertFalse(hasattr(op, "force")) + + self.assertRaises(IndexError, cl.GetNextSubmittedJob) + + class TestBackupPrepare(unittest.TestCase): def test(self): clfactory = _FakeClientFactory(_FakeClient) -- GitLab