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

Reply via email to