Revision 6a050007

b/test/ganeti.objects_unittest.py
26 26

  
27 27
from ganeti import constants
28 28
from ganeti import objects
29
from ganeti import errors
29 30

  
30 31
import testutils
31 32

  
......
211 212
    self.assertEqual(objects.OS.GetVariant("debootstrap+default"), "default")
212 213

  
213 214

  
215
class TestInstance(unittest.TestCase):
216
  def _GenericCheck(self, inst):
217
    for i in [inst.all_nodes, inst.secondary_nodes]:
218
      self.assertTrue(isinstance(inst.all_nodes, (list, tuple)),
219
                      msg="Data type doesn't guarantee order")
220

  
221
    self.assertTrue(inst.primary_node not in inst.secondary_nodes)
222
    self.assertEqual(inst.all_nodes[0], inst.primary_node,
223
                     msg="Primary node not first node in list")
224

  
225
  def testNodesNoDisks(self):
226
    inst = objects.Instance(name="fakeinst.example.com",
227
      primary_node="pnode.example.com",
228
      disks=[
229
        ])
230

  
231
    self._GenericCheck(inst)
232
    self.assertEqual(len(inst.secondary_nodes), 0)
233
    self.assertEqual(set(inst.all_nodes), set([inst.primary_node]))
234
    self.assertEqual(inst.MapLVsByNode(), {
235
      inst.primary_node: [],
236
      })
237

  
238
  def testNodesPlainDisks(self):
239
    inst = objects.Instance(name="fakeinstplain.example.com",
240
      primary_node="node3.example.com",
241
      disks=[
242
        objects.Disk(dev_type=constants.LD_LV, size=128,
243
                     logical_id=("myxenvg", "disk25494")),
244
        objects.Disk(dev_type=constants.LD_LV, size=512,
245
                     logical_id=("myxenvg", "disk29071")),
246
        ])
247

  
248
    self._GenericCheck(inst)
249
    self.assertEqual(len(inst.secondary_nodes), 0)
250
    self.assertEqual(set(inst.all_nodes), set([inst.primary_node]))
251
    self.assertEqual(inst.MapLVsByNode(), {
252
      inst.primary_node: ["myxenvg/disk25494", "myxenvg/disk29071"],
253
      })
254

  
255
  def testNodesDrbdDisks(self):
256
    inst = objects.Instance(name="fakeinstdrbd.example.com",
257
      primary_node="node10.example.com",
258
      disks=[
259
        objects.Disk(dev_type=constants.LD_DRBD8, size=786432,
260
          logical_id=("node10.example.com", "node15.example.com",
261
                      12300, 0, 0, "secret"),
262
          children=[
263
            objects.Disk(dev_type=constants.LD_LV, size=786432,
264
                         logical_id=("myxenvg", "disk0")),
265
            objects.Disk(dev_type=constants.LD_LV, size=128,
266
                         logical_id=("myxenvg", "meta0"))
267
          ],
268
          iv_name="disk/0")
269
        ])
270

  
271
    self._GenericCheck(inst)
272
    self.assertEqual(set(inst.secondary_nodes), set(["node15.example.com"]))
273
    self.assertEqual(set(inst.all_nodes),
274
                     set([inst.primary_node, "node15.example.com"]))
275
    self.assertEqual(inst.MapLVsByNode(), {
276
      inst.primary_node: ["myxenvg/disk0", "myxenvg/meta0"],
277
      "node15.example.com": ["myxenvg/disk0", "myxenvg/meta0"],
278
      })
279

  
280
    self.assertEqual(inst.FindDisk(0), inst.disks[0])
281
    self.assertRaises(errors.OpPrereqError, inst.FindDisk, "hello")
282
    self.assertRaises(errors.OpPrereqError, inst.FindDisk, 100)
283
    self.assertRaises(errors.OpPrereqError, inst.FindDisk, 1)
284

  
285

  
214 286
if __name__ == '__main__':
215 287
  testutils.GanetiTestProgram()

Also available in: Unified diff