---
 doc/rapi.rst                       |    4 ++--
 lib/rapi/rlib2.py                  |    6 ++++--
 test/ganeti.rapi.rlib2_unittest.py |   34 ++++++++++++++++++++++++++++++++++
 3 files changed, 40 insertions(+), 4 deletions(-)

diff --git a/doc/rapi.rst b/doc/rapi.rst
index 97a7b73..da70366 100644
--- a/doc/rapi.rst
+++ b/doc/rapi.rst
@@ -451,8 +451,8 @@ Returns a job ID.
 
 Body parameters:
 
-``alloc_policy`` (string)
-  If present, the new allocation policy for the node group.
+.. opcode_params:: OP_GROUP_SET_PARAMS
+   :exclude: group_name
 
 
 ``/2/groups/[group_name]/rename``
diff --git a/lib/rapi/rlib2.py b/lib/rapi/rlib2.py
index 4f335c2..e70044b 100644
--- a/lib/rapi/rlib2.py
+++ b/lib/rapi/rlib2.py
@@ -628,8 +628,10 @@ def _ParseModifyGroupRequest(name, data):
   @return: Group modify opcode
 
   """
-  alloc_policy = baserlib.CheckParameter(data, "alloc_policy", default=None)
-  return opcodes.OpGroupSetParams(group_name=name, alloc_policy=alloc_policy)
+  return baserlib.FillOpcode(opcodes.OpGroupSetParams, data, {
+    "group_name": name,
+    })
+
 
 
 class R_2_groups_name_modify(baserlib.R_Generic):
diff --git a/test/ganeti.rapi.rlib2_unittest.py 
b/test/ganeti.rapi.rlib2_unittest.py
index 395a919..6246f37 100755
--- a/test/ganeti.rapi.rlib2_unittest.py
+++ b/test/ganeti.rapi.rlib2_unittest.py
@@ -476,5 +476,39 @@ class 
TestParseInstanceReplaceDisksRequest(unittest.TestCase):
                       })
 
 
+class TestParseModifyGroupRequest(unittest.TestCase):
+  def setUp(self):
+    self.Parse = rlib2._ParseModifyGroupRequest
+
+  def test(self):
+    name = "group6002"
+
+    for policy in constants.VALID_ALLOC_POLICIES:
+      data = {
+        "alloc_policy": policy,
+        }
+
+      op = self.Parse(name, data)
+      self.assert_(isinstance(op, opcodes.OpGroupSetParams))
+      self.assertEqual(op.group_name, name)
+      self.assertEqual(op.alloc_policy, policy)
+
+  def testUnknownPolicy(self):
+    data = {
+      "alloc_policy": "_unknown_policy_",
+      }
+
+    self.assertRaises(http.HttpBadRequest, self.Parse, "name", data)
+
+  def testDefaults(self):
+    name = "group6679"
+    data = {}
+
+    op = self.Parse(name, data)
+    self.assert_(isinstance(op, opcodes.OpGroupSetParams))
+    self.assertEqual(op.group_name, name)
+    self.assertFalse(hasattr(op, "alloc_policy"))
+
+
 if __name__ == '__main__':
   testutils.GanetiTestProgram()
-- 
1.7.3.5

Reply via email to