Test detach/attach sequences with an instance that becomes diskless after detaching its disk and also test detach/attach with drbd disks.
Signed-off-by: Lisa Velden <[email protected]> --- test/py/cmdlib/instance_unittest.py | 53 +++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/test/py/cmdlib/instance_unittest.py b/test/py/cmdlib/instance_unittest.py index e91f4c4..9feafbd 100644 --- a/test/py/cmdlib/instance_unittest.py +++ b/test/py/cmdlib/instance_unittest.py @@ -2906,6 +2906,59 @@ class TestLUInstanceSetParams(CmdlibTestCase): self.ExecOpCode(op) self.assertEqual([disk2, disk1], self.cfg.GetInstanceDisks(inst.uuid)) + def testDetachAndAttachToDisklessInstance(self): + """Check if a disk can be detached and then re-attached if the instance is + diskless inbetween. + + """ + disk = self.cfg.CreateDisk(uuid="mock_uuid_1135", + primary_node=self.master.uuid) + + inst = self.cfg.AddNewInstance(disks=[disk], primary_node=self.master) + + op = self.CopyOpCode(self.op, + instance_name=inst.name, + disks=[[constants.DDM_DETACH, "mock_uuid_1135", {}]]) + + self.ExecOpCode(op) + self.assertEqual([], self.cfg.GetInstanceDisks(inst.uuid)) + + op = self.CopyOpCode(self.op, + instance_name=inst.name, + disks=[[constants.DDM_ATTACH, 0, + { + 'uuid': "mock_uuid_1135" + }]]) + self.ExecOpCode(op) + self.assertEqual([disk], self.cfg.GetInstanceDisks(inst.uuid)) + + def testDetachAttachDrbdDisk(self): + """Check if a DRBD disk can be detached and then re-attached. + + """ + disk = self.cfg.CreateDisk(uuid="mock_uuid_1136", + primary_node=self.master.uuid, + secondary_node=self.snode.uuid, + dev_type=constants.DT_DRBD8) + + inst = self.cfg.AddNewInstance(disks=[disk], primary_node=self.master) + + op = self.CopyOpCode(self.op, + instance_name=inst.name, + disks=[[constants.DDM_DETACH, "mock_uuid_1136", {}]]) + + self.ExecOpCode(op) + self.assertEqual([], self.cfg.GetInstanceDisks(inst.uuid)) + + op = self.CopyOpCode(self.op, + instance_name=inst.name, + disks=[[constants.DDM_ATTACH, 0, + { + 'uuid': "mock_uuid_1136" + }]]) + self.ExecOpCode(op) + self.assertEqual([disk], self.cfg.GetInstanceDisks(inst.uuid)) + def testRemoveDiskRemovesStorageDir(self): inst = self.cfg.AddNewInstance(disks=[self.cfg.CreateDisk(dev_type='file')]) op = self.CopyOpCode(self.op, -- 2.6.0.rc2.230.g3dd15c0
