diff --git a/pkg/kudoctl/cmd/diagnostics/print_test.go b/pkg/kudoctl/cmd/diagnostics/print_test.go index ebe2ecc96..bb3f10816 100644 --- a/pkg/kudoctl/cmd/diagnostics/print_test.go +++ b/pkg/kudoctl/cmd/diagnostics/print_test.go @@ -82,6 +82,7 @@ builddate: "1970-01-01T00:00:00Z" goversion: go1.13.4 compiler: gc platform: linux/amd64 +kubernetesclientversion: v0.18.6 ` ) @@ -322,12 +323,13 @@ func TestPrinter_printYaml(t *testing.T) { { desc: "print Yaml OK", v: version.Info{ - GitVersion: "dev", - GitCommit: "dev", - BuildDate: "1970-01-01T00:00:00Z", - GoVersion: "go1.13.4", - Compiler: "gc", - Platform: "linux/amd64", + GitVersion: "dev", + GitCommit: "dev", + BuildDate: "1970-01-01T00:00:00Z", + GoVersion: "go1.13.4", + Compiler: "gc", + Platform: "linux/amd64", + KubernetesClientVersion: "v0.18.6", }, parentDir: "root", name: "version", diff --git a/pkg/version/version.go b/pkg/version/version.go index a0411502f..a6934ad9f 100644 --- a/pkg/version/version.go +++ b/pkg/version/version.go @@ -4,6 +4,7 @@ import ( "fmt" "os" "runtime" + "runtime/debug" "strings" "github.com/Masterminds/semver/v3" @@ -11,12 +12,13 @@ import ( // Info contains versioning information. type Info struct { - GitVersion string `json:"gitVersion"` - GitCommit string `json:"gitCommit"` - BuildDate string `json:"buildDate"` - GoVersion string `json:"goVersion"` - Compiler string `json:"compiler"` - Platform string `json:"platform"` + GitVersion string `json:"gitVersion"` + GitCommit string `json:"gitCommit"` + BuildDate string `json:"buildDate"` + GoVersion string `json:"goVersion"` + Compiler string `json:"compiler"` + Platform string `json:"platform"` + KubernetesClientVersion string `json:"kubernetesClientVersion"` } // String returns info as a human-friendly version string. @@ -41,7 +43,7 @@ func Get() Info { gitCommit = "dev" } - return Info{ + result := Info{ GitVersion: gitVersion, GitCommit: gitCommit, BuildDate: buildDate, @@ -49,6 +51,16 @@ func Get() Info { Compiler: runtime.Compiler, Platform: fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH), } + + if info, ok := debug.ReadBuildInfo(); ok { + for _, dep := range info.Deps { + if dep.Path == "k8s.io/client-go" { + result.KubernetesClientVersion = dep.Version + } + } + } + + return result } // Version is an extension of semver.Version