pcm-kubernetes/internal/logic/getapppodlogic.go

56 lines
1.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package logic
import (
"context"
"fmt"
"gitlink.org.cn/jcce-pcm/utils/tool"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"gitlink.org.cn/jcce-pcm/pcm-participant-kubernetes/internal/svc"
"gitlink.org.cn/jcce-pcm/pcm-participant-kubernetes/kubernetes"
"github.com/zeromicro/go-zero/core/logx"
)
type GetAppPodLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewGetAppPodLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetAppPodLogic {
return &GetAppPodLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 获取应用pod
func (l *GetAppPodLogic) GetAppPod(in *kubernetes.DeploymentDetailReq) (*kubernetes.AppPodResp, error) {
// 获取指定Deployment的Pod列表
deployment, err := l.svcCtx.ClientSet.AppsV1().Deployments(in.Namespace).Get(l.ctx, in.Name, metav1.GetOptions{})
if err != nil {
return &kubernetes.AppPodResp{
Code: "500",
Msg: err.Error(),
}, nil
}
podList := deployment.Status.Replicas // 获取Pod列表的副本数量
if podList == 0 {
return nil, fmt.Errorf("Deployment %s has no running pods\n", in.Name)
}
podListOptions := metav1.ListOptions{LabelSelector: fmt.Sprintf("app=%s", in.Name)} // 设置Pod列表选项的标签选择器匹配Deployment的名称
list, err := l.svcCtx.ClientSet.CoreV1().Pods(in.Namespace).List(l.ctx, podListOptions)
if err != nil {
return nil, err
}
var kPodList kubernetes.PodList
tool.Convert(list, &kPodList)
return &kubernetes.AppPodResp{
Code: "200",
Msg: "success",
Data: &kPodList,
}, nil
}