diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/Constant.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/Constant.java index 8303ebf7..acc1aa13 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/Constant.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/Constant.java @@ -44,6 +44,8 @@ public class Constant { public final static String Unknown = "Unknown"; public final static String Available = "Available"; + public final static String Ready = "Ready"; + public final static String Type_Train = "train"; public final static String Type_Evaluate = "evaluate"; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java index 2931ebd4..e3e574e6 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java @@ -32,6 +32,7 @@ public class TensorBoardServiceImpl implements TensorBoardService { @Override public PodStatusVo getTensorBoardStatus(FrameLogPathVo frameLogPathVo) { String status = PodStatus.Terminated.getName(); + Boolean podReady = false; PodStatusVo tensorboardStatusVo = new PodStatusVo(); tensorboardStatusVo.setStatus(status); if (StringUtils.isEmpty(frameLogPathVo.getPath())) { @@ -48,12 +49,14 @@ public class TensorBoardServiceImpl implements TensorBoardService { break; } } + podReady = k8sClientUtil.getPodReady(podName, StringUtils.isEmpty(frameLogPathVo.getNamespace()) ? "default" : frameLogPathVo.getNamespace()); } catch (Exception e) { return tensorboardStatusVo; } String url = redisService.getCacheObject(podName); tensorboardStatusVo.setStatus(status); tensorboardStatusVo.setUrl(url); + tensorboardStatusVo.setReady(podReady); return tensorboardStatusVo; } @@ -66,7 +69,7 @@ public class TensorBoardServiceImpl implements TensorBoardService { throw new Exception("存储路径为空"); } 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(), image); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java index 69819c38..91842d2a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java @@ -638,6 +638,22 @@ public class K8sClientUtil { 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 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的容器信息 * diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/PodStatusVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/PodStatusVo.java index 0a8c8c0a..87653354 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/PodStatusVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/PodStatusVo.java @@ -2,28 +2,16 @@ package com.ruoyi.platform.vo; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; +import lombok.Data; import java.io.Serializable; @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) +@Data public class PodStatusVo implements Serializable { 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; }