You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
242 lines
6.2 KiB
242 lines
6.2 KiB
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) |
|
|
|
}
|
|
|