// checkVersion makes a best-effort attempt to verify that fleetctl is at least as new as the // latest fleet version found registered in the cluster. If any errors are encountered or fleetctl // is >= the latest version found, it returns true. If it is < the latest found version, it returns // false and a scary warning to the user. func checkVersion(cReg registry.ClusterRegistry) (string, bool) { fv := version.SemVersion lv, err := cReg.LatestDaemonVersion() if err != nil { log.Errorf("error attempting to check latest fleet version in Registry: %v", err) } else if lv != nil && fv.LessThan(*lv) { return fmt.Sprintf(oldVersionWarning, fv.String(), lv.String()), false } return "", true }
func ensureEngineVersionMatch(cReg registry.ClusterRegistry, expect int) bool { v, err := cReg.EngineVersion() if err != nil { log.Errorf("Unable to determine cluster engine version") return false } if v < expect { err = cReg.UpdateEngineVersion(v, expect) if err != nil { log.Errorf("Failed updating cluster engine version from %d to %d: %v", v, expect, err) return false } log.Infof("Updated cluster engine version from %d to %d", v, expect) } else if v > expect { log.Debugf("Cluster engine version higher than local engine version (%d > %d), unable to participate", v, expect) return false } return true }