Revision d2d3935a test/py/ganeti.cli_unittest.py

b/test/py/ganeti.cli_unittest.py
1332 1332
                                     allowed_values=[allowedv])
1333 1333
    self.assertEqual(pol1, exp_pol1)
1334 1334

  
1335
  @staticmethod
1336
  def _ConvertSpecToStrings(spec):
1337
    ret = {}
1338
    for (par, val) in spec.items():
1339
      ret[par] = str(val)
1340
    return ret
1341

  
1342
  def _CheckNewStyleSpecsCall(self, exp_ipolicy, minmax_ispecs, std_ispecs,
1343
                              group_ipolicy, fill_all):
1344
    ipolicy = cli.CreateIPolicyFromOpts(minmax_ispecs=minmax_ispecs,
1345
                                        std_ispecs=std_ispecs,
1346
                                        group_ipolicy=group_ipolicy,
1347
                                        fill_all=fill_all)
1348
    self.assertEqual(ipolicy, exp_ipolicy)
1349

  
1350
  def _TestFullISpecsInner(self, skel_exp_ipol, exp_minmax, exp_std,
1351
                           group_ipolicy, fill_all):
1352
    exp_ipol = skel_exp_ipol.copy()
1353
    if exp_minmax is not None:
1354
      minmax_ispecs = {}
1355
      for (key, spec) in exp_minmax.items():
1356
        minmax_ispecs[key] = self._ConvertSpecToStrings(spec)
1357
      exp_ipol[constants.ISPECS_MINMAX] = exp_minmax
1358
    else:
1359
      minmax_ispecs = None
1360
      if constants.ISPECS_MINMAX not in exp_ipol:
1361
        empty_minmax = dict((k, {}) for k in constants.ISPECS_MINMAX_KEYS)
1362
        exp_ipol[constants.ISPECS_MINMAX] = empty_minmax
1363
    if exp_std is not None:
1364
      std_ispecs = self._ConvertSpecToStrings(exp_std)
1365
      exp_ipol[constants.ISPECS_STD] = exp_std
1366
    else:
1367
      std_ispecs = None
1368
      if constants.ISPECS_STD not in exp_ipol:
1369
        exp_ipol[constants.ISPECS_STD] = {}
1370

  
1371
    self._CheckNewStyleSpecsCall(exp_ipol, minmax_ispecs, std_ispecs,
1372
                                 group_ipolicy, fill_all)
1373
    if minmax_ispecs:
1374
      for (key, spec) in minmax_ispecs.items():
1375
        for par in [constants.ISPEC_MEM_SIZE, constants.ISPEC_DISK_SIZE]:
1376
          if par in spec:
1377
            spec[par] += "m"
1378
            self._CheckNewStyleSpecsCall(exp_ipol, minmax_ispecs, std_ispecs,
1379
                                         group_ipolicy, fill_all)
1380
    if std_ispecs:
1381
      for par in [constants.ISPEC_MEM_SIZE, constants.ISPEC_DISK_SIZE]:
1382
        if par in std_ispecs:
1383
          std_ispecs[par] += "m"
1384
          self._CheckNewStyleSpecsCall(exp_ipol, minmax_ispecs, std_ispecs,
1385
                                       group_ipolicy, fill_all)
1386

  
1387
  def testFullISpecs(self):
1388
    exp_minmax1 = {
1389
      constants.ISPECS_MIN: {
1390
        constants.ISPEC_MEM_SIZE: 512,
1391
        constants.ISPEC_CPU_COUNT: 2,
1392
        constants.ISPEC_DISK_COUNT: 2,
1393
        constants.ISPEC_DISK_SIZE: 512,
1394
        constants.ISPEC_NIC_COUNT: 2,
1395
        constants.ISPEC_SPINDLE_USE: 2,
1396
        },
1397
      constants.ISPECS_MAX: {
1398
        constants.ISPEC_MEM_SIZE: 768*1024,
1399
        constants.ISPEC_CPU_COUNT: 7,
1400
        constants.ISPEC_DISK_COUNT: 6,
1401
        constants.ISPEC_DISK_SIZE: 2048*1024,
1402
        constants.ISPEC_NIC_COUNT: 3,
1403
        constants.ISPEC_SPINDLE_USE: 1,
1404
        },
1405
      }
1406
    exp_std1 = {
1407
      constants.ISPEC_MEM_SIZE: 768*1024,
1408
      constants.ISPEC_CPU_COUNT: 7,
1409
      constants.ISPEC_DISK_COUNT: 6,
1410
      constants.ISPEC_DISK_SIZE: 2048*1024,
1411
      constants.ISPEC_NIC_COUNT: 3,
1412
      constants.ISPEC_SPINDLE_USE: 1,
1413
      }
1414
    for fill_all in [False, True]:
1415
      if fill_all:
1416
        skel_ipolicy = constants.IPOLICY_DEFAULTS
1417
      else:
1418
        skel_ipolicy = {}
1419
      self._TestFullISpecsInner(skel_ipolicy, exp_minmax1, exp_std1,
1420
                                False, fill_all)
1421
      self._TestFullISpecsInner(skel_ipolicy, None, exp_std1,
1422
                                False, fill_all)
1423
      self._TestFullISpecsInner(skel_ipolicy, exp_minmax1, None,
1424
                                False, fill_all)
1335 1425

  
1336 1426
if __name__ == "__main__":
1337 1427
  testutils.GanetiTestProgram()

Also available in: Unified diff