def check_for_upgrade() -> Result:
"""
If the config has changed this will initiated a rolling upgrade
:return:
"""
config = hookenv.config()
if not config.changed("source"):
# No upgrade requested
log("No upgrade requested")
return Ok(())
log("Getting current_version")
current_version = get_glusterfs_version()
log("Adding new source line")
source = config["source"]
if not source:
# No upgrade requested
log("Source not set. Cannot continue with upgrade")
return Ok(())
add_source(source)
log("Calling apt update")
apt_update()
log("Getting proposed_version")
apt_pkg.init_system()
proposed_version = get_candidate_package_version("glusterfs-server")
if proposed_version.is_err():
return Err(proposed_version.value)
version_compare = apt_pkg.version_compare(a=proposed_version.value,
b=current_version)
# Using semantic versioning if the new version is greater
# than we allow the upgrade
if version_compare > 0:
log("current_version: {}".format(current_version))
log("new_version: {}".format(proposed_version.value))
log("{} to {} is a valid upgrade path. Proceeding.".format(
current_version, proposed_version.value))
return roll_cluster(proposed_version.value)
else:
# Log a helpful error message
log("Invalid upgrade path from {} to {}. The new version needs to be \
greater than the old version".format(
current_version, proposed_version.value), ERROR)
return Ok(())
评论列表
文章目录