github.com/castai/kvisor@v1.7.1-0.20240516114728-b3572a2607b5/cmd/controller/kube/version.go (about) 1 package kube 2 3 import ( 4 "fmt" 5 "regexp" 6 "strconv" 7 8 "k8s.io/client-go/kubernetes" 9 ) 10 11 func GetVersion(clientset kubernetes.Interface) (Version, error) { 12 cs, ok := clientset.(*kubernetes.Clientset) 13 if !ok { 14 return Version{}, fmt.Errorf("expected clientset to be of type *kubernetes.Clientset but was %T", clientset) 15 } 16 17 sv, err := cs.ServerVersion() 18 if err != nil { 19 return Version{}, fmt.Errorf("getting server version: %w", err) 20 } 21 22 m, err := strconv.Atoi(regexp.MustCompile(`^(\d+)`).FindString(sv.Minor)) 23 if err != nil { 24 return Version{}, fmt.Errorf("parsing minor version: %w", err) 25 } 26 27 return Version{ 28 Full: sv.Major + "." + sv.Minor, 29 MinorInt: m, 30 }, nil 31 } 32 33 type Version struct { 34 Full string 35 MinorInt int 36 }