Browse Source

优化查询pod状态

pull/268/head
chenzhihang 8 months ago
parent
commit
596aa80315
4 changed files with 26 additions and 17 deletions
  1. +2
    -0
      ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/Constant.java
  2. +4
    -1
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java
  3. +16
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java
  4. +4
    -16
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/PodStatusVo.java

+ 2
- 0
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/Constant.java View File

@@ -44,6 +44,8 @@ public class Constant {
public final static String Unknown = "Unknown"; public final static String Unknown = "Unknown";
public final static String Available = "Available"; public final static String Available = "Available";


public final static String Ready = "Ready";

public final static String Type_Train = "train"; public final static String Type_Train = "train";
public final static String Type_Evaluate = "evaluate"; public final static String Type_Evaluate = "evaluate";




+ 4
- 1
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java View File

@@ -32,6 +32,7 @@ public class TensorBoardServiceImpl implements TensorBoardService {
@Override @Override
public PodStatusVo getTensorBoardStatus(FrameLogPathVo frameLogPathVo) { public PodStatusVo getTensorBoardStatus(FrameLogPathVo frameLogPathVo) {
String status = PodStatus.Terminated.getName(); String status = PodStatus.Terminated.getName();
Boolean podReady = false;
PodStatusVo tensorboardStatusVo = new PodStatusVo(); PodStatusVo tensorboardStatusVo = new PodStatusVo();
tensorboardStatusVo.setStatus(status); tensorboardStatusVo.setStatus(status);
if (StringUtils.isEmpty(frameLogPathVo.getPath())) { if (StringUtils.isEmpty(frameLogPathVo.getPath())) {
@@ -48,12 +49,14 @@ public class TensorBoardServiceImpl implements TensorBoardService {
break; break;
} }
} }
podReady = k8sClientUtil.getPodReady(podName, StringUtils.isEmpty(frameLogPathVo.getNamespace()) ? "default" : frameLogPathVo.getNamespace());
} catch (Exception e) { } catch (Exception e) {
return tensorboardStatusVo; return tensorboardStatusVo;
} }
String url = redisService.getCacheObject(podName); String url = redisService.getCacheObject(podName);
tensorboardStatusVo.setStatus(status); tensorboardStatusVo.setStatus(status);
tensorboardStatusVo.setUrl(url); tensorboardStatusVo.setUrl(url);
tensorboardStatusVo.setReady(podReady);
return tensorboardStatusVo; return tensorboardStatusVo;
} }


@@ -66,7 +69,7 @@ public class TensorBoardServiceImpl implements TensorBoardService {
throw new Exception("存储路径为空"); throw new Exception("存储路径为空");
} }
LoginUser loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
String podName = loginUser.getUsername().toLowerCase()+"-"+frameLogPathVo.getPath().split("/")[1]+ "-tensorboard-pod";
String podName = loginUser.getUsername().toLowerCase() + "-" + frameLogPathVo.getPath().split("/")[1] + "-tensorboard-pod";


// Integer podPort = k8sClientUtil.createPodWithSubPath(podName, StringUtils.isEmpty(frameLogPathVo.getNamespace()) ? "default" : frameLogPathVo.getNamespace(), port, mountPath, frameLogPathVo.getPath(), frameLogPathVo.getPvcName(), image); // Integer podPort = k8sClientUtil.createPodWithSubPath(podName, StringUtils.isEmpty(frameLogPathVo.getNamespace()) ? "default" : frameLogPathVo.getNamespace(), port, mountPath, frameLogPathVo.getPath(), frameLogPathVo.getPvcName(), image);
Integer podPort = k8sClientUtil.createPodWithSubPath(podName, StringUtils.isEmpty(frameLogPathVo.getNamespace()) ? "default" : frameLogPathVo.getNamespace(), port, mountPath, frameLogPathVo.getPath(), image); Integer podPort = k8sClientUtil.createPodWithSubPath(podName, StringUtils.isEmpty(frameLogPathVo.getNamespace()) ? "default" : frameLogPathVo.getNamespace(), port, mountPath, frameLogPathVo.getPath(), image);


+ 16
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java View File

@@ -638,6 +638,22 @@ public class K8sClientUtil {
return pod.getStatus().getPhase(); return pod.getStatus().getPhase();
} }


public Boolean getPodReady(String podName, String namespace) throws Exception {
CoreV1Api api = new CoreV1Api(apiClient);
V1Pod pod = api.readNamespacedPod(podName, namespace, null, null, null);
List<V1PodCondition> conditions = pod.getStatus().getConditions();
if (conditions != null) {
for (V1PodCondition condition : conditions) {
if (!Constant.Ready.equals(condition.getType())) {
return false;
}
}
return true;
} else {
return false;
}
}

/** /**
* 根据Pod的名称和Namespace查询Pod的容器信息 * 根据Pod的名称和Namespace查询Pod的容器信息
* *


+ 4
- 16
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/PodStatusVo.java View File

@@ -2,28 +2,16 @@ package com.ruoyi.platform.vo;


import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming; import com.fasterxml.jackson.databind.annotation.JsonNaming;
import lombok.Data;


import java.io.Serializable; import java.io.Serializable;


@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
@Data
public class PodStatusVo implements Serializable { public class PodStatusVo implements Serializable {
private String status; private String status;
private String url;

public String getStatus() {
return status;
}

public void setStatus(String status) {
this.status = status;
}


public String getUrl() {
return url;
}

public void setUrl(String url) {
this.url = url;
}
private String url;


private Boolean ready;
} }

Loading…
Cancel
Save