diff --git a/Makefile b/Makefile index bd625154..295562a9 100644 --- a/Makefile +++ b/Makefile @@ -1,13 +1,16 @@ -.PHONY: all container push clean node-problem-detector vet fmt +.PHONY: all container push clean node-problem-detector vet fmt version all: push -# See node-problem-detector.yaml for the version currently running-- bump this ahead before rebuilding! -TAG = v0.2 +VERSION := $(shell git describe --tags --dirty) + +TAG ?= $(VERSION) PROJ = google_containers -PKG_SOURCES := $(shell find pkg -name '*.go') +PKG := k8s.io/node-problem-detector + +PKG_SOURCES := $(shell find pkg cmd -name '*.go') vet: go list ./... | grep -v "./vendor/*" | xargs go vet @@ -15,8 +18,13 @@ vet: fmt: find . -type f -name "*.go" | grep -v "./vendor/*" | xargs gofmt -s -w -l -node-problem-detector: $(PKG_SOURCES) node_problem_detector.go fmt vet - GOOS=linux go build -ldflags '-w -extldflags "-static"' -o node-problem-detector +version: + @echo $(VERSION) + +node-problem-detector: $(PKG_SOURCES) fmt vet + GOOS=linux go build -o node-problem-detector \ + -ldflags '-w -extldflags "-static" -X $(PKG)/pkg/version.version=$(VERSION)' \ + cmd/node_problem_detector.go test: go test -timeout=1m -v -race ./pkg/... diff --git a/node_problem_detector.go b/cmd/node_problem_detector.go similarity index 81% rename from node_problem_detector.go rename to cmd/node_problem_detector.go index f237b9d1..4203140e 100644 --- a/node_problem_detector.go +++ b/cmd/node_problem_detector.go @@ -19,16 +19,20 @@ package main import ( "flag" "net/url" + "os" "k8s.io/node-problem-detector/pkg/kernelmonitor" "k8s.io/node-problem-detector/pkg/problemdetector" + "k8s.io/node-problem-detector/pkg/version" "github.com/golang/glog" ) +// TODO: Move flags to options directory. var ( kernelMonitorConfigPath = flag.String("kernel-monitor", "/config/kernel-monitor.json", "The path to the kernel monitor config file") - apiServerOverride = flag.String("apiserver-override", "", "custom URI used to connect to Kubernetes ApiServer") + apiServerOverride = flag.String("apiserver-override", "", "Custom URI used to connect to Kubernetes ApiServer") + printVersion = flag.Bool("version", false, "Print version information and quit") ) func validateCmdParams() { @@ -41,6 +45,11 @@ func main() { flag.Parse() validateCmdParams() + if *printVersion { + version.PrintVersion() + os.Exit(0) + } + k := kernelmonitor.NewKernelMonitorOrDie(*kernelMonitorConfigPath) p := problemdetector.NewProblemDetector(k, *apiServerOverride) p.Run() diff --git a/pkg/version/version.go b/pkg/version/version.go new file mode 100644 index 00000000..781dbbf0 --- /dev/null +++ b/pkg/version/version.go @@ -0,0 +1,23 @@ +/* +Copyright 2016 The Kubernetes Authors. +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package version + +import "fmt" + +// version defines the version +var version string = "UNKNOWN" + +func PrintVersion() { + fmt.Println(version) +}