Revision d63479b5 lib/objects.py

b/lib/objects.py
933 933
      obj.tcpudp_port_pool = set(obj.tcpudp_port_pool)
934 934
    return obj
935 935

  
936
  def GetHVDefaults(self, hypervisor, os_name=None, skip_keys=None):
937
    """Get the default hypervisor parameters for the cluster.
938

  
939
    @param hypervisor: the hypervisor name
940
    @param os_name: if specified, we'll also update the defaults for this OS
941
    @param skip_keys: if passed, list of keys not to use
942
    @return: the defaults dict
943

  
944
    """
945
    if skip_keys is None:
946
      skip_keys = []
947

  
948
    fill_stack = [self.hvparams.get(hypervisor, {})]
949
    if os_name is not None:
950
      os_hvp = self.os_hvp.get(os_name, {}).get(hypervisor, {})
951
      fill_stack.append(os_hvp)
952

  
953
    ret_dict = {}
954
    for o_dict in fill_stack:
955
      ret_dict = FillDict(ret_dict, o_dict, skip_keys=skip_keys)
956

  
957
    return ret_dict
958

  
959

  
936 960
  def FillHV(self, instance, skip_globals=False):
937 961
    """Fill an instance's hvparams dict.
938 962

  
......
951 975
    else:
952 976
      skip_keys = []
953 977

  
954
    # We fill the list from least to most important override
955
    fill_stack = [
956
      self.hvparams.get(instance.hypervisor, {}),
957
      self.os_hvp.get(instance.os, {}).get(instance.hypervisor, {}),
958
      instance.hvparams,
959
      ]
960

  
961
    ret_dict = {}
962
    for o_dict in fill_stack:
963
      ret_dict = FillDict(ret_dict, o_dict, skip_keys=skip_keys)
964

  
965
    return ret_dict
978
    def_dict = self.GetHVDefaults(instance.hypervisor, instance.os,
979
                                  skip_keys=skip_keys)
980
    return FillDict(def_dict, instance.hvparams, skip_keys=skip_keys)
966 981

  
967 982
  def FillBE(self, instance):
968 983
    """Fill an instance's beparams dict.

Also available in: Unified diff