...
1
16
17 package version
18
19 import (
20 "fmt"
21 "io"
22 "k8s.io/apimachinery/pkg/util/version"
23 apimachineryversion "k8s.io/apimachinery/pkg/version"
24 "math"
25 )
26
27
28
29
30 const supportedMinorVersionSkew = 1
31
32
33
34 func printVersionSkewWarning(w io.Writer, clientVersion, serverVersion apimachineryversion.Info) error {
35 parsedClientVersion, err := version.ParseSemantic(clientVersion.GitVersion)
36 if err != nil {
37 return err
38 }
39
40 parsedServerVersion, err := version.ParseSemantic(serverVersion.GitVersion)
41 if err != nil {
42 return err
43 }
44
45 majorVersionDifference := math.Abs(float64(parsedClientVersion.Major()) - float64(parsedServerVersion.Major()))
46 minorVersionDifference := math.Abs(float64(parsedClientVersion.Minor()) - float64(parsedServerVersion.Minor()))
47
48 if majorVersionDifference > 0 || minorVersionDifference > supportedMinorVersionSkew {
49 fmt.Fprintf(w, "WARNING: version difference between client (%d.%d) and server (%d.%d) exceeds the supported minor version skew of +/-%d\n",
50 parsedClientVersion.Major(), parsedClientVersion.Minor(), parsedServerVersion.Major(), parsedServerVersion.Minor(), supportedMinorVersionSkew)
51 }
52
53 return nil
54 }
55
View as plain text