Revision 6ee8fdd3

b/lib/objects.py
1597 1597
    if self.hvparams is None:
1598 1598
      self.hvparams = constants.HVC_DEFAULTS
1599 1599
    else:
1600
      for hypervisor in self.hvparams:
1600
      for hypervisor in constants.HYPER_TYPES:
1601
        try:
1602
          existing_params = self.hvparams[hypervisor]
1603
        except KeyError:
1604
          existing_params = {}
1601 1605
        self.hvparams[hypervisor] = FillDict(
1602
            constants.HVC_DEFAULTS[hypervisor], self.hvparams[hypervisor])
1606
            constants.HVC_DEFAULTS[hypervisor], existing_params)
1603 1607

  
1604 1608
    if self.os_hvp is None:
1605 1609
      self.os_hvp = {}
b/test/py/ganeti.objects_unittest.py
93 93
    self.failUnlessEqual(cl.GetHVDefaults(constants.HT_FAKE),
94 94
                         cl.hvparams[constants.HT_FAKE])
95 95
    self.failUnlessEqual(cl.GetHVDefaults(None), {})
96
    self.failUnlessEqual(cl.GetHVDefaults(constants.HT_XEN_PVM,
97
                                          os_name="lenny-image"),
98
                         cl.os_hvp["lenny-image"][constants.HT_XEN_PVM])
96
    defaults = cl.GetHVDefaults(constants.HT_XEN_PVM,
97
                                          os_name="lenny-image")
98
    for param, value in cl.os_hvp["lenny-image"][constants.HT_XEN_PVM].items():
99
      self.assertEqual(value, defaults[param])
99 100

  
100 101
  def testFillHvFullMerge(self):
101 102
    inst_hvparams = {
......
132 133
                                 os="ubuntu-hardy",
133 134
                                 hypervisor=constants.HT_XEN_PVM,
134 135
                                 hvparams=inst_hvparams)
135
    self.assertEqual(inst_hvparams, self.fake_cl.FillHV(fake_inst))
136
    filled_conf = self.fake_cl.FillHV(fake_inst)
137
    for param, value in constants.HVC_DEFAULTS[constants.HT_XEN_PVM].items():
138
      if param == "blah":
139
        value = "blubb"
140
      self.assertEqual(value, filled_conf[param])
136 141

  
137
  def testFillHvEmptyParams(self):
142
  def testFillHvDefaultParams(self):
138 143
    fake_inst = objects.Instance(name="foobar",
139 144
                                 os="ubuntu-hardy",
140 145
                                 hypervisor=constants.HT_XEN_PVM,
141 146
                                 hvparams={})
142
    self.assertEqual({}, self.fake_cl.FillHV(fake_inst))
147
    self.assertEqual(constants.HVC_DEFAULTS[constants.HT_XEN_PVM],
148
                     self.fake_cl.FillHV(fake_inst))
143 149

  
144 150
  def testFillHvPartialParams(self):
145 151
    os = "lenny-image"
......
147 153
                                 os=os,
148 154
                                 hypervisor=constants.HT_XEN_PVM,
149 155
                                 hvparams={})
150
    self.assertEqual(self.fake_cl.os_hvp[os][constants.HT_XEN_PVM],
151
                     self.fake_cl.FillHV(fake_inst))
156
    filled_conf = self.fake_cl.FillHV(fake_inst)
157
    for param, value in self.fake_cl.os_hvp[os][constants.HT_XEN_PVM].items():
158
      self.assertEqual(value, filled_conf[param])
152 159

  
153 160
  def testFillNdParamsCluster(self):
154 161
    fake_node = objects.Node(name="test",

Also available in: Unified diff