summaryrefslogtreecommitdiff
path: root/pkg/varlinkapi/system.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/varlinkapi/system.go')
-rw-r--r--pkg/varlinkapi/system.go57
1 files changed, 57 insertions, 0 deletions
diff --git a/pkg/varlinkapi/system.go b/pkg/varlinkapi/system.go
index 418db6445..63acad909 100644
--- a/pkg/varlinkapi/system.go
+++ b/pkg/varlinkapi/system.go
@@ -1,6 +1,10 @@
package varlinkapi
import (
+ goruntime "runtime"
+ "strings"
+
+ "github.com/projectatomic/libpod/cmd/podman/libpodruntime"
"github.com/projectatomic/libpod/cmd/podman/varlink"
"github.com/projectatomic/libpod/libpod"
)
@@ -28,3 +32,56 @@ func (i *LibpodAPI) Ping(call ioprojectatomicpodman.VarlinkCall) error {
Message: "OK",
})
}
+
+// GetInfo returns details about the podman host and its stores
+func (i *LibpodAPI) GetInfo(call ioprojectatomicpodman.VarlinkCall) error {
+ podmanInfo := ioprojectatomicpodman.PodmanInfo{}
+ runtime, err := libpodruntime.GetRuntime(i.Cli)
+ if err != nil {
+ return call.ReplyRuntimeError(err.Error())
+ }
+ info, err := runtime.Info()
+ if err != nil {
+ return call.ReplyErrorOccurred(err.Error())
+ }
+ host := info[0].Data
+ infoHost := ioprojectatomicpodman.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),
+ }
+ podmanInfo.Host = infoHost
+ store := info[1].Data
+ pmaninfo := ioprojectatomicpodman.InfoPodmanBinary{
+ Compiler: goruntime.Compiler,
+ Go_version: goruntime.Version(),
+ // TODO : How are we going to get this here?
+ //Podman_version:
+ Git_commit: libpod.GitCommit,
+ }
+
+ graphStatus := ioprojectatomicpodman.InfoGraphStatus{
+ Backing_filesystem: store["GraphStatus"].(map[string]string)["Backing Filesystem"],
+ Native_overlay_diff: store["GraphStatus"].(map[string]string)["Native Overlay Diff"],
+ Supports_d_type: store["GraphStatus"].(map[string]string)["Supports d_type"],
+ }
+ infoStore := ioprojectatomicpodman.InfoStore{
+ Graph_driver_name: store["GraphDriverName"].(string),
+ Containers: int64(store["ContainerStore"].(map[string]interface{})["number"].(int)),
+ Images: int64(store["ImageStore"].(map[string]interface{})["number"].(int)),
+ Run_root: store["RunRoot"].(string),
+ Graph_root: store["GraphRoot"].(string),
+ Graph_driver_options: strings.Join(store["GraphOptions"].([]string), ", "),
+ Graph_status: graphStatus,
+ }
+
+ podmanInfo.Store = infoStore
+ podmanInfo.Podman = pmaninfo
+ return call.ReplyGetInfo(podmanInfo)
+}