mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-07-09 21:17:09 +08:00
84
vendor/github.com/moby/buildkit/client/diskusage.go
generated
vendored
Normal file
84
vendor/github.com/moby/buildkit/client/diskusage.go
generated
vendored
Normal file
@ -0,0 +1,84 @@
|
||||
package client
|
||||
|
||||
import (
|
||||
"context"
|
||||
"sort"
|
||||
"time"
|
||||
|
||||
controlapi "github.com/moby/buildkit/api/services/control"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
type UsageInfo struct {
|
||||
ID string
|
||||
Mutable bool
|
||||
InUse bool
|
||||
Size int64
|
||||
|
||||
CreatedAt time.Time
|
||||
LastUsedAt *time.Time
|
||||
UsageCount int
|
||||
Parent string
|
||||
Description string
|
||||
RecordType UsageRecordType
|
||||
Shared bool
|
||||
}
|
||||
|
||||
func (c *Client) DiskUsage(ctx context.Context, opts ...DiskUsageOption) ([]*UsageInfo, error) {
|
||||
info := &DiskUsageInfo{}
|
||||
for _, o := range opts {
|
||||
o.SetDiskUsageOption(info)
|
||||
}
|
||||
|
||||
req := &controlapi.DiskUsageRequest{Filter: info.Filter}
|
||||
resp, err := c.controlClient().DiskUsage(ctx, req)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "failed to call diskusage")
|
||||
}
|
||||
|
||||
var du []*UsageInfo
|
||||
|
||||
for _, d := range resp.Record {
|
||||
du = append(du, &UsageInfo{
|
||||
ID: d.ID,
|
||||
Mutable: d.Mutable,
|
||||
InUse: d.InUse,
|
||||
Size: d.Size_,
|
||||
Parent: d.Parent,
|
||||
CreatedAt: d.CreatedAt,
|
||||
Description: d.Description,
|
||||
UsageCount: int(d.UsageCount),
|
||||
LastUsedAt: d.LastUsedAt,
|
||||
RecordType: UsageRecordType(d.RecordType),
|
||||
Shared: d.Shared,
|
||||
})
|
||||
}
|
||||
|
||||
sort.Slice(du, func(i, j int) bool {
|
||||
if du[i].Size == du[j].Size {
|
||||
return du[i].ID > du[j].ID
|
||||
}
|
||||
return du[i].Size > du[j].Size
|
||||
})
|
||||
|
||||
return du, nil
|
||||
}
|
||||
|
||||
type DiskUsageOption interface {
|
||||
SetDiskUsageOption(*DiskUsageInfo)
|
||||
}
|
||||
|
||||
type DiskUsageInfo struct {
|
||||
Filter []string
|
||||
}
|
||||
|
||||
type UsageRecordType string
|
||||
|
||||
const (
|
||||
UsageRecordTypeInternal UsageRecordType = "internal"
|
||||
UsageRecordTypeFrontend UsageRecordType = "frontend"
|
||||
UsageRecordTypeLocalSource UsageRecordType = "source.local"
|
||||
UsageRecordTypeGitCheckout UsageRecordType = "source.git.checkout"
|
||||
UsageRecordTypeCacheMount UsageRecordType = "exec.cachemount"
|
||||
UsageRecordTypeRegular UsageRecordType = "regular"
|
||||
)
|
Reference in New Issue
Block a user