mirror of
https://github.com/cuigh/swirl
synced 2024-12-28 23:02:02 +00:00
107 lines
3.0 KiB
Go
107 lines
3.0 KiB
Go
package controller
|
|
|
|
import (
|
|
"github.com/cuigh/auxo/net/web"
|
|
"github.com/cuigh/swirl/biz"
|
|
"github.com/cuigh/swirl/biz/docker"
|
|
"github.com/cuigh/swirl/misc"
|
|
"github.com/cuigh/swirl/model"
|
|
)
|
|
|
|
// NetworkController is a controller of docker network
|
|
type NetworkController struct {
|
|
List web.HandlerFunc `path:"/" name:"network.list" authorize:"!" desc:"network list page"`
|
|
New web.HandlerFunc `path:"/new" name:"network.new" authorize:"!" desc:"new network page"`
|
|
Create web.HandlerFunc `path:"/create" method:"post" name:"network.create" authorize:"!" desc:"create network"`
|
|
Delete web.HandlerFunc `path:"/delete" method:"post" name:"network.delete" authorize:"!" desc:"delete network"`
|
|
Disconnect web.HandlerFunc `path:"/:name/disconnect" method:"post" name:"network.disconnect" authorize:"!" desc:"disconnect network"`
|
|
Detail web.HandlerFunc `path:"/:name/detail" name:"network.detail" authorize:"!" desc:"network detail page"`
|
|
Raw web.HandlerFunc `path:"/:name/raw" name:"network.raw" authorize:"!" desc:"network raw page"`
|
|
}
|
|
|
|
// Network creates a NetworkController instance.
|
|
func Network() (c *NetworkController) {
|
|
return &NetworkController{
|
|
List: networkList,
|
|
New: networkNew,
|
|
Create: networkCreate,
|
|
Delete: networkDelete,
|
|
Disconnect: networkDisconnect,
|
|
Detail: networkDetail,
|
|
Raw: networkRaw,
|
|
}
|
|
}
|
|
|
|
func networkList(ctx web.Context) error {
|
|
networks, err := docker.NetworkList()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
m := newModel(ctx).Set("Networks", networks)
|
|
return ctx.Render("network/list", m)
|
|
}
|
|
|
|
func networkNew(ctx web.Context) error {
|
|
m := newModel(ctx)
|
|
return ctx.Render("/network/new", m)
|
|
}
|
|
|
|
func networkCreate(ctx web.Context) error {
|
|
info := &model.NetworkCreateInfo{}
|
|
err := ctx.Bind(info)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
err = docker.NetworkCreate(info)
|
|
if err == nil {
|
|
biz.Event.CreateNetwork(model.EventActionCreate, info.Name, info.Name, ctx.User())
|
|
}
|
|
return ajaxResult(ctx, err)
|
|
}
|
|
|
|
func networkDelete(ctx web.Context) error {
|
|
name := ctx.F("name")
|
|
err := docker.NetworkRemove(name)
|
|
if err == nil {
|
|
biz.Event.CreateNetwork(model.EventActionDelete, name, name, ctx.User())
|
|
}
|
|
return ajaxResult(ctx, err)
|
|
}
|
|
|
|
func networkDisconnect(ctx web.Context) error {
|
|
name := ctx.P("name")
|
|
container := ctx.F("container")
|
|
err := docker.NetworkDisconnect(name, container)
|
|
if err == nil {
|
|
biz.Event.CreateNetwork(model.EventActionDisconnect, name, name+" <-> "+container, ctx.User())
|
|
}
|
|
return ajaxResult(ctx, err)
|
|
}
|
|
|
|
func networkDetail(ctx web.Context) error {
|
|
name := ctx.P("name")
|
|
network, err := docker.NetworkInspect(name)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
m := newModel(ctx).Set("Network", network)
|
|
return ctx.Render("network/detail", m)
|
|
}
|
|
|
|
func networkRaw(ctx web.Context) error {
|
|
name := ctx.P("name")
|
|
raw, err := docker.NetworkInspectRaw(name)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
j, err := misc.JSONIndent(raw)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
m := newModel(ctx).Set("Network", name).Set("Raw", j)
|
|
return ctx.Render("network/raw", m)
|
|
}
|