Fix the unittest that have been broken when we lifted the Disk objects from the Instances.
Signed-off-by: Ilias Tsitsimpis <[email protected]> --- test/data/instance-disks.txt | 66 +--------------------------- test/hs/Test/Ganeti/Objects.hs | 2 +- test/py/cmdlib/cluster_unittest.py | 16 ++++--- test/py/cmdlib/cmdlib_unittest.py | 13 +++--- test/py/cmdlib/instance_unittest.py | 72 ++++++++++++++++++------------- test/py/cmdlib/testsupport/config_mock.py | 7 ++- test/py/ganeti.config_unittest.py | 25 ++++++----- test/py/ganeti.rpc_unittest.py | 26 ++++++++--- 8 files changed, 102 insertions(+), 125 deletions(-) diff --git a/test/data/instance-disks.txt b/test/data/instance-disks.txt index 67568c2..51cf1a1 100644 --- a/test/data/instance-disks.txt +++ b/test/data/instance-disks.txt @@ -2,71 +2,7 @@ "beparams": {}, "ctime": 1372838883.9710441, "disk_template": "drbd", - "disks": [ - { - "children": [ - { - "dev_type": "plain", - "logical_id": [ - "xenvg", - "df9ff3f6-a833-48ff-8bd5-bff2eaeab759.disk0_data" - ], - "params": {}, - "physical_id": [ - "xenvg", - "df9ff3f6-a833-48ff-8bd5-bff2eaeab759.disk0_data" - ], - "size": 1024, - "uuid": "eaff6322-1bfb-4d59-b306-4535730917cc", - "serial_no": 1, - "ctime": 1372838946.2599809, - "mtime": 1372838946.2599809 - }, - { - "dev_type": "plain", - "logical_id": [ - "xenvg", - "df9ff3f6-a833-48ff-8bd5-bff2eaeab759.disk0_meta" - ], - "params": {}, - "physical_id": [ - "xenvg", - "df9ff3f6-a833-48ff-8bd5-bff2eaeab759.disk0_meta" - ], - "size": 128, - "uuid": "bf512e95-2a49-4cb3-8d1f-30a503f6bf1b", - "serial_no": 1, - "ctime": 1372838946.2599809, - "mtime": 1372838946.2599809 - } - ], - "dev_type": "drbd", - "iv_name": "disk/0", - "logical_id": [ - "60e687a0-21fc-4577-997f-ccd08925fa65", - "c739c7f3-79d8-4e20-ac68-662e16577d2e", - 11000, - 0, - 0, - "9bdb15fb7ab6bb4610a313d654ed4d0d2433713e" - ], - "mode": "rw", - "params": {}, - "physical_id": [ - "172.16.241.3", - 11000, - "172.16.241.2", - 11000, - 0, - "9bdb15fb7ab6bb4610a313d654ed4d0d2433713e" - ], - "size": 1024, - "uuid": "5d61e205-bf89-4ba8-a319-589b7bb7419e", - "serial_no": 1, - "ctime": 1372838946.2599809, - "mtime": 1372838946.2599809 - } - ], + "disks": ["5d61e205-bf89-4ba8-a319-589b7bb7419e"], "disks_active": true, "hvparams": {}, "hypervisor": "xen-pvm", diff --git a/test/hs/Test/Ganeti/Objects.hs b/test/hs/Test/Ganeti/Objects.hs index 8653fc5..0eefca9 100644 --- a/test/hs/Test/Ganeti/Objects.hs +++ b/test/hs/Test/Ganeti/Objects.hs @@ -132,7 +132,7 @@ instance Arbitrary Instance where -- nics <*> arbitrary -- disks - <*> vectorOf 5 genDisk + <*> vectorOf 5 arbitrary -- disk template <*> arbitrary -- disks active diff --git a/test/py/cmdlib/cluster_unittest.py b/test/py/cmdlib/cluster_unittest.py index 1de19da..f647682 100644 --- a/test/py/cmdlib/cluster_unittest.py +++ b/test/py/cmdlib/cluster_unittest.py @@ -1550,22 +1550,25 @@ class TestLUClusterVerifyGroupVerifyInstance(TestLUClusterVerifyGroupMethods): self.master_img.volumes = ["/".join(disk.logical_id) for inst in [self.running_inst, self.diskless_inst] - for disk in inst.disks] + for disk in + self.cfg.GetInstanceDisks(inst)] + drbd_inst_disks = self.cfg.GetInstanceDisks(self.drbd_inst) self.master_img.volumes.extend( - ["/".join(disk.logical_id) for disk in self.drbd_inst.disks[0].children]) + ["/".join(disk.logical_id) for disk in drbd_inst_disks[0].children]) self.master_img.instances = [self.running_inst.uuid] self.node1_img = \ cluster.LUClusterVerifyGroup.NodeImage(uuid=self.node1.uuid) self.node1_img.volumes = \ - ["/".join(disk.logical_id) for disk in self.drbd_inst.disks[0].children] + ["/".join(disk.logical_id) for disk in drbd_inst_disks[0].children] self.node_imgs = { self.master_uuid: self.master_img, self.node1.uuid: self.node1_img } + running_inst_disks = self.cfg.GetInstanceDisks(self.running_inst) self.diskstatus = { self.master_uuid: [ (True, objects.BlockDevStatus(ldisk_status=constants.LDS_OKAY)) - for _ in self.running_inst.disks + for _ in running_inst_disks ] } @@ -1633,7 +1636,10 @@ class TestLUClusterVerifyGroupVerifyInstance(TestLUClusterVerifyGroupMethods): @withLockedLU def testExclusiveStorageWithValidInstance(self, lu): self.master.ndparams[constants.ND_EXCLUSIVE_STORAGE] = True - self.running_inst.disks[0].spindles = 1 + running_inst_disks = self.cfg.GetInstanceDisks(self.running_inst) + running_inst_disks[0].spindles = 1 + feedback_fn = lambda _: None + self.cfg.Update(running_inst_disks[0], feedback_fn) lu._VerifyInstance(self.running_inst, self.node_imgs, self.diskstatus) self.mcpu.assertLogIsEmpty() diff --git a/test/py/cmdlib/cmdlib_unittest.py b/test/py/cmdlib/cmdlib_unittest.py index caf73f7..48916f1 100755 --- a/test/py/cmdlib/cmdlib_unittest.py +++ b/test/py/cmdlib/cmdlib_unittest.py @@ -591,6 +591,10 @@ class _FakeConfigForComputeIPolicyInstanceViolation: def GetInstanceNodes(self, instance): return tuple(instance.primary_node) + def GetInstanceDisks(self, _): + disks = [objects.Disk(size=512, spindles=13, uuid="disk_uuid")] + return disks + class TestComputeIPolicyInstanceViolation(unittest.TestCase): def test(self): @@ -599,18 +603,17 @@ class TestComputeIPolicyInstanceViolation(unittest.TestCase): constants.BE_VCPUS: 2, constants.BE_SPINDLE_USE: 4, } - disks = [objects.Disk(size=512, spindles=13)] cfg = _FakeConfigForComputeIPolicyInstanceViolation(beparams, False) - instance = objects.Instance(beparams=beparams, disks=disks, nics=[], - primary_node="pnode_uuid", + instance = objects.Instance(beparams=beparams, disks=["disk_uuid"], + nics=[], primary_node="pnode_uuid", disk_template=constants.DT_PLAIN) stub = _StubComputeIPolicySpecViolation(2048, 2, 1, 0, [512], 4, constants.DT_PLAIN) ret = common.ComputeIPolicyInstanceViolation(NotImplemented, instance, cfg, _compute_fn=stub) self.assertEqual(ret, []) - instance2 = objects.Instance(beparams={}, disks=disks, nics=[], - primary_node="pnode_uuid", + instance2 = objects.Instance(beparams={}, disks=["disk_uuid"], + nics=[], primary_node="pnode_uuid", disk_template=constants.DT_PLAIN) ret = common.ComputeIPolicyInstanceViolation(NotImplemented, instance2, cfg, _compute_fn=stub) diff --git a/test/py/cmdlib/instance_unittest.py b/test/py/cmdlib/instance_unittest.py index 67be24b..9deabcf 100644 --- a/test/py/cmdlib/instance_unittest.py +++ b/test/py/cmdlib/instance_unittest.py @@ -32,6 +32,7 @@ import operator from ganeti import backend from ganeti import compat +from ganeti import config from ganeti import constants from ganeti import errors from ganeti import ht @@ -1054,7 +1055,7 @@ class TestGenerateDiskTemplate(CmdlibTestCase): self.assertTrue(disk.children is None) self._CheckIvNames(result, base_index, base_index + len(disk_info)) - instance._UpdateIvNames(base_index, result) + config._UpdateIvNames(base_index, result) self._CheckIvNames(result, base_index, base_index + len(disk_info)) return result @@ -1220,7 +1221,7 @@ class TestGenerateDiskTemplate(CmdlibTestCase): self.assertEqual(disk.children[1].size, constants.DRBD_META_SIZE) self._CheckIvNames(result, 0, len(disk_info)) - instance._UpdateIvNames(0, result) + config._UpdateIvNames(0, result) self._CheckIvNames(result, 0, len(disk_info)) self.assertEqual(map(operator.attrgetter("logical_id"), result), [ @@ -1238,7 +1239,8 @@ class _DiskPauseTracker: self.history = [] def __call__(self, (disks, instance), pause): - assert not (set(disks) - set(instance.disks)) + disk_uuids = [d.uuid for d in disks] + assert not (set(disk_uuids) - set(instance.disks)) self.history.extend((i.logical_id, i.size, pause) for i in disks) @@ -1247,13 +1249,17 @@ class _DiskPauseTracker: class _ConfigForDiskWipe: - def __init__(self, exp_node_uuid): + def __init__(self, exp_node_uuid, disks): self._exp_node_uuid = exp_node_uuid + self._disks = disks def GetNodeName(self, node_uuid): assert node_uuid == self._exp_node_uuid return "name.of.expected.node" + def GetInstanceDisks(self, _): + return self._disks + class _RpcForDiskWipe: def __init__(self, exp_node, pause_cb, wipe_cb): @@ -1311,20 +1317,20 @@ class TestWipeDisks(unittest.TestCase): def testPauseFailure(self): node_name = "node1372.example.com" - lu = _FakeLU(rpc=_RpcForDiskWipe(node_name, self._FailingPauseCb, - NotImplemented), - cfg=_ConfigForDiskWipe(node_name)) - disks = [ - objects.Disk(dev_type=constants.DT_PLAIN), - objects.Disk(dev_type=constants.DT_PLAIN), - objects.Disk(dev_type=constants.DT_PLAIN), + objects.Disk(dev_type=constants.DT_PLAIN, uuid="disk0"), + objects.Disk(dev_type=constants.DT_PLAIN, uuid="disk1"), + objects.Disk(dev_type=constants.DT_PLAIN, uuid="disk2"), ] + lu = _FakeLU(rpc=_RpcForDiskWipe(node_name, self._FailingPauseCb, + NotImplemented), + cfg=_ConfigForDiskWipe(node_name, disks)) + inst = objects.Instance(name="inst21201", primary_node=node_name, disk_template=constants.DT_PLAIN, - disks=disks) + disks=[d.uuid for d in disks]) self.assertRaises(errors.OpExecError, instance.WipeDisks, lu, inst) @@ -1337,21 +1343,22 @@ class TestWipeDisks(unittest.TestCase): node_uuid = "node13445-uuid" pt = _DiskPauseTracker() - lu = _FakeLU(rpc=_RpcForDiskWipe(node_uuid, pt, self._FailingWipeCb), - cfg=_ConfigForDiskWipe(node_uuid)) - disks = [ objects.Disk(dev_type=constants.DT_PLAIN, logical_id="disk0", - size=100 * 1024), + size=100 * 1024, uuid="disk0"), objects.Disk(dev_type=constants.DT_PLAIN, logical_id="disk1", - size=500 * 1024), - objects.Disk(dev_type=constants.DT_PLAIN, logical_id="disk2", size=256), + size=500 * 1024, uuid="disk1"), + objects.Disk(dev_type=constants.DT_PLAIN, logical_id="disk2", + size=256, uuid="disk2"), ] + lu = _FakeLU(rpc=_RpcForDiskWipe(node_uuid, pt, self._FailingWipeCb), + cfg=_ConfigForDiskWipe(node_uuid, disks)) + inst = objects.Instance(name="inst562", primary_node=node_uuid, disk_template=constants.DT_PLAIN, - disks=disks) + disks=[d.uuid for d in disks]) try: instance.WipeDisks(lu, inst) @@ -1376,23 +1383,25 @@ class TestWipeDisks(unittest.TestCase): progresst = _DiskWipeProgressTracker(start_offset) lu = _FakeLU(rpc=_RpcForDiskWipe(node_name, pauset, progresst), - cfg=_ConfigForDiskWipe(node_name)) + cfg=_ConfigForDiskWipe(node_name, disks)) instance = objects.Instance(name="inst3560", primary_node=node_name, disk_template=constants.DT_PLAIN, - disks=disks) + disks=[d.uuid for d in disks]) return (lu, instance, pauset, progresst) def testNormalWipe(self): disks = [ - objects.Disk(dev_type=constants.DT_PLAIN, logical_id="disk0", size=1024), + objects.Disk(dev_type=constants.DT_PLAIN, logical_id="disk0", + size=1024, uuid="disk0"), objects.Disk(dev_type=constants.DT_PLAIN, logical_id="disk1", - size=500 * 1024), - objects.Disk(dev_type=constants.DT_PLAIN, logical_id="disk2", size=128), + size=500 * 1024, uuid="disk1"), + objects.Disk(dev_type=constants.DT_PLAIN, logical_id="disk2", + size=128, uuid="disk2"), objects.Disk(dev_type=constants.DT_PLAIN, logical_id="disk3", - size=constants.MAX_WIPE_CHUNK), + size=constants.MAX_WIPE_CHUNK, uuid="disk3"), ] (lu, inst, pauset, progresst) = self._PrepareWipeTest(0, disks) @@ -1418,9 +1427,9 @@ class TestWipeDisks(unittest.TestCase): for start_offset in [0, 280, 8895, 1563204]: disks = [ objects.Disk(dev_type=constants.DT_PLAIN, logical_id="disk0", - size=128), + size=128, uuid="disk0"), objects.Disk(dev_type=constants.DT_PLAIN, logical_id="disk1", - size=start_offset + (100 * 1024)), + size=start_offset + (100 * 1024), uuid="disk1"), ] (lu, inst, pauset, progresst) = \ @@ -2325,9 +2334,12 @@ class TestLUInstanceSetParams(CmdlibTestCase): self.ExecOpCode(op) def testConvertDRBDToPlain(self): - self.inst.disks = [self.cfg.CreateDisk(dev_type=constants.DT_DRBD8, - primary_node=self.master, - secondary_node=self.snode)] + for disk in list(self.inst.disks): + self.cfg.RemoveInstDisk(self.inst, disk) + disk = self.cfg.CreateDisk(dev_type=constants.DT_DRBD8, + primary_node=self.master, + secondary_node=self.snode) + self.cfg.AddInstDisk(self.inst, disk) self.inst.disk_template = constants.DT_DRBD8 self.rpc.call_blockdev_shutdown.return_value = \ self.RpcResultsBuilder() \ diff --git a/test/py/cmdlib/testsupport/config_mock.py b/test/py/cmdlib/testsupport/config_mock.py index b91b329..c91d27c 100644 --- a/test/py/cmdlib/testsupport/config_mock.py +++ b/test/py/cmdlib/testsupport/config_mock.py @@ -258,11 +258,13 @@ class ConfigMock(config.ConfigWriter): osparams_private=osparams_private, admin_state=admin_state, nics=nics, - disks=disks, + disks=[], disk_template=disk_template, disks_active=disks_active, network_port=network_port) self.AddInstance(inst, None) + for disk in disks: + self.AddInstDisk(inst, disk) return inst def AddNewNetwork(self, @@ -552,7 +554,8 @@ class ConfigMock(config.ConfigWriter): nodegroups={}, nodes={}, instances={}, - networks={}) + networks={}, + disks={}) master_node_uuid = self._GetUuid() diff --git a/test/py/ganeti.config_unittest.py b/test/py/ganeti.config_unittest.py index a231185..4c54623 100755 --- a/test/py/ganeti.config_unittest.py +++ b/test/py/ganeti.config_unittest.py @@ -36,7 +36,6 @@ from ganeti import utils from ganeti import netutils from ganeti import compat from ganeti import serializer -from ganeti.cmdlib import instance from ganeti.config import TemporaryReservationManager @@ -157,12 +156,15 @@ class TestConfigRunner(unittest.TestCase): inst = self._create_instance(cfg) disks = [ objects.Disk(dev_type=constants.DT_PLAIN, size=128, - logical_id=("myxenvg", "disk25494")), + logical_id=("myxenvg", "disk25494"), + uuid="disk0"), objects.Disk(dev_type=constants.DT_PLAIN, size=512, - logical_id=("myxenvg", "disk29071")), + logical_id=("myxenvg", "disk29071"), + uuid="disk1"), ] - inst.disks = disks cfg.AddInstance(inst, "my-job") + for disk in disks: + cfg.AddInstDisk(inst, disk) # Plain disks all_nodes = cfg.GetInstanceNodes(inst) @@ -191,14 +193,17 @@ class TestConfigRunner(unittest.TestCase): 12300, 0, 0, "secret"), children=[ objects.Disk(dev_type=constants.DT_PLAIN, size=786432, - logical_id=("myxenvg", "disk0")), + logical_id=("myxenvg", "disk0"), + uuid="data0"), objects.Disk(dev_type=constants.DT_PLAIN, size=128, - logical_id=("myxenvg", "meta0")) + logical_id=("myxenvg", "meta0"), + uuid="meta0") ], - iv_name="disk/0") + iv_name="disk/0", uuid="disk0") ] - inst.disks = disks cfg.AddInstance(inst, "my-job") + for disk in disks: + cfg.AddInstDisk(inst, disk) # Drbd Disks all_nodes = cfg.GetInstanceNodes(inst) @@ -614,7 +619,7 @@ class TestCheckInstanceDiskIvNames(unittest.TestCase): def testNoError(self): disks = self._MakeDisks(["disk/0", "disk/1"]) self.assertEqual(config._CheckInstanceDiskIvNames(disks), []) - instance._UpdateIvNames(0, disks) + config._UpdateIvNames(0, disks) self.assertEqual(config._CheckInstanceDiskIvNames(disks), []) def testWrongNames(self): @@ -625,7 +630,7 @@ class TestCheckInstanceDiskIvNames(unittest.TestCase): ]) # Fix names - instance._UpdateIvNames(0, disks) + config._UpdateIvNames(0, disks) self.assertEqual(config._CheckInstanceDiskIvNames(disks), []) diff --git a/test/py/ganeti.rpc_unittest.py b/test/py/ganeti.rpc_unittest.py index 82cf05c..b7e56c5 100755 --- a/test/py/ganeti.rpc_unittest.py +++ b/test/py/ganeti.rpc_unittest.py @@ -716,6 +716,16 @@ class _FakeConfigForRpcRunner: def __init__(self, cluster=NotImplemented): self._cluster = cluster + self._disks = [ + objects.Disk(dev_type=constants.DT_PLAIN, size=4096, + logical_id=("vg", "disk6120"), + uuid="disk_uuid_1"), + objects.Disk(dev_type=constants.DT_PLAIN, size=1024, + logical_id=("vg", "disk8508"), + uuid="disk_uuid_2"), + ] + for disk in self._disks: + disk.UpgradeConfig() def GetNodeInfo(self, name): return objects.Node(name=name) @@ -732,6 +742,9 @@ class _FakeConfigForRpcRunner: def GetInstanceSecondaryNodes(self, _): return [] + def GetInstanceDisks(self, _): + return self._disks + class TestRpcRunner(unittest.TestCase): def testUploadFile(self): @@ -813,12 +826,8 @@ class TestRpcRunner(unittest.TestCase): }), ], disk_template=constants.DT_PLAIN, - disks=[ - objects.Disk(dev_type=constants.DT_PLAIN, size=4096, - logical_id=("vg", "disk6120")), - objects.Disk(dev_type=constants.DT_PLAIN, size=1024, - logical_id=("vg", "disk8508")), - ]) + disks=["disk_uuid_1", "disk_uuid_2"] + ) inst.UpgradeConfig() cfg = _FakeConfigForRpcRunner(cluster=cluster) @@ -898,6 +907,7 @@ class TestRpcRunner(unittest.TestCase): "logical_id": ("vg", "disk6120"), "params": constants.DISK_DT_DEFAULTS[inst.disk_template], "serial_no": 1, + "uuid": "disk_uuid_1", }, { "dev_type": constants.DT_PLAIN, "dynamic_params": {}, @@ -905,9 +915,11 @@ class TestRpcRunner(unittest.TestCase): "logical_id": ("vg", "disk8508"), "params": constants.DISK_DT_DEFAULTS[inst.disk_template], "serial_no": 1, + "uuid": "disk_uuid_2", }]) - self.assertTrue(compat.all(disk.params == {} for disk in inst.disks), + inst_disks = cfg.GetInstanceDisks(inst) + self.assertTrue(compat.all(disk.params == {} for disk in inst_disks), msg="Configuration objects were modified") -- 1.9.1
