创建 删除 查询容器

This commit is contained in:
zhangwei 2025-07-24 15:46:18 +08:00
parent 860d651f7d
commit cd1b06bb9e
10 changed files with 251 additions and 50 deletions

View File

@ -8,7 +8,6 @@ import (
"gitlink.org.cn/JointCloud/pcm-participant-cloud/service"
"gitlink.org.cn/JointCloud/pcm-participant-k8s/model"
"net/http"
"strconv"
"strings"
"sync"
)
@ -31,12 +30,8 @@ func (a *cloudApi) RegisterSvc(svc *service.Service) {
}
func (c *cloudApi) CreateContainerHandler(ctx *gin.Context) {
pfIdStr := ctx.Query("pfId")
_, err := strconv.ParseInt(pfIdStr, 10, 64)
if err != nil {
model.Response(ctx, http.StatusBadRequest, "invalid pfId", nil)
return
}
pfId := ctx.Query("pfId")
var param container.CreateParam
if err := ctx.ShouldBindJSON(&param); err != nil {
if ve, ok := err.(validator.ValidationErrors); ok {
@ -50,5 +45,50 @@ func (c *cloudApi) CreateContainerHandler(ctx *gin.Context) {
}
return
}
//c.service.CreatePod(ctx.Request.Context(), pfId, &param)
fmt.Println(c.service)
createContainer, err := c.service.CreateContainer(ctx.Request.Context(), pfId, &param)
if err != nil {
model.Response(ctx, http.StatusInternalServerError, err, nil)
return
}
model.Response(ctx, http.StatusOK, "success", createContainer)
}
func (c *cloudApi) DeleteContainerHandler(ctx *gin.Context) {
pfId := ctx.Query("pfId")
var param container.DeleteParam
if err := ctx.ShouldBindJSON(&param); err != nil {
if ve, ok := err.(validator.ValidationErrors); ok {
var errorMsg []string
for _, e := range ve {
errorMsg = append(errorMsg, fmt.Sprintf("字段 %s 验证失败: %s", e.Field(), e.Tag()))
}
model.Response(ctx, http.StatusBadRequest, "请求体格式错误: "+strings.Join(errorMsg, "; "), nil)
} else {
model.Response(ctx, http.StatusBadRequest, "请求体解析失败: "+err.Error(), nil)
}
return
}
err := c.service.DeleteContainer(ctx.Request.Context(), pfId, &param)
if err != nil {
model.Response(ctx, http.StatusInternalServerError, err, nil)
return
}
model.Response(ctx, http.StatusOK, "success", nil)
}
func (c *cloudApi) GetContainerHandler(ctx *gin.Context) {
pfId := ctx.Query("pfId")
name := ctx.Query("name")
param := container.GetParam{
Name: name,
}
getContainer, err := c.service.GetContainer(ctx.Request.Context(), pfId, &param)
if err != nil {
model.Response(ctx, http.StatusInternalServerError, err, nil)
return
}
model.Response(ctx, http.StatusOK, "success", getContainer)
}

View File

@ -8,4 +8,5 @@ pcm-core:
coordinator-host: http://127.0.0.1:8999
participant-host: http://localhost:8080
hpc-cluster-list: /pcm/v1/adapter/cluster/list?type=2&pageNum=1&pageSize=10&storageSchedule=1
ai-cluster-list: /pcm/v1/adapter/cluster/list?adapterId=1777144940456666666&type=1&pageNum=1&pageSize=10&storageSchedule=1
ai-cluster-list: /pcm/v1/adapter/cluster/list?adapterId=1777144940456666666&type=1&pageNum=1&pageSize=10&storageSchedule=1
cloud-cluster-list: /pcm/v1/adapter/cluster/list?adapterId=1770658294298316800&type=0&pageNum=1&pageSize=10

View File

@ -1,9 +1,10 @@
package config
type PcmCore struct {
CoordinatorHost string `mapstructure:"coordinator-host" json:"coordinator-host" yaml:"coordinator-host"` // C端主机地址
ParticipantHost string `mapstructure:"participant-host" json:"participant-host" yaml:"participant-host"` // 本P端服务主机地址
HPCClusterList string `mapstructure:"hpc-cluster-list" json:"hpc-cluster-list" yaml:"hpc-cluster-list"` // 集群列表接口
AIClusterList string `mapstructure:"ai-cluster-list" json:"ai-cluster-list" yaml:"ai-cluster-list"` // 集群列表接口
Token string `mapstructure:"token" json:"token" yaml:"token"`
CoordinatorHost string `mapstructure:"coordinator-host" json:"coordinator-host" yaml:"coordinator-host"` // C端主机地址
ParticipantHost string `mapstructure:"participant-host" json:"participant-host" yaml:"participant-host"` // 本P端服务主机地址
HPCClusterList string `mapstructure:"hpc-cluster-list" json:"hpc-cluster-list" yaml:"hpc-cluster-list"` // 集群列表接口
AIClusterList string `mapstructure:"ai-cluster-list" json:"ai-cluster-list" yaml:"ai-cluster-list"` // 集群列表接口
CloudClusterList string `mapstructure:"cloud-cluster-list" json:"cloud-cluster-list" yaml:"cloud-cluster-list"`
Token string `mapstructure:"token" json:"token" yaml:"token"`
}

View File

@ -0,0 +1,152 @@
package initialize
import (
"fmt"
"github.com/go-resty/resty/v2"
"gitlink.org.cn/JointCloud/pcm-participant-client/common/types"
"gitlink.org.cn/JointCloud/pcm-participant-client/common/utils"
"gitlink.org.cn/JointCloud/pcm-participant-client/config"
"gitlink.org.cn/JointCloud/pcm-participant-cloud/platform"
"gitlink.org.cn/JointCloud/pcm-participant-cloud/service"
eci "gitlink.org.cn/JointCloud/pcm-participant-eci"
k8s "gitlink.org.cn/JointCloud/pcm-participant-k8s"
"strconv"
"go.uber.org/zap"
)
// 获取所有集群信息
func GetAllCloudClusterInfos() map[string]types.ClusterInfo {
result := make(map[string]types.ClusterInfo)
clusterInfos.Range(func(key, value interface{}) bool {
result[key.(string)] = value.(types.ClusterInfo)
return true
})
return result
}
func InitCloudCluster(cfg *config.Server) (*service.Service, error) {
client := utils.InitClient(cfg.PcmCore.CoordinatorHost, "")
return initCloudSvc(client, cfg.PcmCore)
}
// 初始化智算集群连接池
func initCloudSvc(client *utils.RestyClient, core config.PcmCore) (*service.Service, error) {
resp := types.ResultResp{}
token := "Bearer " + core.Token
_, err := client.Request(core.CoordinatorHost+core.CloudClusterList, "GET", func(req *resty.Request) {
req.SetHeader("Authorization", token).SetResult(&resp)
})
if err != nil {
return nil, fmt.Errorf("获取集群列表失败: %w", err)
}
if resp.Code != 200 {
return nil, fmt.Errorf("API返回错误: %d, 消息: %s", resp.Code, resp.Msg)
}
var platforms []platform.IPlatform
var svc *service.Service
//var octopus octopus.Octopus
for _, cluster := range resp.Data.List {
if cluster.Status == "offline" {
// 修改集群的server地址为本服务的地址修改状态为在线
cluster.Server = core.ParticipantHost
cluster.Status = "online"
updateClusterReq := types.ClusterCreateReq{
Id: cluster.Id,
AdapterId: strconv.FormatInt(cluster.AdapterId, 10),
Name: cluster.Name,
Nickname: cluster.Nickname,
Description: cluster.Description,
Server: cluster.Server,
MonitorServer: cluster.MonitorServer,
Username: cluster.Username,
Password: cluster.Password,
Token: cluster.Token,
Ak: cluster.Ak,
Sk: cluster.Sk,
RegionName: cluster.Region,
ProjectId: cluster.ProjectId,
Version: cluster.Version,
Label: cluster.Label,
OwnerId: cluster.OwnerId,
AuthType: cluster.AuthType,
ProducerDict: cluster.ProducerDict,
RegionDict: cluster.RegionDict,
Status: cluster.Status,
}
updateResp := types.ResultResp{}
_, err := client.Request(core.CoordinatorHost+"/pcm/v1/adapter/cluster/update", "PUT", func(req *resty.Request) {
req.SetBody(updateClusterReq).SetResult(&updateResp) // 添加请求体
})
if err != nil {
zap.L().Error("更新集群状态失败", zap.Error(err))
continue
}
if updateResp.Code != 200 {
zap.L().Error("更新集群状态API返回错误",
zap.Int("code", updateResp.Code),
zap.String("message", updateResp.Msg))
continue
}
} else if cluster.Status == "online" {
if cluster.Server != core.ParticipantHost {
zap.L().Warn("集群已被其他服务代理",
zap.String("cluster_id", cluster.Id),
zap.String("当前服务地址", core.ParticipantHost),
zap.String("集群记录地址", cluster.Server))
continue
} else {
// 更新集群信息的修改时间
_, err := client.Request(core.CoordinatorHost+"/pcm/v1/adapter/cluster/update", "PUT", func(req *resty.Request) {
req.SetBody(cluster)
})
if err != nil {
zap.L().Error("刷新集群时间失败", zap.Error(err))
}
}
}
if cluster.Id == "" {
zap.L().Warn("跳过无效集群条目: 缺少集群ID")
continue
}
switch cluster.Label {
case "kubernetes":
k8s, err := k8s.New(cluster.Token, cluster.Address, platform.Id(cluster.Id))
if err != nil {
Error("初始化失败", zap.Error(err))
continue
}
platforms = append(platforms, k8s)
//更新C端集群状态
case "eci":
eci, err := eci.New(cluster.Ak, cluster.Sk, cluster.Password, platform.Id(cluster.Id))
if err != nil {
Error("初始化失败", zap.Error(err))
continue
}
platforms = append(platforms, eci)
}
}
if len(platforms) == 0 {
return nil, fmt.Errorf("注册集群列表为空")
}
for _, p := range platforms {
Info("注册集群列表:", zap.Any("id", p.Id()), zap.Any("type", p.Type()), zap.Any("name", p.Name()))
}
svc, err = service.NewService(platforms...)
if err != nil {
return nil, err
}
return svc, nil
}

View File

@ -40,14 +40,20 @@ func main() {
//if err := initialize.InitHPCCluster(cfg); err != nil {
// zap.L().Fatal("集群初始化失败", zap.Error(err))
//}
// 初始化集群连接
svc, err := initialize.InitAICluster(cfg)
// 初始化智算集群连接
aiSvc, err := initialize.InitAICluster(cfg)
if err != nil {
initialize.Panic("Server started failed: %s", err)
return
}
api.AiApi.RegisterSvc(svc)
api.AiApi.RegisterSvc(aiSvc)
// 初始化通算集群连接
cloudSvc, err := initialize.InitCloudCluster(cfg)
if err != nil {
initialize.Panic("Server started failed: %s", err)
return
}
api.CloudApi.RegisterSvc(cloudSvc)
defer initialize.CloseAllPools()
// 设置退出处理
setupGracefulShutdown()

View File

@ -9,9 +9,10 @@ func CloudRoutes(server *gin.Engine) {
cloud := server.Group("/cloud")
cloudApi := api.CloudApi
{
pod := cloud.Group("container")
pod.GET("/list", cloudApi.ListPod)
pod.POST("/create", cloudApi.CreatePodHandler)
cloud := cloud.Group("container")
cloud.POST("/create", cloudApi.CreateContainerHandler)
cloud.DELETE("/delete", cloudApi.DeleteContainerHandler)
cloud.GET("/get", cloudApi.GetContainerHandler)
}
{
//deployment := cloud.Group("deployment")

View File

@ -1,7 +1,7 @@
package platform
const (
K8s Type = "k8s"
K8s Type = "kubernetes"
Eci Type = "eci"
Serverless Type = "serverless"
)
@ -13,4 +13,4 @@ type Platform struct {
}
type Type string
type Id int64
type Id string

View File

@ -2,6 +2,7 @@ package service
import (
"context"
"fmt"
"gitlink.org.cn/JointCloud/pcm-participant-cloud/container"
"gitlink.org.cn/JointCloud/pcm-participant-cloud/platform"
eci "gitlink.org.cn/JointCloud/pcm-participant-eci"
@ -39,8 +40,13 @@ func NewService(platforms ...platform.IPlatform) (*Service, error) {
return &Service{containerMap: containerMap}, nil
}
func (s *Service) CreateContainer(ctx context.Context, pid int64, param *container.CreateParam) (interface{}, error) {
func (s *Service) CreateContainer(ctx context.Context, pid string, param *container.CreateParam) (interface{}, error) {
fmt.Println(s.containerMap)
for id := range s.containerMap {
fmt.Println(s.containerMap[id])
}
svc := s.containerMap[platform.Id(pid)]
fmt.Println(svc)
resp, err := svc.Create(ctx, param)
if err != nil {
return nil, err
@ -48,7 +54,7 @@ func (s *Service) CreateContainer(ctx context.Context, pid int64, param *contain
return resp, nil
}
func (s *Service) DeleteContainer(ctx context.Context, pid int64, param *container.DeleteParam) error {
func (s *Service) DeleteContainer(ctx context.Context, pid string, param *container.DeleteParam) error {
svc := s.containerMap[platform.Id(pid)]
err := svc.Delete(ctx, param)
if err != nil {
@ -57,7 +63,7 @@ func (s *Service) DeleteContainer(ctx context.Context, pid int64, param *contain
return nil
}
func (s *Service) GetContainer(ctx context.Context, pid int64, param *container.GetParam) (interface{}, error) {
func (s *Service) GetContainer(ctx context.Context, pid string, param *container.GetParam) (interface{}, error) {
svc := s.containerMap[platform.Id(pid)]
resp, err := svc.Get(ctx, param)
if err != nil {

View File

@ -5,6 +5,7 @@ import (
"fmt"
"github.com/smartystreets/goconvey/convey"
"gitlink.org.cn/JointCloud/pcm-participant-cloud/container"
"gitlink.org.cn/JointCloud/pcm-participant-cloud/platform"
eci "gitlink.org.cn/JointCloud/pcm-participant-eci"
k8s "gitlink.org.cn/JointCloud/pcm-participant-k8s"
"testing"
@ -13,11 +14,11 @@ import (
func TestCreateService(t *testing.T) {
convey.Convey("Test Service", t, func() {
k8s, err := k8s.New("eyJhbGciOiJSUzI1NiIsImtpZCI6IkNzNXRMOE5VdWdiVHJ2U2JtU3ZKWk5razRwZlJHWWZmV3M0aVNHLUJJOHMifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLTg0bW5sIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJjOWU1NjU1OC1lZTRhLTQ1MGUtYTljNy03NGNhNDU4NzEyNGEiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06YWRtaW4tdXNlciJ9.IxXITCqR8Yv-C3mkC3ItwkDLhNueFk_HMF7QhFtjch8miVhUYH3g2Uh70EB5M_3F8vZIF3CoYd3TLG_1acg2JR9Tf7Ipiwzol3npXIqG27QQJ-px3q2i3CMqwjogKjCSEMWTxHS03CDOCJUFLL2qKIa4U-QmEUYnbOFnNsoXDr7zkgRyREi5QUqlEB1ODMlEy8wb6n1g8E9AqNxnYBeHywAAS8ZMkTiKlEdhi-7Jgblkcssmb_P_5xbWelIy6HfBZuumJICzd8b5JRrkX7m7MaIx4TgNETa17kCFi1JnC6MvC1u3UGQQ7MKiXrud06cN9Sphgnu5nIkFjF5TWpSuaA", "https://119.45.100.73:6443", 123)
k8s, err := k8s.New("", "", platform.Id(123))
if err != nil {
t.Fatalf("failed to create k8s client: %v", err)
}
eci, err := eci.New("LTAI5tLdKjnos44aLvN1XWJk", "FIF0zpGpA8Q0dEraw28VAUTKg7sVLR", "cn-hangzhou", 456)
eci, err := eci.New("", "", "cn-hangzhou", platform.Id(456))
if err != nil {
t.Fatalf("failed to create eci client: %v", err)
}
@ -43,7 +44,7 @@ func TestCreateService(t *testing.T) {
Cpu: "100m",
Memory: "256Mi",
}
ctn, err := svc.CreateContainer(ctx, 123, &param)
ctn, err := svc.CreateContainer(ctx, "123", &param)
if err != nil {
fmt.Println(err)
}
@ -58,11 +59,11 @@ func TestCreateService(t *testing.T) {
func TestDeleteService(t *testing.T) {
convey.Convey("Test Service", t, func() {
k8s, err := k8s.New("eyJhbGciOiJSUzI1NiIsImtpZCI6IkNzNXRMOE5VdWdiVHJ2U2JtU3ZKWk5razRwZlJHWWZmV3M0aVNHLUJJOHMifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLTg0bW5sIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJjOWU1NjU1OC1lZTRhLTQ1MGUtYTljNy03NGNhNDU4NzEyNGEiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06YWRtaW4tdXNlciJ9.IxXITCqR8Yv-C3mkC3ItwkDLhNueFk_HMF7QhFtjch8miVhUYH3g2Uh70EB5M_3F8vZIF3CoYd3TLG_1acg2JR9Tf7Ipiwzol3npXIqG27QQJ-px3q2i3CMqwjogKjCSEMWTxHS03CDOCJUFLL2qKIa4U-QmEUYnbOFnNsoXDr7zkgRyREi5QUqlEB1ODMlEy8wb6n1g8E9AqNxnYBeHywAAS8ZMkTiKlEdhi-7Jgblkcssmb_P_5xbWelIy6HfBZuumJICzd8b5JRrkX7m7MaIx4TgNETa17kCFi1JnC6MvC1u3UGQQ7MKiXrud06cN9Sphgnu5nIkFjF5TWpSuaA", "https://119.45.100.73:6443", 123)
k8s, err := k8s.New("eyJhbGciOiJSUzI1NiIsImtpZCI6IkNzNXRMOE5VdWdiVHJ2U2JtU3ZKWk5razRwZlJHWWZmV3M0aVNHLUJJOHMifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLTg0bW5sIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJjOWU1NjU1OC1lZTRhLTQ1MGUtYTljNy03NGNhNDU4NzEyNGEiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06YWRtaW4tdXNlciJ9.IxXITCqR8Yv-C3mkC3ItwkDLhNueFk_HMF7QhFtjch8miVhUYH3g2Uh70EB5M_3F8vZIF3CoYd3TLG_1acg2JR9Tf7Ipiwzol3npXIqG27QQJ-px3q2i3CMqwjogKjCSEMWTxHS03CDOCJUFLL2qKIa4U-QmEUYnbOFnNsoXDr7zkgRyREi5QUqlEB1ODMlEy8wb6n1g8E9AqNxnYBeHywAAS8ZMkTiKlEdhi-7Jgblkcssmb_P_5xbWelIy6HfBZuumJICzd8b5JRrkX7m7MaIx4TgNETa17kCFi1JnC6MvC1u3UGQQ7MKiXrud06cN9Sphgnu5nIkFjF5TWpSuaA", "https://119.45.100.73:6443", platform.Id(123))
if err != nil {
t.Fatalf("failed to create k8s client: %v", err)
}
eci, err := eci.New("LTAI5tLdKjnos44aLvN1XWJk", "FIF0zpGpA8Q0dEraw28VAUTKg7sVLR", "cn-hangzhou", 456)
eci, err := eci.New("LTAI5tLdKjnos44aLvN1XWJk", "FIF0zpGpA8Q0dEraw28VAUTKg7sVLR", "cn-hangzhou", platform.Id(456))
if err != nil {
t.Fatalf("failed to create eci client: %v", err)
}
@ -83,7 +84,7 @@ func TestDeleteService(t *testing.T) {
//},
Name: "hello-llama",
}
err := svc.DeleteContainer(ctx, 123, &param)
err := svc.DeleteContainer(ctx, "123", &param)
if err != nil {
fmt.Println(err)
}
@ -98,11 +99,11 @@ func TestDeleteService(t *testing.T) {
func TestGetService(t *testing.T) {
convey.Convey("Test Service", t, func() {
k8s, err := k8s.New("eyJhbGciOiJSUzI1NiIsImtpZCI6IkNzNXRMOE5VdWdiVHJ2U2JtU3ZKWk5razRwZlJHWWZmV3M0aVNHLUJJOHMifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLTg0bW5sIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJjOWU1NjU1OC1lZTRhLTQ1MGUtYTljNy03NGNhNDU4NzEyNGEiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06YWRtaW4tdXNlciJ9.IxXITCqR8Yv-C3mkC3ItwkDLhNueFk_HMF7QhFtjch8miVhUYH3g2Uh70EB5M_3F8vZIF3CoYd3TLG_1acg2JR9Tf7Ipiwzol3npXIqG27QQJ-px3q2i3CMqwjogKjCSEMWTxHS03CDOCJUFLL2qKIa4U-QmEUYnbOFnNsoXDr7zkgRyREi5QUqlEB1ODMlEy8wb6n1g8E9AqNxnYBeHywAAS8ZMkTiKlEdhi-7Jgblkcssmb_P_5xbWelIy6HfBZuumJICzd8b5JRrkX7m7MaIx4TgNETa17kCFi1JnC6MvC1u3UGQQ7MKiXrud06cN9Sphgnu5nIkFjF5TWpSuaA", "https://119.45.100.73:6443", 123)
k8s, err := k8s.New("eyJhbGciOiJSUzI1NiIsImtpZCI6IkNzNXRMOE5VdWdiVHJ2U2JtU3ZKWk5razRwZlJHWWZmV3M0aVNHLUJJOHMifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLTg0bW5sIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJjOWU1NjU1OC1lZTRhLTQ1MGUtYTljNy03NGNhNDU4NzEyNGEiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06YWRtaW4tdXNlciJ9.IxXITCqR8Yv-C3mkC3ItwkDLhNueFk_HMF7QhFtjch8miVhUYH3g2Uh70EB5M_3F8vZIF3CoYd3TLG_1acg2JR9Tf7Ipiwzol3npXIqG27QQJ-px3q2i3CMqwjogKjCSEMWTxHS03CDOCJUFLL2qKIa4U-QmEUYnbOFnNsoXDr7zkgRyREi5QUqlEB1ODMlEy8wb6n1g8E9AqNxnYBeHywAAS8ZMkTiKlEdhi-7Jgblkcssmb_P_5xbWelIy6HfBZuumJICzd8b5JRrkX7m7MaIx4TgNETa17kCFi1JnC6MvC1u3UGQQ7MKiXrud06cN9Sphgnu5nIkFjF5TWpSuaA", "https://119.45.100.73:6443", platform.Id(123))
if err != nil {
t.Fatalf("failed to create k8s client: %v", err)
}
eci, err := eci.New("LTAI5tLdKjnos44aLvN1XWJk", "FIF0zpGpA8Q0dEraw28VAUTKg7sVLR", "cn-hangzhou", 456)
eci, err := eci.New("LTAI5tLdKjnos44aLvN1XWJk", "FIF0zpGpA8Q0dEraw28VAUTKg7sVLR", "cn-hangzhou", platform.Id(456))
if err != nil {
t.Fatalf("failed to create eci client: %v", err)
}
@ -120,7 +121,7 @@ func TestGetService(t *testing.T) {
Name: "hello-nginx",
GetParameter: &container.EciGetParam{},
}
resp, err := svc.GetContainer(ctx, 456, &param)
resp, err := svc.GetContainer(ctx, "456", &param)
if err != nil {
fmt.Println(err)
}

View File

@ -11,18 +11,11 @@ import (
"k8s.io/client-go/kubernetes"
)
type ContainerService struct {
}
func NewDatasetService() *ContainerService {
return &ContainerService{}
}
func CreateContainer(client *kubernetes.Clientset, param *model.CreateContainerParam) error {
// 查询pod是否存在
_, err := client.CoreV1().Pods("default").Get(context.TODO(), param.ContainerGroupName, metav1.GetOptions{})
if err == nil {
return fmt.Errorf("Pod already exists")
return err
}
if !errors.IsNotFound(err) {
return err
@ -115,13 +108,13 @@ func DeleteContainer(client *kubernetes.Clientset, param *model.DeleteContainerP
if err != nil {
return err
}
// 删除pvc
//if pod.Spec.Volumes[0].PersistentVolumeClaim != nil {
// err = client.CoreV1().PersistentVolumeClaims("default").Delete(context.TODO(), pod.Spec.Volumes[0].PersistentVolumeClaim.ClaimName, metav1.DeleteOptions{})
// if err != nil {
// return err
// }
//}
// 删除svc
if pod.Spec.Containers[0].Ports != nil {
err = client.CoreV1().Services("default").Delete(context.TODO(), pod.Name+"-service", metav1.DeleteOptions{})
if err != nil {
return err
}
}
return nil
}