diff --git a/lib/rapi/rlib2.py b/lib/rapi/rlib2.py index 41ea45b96257dcb10f58b069ca9acc16c06de77e..373754b24b8036fa9f5879aa90125865e5d94ad4 100644 --- a/lib/rapi/rlib2.py +++ b/lib/rapi/rlib2.py @@ -986,23 +986,20 @@ class R_2_instances_name_deactivate_disks(baserlib.OpcodeResource): }) -class R_2_instances_name_prepare_export(baserlib.ResourceBase): +class R_2_instances_name_prepare_export(baserlib.OpcodeResource): """/2/instances/[instance_name]/prepare-export resource. """ - def PUT(self): - """Prepares an export for an instance. + PUT_OPCODE = opcodes.OpBackupPrepare - @return: a job id + def GetPutOpInput(self): + """Prepares an export for an instance. """ - instance_name = self.items[0] - mode = self._checkStringVariable("mode") - - op = opcodes.OpBackupPrepare(instance_name=instance_name, - mode=mode) - - return self.SubmitJob([op]) + return ({}, { + "instance_name": self.items[0], + "mode": self._checkStringVariable("mode"), + }) def _ParseExportInstanceRequest(name, data): diff --git a/test/ganeti.rapi.rlib2_unittest.py b/test/ganeti.rapi.rlib2_unittest.py index 19d260a54fad99d69dca7d0261096b1812089e8b..9801bb34a2dc0c28da56875fc5a8df819418c5ed 100755 --- a/test/ganeti.rapi.rlib2_unittest.py +++ b/test/ganeti.rapi.rlib2_unittest.py @@ -446,6 +446,30 @@ class TestInstanceDeactivateDisks(unittest.TestCase): self.assertRaises(IndexError, cl.GetNextSubmittedJob) +class TestBackupPrepare(unittest.TestCase): + def test(self): + clfactory = _FakeClientFactory(_FakeClient) + queryargs = { + "mode": constants.EXPORT_MODE_REMOTE, + } + handler = _CreateHandler(rlib2.R_2_instances_name_prepare_export, + ["inst17925"], queryargs, {}, 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.OpBackupPrepare)) + self.assertEqual(op.instance_name, "inst17925") + self.assertEqual(op.mode, constants.EXPORT_MODE_REMOTE) + self.assertFalse(hasattr(op, "dry_run")) + self.assertFalse(hasattr(op, "force")) + + self.assertRaises(IndexError, cl.GetNextSubmittedJob) + + class TestParseInstanceCreateRequestVersion1(testutils.GanetiTestCase): def setUp(self): testutils.GanetiTestCase.setUp(self)