Revision d2e4e099

b/test/py/ganeti.hypervisor.hv_xen_unittest.py
37 37
from ganeti import errors
38 38
from ganeti import compat
39 39

  
40
from ganeti.hypervisor import hv_base
40 41
from ganeti.hypervisor import hv_xen
41 42

  
42 43
import testutils
......
137 138
    self.assertEqual(result[0][3], 1)
138 139

  
139 140
    # State
140
    self.assertEqual(result[0][4], "r-----")
141
    self.assertEqual(result[0][4], hv_base.HvInstanceState.RUNNING)
141 142

  
142 143
    # Time
143 144
    self.assertAlmostEqual(result[0][5], 121152.6)
......
166 167
  def testTimeout(self):
167 168
    fn = testutils.CallCounter(self._Fail)
168 169
    try:
169
      hv_xen._GetInstanceList(fn, False, _timeout=0.1)
170
      hv_xen._GetRunningInstanceList(fn, False, _timeout=0.1)
170 171
    except errors.HypervisorError, err:
171 172
      self.assertTrue("timeout exceeded" in str(err))
172 173
    else:
......
184 185

  
185 186
    fn = testutils.CallCounter(compat.partial(self._Success, data))
186 187

  
187
    result = hv_xen._GetInstanceList(fn, True, _timeout=0.1)
188
    result = hv_xen._GetRunningInstanceList(fn, True, _timeout=0.1)
188 189

  
189 190
    self.assertEqual(len(result), 4)
190 191

  
......
379 380

  
380 381
  def testNoHvparams(self):
381 382
    expected_xen_cmd = "xm"
382
    mock_run_cmd = mock.Mock( return_value=self.RESULT_OK )
383
    mock_run_cmd = mock.Mock(return_value=self.RESULT_OK)
383 384
    hv = hv_xen.XenHypervisor(_cfgdir=NotImplemented,
384 385
                              _run_cmd_fn=mock_run_cmd)
385 386
    self.assertRaises(errors.HypervisorError, hv._GetInstanceList, True, None)
......
387 388
  def testFromHvparams(self):
388 389
    expected_xen_cmd = "xl"
389 390
    hvparams = {constants.HV_XEN_CMD: constants.XEN_CMD_XL}
390
    mock_run_cmd = mock.Mock( return_value=self.RESULT_OK )
391
    mock_run_cmd = mock.Mock(return_value=self.RESULT_OK)
391 392
    hv = hv_xen.XenHypervisor(_cfgdir=NotImplemented,
392 393
                              _run_cmd_fn=mock_run_cmd)
393 394
    hv._GetInstanceList(True, hvparams)
......
401 402

  
402 403
  def testNoHvparams(self):
403 404
    expected_xen_cmd = "xm"
404
    mock_run_cmd = mock.Mock( return_value=self.RESULT_OK )
405
    mock_run_cmd = mock.Mock(return_value=self.RESULT_OK)
405 406
    hv = hv_xen.XenHypervisor(_cfgdir=NotImplemented,
406 407
                              _run_cmd_fn=mock_run_cmd)
407 408
    self.assertRaises(errors.HypervisorError, hv.ListInstances)
......
409 410
  def testHvparamsXl(self):
410 411
    expected_xen_cmd = "xl"
411 412
    hvparams = {constants.HV_XEN_CMD: constants.XEN_CMD_XL}
412
    mock_run_cmd = mock.Mock( return_value=self.RESULT_OK )
413
    mock_run_cmd = mock.Mock(return_value=self.RESULT_OK)
413 414
    hv = hv_xen.XenHypervisor(_cfgdir=NotImplemented,
414 415
                              _run_cmd_fn=mock_run_cmd)
415 416
    hv.ListInstances(hvparams=hvparams)
......
446 447
  def testCheckToolstackXlNotConfigured(self):
447 448
    RESULT_FAILED = utils.RunResult(
448 449
        1, None, "",
449
        "ERROR:  A different toolstack (xm) have been selected!",
450
        "ERROR:  A different toolstack (xm) has been selected!",
450 451
        "", None, None)
451 452
    mock_run_cmd = mock.Mock(return_value=RESULT_FAILED)
