| @@ -5,6 +5,7 @@ import com.ruoyi.common.core.web.domain.AjaxResult; | |||||
| import com.ruoyi.common.core.web.domain.GenericsAjaxResult; | import com.ruoyi.common.core.web.domain.GenericsAjaxResult; | ||||
| import com.ruoyi.platform.service.JupyterService; | import com.ruoyi.platform.service.JupyterService; | ||||
| import com.ruoyi.platform.vo.FrameLogPathVo; | import com.ruoyi.platform.vo.FrameLogPathVo; | ||||
| import com.ruoyi.platform.vo.PodStatusVo; | |||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
| import io.swagger.v3.oas.annotations.responses.ApiResponse; | import io.swagger.v3.oas.annotations.responses.ApiResponse; | ||||
| @@ -56,6 +57,13 @@ public class JupyterController extends BaseController { | |||||
| return genericsSuccess(this.jupyterService.stopJupyterService(id)); | return genericsSuccess(this.jupyterService.stopJupyterService(id)); | ||||
| } | } | ||||
| @PostMapping("/getStatus") | |||||
| @ApiOperation("查询jupyter pod状态") | |||||
| @ApiResponse | |||||
| public GenericsAjaxResult<PodStatusVo> getStatus(@RequestBody FrameLogPathVo frameLogPathVo) throws Exception { | |||||
| return genericsSuccess(this.jupyterService.getJupyterStatus(frameLogPathVo)); | |||||
| } | |||||
| @GetMapping(value = "/upload") | @GetMapping(value = "/upload") | ||||
| public AjaxResult upload() throws Exception { | public AjaxResult upload() throws Exception { | ||||
| @@ -4,7 +4,7 @@ import com.ruoyi.common.core.web.controller.BaseController; | |||||
| import com.ruoyi.common.core.web.domain.GenericsAjaxResult; | import com.ruoyi.common.core.web.domain.GenericsAjaxResult; | ||||
| import com.ruoyi.platform.service.TensorBoardService; | import com.ruoyi.platform.service.TensorBoardService; | ||||
| import com.ruoyi.platform.vo.FrameLogPathVo; | import com.ruoyi.platform.vo.FrameLogPathVo; | ||||
| import com.ruoyi.platform.vo.TensorboardStatusVo; | |||||
| import com.ruoyi.platform.vo.PodStatusVo; | |||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
| import io.swagger.v3.oas.annotations.responses.ApiResponse; | import io.swagger.v3.oas.annotations.responses.ApiResponse; | ||||
| @@ -37,7 +37,7 @@ public class TensorBoardController extends BaseController { | |||||
| } | } | ||||
| @PostMapping("/getStatus") | @PostMapping("/getStatus") | ||||
| @ApiResponse | @ApiResponse | ||||
| public GenericsAjaxResult<TensorboardStatusVo> getStatus(@RequestBody FrameLogPathVo frameLogPathVo) throws Exception { | |||||
| public GenericsAjaxResult<PodStatusVo> getStatus(@RequestBody FrameLogPathVo frameLogPathVo) throws Exception { | |||||
| return genericsSuccess(tensorBoardService.getTensorBoardStatus(frameLogPathVo)); | return genericsSuccess(tensorBoardService.getTensorBoardStatus(frameLogPathVo)); | ||||
| } | } | ||||
| } | } | ||||
| @@ -1,6 +1,7 @@ | |||||
| package com.ruoyi.platform.service; | package com.ruoyi.platform.service; | ||||
| import com.ruoyi.platform.vo.FrameLogPathVo; | import com.ruoyi.platform.vo.FrameLogPathVo; | ||||
| import com.ruoyi.platform.vo.PodStatusVo; | |||||
| import java.io.InputStream; | import java.io.InputStream; | ||||
| @@ -14,4 +15,6 @@ public interface JupyterService { | |||||
| String runJupyterService(Integer id); | String runJupyterService(Integer id); | ||||
| String stopJupyterService(Integer id) throws Exception; | String stopJupyterService(Integer id) throws Exception; | ||||
| PodStatusVo getJupyterStatus(FrameLogPathVo frameLogPathVo); | |||||
| } | } | ||||
| @@ -1,12 +1,12 @@ | |||||
| package com.ruoyi.platform.service; | package com.ruoyi.platform.service; | ||||
| import com.ruoyi.platform.vo.FrameLogPathVo; | import com.ruoyi.platform.vo.FrameLogPathVo; | ||||
| import com.ruoyi.platform.vo.TensorboardStatusVo; | |||||
| import com.ruoyi.platform.vo.PodStatusVo; | |||||
| public interface TensorBoardService { | public interface TensorBoardService { | ||||
| TensorboardStatusVo getTensorBoardStatus(FrameLogPathVo frameLogPathVo); | |||||
| PodStatusVo getTensorBoardStatus(FrameLogPathVo frameLogPathVo); | |||||
| /** | /** | ||||
| * 在集群中启动TensorBoard容器,并且返回地址,4小时后销毁 | * 在集群中启动TensorBoard容器,并且返回地址,4小时后销毁 | ||||
| * @param frameLogPathVo | * @param frameLogPathVo | ||||
| @@ -10,10 +10,13 @@ import com.ruoyi.platform.utils.JacksonUtil; | |||||
| import com.ruoyi.platform.utils.K8sClientUtil; | import com.ruoyi.platform.utils.K8sClientUtil; | ||||
| import com.ruoyi.platform.utils.MinioUtil; | import com.ruoyi.platform.utils.MinioUtil; | ||||
| import com.ruoyi.platform.utils.MlflowUtil; | import com.ruoyi.platform.utils.MlflowUtil; | ||||
| import com.ruoyi.platform.vo.FrameLogPathVo; | |||||
| import com.ruoyi.platform.vo.PodStatusVo; | |||||
| import com.ruoyi.system.api.model.LoginUser; | import com.ruoyi.system.api.model.LoginUser; | ||||
| import io.kubernetes.client.openapi.models.V1PersistentVolumeClaim; | import io.kubernetes.client.openapi.models.V1PersistentVolumeClaim; | ||||
| import io.kubernetes.client.openapi.models.V1Pod; | import io.kubernetes.client.openapi.models.V1Pod; | ||||
| import org.springframework.beans.factory.annotation.Value; | import org.springframework.beans.factory.annotation.Value; | ||||
| import org.springframework.context.annotation.Lazy; | |||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
| import javax.annotation.Resource; | import javax.annotation.Resource; | ||||
| @@ -50,6 +53,7 @@ public class JupyterServiceImpl implements JupyterService { | |||||
| private DevEnvironmentDao devEnvironmentDao; | private DevEnvironmentDao devEnvironmentDao; | ||||
| @Resource | @Resource | ||||
| @Lazy | |||||
| private DevEnvironmentService devEnvironmentService; | private DevEnvironmentService devEnvironmentService; | ||||
| @Resource | @Resource | ||||
| @@ -118,6 +122,11 @@ public class JupyterServiceImpl implements JupyterService { | |||||
| return deleteResult + ",编辑器已停止"; | return deleteResult + ",编辑器已停止"; | ||||
| } | } | ||||
| @Override | |||||
| public PodStatusVo getJupyterStatus(FrameLogPathVo frameLogPathVo) { | |||||
| return null; | |||||
| } | |||||
| @Override | @Override | ||||
| public void upload(InputStream inputStream) { | public void upload(InputStream inputStream) { | ||||
| @@ -7,7 +7,7 @@ import com.ruoyi.platform.domain.PodStatus; | |||||
| import com.ruoyi.platform.service.TensorBoardService; | import com.ruoyi.platform.service.TensorBoardService; | ||||
| import com.ruoyi.platform.utils.K8sClientUtil; | import com.ruoyi.platform.utils.K8sClientUtil; | ||||
| import com.ruoyi.platform.vo.FrameLogPathVo; | import com.ruoyi.platform.vo.FrameLogPathVo; | ||||
| import com.ruoyi.platform.vo.TensorboardStatusVo; | |||||
| import com.ruoyi.platform.vo.PodStatusVo; | |||||
| import com.ruoyi.system.api.model.LoginUser; | import com.ruoyi.system.api.model.LoginUser; | ||||
| import org.springframework.beans.factory.annotation.Value; | import org.springframework.beans.factory.annotation.Value; | ||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
| @@ -29,9 +29,9 @@ public class TensorBoardServiceImpl implements TensorBoardService { | |||||
| @Resource | @Resource | ||||
| private K8sClientUtil k8sClientUtil; | private K8sClientUtil k8sClientUtil; | ||||
| @Override | @Override | ||||
| public TensorboardStatusVo getTensorBoardStatus(FrameLogPathVo frameLogPathVo){ | |||||
| public PodStatusVo getTensorBoardStatus(FrameLogPathVo frameLogPathVo){ | |||||
| String status = PodStatus.Terminated.getName(); | String status = PodStatus.Terminated.getName(); | ||||
| TensorboardStatusVo tensorboardStatusVo = new TensorboardStatusVo(); | |||||
| PodStatusVo tensorboardStatusVo = new PodStatusVo(); | |||||
| tensorboardStatusVo.setStatus(status); | tensorboardStatusVo.setStatus(status); | ||||
| if (StringUtils.isEmpty(frameLogPathVo.getPath())){ | if (StringUtils.isEmpty(frameLogPathVo.getPath())){ | ||||
| return tensorboardStatusVo; | return tensorboardStatusVo; | ||||
| @@ -6,7 +6,7 @@ import com.fasterxml.jackson.databind.annotation.JsonNaming; | |||||
| import java.io.Serializable; | import java.io.Serializable; | ||||
| @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) | @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) | ||||
| public class TensorboardStatusVo implements Serializable { | |||||
| public class PodStatusVo implements Serializable { | |||||
| private String status; | private String status; | ||||
| private String url; | private String url; | ||||
| @@ -25,4 +25,5 @@ public class TensorboardStatusVo implements Serializable { | |||||
| public void setUrl(String url) { | public void setUrl(String url) { | ||||
| this.url = url; | this.url = url; | ||||
| } | } | ||||
| } | } | ||||