Add prune function to image and container

This commit is contained in:
cuigh
2021-12-23 15:25:51 +08:00
parent 70837391d1
commit bb48beec82
17 changed files with 234 additions and 41 deletions

View File

@@ -18,6 +18,7 @@ type ContainerHandler struct {
Delete web.HandlerFunc `path:"/delete" method:"post" auth:"container.delete" desc:"delete container"`
FetchLogs web.HandlerFunc `path:"/fetch-logs" auth:"container.logs" desc:"fetch logs of container"`
Connect web.HandlerFunc `path:"/connect" auth:"container.execute" desc:"connect to a running container"`
Prune web.HandlerFunc `path:"/prune" method:"post" auth:"container.delete" desc:"delete unused containers"`
}
// NewContainer creates an instance of ContainerHandler
@@ -28,6 +29,7 @@ func NewContainer(b biz.ContainerBiz) *ContainerHandler {
Delete: containerDelete(b),
FetchLogs: containerFetchLogs(b),
Connect: containerConnect(b),
Prune: containerPrune(b),
}
}
@@ -78,11 +80,12 @@ func containerDelete(b biz.ContainerBiz) web.HandlerFunc {
type Args struct {
Node string `json:"node"`
ID string `json:"id"`
Name string `json:"name"`
}
return func(ctx web.Context) (err error) {
args := &Args{}
if err = ctx.Bind(args); err == nil {
err = b.Delete(args.Node, args.ID, ctx.User())
err = b.Delete(args.Node, args.ID, args.Name, ctx.User())
}
return ajax(ctx, err)
}
@@ -214,3 +217,25 @@ func containerConnect(b biz.ContainerBiz) web.HandlerFunc {
return nil
}
}
func containerPrune(b biz.ContainerBiz) web.HandlerFunc {
type Args struct {
Node string `json:"node"`
}
return func(ctx web.Context) (err error) {
args := &Args{}
if err = ctx.Bind(args); err != nil {
return err
}
count, size, err := b.Prune(args.Node, ctx.User())
if err != nil {
return err
}
return success(ctx, data.Map{
"count": count,
"size": size,
})
}
}

View File

@@ -11,6 +11,7 @@ type ImageHandler struct {
Search web.HandlerFunc `path:"/search" auth:"image.view" desc:"search images"`
Find web.HandlerFunc `path:"/find" auth:"image.view" desc:"find image by id"`
Delete web.HandlerFunc `path:"/delete" method:"post" auth:"image.delete" desc:"delete image"`
Prune web.HandlerFunc `path:"/prune" method:"post" auth:"image.delete" desc:"delete unused images"`
}
// NewImage creates an instance of ImageHandler
@@ -19,6 +20,7 @@ func NewImage(b biz.ImageBiz) *ImageHandler {
Search: imageSearch(b),
Find: imageFind(b),
Delete: imageDelete(b),
Prune: imagePrune(b),
}
}
@@ -77,3 +79,25 @@ func imageDelete(b biz.ImageBiz) web.HandlerFunc {
return ajax(ctx, err)
}
}
func imagePrune(b biz.ImageBiz) web.HandlerFunc {
type Args struct {
Node string `json:"node"`
}
return func(ctx web.Context) (err error) {
args := &Args{}
if err = ctx.Bind(args); err != nil {
return err
}
count, size, err := b.Prune(args.Node, ctx.User())
if err != nil {
return err
}
return success(ctx, data.Map{
"count": count,
"size": size,
})
}
}

View File

@@ -103,14 +103,14 @@ func volumePrune(b biz.VolumeBiz) web.HandlerFunc {
return err
}
deletedVolumes, reclaimedSpace, err := b.Prune(args.Node, ctx.User())
count, size, err := b.Prune(args.Node, ctx.User())
if err != nil {
return err
}
return success(ctx, data.Map{
"deletedVolumes": deletedVolumes,
"reclaimedSpace": reclaimedSpace,
"count": count,
"size": size,
})
}
}