452 453
    hv = hv_xen.XenHypervisor(_cfgdir=NotImplemented,
......
610 611
    self.assertEqual(instid, 1)
611 612
    self.assertEqual(memory, 1024)
612 613
    self.assertEqual(vcpus, 1)
613
    self.assertEqual(state, "-b----")
614
    self.assertEqual(state, hv_base.HvInstanceState.RUNNING)
614 615
    self.assertAlmostEqual(runtime, 167643.2)
615 616

  
616 617
  def testGetInstanceInfoDom0(self):
......
625 626
    self.assertEqual(instid, 0)
626 627
    self.assertEqual(memory, 1023)
627 628
    self.assertEqual(vcpus, 1)
628
    self.assertEqual(state, "r-----")
629
    self.assertEqual(state, hv_base.HvInstanceState.RUNNING)
629 630
    self.assertAlmostEqual(runtime, 154706.1)
630 631

  
631 632
  def testGetInstanceInfoUnknown(self):
......
738 739
          self.assertTrue(("extra = '%s'" % extra) in lines)
739 740

  
740 741
  def _StopInstanceCommand(self, instance_name, force, fail, cmd):
741
    if ((force and cmd[:2] == [self.CMD, "destroy"]) or
742
        (not force and cmd[:2] == [self.CMD, "shutdown"])):
742
    if (cmd == [self.CMD, "list"]):
743
      output = "Name  ID  Mem  VCPUs  State  Time(s)\n" \
744
        "Domain-0  0  1023  1  r-----  142691.0\n" \
745
        "%s  417  128  1  r-----  3.2\n" % instance_name
746
    elif cmd[:2] == [self.CMD, "destroy"]:
743 747
      self.assertEqual(cmd[2:], [instance_name])
744 748
      output = ""
749
    elif not force and cmd[:3] == [self.CMD, "shutdown", "-w"]:
750
      self.assertEqual(cmd[3:], [instance_name])
751
      output = ""
745 752
    else:
746 753
      self.fail("Unhandled command: %s" % (cmd, ))
747 754

  
......
770 777
          try:
771 778
            hv._StopInstance(name, force, None)
772 779
          except errors.HypervisorError, err:
773
            self.assertTrue(str(err).startswith("Failed to stop instance"))
780
            self.assertTrue(str(err).startswith("listing instances failed"),
781
                            msg=str(err))
774 782
          else:
775 783
            self.fail("Exception was not raised")
776 784
          self.assertEqual(utils.ReadFile(cfgfile), cfgdata,
b/test/py/ganeti.query_unittest.py
34 34
from ganeti import cmdlib
35 35

  
36 36
import ganeti.masterd.instance as gmi
37
from ganeti.hypervisor import hv_base
37 38

  
38 39
import testutils
39 40

  
......
806 807
        disks_active=False,
807 808
        beparams={},
808 809
        osparams={}),
810
      objects.Instance(name="inst9", hvparams={}, nics=[],
811
        uuid="inst9-uuid",
812
        ctime=None, mtime=None, serial_no=19478,
813
        admin_state=constants.ADMINST_UP, hypervisor=constants.HT_XEN_HVM,
814
        os="deb99",
815
        primary_node="node6-uuid",
816
        disk_template=constants.DT_DISKLESS,
817
        disks=[],
818
        disks_active=False,
819
        beparams={},
820
        osparams={}),
809 821
      ]
810 822

  
811 823
    assert not utils.FindDuplicates(inst.uuid for inst in instances)
......
828 840
    live_data = {
829 841
      "inst2-uuid": {
830 842
        "vcpus": 3,
843
        "state": hv_base.HvInstanceState.RUNNING,
831 844
        },
832 845
      "inst4-uuid": {
833 846
        "memory": 123,
847
        "state": hv_base.HvInstanceState.RUNNING,
834 848
        },
835 849
      "inst6-uuid": {
836 850
        "memory": 768,
851
        "state": hv_base.HvInstanceState.RUNNING,
837 852
        },
838 853
      "inst7-uuid": {
839 854
        "vcpus": 3,
855
        "state": hv_base.HvInstanceState.RUNNING,
856
        },
857
      "inst9-uuid": {
858
        "vcpus": 3,
859
        "state": hv_base.HvInstanceState.SHUTDOWN,
840 860
        },
841 861
      }
842 862
    wrongnode_inst = set(["inst7-uuid"])
......
880 900
      elif inst.uuid in live_data:
881 901
        if inst.uuid in wrongnode_inst:
882 902
          exp_status = constants.INSTST_WRONGNODE
883
        elif inst.admin_state == constants.ADMINST_UP:
884
          exp_status = constants.INSTST_RUNNING
885 903
        else:
886
          exp_status = constants.INSTST_ERRORUP
887
      elif inst.admin_state == constants.ADMINST_UP:
888
        exp_status = constants.INSTST_ERRORDOWN
889
      elif inst.admin_state == constants.ADMINST_DOWN:
890
        exp_status = constants.INSTST_ADMINDOWN
904
          instance_state = live_data[inst.uuid]["state"]
905
          if hv_base.HvInstanceState.IsShutdown(instance_state):
906
            if inst.admin_state == constants.ADMINST_UP:
907
              exp_status = constants.INSTST_USERDOWN
908
            else:
909
              exp_status = constants.INSTST_ADMINDOWN
910
          else:
911
            if inst.admin_state == constants.ADMINST_UP:
912
              exp_status = constants.INSTST_RUNNING
913
            else:
914
              exp_status = constants.INSTST_ERRORUP
891 915
      else:
892
        exp_status = constants.INSTST_ADMINOFFLINE
916
        if inst.admin_state == constants.ADMINST_UP:
917
          exp_status = constants.INSTST_ERRORDOWN
918
        elif inst.admin_state == constants.ADMINST_DOWN:
919
          exp_status = constants.INSTST_ADMINDOWN
920
        else:
921
          exp_status = constants.INSTST_ADMINOFFLINE
893 922

  
894 923
      self.assertEqual(row[fieldidx["status"]],
895 924
                       (constants.RS_NORMAL, exp_status))
......
975 1004
      self._CheckInstanceConsole(inst, row[fieldidx["console"]])
976 1005

  
977 1006
    # Ensure all possible status' have been tested
978
    self.assertEqual(tested_status, constants.INSTST_ALL)
1007
    self.assertEqual(tested_status, set(constants.INSTST_ALL))
979 1008

  
980 1009
  def _CheckInstanceConsole(self, instance, (status, consdata)):
981 1010
    if instance.name == "inst7":

Also available in: Unified diff