Revision b844311b

b/lib/rpc.py
634 634
    default_space_info = space_info[0]
635 635

  
636 636
  if require_vg_info:
637
    if no_defaults or not default_space_info["type"] == constants.ST_LVM_VG:
637
    # if lvm storage is required, ignore the actual default and look for LVM
638
    lvm_info_found = False
639
    for space_entry in space_info:
640
      if space_entry["type"] == constants.ST_LVM_VG:
641
        default_space_info = space_entry
642
        lvm_info_found = True
643
        continue
644
    if not lvm_info_found:
638 645
      raise errors.OpExecError("LVM volume group info required, but not"
639 646
                               " provided.")
640 647

  
b/test/py/ganeti.rpc_unittest.py
957 957
    self.assertEqual(result, self.STD_DICT)
958 958

  
959 959

  
960
class TestAddDefaultStorageInfoToLegacyNodeInfo(unittest.TestCase):
961

  
962
  def setUp(self):
963
    self.free_storage_file = 23
964
    self.total_storage_file = 42
965
    self.free_storage_lvm = 69
966
    self.total_storage_lvm = 666
967
    self.node_info = [{"name": "mynode",
968
                       "type": constants.ST_FILE,
969
                       "storage_free": self.free_storage_file,
970
                       "storage_size": self.total_storage_file},
971
                      {"name": "mynode",
972
                       "type": constants.ST_LVM_VG,
973
                       "storage_free": self.free_storage_lvm,
974
                       "storage_size": self.total_storage_lvm},
975
                      {"name": "mynode",
976
                       "type": constants.ST_LVM_PV,
977
                       "storage_free": 33,
978
                       "storage_size": 44}]
979

  
980
  def testAddDefaultStorageInfoToLegacyNodeInfo(self):
981
    result = {}
982
    has_lvm = False
983
    rpc._AddDefaultStorageInfoToLegacyNodeInfo(result, self.node_info, has_lvm)
984
    self.assertEqual(self.free_storage_file, result["storage_free"])
985
    self.assertEqual(self.total_storage_file, result["storage_size"])
986

  
987
  def testAddDefaultStorageInfoToLegacyNodeInfoOverrideDefault(self):
988
    result = {}
989
    has_lvm = True
990
    rpc._AddDefaultStorageInfoToLegacyNodeInfo(result, self.node_info, has_lvm)
991
    self.assertEqual(self.free_storage_lvm, result["storage_free"])
992
    self.assertEqual(self.total_storage_lvm, result["storage_size"])
993

  
994
  def testAddDefaultStorageInfoToLegacyNodeInfoNoDefaults(self):
995
    result = {}
996
    has_lvm = False
997
    rpc._AddDefaultStorageInfoToLegacyNodeInfo(result, self.node_info[-1:],
998
                                               has_lvm)
999
    self.assertFalse("storage_free" in result)
1000
    self.assertFalse("storage_size" in result)
1001

  
1002
  def testAddDefaultStorageInfoToLegacyNodeInfoNoLvm(self):
1003
    result = {}
1004
    has_lvm = True
1005
    self.assertRaises(errors.OpExecError,
1006
                      rpc._AddDefaultStorageInfoToLegacyNodeInfo,
1007
                      result, self.node_info[-1:], has_lvm)
1008

  
1009

  
960 1010
if __name__ == "__main__":
961 1011
  testutils.GanetiTestProgram()

Also available in: Unified diff