+class TestParseInstanceReplaceDisksRequest(unittest.TestCase):
+ def setUp(self):
+ self.Parse = rlib2._ParseInstanceReplaceDisksRequest
+
+ def test(self):
+ name = "inst22568"
+
+ for disks in [range(1, 4), "1,2,3", "1, 2, 3"]:
+ data = {
+ "mode": constants.REPLACE_DISK_SEC,
+ "disks": disks,
+ "iallocator": "myalloc",
+ }
+
+ op = self.Parse(name, data)
+ self.assert_(isinstance(op, opcodes.OpInstanceReplaceDisks))
+ self.assertEqual(op.mode, constants.REPLACE_DISK_SEC)
+ self.assertEqual(op.disks, [1, 2, 3])
+ self.assertEqual(op.iallocator, "myalloc")
+
+ def testDefaults(self):
+ name = "inst11413"
+ data = {
+ "mode": constants.REPLACE_DISK_AUTO,
+ }
+
+ op = self.Parse(name, data)
+ self.assert_(isinstance(op, opcodes.OpInstanceReplaceDisks))
+ self.assertEqual(op.mode, constants.REPLACE_DISK_AUTO)
+ self.assertFalse(hasattr(op, "iallocator"))
+ self.assertFalse(hasattr(op, "disks"))
+
+ def testWrong(self):
+ self.assertRaises(http.HttpBadRequest, self.Parse, "inst",
+ { "mode": constants.REPLACE_DISK_AUTO,
+ "disks": "hello world",
+ })
+
+
+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"))
+
+
+class TestParseCreateGroupRequest(unittest.TestCase):
+ def setUp(self):
+ self.Parse = rlib2._ParseCreateGroupRequest
+
+ def test(self):
+ name = "group3618"
+
+ for policy in constants.VALID_ALLOC_POLICIES:
+ data = {
+ "group_name": name,
+ "alloc_policy": policy,
+ }
+
+ op = self.Parse(data, False)
+ self.assert_(isinstance(op, opcodes.OpGroupAdd))
+ self.assertEqual(op.group_name, name)
+ self.assertEqual(op.alloc_policy, policy)
+ self.assertFalse(op.dry_run)
+
+ def testUnknownPolicy(self):
+ data = {
+ "alloc_policy": "_unknown_policy_",
+ }
+
+ self.assertRaises(http.HttpBadRequest, self.Parse, "name", data)
+
+ def testDefaults(self):
+ name = "group15395"
+ data = {
+ "group_name": name,
+ }
+
+ op = self.Parse(data, True)
+ self.assert_(isinstance(op, opcodes.OpGroupAdd))
+ self.assertEqual(op.group_name, name)
+ self.assertFalse(hasattr(op, "alloc_policy"))
+ self.assertTrue(op.dry_run)
+
+ def testLegacyName(self):
+ name = "group29852"
+ data = {
+ "name": name,
+ }
+
+ op = self.Parse(data, True)
+ self.assert_(isinstance(op, opcodes.OpGroupAdd))
+ self.assertEqual(op.group_name, name)
+
+