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  }