mirror of
https://github.com/cuigh/swirl
synced 2025-06-26 18:16:50 +00:00
Add agent support for image and volume
This commit is contained in:
21
api/image.go
21
api/image.go
@@ -8,22 +8,23 @@ import (
|
||||
|
||||
// ImageHandler encapsulates image related handlers.
|
||||
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"`
|
||||
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"`
|
||||
}
|
||||
|
||||
// NewImage creates an instance of ImageHandler
|
||||
func NewImage(b biz.ImageBiz) *ImageHandler {
|
||||
return &ImageHandler{
|
||||
Search: imageSearch(b),
|
||||
Find: imageFind(b),
|
||||
Delete: imageDelete(b),
|
||||
Search: imageSearch(b),
|
||||
Find: imageFind(b),
|
||||
Delete: imageDelete(b),
|
||||
}
|
||||
}
|
||||
|
||||
func imageSearch(b biz.ImageBiz) web.HandlerFunc {
|
||||
type Args struct {
|
||||
Node string `json:"node" bind:"node"`
|
||||
Name string `json:"name" bind:"name"`
|
||||
PageIndex int `json:"pageIndex" bind:"pageIndex"`
|
||||
PageSize int `json:"pageSize" bind:"pageSize"`
|
||||
@@ -37,7 +38,7 @@ func imageSearch(b biz.ImageBiz) web.HandlerFunc {
|
||||
)
|
||||
|
||||
if err = ctx.Bind(args); err == nil {
|
||||
images, total, err = b.Search(args.Name, args.PageIndex, args.PageSize)
|
||||
images, total, err = b.Search(args.Node, args.Name, args.PageIndex, args.PageSize)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
@@ -53,8 +54,9 @@ func imageSearch(b biz.ImageBiz) web.HandlerFunc {
|
||||
|
||||
func imageFind(b biz.ImageBiz) web.HandlerFunc {
|
||||
return func(ctx web.Context) error {
|
||||
node := ctx.Query("node")
|
||||
id := ctx.Query("id")
|
||||
image, raw, err := b.Find(id)
|
||||
image, raw, err := b.Find(node, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -64,12 +66,13 @@ func imageFind(b biz.ImageBiz) web.HandlerFunc {
|
||||
|
||||
func imageDelete(b biz.ImageBiz) web.HandlerFunc {
|
||||
type Args struct {
|
||||
Node string `json:"node"`
|
||||
ID string `json:"id"`
|
||||
}
|
||||
return func(ctx web.Context) (err error) {
|
||||
args := &Args{}
|
||||
if err = ctx.Bind(args); err == nil {
|
||||
err = b.Delete(args.ID, ctx.User())
|
||||
err = b.Delete(args.Node, args.ID, ctx.User())
|
||||
}
|
||||
return ajax(ctx, err)
|
||||
}
|
||||
|
||||
11
api/node.go
11
api/node.go
@@ -33,6 +33,17 @@ func nodeList(nb biz.NodeBiz) web.HandlerFunc {
|
||||
return err
|
||||
}
|
||||
|
||||
if ctx.Query("agent") == "true" {
|
||||
i := 0
|
||||
for j := 0; j < len(nodes); j++ {
|
||||
if nodes[j].Agent != "" {
|
||||
nodes[i] = nodes[j]
|
||||
i++
|
||||
}
|
||||
}
|
||||
nodes = nodes[:i]
|
||||
}
|
||||
|
||||
return success(ctx, nodes)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ func NewVolume(b biz.VolumeBiz) *VolumeHandler {
|
||||
|
||||
func volumeSearch(b biz.VolumeBiz) web.HandlerFunc {
|
||||
type Args struct {
|
||||
Node string `json:"node" bind:"node"`
|
||||
Name string `json:"name" bind:"name"`
|
||||
PageIndex int `json:"pageIndex" bind:"pageIndex"`
|
||||
PageSize int `json:"pageSize" bind:"pageSize"`
|
||||
@@ -41,7 +42,7 @@ func volumeSearch(b biz.VolumeBiz) web.HandlerFunc {
|
||||
)
|
||||
|
||||
if err = ctx.Bind(args); err == nil {
|
||||
volumes, total, err = b.Search(args.Name, args.PageIndex, args.PageSize)
|
||||
volumes, total, err = b.Search(args.Node, args.Name, args.PageIndex, args.PageSize)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
@@ -57,8 +58,9 @@ func volumeSearch(b biz.VolumeBiz) web.HandlerFunc {
|
||||
|
||||
func volumeFind(b biz.VolumeBiz) web.HandlerFunc {
|
||||
return func(ctx web.Context) error {
|
||||
node := ctx.Query("node")
|
||||
name := ctx.Query("name")
|
||||
volume, raw, err := b.Find(name)
|
||||
volume, raw, err := b.Find(node, name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -68,12 +70,13 @@ func volumeFind(b biz.VolumeBiz) web.HandlerFunc {
|
||||
|
||||
func volumeDelete(b biz.VolumeBiz) web.HandlerFunc {
|
||||
type Args struct {
|
||||
Node string `json:"node"`
|
||||
Name string `json:"name"`
|
||||
}
|
||||
return func(ctx web.Context) (err error) {
|
||||
args := &Args{}
|
||||
if err = ctx.Bind(args); err == nil {
|
||||
err = b.Delete(args.Name, ctx.User())
|
||||
err = b.Delete(args.Node, args.Name, ctx.User())
|
||||
}
|
||||
return ajax(ctx, err)
|
||||
}
|
||||
@@ -91,11 +94,20 @@ func volumeSave(b biz.VolumeBiz) web.HandlerFunc {
|
||||
}
|
||||
|
||||
func volumePrune(b biz.VolumeBiz) web.HandlerFunc {
|
||||
return func(ctx web.Context) error {
|
||||
deletedVolumes, reclaimedSpace, err := b.Prune(ctx.User())
|
||||
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
|
||||
}
|
||||
|
||||
deletedVolumes, reclaimedSpace, err := b.Prune(args.Node, ctx.User())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return success(ctx, data.Map{
|
||||
"deletedVolumes": deletedVolumes,
|
||||
"reclaimedSpace": reclaimedSpace,
|
||||
|
||||
Reference in New Issue
Block a user