"""Converts an instance from drbd to plain.
"""
- assert len(self.instance.secondary_nodes) == 1
assert self.instance.disk_template == constants.DT_DRBD8
+ assert len(self.instance.secondary_nodes) == 1 or not self.instance.disks
pnode_uuid = self.instance.primary_node
- snode_uuid = self.instance.secondary_nodes[0]
+
+ # it will not be possible to calculate the snode_uuid later
+ snode_uuid = None
+ if self.instance.secondary_nodes:
+ snode_uuid = self.instance.secondary_nodes[0]
+
feedback_fn("Converting template to plain")
old_disks = AnnotateDiskParams(self.instance, self.instance.disks, self.cfg)
disk_template=constants.DT_PLAIN)
self.ExecOpCode(op)
+ def testConvertDisklessDRBDToPlain(self):
+ self.cfg.SetIPolicyField(
+ constants.ISPECS_MIN, constants.ISPEC_DISK_COUNT, 0)
+ self.inst.disks = []
+ self.inst.disk_template = constants.DT_DRBD8
+
+ op = self.CopyOpCode(self.op,
+ disk_template=constants.DT_PLAIN)
+ self.ExecOpCode(op)
+
+ self.assertEqual(self.inst.disk_template, constants.DT_PLAIN)
+
+ def testConvertDisklessPlainToDRBD(self):
+ self.cfg.SetIPolicyField(
+ constants.ISPECS_MIN, constants.ISPEC_DISK_COUNT, 0)
+ self.inst.disks = []
+ self.inst.disk_template = constants.DT_PLAIN
+
+ op = self.CopyOpCode(self.op,
+ disk_template=constants.DT_DRBD8,
+ remote_node=self.snode.name)
+ self.ExecOpCode(op)
+
+ self.assertEqual(self.inst.disk_template, constants.DT_DRBD8)
class TestLUInstanceChangeGroup(CmdlibTestCase):
def setUp(self):