-
Notifications
You must be signed in to change notification settings - Fork 43
/
module.go
122 lines (110 loc) · 3.03 KB
/
module.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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
package api
import (
"github.com/baetyl/baetyl-go/v2/log"
"github.com/baetyl/baetyl-cloud/v2/common"
"github.com/baetyl/baetyl-cloud/v2/models"
)
func (api *API) GetModules(c *common.Context) (interface{}, error) {
res, err := api.Module.GetModules(c.Param("name"))
if err != nil {
return nil, err
}
return models.ModuleList{
Total: len(res),
Items: res,
}, nil
}
func (api *API) GetModuleByVersion(c *common.Context) (interface{}, error) {
res, err := api.Module.GetModuleByVersion(c.Param("name"), c.Param("version"))
if err != nil {
return nil, err
}
return res, nil
}
func (api *API) GetLatestModule(c *common.Context) (interface{}, error) {
res, err := api.Module.GetLatestModule(c.Param("name"))
if err != nil {
return nil, err
}
return res, nil
}
func (api *API) CreateModule(c *common.Context) (interface{}, error) {
var module models.Module
err := api.parseAndCheckModule(&module, c)
if err != nil {
return nil, err
}
res, err := api.Module.CreateModule(&module)
if err != nil {
return nil, err
}
return res, nil
}
func (api *API) UpdateModule(c *common.Context) (interface{}, error) {
name, version := c.GetNameFromParam(), c.Param("version")
module, err := api.Module.GetModuleByVersion(name, version)
if err != nil {
return nil, err
}
err = api.parseAndCheckModule(module, c)
if err != nil {
return nil, err
}
module.Name = name
module.Version = version
res, err := api.Module.UpdateModuleByVersion(module)
if err != nil {
return nil, err
}
return res, nil
}
func (api *API) DeleteModules(c *common.Context) (interface{}, error) {
name, version := c.GetNameFromParam(), c.Param("version")
var err error
if version == "" {
err = api.Module.DeleteModules(name)
} else {
err = api.Module.DeleteModuleByVersion(name, version)
}
if err != nil {
log.L().Error("failed to delete modules", log.Any("module", c.GetNameFromParam()), log.Any("version", version), log.Error(err))
}
return nil, nil
}
func (api *API) ListModules(c *common.Context) (interface{}, error) {
tp := c.Query("type")
params := &models.Filter{}
if err := c.Bind(params); err != nil {
return nil, err
}
res, err := api.Module.ListModules(params, common.ModuleType(tp))
if err != nil {
return nil, err
}
// remove deprecated baetyl-gpu-metrics and dmp
for i := 0; i < len(res); i++ {
if res[i].Name == DeprecatedGPUMetrics || res[i].Name == DeprecatedDmp {
res = append(res[:i], res[i+1:]...)
i--
}
}
return models.ModuleList{
Total: len(res),
PageNo: params.PageNo,
PageSize: params.PageSize,
Items: res,
}, nil
}
func (api *API) parseAndCheckModule(module *models.Module, c *common.Context) error {
err := c.LoadBody(module)
if err != nil {
return common.Error(common.ErrRequestParamInvalid, common.Field("error", err.Error()))
}
if module.Name == "" {
return common.Error(common.ErrRequestParamInvalid, common.Field("error", "name is required"))
}
if module.Version == "" {
return common.Error(common.ErrRequestParamInvalid, common.Field("error", "version is required"))
}
return nil
}