From 993a8da3aa9bc771fc2e0a5745df20d95ae1c111 Mon Sep 17 00:00:00 2001 From: bin liu Date: Tue, 20 Oct 2020 20:06:39 +0800 Subject: [PATCH] kata-monitor: add version subcommand This add a subcommand/options for `kata-monitor` command. Fixes: #1004 Signed-off-by: bin liu --- src/runtime/Makefile | 5 ++- src/runtime/cli/kata-monitor/main.go | 67 ++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 2 deletions(-) diff --git a/src/runtime/Makefile b/src/runtime/Makefile index e8052b8e15..eaabb8976c 100644 --- a/src/runtime/Makefile +++ b/src/runtime/Makefile @@ -603,8 +603,9 @@ $(SHIMV2_OUTPUT): $(SOURCES) $(GENERATED_FILES) $(MAKEFILE_LIST) $(QUIET_BUILD)(cd $(SHIMV2_DIR)/ && ln -fs $(GENERATED_CONFIG)) $(QUIET_BUILD)(cd $(SHIMV2_DIR)/ && go build $(KATA_LDFLAGS) $(BUILDFLAGS) -o $@ .) -$(MONITOR_OUTPUT): $(SOURCES) $(GENERATED_FILES) $(MAKEFILE_LIST) - $(QUIET_BUILD)(cd $(MONITOR_DIR)/ && go build $(KATA_LDFLAGS) $(BUILDFLAGS) -o $@ .) +$(MONITOR_OUTPUT): $(SOURCES) $(GENERATED_FILES) $(MAKEFILE_LIST) .git-commit + $(QUIET_BUILD)(cd $(MONITOR_DIR)/ && go build \ + --ldflags "-X main.GitCommit=$(shell cat .git-commit)" -o $@ .) .PHONY: \ check \ diff --git a/src/runtime/cli/kata-monitor/main.go b/src/runtime/cli/kata-monitor/main.go index 6f66504b03..accd211945 100644 --- a/src/runtime/cli/kata-monitor/main.go +++ b/src/runtime/cli/kata-monitor/main.go @@ -9,6 +9,8 @@ import ( "flag" "net/http" "os" + "runtime" + "text/template" "time" kataMonitor "github.com/kata-containers/kata-containers/src/runtime/pkg/kata-monitor" @@ -20,12 +22,77 @@ var containerdAddr = flag.String("containerd-address", "/run/containerd/containe var containerdConfig = flag.String("containerd-conf", "/etc/containerd/config.toml", "Containerd config file.") var logLevel = flag.String("log-level", "info", "Log level of logrus(trace/debug/info/warn/error/fatal/panic).") +// These values are overridden via ldflags +var ( + appName = "kata-monitor" + // version is the kata monitor version. + version = "0.1.0" + + GitCommit = "unknown-commit" +) + +type versionInfo struct { + AppName string + Version string + GitCommit string + GoVersion string + Os string + Arch string +} + +var versionTemplate = `{{.AppName}} + Version: {{.Version}} + Go version: {{.GoVersion}} + Git commit: {{.GitCommit}} + OS/Arch: {{.Os}}/{{.Arch}} +` + +func printVersion(ver versionInfo) { + t, err := template.New("version").Parse(versionTemplate) + + if err = t.Execute(os.Stdout, ver); err != nil { + panic(err) + } +} + func main() { + ver := versionInfo{ + AppName: appName, + Version: version, + GoVersion: runtime.Version(), + Os: runtime.GOOS, + Arch: runtime.GOARCH, + GitCommit: GitCommit, + } + + if len(os.Args) == 2 && (os.Args[1] == "--version" || os.Args[1] == "version") { + printVersion(ver) + return + } + flag.Parse() // init logrus initLog() + announceFields := logrus.Fields{ + // properties from version info + "app": ver.AppName, + "version": ver.Version, + "go-version": ver.GoVersion, + "os": ver.Os, + "arch": ver.Arch, + "git-commit": ver.GitCommit, + + // properties from command-line options + "listen-address": *monitorListenAddr, + "containerd-address": *containerdAddr, + "containerd-conf": *containerdConfig, + "log-level": *logLevel, + } + + logrus.WithFields(announceFields).Info("announce") + // create new kataMonitor km, err := kataMonitor.NewKataMonitor(*containerdAddr, *containerdConfig) if err != nil {