import unittest
import os
-import time
import tempfile
-import os.path
-import socket
import operator
-import itertools
from ganeti import bootstrap
from ganeti import config
from ganeti import utils
from ganeti import netutils
from ganeti import compat
-from ganeti import cmdlib
+from ganeti.cmdlib import instance
from ganeti.config import TemporaryReservationManager
cluster_config = objects.Cluster(
serial_no=1,
rsahostkeypub="",
+ dsahostkeypub="",
highest_used_port=(constants.FIRST_DRBD_PORT - 1),
mac_prefix="aa:00:00",
volume_group_name="xenvg",
# depending on the owner (cluster or group)
if isgroup:
errs = cfg.VerifyConfig()
- # FIXME: A bug in FillIPolicy (issue 401) makes this test fail, so we
- # invert the assertions for the time being
- self.assertFalse(len(errs) >= 1)
+ self.assertTrue(len(errs) >= 1)
errstr = "%s has invalid instance policy" % ipowner
- self.assertFalse(_IsErrorInList(errstr, errs))
+ self.assertTrue(_IsErrorInList(errstr, errs))
else:
self.assertRaises(AssertionError, cfg.VerifyConfig)
del ipolicy[INVALID_KEY]
else:
del ipolicy[key]
- ispeclist = [
- (ipolicy[constants.ISPECS_MINMAX][constants.ISPECS_MIN],
- "%s/%s" % (constants.ISPECS_MINMAX, constants.ISPECS_MIN)),
- (ipolicy[constants.ISPECS_MINMAX][constants.ISPECS_MAX],
- "%s/%s" % (constants.ISPECS_MINMAX, constants.ISPECS_MAX)),
- (ipolicy[constants.ISPECS_STD], constants.ISPECS_STD),
- ]
+ ispeclist = []
+ if constants.ISPECS_MINMAX in ipolicy:
+ for k in range(len(ipolicy[constants.ISPECS_MINMAX])):
+ ispeclist.extend([
+ (ipolicy[constants.ISPECS_MINMAX][k][constants.ISPECS_MIN],
+ "%s[%s]/%s" % (constants.ISPECS_MINMAX, k, constants.ISPECS_MIN)),
+ (ipolicy[constants.ISPECS_MINMAX][k][constants.ISPECS_MAX],
+ "%s[%s]/%s" % (constants.ISPECS_MINMAX, k, constants.ISPECS_MAX)),
+ ])
+ if constants.ISPECS_STD in ipolicy:
+ ispeclist.append((ipolicy[constants.ISPECS_STD], constants.ISPECS_STD))
+
for (ispec, ispecpath) in ispeclist:
ispec[INVALID_KEY] = None
errs = cfg.VerifyConfig()
errs = cfg.VerifyConfig()
self.assertFalse(errs)
+ if constants.ISPECS_MINMAX in ipolicy:
+ # Test partial minmax specs
+ for minmax in ipolicy[constants.ISPECS_MINMAX]:
+ for key in constants.ISPECS_MINMAX_KEYS:
+ self.assertTrue(key in minmax)
+ ispec = minmax[key]
+ del minmax[key]
+ errs = cfg.VerifyConfig()
+ self.assertTrue(len(errs) >= 1)
+ self.assertTrue(_IsErrorInList("Missing instance specification",
+ errs))
+ minmax[key] = ispec
+ for par in constants.ISPECS_PARAMETERS:
+ oldv = ispec[par]
+ del ispec[par]
+ errs = cfg.VerifyConfig()
+ self.assertTrue(len(errs) >= 1)
+ self.assertTrue(_IsErrorInList("Missing instance specs parameters",
+ errs))
+ ispec[par] = oldv
+ errs = cfg.VerifyConfig()
+ self.assertFalse(errs)
+
def _TestVerifyConfigGroupIPolicy(self, groupinfo, cfg):
old_ipolicy = groupinfo.ipolicy
ipolicy = cfg.GetClusterInfo().SimpleFillIPolicy({})
errs = cfg.VerifyConfig()
self.assertFalse(errs)
ipolicy[key] = oldv
- # Test partial minmax specs
- minmax = ipolicy[constants.ISPECS_MINMAX]
- for ispec_key in minmax.keys():
- ispec = minmax[ispec_key]
- for par in constants.ISPECS_PARAMETERS:
- oldv = ispec[par]
- del ispec[par]
- errs = cfg.VerifyConfig()
- self.assertFalse(errs)
- ispec[par] = oldv
groupinfo.ipolicy = old_ipolicy
def _TestVerifyConfigClusterIPolicy(self, ipolicy, cfg):
del ipolicy[key]
self.assertRaises(AssertionError, cfg.VerifyConfig)
ipolicy[key] = oldv
- # Test partial minmax specs
- minmax = ipolicy[constants.ISPECS_MINMAX]
- for key in constants.ISPECS_MINMAX_KEYS:
- self.assertTrue(key in minmax)
- oldv = minmax[key]
- del minmax[key]
- self.assertRaises(AssertionError, cfg.VerifyConfig)
- minmax[key] = oldv
+ errs = cfg.VerifyConfig()
+ self.assertFalse(errs)
+ # Partial standard specs
+ ispec = ipolicy[constants.ISPECS_STD]
+ for par in constants.ISPECS_PARAMETERS:
+ oldv = ispec[par]
+ del ispec[par]
+ errs = cfg.VerifyConfig()
+ self.assertTrue(len(errs) >= 1)
+ self.assertTrue(_IsErrorInList("Missing instance specs parameters",
+ errs))
+ ispec[par] = oldv
errs = cfg.VerifyConfig()
self.assertFalse(errs)
def testNoError(self):
disks = self._MakeDisks(["disk/0", "disk/1"])
self.assertEqual(config._CheckInstanceDiskIvNames(disks), [])
- cmdlib._UpdateIvNames(0, disks)
+ instance._UpdateIvNames(0, disks)
self.assertEqual(config._CheckInstanceDiskIvNames(disks), [])
def testWrongNames(self):
])
# Fix names
- cmdlib._UpdateIvNames(0, disks)
+ instance._UpdateIvNames(0, disks)
self.assertEqual(config._CheckInstanceDiskIvNames(disks), [])