From 7e566091391612d295544a07df7e438bcfc4dc03 Mon Sep 17 00:00:00 2001 From: Filipe Brandenburger Date: Wed, 30 Jul 2014 15:21:34 -0700 Subject: [PATCH] Handle -version flag on all commands Tested: Passed -version argument to kubelet (and all other binaries): $ output/go/bin/kubecfg -version Kubernetes version 0.1, build 6454a541fd56 Signed-off-by: Filipe Brandenburger --- cmd/apiserver/apiserver.go | 3 +++ cmd/controller-manager/controller-manager.go | 3 +++ cmd/kubecfg/kubecfg.go | 6 +---- cmd/kubelet/kubelet.go | 3 +++ cmd/proxy/proxy.go | 3 +++ hack/test-cmd.sh | 2 +- pkg/version/version.go | 24 ++++++++++++++++++++ 7 files changed, 38 insertions(+), 6 deletions(-) diff --git a/cmd/apiserver/apiserver.go b/cmd/apiserver/apiserver.go index b1b6c4f4d5..c3fef07d79 100644 --- a/cmd/apiserver/apiserver.go +++ b/cmd/apiserver/apiserver.go @@ -29,6 +29,7 @@ import ( "github.com/GoogleCloudPlatform/kubernetes/pkg/cloudprovider" "github.com/GoogleCloudPlatform/kubernetes/pkg/master" "github.com/GoogleCloudPlatform/kubernetes/pkg/util" + "github.com/GoogleCloudPlatform/kubernetes/pkg/version" "github.com/golang/glog" ) @@ -54,6 +55,8 @@ func main() { util.InitLogs() defer util.FlushLogs() + version.PrintAndExitIfRequested() + if len(machineList) == 0 { glog.Fatal("No machines specified!") } diff --git a/cmd/controller-manager/controller-manager.go b/cmd/controller-manager/controller-manager.go index 1e537f45b9..ceb48b79c0 100644 --- a/cmd/controller-manager/controller-manager.go +++ b/cmd/controller-manager/controller-manager.go @@ -28,6 +28,7 @@ import ( "github.com/GoogleCloudPlatform/kubernetes/pkg/client" "github.com/GoogleCloudPlatform/kubernetes/pkg/controller" "github.com/GoogleCloudPlatform/kubernetes/pkg/util" + "github.com/GoogleCloudPlatform/kubernetes/pkg/version" "github.com/coreos/go-etcd/etcd" "github.com/golang/glog" ) @@ -46,6 +47,8 @@ func main() { util.InitLogs() defer util.FlushLogs() + version.PrintAndExitIfRequested() + if len(etcdServerList) == 0 || len(*master) == 0 { glog.Fatal("usage: controller-manager -etcd_servers -master ") } diff --git a/cmd/kubecfg/kubecfg.go b/cmd/kubecfg/kubecfg.go index a9d2609bc3..4ac16f7044 100644 --- a/cmd/kubecfg/kubecfg.go +++ b/cmd/kubecfg/kubecfg.go @@ -37,7 +37,6 @@ import ( ) var ( - versionFlag = flag.Bool("V", false, "Print the version number.") serverVersion = flag.Bool("server_version", false, "Print the server's version number.") preventSkew = flag.Bool("expect_version_match", false, "Fail if server's version doesn't match own version.") httpServer = flag.String("h", "", "The host to connect to.") @@ -107,10 +106,7 @@ func main() { util.InitLogs() defer util.FlushLogs() - if *versionFlag { - fmt.Printf("Version: %#v\n", version.Get()) - os.Exit(0) - } + version.PrintAndExitIfRequested() secure := true var masterServer string diff --git a/cmd/kubelet/kubelet.go b/cmd/kubelet/kubelet.go index 99c19f8e53..839085c270 100644 --- a/cmd/kubelet/kubelet.go +++ b/cmd/kubelet/kubelet.go @@ -35,6 +35,7 @@ import ( kconfig "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/config" "github.com/GoogleCloudPlatform/kubernetes/pkg/tools" "github.com/GoogleCloudPlatform/kubernetes/pkg/util" + "github.com/GoogleCloudPlatform/kubernetes/pkg/version" "github.com/coreos/go-etcd/etcd" "github.com/fsouza/go-dockerclient" "github.com/golang/glog" @@ -95,6 +96,8 @@ func main() { defer util.FlushLogs() rand.Seed(time.Now().UTC().UnixNano()) + version.PrintAndExitIfRequested() + etcd.SetLogger(util.NewLogger("etcd ")) dockerClient, err := docker.NewClient(getDockerEndpoint()) diff --git a/cmd/proxy/proxy.go b/cmd/proxy/proxy.go index 6e6ac24db0..9afb72b03f 100644 --- a/cmd/proxy/proxy.go +++ b/cmd/proxy/proxy.go @@ -22,6 +22,7 @@ import ( "github.com/GoogleCloudPlatform/kubernetes/pkg/proxy" "github.com/GoogleCloudPlatform/kubernetes/pkg/proxy/config" "github.com/GoogleCloudPlatform/kubernetes/pkg/util" + "github.com/GoogleCloudPlatform/kubernetes/pkg/version" "github.com/coreos/go-etcd/etcd" "github.com/golang/glog" ) @@ -40,6 +41,8 @@ func main() { util.InitLogs() defer util.FlushLogs() + version.PrintAndExitIfRequested() + // Set up logger for etcd client etcd.SetLogger(util.NewLogger("etcd ")) diff --git a/hack/test-cmd.sh b/hack/test-cmd.sh index e3610a6ad2..6ac7154978 100755 --- a/hack/test-cmd.sh +++ b/hack/test-cmd.sh @@ -82,7 +82,7 @@ wait_for_url "http://localhost:4001/version" "etcd: " # Check kubecfg -out=$(${GO_OUT}/kubecfg -V) +out=$(${GO_OUT}/kubecfg -version) echo kubecfg: $out # Start kubelet diff --git a/pkg/version/version.go b/pkg/version/version.go index 48f72bd535..25a2e59be1 100644 --- a/pkg/version/version.go +++ b/pkg/version/version.go @@ -16,6 +16,16 @@ limitations under the License. package version +import ( + "flag" + "fmt" + "os" +) + +var ( + versionFlag = flag.Bool("version", false, "Print version information and quit") +) + // Info contains versioning information. // TODO: Add []string of api versions supported? It's still unclear // how we'll want to distribute that information. @@ -34,3 +44,17 @@ func Get() Info { GitCommit: commitFromGit, } } + +// String returns info as a human-friendly version string. +func (info Info) String() string { + return fmt.Sprintf("version %s.%s, build %s", info.Major, info.Minor, info.GitCommit) +} + +// PrintAndExitIfRequested will check if the -version flag was passed +// and, if so, print the version and exit. +func PrintAndExitIfRequested() { + if *versionFlag { + fmt.Printf("Kubernetes %s\n", Get()) + os.Exit(0) + } +}