Last active
August 19, 2021 17:40
-
-
Save hexfusion/18d2dcf5ba8fb719e6b76bda028b2b09 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func ensureDesiredUpgradeVersion(_ context.Context, clusterVersionLister configv1listers.ClusterVersionLister) (string, error){ | |
config, err := clusterVersionLister.Get("version") | |
if err != nil { | |
return "", err | |
} | |
desiredUpdate := config.Spec.DesiredUpdate | |
// Wait for CVO to populate desired status if empty | |
//TODO ensure desired update is expected to be always populated | |
if desiredUpdate == nil { | |
return "", fmt.Errorf("cluster version desired update is not yet initialized") | |
} | |
desiredVersion := desiredUpdate.Version | |
desiredSemver, err := semver.Parse(desiredVersion) | |
if err != nil { | |
return "", err | |
} | |
// Wait for CVO to initialize new history if empty | |
if len(config.Status.History) == 0 { | |
return "", fmt.Errorf("cluster version history is not yet intialized" ) | |
} | |
currentVersion := config.Status.History[0].Version | |
currentSemver, err := semver.Parse(currentVersion) | |
if err != nil { | |
return "", err | |
} | |
// verify minor upgrade is desired otherwise our job is done for now. | |
if ! isMinorUpgrade(currentSemver,desiredSemver) { | |
klog.Infof("Cluster upgrade backup controller only takes backups during minor version upgrades, current: %s, desired: %s", currentVersion, desiredVersion) | |
return "", fmt.Errorf("%s",metav1.StatusReasonNotFound) | |
} | |
return desiredVersion, nil | |
} | |
func isMinorUpgrade(currentVersion, desiredVersion semver.Version) bool { | |
if currentVersion.Minor + 1 == desiredVersion.Minor { | |
return true | |
} | |
return false | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment