| 
									
										
										
											
												Add buildah info command
Add info command to display buildah system information.
```
$ buildah info
{
    "host": {
        "Distribution": {
            "distribution": "ubuntu",
            "version": "18.04"
        },
        "MemTotal": 16702980096,
        "MenFree": 309428224,
        "SwapFree": 2146693120,
        "SwapTotal": 2147479552,
        "arch": "amd64",
        "cpus": 4,
        "hostname": "localhost.localdomain",
        "kernel": "4.15.0-36-generic",
        "os": "linux",
        "rootless": false,
        "uptime": "91h 30m 59.9s (Approximately 3.79 days)"
    },
    "store": {
        "ContainerStore": {
            "number": 2
        },
        "GraphDriverName": "overlay",
        "GraphOptions": [
            "overlay.override_kernel_check=true"
        ],
        "GraphRoot": "/var/lib/containers/storage",
        "GraphStatus": {
            "Backing Filesystem": "extfs",
            "Native Overlay Diff": "true",
            "Supports d_type": "true"
        },
        "ImageStore": {
            "number": 1
        },
        "RunRoot": "/var/run/containers/storage"
    }
}
```
Signed-off-by: Zhou Hao <zhouhao@cn.fujitsu.com>
Closes: #1195
Approved by: rhatdan
											
										 
											2018-11-25 16:29:12 +08:00
										 |  |  | package buildah | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"bufio" | 
					
						
							|  |  |  | 	"bytes" | 
					
						
							|  |  |  | 	"fmt" | 
					
						
							|  |  |  | 	"os" | 
					
						
							|  |  |  | 	"runtime" | 
					
						
							|  |  |  | 	"strconv" | 
					
						
							|  |  |  | 	"strings" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-26 14:39:06 +08:00
										 |  |  | 	internalUtil "github.com/containers/buildah/internal/util" | 
					
						
							| 
									
										
										
										
											2022-07-15 20:17:48 +08:00
										 |  |  | 	putil "github.com/containers/buildah/pkg/util" | 
					
						
							| 
									
										
										
										
											2019-11-13 22:49:15 +08:00
										 |  |  | 	"github.com/containers/buildah/util" | 
					
						
							| 
									
										
										
										
											2024-02-22 17:43:40 +08:00
										 |  |  | 	"github.com/containers/common/pkg/cgroups" | 
					
						
							| 
									
										
										
											
												Add buildah info command
Add info command to display buildah system information.
```
$ buildah info
{
    "host": {
        "Distribution": {
            "distribution": "ubuntu",
            "version": "18.04"
        },
        "MemTotal": 16702980096,
        "MenFree": 309428224,
        "SwapFree": 2146693120,
        "SwapTotal": 2147479552,
        "arch": "amd64",
        "cpus": 4,
        "hostname": "localhost.localdomain",
        "kernel": "4.15.0-36-generic",
        "os": "linux",
        "rootless": false,
        "uptime": "91h 30m 59.9s (Approximately 3.79 days)"
    },
    "store": {
        "ContainerStore": {
            "number": 2
        },
        "GraphDriverName": "overlay",
        "GraphOptions": [
            "overlay.override_kernel_check=true"
        ],
        "GraphRoot": "/var/lib/containers/storage",
        "GraphStatus": {
            "Backing Filesystem": "extfs",
            "Native Overlay Diff": "true",
            "Supports d_type": "true"
        },
        "ImageStore": {
            "number": 1
        },
        "RunRoot": "/var/run/containers/storage"
    }
}
```
Signed-off-by: Zhou Hao <zhouhao@cn.fujitsu.com>
Closes: #1195
Approved by: rhatdan
											
										 
											2018-11-25 16:29:12 +08:00
										 |  |  | 	"github.com/containers/storage" | 
					
						
							|  |  |  | 	"github.com/containers/storage/pkg/system" | 
					
						
							| 
									
										
										
										
											2020-03-31 21:56:18 +08:00
										 |  |  | 	"github.com/containers/storage/pkg/unshare" | 
					
						
							| 
									
										
										
										
											2021-11-05 01:29:08 +08:00
										 |  |  | 	v1 "github.com/opencontainers/image-spec/specs-go/v1" | 
					
						
							| 
									
										
										
											
												Add buildah info command
