/
cmdb.go
130 lines (112 loc) · 4.42 KB
/
cmdb.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
123
124
125
126
127
128
129
130
package view
import (
"github.com/clickvisual/clickvisual/api/internal/pkg/model/db"
)
// ConfigFormat ..
type ConfigFormat string
const (
ConfigFormatToml ConfigFormat = "toml"
ConfigFormatYaml ConfigFormat = "yaml"
ConfigFormatJson ConfigFormat = "json"
ConfigFormatXml ConfigFormat = "xml"
ConfigFormatProperties ConfigFormat = "properties"
ConfigFormatIni ConfigFormat = "ini"
ConfigFormatConf ConfigFormat = "conf"
)
// ReqCreateConfig ..
type ReqCreateConfig struct {
Name string `gorm:"column:name;type:varchar(64)" json:"configurationName" binding:"required"`
Format ConfigFormat `json:"format" binding:"required,oneof=yaml toml ini json conf"` // 格式后缀名(比如: toml, yaml)
K8SConfigMapId int `form:"k8sConfigMapId"`
K8SConfigMapName string `form:"k8sConfigMapName" binding:"required"`
K8SConfigMapNamespace string `form:"k8sConfigMapNameSpace" binding:"required"`
ClusterId int `form:"clusterId" binding:"required"`
}
// ReqSyncConfig ..
type ReqSyncConfig struct {
K8SConfigMapId int `form:"k8sConfigMapId"`
K8SConfigMapName string `form:"k8sConfigMapName" binding:"required"`
K8SConfigMapNamespace string `form:"k8sConfigMapNameSpace" binding:"required"`
ClusterId int `form:"clusterId" binding:"required"`
}
type ReqListConfig struct {
K8SConfigMapId int `form:"k8sConfigMapId"`
K8SConfigMapName string `form:"k8sConfigMapName"`
K8SConfigMapNamespace string `form:"k8sConfigMapNameSpace"`
ClusterId int `form:"clusterId"`
}
// RespListConfig ..
type RespListConfig []RespListConfigItem
// RespListConfigItem Does not contain configuration content to prevent configuration form being too long
type RespListConfigItem struct {
ID int `json:"id"`
Name string `json:"name"`
Format string `json:"format"` // Yaml/Toml
K8SCmId int `json:"k8sConfigmapId"` // 环境id
Ctime int64 `json:"ctime"`
Utime int64 `json:"utime"`
PublishTime int64 `json:"publishTime"`
}
// ReqDetailConfig ..
type ReqDetailConfig struct {
ID uint `form:"id" binding:"required"`
}
// RespDetailConfig Contains configuration content
type RespDetailConfig struct {
ID int `json:"id"` // ConfigurationHistory.ID
ConfigmapId int `json:"k8sConfigmapId"`
Name string `json:"name"`
Content string `json:"content"`
Format string `json:"format"` // Yaml/Toml
EnvId int `json:"envId"` // 环境id
ZoneId int `json:"zoneId"`
Ctime int64 `json:"ctime"`
Utime int64 `json:"utime"`
PublishTime int64 `json:"ptime"` // 未发布/发布时间
CurrentEditUser *db.User `json:"currentEditUser"` // 当前正在编辑的用户名
}
// ReqUpdateConfig ..
type ReqUpdateConfig struct {
ID int `json:"id"` // the id of configuration
Message string `json:"message" binding:"required"`
Content string `json:"content" binding:"required"`
}
// ReqPublishConfig ..
type ReqPublishConfig struct {
ID int `json:"id"` // 配置ID
Version *string `json:"version" binding:"required"` // 版本号
}
// ConfigMetadata 用于记录某个配置的版本信息
type ConfigMetadata struct {
Version string `json:"version"`
ChangeLog string `json:"changeLog"`
PublishedBy int `json:"uid"`
}
// ReqDiffConfig ..
type ReqDiffConfig struct {
ID int `form:"id"` // 配置ID
HistoryID int `form:"historyId" binding:"required"` // 版本ID
}
// RespDiffConfig ..
type RespDiffConfig struct {
Origin *RespDetailConfig `json:"origin,omitempty"`
Modified RespDetailConfig `json:"modified"`
}
// ReqCreateConfigMap ..
type ReqCreateConfigMap struct {
ConfigmapName string `form:"configmapName" binding:"required"`
Namespace string `form:"namespace" binding:"required"`
}
// ReqConfigMapInfo ..
type ReqConfigMapInfo struct {
Key string `form:"key" binding:"required"`
}
type RespHistoryConfigItem struct {
ID int `json:"id"`
UID int `json:"uid"` // 发布人ID
UserName string `json:"username"`
ChangeLog string `json:"changeLog"`
ConfigurationID int `json:"configurationId"`
Version string `json:"version"` // 发布到Juno Proxy的版本号
Ctime int64 `json:"ctime"`
}