From d76f9b5d657becd7bbb7862ca149e25742d431df Mon Sep 17 00:00:00 2001 From: Michael Hanselmann <hansmi@google.com> Date: Thu, 8 Sep 2011 18:28:26 +0200 Subject: [PATCH] rlib2: Convert /2/instances/[inst]/rename 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 | 41 +++++++++++++++++++++++------- 2 files changed, 39 insertions(+), 30 deletions(-) diff --git a/lib/rapi/rlib2.py b/lib/rapi/rlib2.py index 5bda4533c..ed9133259 100644 --- a/lib/rapi/rlib2.py +++ b/lib/rapi/rlib2.py @@ -1050,33 +1050,19 @@ class R_2_instances_name_failover(baserlib.OpcodeResource): }) -def _ParseRenameInstanceRequest(name, data): - """Parses a request for renaming an instance. - - @rtype: L{opcodes.OpInstanceRename} - @return: Instance rename opcode - - """ - return baserlib.FillOpcode(opcodes.OpInstanceRename, data, { - "instance_name": name, - }) - - -class R_2_instances_name_rename(baserlib.ResourceBase): +class R_2_instances_name_rename(baserlib.OpcodeResource): """/2/instances/[instance_name]/rename resource. """ - def PUT(self): - """Changes the name of an instance. + PUT_OPCODE = opcodes.OpInstanceRename - @return: a job id + def GetPutOpInput(self): + """Changes the name of an instance. """ - baserlib.CheckType(self.request_body, dict, "Body contents") - - op = _ParseRenameInstanceRequest(self.items[0], self.request_body) - - return self.SubmitJob([op]) + return (self.request_body, { + "instance_name": self.items[0], + }) def _ParseModifyInstanceRequest(name, data): diff --git a/test/ganeti.rapi.rlib2_unittest.py b/test/ganeti.rapi.rlib2_unittest.py index 382b4aee9..de2900328 100755 --- a/test/ganeti.rapi.rlib2_unittest.py +++ b/test/ganeti.rapi.rlib2_unittest.py @@ -804,12 +804,9 @@ class TestInstanceMigrate(testutils.GanetiTestCase): class TestParseRenameInstanceRequest(testutils.GanetiTestCase): - def setUp(self): - testutils.GanetiTestCase.setUp(self) - - self.Parse = rlib2._ParseRenameInstanceRequest - def test(self): + clfactory = _FakeClientFactory(_FakeClient) + name = "instij0eeph7" for new_name in ["ua0aiyoo", "fai3ongi"]: @@ -821,14 +818,28 @@ class TestParseRenameInstanceRequest(testutils.GanetiTestCase): "name_check": name_check, } - op = self.Parse(name, data) - self.assert_(isinstance(op, opcodes.OpInstanceRename)) + handler = _CreateHandler(rlib2.R_2_instances_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.assertTrue(isinstance(op, opcodes.OpInstanceRename)) self.assertEqual(op.instance_name, name) self.assertEqual(op.new_name, new_name) self.assertEqual(op.ip_check, ip_check) self.assertEqual(op.name_check, name_check) + self.assertFalse(hasattr(op, "dry_run")) + self.assertFalse(hasattr(op, "force")) + + self.assertRaises(IndexError, cl.GetNextSubmittedJob) def testDefaults(self): + clfactory = _FakeClientFactory(_FakeClient) + name = "instahchie3t" for new_name in ["thag9mek", "quees7oh"]: @@ -836,12 +847,24 @@ class TestParseRenameInstanceRequest(testutils.GanetiTestCase): "new_name": new_name, } - op = self.Parse(name, data) - self.assert_(isinstance(op, opcodes.OpInstanceRename)) + handler = _CreateHandler(rlib2.R_2_instances_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.assertTrue(isinstance(op, opcodes.OpInstanceRename)) self.assertEqual(op.instance_name, name) self.assertEqual(op.new_name, new_name) self.assertFalse(hasattr(op, "ip_check")) self.assertFalse(hasattr(op, "name_check")) + self.assertFalse(hasattr(op, "dry_run")) + self.assertFalse(hasattr(op, "force")) + + self.assertRaises(IndexError, cl.GetNextSubmittedJob) class TestParseModifyInstanceRequest(testutils.GanetiTestCase): -- GitLab