---
lib/rapi/rlib2.py | 12 +++++-------
test/ganeti.rapi.rlib2_unittest.py | 25 +++++++++++++++++++++++++
2 files changed, 30 insertions(+), 7 deletions(-)
diff --git a/lib/rapi/rlib2.py b/lib/rapi/rlib2.py
index 167abe3..fdb15c5 100644
--- a/lib/rapi/rlib2.py
+++ b/lib/rapi/rlib2.py
@@ -1080,23 +1080,21 @@ class
R_2_instances_name_modify(baserlib.OpcodeResource):
})
-class R_2_instances_name_disk_grow(baserlib.ResourceBase):
+class R_2_instances_name_disk_grow(baserlib.OpcodeResource):
"""/2/instances/[instance_name]/disk/[disk_index]/grow resource.
"""
- def POST(self):
- """Increases the size of an instance disk.
+ POST_OPCODE = opcodes.OpInstanceGrowDisk
- @return: a job id
+ def GetPostOpInput(self):
+ """Increases the size of an instance disk.
"""
- op = baserlib.FillOpcode(opcodes.OpInstanceGrowDisk, self.request_body, {
+ return (self.request_body, {
"instance_name": self.items[0],
"disk": int(self.items[1]),
})
- return self.SubmitJob([op])
-
class R_2_instances_name_console(baserlib.ResourceBase):
"""/2/instances/[instance_name]/console resource.
diff --git a/test/ganeti.rapi.rlib2_unittest.py
b/test/ganeti.rapi.rlib2_unittest.py
index 2fe0511..3bb154f 100755
--- a/test/ganeti.rapi.rlib2_unittest.py
+++ b/test/ganeti.rapi.rlib2_unittest.py
@@ -466,6 +466,31 @@ class TestInstanceFailover(unittest.TestCase):
self.assertRaises(IndexError, cl.GetNextSubmittedJob)
+class TestInstanceDiskGrow(unittest.TestCase):
+ def test(self):
+ clfactory = _FakeClientFactory(_FakeClient)
+ data = {
+ "amount": 1024,
+ }
+ handler = _CreateHandler(rlib2.R_2_instances_name_disk_grow,
+ ["inst10742", "3"], {}, data, clfactory)
+ job_id = handler.POST()
+
+ 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.OpInstanceGrowDisk))
+ self.assertEqual(op.instance_name, "inst10742")
+ self.assertEqual(op.disk, 3)
+ self.assertEqual(op.amount, 1024)
+ 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)
--
1.7.6