Skip to content

Commit 5d2c05f

Browse files
committed
feat: add get volume info api and change get container info route
1 parent 48b5f8a commit 5d2c05f

File tree

5 files changed

+52
-8
lines changed

5 files changed

+52
-8
lines changed

internal/api/code.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,9 @@ const (
2626
CodeContainerGpuCountMustGreaterThanZero
2727
CodeContainerGpuNotEnough
2828
CodeContainerGpuNoNeedPatch
29+
CodeContainerVolumeNoNeedPatch
2930
CodeContainerCommitFailed
30-
COdeContainerGetInfoFailed
31+
CodeContainerGetInfoFailed
3132

3233
CodeVolumeCreateFailed
3334
CodeVolumeNameNotNull
@@ -39,7 +40,7 @@ const (
3940
CodeVolumeSizeUsedGreaterThanReduce
4041
CodeVolumeNameNotContainsDash
4142
CodeVolumeNameNotBeginWithForwardSlash
42-
CodeContainerVolumeNoNeedPatch
43+
CodeVolumeGetInfoFailed
4344

4445
CodeEtcdDeleteFailed
4546

@@ -72,7 +73,7 @@ var codeMsgMap = map[ResCode]string{
7273
CodeContainerGpuNoNeedPatch: "容器 GPU 资源不需要更新,因为更新前后数量一样",
7374
CodeContainerVolumeNoNeedPatch: "容器 Volume 挂载不需要更新,因为更新前后挂载一样",
7475
CodeContainerCommitFailed: "容器提交为镜像失败",
75-
COdeContainerGetInfoFailed: "获取容器信息失败",
76+
CodeContainerGetInfoFailed: "获取容器信息失败",
7677

7778
CodeVolumeCreateFailed: "Volume 创建失败",
7879
CodeVolumeNameNotNull: "Volume name 不能为空",
@@ -84,6 +85,7 @@ var codeMsgMap = map[ResCode]string{
8485
CodeVolumeSizeUsedGreaterThanReduce: "Volume 大小更新失败,因为更新后的大小小于已使用的大小",
8586
CodeVolumeNameNotContainsDash: "Volume 名称不能包含-",
8687
CodeVolumeNameNotBeginWithForwardSlash: "Volume 名称不能以 / 开头",
88+
CodeVolumeGetInfoFailed: "获取 Volume 信息失败",
8789

8890
CodeEtcdDeleteFailed: "删除 etcd 中的资源失败",
8991

internal/api/container.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ func (ch *ContainerHandler) RegisterRoute(g *gin.RouterGroup) {
3434
// 提交容器为镜像
3535
g.POST("/containers/:name/commit", ch.commit)
3636
// 查看容器创建信息
37-
g.GET("/containers/:name/info", ch.info)
37+
g.GET("/containers/:name", ch.info)
3838
}
3939

4040
func (ch *ContainerHandler) run(c *gin.Context) {
@@ -337,13 +337,14 @@ func (ch *ContainerHandler) info(c *gin.Context) {
337337
if !strings.Contains(name, "-") || len(strings.Split(name, "-")[1]) == 0 {
338338
log.Errorf("failed to get container info, name: %s must be in format: name-version", name)
339339
ResponseError(c, CodeContainerNameMustContainVersion)
340+
return
340341
}
341342

342343
info, err := cs.GetContainerInfo(name)
343344
if err != nil {
344345
log.Errorf("service.GetContainerInfo failed, original error: %T %v", errors.Cause(err), err)
345346
log.Errorf("stack trace: \n%+v\n", err)
346-
ResponseError(c, CodeContainerCommitFailed)
347+
ResponseError(c, CodeContainerGetInfoFailed)
347348
return
348349
}
349350

internal/api/resource.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ type Resource struct{}
1111

1212
func (gh *Resource) RegisterRoute(g *gin.RouterGroup) {
1313
g.GET("/resources/gpus", gh.getGpus)
14-
g.GET("resources/usedPorts", gh.getUsedPorts)
14+
g.GET("resources/ports", gh.getUsedPorts)
1515
}
1616

1717
func (gh *Resource) getGpus(c *gin.Context) {
@@ -22,8 +22,8 @@ func (gh *Resource) getGpus(c *gin.Context) {
2222
}
2323

2424
func (gh *Resource) getUsedPorts(c *gin.Context) {
25-
ports := portscheduler.Scheduler.GetUsedPortSet()
25+
status := portscheduler.Scheduler.GetPortStatus()
2626
ResponseSuccess(c, gin.H{
27-
"usedPorts": ports,
27+
"portStatus": status,
2828
})
2929
}

internal/api/volume.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ func (vh *VolumeHandler) RegisterRoute(g *gin.RouterGroup) {
2323
g.DELETE("/volumes/:name", vh.delete)
2424
// 变更已存在 Volume 的大小
2525
g.PATCH("/volumes/:name/size", vh.patchSize)
26+
// 查看 Volume 创建信息
27+
g.GET("/volumes/:name", vh.info)
2628
}
2729

2830
func (vh *VolumeHandler) create(c *gin.Context) {
@@ -146,3 +148,30 @@ func (vh *VolumeHandler) patchSize(c *gin.Context) {
146148
"size": resp.Options["size"],
147149
})
148150
}
151+
152+
func (vh *VolumeHandler) info(c *gin.Context) {
153+
name := c.Param("name")
154+
if len(name) == 0 {
155+
log.Error("failed to get volume info, name is empty")
156+
ResponseError(c, CodeVolumeNameNotNull)
157+
return
158+
}
159+
160+
if !strings.Contains(name, "-") || len(strings.Split(name, "-")[1]) == 0 {
161+
log.Errorf("failed to get volume info, name: %s must be in format: name-version", name)
162+
ResponseError(c, CodeVolumeNameMustContainVersion)
163+
return
164+
}
165+
166+
info, err := vs.GetVolumeInfo(name)
167+
if err != nil {
168+
log.Errorf("service.GetVolumeInfo failed, original error: %T %v", errors.Cause(err), err)
169+
log.Errorf("stack trace: \n%+v\n", err)
170+
ResponseError(c, CodeVolumeGetInfoFailed)
171+
return
172+
}
173+
174+
ResponseSuccess(c, gin.H{
175+
"info": info,
176+
})
177+
}

internal/service/volume.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,18 @@ func (vs *VolumeService) PatchVolumeSize(name string, spec *model.VolumeSize) (r
186186
return
187187
}
188188

189+
func (vs *VolumeService) GetVolumeInfo(name string) (info model.EtcdVolumeInfo, err error) {
190+
infoBytes, err := etcd.Get(etcd.Volumes, name)
191+
if err != nil {
192+
return info, errors.WithMessage(err, "etcd.Get failed")
193+
}
194+
195+
if err = json.Unmarshal(infoBytes, &info); err != nil {
196+
return info, errors.WithMessage(err, "json.Unmarshal failed")
197+
}
198+
return
199+
}
200+
189201
// 判断 Volume 是否存在
190202
func (vs *VolumeService) existVolume(name string) bool {
191203
ctx := context.Background()

0 commit comments

Comments
 (0)