存储redis

This commit is contained in:
fanshuai 2024-04-10 17:16:25 +08:00
parent a5fb181db3
commit 6707bc2710
4 changed files with 46 additions and 6 deletions

View File

@ -4,6 +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 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;
@ -36,7 +37,7 @@ public class TensorBoardController extends BaseController {
} }
@PostMapping("/getStatus") @PostMapping("/getStatus")
@ApiResponse @ApiResponse
public GenericsAjaxResult<String> getStatus(@RequestBody FrameLogPathVo frameLogPathVo) throws Exception { public GenericsAjaxResult<TensorboardStatusVo> getStatus(@RequestBody FrameLogPathVo frameLogPathVo) throws Exception {
return genericsSuccess(tensorBoardService.getTensorBoardStatus(frameLogPathVo)); return genericsSuccess(tensorBoardService.getTensorBoardStatus(frameLogPathVo));
} }
} }

View File

@ -1,11 +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;
public interface TensorBoardService { public interface TensorBoardService {
String getTensorBoardStatus(FrameLogPathVo frameLogPathVo); TensorboardStatusVo getTensorBoardStatus(FrameLogPathVo frameLogPathVo);
/** /**
* 在集群中启动TensorBoard容器并且返回地址4小时后销毁 * 在集群中启动TensorBoard容器并且返回地址4小时后销毁
* @param frameLogPathVo * @param frameLogPathVo

View File

@ -1,11 +1,13 @@
package com.ruoyi.platform.service.impl; package com.ruoyi.platform.service.impl;
import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.platform.domain.PodStatus; 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.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;
@ -23,12 +25,16 @@ public class TensorBoardServiceImpl implements TensorBoardService {
@Value("${tensorBoard.masterIp}") @Value("${tensorBoard.masterIp}")
private String masterIp; private String masterIp;
@Resource @Resource
private RedisService redisService;
@Resource
private K8sClientUtil k8sClientUtil; private K8sClientUtil k8sClientUtil;
@Override @Override
public String getTensorBoardStatus(FrameLogPathVo frameLogPathVo){ public TensorboardStatusVo getTensorBoardStatus(FrameLogPathVo frameLogPathVo){
String status = PodStatus.Terminated.getName(); String status = PodStatus.Terminated.getName();
TensorboardStatusVo tensorboardStatusVo = new TensorboardStatusVo();
tensorboardStatusVo.setStatus(status);
if (StringUtils.isEmpty(frameLogPathVo.getPath())){ if (StringUtils.isEmpty(frameLogPathVo.getPath())){
return status; return tensorboardStatusVo;
} }
LoginUser loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
String podName = loginUser.getUsername().toLowerCase()+"-"+frameLogPathVo.getPath().split("/")[2]+ "-tensorboard-pod"; String podName = loginUser.getUsername().toLowerCase()+"-"+frameLogPathVo.getPath().split("/")[2]+ "-tensorboard-pod";
@ -42,9 +48,12 @@ public class TensorBoardServiceImpl implements TensorBoardService {
} }
} }
} catch (Exception e) { } catch (Exception e) {
return PodStatus.Terminated.getName(); return tensorboardStatusVo;
} }
return status; String url = redisService.getCacheObject(podName);
tensorboardStatusVo.setStatus(status);
tensorboardStatusVo.setUrl(url);
return tensorboardStatusVo;
} }
@Override @Override
@ -55,6 +64,7 @@ public class TensorBoardServiceImpl implements TensorBoardService {
LoginUser loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
String podName = loginUser.getUsername().toLowerCase()+"-"+frameLogPathVo.getPath().split("/")[2]+ "-tensorboard-pod"; String podName = loginUser.getUsername().toLowerCase()+"-"+frameLogPathVo.getPath().split("/")[2]+ "-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);
redisService.setCacheObject(podName,masterIp + ":" + podPort);
return masterIp + ":" + podPort; return masterIp + ":" + podPort;
} }
} }

View File

@ -0,0 +1,28 @@
package com.ruoyi.platform.vo;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import java.io.Serializable;
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
public class TensorboardStatusVo 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;
}
}