创建 删除 查询容器
This commit is contained in:
parent
860d651f7d
commit
cd1b06bb9e
|
@ -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(¶m); 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, ¶m)
|
||||
fmt.Println(c.service)
|
||||
createContainer, err := c.service.CreateContainer(ctx.Request.Context(), pfId, ¶m)
|
||||
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(¶m); 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, ¶m)
|
||||
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, ¶m)
|
||||
if err != nil {
|
||||
model.Response(ctx, http.StatusInternalServerError, err, nil)
|
||||
return
|
||||
}
|
||||
model.Response(ctx, http.StatusOK, "success", getContainer)
|
||||
}
|
||||
|
|
|
@ -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
|
|
@ -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"`
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
|
@ -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()
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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, ¶m)
|
||||
ctn, err := svc.CreateContainer(ctx, "123", ¶m)
|
||||
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, ¶m)
|
||||
err := svc.DeleteContainer(ctx, "123", ¶m)
|
||||
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, ¶m)
|
||||
resp, err := svc.GetContainer(ctx, "456", ¶m)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue