...

Source file src/github.com/linkerd/linkerd2/pkg/k8s/version.go

Documentation: github.com/linkerd/linkerd2/pkg/k8s

     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