build_chroot: use APT_INSTALL macro for packet installation
[ganeti-local] / tools / cfgupgrade
index e239bd1..554877f 100755 (executable)
@@ -52,11 +52,11 @@ args = None
 #: Target major version we will upgrade to
 TARGET_MAJOR = 2
 #: Target minor version we will upgrade to
-TARGET_MINOR = 8
+TARGET_MINOR = 9
 #: Target major version for downgrade
 DOWNGRADE_MAJOR = 2
 #: Target minor version for downgrade
-DOWNGRADE_MINOR = 7
+DOWNGRADE_MINOR = 8
 
 
 class Error(Exception):
@@ -318,10 +318,24 @@ def ChangeNodeIndices(config_data, old_key_field, new_key_field):
       ChangeDiskNodeIndices(disk)
 
 
+def ChangeInstanceIndices(config_data, old_key_field, new_key_field):
+  insts_by_old_key = {}
+  insts_by_new_key = {}
+  for (_, inst) in config_data["instances"].items():
+    insts_by_old_key[inst[old_key_field]] = inst
+    insts_by_new_key[inst[new_key_field]] = inst
+
+  config_data["instances"] = insts_by_new_key
+
+
 def UpgradeNodeIndices(config_data):
   ChangeNodeIndices(config_data, "name", "uuid")
 
 
+def UpgradeInstanceIndices(config_data):
+  ChangeInstanceIndices(config_data, "name", "uuid")
+
+
 def UpgradeAll(config_data):
   config_data["version"] = constants.BuildVersion(TARGET_MAJOR,
                                                   TARGET_MINOR, 0)
@@ -333,6 +347,7 @@ def UpgradeAll(config_data):
   UpgradeGroups(config_data)
   UpgradeInstances(config_data)
   UpgradeNodeIndices(config_data)
+  UpgradeInstanceIndices(config_data)
 
 
 def DowngradeDisks(disks, owner):
@@ -358,6 +373,10 @@ def DowngradeNodeIndices(config_data):
   ChangeNodeIndices(config_data, "uuid", "name")
 
 
+def DowngradeInstanceIndices(config_data):
+  ChangeInstanceIndices(config_data, "uuid", "name")
+
+
 def DowngradeAll(config_data):
   # Any code specific to a particular version should be labeled that way, so
   # it can be removed when updating to the next version.
@@ -365,6 +384,7 @@ def DowngradeAll(config_data):
                                                   DOWNGRADE_MINOR, 0)
   DowngradeInstances(config_data)
   DowngradeNodeIndices(config_data)
+  DowngradeInstanceIndices(config_data)
 
 
 def main():
@@ -485,8 +505,8 @@ def main():
                    config_minor, config_revision))
     DowngradeAll(config_data)
 
-  # Upgrade from 2.{0..7} to 2.8
-  elif config_major == 2 and config_minor in range(0, 9):
+  # Upgrade from 2.{0..7} to 2.9
+  elif config_major == 2 and config_minor in range(0, 10):
     if config_revision != 0:
       logging.warning("Config revision is %s, not 0", config_revision)
     UpgradeAll(config_data)