class TestConsole(unittest.TestCase):
def test(self):
- for cls in [hv_xen.XenPvmHypervisor, hv_xen.XenHvmHypervisor]:
+ hvparams = {constants.HV_XEN_CMD: constants.XEN_CMD_XL}
+ for cls in [hv_xen.XenPvmHypervisor(), hv_xen.XenHvmHypervisor()]:
instance = objects.Instance(name="xen.example.com",
- primary_node="node24828")
- cons = cls.GetInstanceConsole(instance, {}, {})
+ primary_node="node24828-uuid")
+ node = objects.Node(name="node24828", uuid="node24828-uuid")
+ cons = cls.GetInstanceConsole(instance, node, hvparams, {})
self.assertTrue(cons.Validate())
self.assertEqual(cons.kind, constants.CONS_SSH)
- self.assertEqual(cons.host, instance.primary_node)
+ self.assertEqual(cons.host, node.name)
self.assertEqual(cons.command[-1], instance.name)
class TestGetCommand(testutils.GanetiTestCase):
- def testDefault(self):
- expected_cmd = "xm"
- hv = hv_xen.XenHypervisor()
- self.assertEqual(hv._GetCommand(), expected_cmd)
-
def testCommandExplicit(self):
"""Test the case when the command is given as class parameter explicitly.
"""
expected_cmd = "xl"
hv = hv_xen.XenHypervisor(_cmd=constants.XEN_CMD_XL)
- self.assertEqual(hv._GetCommand(), expected_cmd)
+ self.assertEqual(hv._GetCommand(None), expected_cmd)
def testCommandInvalid(self):
"""Test the case an invalid command is given as class parameter explicitly.
expected_cmd = "xl"
test_hvparams = {constants.HV_XEN_CMD: constants.XEN_CMD_XL}
hv = hv_xen.XenHypervisor()
- self.assertEqual(hv._GetCommand(hvparams=test_hvparams), expected_cmd)
+ self.assertEqual(hv._GetCommand(test_hvparams), expected_cmd)
def testCommandHvparamsInvalid(self):
test_hvparams = {}
hv = hv_xen.XenHypervisor()
- self.assertRaises(KeyError, hv._GetCommand, test_hvparams)
+ self.assertRaises(errors.HypervisorError, hv._GetCommand, test_hvparams)
def testCommandHvparamsCmdInvalid(self):
test_hvparams = {constants.HV_XEN_CMD: "invalidcommand"}
class TestMergeInstanceInfo(testutils.GanetiTestCase):
def testEmpty(self):
- self.assertEqual(hv_xen._MergeInstanceInfo({}, lambda _: []), {})
+ self.assertEqual(hv_xen._MergeInstanceInfo({}, []), {})
def _FakeXmList(self, include_node):
- self.assertTrue(include_node)
return [
(hv_xen._DOM0_NAME, NotImplemented, 4096, 7, NotImplemented,
NotImplemented),
]
def testMissingNodeInfo(self):
- result = hv_xen._MergeInstanceInfo({}, self._FakeXmList)
+ instance_list = self._FakeXmList(True)
+ result = hv_xen._MergeInstanceInfo({}, instance_list)
self.assertEqual(result, {
"memory_dom0": 4096,
- "dom0_cpus": 7,
+ "cpu_dom0": 7,
})
def testWithNodeInfo(self):
info = testutils.ReadTestData("xen-xm-info-4.0.1.txt")
- result = hv_xen._GetNodeInfo(info, self._FakeXmList)
+ instance_list = self._FakeXmList(True)
+ result = hv_xen._GetNodeInfo(info, instance_list)
self.assertEqual(result, {
"cpu_nodes": 1,
"cpu_sockets": 2,
"cpu_total": 4,
- "dom0_cpus": 7,
+ "cpu_dom0": 7,
"hv_version": (4, 0),
"memory_dom0": 4096,
"memory_free": 8004,
def testManyDisks(self):
for offset in [0, 1, 10]:
- disks = [(objects.Disk(dev_type=constants.LD_LV), "/tmp/disk/%s" % idx)
+ disks = [(objects.Disk(dev_type=constants.DT_PLAIN), "/tmp/disk/%s" % idx)
for idx in range(len(hv_xen._DISK_LETTERS) + offset)]
if offset == 0:
def testTwoLvDisksWithMode(self):
disks = [
- (objects.Disk(dev_type=constants.LD_LV, mode=constants.DISK_RDWR),
+ (objects.Disk(dev_type=constants.DT_PLAIN, mode=constants.DISK_RDWR),
"/tmp/diskFirst"),
- (objects.Disk(dev_type=constants.LD_LV, mode=constants.DISK_RDONLY),
+ (objects.Disk(dev_type=constants.DT_PLAIN, mode=constants.DISK_RDONLY),
"/tmp/diskLast"),
]
def testFileDisks(self):
disks = [
- (objects.Disk(dev_type=constants.LD_FILE, mode=constants.DISK_RDWR,
+ (objects.Disk(dev_type=constants.DT_FILE, mode=constants.DISK_RDWR,
physical_id=[constants.FD_LOOP]),
"/tmp/diskFirst"),
- (objects.Disk(dev_type=constants.LD_FILE, mode=constants.DISK_RDONLY,
+ (objects.Disk(dev_type=constants.DT_FILE, mode=constants.DISK_RDONLY,
physical_id=[constants.FD_BLKTAP]),
"/tmp/diskTwo"),
- (objects.Disk(dev_type=constants.LD_FILE, mode=constants.DISK_RDWR,
+ (objects.Disk(dev_type=constants.DT_FILE, mode=constants.DISK_RDWR,
physical_id=[constants.FD_LOOP]),
"/tmp/diskThree"),
- (objects.Disk(dev_type=constants.LD_FILE, mode=constants.DISK_RDWR,
+ (objects.Disk(dev_type=constants.DT_FILE, mode=constants.DISK_RDWR,
physical_id=[constants.FD_BLKTAP]),
"/tmp/diskLast"),
]
def testInvalidFileDisk(self):
disks = [
- (objects.Disk(dev_type=constants.LD_FILE, mode=constants.DISK_RDWR,
+ (objects.Disk(dev_type=constants.DT_FILE, mode=constants.DISK_RDWR,
physical_id=["#unknown#"]),
"/tmp/diskinvalid"),
]
hv = hv_xen.XenHypervisor(_cfgdir=NotImplemented,
_run_cmd_fn=NotImplemented,
_cmd=cmd)
- self.assertRaises(errors.ProgrammerError, hv._RunXen, [])
+ self.assertRaises(errors.ProgrammerError, hv._RunXen, [], None)
- def testCommandValid(self):
- xen_cmd = "xm"
- mock_run_cmd = mock.Mock()
+ def testCommandNoHvparams(self):
hv = hv_xen.XenHypervisor(_cfgdir=NotImplemented,
- _run_cmd_fn=mock_run_cmd)
- hv._RunXen([self.XEN_SUB_CMD])
- mock_run_cmd.assert_called_with([xen_cmd, self.XEN_SUB_CMD])
+ _run_cmd_fn=NotImplemented)
+ hvparams = None
+ self.assertRaises(errors.HypervisorError, hv._RunXen, [self.XEN_SUB_CMD],
+ hvparams)
def testCommandFromHvparams(self):
expected_xen_cmd = "xl"
RESULT_OK = utils.RunResult(0, None, "", "", "", None, None)
XEN_LIST = "list"
- def testOk(self):
+ def testNoHvparams(self):
expected_xen_cmd = "xm"
mock_run_cmd = mock.Mock( return_value=self.RESULT_OK )
hv = hv_xen.XenHypervisor(_cfgdir=NotImplemented,
_run_cmd_fn=mock_run_cmd)
- hv._GetInstanceList(True)
- mock_run_cmd.assert_called_with([expected_xen_cmd, self.XEN_LIST])
+ self.assertRaises(errors.HypervisorError, hv._GetInstanceList, True, None)
def testFromHvparams(self):
expected_xen_cmd = "xl"
mock_run_cmd = mock.Mock( return_value=self.RESULT_OK )
hv = hv_xen.XenHypervisor(_cfgdir=NotImplemented,
_run_cmd_fn=mock_run_cmd)
- hv._GetInstanceList(True, hvparams=hvparams)
+ hv._GetInstanceList(True, hvparams)
mock_run_cmd.assert_called_with([expected_xen_cmd, self.XEN_LIST])
RESULT_OK = utils.RunResult(0, None, "", "", "", None, None)
XEN_LIST = "list"
- def testDefaultXm(self):
+ def testNoHvparams(self):
expected_xen_cmd = "xm"
mock_run_cmd = mock.Mock( return_value=self.RESULT_OK )
hv = hv_xen.XenHypervisor(_cfgdir=NotImplemented,
_run_cmd_fn=mock_run_cmd)
- hv.ListInstances()
- mock_run_cmd.assert_called_with([expected_xen_cmd, self.XEN_LIST])
+ self.assertRaises(errors.HypervisorError, hv.ListInstances)
def testHvparamsXl(self):
expected_xen_cmd = "xl"
hvp[constants.HV_VNC_PASSWORD_FILE] = self.vncpw_path
disks = [
- (objects.Disk(dev_type=constants.LD_LV, mode=constants.DISK_RDWR),
+ (objects.Disk(dev_type=constants.DT_PLAIN, mode=constants.DISK_RDWR),
utils.PathJoin(self.tmpdir, "disk0")),
- (objects.Disk(dev_type=constants.LD_LV, mode=constants.DISK_RDONLY),
+ (objects.Disk(dev_type=constants.DT_PLAIN, mode=constants.DISK_RDONLY),
utils.PathJoin(self.tmpdir, "disk1")),
]
self.assertTrue(("extra = '%s'" % extra) in lines)
def _StopInstanceCommand(self, instance_name, force, fail, cmd):
- if ((force and cmd[:2] == [self.CMD, "destroy"]) or
- (not force and cmd[:2] == [self.CMD, "shutdown"])):
+ if (cmd == [self.CMD, "list"]):
+ output = "Name ID Mem VCPUs State Time(s)\n" \
+ "Domain-0 0 1023 1 r----- 142691.0\n" \
+ "%s 417 128 1 r----- 3.2\n" % instance_name
+ elif cmd[:2] == [self.CMD, "destroy"]:
self.assertEqual(cmd[2:], [instance_name])
output = ""
+ elif not force and cmd[:3] == [self.CMD, "shutdown", "-w"]:
+ self.assertEqual(cmd[3:], [instance_name])
+ output = ""
else:
self.fail("Unhandled command: %s" % (cmd, ))
try:
hv._StopInstance(name, force, None)
except errors.HypervisorError, err:
- self.assertTrue(str(err).startswith("Failed to stop instance"))
+ self.assertTrue(str(err).startswith("listing instances failed"),
+ msg=str(err))
else:
self.fail("Exception was not raised")
self.assertEqual(utils.ReadFile(cfgfile), cfgdata,