243 lines
6.2 KiB
Go
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)
|
||
|
|
||
|
}
|