1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
package compat
import (
"net/http"
"strings"
"github.com/containers/podman/v4/libpod"
"github.com/containers/podman/v4/pkg/api/handlers"
"github.com/containers/podman/v4/pkg/api/handlers/utils"
api "github.com/containers/podman/v4/pkg/api/types"
"github.com/containers/podman/v4/pkg/domain/entities"
"github.com/containers/podman/v4/pkg/domain/infra/abi"
docker "github.com/docker/docker/api/types"
)
func GetDiskUsage(w http.ResponseWriter, r *http.Request) {
options := entities.SystemDfOptions{}
runtime := r.Context().Value(api.RuntimeKey).(*libpod.Runtime)
ic := abi.ContainerEngine{Libpod: runtime}
df, err := ic.SystemDf(r.Context(), options)
if err != nil {
utils.InternalServerError(w, err)
return
}
imgs := make([]*docker.ImageSummary, len(df.Images))
for i, o := range df.Images {
t := docker.ImageSummary{
Containers: int64(o.Containers),
Created: o.Created.Unix(),
ID: o.ImageID,
Labels: map[string]string{},
ParentID: "",
RepoDigests: nil,
RepoTags: []string{o.Tag},
SharedSize: o.SharedSize,
Size: o.Size,
VirtualSize: o.Size - o.UniqueSize,
}
imgs[i] = &t
}
ctnrs := make([]*docker.Container, len(df.Containers))
for i, o := range df.Containers {
t := docker.Container{
ID: o.ContainerID,
Names: []string{o.Names},
Image: o.Image,
ImageID: o.Image,
Command: strings.Join(o.Command, " "),
Created: o.Created.Unix(),
Ports: nil,
SizeRw: o.RWSize,
SizeRootFs: o.Size,
Labels: map[string]string{},
State: o.Status,
Status: o.Status,
HostConfig: struct {
NetworkMode string `json:",omitempty"`
}{},
NetworkSettings: nil,
Mounts: nil,
}
ctnrs[i] = &t
}
vols := make([]*docker.Volume, len(df.Volumes))
for i, o := range df.Volumes {
t := docker.Volume{
CreatedAt: "",
Driver: "",
Labels: map[string]string{},
Mountpoint: "",
Name: o.VolumeName,
Options: nil,
Scope: "local",
Status: nil,
UsageData: &docker.VolumeUsageData{
RefCount: int64(o.Links),
Size: o.Size,
},
}
vols[i] = &t
}
utils.WriteResponse(w, http.StatusOK, handlers.DiskUsage{DiskUsage: docker.DiskUsage{
LayersSize: 0,
Images: imgs,
Containers: ctnrs,
Volumes: vols,
BuildCache: []*docker.BuildCache{},
BuilderSize: 0,
}})
}
|