http.go 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. package http
  2. import (
  3. "net/http"
  4. "go-common/app/admin/ep/merlin/conf"
  5. "go-common/app/admin/ep/merlin/service"
  6. "go-common/library/log"
  7. bm "go-common/library/net/http/blademaster"
  8. "go-common/library/net/http/blademaster/middleware/permit"
  9. )
  10. const (
  11. _sessIDKey = "_AJSESSIONID"
  12. )
  13. var (
  14. svc *service.Service
  15. authSvc *permit.Permit
  16. )
  17. // Init init
  18. func Init(c *conf.Config, s *service.Service) {
  19. svc = s
  20. authSvc = permit.New(c.Auth)
  21. engine := bm.DefaultServer(c.BM)
  22. engine.Ping(ping)
  23. outerRouter(engine)
  24. if err := engine.Start(); err != nil {
  25. log.Error("engine.Start error(%v)", err)
  26. panic(err)
  27. }
  28. }
  29. // outerRouter init outer router api path.
  30. func outerRouter(e *bm.Engine) {
  31. e.GET("/ep/admin/merlin/version", getVersion)
  32. e.GET("/ep/admin/merlin/conf/version", confVersion)
  33. base := e.Group("/ep/admin/merlin", authSvc.Permit(""))
  34. {
  35. v1 := base.Group("/v1")
  36. {
  37. cluster := v1.Group("/cluster")
  38. {
  39. cluster.GET("/query", queryCluster)
  40. }
  41. machine := v1.Group("/machine")
  42. {
  43. machine.POST("/gen", genMachines)
  44. machine.GET("/del", delMachine)
  45. machine.GET("/query/detail", queryMachineDetail)
  46. machine.GET("/query", queryMachines)
  47. machine.GET("/query/status", queryMachineStatus)
  48. machine.GET("/transfer", transferMachine)
  49. machinePackage := machine.Group("/package")
  50. {
  51. machinePackage.GET("/query", queryMachinePackages)
  52. }
  53. machineLog := machine.Group("/log")
  54. {
  55. machineLog.GET("/query", queryMachineLogs)
  56. }
  57. machineNode := machine.Group("/node")
  58. {
  59. machineNode.POST("update", updateNodes)
  60. machineNode.GET("query", queryNodes)
  61. }
  62. }
  63. image := v1.Group("image")
  64. {
  65. image.GET("/query", queryImage)
  66. image.POST("/add", addImage)
  67. image.POST("/update", updateImage)
  68. image.POST("/del", delImage)
  69. }
  70. serviceTree := v1.Group("/tree")
  71. {
  72. serviceTree.GET("/query", userTree)
  73. serviceTree.GET("/container/query", userTreeContainer)
  74. serviceTree.GET("/auditors/query", treeAuditors)
  75. }
  76. audit := v1.Group("/audit")
  77. {
  78. auditEndTime := audit.Group("/endTime")
  79. {
  80. auditEndTime.GET("/delay", delayMachineEndTime) //手动延期 done ok
  81. auditEndTime.POST("/apply", applyMachineEndTime) //申请延期 done
  82. auditEndTime.GET("/cancel", cancelMachineEndTime) //取消延期 done
  83. auditEndTime.POST("/audit", auditMachineEndTime) //审批 通过或驳回 done
  84. auditEndTime.GET("/query/applyList", queryApplicationRecordsByMachineID) //done ok
  85. auditEndTime.GET("/query/user/applyList", queryApplicationRecordsByApplicant) //done ok
  86. auditEndTime.GET("/query/user/auditList", queryApplicationRecordsByAuditor) //done ok
  87. }
  88. }
  89. user := v1.Group("/user")
  90. {
  91. user.GET("/query", queryUserInfo)
  92. }
  93. mobileDevice := v1.Group("/mobiledevice")
  94. {
  95. mobileDevice.POST("/query", queryMobileDevice)
  96. mobileDevice.GET("/refresh", refreshMobileDeviceDetail)
  97. mobileDevice.GET("/bind", bindMobileDevice)
  98. mobileDevice.GET("/release", releaseMobileDevice)
  99. mobileDevice.GET("/isbind", isBindByTheUser)
  100. mobileDevice.GET("/pullout", lendOutMobileDevice)
  101. mobileDevice.GET("/return", returnMobileDevice)
  102. mobileDevice.GET("/start", startMobileDevice)
  103. mobileDevice.GET("/shutdown", shutDownMobileDevice)
  104. mobileDevice.GET("/syncall", syncMobileDevice)
  105. mobileDevice.GET("/category/query", queryCategory)
  106. mobileDevice.GET("/superuser/query", queryDeviceFarmSuperUser)
  107. mobileDeviceLog := mobileDevice.Group("/log")
  108. {
  109. mobileDeviceLog.GET("/query", queryMobileMachineLogs)
  110. mobileDeviceLog.GET("/lendout/query", queryMobileMachineLendOut)
  111. }
  112. mobileDeviceErrorLog := mobileDevice.Group("/error/log")
  113. {
  114. mobileDeviceErrorLog.GET("/query", queryMobileMachineErrorLogs)
  115. mobileDeviceErrorLog.POST("/report", reportMobileDeviceError)
  116. }
  117. }
  118. biliHub := v1.Group("/bilihub")
  119. {
  120. biliHub.GET("/auth", authHub)
  121. biliHub.GET("/auth/access", accessAuthHub)
  122. biliHub.GET("/projects/accesspull", accessPullProjects)
  123. biliHub.GET("/projects", projects)
  124. biliHub.GET("/repos", repos)
  125. biliHub.GET("/repotags", tags)
  126. biliHub.GET("/repos/delete", deleteRepo)
  127. biliHub.GET("/repotags/delete", deleteRepoTag)
  128. biliHub.GET("/snapshot", snapshot)
  129. biliHub.GET("/snapshot/query", querySnapshot)
  130. biliHub.POST("/machine2image", machine2image)
  131. biliHub.GET("/machine2image/forcefailed", machine2imageForceFailed)
  132. biliHub.GET("/machine2image/log/query", queryMachine2ImageLog)
  133. image := biliHub.Group("/image")
  134. {
  135. image.GET("/all", allImage)
  136. image.POST("/addtag", addTag)
  137. image.POST("/push", push)
  138. image.POST("/retag", reTag)
  139. image.POST("/pull", pull)
  140. conf := image.Group("/conf")
  141. {
  142. conf.POST("/update", updateImageConf)
  143. conf.GET("/query", queryImageConf)
  144. }
  145. }
  146. }
  147. dashboard := v1.Group("/dashboard")
  148. {
  149. machine := dashboard.Group("/machine")
  150. {
  151. machine.GET("/lifecycle", queryMachineLifeCycle)
  152. machine.GET("/count", queryMachineCount)
  153. machine.GET("/time", queryMachineTime)
  154. machine.GET("/usage", queryMachineUsage)
  155. }
  156. deviceFarm := dashboard.Group("/devicefarm")
  157. {
  158. deviceFarm.GET("/usagecount", queryMobileMachineUsageCount)
  159. deviceFarm.GET("/modecount", queryMobileMachineModeCount)
  160. deviceFarm.GET("/usagetime", queryMobileMachineUsageTime)
  161. }
  162. }
  163. }
  164. v2 := base.Group("/v2")
  165. {
  166. machine := v2.Group("/machine")
  167. {
  168. machine.POST("/gen", genMachinesV2)
  169. }
  170. }
  171. }
  172. callback := e.Group("/ep/admin/merlin/callback")
  173. {
  174. v1 := callback.Group("/v1")
  175. {
  176. v1.POST("/bilihub/snapshot", callbackSnapshot)
  177. v1.POST("/mobiledevice/error", callbackMobileDeviceError)
  178. }
  179. }
  180. }
  181. func ping(c *bm.Context) {
  182. if err := svc.Ping(c); err != nil {
  183. log.Error("ping error(%v)", err)
  184. c.AbortWithStatus(http.StatusServiceUnavailable)
  185. }
  186. }
  187. func getVersion(c *bm.Context) {
  188. v := new(struct {
  189. Version string `json:"version"`
  190. })
  191. v.Version = "v.1.5.9.3"
  192. c.JSON(v, nil)
  193. }
  194. func confVersion(c *bm.Context) {
  195. v := new(struct {
  196. Version string `json:"version"`
  197. })
  198. v.Version = svc.ConfVersion(c)
  199. c.JSON(v, nil)
  200. }