rlib2: Convert /2/groups/[group_name] to OpcodeResource
authorMichael Hanselmann <hansmi@google.com>
Fri, 9 Sep 2011 08:50:15 +0000 (10:50 +0200)
committerMichael Hanselmann <hansmi@google.com>
Fri, 9 Sep 2011 15:04:46 +0000 (17:04 +0200)
Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: RenĂ© Nussbaumer <rn@google.com>

lib/rapi/rlib2.py
test/ganeti.rapi.rlib2_unittest.py

index 44cbc85..c7cb21d 100644 (file)
@@ -605,10 +605,12 @@ class R_2_groups(baserlib.OpcodeResource):
                                    uri_fields=("name", "uri"))
 
 
-class R_2_groups_name(baserlib.ResourceBase):
+class R_2_groups_name(baserlib.OpcodeResource):
   """/2/groups/[group_name] resource.
 
   """
+  DELETE_OPCODE = opcodes.OpGroupRemove
+
   def GET(self):
     """Send information about a node group.
 
@@ -622,14 +624,15 @@ class R_2_groups_name(baserlib.ResourceBase):
 
     return baserlib.MapFields(G_FIELDS, result[0])
 
-  def DELETE(self):
+  def GetDeleteOpInput(self):
     """Delete a node group.
 
     """
-    op = opcodes.OpGroupRemove(group_name=self.items[0],
-                               dry_run=bool(self.dryRun()))
-
-    return self.SubmitJob([op])
+    assert len(self.items) == 1
+    return ({}, {
+      "group_name": self.items[0],
+      "dry_run": self.dryRun(),
+      })
 
 
 class R_2_groups_name_modify(baserlib.OpcodeResource):
index 9976763..4a19127 100755 (executable)
@@ -515,6 +515,26 @@ class TestBackupPrepare(unittest.TestCase):
     self.assertRaises(IndexError, cl.GetNextSubmittedJob)
 
 
+class TestGroupRemove(unittest.TestCase):
+  def test(self):
+    clfactory = _FakeClientFactory(_FakeClient)
+    handler = _CreateHandler(rlib2.R_2_groups_name,
+                             ["grp28575"], {}, {}, clfactory)
+    job_id = handler.DELETE()
+
+    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.OpGroupRemove))
+    self.assertEqual(op.group_name, "grp28575")
+    self.assertFalse(op.dry_run)
+    self.assertFalse(hasattr(op, "force"))
+
+    self.assertRaises(IndexError, cl.GetNextSubmittedJob)
+
+
 class TestParseInstanceCreateRequestVersion1(testutils.GanetiTestCase):
   def setUp(self):
     testutils.GanetiTestCase.setUp(self)