diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2020-01-28 08:21:18 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-28 08:21:18 -0800 |
commit | a8bd3473e0bb648be88b6d9b84f18fc097de70ee (patch) | |
tree | 08f7cd1282654c0a82d16d8db5de41d2f6f4bcd5 /pkg/api/handlers/version.go | |
parent | d07c26310697d8874219731c6c42f6d0d0330e87 (diff) | |
parent | 54587335bee45bdd5e4b975b4760b2898a138f2a (diff) | |
download | podman-a8bd3473e0bb648be88b6d9b84f18fc097de70ee.tar.gz podman-a8bd3473e0bb648be88b6d9b84f18fc097de70ee.tar.bz2 podman-a8bd3473e0bb648be88b6d9b84f18fc097de70ee.zip |
Merge pull request #4980 from baude/bindingdocs
[CI:DOCS]Binding overhauls
Diffstat (limited to 'pkg/api/handlers/version.go')
-rw-r--r-- | pkg/api/handlers/version.go | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/pkg/api/handlers/version.go b/pkg/api/handlers/version.go new file mode 100644 index 000000000..94166952c --- /dev/null +++ b/pkg/api/handlers/version.go @@ -0,0 +1,73 @@ +package handlers + +import ( + "fmt" + "net/http" + goRuntime "runtime" + "time" + + "github.com/containers/libpod/libpod" + "github.com/containers/libpod/libpod/define" + "github.com/containers/libpod/pkg/api/handlers/utils" + docker "github.com/docker/docker/api/types" + "github.com/pkg/errors" +) + +const ( + DefaultApiVersion = "1.40" // See https://docs.docker.com/engine/api/v1.40/ + MinimalApiVersion = "1.24" +) + +func VersionHandler(w http.ResponseWriter, r *http.Request) { + // 200 ok + // 500 internal + runtime := r.Context().Value("runtime").(*libpod.Runtime) + + versionInfo, err := define.GetVersion() + if err != nil { + utils.Error(w, "Something went wrong.", http.StatusInternalServerError, err) + return + } + + infoData, err := runtime.Info() + if err != nil { + utils.Error(w, "Something went wrong.", http.StatusInternalServerError, errors.Wrapf(err, "Failed to obtain system memory info")) + return + } + hostInfo := infoData[0].Data + + components := []docker.ComponentVersion{{ + Name: "Podman Engine", + Version: versionInfo.Version, + Details: map[string]string{ + "APIVersion": DefaultApiVersion, + "Arch": goRuntime.GOARCH, + "BuildTime": time.Unix(versionInfo.Built, 0).Format(time.RFC3339), + "Experimental": "true", + "GitCommit": versionInfo.GitCommit, + "GoVersion": versionInfo.GoVersion, + "KernelVersion": hostInfo["kernel"].(string), + "MinAPIVersion": MinimalApiVersion, + "Os": goRuntime.GOOS, + }, + }} + + utils.WriteResponse(w, http.StatusOK, Version{Version: docker.Version{ + Platform: struct { + Name string + }{ + Name: fmt.Sprintf("%s/%s/%s", goRuntime.GOOS, goRuntime.GOARCH, hostInfo["Distribution"].(map[string]interface{})["distribution"].(string)), + }, + APIVersion: components[0].Details["APIVersion"], + Arch: components[0].Details["Arch"], + BuildTime: components[0].Details["BuildTime"], + Components: components, + Experimental: true, + GitCommit: components[0].Details["GitCommit"], + GoVersion: components[0].Details["GoVersion"], + KernelVersion: components[0].Details["KernelVersion"], + MinAPIVersion: components[0].Details["MinAPIVersion"], + Os: components[0].Details["Os"], + Version: components[0].Version, + }}) +} |