Merge remote-tracking branch 'origin/2.0' into 2.0

Former-commit-id: 5fc97d3a619f84bec434812c2151d0cfbbe72392
This commit is contained in:
zhouqunjie 2023-05-18 10:08:34 +08:00
commit 655f694121
7 changed files with 34 additions and 103 deletions

View File

@ -184,6 +184,4 @@ service pcm {
@handler imageListHandler
get /image/list () returns (imageListResp)
@handler imageTagsHandler
get /image/tags (imageTagsReq) returns (imageTagsResp)
}

View File

@ -112,7 +112,7 @@ type (
type (
imageTagsReq {
name string `json:"name"`
name string `form:"name"`
}
imageTagsResp {
name string `json:"name"`

View File

@ -1,25 +0,0 @@
package image
import (
"PCM/common/result"
"net/http"
"PCM/adaptor/PCM-CORE/api/internal/logic/image"
"PCM/adaptor/PCM-CORE/api/internal/svc"
"PCM/adaptor/PCM-CORE/api/internal/types"
"github.com/zeromicro/go-zero/rest/httpx"
)
func ImageTagsHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.ImageTagsReq
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
l := image.NewImageTagsLogic(r.Context(), svcCtx)
resp, err := l.ImageTags(&req)
result.HttpResult(r, w, resp, err)
}
}

View File

@ -271,11 +271,6 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
Path: "/image/list",
Handler: image.ImageListHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/image/tags",
Handler: image.ImageTagsHandler(serverCtx),
},
},
rest.WithPrefix("/pcm/v1"),
)

View File

@ -1,13 +1,12 @@
package image
import (
"PCM/adaptor/PCM-CORE/api/internal/svc"
"PCM/adaptor/PCM-CORE/api/internal/types"
"PCM/common/tool"
"context"
"encoding/json"
"fmt"
"net/http"
"PCM/adaptor/PCM-CORE/api/internal/svc"
"PCM/adaptor/PCM-CORE/api/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
@ -17,6 +16,11 @@ type ImageListLogic struct {
svcCtx *svc.ServiceContext
}
type ImageTags struct {
Name string `json:"name"`
Tags []string `json:"tags" copier:"tags"`
}
func NewImageListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ImageListLogic {
return &ImageListLogic{
Logger: logx.WithContext(ctx),
@ -27,23 +31,30 @@ func NewImageListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ImageLi
func (l *ImageListLogic) ImageList() (resp *types.ImageListResp, err error) {
client := &http.Client{}
// 获取镜像列表
url := fmt.Sprintf("%s/repository/%s/v2/_catalog", l.svcCtx.Config.NexusUrl, "pcm")
req, err := http.NewRequest("GET", url, nil)
bytes, err := tool.HttpClient("GET", url, nil, "")
json.Unmarshal(bytes, &resp)
result := types.ImageListResp{}
for _, image := range resp.Repositories {
// 获取镜像的tag列表
url := fmt.Sprintf("%s/repository/%s/v2/%s/tags/list", l.svcCtx.Config.NexusUrl, "pcm", image)
bytes, err := tool.HttpClient("GET", url, nil, "")
if err != nil {
return nil, err
}
response, err := client.Do(req)
if err != nil {
return nil, err
tags := ImageTags{}
json.Unmarshal(bytes, &tags)
// 拼接镜像名称
for _, tag := range tags.Tags {
var name string
if tag != "latest" {
name = "hub.jcce.dev:18445/" + image + ":v" + tag
} else {
name = "hub.jcce.dev:18445/" + image
}
defer response.Body.Close()
if response.StatusCode != 200 {
result.Repositories = append(result.Repositories, name)
}
json.NewDecoder(response.Body).Decode(&resp)
return resp, nil
}
return &result, nil
}

View File

@ -1,48 +0,0 @@
package image
import (
"context"
"encoding/json"
"fmt"
"net/http"
"PCM/adaptor/PCM-CORE/api/internal/svc"
"PCM/adaptor/PCM-CORE/api/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
type ImageTagsLogic struct {
logx.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
func NewImageTagsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ImageTagsLogic {
return &ImageTagsLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *ImageTagsLogic) ImageTags(req *types.ImageTagsReq) (resp *types.ImageTagsResp, err error) {
client := &http.Client{}
url := fmt.Sprintf("%s/repository/%s/v2/%s/tags/list", l.svcCtx.Config.NexusUrl, "pcm", req.Name)
httpReq, err := http.NewRequest("GET", url, nil)
if err != nil {
return nil, err
}
response, err := client.Do(httpReq)
if err != nil {
return nil, err
}
defer response.Body.Close()
json.NewDecoder(response.Body).Decode(&resp)
if response.StatusCode != 200 {
}
return resp, nil
}

View File

@ -1853,7 +1853,7 @@ type ImageListResp struct {
}
type ImageTagsReq struct {
Name string `json:"name"`
Name string `form:"name"`
}
type ImageTagsResp struct {