Revision 1d9f9df7

b/test/py/cfgupgrade_unittest.py
391 391
    newconf = self._LoadConfig()
392 392
    self.assertEqual(oldconf, newconf)
393 393

  
394
  def testDowngradeFrom_2_9(self):
395
    cfg29_name = "cluster_config_2.9.json"
396
    cfg29 = self._LoadTestDataConfig(cfg29_name)
397
    self._CreateValidConfigDir()
398
    utils.WriteFile(self.config_path, data=serializer.DumpJson(cfg29))
399
    _RunUpgrade(self.tmpdir, False, True, downgrade=True)
400
    cfg28 = self._LoadConfig()
401

  
402
    hvparams = cfg28["cluster"]["hvparams"]
403
    for xen_variant in [constants.HT_XEN_PVM, constants.HT_XEN_HVM]:
404
      xen_params = hvparams[xen_variant]
405
      self.assertTrue(constants.HV_XEN_CMD not in xen_params)
406

  
394 407
  def testDowngradeFullConfigBackwardFrom_2_7(self):
395 408
    """Test for upgrade + downgrade + upgrade combination."""
396 409
    self._TestUpgradeFromFile("cluster_config_2.7.json", False)
b/tools/cfgupgrade
417 417
  ChangeInstanceIndices(config_data, "uuid", "name")
418 418

  
419 419

  
420
def DowngradeHvparams(config_data):
421
  """Downgrade the cluster's hypervisor parameters."""
422
  cluster = config_data["cluster"]
423
  if "hvparams" in cluster:
424
    hvparams = cluster["hvparams"]
425
    xen_params = None
426
    for xen_variant in [constants.HT_XEN_PVM, constants.HT_XEN_HVM]:
427
      if xen_variant in hvparams:
428
        xen_params = hvparams[xen_variant]
429
        # 'xen_cmd' was introduced in 2.9
430
        if constants.HV_XEN_CMD in xen_params:
431
          del xen_params[constants.HV_XEN_CMD]
432

  
433

  
420 434
def DowngradeAll(config_data):
421 435
  # Any code specific to a particular version should be labeled that way, so
422 436
  # it can be removed when updating to the next version.
......
425 439
  DowngradeInstances(config_data)
426 440
  DowngradeNodeIndices(config_data)
427 441
  DowngradeInstanceIndices(config_data)
442
  DowngradeHvparams(config_data)
428 443

  
429 444

  
430 445
def main():

Also available in: Unified diff