/
http_api_controller.go
84 lines (69 loc) · 2 KB
/
http_api_controller.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package http_controller
import (
"github.com/PenguinCats/Unison-Elastic-Compute/internal/redis_util"
"github.com/PenguinCats/Unison-Elastic-Compute/pkg/master/internal/operation"
"github.com/gin-gonic/gin"
"github.com/sirupsen/logrus"
)
type HttpApiController struct {
r *gin.Engine
apiPort string
operationTaskChan chan *operation.OperationTask
redisDAO *redis_util.RedisDAO
}
func NewHttpApiController(apiPort string, operationTaskChan chan *operation.OperationTask,
redisDAO *redis_util.RedisDAO) *HttpApiController {
hac := &HttpApiController{
r: gin.Default(),
apiPort: apiPort,
operationTaskChan: operationTaskChan,
redisDAO: redisDAO,
}
hac.initRouter()
return hac
}
func (hac *HttpApiController) StartHttpApiServe() error {
err := hac.r.Run(":" + hac.apiPort)
if err != nil {
logrus.Error("HTTP api server are down")
return err
}
return nil
}
func (hac *HttpApiController) initRouter() {
r := gin.New()
r.Use(gin.Logger())
r.Use(gin.Recovery())
api := r.Group("/api")
{
apiContainer := api.Group("/container")
{
// change state
apiContainer.POST("/create", hac.containerCreate)
apiContainer.POST("/start", hac.containerStart)
apiContainer.POST("/stop", hac.containerStop)
apiContainer.POST("/remove", hac.containerRemove)
// read-only
}
apiSlave := api.Group("/slave")
{
// read-only
apiSlave.POST("/uuid_list", hac.slaveUUIDList)
apiSlave.POST("/profile", hac.slaveProfileList)
apiSlave.POST("/status", hac.slaveStatus)
apiSlave.POST("/add_token", hac.getSlaveAddToken)
apiSlave.POST("/update_add_token", hac.updateSlaveAddToken)
apiSlave.POST("/delete", hac.deleteSlave)
apiSlave.POST("/image_list", hac.slaveImageList)
}
////获取标签列表
//api.GET("/tags", v1.GetTags)
////新建标签
//api.POST("/tags", v1.AddTag)
////更新指定标签
//api.PUT("/tags/:id", v1.EditTag)
////删除指定标签
//api.DELETE("/tags/:id", v1.DeleteTag)
}
hac.r = r
}