Add info command to display buildah system information.
```
$ buildah info
{
    "host": {
        "Distribution": {
            "distribution": "ubuntu",
            "version": "18.04"
        },
        "MemTotal": 16702980096,
        "MenFree": 309428224,
        "SwapFree": 2146693120,
        "SwapTotal": 2147479552,
        "arch": "amd64",
        "cpus": 4,
        "hostname": "localhost.localdomain",
        "kernel": "4.15.0-36-generic",
        "os": "linux",
        "rootless": false,
        "uptime": "91h 30m 59.9s (Approximately 3.79 days)"
    },
    "store": {
        "ContainerStore": {
            "number": 2
        },
        "GraphDriverName": "overlay",
        "GraphOptions": [
            "overlay.override_kernel_check=true"
        ],
        "GraphRoot": "/var/lib/containers/storage",
        "GraphStatus": {
            "Backing Filesystem": "extfs",
            "Native Overlay Diff": "true",
            "Supports d_type": "true"
        },
        "ImageStore": {
            "number": 1
        },
        "RunRoot": "/var/run/containers/storage"
    }
}
```
Signed-off-by: Zhou Hao <zhouhao@cn.fujitsu.com>
Closes: #1195
Approved by: rhatdan
											
										 
											2018-11-25 16:29:12 +08:00
										 |  |  | 	"github.com/sirupsen/logrus" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // InfoData holds the info type, i.e store, host etc and the data for each type
 | 
					
						
							|  |  |  | type InfoData struct { | 
					
						
							|  |  |  | 	Type string | 
					
						
							|  |  |  | 	Data map[string]interface{} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Info returns the store and host information
 | 
					
						
							|  |  |  | func Info(store storage.Store) ([]InfoData, error) { | 
					
						
							|  |  |  | 	info := []InfoData{} | 
					
						
							|  |  |  | 	// get host information
 | 
					
						
							| 
									
										
										
										
											2019-07-16 16:47:48 +08:00
										 |  |  | 	hostInfo := hostInfo() | 
					
						
							| 
									
										
										
											
												Add buildah info command
Add info command to display buildah system information.
```
$ buildah info
{
    "host": {
        "Distribution": {
            "distribution": "ubuntu",
            "version": "18.04"
        },
        "MemTotal": 16702980096,
        "MenFree": 309428224,
        "SwapFree": 2146693120,
        "SwapTotal": 2147479552,
        "arch": "amd64",
        "cpus": 4,
        "hostname": "localhost.localdomain",
        "kernel": "4.15.0-36-generic",
        "os": "linux",
        "rootless": false,
        "uptime": "91h 30m 59.9s (Approximately 3.79 days)"
    },
    "store": {
        "ContainerStore": {
            "number": 2
        },
        "GraphDriverName": "overlay",
        "GraphOptions": [
            "overlay.override_kernel_check=true"
        ],
        "GraphRoot": "/var/lib/containers/storage",
        "GraphStatus": {
            "Backing Filesystem": "extfs",
            "Native Overlay Diff": "true",
            "Supports d_type": "true"
        },
        "ImageStore": {
            "number": 1
        },
        "RunRoot": "/var/run/containers/storage"
    }
}
```
Signed-off-by: Zhou Hao <zhouhao@cn.fujitsu.com>
Closes: #1195
Approved by: rhatdan
											
										 
											2018-11-25 16:29:12 +08:00
										 |  |  | 	info = append(info, InfoData{Type: "host", Data: hostInfo}) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// get store information
 | 
					
						
							|  |  |  | 	storeInfo, err := storeInfo(store) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		logrus.Error(err, "error getting store info") | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	info = append(info, InfoData{Type: "store", Data: storeInfo}) | 
					
						
							|  |  |  | 	return info, nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-16 16:47:48 +08:00
										 |  |  | func hostInfo() map[string]interface{} { | 
					
						
							| 
									
										
										
											
												Add buildah info command
Add info command to display buildah system information.
```
$ buildah info
{
    "host": {
        "Distribution": {
            "distribution": "ubuntu",
            "version": "18.04"
        },
        "MemTotal": 16702980096,
        "MenFree": 309428224,
        "SwapFree": 2146693120,
        "SwapTotal": 2147479552,
        "arch": "amd64",
        "cpus": 4,
        "hostname": "localhost.localdomain",
        "kernel": "4.15.0-36-generic",
        "os": "linux",
        "rootless": false,
        "uptime": "91h 30m 59.9s (Approximately 3.79 days)"
    },
    "store": {
        "ContainerStore": {
            "number": 2
        },
        "GraphDriverName": "overlay",
        "GraphOptions": [
            "overlay.override_kernel_check=true"
        ],
        "GraphRoot": "/var/lib/containers/storage",
        "GraphStatus": {
            "Backing Filesystem": "extfs",
            "Native Overlay Diff": "true",
            "Supports d_type": "true"
        },
        "ImageStore": {
            "number": 1
        },
        "RunRoot": "/var/run/containers/storage"
    }
}
```
Signed-off-by: Zhou Hao <zhouhao@cn.fujitsu.com>
Closes: #1195
Approved by: rhatdan
											
										 
											2018-11-25 16:29:12 +08:00
										 |  |  | 	info := map[string]interface{}{} | 
					
						
							| 
									
										
										
										
											2022-09-26 14:39:06 +08:00
										 |  |  | 	ps := internalUtil.NormalizePlatform(v1.Platform{OS: runtime.GOOS, Architecture: runtime.GOARCH}) | 
					
						
							| 
									
										
										
										
											2021-11-05 01:29:08 +08:00
										 |  |  | 	info["os"] = ps.OS | 
					
						
							|  |  |  | 	info["arch"] = ps.Architecture | 
					
						
							|  |  |  | 	info["variant"] = ps.Variant | 
					
						
							| 
									
										
										
											
												Add buildah info command
Add info command to display buildah system information.
```
$ buildah info
{
    "host": {
        "Distribution": {
            "distribution": "ubuntu",
            "version": "18.04"
        },
        "MemTotal": 16702980096,
        "MenFree": 309428224,
        "SwapFree": 2146693120,
        "SwapTotal": 2147479552,
        "arch": "amd64",
        "cpus": 4,
        "hostname": "localhost.localdomain",
        "kernel": "4.15.0-36-generic",
        "os": "linux",
        "rootless": false,
        "uptime": "91h 30m 59.9s (Approximately 3.79 days)"
    },
    "store": {
        "ContainerStore": {
            "number": 2
        },
        "GraphDriverName": "overlay",
        "GraphOptions": [
            "overlay.override_kernel_check=true"
        ],
        "GraphRoot": "/var/lib/containers/storage",
        "GraphStatus": {
            "Backing Filesystem": "extfs",
            "Native Overlay Diff": "true",
            "Supports d_type": "true"
        },
        "ImageStore": {
            "number": 1
        },
        "RunRoot": "/var/run/containers/storage"
    }
}
```
Signed-off-by: Zhou Hao <zhouhao@cn.fujitsu.com>
Closes: #1195
Approved by: rhatdan
											
										 
											2018-11-25 16:29:12 +08:00
										 |  |  | 	info["cpus"] = runtime.NumCPU() | 
					
						
							| 
									
										
										
										
											2019-03-25 18:23:56 +08:00
										 |  |  | 	info["rootless"] = unshare.IsRootless() | 
					
						
							| 
									
										
										
										
											2019-09-30 19:26:00 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-22 17:43:40 +08:00
										 |  |  | 	unified, err := cgroups.IsCgroup2UnifiedMode() | 
					
						
							| 
									
										
										
										
											2019-09-30 19:26:00 +08:00
										 |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		logrus.Error(err, "err reading cgroups mode") | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	cgroupVersion := "v1" | 
					
						
							| 
									
										
										
										
											2019-11-13 22:49:15 +08:00
										 |  |  | 	ociruntime := util.Runtime() | 
					
						
							| 
									
										
										
										
											2019-09-30 19:26:00 +08:00
										 |  |  | 	if unified { | 
					
						
							|  |  |  | 		cgroupVersion = "v2" | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	info["CgroupVersion"] = cgroupVersion | 
					
						
							| 
									
										
										
										
											2019-11-08 03:17:35 +08:00
										 |  |  | 	info["OCIRuntime"] = ociruntime | 
					
						
							| 
									
										
										
										
											2019-09-30 19:26:00 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
											
												Add buildah info command
Add info command to display buildah system information.
```
$ buildah info
{
    "host": {
        "Distribution": {
            "distribution": "ubuntu",
            "version": "18.04"
        },
        "MemTotal": 16702980096,
        "MenFree": 309428224,
        "SwapFree": 2146693120,
        "SwapTotal": 2147479552,
        "arch": "amd64",
        "cpus": 4,
        "hostname": "localhost.localdomain",
        "kernel": "4.15.0-36-generic",
        "os": "linux",
        "rootless": false,
        "uptime": "91h 30m 59.9s (Approximately 3.79 days)"
    },
    "store": {
        "ContainerStore": {
            "number": 2
        },
        "GraphDriverName": "overlay",
        "GraphOptions": [
            "overlay.override_kernel_check=true"
        ],
        "GraphRoot": "/var/lib/containers/storage",
        "GraphStatus": {
            "Backing Filesystem": "extfs",
            "Native Overlay Diff": "true",
            "Supports d_type": "true"
        },
        "ImageStore": {
            "number": 1
        },
        "RunRoot": "/var/run/containers/storage"
    }
}
```
Signed-off-by: Zhou Hao <zhouhao@cn.fujitsu.com>
Closes: #1195
Approved by: rhatdan
											
										 
											2018-11-25 16:29:12 +08:00
										 |  |  | 	mi, err := system.ReadMemInfo() | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		logrus.Error(err, "err reading memory info") | 
					
						
							|  |  |  | 		info["MemTotal"] = "" | 
					
						
							| 
									
										
										
										
											2020-08-03 19:48:46 +08:00
										 |  |  | 		info["MemFree"] = "" | 
					
						
							| 
									
										
										
											
												Add buildah info command
Add info command to display buildah system information.
```
$ buildah info
{
    "host": {
        "Distribution": {
            "distribution": "ubuntu",
            "version": "18.04"
        },
        "MemTotal": 16702980096,
        "MenFree": 309428224,
        "SwapFree": 2146693120,
        "SwapTotal": 2147479552,
        "arch": "amd64",
        "cpus": 4,
        "hostname": "localhost.localdomain",
        "kernel": "4.15.0-36-generic",
        "os": "linux",
        "rootless": false,
        "uptime": "91h 30m 59.9s (Approximately 3.79 days)"
    },
    "store": {
        "ContainerStore": {
            "number": 2
        },
        "GraphDriverName": "overlay",
        "GraphOptions": [
            "overlay.override_kernel_check=true"
        ],
        "GraphRoot": "/var/lib/containers/storage",
        "GraphStatus": {
            "Backing Filesystem": "extfs",
            "Native Overlay Diff": "true",
            "Supports d_type": "true"
        },
        "ImageStore": {
            "number": 1
        },
        "RunRoot": "/var/run/containers/storage"
    }
}
```
Signed-off-by: Zhou Hao <zhouhao@cn.fujitsu.com>
Closes: #1195
Approved by: rhatdan
											
										 
											2018-11-25 16:29:12 +08:00
										 |  |  | 		info["SwapTotal"] = "" | 
					
						
							|  |  |  | 		info["SwapFree"] = "" | 
					
						
							|  |  |  | 	} else { | 
					
						
							|  |  |  | 		info["MemTotal"] = mi.MemTotal | 
					
						
							| 
									
										
										
										
											2020-08-03 19:48:46 +08:00
										 |  |  | 		info["MemFree"] = mi.MemFree | 
					
						
							| 
									
										
										
											
												Add buildah info command
Add info command to display buildah system information.
```
$ buildah info
{
    "host": {
        "Distribution": {
            "distribution": "ubuntu",
            "version": "18.04"
        },
        "MemTotal": 16702980096,
        "MenFree": 309428224,
        "SwapFree": 2146693120,
        "SwapTotal": 2147479552,
        "arch": "amd64",
        "cpus": 4,
        "hostname": "localhost.localdomain",
        "kernel": "4.15.0-36-generic",
        "os": "linux",
        "rootless": false,
        "uptime": "91h 30m 59.9s (Approximately 3.79 days)"
    },
    "store": {
        "ContainerStore": {
            "number": 2
        },
        "GraphDriverName": "overlay",
        "GraphOptions": [
            "overlay.override_kernel_check=true"
        ],
        "GraphRoot": "/var/lib/containers/storage",
        "GraphStatus": {
            "Backing Filesystem": "extfs",
            "Native Overlay Diff": "true",
            "Supports d_type": "true"
        },
        "ImageStore": {
            "number": 1
        },
        "RunRoot": "/var/run/containers/storage"
    }
}
```
Signed-off-by: Zhou Hao <zhouhao@cn.fujitsu.com>
Closes: #1195
Approved by: rhatdan
											
										 
											2018-11-25 16:29:12 +08:00
										 |  |  | 		info["SwapTotal"] = mi.SwapTotal | 
					
						
							|  |  |  | 		info["SwapFree"] = mi.SwapFree | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	hostDistributionInfo := getHostDistributionInfo() | 
					
						
							|  |  |  | 	info["Distribution"] = map[string]interface{}{ | 
					
						
							|  |  |  | 		"distribution": hostDistributionInfo["Distribution"], | 
					
						
							|  |  |  | 		"version":      hostDistributionInfo["Version"], | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-15 20:17:48 +08:00
										 |  |  | 	kv, err := putil.ReadKernelVersion() | 
					
						
							| 
									
										
										
											
												Add buildah info command
Add info command to display buildah system information.
```
$ buildah info
{
    "host": {
        "Distribution": {
            "distribution": "ubuntu",
            "version": "18.04"
        },
        "MemTotal": 16702980096,
        "MenFree": 309428224,
        "SwapFree": 2146693120,
        "SwapTotal": 2147479552,
        "arch": "amd64",
        "cpus": 4,
        "hostname": "localhost.localdomain",
        "kernel": "4.15.0-36-generic",
        "os": "linux",
        "rootless": false,
        "uptime": "91h 30m 59.9s (Approximately 3.79 days)"
    },
    "store": {
        "ContainerStore": {
            "number": 2
        },
        "GraphDriverName": "overlay",
        "GraphOptions": [
            "overlay.override_kernel_check=true"
        ],
        "GraphRoot": "/var/lib/containers/storage",
        "GraphStatus": {
            "Backing Filesystem": "extfs",
            "Native Overlay Diff": "true",
            "Supports d_type": "true"
        },
        "ImageStore": {
            "number": 1
        },
        "RunRoot": "/var/run/containers/storage"
    }
}
```
Signed-off-by: Zhou Hao <zhouhao@cn.fujitsu.com>
Closes: #1195
Approved by: rhatdan
											
										 
											2018-11-25 16:29:12 +08:00
										 |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		logrus.Error(err, "error reading kernel version") | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	info["kernel"] = kv | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-15 20:17:48 +08:00
										 |  |  | 	upDuration, err := putil.ReadUptime() | 
					
						
							| 
									
										
										
											
												Add buildah info command
Add info command to display buildah system information.
```
$ buildah info
{
    "host": {
        "Distribution": {
            "distribution": "ubuntu",
            "version": "18.04"
        },
        "MemTotal": 16702980096,
        "MenFree": 309428224,
        "SwapFree": 2146693120,
        "SwapTotal": 2147479552,
        "arch": "amd64",
        "cpus": 4,
        "hostname": "localhost.localdomain",
        "kernel": "4.15.0-36-generic",
        "os": "linux",
        "rootless": false,
        "uptime": "91h 30m 59.9s (Approximately 3.79 days)"
    },
    "store": {
        "ContainerStore": {
            "number": 2
        },
        "GraphDriverName": "overlay",
        "GraphOptions": [
            "overlay.override_kernel_check=true"
        ],
        "GraphRoot": "/var/lib/containers/storage",
        "GraphStatus": {
            "Backing Filesystem": "extfs",
            "Native Overlay Diff": "true",
            "Supports d_type": "true"
        },
        "ImageStore": {
            "number": 1
        },
        "RunRoot": "/var/run/containers/storage"
    }
}
```
Signed-off-by: Zhou Hao <zhouhao@cn.fujitsu.com>
Closes: #1195
Approved by: rhatdan
											
										 
											2018-11-25 16:29:12 +08:00
										 |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		logrus.Error(err, "error reading up time") | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	hoursFound := false | 
					
						
							|  |  |  | 	var timeBuffer bytes.Buffer | 
					
						
							|  |  |  | 	var hoursBuffer bytes.Buffer | 
					
						
							|  |  |  | 	for _, elem := range upDuration.String() { | 
					
						
							|  |  |  | 		timeBuffer.WriteRune(elem) | 
					
						
							|  |  |  | 		if elem == 'h' || elem == 'm' { | 
					
						
							|  |  |  | 			timeBuffer.WriteRune(' ') | 
					
						
							|  |  |  | 			if elem == 'h' { | 
					
						
							|  |  |  | 				hoursFound = true | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		if !hoursFound { | 
					
						
							|  |  |  | 			hoursBuffer.WriteRune(elem) | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	info["uptime"] = timeBuffer.String() | 
					
						
							|  |  |  | 	if hoursFound { | 
					
						
							|  |  |  | 		hours, err := strconv.ParseFloat(hoursBuffer.String(), 64) | 
					
						
							|  |  |  | 		if err == nil { | 
					
						
							|  |  |  | 			days := hours / 24 | 
					
						
							|  |  |  | 			info["uptime"] = fmt.Sprintf("%s (Approximately %.2f days)", info["uptime"], days) | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	host, err := os.Hostname() | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		logrus.Error(err, "error getting hostname") | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	info["hostname"] = host | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-16 16:47:48 +08:00
										 |  |  | 	return info | 
					
						
							| 
									
										
										
											
												Add buildah info command
Add info command to display buildah system information.
```
$ buildah info
{
    "host": {
        "Distribution": {
            "distribution": "ubuntu",
            "version": "18.04"
        },
        "MemTotal": 16702980096,
        "MenFree": 309428224,
        "SwapFree": 2146693120,
        "SwapTotal": 2147479552,
        "arch": "amd64",
        "cpus": 4,
        "hostname": "localhost.localdomain",
        "kernel": "4.15.0-36-generic",
        "os": "linux",
        "rootless": false,
        "uptime": "91h 30m 59.9s (Approximately 3.79 days)"
    },
    "store": {
        "ContainerStore": {
            "number": 2
        },
        "GraphDriverName": "overlay",
        "GraphOptions": [
            "overlay.override_kernel_check=true"
        ],
        "GraphRoot": "/var/lib/containers/storage",
        "GraphStatus": {
            "Backing Filesystem": "extfs",
            "Native Overlay Diff": "true",
            "Supports d_type": "true"
        },
        "ImageStore": {
            "number": 1
        },
        "RunRoot": "/var/run/containers/storage"
    }
}
```
Signed-off-by: Zhou Hao <zhouhao@cn.fujitsu.com>
Closes: #1195
Approved by: rhatdan
											
										 
											2018-11-25 16:29:12 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // top-level "store" info
 | 
					
						
							|  |  |  | func storeInfo(store storage.Store) (map[string]interface{}, error) { | 
					
						
							|  |  |  | 	// lets say storage driver in use, number of images, number of containers
 | 
					
						
							|  |  |  | 	info := map[string]interface{}{} | 
					
						
							|  |  |  | 	info["GraphRoot"] = store.GraphRoot() | 
					
						
							|  |  |  | 	info["RunRoot"] = store.RunRoot() | 
					
						
							|  |  |  | 	info["GraphDriverName"] = store.GraphDriverName() | 
					
						
							|  |  |  | 	info["GraphOptions"] = store.GraphOptions() | 
					
						
							|  |  |  | 	statusPairs, err := store.Status() | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return nil, err | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	status := map[string]string{} | 
					
						
							|  |  |  | 	for _, pair := range statusPairs { | 
					
						
							|  |  |  | 		status[pair[0]] = pair[1] | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	info["GraphStatus"] = status | 
					
						
							|  |  |  | 	images, err := store.Images() | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		logrus.Error(err, "error getting number of images") | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	info["ImageStore"] = map[string]interface{}{ | 
					
						
							|  |  |  | 		"number": len(images), | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	containers, err := store.Containers() | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		logrus.Error(err, "error getting number of containers") | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	info["ContainerStore"] = map[string]interface{}{ | 
					
						
							|  |  |  | 		"number": len(containers), | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return info, nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // getHostDistributionInfo returns a map containing the host's distribution and version
 | 
					
						
							|  |  |  | func 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 | 
					
						
							|  |  |  | } |