Merge pull request #1738 from gravitational/sasha/vers

Relax version checking, fixes #1728
This commit is contained in:
Alexander Klizhentas 2018-03-02 17:46:04 -06:00 committed by GitHub
commit ba546f096b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 3 deletions

View file

@ -98,11 +98,11 @@ func (s *UtilsSuite) TestVersions(c *check.C) {
}{
{info: "same versions are ok", client: "1.0.0", server: "1.0.0"},
{info: "minor diff is ok if server is newer", client: "1.0.0", server: "1.1.0"},
{info: "minor diff is ok if server is newer even after one version", client: "1.0.0", server: "1.3.0"},
{info: "minor diff is not ok if server is older", client: "1.1.0", server: "1.0.0", err: trace.BadParameter("")},
{info: "major diff is not ok", client: "5.1.0", server: "1.0.0", err: trace.BadParameter("")},
{info: "major diff is not ok", client: "1.1.0", server: "5.0.0", err: trace.BadParameter("")},
{info: "minor diff is ok if server is newer", client: "1.0.0-beta.1", server: "1.1.0-alpha.1"},
{info: "force pre-release versions too", client: "1.0.0-beta.2", server: "1.0.0-beta.1", err: trace.BadParameter("")},
{info: "older pre-release client is ok", client: "1.0.0-beta.1", server: "1.0.0-beta.12"},
}
for i, testCase := range testCases {

View file

@ -38,11 +38,12 @@ func CheckVersions(clientVersion, serverVersion string) error {
}
// for now only do simple check that client is not newer version
// than server
// than server, ignore patch versions
switch {
case serverSemver.Major != clientSemver.Major:
return trace.BadParameter("client version %q is not compatible server version %q, please make client and server versions use the same major versions", clientVersion, serverVersion)
case serverSemver.LessThan(*clientSemver):
case serverSemver.Minor < clientSemver.Minor:
return trace.BadParameter("client version %q is newer than server version %q, please downgrade client or upgrade server", clientVersion, serverVersion)
// for now let's not enforce minor versions diff as it's too harsh
}