go-common/app/admin/ep/merlin/http/http.go
2019-04-22 18:49:16 +08:00

243 lines
6.2 KiB
Go

package http
import (
"net/http"
"go-common/app/admin/ep/merlin/conf"
"go-common/app/admin/ep/merlin/service"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/permit"
)
const (
_sessIDKey = "_AJSESSIONID"
)
var (
svc *service.Service
authSvc *permit.Permit
)
// Init init
func Init(c *conf.Config, s *service.Service) {
svc = s
authSvc = permit.New(c.Auth)
engine := bm.DefaultServer(c.BM)
engine.Ping(ping)
outerRouter(engine)
if err := engine.Start(); err != nil {
log.Error("engine.Start error(%v)", err)
panic(err)
}
}
// outerRouter init outer router api path.
func outerRouter(e *bm.Engine) {
e.GET("/ep/admin/merlin/version", getVersion)
e.GET("/ep/admin/merlin/conf/version", confVersion)
base := e.Group("/ep/admin/merlin", authSvc.Permit(""))
{
v1 := base.Group("/v1")
{
cluster := v1.Group("/cluster")
{
cluster.GET("/query", queryCluster)
}
machine := v1.Group("/machine")
{
machine.POST("/gen", genMachines)
machine.GET("/del", delMachine)
machine.GET("/query/detail", queryMachineDetail)
machine.GET("/query", queryMachines)
machine.GET("/query/status", queryMachineStatus)
machine.GET("/transfer", transferMachine)
machinePackage := machine.Group("/package")
{
machinePackage.GET("/query", queryMachinePackages)
}
machineLog := machine.Group("/log")
{
machineLog.GET("/query", queryMachineLogs)
}
machineNode := machine.Group("/node")
{
machineNode.POST("update", updateNodes)
machineNode.GET("query", queryNodes)
}
}
image := v1.Group("image")
{
image.GET("/query", queryImage)
image.POST("/add", addImage)
image.POST("/update", updateImage)
image.POST("/del", delImage)
}
serviceTree := v1.Group("/tree")
{
serviceTree.GET("/query", userTree)
serviceTree.GET("/container/query", userTreeContainer)
serviceTree.GET("/auditors/query", treeAuditors)
}
audit := v1.Group("/audit")
{
auditEndTime := audit.Group("/endTime")
{
auditEndTime.GET("/delay", delayMachineEndTime) //手动延期 done ok
auditEndTime.POST("/apply", applyMachineEndTime) //申请延期 done
auditEndTime.GET("/cancel", cancelMachineEndTime) //取消延期 done
auditEndTime.POST("/audit", auditMachineEndTime) //审批 通过或驳回 done
auditEndTime.GET("/query/applyList", queryApplicationRecordsByMachineID) //done ok
auditEndTime.GET("/query/user/applyList", queryApplicationRecordsByApplicant) //done ok
auditEndTime.GET("/query/user/auditList", queryApplicationRecordsByAuditor) //done ok
}
}
user := v1.Group("/user")
{
user.GET("/query", queryUserInfo)
}
mobileDevice := v1.Group("/mobiledevice")
{
mobileDevice.POST("/query", queryMobileDevice)
mobileDevice.GET("/refresh", refreshMobileDeviceDetail)
mobileDevice.GET("/bind", bindMobileDevice)
mobileDevice.GET("/release", releaseMobileDevice)
mobileDevice.GET("/isbind", isBindByTheUser)
mobileDevice.GET("/pullout", lendOutMobileDevice)
mobileDevice.GET("/return", returnMobileDevice)
mobileDevice.GET("/start", startMobileDevice)
mobileDevice.GET("/shutdown", shutDownMobileDevice)
mobileDevice.GET("/syncall", syncMobileDevice)
mobileDevice.GET("/category/query", queryCategory)
mobileDevice.GET("/superuser/query", queryDeviceFarmSuperUser)
mobileDeviceLog := mobileDevice.Group("/log")
{
mobileDeviceLog.GET("/query", queryMobileMachineLogs)
mobileDeviceLog.GET("/lendout/query", queryMobileMachineLendOut)
}
mobileDeviceErrorLog := mobileDevice.Group("/error/log")
{
mobileDeviceErrorLog.GET("/query", queryMobileMachineErrorLogs)
mobileDeviceErrorLog.POST("/report", reportMobileDeviceError)
}
}
biliHub := v1.Group("/bilihub")
{
biliHub.GET("/auth", authHub)
biliHub.GET("/auth/access", accessAuthHub)
biliHub.GET("/projects/accesspull", accessPullProjects)
biliHub.GET("/projects", projects)
biliHub.GET("/repos", repos)
biliHub.GET("/repotags", tags)
biliHub.GET("/repos/delete", deleteRepo)
biliHub.GET("/repotags/delete", deleteRepoTag)
biliHub.GET("/snapshot", snapshot)
biliHub.GET("/snapshot/query", querySnapshot)
biliHub.POST("/machine2image", machine2image)
biliHub.GET("/machine2image/forcefailed", machine2imageForceFailed)
biliHub.GET("/machine2image/log/query", queryMachine2ImageLog)
image := biliHub.Group("/image")
{
image.GET("/all", allImage)
image.POST("/addtag", addTag)
image.POST("/push", push)
image.POST("/retag", reTag)
image.POST("/pull", pull)
conf := image.Group("/conf")
{
conf.POST("/update", updateImageConf)
conf.GET("/query", queryImageConf)
}
}
}
dashboard := v1.Group("/dashboard")
{
machine := dashboard.Group("/machine")
{
machine.GET("/lifecycle", queryMachineLifeCycle)
machine.GET("/count", queryMachineCount)
machine.GET("/time", queryMachineTime)
machine.GET("/usage", queryMachineUsage)
}
deviceFarm := dashboard.Group("/devicefarm")
{
deviceFarm.GET("/usagecount", queryMobileMachineUsageCount)
deviceFarm.GET("/modecount", queryMobileMachineModeCount)
deviceFarm.GET("/usagetime", queryMobileMachineUsageTime)
}
}
}
v2 := base.Group("/v2")
{
machine := v2.Group("/machine")
{
machine.POST("/gen", genMachinesV2)
}
}
}
callback := e.Group("/ep/admin/merlin/callback")
{
v1 := callback.Group("/v1")
{
v1.POST("/bilihub/snapshot", callbackSnapshot)
v1.POST("/mobiledevice/error", callbackMobileDeviceError)
}
}
}
func ping(c *bm.Context) {
if err := svc.Ping(c); err != nil {
log.Error("ping error(%v)", err)
c.AbortWithStatus(http.StatusServiceUnavailable)
}
}
func getVersion(c *bm.Context) {
v := new(struct {
Version string `json:"version"`
})
v.Version = "v.1.5.9.3"
c.JSON(v, nil)
}
func confVersion(c *bm.Context) {
v := new(struct {
Version string `json:"version"`
})
v.Version = svc.ConfVersion(c)
c.JSON(v, nil)
}