...
1 package k8s
2
3 import (
4 "fmt"
5 "regexp"
6 "strconv"
7 "strings"
8 )
9
10 var revisionSeparator = regexp.MustCompile("[^0-9.]")
11
12 func getK8sVersion(versionString string) ([3]int, error) {
13 var version [3]int
14 justTheVersionString := strings.TrimPrefix(versionString, "v")
15 justTheMajorMinorRevisionNumbers := revisionSeparator.Split(justTheVersionString, -1)[0]
16 split := strings.Split(justTheMajorMinorRevisionNumbers, ".")
17
18 if len(split) < 3 {
19 return version, fmt.Errorf("unknown version string format [%s]", versionString)
20 }
21
22 for i, segment := range split {
23 v, err := strconv.Atoi(strings.TrimSpace(segment))
24 if err != nil {
25 return version, fmt.Errorf("unknown version string format [%s]", versionString)
26 }
27 version[i] = v
28 }
29
30 return version, nil
31 }
32
33 func isCompatibleVersion(minimalRequirementVersion [3]int, actualVersion [3]int) bool {
34 if minimalRequirementVersion[0] < actualVersion[0] {
35 return true
36 }
37
38 if (minimalRequirementVersion[0] == actualVersion[0]) && minimalRequirementVersion[1] < actualVersion[1] {
39 return true
40 }
41
42 if (minimalRequirementVersion[0] == actualVersion[0]) && (minimalRequirementVersion[1] == actualVersion[1]) && (minimalRequirementVersion[2] <= actualVersion[2]) {
43 return true
44 }
45
46 return false
47 }
48
View as plain text