mirror of
https://github.com/cuigh/swirl
synced 2025-06-26 18:16:50 +00:00
Add prune function to image and container
This commit is contained in:
@@ -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,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
24
api/image.go
24
api/image.go
@@ -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,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user