diff --git a/tools/cfgupgrade b/tools/cfgupgrade index 0d7bdc7fee5fc1db3a613d2616b02a549e56a269..7e57ea24396284d56193e3256cab80d3d42e93cb 100755 --- a/tools/cfgupgrade +++ b/tools/cfgupgrade @@ -112,13 +112,13 @@ def main(): usertext = ("%s MUST be run on the master node. Is this the master" " node and are ALL instances down?" % program) if not cli.AskUser(usertext): - sys.exit(1) + sys.exit(constants.EXIT_FAILURE) # Check whether it's a Ganeti configuration directory if not (os.path.isfile(options.CONFIG_DATA_PATH) and os.path.isfile(options.SERVER_PEM_PATH) or os.path.isfile(options.KNOWN_HOSTS_PATH)): - raise Error(("%s does not seem to be a known Ganeti configuration" + raise Error(("%s does not seem to be a Ganeti configuration" " directory") % options.data_dir) config_data = serializer.LoadJson(utils.ReadFile(options.CONFIG_DATA_PATH)) @@ -138,11 +138,19 @@ def main(): raise Error("Inconsistent configuration: found config_version in" " configuration file") - if config_major == 2 and config_minor == 0: + # Upgrade from 2.0/2.1 to 2.2 + if config_major == 2 and config_minor in (0, 1): if config_revision != 0: - logging.warning("Config revision is not 0") + logging.warning("Config revision is %s, not 0", config_revision) - config_data["version"] = constants.BuildVersion(2, 1, 0) + config_data["version"] = constants.BuildVersion(2, 2, 0) + + elif config_major == 2 and config_minor == 2: + logging.info("No changes necessary") + + else: + raise Error("Configuration version %d.%d.%d not supported by this tool" % + (config_major, config_minor, config_revision)) try: logging.info("Writing configuration file to %s", options.CONFIG_DATA_PATH) @@ -159,7 +167,7 @@ def main(): hmackey_file=options.CONFD_HMAC_KEY, cds_file=options.CDS_FILE) - except: + except Exception: logging.critical("Writing configuration failed. It is probably in an" " inconsistent state and needs manual intervention.") raise