diff options
-rwxr-xr-x | API.md | 13 | ||||
-rw-r--r-- | cmd/podman/varlink/io.podman.varlink | 8 | ||||
-rw-r--r-- | docs/podman-info.1.md | 83 | ||||
-rw-r--r-- | libpod/info.go | 35 | ||||
-rw-r--r-- | pkg/varlinkapi/system.go | 25 |
5 files changed, 116 insertions, 48 deletions
@@ -141,6 +141,8 @@ in the [API.md](https://github.com/containers/libpod/blob/master/API.md) file in [type ImageSearch](#ImageSearch) +[type InfoDistribution](#InfoDistribution) + [type InfoGraphStatus](#InfoGraphStatus) [type InfoHost](#InfoHost) @@ -1115,6 +1117,13 @@ is_automated [bool](https://godoc.org/builtin#bool) name [string](https://godoc.org/builtin#string) star_count [int](https://godoc.org/builtin#int) +### <a name="InfoDistribution"></a>type InfoDistribution + +InfoDistribution describes the the host's distribution + +distribution [string](https://godoc.org/builtin#string) + +version [string](https://godoc.org/builtin#string) ### <a name="InfoGraphStatus"></a>type InfoGraphStatus InfoGraphStatus describes the detailed status of the storage driver @@ -1128,6 +1137,10 @@ supports_d_type [string](https://godoc.org/builtin#string) InfoHost describes the host stats portion of PodmanInfo +buildah_version [string](https://godoc.org/builtin#string) + +distribution [InfoDistribution](#InfoDistribution) + mem_free [int](https://godoc.org/builtin#int) mem_total [int](https://godoc.org/builtin#int) diff --git a/cmd/podman/varlink/io.podman.varlink b/cmd/podman/varlink/io.podman.varlink index 3cc24249d..810f757ca 100644 --- a/cmd/podman/varlink/io.podman.varlink +++ b/cmd/podman/varlink/io.podman.varlink @@ -124,8 +124,16 @@ type ContainerNameSpace ( ipc: string ) +# InfoDistribution describes the the host's distribution +type InfoDistribution ( + distribution: string, + version: string +) + # InfoHost describes the host stats portion of PodmanInfo type InfoHost ( + buildah_version: string, + distribution: InfoDistribution, mem_free: int, mem_total: int, swap_free: int, diff --git a/docs/podman-info.1.md b/docs/podman-info.1.md index 364aaf3aa..478f79467 100644 --- a/docs/podman-info.1.md +++ b/docs/podman-info.1.md @@ -30,111 +30,116 @@ Run podman info with plain text response: ``` $ podman info host: + BuildahVersion: 1.4-dev Conmon: - package: conmon-1.10.3-1.gite558bd5.fc28.x86_64 - path: /usr/libexec/crio/conmon - version: 'conmon version 1.10.3, commit: 55022fb3be4382a61599b7024a677f9a642ae0a7' - MemFree: 2428579840 - MemTotal: 16679260160 + package: Unknown + path: /usr/libexec/podman/conmon + version: 'conmon version 1.12.0-dev, commit: d724f3d54ad2d95b6de741085d4990190ebfd7ff' + Distribution: + distribution: fedora + version: "28" + MemFree: 1271083008 + MemTotal: 33074233344 OCIRuntime: - package: runc-1.0.0-46.dev.gitb4e2ecb.fc28.x86_64 + package: runc-1.0.0-51.dev.gitfdd8055.fc28.x86_64 path: /usr/bin/runc version: 'runc version spec: 1.0.0' - SwapFree: 0 - SwapTotal: 0 + SwapFree: 34309664768 + SwapTotal: 34359734272 arch: amd64 - cpus: 4 + cpus: 8 hostname: localhost.localdomain - kernel: 4.17.11-200.fc28.x86_64 + kernel: 4.18.7-200.fc28.x86_64 os: linux - uptime: 23h 16m 57.86s (Approximately 0.96 days) + uptime: 218h 49m 33.66s (Approximately 9.08 days) insecure registries: registries: [] registries: registries: - - docker.io - quay.io - registry.fedoraproject.org + - docker.io - registry.access.redhat.com store: ContainerStore: - number: 3 + number: 37 GraphDriverName: overlay GraphOptions: - overlay.mountopt=nodev + - overlay.override_kernel_check=true GraphRoot: /var/lib/containers/storage GraphStatus: - Backing Filesystem: xfs + Backing Filesystem: extfs Native Overlay Diff: "true" Supports d_type: "true" ImageStore: - number: 2 + number: 17 RunRoot: /var/run/containers/storage + ``` Run podman info with JSON formatted response: ``` -$ podman info --debug --format json { - "debug": { - "compiler": "gc", - "git commit": "", - "go version": "go1.10", - "podman version": "0.8.2-dev" - }, "host": { + "BuildahVersion": "1.4-dev", "Conmon": { - "package": "conmon-1.10.3-1.gite558bd5.fc28.x86_64", - "path": "/usr/libexec/crio/conmon", - "version": "conmon version 1.10.3, commit: 55022fb3be4382a61599b7024a677f9a642ae0a7" + "package": "Unknown", + "path": "/usr/libexec/podman/conmon", + "version": "conmon version 1.12.0-dev, commit: d724f3d54ad2d95b6de741085d4990190ebfd7ff" }, - "MemFree": 2484420608, - "MemTotal": 16679260160, + "Distribution": { + "distribution": "fedora", + "version": "28" + }, + "MemFree": 1204109312, + "MemTotal": 33074233344, "OCIRuntime": { - "package": "runc-1.0.0-46.dev.gitb4e2ecb.fc28.x86_64", + "package": "runc-1.0.0-51.dev.gitfdd8055.fc28.x86_64", "path": "/usr/bin/runc", "version": "runc version spec: 1.0.0" }, - "SwapFree": 0, - "SwapTotal": 0, + "SwapFree": 34309664768, + "SwapTotal": 34359734272, "arch": "amd64", - "cpus": 4, + "cpus": 8, "hostname": "localhost.localdomain", - "kernel": "4.17.11-200.fc28.x86_64", + "kernel": "4.18.7-200.fc28.x86_64", "os": "linux", - "uptime": "23h 14m 45.48s (Approximately 0.96 days)" + "uptime": "218h 50m 35.02s (Approximately 9.08 days)" }, "insecure registries": { "registries": [] }, "registries": { "registries": [ - "docker.io", "quay.io", "registry.fedoraproject.org", + "docker.io", "registry.access.redhat.com" ] }, "store": { "ContainerStore": { - "number": 3 + "number": 37 }, "GraphDriverName": "overlay", "GraphOptions": [ - "overlay.mountopt=nodev" + "overlay.mountopt=nodev", + "overlay.override_kernel_check=true" ], "GraphRoot": "/var/lib/containers/storage", "GraphStatus": { - "Backing Filesystem": "xfs", + "Backing Filesystem": "extfs", "Native Overlay Diff": "true", "Supports d_type": "true" }, "ImageStore": { - "number": 2 + "number": 17 }, "RunRoot": "/var/run/containers/storage" } } - ``` +``` Run podman info and only get the registries information. ``` $ podman info --format={{".registries"}} diff --git a/libpod/info.go b/libpod/info.go index 3add1ce0f..4cbf3f734 100644 --- a/libpod/info.go +++ b/libpod/info.go @@ -1,8 +1,10 @@ package libpod import ( + "bufio" "bytes" "fmt" + "github.com/containers/buildah" "io/ioutil" "os" "runtime" @@ -39,6 +41,7 @@ func (r *Runtime) hostInfo() (map[string]interface{}, error) { info["SwapFree"] = mi.SwapFree conmonVersion, _ := r.GetConmonVersion() ociruntimeVersion, _ := r.GetOCIRuntimeVersion() + hostDistributionInfo := r.GetHostDistributionInfo() info["Conmon"] = map[string]interface{}{ "path": r.conmonPath, "package": r.ociRuntime.conmonPackage(), @@ -49,7 +52,12 @@ func (r *Runtime) hostInfo() (map[string]interface{}, error) { "package": r.ociRuntime.pathPackage(), "version": ociruntimeVersion, } + info["Distribution"] = map[string]interface{}{ + "distribution": hostDistributionInfo["Distribution"], + "version": hostDistributionInfo["Version"], + } + info["BuildahVersion"] = buildah.Version kv, err := readKernelVersion() if err != nil { return nil, errors.Wrapf(err, "error reading kernel version") @@ -178,3 +186,30 @@ func (r *Runtime) GetOCIRuntimeVersion() (string, error) { } return strings.TrimSuffix(output, "\n"), nil } + +// GetHostDistributionInfo returns a map containing the host's distribution and version +func (r *Runtime) GetHostDistributionInfo() map[string]string { + dist := make(map[string]string) + + // Populate values in case we cannot find the values + // or the file + dist["Distribution"] = "unknown" + dist["Version"] = "unknown" + + f, err := os.Open("/etc/os-release") + if err != nil { + return dist + } + defer f.Close() + + l := bufio.NewScanner(f) + for l.Scan() { + if strings.HasPrefix(l.Text(), "ID=") { + dist["Distribution"] = strings.TrimPrefix(l.Text(), "ID=") + } + if strings.HasPrefix(l.Text(), "VERSION_ID=") { + dist["Version"] = strings.Trim(strings.TrimPrefix(l.Text(), "VERSION_ID="), "\"") + } + } + return dist +} diff --git a/pkg/varlinkapi/system.go b/pkg/varlinkapi/system.go index 54bce3d35..287f42209 100644 --- a/pkg/varlinkapi/system.go +++ b/pkg/varlinkapi/system.go @@ -42,17 +42,24 @@ func (i *LibpodAPI) GetInfo(call iopodman.VarlinkCall) error { if err != nil { return call.ReplyErrorOccurred(err.Error()) } + host := info[0].Data + distribution := iopodman.InfoDistribution{ + Distribution: host["Distribution"].(map[string]interface{})["distribution"].(string), + Version: host["Distribution"].(map[string]interface{})["version"].(string), + } infoHost := iopodman.InfoHost{ - Mem_free: host["MemFree"].(int64), - Mem_total: host["MemTotal"].(int64), - Swap_free: host["SwapFree"].(int64), - Arch: host["arch"].(string), - Cpus: int64(host["cpus"].(int)), - Hostname: host["hostname"].(string), - Kernel: host["kernel"].(string), - Os: host["os"].(string), - Uptime: host["uptime"].(string), + Buildah_version: host["BuildahVersion"].(string), + Distribution: distribution, + Mem_free: host["MemFree"].(int64), + Mem_total: host["MemTotal"].(int64), + Swap_free: host["SwapFree"].(int64), + Arch: host["arch"].(string), + Cpus: int64(host["cpus"].(int)), + Hostname: host["hostname"].(string), + Kernel: host["kernel"].(string), + Os: host["os"].(string), + Uptime: host["uptime"].(string), } podmanInfo.Host = infoHost store := info[1].Data |