diff --git a/lib/rapi/rlib2.py b/lib/rapi/rlib2.py index 5bda4533cebb49be8826aae9902fcd489ea3c62e..ed913325985db8973211dc3f1f76fa65f75ab73c 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 382b4aee9581daa3fb0d5536e530ff87287b4fbd..de29003287eff523cefc30946f06add0e5c1bc3f 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):