mirror of
https://github.com/moby/moby.git
synced 2026-01-11 18:51:37 +00:00
api/types: use regular slices for disk usage types
Signed-off-by: Austin Vazquez <austin.vazquez@docker.com>
This commit is contained in:
@@ -2096,7 +2096,6 @@ definitions:
|
|||||||
type: "array"
|
type: "array"
|
||||||
x-omitempty: true
|
x-omitempty: true
|
||||||
items:
|
items:
|
||||||
x-nullable: true
|
|
||||||
x-go-type:
|
x-go-type:
|
||||||
type: Summary
|
type: Summary
|
||||||
|
|
||||||
@@ -2279,7 +2278,6 @@ definitions:
|
|||||||
type: "array"
|
type: "array"
|
||||||
x-omitempty: true
|
x-omitempty: true
|
||||||
items:
|
items:
|
||||||
x-nullable: true
|
|
||||||
x-go-type:
|
x-go-type:
|
||||||
type: Volume
|
type: Volume
|
||||||
|
|
||||||
@@ -2893,7 +2891,6 @@ definitions:
|
|||||||
type: "array"
|
type: "array"
|
||||||
x-omitempty: true
|
x-omitempty: true
|
||||||
items:
|
items:
|
||||||
x-nullable: true
|
|
||||||
x-go-type:
|
x-go-type:
|
||||||
type: CacheRecord
|
type: CacheRecord
|
||||||
|
|
||||||
@@ -5617,7 +5614,6 @@ definitions:
|
|||||||
type: "array"
|
type: "array"
|
||||||
x-omitempty: true
|
x-omitempty: true
|
||||||
items:
|
items:
|
||||||
x-nullable: true
|
|
||||||
x-go-type:
|
x-go-type:
|
||||||
type: Summary
|
type: Summary
|
||||||
|
|
||||||
|
|||||||
@@ -2096,7 +2096,6 @@ definitions:
|
|||||||
type: "array"
|
type: "array"
|
||||||
x-omitempty: true
|
x-omitempty: true
|
||||||
items:
|
items:
|
||||||
x-nullable: true
|
|
||||||
x-go-type:
|
x-go-type:
|
||||||
type: Summary
|
type: Summary
|
||||||
|
|
||||||
@@ -2279,7 +2278,6 @@ definitions:
|
|||||||
type: "array"
|
type: "array"
|
||||||
x-omitempty: true
|
x-omitempty: true
|
||||||
items:
|
items:
|
||||||
x-nullable: true
|
|
||||||
x-go-type:
|
x-go-type:
|
||||||
type: Volume
|
type: Volume
|
||||||
|
|
||||||
@@ -2893,7 +2891,6 @@ definitions:
|
|||||||
type: "array"
|
type: "array"
|
||||||
x-omitempty: true
|
x-omitempty: true
|
||||||
items:
|
items:
|
||||||
x-nullable: true
|
|
||||||
x-go-type:
|
x-go-type:
|
||||||
type: CacheRecord
|
type: CacheRecord
|
||||||
|
|
||||||
@@ -5617,7 +5614,6 @@ definitions:
|
|||||||
type: "array"
|
type: "array"
|
||||||
x-omitempty: true
|
x-omitempty: true
|
||||||
items:
|
items:
|
||||||
x-nullable: true
|
|
||||||
x-go-type:
|
x-go-type:
|
||||||
type: Summary
|
type: Summary
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ type DiskUsage struct {
|
|||||||
|
|
||||||
// List of build cache records.
|
// List of build cache records.
|
||||||
//
|
//
|
||||||
Items []*CacheRecord `json:"Items,omitempty"`
|
Items []CacheRecord `json:"Items,omitempty"`
|
||||||
|
|
||||||
// Disk space that can be reclaimed by removing inactive build cache records.
|
// Disk space that can be reclaimed by removing inactive build cache records.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ type DiskUsage struct {
|
|||||||
|
|
||||||
// List of container summaries.
|
// List of container summaries.
|
||||||
//
|
//
|
||||||
Items []*Summary `json:"Items,omitempty"`
|
Items []Summary `json:"Items,omitempty"`
|
||||||
|
|
||||||
// Disk space that can be reclaimed by removing inactive containers.
|
// Disk space that can be reclaimed by removing inactive containers.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ type DiskUsage struct {
|
|||||||
|
|
||||||
// List of image summaries.
|
// List of image summaries.
|
||||||
//
|
//
|
||||||
Items []*Summary `json:"Items,omitempty"`
|
Items []Summary `json:"Items,omitempty"`
|
||||||
|
|
||||||
// Disk space that can be reclaimed by removing unused images.
|
// Disk space that can be reclaimed by removing unused images.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ type DiskUsage struct {
|
|||||||
|
|
||||||
// List of volumes.
|
// List of volumes.
|
||||||
//
|
//
|
||||||
Items []*Volume `json:"Items,omitempty"`
|
Items []Volume `json:"Items,omitempty"`
|
||||||
|
|
||||||
// Disk space that can be reclaimed by removing inactive volumes.
|
// Disk space that can be reclaimed by removing inactive volumes.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"slices"
|
||||||
|
|
||||||
"github.com/moby/moby/api/types/build"
|
"github.com/moby/moby/api/types/build"
|
||||||
"github.com/moby/moby/api/types/container"
|
"github.com/moby/moby/api/types/container"
|
||||||
@@ -151,14 +152,7 @@ func (cli *Client) DiskUsage(ctx context.Context, options DiskUsageOptions) (Dis
|
|||||||
return DiskUsageResult{}, fmt.Errorf("Error retrieving disk usage: %v", err)
|
return DiskUsageResult{}, fmt.Errorf("Error retrieving disk usage: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var r DiskUsageResult
|
||||||
r DiskUsageResult
|
|
||||||
imagesFrom = []*image.Summary{}
|
|
||||||
containersFrom = []*container.Summary{}
|
|
||||||
volumesFrom = []*volume.Volume{}
|
|
||||||
buildCacheFrom = []*build.CacheRecord{}
|
|
||||||
)
|
|
||||||
|
|
||||||
if du.ImageUsage != nil {
|
if du.ImageUsage != nil {
|
||||||
r.Images = ImagesDiskUsage{
|
r.Images = ImagesDiskUsage{
|
||||||
ActiveImages: du.ImageUsage.ActiveImages,
|
ActiveImages: du.ImageUsage.ActiveImages,
|
||||||
@@ -168,7 +162,7 @@ func (cli *Client) DiskUsage(ctx context.Context, options DiskUsageOptions) (Dis
|
|||||||
}
|
}
|
||||||
|
|
||||||
if options.Verbose {
|
if options.Verbose {
|
||||||
imagesFrom = du.ImageUsage.Items
|
r.Images.Items = slices.Clone(du.ImageUsage.Items)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Fallback for legacy response.
|
// Fallback for legacy response.
|
||||||
@@ -176,16 +170,17 @@ func (cli *Client) DiskUsage(ctx context.Context, options DiskUsageOptions) (Dis
|
|||||||
TotalSize: du.LayersSize,
|
TotalSize: du.LayersSize,
|
||||||
}
|
}
|
||||||
|
|
||||||
if du.Images != nil && options.Verbose {
|
if options.Verbose {
|
||||||
imagesFrom = du.Images
|
r.Images.Items = slices.Collect(func(yield func(image.Summary) bool) {
|
||||||
|
for _, i := range du.Images {
|
||||||
|
if !yield(*i) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
r.Images.Items = make([]image.Summary, len(imagesFrom))
|
|
||||||
for i, ii := range imagesFrom {
|
|
||||||
r.Images.Items[i] = *ii
|
|
||||||
}
|
|
||||||
|
|
||||||
if du.ContainerUsage != nil {
|
if du.ContainerUsage != nil {
|
||||||
r.Containers = ContainersDiskUsage{
|
r.Containers = ContainersDiskUsage{
|
||||||
ActiveContainers: du.ContainerUsage.ActiveContainers,
|
ActiveContainers: du.ContainerUsage.ActiveContainers,
|
||||||
@@ -195,16 +190,17 @@ func (cli *Client) DiskUsage(ctx context.Context, options DiskUsageOptions) (Dis
|
|||||||
}
|
}
|
||||||
|
|
||||||
if options.Verbose {
|
if options.Verbose {
|
||||||
containersFrom = du.ContainerUsage.Items
|
r.Containers.Items = slices.Clone(du.ContainerUsage.Items)
|
||||||
}
|
}
|
||||||
} else if du.Containers != nil && options.Verbose {
|
} else if du.Containers != nil && options.Verbose {
|
||||||
// Fallback for legacy response.
|
// Fallback for legacy response.
|
||||||
containersFrom = du.Containers
|
r.Containers.Items = slices.Collect(func(yield func(container.Summary) bool) {
|
||||||
}
|
for _, c := range du.Containers {
|
||||||
|
if !yield(*c) {
|
||||||
r.Containers.Items = make([]container.Summary, len(containersFrom))
|
return
|
||||||
for i, c := range containersFrom {
|
}
|
||||||
r.Containers.Items[i] = *c
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if du.BuildCacheUsage != nil {
|
if du.BuildCacheUsage != nil {
|
||||||
@@ -216,16 +212,17 @@ func (cli *Client) DiskUsage(ctx context.Context, options DiskUsageOptions) (Dis
|
|||||||
}
|
}
|
||||||
|
|
||||||
if options.Verbose {
|
if options.Verbose {
|
||||||
buildCacheFrom = du.BuildCacheUsage.Items
|
r.BuildCache.Items = slices.Clone(du.BuildCacheUsage.Items)
|
||||||
}
|
}
|
||||||
} else if du.BuildCache != nil && options.Verbose {
|
} else if du.BuildCache != nil && options.Verbose {
|
||||||
// Fallback for legacy response.
|
// Fallback for legacy response.
|
||||||
buildCacheFrom = du.BuildCache
|
r.BuildCache.Items = slices.Collect(func(yield func(build.CacheRecord) bool) {
|
||||||
}
|
for _, b := range du.BuildCache {
|
||||||
|
if !yield(*b) {
|
||||||
r.BuildCache.Items = make([]build.CacheRecord, len(buildCacheFrom))
|
return
|
||||||
for i, b := range buildCacheFrom {
|
}
|
||||||
r.BuildCache.Items[i] = *b
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if du.VolumeUsage != nil {
|
if du.VolumeUsage != nil {
|
||||||
@@ -237,16 +234,17 @@ func (cli *Client) DiskUsage(ctx context.Context, options DiskUsageOptions) (Dis
|
|||||||
}
|
}
|
||||||
|
|
||||||
if options.Verbose {
|
if options.Verbose {
|
||||||
volumesFrom = du.VolumeUsage.Items
|
r.Volumes.Items = slices.Clone(du.VolumeUsage.Items)
|
||||||
}
|
}
|
||||||
} else if du.Volumes != nil && options.Verbose {
|
} else if du.Volumes != nil && options.Verbose {
|
||||||
// Fallback for legacy response.
|
// Fallback for legacy response.
|
||||||
volumesFrom = du.Volumes
|
r.Volumes.Items = slices.Collect(func(yield func(volume.Volume) bool) {
|
||||||
}
|
for _, v := range du.Volumes {
|
||||||
|
if !yield(*v) {
|
||||||
r.Volumes.Items = make([]volume.Volume, len(volumesFrom))
|
return
|
||||||
for i, v := range volumesFrom {
|
}
|
||||||
r.Volumes.Items[i] = *v
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
return r, nil
|
return r, nil
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ func TestDiskUsage(t *testing.T) {
|
|||||||
TotalImages: 0,
|
TotalImages: 0,
|
||||||
Reclaimable: 0,
|
Reclaimable: 0,
|
||||||
TotalSize: 4096,
|
TotalSize: 4096,
|
||||||
Items: []*image.Summary{},
|
Items: []image.Summary{},
|
||||||
},
|
},
|
||||||
})(req)
|
})(req)
|
||||||
}))
|
}))
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"slices"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -230,7 +231,13 @@ func (s *systemRouter) getDiskUsage(ctx context.Context, w http.ResponseWriter,
|
|||||||
v.LayersSize = systemDiskUsage.Images.TotalSize //nolint: staticcheck,SA1019: v.LayersSize is deprecated: kept to maintain backwards compatibility with API < v1.52, use [ImagesDiskUsage.TotalSize] instead.
|
v.LayersSize = systemDiskUsage.Images.TotalSize //nolint: staticcheck,SA1019: v.LayersSize is deprecated: kept to maintain backwards compatibility with API < v1.52, use [ImagesDiskUsage.TotalSize] instead.
|
||||||
v.Images = systemDiskUsage.Images.Items //nolint: staticcheck,SA1019: v.Images is deprecated: kept to maintain backwards compatibility with API < v1.52, use [ImagesDiskUsage.Items] instead.
|
v.Images = systemDiskUsage.Images.Items //nolint: staticcheck,SA1019: v.Images is deprecated: kept to maintain backwards compatibility with API < v1.52, use [ImagesDiskUsage.Items] instead.
|
||||||
} else if verbose {
|
} else if verbose {
|
||||||
v.ImageUsage.Items = systemDiskUsage.Images.Items
|
v.ImageUsage.Items = slices.Collect(func(yield func(image.Summary) bool) {
|
||||||
|
for _, i := range systemDiskUsage.Images.Items {
|
||||||
|
if !yield(*i) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if systemDiskUsage != nil && systemDiskUsage.Containers != nil {
|
if systemDiskUsage != nil && systemDiskUsage.Containers != nil {
|
||||||
@@ -244,7 +251,13 @@ func (s *systemRouter) getDiskUsage(ctx context.Context, w http.ResponseWriter,
|
|||||||
if legacyFields {
|
if legacyFields {
|
||||||
v.Containers = systemDiskUsage.Containers.Items //nolint: staticcheck,SA1019: v.Containers is deprecated: kept to maintain backwards compatibility with API < v1.52, use [ContainersDiskUsage.Items] instead.
|
v.Containers = systemDiskUsage.Containers.Items //nolint: staticcheck,SA1019: v.Containers is deprecated: kept to maintain backwards compatibility with API < v1.52, use [ContainersDiskUsage.Items] instead.
|
||||||
} else if verbose {
|
} else if verbose {
|
||||||
v.ContainerUsage.Items = systemDiskUsage.Containers.Items
|
v.ContainerUsage.Items = slices.Collect(func(yield func(container.Summary) bool) {
|
||||||
|
for _, c := range systemDiskUsage.Containers.Items {
|
||||||
|
if !yield(*c) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if systemDiskUsage != nil && systemDiskUsage.Volumes != nil {
|
if systemDiskUsage != nil && systemDiskUsage.Volumes != nil {
|
||||||
@@ -258,7 +271,13 @@ func (s *systemRouter) getDiskUsage(ctx context.Context, w http.ResponseWriter,
|
|||||||
if legacyFields {
|
if legacyFields {
|
||||||
v.Volumes = systemDiskUsage.Volumes.Items //nolint: staticcheck,SA1019: v.Volumes is deprecated: kept to maintain backwards compatibility with API < v1.52, use [VolumesDiskUsage.Items] instead.
|
v.Volumes = systemDiskUsage.Volumes.Items //nolint: staticcheck,SA1019: v.Volumes is deprecated: kept to maintain backwards compatibility with API < v1.52, use [VolumesDiskUsage.Items] instead.
|
||||||
} else if verbose {
|
} else if verbose {
|
||||||
v.VolumeUsage.Items = systemDiskUsage.Volumes.Items
|
v.VolumeUsage.Items = slices.Collect(func(yield func(volume.Volume) bool) {
|
||||||
|
for _, v := range systemDiskUsage.Volumes.Items {
|
||||||
|
if !yield(*v) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if getBuildCache {
|
if getBuildCache {
|
||||||
@@ -289,7 +308,13 @@ func (s *systemRouter) getDiskUsage(ctx context.Context, w http.ResponseWriter,
|
|||||||
if legacyFields {
|
if legacyFields {
|
||||||
v.BuildCache = buildCache //nolint: staticcheck,SA1019: v.BuildCache is deprecated: kept to maintain backwards compatibility with API < v1.52, use [BuildCacheDiskUsage.Items] instead.
|
v.BuildCache = buildCache //nolint: staticcheck,SA1019: v.BuildCache is deprecated: kept to maintain backwards compatibility with API < v1.52, use [BuildCacheDiskUsage.Items] instead.
|
||||||
} else if verbose {
|
} else if verbose {
|
||||||
v.BuildCacheUsage.Items = buildCache
|
v.BuildCacheUsage.Items = slices.Collect(func(yield func(buildtypes.CacheRecord) bool) {
|
||||||
|
for _, b := range buildCache {
|
||||||
|
if !yield(*b) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return httputils.WriteJSON(w, http.StatusOK, v)
|
return httputils.WriteJSON(w, http.StatusOK, v)
|
||||||
|
|||||||
@@ -5,10 +5,6 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/google/go-cmp/cmp/cmpopts"
|
"github.com/google/go-cmp/cmp/cmpopts"
|
||||||
"github.com/moby/moby/api/types/build"
|
|
||||||
containertypes "github.com/moby/moby/api/types/container"
|
|
||||||
"github.com/moby/moby/api/types/image"
|
|
||||||
"github.com/moby/moby/api/types/volume"
|
|
||||||
"github.com/moby/moby/client"
|
"github.com/moby/moby/client"
|
||||||
"github.com/moby/moby/v2/integration/internal/container"
|
"github.com/moby/moby/v2/integration/internal/container"
|
||||||
"github.com/moby/moby/v2/internal/testutil"
|
"github.com/moby/moby/v2/internal/testutil"
|
||||||
@@ -56,19 +52,12 @@ func TestDiskUsage(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
assert.DeepEqual(t, du, client.DiskUsageResult{
|
assert.DeepEqual(t, du, client.DiskUsageResult{
|
||||||
Containers: client.ContainersDiskUsage{
|
Containers: client.ContainersDiskUsage{},
|
||||||
Items: []containertypes.Summary{},
|
|
||||||
},
|
|
||||||
Images: client.ImagesDiskUsage{
|
Images: client.ImagesDiskUsage{
|
||||||
TotalSize: expectedLayersSize,
|
TotalSize: expectedLayersSize,
|
||||||
Items: []image.Summary{},
|
|
||||||
},
|
|
||||||
BuildCache: client.BuildCacheDiskUsage{
|
|
||||||
Items: []build.CacheRecord{},
|
|
||||||
},
|
|
||||||
Volumes: client.VolumesDiskUsage{
|
|
||||||
Items: []volume.Volume{},
|
|
||||||
},
|
},
|
||||||
|
BuildCache: client.BuildCacheDiskUsage{},
|
||||||
|
Volumes: client.VolumesDiskUsage{},
|
||||||
})
|
})
|
||||||
return du
|
return du
|
||||||
},
|
},
|
||||||
@@ -155,9 +144,9 @@ func TestDiskUsage(t *testing.T) {
|
|||||||
},
|
},
|
||||||
expected: client.DiskUsageResult{
|
expected: client.DiskUsageResult{
|
||||||
Containers: stepDU.Containers,
|
Containers: stepDU.Containers,
|
||||||
Images: client.ImagesDiskUsage{Items: []image.Summary{}},
|
Images: client.ImagesDiskUsage{},
|
||||||
BuildCache: client.BuildCacheDiskUsage{Items: []build.CacheRecord{}},
|
BuildCache: client.BuildCacheDiskUsage{},
|
||||||
Volumes: client.VolumesDiskUsage{Items: []volume.Volume{}},
|
Volumes: client.VolumesDiskUsage{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -167,10 +156,10 @@ func TestDiskUsage(t *testing.T) {
|
|||||||
Verbose: true,
|
Verbose: true,
|
||||||
},
|
},
|
||||||
expected: client.DiskUsageResult{
|
expected: client.DiskUsageResult{
|
||||||
Containers: client.ContainersDiskUsage{Items: []containertypes.Summary{}},
|
Containers: client.ContainersDiskUsage{},
|
||||||
Images: stepDU.Images,
|
Images: stepDU.Images,
|
||||||
BuildCache: client.BuildCacheDiskUsage{Items: []build.CacheRecord{}},
|
BuildCache: client.BuildCacheDiskUsage{},
|
||||||
Volumes: client.VolumesDiskUsage{Items: []volume.Volume{}},
|
Volumes: client.VolumesDiskUsage{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -180,9 +169,9 @@ func TestDiskUsage(t *testing.T) {
|
|||||||
Verbose: true,
|
Verbose: true,
|
||||||
},
|
},
|
||||||
expected: client.DiskUsageResult{
|
expected: client.DiskUsageResult{
|
||||||
Containers: client.ContainersDiskUsage{Items: []containertypes.Summary{}},
|
Containers: client.ContainersDiskUsage{},
|
||||||
Images: client.ImagesDiskUsage{Items: []image.Summary{}},
|
Images: client.ImagesDiskUsage{},
|
||||||
BuildCache: client.BuildCacheDiskUsage{Items: []build.CacheRecord{}},
|
BuildCache: client.BuildCacheDiskUsage{},
|
||||||
Volumes: stepDU.Volumes,
|
Volumes: stepDU.Volumes,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -193,10 +182,10 @@ func TestDiskUsage(t *testing.T) {
|
|||||||
Verbose: true,
|
Verbose: true,
|
||||||
},
|
},
|
||||||
expected: client.DiskUsageResult{
|
expected: client.DiskUsageResult{
|
||||||
Containers: client.ContainersDiskUsage{Items: []containertypes.Summary{}},
|
Containers: client.ContainersDiskUsage{},
|
||||||
Images: client.ImagesDiskUsage{Items: []image.Summary{}},
|
Images: client.ImagesDiskUsage{},
|
||||||
BuildCache: stepDU.BuildCache,
|
BuildCache: stepDU.BuildCache,
|
||||||
Volumes: client.VolumesDiskUsage{Items: []volume.Volume{}},
|
Volumes: client.VolumesDiskUsage{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -208,8 +197,8 @@ func TestDiskUsage(t *testing.T) {
|
|||||||
},
|
},
|
||||||
expected: client.DiskUsageResult{
|
expected: client.DiskUsageResult{
|
||||||
Containers: stepDU.Containers,
|
Containers: stepDU.Containers,
|
||||||
Images: client.ImagesDiskUsage{Items: []image.Summary{}},
|
Images: client.ImagesDiskUsage{},
|
||||||
BuildCache: client.BuildCacheDiskUsage{Items: []build.CacheRecord{}},
|
BuildCache: client.BuildCacheDiskUsage{},
|
||||||
Volumes: stepDU.Volumes,
|
Volumes: stepDU.Volumes,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -221,10 +210,10 @@ func TestDiskUsage(t *testing.T) {
|
|||||||
Verbose: true,
|
Verbose: true,
|
||||||
},
|
},
|
||||||
expected: client.DiskUsageResult{
|
expected: client.DiskUsageResult{
|
||||||
Containers: client.ContainersDiskUsage{Items: []containertypes.Summary{}},
|
Containers: client.ContainersDiskUsage{},
|
||||||
Images: stepDU.Images,
|
Images: stepDU.Images,
|
||||||
BuildCache: stepDU.BuildCache,
|
BuildCache: stepDU.BuildCache,
|
||||||
Volumes: client.VolumesDiskUsage{Items: []volume.Volume{}},
|
Volumes: client.VolumesDiskUsage{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -237,9 +226,7 @@ func TestDiskUsage(t *testing.T) {
|
|||||||
},
|
},
|
||||||
expected: client.DiskUsageResult{
|
expected: client.DiskUsageResult{
|
||||||
Containers: stepDU.Containers,
|
Containers: stepDU.Containers,
|
||||||
Images: client.ImagesDiskUsage{
|
Images: client.ImagesDiskUsage{},
|
||||||
Items: []image.Summary{},
|
|
||||||
},
|
|
||||||
BuildCache: stepDU.BuildCache,
|
BuildCache: stepDU.BuildCache,
|
||||||
Volumes: stepDU.Volumes,
|
Volumes: stepDU.Volumes,
|
||||||
},
|
},
|
||||||
@@ -253,9 +240,7 @@ func TestDiskUsage(t *testing.T) {
|
|||||||
Verbose: true,
|
Verbose: true,
|
||||||
},
|
},
|
||||||
expected: client.DiskUsageResult{
|
expected: client.DiskUsageResult{
|
||||||
Containers: client.ContainersDiskUsage{
|
Containers: client.ContainersDiskUsage{},
|
||||||
Items: []containertypes.Summary{},
|
|
||||||
},
|
|
||||||
Images: stepDU.Images,
|
Images: stepDU.Images,
|
||||||
BuildCache: stepDU.BuildCache,
|
BuildCache: stepDU.BuildCache,
|
||||||
Volumes: stepDU.Volumes,
|
Volumes: stepDU.Volumes,
|
||||||
@@ -272,10 +257,8 @@ func TestDiskUsage(t *testing.T) {
|
|||||||
expected: client.DiskUsageResult{
|
expected: client.DiskUsageResult{
|
||||||
Containers: stepDU.Containers,
|
Containers: stepDU.Containers,
|
||||||
Images: stepDU.Images,
|
Images: stepDU.Images,
|
||||||
BuildCache: client.BuildCacheDiskUsage{
|
BuildCache: client.BuildCacheDiskUsage{},
|
||||||
Items: []build.CacheRecord{},
|
Volumes: stepDU.Volumes,
|
||||||
},
|
|
||||||
Volumes: stepDU.Volumes,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
2
vendor/github.com/moby/moby/api/types/build/disk_usage.go
generated
vendored
2
vendor/github.com/moby/moby/api/types/build/disk_usage.go
generated
vendored
@@ -17,7 +17,7 @@ type DiskUsage struct {
|
|||||||
|
|
||||||
// List of build cache records.
|
// List of build cache records.
|
||||||
//
|
//
|
||||||
Items []*CacheRecord `json:"Items,omitempty"`
|
Items []CacheRecord `json:"Items,omitempty"`
|
||||||
|
|
||||||
// Disk space that can be reclaimed by removing inactive build cache records.
|
// Disk space that can be reclaimed by removing inactive build cache records.
|
||||||
//
|
//
|
||||||
|
|||||||
2
vendor/github.com/moby/moby/api/types/container/disk_usage.go
generated
vendored
2
vendor/github.com/moby/moby/api/types/container/disk_usage.go
generated
vendored
@@ -17,7 +17,7 @@ type DiskUsage struct {
|
|||||||
|
|
||||||
// List of container summaries.
|
// List of container summaries.
|
||||||
//
|
//
|
||||||
Items []*Summary `json:"Items,omitempty"`
|
Items []Summary `json:"Items,omitempty"`
|
||||||
|
|
||||||
// Disk space that can be reclaimed by removing inactive containers.
|
// Disk space that can be reclaimed by removing inactive containers.
|
||||||
//
|
//
|
||||||
|
|||||||
2
vendor/github.com/moby/moby/api/types/image/disk_usage.go
generated
vendored
2
vendor/github.com/moby/moby/api/types/image/disk_usage.go
generated
vendored
@@ -17,7 +17,7 @@ type DiskUsage struct {
|
|||||||
|
|
||||||
// List of image summaries.
|
// List of image summaries.
|
||||||
//
|
//
|
||||||
Items []*Summary `json:"Items,omitempty"`
|
Items []Summary `json:"Items,omitempty"`
|
||||||
|
|
||||||
// Disk space that can be reclaimed by removing unused images.
|
// Disk space that can be reclaimed by removing unused images.
|
||||||
//
|
//
|
||||||
|
|||||||
2
vendor/github.com/moby/moby/api/types/volume/disk_usage.go
generated
vendored
2
vendor/github.com/moby/moby/api/types/volume/disk_usage.go
generated
vendored
@@ -17,7 +17,7 @@ type DiskUsage struct {
|
|||||||
|
|
||||||
// List of volumes.
|
// List of volumes.
|
||||||
//
|
//
|
||||||
Items []*Volume `json:"Items,omitempty"`
|
Items []Volume `json:"Items,omitempty"`
|
||||||
|
|
||||||
// Disk space that can be reclaimed by removing inactive volumes.
|
// Disk space that can be reclaimed by removing inactive volumes.
|
||||||
//
|
//
|
||||||
|
|||||||
72
vendor/github.com/moby/moby/client/system_disk_usage.go
generated
vendored
72
vendor/github.com/moby/moby/client/system_disk_usage.go
generated
vendored
@@ -5,6 +5,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"slices"
|
||||||
|
|
||||||
"github.com/moby/moby/api/types/build"
|
"github.com/moby/moby/api/types/build"
|
||||||
"github.com/moby/moby/api/types/container"
|
"github.com/moby/moby/api/types/container"
|
||||||
@@ -151,14 +152,7 @@ func (cli *Client) DiskUsage(ctx context.Context, options DiskUsageOptions) (Dis
|
|||||||
return DiskUsageResult{}, fmt.Errorf("Error retrieving disk usage: %v", err)
|
return DiskUsageResult{}, fmt.Errorf("Error retrieving disk usage: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var r DiskUsageResult
|
||||||
r DiskUsageResult
|
|
||||||
imagesFrom = []*image.Summary{}
|
|
||||||
containersFrom = []*container.Summary{}
|
|
||||||
volumesFrom = []*volume.Volume{}
|
|
||||||
buildCacheFrom = []*build.CacheRecord{}
|
|
||||||
)
|
|
||||||
|
|
||||||
if du.ImageUsage != nil {
|
if du.ImageUsage != nil {
|
||||||
r.Images = ImagesDiskUsage{
|
r.Images = ImagesDiskUsage{
|
||||||
ActiveImages: du.ImageUsage.ActiveImages,
|
ActiveImages: du.ImageUsage.ActiveImages,
|
||||||
@@ -168,7 +162,7 @@ func (cli *Client) DiskUsage(ctx context.Context, options DiskUsageOptions) (Dis
|
|||||||
}
|
}
|
||||||
|
|
||||||
if options.Verbose {
|
if options.Verbose {
|
||||||
imagesFrom = du.ImageUsage.Items
|
r.Images.Items = slices.Clone(du.ImageUsage.Items)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Fallback for legacy response.
|
// Fallback for legacy response.
|
||||||
@@ -176,16 +170,17 @@ func (cli *Client) DiskUsage(ctx context.Context, options DiskUsageOptions) (Dis
|
|||||||
TotalSize: du.LayersSize,
|
TotalSize: du.LayersSize,
|
||||||
}
|
}
|
||||||
|
|
||||||
if du.Images != nil && options.Verbose {
|
if options.Verbose {
|
||||||
imagesFrom = du.Images
|
r.Images.Items = slices.Collect(func(yield func(image.Summary) bool) {
|
||||||
|
for _, i := range du.Images {
|
||||||
|
if !yield(*i) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
r.Images.Items = make([]image.Summary, len(imagesFrom))
|
|
||||||
for i, ii := range imagesFrom {
|
|
||||||
r.Images.Items[i] = *ii
|
|
||||||
}
|
|
||||||
|
|
||||||
if du.ContainerUsage != nil {
|
if du.ContainerUsage != nil {
|
||||||
r.Containers = ContainersDiskUsage{
|
r.Containers = ContainersDiskUsage{
|
||||||
ActiveContainers: du.ContainerUsage.ActiveContainers,
|
ActiveContainers: du.ContainerUsage.ActiveContainers,
|
||||||
@@ -195,16 +190,17 @@ func (cli *Client) DiskUsage(ctx context.Context, options DiskUsageOptions) (Dis
|
|||||||
}
|
}
|
||||||
|
|
||||||
if options.Verbose {
|
if options.Verbose {
|
||||||
containersFrom = du.ContainerUsage.Items
|
r.Containers.Items = slices.Clone(du.ContainerUsage.Items)
|
||||||
}
|
}
|
||||||
} else if du.Containers != nil && options.Verbose {
|
} else if du.Containers != nil && options.Verbose {
|
||||||
// Fallback for legacy response.
|
// Fallback for legacy response.
|
||||||
containersFrom = du.Containers
|
r.Containers.Items = slices.Collect(func(yield func(container.Summary) bool) {
|
||||||
}
|
for _, c := range du.Containers {
|
||||||
|
if !yield(*c) {
|
||||||
r.Containers.Items = make([]container.Summary, len(containersFrom))
|
return
|
||||||
for i, c := range containersFrom {
|
}
|
||||||
r.Containers.Items[i] = *c
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if du.BuildCacheUsage != nil {
|
if du.BuildCacheUsage != nil {
|
||||||
@@ -216,16 +212,17 @@ func (cli *Client) DiskUsage(ctx context.Context, options DiskUsageOptions) (Dis
|
|||||||
}
|
}
|
||||||
|
|
||||||
if options.Verbose {
|
if options.Verbose {
|
||||||
buildCacheFrom = du.BuildCacheUsage.Items
|
r.BuildCache.Items = slices.Clone(du.BuildCacheUsage.Items)
|
||||||
}
|
}
|
||||||
} else if du.BuildCache != nil && options.Verbose {
|
} else if du.BuildCache != nil && options.Verbose {
|
||||||
// Fallback for legacy response.
|
// Fallback for legacy response.
|
||||||
buildCacheFrom = du.BuildCache
|
r.BuildCache.Items = slices.Collect(func(yield func(build.CacheRecord) bool) {
|
||||||
}
|
for _, b := range du.BuildCache {
|
||||||
|
if !yield(*b) {
|
||||||
r.BuildCache.Items = make([]build.CacheRecord, len(buildCacheFrom))
|
return
|
||||||
for i, b := range buildCacheFrom {
|
}
|
||||||
r.BuildCache.Items[i] = *b
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if du.VolumeUsage != nil {
|
if du.VolumeUsage != nil {
|
||||||
@@ -237,16 +234,17 @@ func (cli *Client) DiskUsage(ctx context.Context, options DiskUsageOptions) (Dis
|
|||||||
}
|
}
|
||||||
|
|
||||||
if options.Verbose {
|
if options.Verbose {
|
||||||
volumesFrom = du.VolumeUsage.Items
|
r.Volumes.Items = slices.Clone(du.VolumeUsage.Items)
|
||||||
}
|
}
|
||||||
} else if du.Volumes != nil && options.Verbose {
|
} else if du.Volumes != nil && options.Verbose {
|
||||||
// Fallback for legacy response.
|
// Fallback for legacy response.
|
||||||
volumesFrom = du.Volumes
|
r.Volumes.Items = slices.Collect(func(yield func(volume.Volume) bool) {
|
||||||
}
|
for _, v := range du.Volumes {
|
||||||
|
if !yield(*v) {
|
||||||
r.Volumes.Items = make([]volume.Volume, len(volumesFrom))
|
return
|
||||||
for i, v := range volumesFrom {
|
}
|
||||||
r.Volumes.Items[i] = *v
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
return r, nil
|
return r, nil
|
||||||
|
|||||||
Reference in New Issue
Block a user