From 8dbd8d74f5d3406e1606d482a040e63f8b20464b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E5=A4=A7=E9=94=90?= <1070211640@qq.com> Date: Mon, 25 Mar 2024 17:16:56 +0800 Subject: [PATCH 01/16] =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E8=BF=94=E5=9B=9Ejson=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../experiment/ExperimentInsController.java | 25 +++++++++--- .../service/ExperimentInsService.java | 4 +- .../impl/ExperimentInsServiceImpl.java | 38 +++++++++++++++---- .../service/impl/WorkflowServiceImpl.java | 5 --- 4 files changed, 54 insertions(+), 18 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java index 678e6de5..c3ab7134 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java @@ -121,7 +121,7 @@ public class ExperimentInsController { * @return 运行日志 */ - @GetMapping(("/log")) + @GetMapping("/log") @ApiOperation("查询实例日志") public AjaxResult showExperimentInsLog(@RequestParam("id") Integer id, @RequestParam("component_id") String componentId){ @@ -129,25 +129,40 @@ public class ExperimentInsController { } /** - * 查询实验实时日志 + * 查询pods实时日志 * * @return 运行日志 */ - @PostMapping(("/realTimeLog")) - @ApiOperation("查询实例实时日志") + @GetMapping("/pods/log") + @ApiOperation("获取pod实时日志请求") + public AjaxResult getRealtimePodLog(@RequestParam("pod_name") String podName, + @RequestParam("start_time") String startTime){ + return AjaxResult.success(this.experimentInsService.getRealtimePodLog(podName,startTime)); + } + + /** + * 查询实验实例实时日志 + * + * @return 运行日志 + */ + + @PostMapping("/realTimeLog") + @ApiOperation("查询实验实例实时日志") public AjaxResult getRealtimeWorkflowLog(@RequestBody LogRequestVo logRequest){ return AjaxResult.success(this.experimentInsService.getRealtimeWorkflowLog(logRequest)); } + + /** * 查询实验节点结果 * * @return 运行日志 */ - @GetMapping(("/nodeResult")) + @GetMapping("/nodeResult") @ApiOperation("查询实例节点结果") public AjaxResult getNodeResult(@RequestParam("id") Integer id,@RequestParam("node_id") String nodeId) throws Exception { return AjaxResult.success(this.experimentInsService.getNodeResult(id,nodeId)); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java index b6848de2..96552f83 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java @@ -7,6 +7,7 @@ import org.springframework.data.domain.PageRequest; import java.io.IOException; import java.util.List; +import java.util.Map; /** * (ExperimentIns)表服务接口 @@ -90,6 +91,7 @@ public interface ExperimentInsService { List getNodeResult(Integer id, String nodeId) throws Exception; - String getRealtimeWorkflowLog(LogRequestVo logRequest); + Map getRealtimeWorkflowLog(LogRequestVo logRequest); + Map getRealtimePodLog(String podName, String startTime); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index 299a1c59..2636c671 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -1,6 +1,5 @@ package com.ruoyi.platform.service.impl; -import com.fasterxml.jackson.core.JsonProcessingException; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.platform.domain.Experiment; import com.ruoyi.platform.domain.ExperimentIns; @@ -8,10 +7,7 @@ import com.ruoyi.platform.mapper.ExperimentDao; import com.ruoyi.platform.mapper.ExperimentInsDao; import com.ruoyi.platform.service.ExperimentInsService; import com.ruoyi.platform.service.WorkflowService; -import com.ruoyi.platform.utils.DateUtils; -import com.ruoyi.platform.utils.HttpUtils; -import com.ruoyi.platform.utils.JsonUtils; -import com.ruoyi.platform.utils.MinioUtil; +import com.ruoyi.platform.utils.*; import com.ruoyi.platform.vo.LogRequestVo; import com.ruoyi.system.api.model.LoginUser; import org.apache.commons.lang3.StringUtils; @@ -53,6 +49,8 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { private String argoWorkflowLog; @Value("${argo.workflowRealTimeLog}") private String argoWorkflowRealTimeLog; + @Value("${argo.workflowPodLog}") + private String argoWorkflowPodLog; private final MinioUtil minioUtil; public ExperimentInsServiceImpl(MinioUtil minioUtil) { @@ -457,7 +455,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { } @Override - public String getRealtimeWorkflowLog(LogRequestVo logRequest) { + public Map getRealtimeWorkflowLog(LogRequestVo logRequest) { String componentId = logRequest.getComponentId(); String nameSpace = logRequest.getNamespace(); @@ -482,7 +480,10 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { if (StringUtils.isEmpty(req)) { throw new RuntimeException("响应内容为空"); } - return req; + // 使用JacksonUtil将响应字符串转换为Map + Map tempMap = JacksonUtil.parseJSONStr2Map(req); + //去掉中间多余的data层 + return (Map) tempMap.get("data"); } catch (Exception e) { throw new RuntimeException("查询实验日志失败: " + e.getMessage(), e); @@ -490,6 +491,29 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { } + @Override + public Map getRealtimePodLog(String podName, String startTime) { + Map requestData = new HashMap<>(); + requestData.put("pod_name",podName); + requestData.put("start_time",startTime); + try { + // 将Map转换为JSON字符串 + String req = HttpUtils.sendPost(argoUrl + argoWorkflowPodLog, JsonUtils.mapToJson(requestData)); + // 检查响应是否为空或无内容 + if (StringUtils.isEmpty(req)) { + throw new RuntimeException("响应内容为空"); + } + // 使用JacksonUtil将响应字符串转换为Map + Map tempMap = JacksonUtil.parseJSONStr2Map(req); + //去掉中间多余的data层 + return (Map) tempMap.get("data"); + + } catch (Exception e) { + throw new RuntimeException("查询pod实时日志失败: " + e.getMessage(), e); + } + + } + private boolean isTerminatedState(ExperimentIns ins) throws IOException { // 定义终止态的列表,例如 "Succeeded", "Failed" 等 String status = ins.getStatus(); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowServiceImpl.java index c4c7992a..023e1a98 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowServiceImpl.java @@ -154,8 +154,6 @@ public class WorkflowServiceImpl implements WorkflowService { } @Override - - public Workflow duplicateWorkflow(Long id) { //先去查找数据库中存在的数据 Workflow workflow = this.queryById(id); @@ -187,13 +185,10 @@ public class WorkflowServiceImpl implements WorkflowService { throw new RuntimeException("复制流水线失败: " + e.getMessage(), e); } - } return null; } - - } From 2f8d383a066dd8e0711c56aa91f0ba579a9147b7 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Tue, 26 Mar 2024 16:45:24 +0800 Subject: [PATCH 02/16] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E6=A1=86=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- react-ui/config/proxy.ts | 2 +- ruoyi-common/ruoyi-common-core/pom.xml | 4 + .../ruoyi/common/core/utils/SortUtils.java | 63 ++++++ .../core/web/controller/BaseController.java | 199 ++++++++++++++---- .../core/web/domain/GenericsAjaxResult.java | 171 +++++++++++++++ .../core/web/page/GenericsTableDataInfo.java | 98 +++++++++ .../experiment/ExperimentController.java | 13 +- .../experiment/ExperimentInsController.java | 1 + .../tensorBoard/TensorBoardController.java | 39 ++++ .../controller/tensorBoard/tensorBoard.java | 15 -- .../com/ruoyi/platform/domain/Experiment.java | 2 + .../ruoyi/platform/domain/ExperimentIns.java | 1 + .../platform/service/TensorBoardService.java | 13 ++ .../service/impl/JupyterServiceImpl.java | 4 +- .../service/impl/TensorBoardServiceImpl.java | 35 +++ .../ruoyi/platform/utils/K8sClientUtil.java | 73 ++++++- .../com/ruoyi/platform/vo/FrameLogPathVo.java | 37 ++++ 17 files changed, 702 insertions(+), 68 deletions(-) create mode 100644 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SortUtils.java create mode 100644 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/GenericsAjaxResult.java create mode 100644 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/GenericsTableDataInfo.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/tensorBoard/TensorBoardController.java delete mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/tensorBoard/tensorBoard.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/TensorBoardService.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/FrameLogPathVo.java diff --git a/react-ui/config/proxy.ts b/react-ui/config/proxy.ts index 911db70b..fc984955 100644 --- a/react-ui/config/proxy.ts +++ b/react-ui/config/proxy.ts @@ -15,7 +15,7 @@ export default { // localhost:8000/api/** -> https://preview.pro.ant.design/api/** '/api/': { // 要代理的地址 - // target: 'http://172.20.32.181:31205', + // target: 'ci4s-gateway-service.ci4s-test.svc:8082', // target: 'http://172.20.32.98:8082', target: 'http://172.20.32.150:8082', // 配置了这个可以从 http 代理到 https diff --git a/ruoyi-common/ruoyi-common-core/pom.xml b/ruoyi-common/ruoyi-common-core/pom.xml index b394ea9b..67735a9f 100644 --- a/ruoyi-common/ruoyi-common-core/pom.xml +++ b/ruoyi-common/ruoyi-common-core/pom.xml @@ -112,6 +112,10 @@ io.swagger swagger-annotations + + org.projectlombok + lombok + diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SortUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SortUtils.java new file mode 100644 index 00000000..7d1e233b --- /dev/null +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SortUtils.java @@ -0,0 +1,63 @@ +package com.ruoyi.common.core.utils; + +import com.ruoyi.common.core.exception.ServiceException; + +import java.lang.reflect.Field; +import java.util.Collections; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +/** + * @author otto + */ +public class SortUtils { + public static List sort(List list, final String param, boolean isAsc) { + //自定义Comparator对象,自定义排序 + Comparator c = (o1, o2) -> { + try { + Field field1 = o1.getClass().getDeclaredField(param); + Field field2 = o2.getClass().getDeclaredField(param); + field1.setAccessible(true); + field2.setAccessible(true); + if (Integer.class.equals(field1.getType())) { + if ((Integer) field1.get(o1) < (Integer) field2.get(o2)) { + return isAsc ? -1 : 1; + } else { + //注意!!返回值必须是一对相反数,否则无效。jdk1.7以后就是这样。 + return isAsc ? 1 : -1; + } + } + if (Long.class.equals(field1.getType())) { + Long long1 = (Long) field1.get(o1); + Long long2 = (Long) field2.get(o2); + if (long1 < long2) { + return isAsc ? -1 : 1; + } else { + //注意!!返回值必须是一对相反数,否则无效。jdk1.7以后就是这样。 + return isAsc ? 1 : -1; + } + } + if (Date.class.equals(field1.getType())) { + Date date1 = (Date) field1.get(o1); + Date date2 = (Date) field2.get(o2); + if (date1.before(date2)) { + return isAsc ? -1 : 1; + } else { + //注意!!返回值必须是一对相反数,否则无效。jdk1.7以后就是这样。 + return isAsc ? 1 : -1; + } + } + + } catch (NoSuchFieldException e) { + throw new ServiceException(String.format("指定的排序字段不存在[%s]", param)); + } catch (IllegalAccessException e) { + throw new ServiceException(String.format("访问排序字段非法,请检查排序字段[%s]权限", param)); + } + return 1; + }; + Collections.sort(list, c); + return list; + + } +} diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/controller/BaseController.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/controller/BaseController.java index 2bfd8cb5..b567af52 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/controller/BaseController.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/controller/BaseController.java @@ -1,40 +1,41 @@ package com.ruoyi.common.core.web.controller; -import java.beans.PropertyEditorSupport; -import java.util.Date; -import java.util.List; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.web.bind.WebDataBinder; -import org.springframework.web.bind.annotation.InitBinder; import com.github.pagehelper.PageInfo; +import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.constant.HttpStatus; -import com.ruoyi.common.core.utils.DateUtils; -import com.ruoyi.common.core.utils.PageUtils; +import com.ruoyi.common.core.utils.*; import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.web.domain.GenericsAjaxResult; +import com.ruoyi.common.core.web.page.GenericsTableDataInfo; +import com.ruoyi.common.core.web.page.PageDomain; import com.ruoyi.common.core.web.page.TableDataInfo; +import com.ruoyi.common.core.web.page.TableSupport; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.WebDataBinder; +import org.springframework.web.bind.annotation.InitBinder; + +import java.beans.PropertyEditorSupport; +import java.util.Date; +import java.util.List; /** * web层通用数据处理 - * + * * @author ruoyi */ -public class BaseController -{ +public class BaseController { protected final Logger logger = LoggerFactory.getLogger(this.getClass()); /** * 将前台传递过来的日期格式的字符串,自动转化为Date类型 */ @InitBinder - public void initBinder(WebDataBinder binder) - { + public void initBinder(WebDataBinder binder) { // Date 类型转换 - binder.registerCustomEditor(Date.class, new PropertyEditorSupport() - { + binder.registerCustomEditor(Date.class, new PropertyEditorSupport() { @Override - public void setAsText(String text) - { + public void setAsText(String text) { setValue(DateUtils.parseDate(text)); } }); @@ -43,25 +44,22 @@ public class BaseController /** * 设置请求分页数据 */ - protected void startPage() - { + protected void startPage() { PageUtils.startPage(); } /** * 清理分页的线程变量 */ - protected void clearPage() - { + protected void clearPage() { PageUtils.clearPage(); } /** * 响应请求分页数据 */ - @SuppressWarnings({ "rawtypes", "unchecked" }) - protected TableDataInfo getDataTable(List list) - { + @SuppressWarnings({"rawtypes", "unchecked"}) + protected TableDataInfo getDataTable(List list) { TableDataInfo rspData = new TableDataInfo(); rspData.setCode(HttpStatus.SUCCESS); rspData.setRows(list); @@ -70,73 +68,188 @@ public class BaseController return rspData; } + /** + * 响应请求分页数据 + */ + @SuppressWarnings({"rawtypes", "unchecked"}) + protected GenericsTableDataInfo getGenericsDataTable(List list) { + GenericsTableDataInfo rspData = new GenericsTableDataInfo<>(); + rspData.setCode(HttpStatus.SUCCESS); + rspData.setRows(list); + rspData.setMsg("查询成功"); + rspData.setTotal(new PageInfo(list).getTotal()); + return rspData; + } + + /** + * 响应请求分页数据 + */ + + protected GenericsTableDataInfo getGenericsDataTable(List list, Integer count) { + GenericsTableDataInfo rspData = new GenericsTableDataInfo<>(); + rspData.setCode(HttpStatus.SUCCESS); + rspData.setRows(list); + rspData.setMsg("查询成功"); + rspData.setTotal(count); + return rspData; + } + + /** + * 响应请求分页数据 + */ + protected GenericsTableDataInfo getAllGenericsDataTableToPage(List list) { + GenericsTableDataInfo rspData = new GenericsTableDataInfo<>(); + rspData.setCode(HttpStatus.SUCCESS); + int total = list.size(); + rspData.setTotal(total); + String orderByStr = ServletUtils.getParameter(Constants.ORDER_BY_COLUMN); + if (StringUtils.isNotEmpty(orderByStr)) { + String isAscStr = ServletUtils.getParameter(Constants.IS_ASC); + if (StringUtils.isNotEmpty(orderByStr)) { + String ascString = "asc"; + boolean isAsc = true; + if (isAscStr != null && !ascString.equals(isAscStr.toLowerCase())) { + isAsc = false; + } + SortUtils.sort(list, orderByStr, isAsc); + } + } + if (StringUtils.isNotEmpty(ServletUtils.getParameter(Constants.PAGE_NUM)) + && StringUtils.isNotEmpty(ServletUtils.getParameter(Constants.PAGE_SIZE))) { + PageDomain pageDomain = TableSupport.buildPageRequest(); + Integer pageNum = pageDomain.getPageNum(); + Integer pageSize = pageDomain.getPageSize(); + + if (pageNum != null && pageSize != null) { + if (pageNum > 0) { + pageNum = pageNum - 1; + } else { + pageNum = 0; + } + int startIndex = pageNum * pageSize; + int endIndex = (pageNum + 1) * pageSize; + + int currentSize = total - startIndex; + if (currentSize < pageSize && currentSize > 0) { + endIndex = startIndex + currentSize; + } else if (currentSize <= 0) { + if (total > pageSize) { + startIndex = total - pageSize - 1; + } else { + startIndex = 0; + endIndex = total; + } + + } + list = list.subList(startIndex, endIndex); + } + //todo:暂不考虑 Boolean reasonable = pageDomain.getReasonable(); + } + + rspData.setRows(list); + rspData.setMsg("查询成功"); + return rspData; + } + + /** + * 响应请求分页数据 + */ + @SuppressWarnings({"rawtypes", "unchecked"}) + protected TableDataInfo getDataTable(List list, Integer size) { + TableDataInfo rspData = new TableDataInfo(); + rspData.setCode(HttpStatus.SUCCESS); + rspData.setRows(list); + rspData.setMsg("查询成功"); + rspData.setTotal(size); + return rspData; + } + /** * 返回成功 */ - public AjaxResult success() - { + public AjaxResult success() { return AjaxResult.success(); } /** * 返回成功消息 */ - public AjaxResult success(String message) - { + public AjaxResult success(String message) { return AjaxResult.success(message); } /** * 返回成功消息 */ - public AjaxResult success(Object data) - { + public AjaxResult success(Object data) { return AjaxResult.success(data); } + /** + * 返回成功消息 + */ + public GenericsAjaxResult genericsSuccess(T data) { + return GenericsAjaxResult.success(data); + } + /** * 返回失败消息 */ - public AjaxResult error() - { + public AjaxResult error() { return AjaxResult.error(); } /** * 返回失败消息 */ - public AjaxResult error(String message) - { + public AjaxResult error(String message) { return AjaxResult.error(message); } /** * 返回警告消息 */ - public AjaxResult warn(String message) - { + public AjaxResult warn(String message) { return AjaxResult.warn(message); } /** * 响应返回结果 - * + * * @param rows 影响行数 * @return 操作结果 */ - protected AjaxResult toAjax(int rows) - { + protected AjaxResult toAjax(int rows) { return rows > 0 ? AjaxResult.success() : AjaxResult.error(); } /** * 响应返回结果 - * + * + * @param rows 影响行数 + * @return 操作结果 + */ + protected GenericsAjaxResult toGenericsAjax(int rows) { + return rows > 0 ? GenericsAjaxResult.success() : GenericsAjaxResult.error(); + } + + /** + * 响应返回结果 + * + * @param data 数据 + * @return 操作结果 + */ + protected GenericsAjaxResult successToGenericsAjax(T data) { + return GenericsAjaxResult.success(data); + } + + /** + * 响应返回结果 + * * @param result 结果 * @return 操作结果 */ - protected AjaxResult toAjax(boolean result) - { + protected AjaxResult toAjax(boolean result) { return result ? success() : error(); } } diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/GenericsAjaxResult.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/GenericsAjaxResult.java new file mode 100644 index 00000000..9185011d --- /dev/null +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/GenericsAjaxResult.java @@ -0,0 +1,171 @@ +package com.ruoyi.common.core.web.domain; + +import com.ruoyi.common.core.constant.HttpStatus; +import com.ruoyi.common.core.utils.StringUtils; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 操作消息提醒 + * + * @author ruoyi + */ +@Data +@ApiModel("返回对象") +public class GenericsAjaxResult implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 状态码 + */ + @ApiModelProperty("状态码") + private Integer code; + + /** + * 返回内容 + */ + @ApiModelProperty("返回内容") + private String msg; + + /** + * 数据对象 + */ + @ApiModelProperty("数据对象") + public T data; + + /** + * 初始化一个新创建的 AjaxResult 对象,使其表示一个空消息。 + */ + public GenericsAjaxResult() { + } + + /** + * 初始化一个新创建的 AjaxResult 对象 + * + * @param code 状态码 + * @param msg 返回内容 + */ + public GenericsAjaxResult(int code, String msg) { + this.code = code; + this.msg = msg; + } + + /** + * 初始化一个新创建的 AjaxResult 对象 + * + * @param code 状态码 + * @param msg 返回内容 + * @param data 数据对象 + */ + public GenericsAjaxResult(int code, String msg, T data) { + this.code = code; + this.msg = msg; + if (StringUtils.isNotNull(data)) { + this.data = data; + } + } + + /** + * 返回成功消息 + * + * @return 成功消息 + */ + public static GenericsAjaxResult success() { + return GenericsAjaxResult.success("操作成功"); + } + + /** + * 返回成功数据 + * + * @return 成功消息 + */ + public static GenericsAjaxResult success(T data) { + return GenericsAjaxResult.success("操作成功", data); + } + + /** + * 返回成功消息 + * + * @param msg 返回内容 + * @return 成功消息 + */ + public static GenericsAjaxResult success(String msg) { + return GenericsAjaxResult.success(msg, null); + } + + /** + * 返回成功消息 + * + * @param msg 返回内容 + * @param data 数据对象 + * @return 成功消息 + */ + public static GenericsAjaxResult success(String msg, T data) { + return new GenericsAjaxResult<>(HttpStatus.SUCCESS, msg, data); + } + + /** + * 返回警告消息 + * + * @param msg 返回内容 + * @return 警告消息 + */ + public static GenericsAjaxResult warn(String msg) { + return GenericsAjaxResult.warn(msg, null); + } + + /** + * 返回警告消息 + * + * @param msg 返回内容 + * @param data 数据对象 + * @return 警告消息 + */ + public static GenericsAjaxResult warn(String msg, T data) { + return new GenericsAjaxResult<>(HttpStatus.WARN, msg, data); + } + + /** + * 返回错误消息 + * + * @return 错误消息 + */ + public static GenericsAjaxResult error() { + return GenericsAjaxResult.error("操作失败"); + } + + /** + * 返回错误消息 + * + * @param msg 返回内容 + * @return 错误消息 + */ + public static GenericsAjaxResult error(String msg) { + return GenericsAjaxResult.error(msg, null); + } + + /** + * 返回错误消息 + * + * @param msg 返回内容 + * @param data 数据对象 + * @return 错误消息 + */ + public static GenericsAjaxResult error(String msg, T data) { + return new GenericsAjaxResult<>(HttpStatus.ERROR, msg, data); + } + + /** + * 返回错误消息 + * + * @param code 状态码 + * @param msg 返回内容 + * @return 错误消息 + */ + public static GenericsAjaxResult error(int code, String msg) { + return new GenericsAjaxResult<>(code, msg, null); + } +} diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/GenericsTableDataInfo.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/GenericsTableDataInfo.java new file mode 100644 index 00000000..9a75e79f --- /dev/null +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/GenericsTableDataInfo.java @@ -0,0 +1,98 @@ +package com.ruoyi.common.core.web.page; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageInfo; +import com.ruoyi.common.core.constant.HttpStatus; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Optional; + +/** + * 表格分页数据对象 + * + * @author ruoyi + */ +@Data +@ApiModel("表格分页数据对象") +public class GenericsTableDataInfo implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 总记录数 + */ + @ApiModelProperty("总记录数") + private long total; + + /** + * 列表数据 + */ + @ApiModelProperty("列表数据") + private List rows; + + /** + * 消息状态码 + */ + @ApiModelProperty("消息状态码") + private int code; + + /** + * 消息内容 + */ + @ApiModelProperty("消息内容") + private String msg; + + + /** + * 表格数据对象 + */ + public GenericsTableDataInfo() { + this.total = 0; + this.rows = new ArrayList<>(); + this.code = HttpStatus.SUCCESS; + this.msg = "查询成功"; + } + + /** + * 将原始列表通过传入方法转换为对应类型,同时根据原始列表分页数据构建分页对象 + * + * @param rows 原始列表(带分页) + * @param toList Lambda表达式,对原始列表进行转换 + * @param 原始列表列席 + */ + @SuppressWarnings({"rawtypes", "unchecked"}) + public GenericsTableDataInfo(List rows, Page.Function, List> toList) { + rows = Optional.ofNullable(rows).orElse(Collections.emptyList()); + this.total = new PageInfo(rows).getTotal(); + this.rows = toList.apply(rows); + this.code = HttpStatus.SUCCESS; + this.msg = "查询成功"; + } + + @SuppressWarnings({"rawtypes", "unchecked"}) + public GenericsTableDataInfo(List rows) { + this.total = new PageInfo(rows).getTotal(); + this.rows = rows; + this.code = HttpStatus.SUCCESS; + this.msg = "查询成功"; + } + + /** + * 分页 + * + * @param list 列表数据 + * @param total 总记录数 + */ + public GenericsTableDataInfo(List list, Long total) { + this.rows = list; + this.total = total; + this.code = HttpStatus.SUCCESS; + this.msg = "查询成功"; + } +} \ No newline at end of file diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentController.java index 0dc9a521..c6a96360 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentController.java @@ -1,12 +1,15 @@ package com.ruoyi.platform.controller.experiment; +import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.web.domain.GenericsAjaxResult; import com.ruoyi.platform.domain.Experiment; import com.ruoyi.platform.service.ExperimentService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.data.domain.PageRequest; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -21,7 +24,7 @@ import java.io.IOException; @RestController @RequestMapping("experiment") @Api("实验管理") -public class ExperimentController { +public class ExperimentController extends BaseController { /** * 服务对象 */ @@ -50,8 +53,8 @@ public class ExperimentController { @GetMapping(("/configuration")) - public AjaxResult showExperimentConfig(@RequestBody Experiment experiment){ - return AjaxResult.success(this.experimentService.showExperimentConfig(experiment)); + public GenericsAjaxResult> showExperimentConfig(@RequestBody Experiment experiment){ + return genericsSuccess(this.experimentService.showExperimentConfig(experiment)); } /** @@ -62,8 +65,8 @@ public class ExperimentController { */ @GetMapping("{id}") @ApiOperation("通过id查询实验") - public AjaxResult queryById(@PathVariable("id") Integer id) throws IOException { - return AjaxResult.success(this.experimentService.queryById(id)); + public GenericsAjaxResult queryById(@PathVariable("id") Integer id) throws IOException { + return genericsSuccess(this.experimentService.queryById(id)); } /** diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java index c3ab7134..0a431962 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java @@ -6,6 +6,7 @@ import com.ruoyi.platform.service.ExperimentInsService; import com.ruoyi.platform.vo.LogRequestVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; import org.springframework.data.domain.PageRequest; import org.springframework.web.bind.annotation.*; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/tensorBoard/TensorBoardController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/tensorBoard/TensorBoardController.java new file mode 100644 index 00000000..23b99a45 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/tensorBoard/TensorBoardController.java @@ -0,0 +1,39 @@ +package com.ruoyi.platform.controller.tensorBoard; + +import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.platform.service.TensorBoardService; +import com.ruoyi.platform.vo.FrameLogPathVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +@RestController +@RequestMapping("tensorBoard") +@Api("TensorBoard管理") +public class TensorBoardController { + + //状态查询接口 + + @Resource + private TensorBoardService tensorBoardService; + + /** + * 启动tensorBoard接口 + * + * @param frameLogPathVo 存储路径 + * @return url + */ + @PostMapping("/run") + @ApiOperation("启动tensorBoard") + @ApiResponse + public AjaxResult runTensorBoard(@RequestBody FrameLogPathVo frameLogPathVo) throws Exception { + return AjaxResult.success(tensorBoardService.runTensorBoard(frameLogPathVo)); + } + +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/tensorBoard/tensorBoard.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/tensorBoard/tensorBoard.java deleted file mode 100644 index 5fd78fab..00000000 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/tensorBoard/tensorBoard.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.ruoyi.platform.controller.tensorBoard; - -import io.swagger.annotations.Api; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -@RestController -@RequestMapping("tensorBoard") -@Api("流水线管理") -public class tensorBoard { - - //状态查询接口 - - //启动tensorBoard接口 -} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Experiment.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Experiment.java index 222e8fa5..2a775f09 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Experiment.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Experiment.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableLogic; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; import com.ruoyi.common.core.web.domain.BaseEntity; +import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; @@ -20,6 +21,7 @@ import java.util.List; * @since 2023-11-07 15:08:22 */ @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) +@ApiModel("实验对象") public class Experiment implements Serializable { private static final long serialVersionUID = 409135817108439880L; // @ApiModelProperty(name = "id") diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java index 15739387..1ec09234 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java @@ -2,6 +2,7 @@ package com.ruoyi.platform.domain; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; +import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/TensorBoardService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/TensorBoardService.java new file mode 100644 index 00000000..f54ad7df --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/TensorBoardService.java @@ -0,0 +1,13 @@ +package com.ruoyi.platform.service; + +import com.ruoyi.platform.vo.FrameLogPathVo; + +public interface TensorBoardService { + /** + * 在集群中启动TensorBoard容器,并且返回地址,4小时后销毁 + * @param frameLogPathVo + * @return + * @throws Exception + */ + String runTensorBoard(FrameLogPathVo frameLogPathVo) throws Exception; +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java index 066b7e44..b95688dc 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java @@ -44,8 +44,8 @@ public class JupyterServiceImpl implements JupyterService { @Override public String getJupyterServiceUrl() { LoginUser loginUser = SecurityUtils.getLoginUser(); - String podName = loginUser.getUsername() + "-editor-pod"; - String pvcName = loginUser.getUsername() + "-editor-pvc"; + String podName = loginUser.getUsername().toLowerCase() + "-editor-pod"; + String pvcName = loginUser.getUsername().toLowerCase() + "-editor-pvc"; V1PersistentVolumeClaim pvc = K8sClientUtil.createPvc(namespace, pvcName, storage,storageClassName); Integer podPort = K8sClientUtil.createPod(podName, namespace, port, mountPath, pvc, image); return masterIp + ":" + podPort; 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 new file mode 100644 index 00000000..1fb93233 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java @@ -0,0 +1,35 @@ +package com.ruoyi.platform.service.impl; + +import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.platform.service.TensorBoardService; +import com.ruoyi.platform.utils.K8sClientUtil; +import com.ruoyi.platform.vo.FrameLogPathVo; +import com.ruoyi.system.api.model.LoginUser; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.util.Date; + +@Service +public class TensorBoardServiceImpl implements TensorBoardService { + @Value("${tensorBoard.image}") + private String image; + @Value("${tensorBoard.port}") + private Integer port; + @Value("${tensorBoard.mountPath}") + private String mountPath; + @Value("${tensorBoard.masterIp}") + private String masterIp; + @Override + public String runTensorBoard(FrameLogPathVo frameLogPathVo) throws Exception { + if (StringUtils.isEmpty(frameLogPathVo.getPath())||StringUtils.isEmpty(frameLogPathVo.getPvcName())){ + throw new Exception("存储路径或存储为空"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + 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); + return masterIp + ":" + podPort; + } +} 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 fab2b2c3..19beb71c 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 @@ -265,9 +265,9 @@ public class K8sClientUtil { try { pod = api.createNamespacedPod(namespace, pod, null, null, null); } catch (ApiException e) { - log.error("创建pvc异常:" + e.getResponseBody(), e); + log.error("创建pod异常:" + e.getResponseBody(), e); } catch (Exception e) { - log.error("创建pvc系统异常:", e); + log.error("创建pod系统异常:", e); } V1Service service = createService(namespace, podName + "-svc", port, selector); @@ -275,6 +275,75 @@ public class K8sClientUtil { } + /** + * 创建k8s 临时POD + * @param podName pod name + * @param namespace 命名空间 + * @param port port + * @param mountPath 映射路径 + * @param subPath pvc子路径 + * @param pvcName 存储名 + * @param image 镜像 + * @return 创建成功的pod,的nodePort端口 + */ + + public static Integer createPodWithSubPath(String podName, String namespace, Integer port ,String mountPath,String subPath,String pvcName, String image){ + + Map selector = new LinkedHashMap(); + selector.put("k8s-jupyter", podName); + + CoreV1Api api = new CoreV1Api(apiClient); + V1PodList v1PodList = null; + try { + v1PodList = api.listNamespacedPod(namespace, null, null, null, null, null, null, null, null, null, null); + } catch (ApiException e) { + log.error("获取 POD 异常:", e); + } + if (v1PodList!=null) { + for (V1Pod pod1 : v1PodList.getItems()) { + if (StringUtils.equals(pod1.getMetadata().getName(), podName)) { + // PVC 已存在 + + V1Service service = createService(namespace, podName + "-svc", port, selector); + if (service != null) { + return service.getSpec().getPorts().get(0).getNodePort(); + } + } + } + } + + V1Pod pod = new V1PodBuilder() + .withNewMetadata() + .withName(podName) + .withLabels(selector) + .endMetadata() + .withNewSpec() + .addNewContainer() + .withName(podName) + .withImage(image) + .withPorts(new V1ContainerPort().containerPort(port).protocol("TCP")) + .withVolumeMounts(new V1VolumeMount().name("workspace").mountPath(mountPath).subPath(subPath)) + .endContainer() + .addNewVolume() + .withName("workspace").withPersistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvcName)) + .endVolume() + .withTerminationGracePeriodSeconds(14400L) //默认不被操作4小时后删除 + .endSpec() + .build(); + + + try { + pod = api.createNamespacedPod(namespace, pod, null, null, null); + } catch (ApiException e) { + log.error("创建pod异常:" + e.getResponseBody(), e); + } catch (Exception e) { + log.error("创建pod系统异常:", e); + } + + V1Service service = createService(namespace, podName + "-svc", port, selector); + return service.getSpec().getPorts().get(0).getNodePort(); + } + /** * 根据获取namespace,deploymentName的Pod Name * diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/FrameLogPathVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/FrameLogPathVo.java new file mode 100644 index 00000000..99a03017 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/FrameLogPathVo.java @@ -0,0 +1,37 @@ +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 FrameLogPathVo implements Serializable { + String path; + String namespace; + String pvcName; + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + public String getNamespace() { + return namespace; + } + + public void setNamespace(String namespace) { + this.namespace = namespace; + } + + public String getPvcName() { + return pvcName; + } + + public void setPvcName(String pvcName) { + this.pvcName = pvcName; + } +} From fea495735c5b62e458f54e19af1e0bc893c33e9d Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Tue, 26 Mar 2024 16:50:48 +0800 Subject: [PATCH 03/16] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E6=A1=86=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/controller/experiment/ExperimentController.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentController.java index c6a96360..4275cfc9 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentController.java @@ -8,6 +8,7 @@ import com.ruoyi.platform.domain.Experiment; import com.ruoyi.platform.service.ExperimentService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -39,9 +40,9 @@ public class ExperimentController extends BaseController { */ @GetMapping @ApiOperation("分页查询") - public AjaxResult queryByPage(Experiment experiment, int page,int size) { + public GenericsAjaxResult> queryByPage(Experiment experiment, int page, int size) { PageRequest pageRequest = PageRequest.of(page,size); - return AjaxResult.success(this.experimentService.queryByPage(experiment, pageRequest)); + return genericsSuccess(this.experimentService.queryByPage(experiment, pageRequest)); } @GetMapping(("/status")) From a1e161a8192679d77bb74b93be0b591ebb100be5 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Tue, 26 Mar 2024 17:15:44 +0800 Subject: [PATCH 04/16] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E6=A1=86=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/jupyter/JupyterController.java | 5 +- .../controller/model/ModelsController.java | 68 +++++++++---------- .../model/ModelsVersionController.java | 45 ++++++------ .../ComputingResourceController.java | 26 +++---- .../tensorBoard/TensorBoardController.java | 9 +-- .../workflow/WorkflowController.java | 36 +++++----- .../workflow/WorkflowParamController.java | 30 ++++---- .../com/ruoyi/platform/domain/Models.java | 2 + .../ruoyi/platform/domain/ModelsVersion.java | 2 + .../com/ruoyi/platform/domain/Workflow.java | 2 + .../ruoyi/platform/domain/WorkflowParam.java | 2 + 11 files changed, 123 insertions(+), 104 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/jupyter/JupyterController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/jupyter/JupyterController.java index 2d568ff0..a533193d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/jupyter/JupyterController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/jupyter/JupyterController.java @@ -2,6 +2,7 @@ package com.ruoyi.platform.controller.jupyter; import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.web.domain.GenericsAjaxResult; import com.ruoyi.platform.service.JupyterService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -23,8 +24,8 @@ public class JupyterController extends BaseController { private JupyterService jupyterService; @GetMapping(value = "/getURL") @ApiOperation("得到访问地址") - public AjaxResult getURL() throws IOException { - return AjaxResult.success(jupyterService.getJupyterServiceUrl()); + public GenericsAjaxResult getURL() throws IOException { + return genericsSuccess(jupyterService.getJupyterServiceUrl()); } @GetMapping(value = "/upload") diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelsController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelsController.java index dea9e44c..c14aad6d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelsController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelsController.java @@ -1,26 +1,26 @@ package com.ruoyi.platform.controller.model; -import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.GenericsAjaxResult; import com.ruoyi.common.security.utils.SecurityUtils; -import com.ruoyi.platform.domain.Dataset; import com.ruoyi.platform.domain.Models; import com.ruoyi.platform.domain.ModelsVersion; import com.ruoyi.platform.service.ModelsService; -import com.ruoyi.platform.vo.DatasetVo; import com.ruoyi.platform.vo.ModelsVo; import com.ruoyi.system.api.model.LoginUser; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.core.io.InputStreamResource; +import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; -import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * (Models)表控制层 @@ -31,7 +31,7 @@ import java.util.List; @RestController @RequestMapping("models") @Api("模型管理") -public class ModelsController { +public class ModelsController extends BaseController { /** * 服务对象 */ @@ -48,11 +48,11 @@ public class ModelsController { */ @GetMapping @ApiOperation("模型广场分页查询,可传model_type进行筛选") - public AjaxResult queryByPage(Models models, @RequestParam("page") int page, - @RequestParam("size") int size, - //@RequestParam("available_range") int availableRange, - @RequestParam(value = "model_type", required = false) String modelType, - @RequestParam(value = "model_tag", required = false) String modelTag) { + public GenericsAjaxResult> queryByPage(Models models, @RequestParam("page") int page, + @RequestParam("size") int size, + //@RequestParam("available_range") int availableRange, + @RequestParam(value = "model_type", required = false) String modelType, + @RequestParam(value = "model_tag", required = false) String modelTag) { if (modelType != null){ models.setModelType(modelType); // 设置筛选条件 } @@ -61,7 +61,7 @@ public class ModelsController { } models.setAvailableRange(1); // 设置筛选条件 PageRequest pageRequest = PageRequest.of(page, size); - return AjaxResult.success(this.modelsService.queryByPage(models, pageRequest)); + return genericsSuccess(this.modelsService.queryByPage(models, pageRequest)); } @@ -75,10 +75,10 @@ public class ModelsController { */ @GetMapping("/personalModels") @ApiOperation("分页查询当前用户的个人模型 ,根据model_type筛选") - public AjaxResult queryByPagePersonal(Models models, @RequestParam("page") int page, - @RequestParam("size") int size, - @RequestParam(value = "model_type", required = false) String modelType, - @RequestParam(value = "model_tag", required = false) String modelTag) { + public GenericsAjaxResult> queryByPagePersonal(Models models, @RequestParam("page") int page, + @RequestParam("size") int size, + @RequestParam(value = "model_type", required = false) String modelType, + @RequestParam(value = "model_tag", required = false) String modelTag) { // 获取当前用户的认证信息 LoginUser loginUser = SecurityUtils.getLoginUser(); // 设置筛选条件 @@ -90,7 +90,7 @@ public class ModelsController { models.setModelTag(modelTag); // 设置筛选条件 } PageRequest pageRequest = PageRequest.of(page, size); - return AjaxResult.success(this.modelsService.queryByPage(models, pageRequest)); + return genericsSuccess(this.modelsService.queryByPage(models, pageRequest)); } @@ -102,14 +102,14 @@ public class ModelsController { */ @GetMapping("{id}") @ApiOperation("根据id查询") - public AjaxResult queryById(@PathVariable("id") Integer id) { - return AjaxResult.success(this.modelsService.queryById(id)); + public GenericsAjaxResult queryById(@PathVariable("id") Integer id) { + return genericsSuccess(this.modelsService.queryById(id)); } @GetMapping("/versions/{modelId}") @ApiOperation(value = "获取模型的所有版本", notes = "根据模型ID获取该模型的所有版本信息。") - public AjaxResult getModelVersions(@PathVariable("modelId") Integer modelId) throws Exception { - return AjaxResult.success(this.modelsService.getModelVersions(modelId)); + public GenericsAjaxResult> getModelVersions(@PathVariable("modelId") Integer modelId) throws Exception { + return genericsSuccess(this.modelsService.getModelVersions(modelId)); } @@ -121,8 +121,8 @@ public class ModelsController { */ @PostMapping @ApiOperation("添加模型") - public AjaxResult add(@RequestBody Models models) { - return AjaxResult.success(this.modelsService.insert(models)); + public GenericsAjaxResult add(@RequestBody Models models) { + return genericsSuccess(this.modelsService.insert(models)); } @@ -134,8 +134,8 @@ public class ModelsController { */ @PostMapping("/addModelAndVersion") @ApiOperation("添加模型和版本") - public AjaxResult addModelAndVersion(@RequestBody ModelsVo modelsVo) throws Exception { - return AjaxResult.success(this.modelsService.insertModelAndVersion(modelsVo)); + public GenericsAjaxResult addModelAndVersion(@RequestBody ModelsVo modelsVo) throws Exception { + return genericsSuccess(this.modelsService.insertModelAndVersion(modelsVo)); } @@ -147,8 +147,8 @@ public class ModelsController { */ @PutMapping @ApiOperation("编辑模型") - public AjaxResult edit(@RequestBody Models models) { - return AjaxResult.success(this.modelsService.update(models)); + public GenericsAjaxResult edit(@RequestBody Models models) { + return genericsSuccess(this.modelsService.update(models)); } /** @@ -159,8 +159,8 @@ public class ModelsController { */ @DeleteMapping("{id}") @ApiOperation("删除模型") - public AjaxResult deleteById(@PathVariable("id") Integer id) { - return AjaxResult.success(this.modelsService.removeById(id)); + public GenericsAjaxResult deleteById(@PathVariable("id") Integer id) { + return genericsSuccess(this.modelsService.removeById(id)); } /** @@ -176,8 +176,8 @@ public class ModelsController { @CrossOrigin(origins = "*", allowedHeaders = "*") @PostMapping("/upload") @ApiOperation(value = "上传模型", notes = "根据模型id上传模型文件,并将信息存入数据库。") - public AjaxResult uploadModels(@RequestParam("file") MultipartFile[] files) throws Exception { - return AjaxResult.success(this.modelsService.uploadModels(files)); + public GenericsAjaxResult>> uploadModels(@RequestParam("file") MultipartFile[] files) throws Exception { + return genericsSuccess(this.modelsService.uploadModels(files)); } @@ -187,8 +187,8 @@ public class ModelsController { */ @PostMapping("/upload_pipeline") @ApiOperation("从流水线上传模型,并将信息存入数据库") - public AjaxResult uploadModelsPipeline(@RequestBody(required =false) ModelsVersion modelsVersion) throws Exception { - return AjaxResult.success(this.modelsService.uploadModelsPipeline(modelsVersion)); + public GenericsAjaxResult uploadModelsPipeline(@RequestBody(required =false) ModelsVersion modelsVersion) throws Exception { + return genericsSuccess(this.modelsService.uploadModelsPipeline(modelsVersion)); } /** @@ -220,8 +220,8 @@ public class ModelsController { @GetMapping("/readme") @ApiOperation(value = "读取README文件", notes = "读取README文件并返回String类型。") - public AjaxResult readFileContent(@RequestParam("models_id") Integer modelsId, @RequestParam("version") String version) throws Exception { - return AjaxResult.success(this.modelsService.readFileContent(modelsId,version)); + public GenericsAjaxResult readFileContent(@RequestParam("models_id") Integer modelsId, @RequestParam("version") String version) throws Exception { + return genericsSuccess(this.modelsService.readFileContent(modelsId,version)); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelsVersionController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelsVersionController.java index 48cc698c..ba1b9077 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelsVersionController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelsVersionController.java @@ -1,16 +1,18 @@ package com.ruoyi.platform.controller.model; -import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.GenericsAjaxResult; import com.ruoyi.platform.domain.*; import com.ruoyi.platform.service.*; +import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; -import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; +import java.util.Map; /** * (ModelsVersion)表控制层 @@ -20,7 +22,8 @@ import java.util.List; */ @RestController @RequestMapping("modelsVersion") -public class ModelsVersionController { +@Api("模型版本管理") +public class ModelsVersionController extends BaseController { /** * 服务对象 */ @@ -37,9 +40,9 @@ public class ModelsVersionController { */ @GetMapping @ApiOperation("分页查询") - public AjaxResult queryByPage(ModelsVersion modelsVersion, int page, int size) { + public GenericsAjaxResult> queryByPage(ModelsVersion modelsVersion, int page, int size) { PageRequest pageRequest = PageRequest.of(page,size); - return AjaxResult.success(this.modelsVersionService.queryByPage(modelsVersion, pageRequest)); + return genericsSuccess(this.modelsVersionService.queryByPage(modelsVersion, pageRequest)); } /** @@ -49,8 +52,8 @@ public class ModelsVersionController { * @return 单条数据 */ @GetMapping("{id}") - public AjaxResult queryById(@PathVariable("id") Integer id) { - return AjaxResult.success(this.modelsVersionService.queryById(id)); + public GenericsAjaxResult queryById(@PathVariable("id") Integer id) { + return genericsSuccess(this.modelsVersionService.queryById(id)); } /** @@ -61,9 +64,9 @@ public class ModelsVersionController { * @return 匹配的模型版本记录列表 */ @GetMapping("/versions") - public AjaxResult queryByModelsIdAndVersion(@RequestParam("models_id") Integer modelsId, - @RequestParam("version") String version) { - return AjaxResult.success(this.modelsVersionService.queryByModelsIdAndVersion(modelsId, version)); + public GenericsAjaxResult> queryByModelsIdAndVersion(@RequestParam("models_id") Integer modelsId, + @RequestParam("version") String version) { + return genericsSuccess(this.modelsVersionService.queryByModelsIdAndVersion(modelsId, version)); } @@ -74,8 +77,8 @@ public class ModelsVersionController { * @return 新增结果 */ @PostMapping - public AjaxResult add(@RequestBody ModelsVersion modelsVersion) { - return AjaxResult.success(this.modelsVersionService.insert(modelsVersion)); + public GenericsAjaxResult add(@RequestBody ModelsVersion modelsVersion) { + return genericsSuccess(this.modelsVersionService.insert(modelsVersion)); } /** @@ -86,8 +89,8 @@ public class ModelsVersionController { */ @PostMapping("/addModelVersions") @ApiOperation("批量添加模型版本,传数组") - public AjaxResult addModelVersions(@RequestBody List modelsVersions) throws Exception { - return AjaxResult.success(this.modelsVersionService.addModelVersions(modelsVersions)); + public GenericsAjaxResult addModelVersions(@RequestBody List modelsVersions) throws Exception { + return genericsSuccess(this.modelsVersionService.addModelVersions(modelsVersions)); } /** @@ -97,8 +100,8 @@ public class ModelsVersionController { * @return 编辑结果 */ @PutMapping - public AjaxResult edit(@RequestBody ModelsVersion modelsVersion) { - return AjaxResult.success(this.modelsVersionService.update(modelsVersion)); + public GenericsAjaxResult edit(@RequestBody ModelsVersion modelsVersion) { + return genericsSuccess(this.modelsVersionService.update(modelsVersion)); } /** @@ -108,8 +111,8 @@ public class ModelsVersionController { * @return 删除是否成功 */ @DeleteMapping("{id}") - public AjaxResult deleteById(@PathVariable("id") Integer id) { - return AjaxResult.success(this.modelsVersionService.removeById(id)); + public GenericsAjaxResult deleteById(@PathVariable("id") Integer id) { + return genericsSuccess(this.modelsVersionService.removeById(id)); } @@ -123,9 +126,9 @@ public class ModelsVersionController { */ @DeleteMapping("/deleteVersion") @ApiOperation(value = "逻辑删除模型版本", notes = "根据模型ID和版本逻辑删除模型版本记录。") - public AjaxResult deleteModelsVersion(@RequestParam("models_id") Integer modelsId, - @RequestParam("version") String version) { - return AjaxResult.success(this.modelsVersionService.deleteModelsVersion(modelsId, version)); + public GenericsAjaxResult> deleteModelsVersion(@RequestParam("models_id") Integer modelsId, + @RequestParam("version") String version) { + return genericsSuccess(this.modelsVersionService.deleteModelsVersion(modelsId, version)); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/resources/ComputingResourceController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/resources/ComputingResourceController.java index f2a178fc..0e869970 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/resources/ComputingResourceController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/resources/ComputingResourceController.java @@ -1,10 +1,12 @@ package com.ruoyi.platform.controller.resources; -import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.GenericsAjaxResult; import com.ruoyi.platform.domain.ComputingResource; import com.ruoyi.platform.service.ComputingResourceService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.web.bind.annotation.*; @@ -19,7 +21,7 @@ import javax.annotation.Resource; @RestController @RequestMapping("computingResource") @Api("计算资源管理") -public class ComputingResourceController { +public class ComputingResourceController extends BaseController { /** * 服务对象 */ @@ -34,9 +36,9 @@ public class ComputingResourceController { */ @GetMapping @ApiOperation("分页查询") - public AjaxResult queryByPage(ComputingResource computingResource, int page, int size) { + public GenericsAjaxResult> queryByPage(ComputingResource computingResource, int page, int size) { PageRequest pageRequest = PageRequest.of(page,size); - return AjaxResult.success(this.computingResourceService.queryByPage(computingResource, pageRequest)); + return genericsSuccess(this.computingResourceService.queryByPage(computingResource, pageRequest)); } /** @@ -47,8 +49,8 @@ public class ComputingResourceController { */ @GetMapping("{id}") @ApiOperation("根据id查询") - public AjaxResult queryById(@PathVariable("id") Integer id) { - return AjaxResult.success(this.computingResourceService.queryById(id)); + public GenericsAjaxResult queryById(@PathVariable("id") Integer id) { + return genericsSuccess(this.computingResourceService.queryById(id)); } /** @@ -59,8 +61,8 @@ public class ComputingResourceController { */ @PostMapping @ApiOperation("新增计算资源") - public AjaxResult add(@RequestBody ComputingResource computingResource) { - return AjaxResult.success(this.computingResourceService.insert(computingResource)); + public GenericsAjaxResult add(@RequestBody ComputingResource computingResource) { + return genericsSuccess(this.computingResourceService.insert(computingResource)); } /** @@ -71,8 +73,8 @@ public class ComputingResourceController { */ @PutMapping @ApiOperation("编辑计算资源") - public AjaxResult edit(@RequestBody ComputingResource computingResource) { - return AjaxResult.success(this.computingResourceService.update(computingResource)); + public GenericsAjaxResult edit(@RequestBody ComputingResource computingResource) { + return genericsSuccess(this.computingResourceService.update(computingResource)); } /** @@ -83,8 +85,8 @@ public class ComputingResourceController { */ @DeleteMapping("{id}") @ApiOperation("删除计算资源") - public AjaxResult deleteById(@PathVariable("id") Integer id) { - return AjaxResult.success(this.computingResourceService.removeById(id)); + public GenericsAjaxResult deleteById(@PathVariable("id") Integer id) { + return genericsSuccess(this.computingResourceService.removeById(id)); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/tensorBoard/TensorBoardController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/tensorBoard/TensorBoardController.java index 23b99a45..bc5bdfb5 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/tensorBoard/TensorBoardController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/tensorBoard/TensorBoardController.java @@ -1,6 +1,7 @@ package com.ruoyi.platform.controller.tensorBoard; -import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.GenericsAjaxResult; import com.ruoyi.platform.service.TensorBoardService; import com.ruoyi.platform.vo.FrameLogPathVo; import io.swagger.annotations.Api; @@ -16,7 +17,7 @@ import javax.annotation.Resource; @RestController @RequestMapping("tensorBoard") @Api("TensorBoard管理") -public class TensorBoardController { +public class TensorBoardController extends BaseController { //状态查询接口 @@ -32,8 +33,8 @@ public class TensorBoardController { @PostMapping("/run") @ApiOperation("启动tensorBoard") @ApiResponse - public AjaxResult runTensorBoard(@RequestBody FrameLogPathVo frameLogPathVo) throws Exception { - return AjaxResult.success(tensorBoardService.runTensorBoard(frameLogPathVo)); + public GenericsAjaxResult runTensorBoard(@RequestBody FrameLogPathVo frameLogPathVo) throws Exception { + return genericsSuccess(tensorBoardService.runTensorBoard(frameLogPathVo)); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/workflow/WorkflowController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/workflow/WorkflowController.java index 4d40f6cd..359b3dfc 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/workflow/WorkflowController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/workflow/WorkflowController.java @@ -1,10 +1,12 @@ package com.ruoyi.platform.controller.workflow; -import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.GenericsAjaxResult; import com.ruoyi.platform.domain.Workflow; import com.ruoyi.platform.service.WorkflowService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.web.bind.annotation.*; @@ -19,7 +21,7 @@ import javax.annotation.Resource; @RestController @RequestMapping("workflow") @Api("流水线管理") -public class WorkflowController { +public class WorkflowController extends BaseController { @@ -39,9 +41,9 @@ public class WorkflowController { */ @GetMapping @ApiOperation("分页查询") - public AjaxResult queryByPage(Workflow workflow, int page,int size) { + public GenericsAjaxResult> queryByPage(Workflow workflow, int page, int size) { PageRequest pageRequest = PageRequest.of(page,size); - return AjaxResult.success(this.workflowService.queryByPage(workflow, pageRequest)); + return genericsSuccess(this.workflowService.queryByPage(workflow, pageRequest)); } @@ -53,8 +55,8 @@ public class WorkflowController { */ @GetMapping("name/{name}") @ApiOperation("按流水线名字模糊查询流水线") - public AjaxResult queryByName(@PathVariable("name") String name) { - return AjaxResult.success(this.workflowService.queryByName(name)); + public GenericsAjaxResult> queryByName(@PathVariable("name") String name) { + return genericsSuccess(this.workflowService.queryByName(name)); } /** @@ -65,8 +67,8 @@ public class WorkflowController { */ @GetMapping("{id}") @ApiOperation("根据id查询单条数据") - public AjaxResult queryById(@PathVariable("id") Long id) { - return AjaxResult.success(this.workflowService.queryById(id)); + public GenericsAjaxResult queryById(@PathVariable("id") Long id) { + return genericsSuccess(this.workflowService.queryById(id)); } /** @@ -77,8 +79,8 @@ public class WorkflowController { */ @PostMapping @ApiOperation("新增流水线") - public AjaxResult add(@RequestBody Workflow workflow) { - return AjaxResult.success(this.workflowService.insert(workflow)); + public GenericsAjaxResult add(@RequestBody Workflow workflow) { + return genericsSuccess(this.workflowService.insert(workflow)); } @@ -90,8 +92,8 @@ public class WorkflowController { */ @ApiOperation("复制流水线记录") @PostMapping("duplicate/{id}") - public AjaxResult duplicateWorkflow(@PathVariable("id") Long id) { - return AjaxResult.success(this.workflowService.duplicateWorkflow(id)); + public GenericsAjaxResult duplicateWorkflow(@PathVariable("id") Long id) { + return genericsSuccess(this.workflowService.duplicateWorkflow(id)); } /** @@ -102,7 +104,7 @@ public class WorkflowController { // @ApiOperation("流水线保存") // @PutMapping("/saveWorkflow/{id}") // public ResponseEntity saveWorkflow(@PathVariable("id") Long id) { -// return AjaxResult.success(this.workflowService.saveWorkflow(id)); +// return genericsSuccess(this.workflowService.saveWorkflow(id)); // } @@ -114,8 +116,8 @@ public class WorkflowController { */ @PutMapping @ApiOperation("编辑流水线") - public AjaxResult edit(@RequestBody Workflow workflow) { - return AjaxResult.success(this.workflowService.update(workflow)); + public GenericsAjaxResult edit(@RequestBody Workflow workflow) { + return genericsSuccess(this.workflowService.update(workflow)); } /** @@ -129,8 +131,8 @@ public class WorkflowController { */ @DeleteMapping("{id}") @ApiOperation("删除流水线") - public AjaxResult deleteById(@PathVariable("id") Long id) throws Exception { - return AjaxResult.success(this.workflowService.removeById(id)); + public GenericsAjaxResult deleteById(@PathVariable("id") Long id) throws Exception { + return genericsSuccess(this.workflowService.removeById(id)); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/workflow/WorkflowParamController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/workflow/WorkflowParamController.java index 5634fa8b..8725334c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/workflow/WorkflowParamController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/workflow/WorkflowParamController.java @@ -1,12 +1,13 @@ package com.ruoyi.platform.controller.workflow; -import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.GenericsAjaxResult; import com.ruoyi.platform.domain.WorkflowParam; import com.ruoyi.platform.service.WorkflowParamService; +import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.checkerframework.checker.units.qual.A; +import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; -import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -19,7 +20,8 @@ import javax.annotation.Resource; */ @RestController @RequestMapping("workflowParam") -public class WorkflowParamController { +@Api("流水线参数管理") +public class WorkflowParamController extends BaseController { /** * 服务对象 */ @@ -34,9 +36,9 @@ public class WorkflowParamController { */ @GetMapping @ApiOperation("分页查询") - public AjaxResult queryByPage(WorkflowParam workflowParam, int page, int size) { + public GenericsAjaxResult> queryByPage(WorkflowParam workflowParam, int page, int size) { PageRequest pageRequest = PageRequest.of(page,size); - return AjaxResult.success(this.workflowParamService.queryByPage(workflowParam, pageRequest)); + return genericsSuccess(this.workflowParamService.queryByPage(workflowParam, pageRequest)); } /** @@ -47,8 +49,8 @@ public class WorkflowParamController { */ @GetMapping("{id}") @ApiOperation("根据id查询单条数据") - public AjaxResult queryById(@PathVariable("id") Integer id) { - return AjaxResult.success(this.workflowParamService.queryById(id)); + public GenericsAjaxResult queryById(@PathVariable("id") Integer id) { + return genericsSuccess(this.workflowParamService.queryById(id)); } /** * 新增数据 @@ -58,8 +60,8 @@ public class WorkflowParamController { */ @PostMapping @ApiOperation("新增流水线参数") - public AjaxResult add(WorkflowParam workflowParam) throws Exception { - return AjaxResult.success(this.workflowParamService.insert(workflowParam)); + public GenericsAjaxResult add(WorkflowParam workflowParam) throws Exception { + return genericsSuccess(this.workflowParamService.insert(workflowParam)); } /** @@ -70,8 +72,8 @@ public class WorkflowParamController { */ @PutMapping @ApiOperation("编辑流水线参数") - public AjaxResult edit(WorkflowParam workflowParam) { - return AjaxResult.success(this.workflowParamService.update(workflowParam)); + public GenericsAjaxResult edit(WorkflowParam workflowParam) { + return genericsSuccess(this.workflowParamService.update(workflowParam)); } /** @@ -82,8 +84,8 @@ public class WorkflowParamController { */ @DeleteMapping @ApiOperation("删除流水线参数") - public AjaxResult deleteById(Integer id) { - return AjaxResult.success(this.workflowParamService.removeById(id)); + public GenericsAjaxResult deleteById(Integer id) { + return genericsSuccess(this.workflowParamService.removeById(id)); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Models.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Models.java index 98d42b2e..26a4fd66 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Models.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Models.java @@ -2,6 +2,7 @@ package com.ruoyi.platform.domain; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; +import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.util.Date; @@ -14,6 +15,7 @@ import java.io.Serializable; * @since 2023-11-28 16:24:19 */ @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) +@ApiModel("模型对象") public class Models implements Serializable { private static final long serialVersionUID = -59896385986032571L; @ApiModelProperty(name = "id") diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelsVersion.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelsVersion.java index 24f58500..c02eb970 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelsVersion.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelsVersion.java @@ -2,6 +2,7 @@ package com.ruoyi.platform.domain; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; +import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.util.Date; @@ -14,6 +15,7 @@ import java.io.Serializable; * @since 2024-01-05 09:02:42 */ @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) +@ApiModel("模型版本对象") public class ModelsVersion implements Serializable { private static final long serialVersionUID = -20181111893295288L; /** diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Workflow.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Workflow.java index 1bbd543a..70eb8f76 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Workflow.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Workflow.java @@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; import com.ruoyi.platform.handler.BaseMetaObjectHandler; +import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import org.springframework.stereotype.Component; @@ -21,6 +22,7 @@ import java.util.Date; @Component @Table(name = "workflow") @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) +@ApiModel("流水线对象") public class Workflow extends BaseMetaObjectHandler implements Serializable { private static final long serialVersionUID = -28387946419827568L; /** diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/WorkflowParam.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/WorkflowParam.java index ef19b6c1..262b2741 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/WorkflowParam.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/WorkflowParam.java @@ -2,6 +2,7 @@ package com.ruoyi.platform.domain; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; +import io.swagger.annotations.ApiModel; import java.util.Date; import java.io.Serializable; @@ -13,6 +14,7 @@ import java.io.Serializable; * @since 2024-03-18 15:48:42 */ @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) +@ApiModel("流水线参数对象") public class WorkflowParam implements Serializable { private static final long serialVersionUID = -96152285866099549L; /** From abb485b2c1a74cf776adb919bdf24714b40b6f62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E5=A4=A7=E9=94=90?= <1070211640@qq.com> Date: Wed, 27 Mar 2024 09:22:43 +0800 Subject: [PATCH 05/16] =?UTF-8?q?controller=E6=A0=BC=E5=BC=8F=E8=BF=94?= =?UTF-8?q?=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataset/DatasetVersionController.java | 51 +++--- .../experiment/ExperimentController.java | 25 +-- .../experiment/ExperimentInsController.java | 53 +++--- .../controller/icon/AssetIconController.java | 40 ++--- .../controller/image/ImageController.java | 63 ++++--- .../image/ImageVersionController.java | 31 ++-- .../ruoyi/platform/domain/WorkflowParam.java | 10 ++ .../platform/mapper/WorkflowParamDao.java | 8 +- .../impl/ExperimentInsServiceImpl.java | 2 + .../impl/WorkflowParamServiceImpl.java | 2 +- .../WorkflowParamDaoMapper.xml | 155 +++++++++--------- 11 files changed, 228 insertions(+), 212 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetVersionController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetVersionController.java index 6728f124..302859cc 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetVersionController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetVersionController.java @@ -1,14 +1,17 @@ package com.ruoyi.platform.controller.dataset; -import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.GenericsAjaxResult; import com.ruoyi.platform.domain.DatasetVersion; import com.ruoyi.platform.service.DatasetVersionService; import io.swagger.annotations.ApiOperation; +import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; +import java.util.Map; /** * (DatasetVersion)表控制层 @@ -19,7 +22,7 @@ import java.util.List; @RestController @RequestMapping("datasetVersion") @ApiOperation(value = "数据集版本管理") -public class DatasetVersionController { +public class DatasetVersionController extends BaseController { /** * 服务对象 */ @@ -30,15 +33,15 @@ public class DatasetVersionController { * 分页查询 * * @param datasetVersion 筛选条件 - * @param page 页数 - * @param size 大小 + * @param page 页数 + * @param size 大小 * @return 查询结果 */ @GetMapping @ApiOperation("分页查询") - public AjaxResult queryByPage(DatasetVersion datasetVersion, int page,int size) { + public GenericsAjaxResult> queryByPage(DatasetVersion datasetVersion, int page, int size) { PageRequest pageRequest = PageRequest.of(page,size); - return AjaxResult.success(this.datasetVersionService.queryByPage(datasetVersion, pageRequest)); + return genericsSuccess(this.datasetVersionService.queryByPage(datasetVersion, pageRequest)); } @@ -50,22 +53,22 @@ public class DatasetVersionController { */ @GetMapping("{id}") @ApiOperation("根据id查询数据集版本") - public AjaxResult queryById(@PathVariable("id") Integer id) { - return AjaxResult.success(this.datasetVersionService.queryById(id)); + public GenericsAjaxResult queryById(@PathVariable("id") Integer id) { + return genericsSuccess(this.datasetVersionService.queryById(id)); } /** * 通过数据集id和version查询版本列表 * * @param datasetId 数据集ID - * @param version 数据集版本 + * @param version 数据集版本 * @return 匹配的数据集版本记录列表 */ @GetMapping("/versions") @ApiOperation("通过数据集id和version查询版本文件列表") - public AjaxResult queryByDatasetIdAndVersion(@RequestParam("dataset_id") Integer datasetId, - @RequestParam("version") String version) { - return AjaxResult.success(this.datasetVersionService.queryByDatasetIdAndVersion(datasetId, version)); + public GenericsAjaxResult> queryByDatasetIdAndVersion(@RequestParam("dataset_id") Integer datasetId, + @RequestParam("version") String version) { + return genericsSuccess(this.datasetVersionService.queryByDatasetIdAndVersion(datasetId, version)); } @@ -77,8 +80,8 @@ public class DatasetVersionController { */ @PostMapping @ApiOperation("添加数据集版本") - public AjaxResult add(@RequestBody DatasetVersion datasetVersion) throws Exception { - return AjaxResult.success(this.datasetVersionService.insert(datasetVersion)); + public GenericsAjaxResult add(@RequestBody DatasetVersion datasetVersion) throws Exception { + return genericsSuccess(this.datasetVersionService.insert(datasetVersion)); } /** @@ -89,8 +92,8 @@ public class DatasetVersionController { */ @PostMapping("/addDatasetVersions") @ApiOperation("添加数据集版本") - public AjaxResult addDatasetVersions(@RequestBody List datasetVersions) throws Exception { - return AjaxResult.success(this.datasetVersionService.addDatasetVersions(datasetVersions)); + public GenericsAjaxResult addDatasetVersions(@RequestBody List datasetVersions) throws Exception { + return genericsSuccess(this.datasetVersionService.addDatasetVersions(datasetVersions)); } @@ -102,8 +105,8 @@ public class DatasetVersionController { */ @PutMapping @ApiOperation("编辑数据集版本") - public AjaxResult edit(@RequestBody DatasetVersion datasetVersion) { - return AjaxResult.success(this.datasetVersionService.update(datasetVersion)); + public GenericsAjaxResult edit(@RequestBody DatasetVersion datasetVersion) { + return genericsSuccess(this.datasetVersionService.update(datasetVersion)); } /** @@ -114,22 +117,22 @@ public class DatasetVersionController { */ @DeleteMapping({"{id}"}) @ApiOperation("删除数据集版本") - public AjaxResult deleteById(@PathVariable("id") Integer id) { - return AjaxResult.success(this.datasetVersionService.removeById(id)); + public GenericsAjaxResult deleteById(@PathVariable("id") Integer id) { + return genericsSuccess(this.datasetVersionService.removeById(id)); } /** * 删除版本下的所有数据 * * @param datasetId 模型主键 - * @param version 版本 + * @param version 版本 * @return 删除是否成功 */ @DeleteMapping("/deleteVersion") @ApiOperation(value = "逻辑删除模型版本", notes = "根据数据集ID和版本逻辑删除模型版本记录。") - public AjaxResult deleteDatasetVersion(@RequestParam("dataset_id") Integer datasetId, - @RequestParam("version") String version) { - return AjaxResult.success(this.datasetVersionService.deleteDatasetVersion(datasetId, version)); + public GenericsAjaxResult> deleteDatasetVersion(@RequestParam("dataset_id") Integer datasetId, + @RequestParam("version") String version) { + return genericsSuccess(this.datasetVersionService.deleteDatasetVersion(datasetId, version)); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentController.java index 4275cfc9..30603eab 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentController.java @@ -47,13 +47,14 @@ public class ExperimentController extends BaseController { @GetMapping(("/status")) @ApiOperation("查询实验状态") - public AjaxResult selectStatus(@RequestBody Experiment experiment, PageRequest pageRequest) throws IOException { - return AjaxResult.success(this.experimentService.selectStatus(experiment, pageRequest)); + public GenericsAjaxResult> selectStatus(@RequestBody Experiment experiment, PageRequest pageRequest) throws IOException { + return genericsSuccess(this.experimentService.selectStatus(experiment, pageRequest)); } @GetMapping(("/configuration")) + @ApiOperation("查询实验配置") public GenericsAjaxResult> showExperimentConfig(@RequestBody Experiment experiment){ return genericsSuccess(this.experimentService.showExperimentConfig(experiment)); } @@ -78,8 +79,8 @@ public class ExperimentController extends BaseController { */ @PostMapping @ApiOperation("新增实验") - public AjaxResult add(@RequestBody Experiment experiment) { - return AjaxResult.success(this.experimentService.insert(experiment)); + public GenericsAjaxResult add(@RequestBody Experiment experiment) { + return genericsSuccess(this.experimentService.insert(experiment)); } /** @@ -90,8 +91,8 @@ public class ExperimentController extends BaseController { */ @PutMapping @ApiOperation("编辑实验") - public AjaxResult edit(@RequestBody Experiment experiment) throws IOException { - return AjaxResult.success(this.experimentService.update(experiment)); + public GenericsAjaxResult edit(@RequestBody Experiment experiment) throws IOException { + return genericsSuccess(this.experimentService.update(experiment)); } /** @@ -102,8 +103,8 @@ public class ExperimentController extends BaseController { */ @DeleteMapping("{id}") @ApiOperation("删除流水线") - public AjaxResult deleteById(@PathVariable("id") Integer id) throws Exception { - return AjaxResult.success(this.experimentService.removeById(id)); + public GenericsAjaxResult deleteById(@PathVariable("id") Integer id) throws Exception { + return genericsSuccess(this.experimentService.removeById(id)); } @@ -118,8 +119,8 @@ public class ExperimentController extends BaseController { */ @PutMapping("/experiments/{id}") @ApiOperation("运行实验") - public AjaxResult runExperiment(@PathVariable("id") Integer id) throws Exception { - return AjaxResult.success(this.experimentService.runExperiment(id)); + public GenericsAjaxResult runExperiment(@PathVariable("id") Integer id) throws Exception { + return genericsSuccess(this.experimentService.runExperiment(id)); } /** @@ -130,8 +131,8 @@ public class ExperimentController extends BaseController { */ @PostMapping("/addAndRunExperiment") @ApiOperation("实验创建页面确定并运行") - public AjaxResult addAndRunExperiment(@RequestBody Experiment experiment) { - return AjaxResult.success(this.experimentService.addAndRunExperiment(experiment)); + public GenericsAjaxResult addAndRunExperiment(@RequestBody Experiment experiment) { + return genericsSuccess(this.experimentService.addAndRunExperiment(experiment)); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java index 0a431962..2db90e05 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java @@ -1,18 +1,19 @@ package com.ruoyi.platform.controller.experiment; -import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.GenericsAjaxResult; import com.ruoyi.platform.domain.ExperimentIns; import com.ruoyi.platform.service.ExperimentInsService; import com.ruoyi.platform.vo.LogRequestVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiResponse; +import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import javax.ws.rs.POST; import java.io.IOException; +import java.util.List; import java.util.Map; /** @@ -24,7 +25,7 @@ import java.util.Map; @RestController @RequestMapping("experimentIns") @Api("实验实例管理") -public class ExperimentInsController { +public class ExperimentInsController extends BaseController { /** * 服务对象 */ @@ -39,9 +40,9 @@ public class ExperimentInsController { */ @GetMapping @ApiOperation("分页查询") - public AjaxResult queryByPage(ExperimentIns experimentIns, int page, int size) throws IOException { + public GenericsAjaxResult> queryByPage(ExperimentIns experimentIns, int page, int size) throws IOException { PageRequest pageRequest = PageRequest.of(page,size); - return AjaxResult.success(this.experimentInsService.queryByPage(experimentIns, pageRequest)); + return genericsSuccess(this.experimentInsService.queryByPage(experimentIns, pageRequest)); } /** @@ -52,8 +53,8 @@ public class ExperimentInsController { */ @GetMapping("{id}") @ApiOperation("通过id查询实验实例") - public AjaxResult queryById(@PathVariable("id") Integer id) throws IOException { - return AjaxResult.success(this.experimentInsService.queryById(id)); + public GenericsAjaxResult queryById(@PathVariable("id") Integer id) throws IOException { + return genericsSuccess(this.experimentInsService.queryById(id)); } /** @@ -64,8 +65,8 @@ public class ExperimentInsController { */ @GetMapping("/queryByExperimentId/{Experiment_id}") @ApiOperation("通过实验id查询查询实验实例列表") - public AjaxResult queryByExperimentId(@PathVariable("Experiment_id") Integer experimentId) throws IOException { - return AjaxResult.success(this.experimentInsService.getByExperimentId(experimentId)); + public GenericsAjaxResult> queryByExperimentId(@PathVariable("Experiment_id") Integer experimentId) throws IOException { + return genericsSuccess(this.experimentInsService.getByExperimentId(experimentId)); } /** @@ -76,8 +77,8 @@ public class ExperimentInsController { */ @PostMapping @ApiOperation("新增实验实例") - public AjaxResult add(@RequestBody ExperimentIns experimentIns) { - return AjaxResult.success(this.experimentInsService.insert(experimentIns)); + public GenericsAjaxResult add(@RequestBody ExperimentIns experimentIns) { + return genericsSuccess(this.experimentInsService.insert(experimentIns)); } /** @@ -88,8 +89,8 @@ public class ExperimentInsController { */ @PutMapping @ApiOperation("编辑实验实例") - public AjaxResult edit(@RequestBody ExperimentIns experimentIns) throws IOException { - return AjaxResult.success(this.experimentInsService.update(experimentIns)); + public GenericsAjaxResult edit(@RequestBody ExperimentIns experimentIns) throws IOException { + return genericsSuccess(this.experimentInsService.update(experimentIns)); } /** @@ -100,8 +101,8 @@ public class ExperimentInsController { */ @DeleteMapping("{id}") @ApiOperation("删除实验实例") - public AjaxResult deleteById( @PathVariable("id") Integer id) { - return AjaxResult.success(this.experimentInsService.removeById(id)); + public GenericsAjaxResult deleteById( @PathVariable("id") Integer id) { + return genericsSuccess(this.experimentInsService.removeById(id)); } /** @@ -112,8 +113,8 @@ public class ExperimentInsController { */ @PutMapping("{id}") @ApiOperation("终止实验实例") - public AjaxResult terminateExperimentIns(@PathVariable("id") Integer id) { - return AjaxResult.success(this.experimentInsService.terminateExperimentIns(id)); + public GenericsAjaxResult terminateExperimentIns(@PathVariable("id") Integer id) { + return genericsSuccess(this.experimentInsService.terminateExperimentIns(id)); } /** @@ -124,9 +125,9 @@ public class ExperimentInsController { @GetMapping("/log") @ApiOperation("查询实例日志") - public AjaxResult showExperimentInsLog(@RequestParam("id") Integer id, + public GenericsAjaxResult showExperimentInsLog(@RequestParam("id") Integer id, @RequestParam("component_id") String componentId){ - return AjaxResult.success(this.experimentInsService.showExperimentInsLog(id,componentId)); + return genericsSuccess(this.experimentInsService.showExperimentInsLog(id,componentId)); } /** @@ -137,9 +138,9 @@ public class ExperimentInsController { @GetMapping("/pods/log") @ApiOperation("获取pod实时日志请求") - public AjaxResult getRealtimePodLog(@RequestParam("pod_name") String podName, + public GenericsAjaxResult getRealtimePodLog(@RequestParam("pod_name") String podName, @RequestParam("start_time") String startTime){ - return AjaxResult.success(this.experimentInsService.getRealtimePodLog(podName,startTime)); + return genericsSuccess(this.experimentInsService.getRealtimePodLog(podName,startTime)); } /** @@ -150,8 +151,8 @@ public class ExperimentInsController { @PostMapping("/realTimeLog") @ApiOperation("查询实验实例实时日志") - public AjaxResult getRealtimeWorkflowLog(@RequestBody LogRequestVo logRequest){ - return AjaxResult.success(this.experimentInsService.getRealtimeWorkflowLog(logRequest)); + public GenericsAjaxResult> getRealtimeWorkflowLog(@RequestBody LogRequestVo logRequest){ + return genericsSuccess(this.experimentInsService.getRealtimeWorkflowLog(logRequest)); } @@ -165,8 +166,8 @@ public class ExperimentInsController { */ @GetMapping("/nodeResult") @ApiOperation("查询实例节点结果") - public AjaxResult getNodeResult(@RequestParam("id") Integer id,@RequestParam("node_id") String nodeId) throws Exception { - return AjaxResult.success(this.experimentInsService.getNodeResult(id,nodeId)); + public GenericsAjaxResult getNodeResult(@RequestParam("id") Integer id, @RequestParam("node_id") String nodeId) throws Exception { + return genericsSuccess(this.experimentInsService.getNodeResult(id,nodeId)); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/icon/AssetIconController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/icon/AssetIconController.java index 19f3ce8a..0351dafc 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/icon/AssetIconController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/icon/AssetIconController.java @@ -1,17 +1,17 @@ package com.ruoyi.platform.controller.icon; -import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.GenericsAjaxResult; import com.ruoyi.platform.domain.AssetIcon; -import com.ruoyi.platform.domain.Models; import com.ruoyi.platform.service.AssetIconService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; -import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.List; /** * (AssetIcon)表控制层 @@ -22,7 +22,7 @@ import javax.annotation.Resource; @RestController @RequestMapping("assetIcon") @Api("图标管理") -public class AssetIconController { +public class AssetIconController extends BaseController { /** * 服务对象 */ @@ -33,15 +33,15 @@ public class AssetIconController { * 分页查询 * * @param assetIcon 筛选条件 - * @param page 分页对象 - * @param size 分页对象 + * @param page 分页对象 + * @param size 分页对象 * @return 查询结果 */ @GetMapping @ApiOperation("分页查询") - public AjaxResult queryByPage(AssetIcon assetIcon, int page, int size) { + public GenericsAjaxResult> queryByPage(AssetIcon assetIcon, int page, int size) { PageRequest pageRequest = PageRequest.of(page,size); - return AjaxResult.success(this.assetIconService.queryByPage(assetIcon, pageRequest)); + return genericsSuccess(this.assetIconService.queryByPage(assetIcon, pageRequest)); } /** @@ -52,8 +52,8 @@ public class AssetIconController { */ @GetMapping("{id}") @ApiOperation("根据id查询") - public AjaxResult queryById(@PathVariable("id") Integer id) { - return AjaxResult.success(this.assetIconService.queryById(id)); + public GenericsAjaxResult queryById(@PathVariable("id") Integer id) { + return genericsSuccess(this.assetIconService.queryById(id)); } /** @@ -64,8 +64,8 @@ public class AssetIconController { */ @GetMapping("category/{id}") @ApiOperation("根据图标类别id查询") - public AjaxResult queryByCategoryId(@PathVariable("id") Integer categoryId) { - return AjaxResult.success(this.assetIconService.queryByCategoryId(categoryId)); + public GenericsAjaxResult> queryByCategoryId(@PathVariable("id") Integer categoryId) { + return genericsSuccess(this.assetIconService.queryByCategoryId(categoryId)); } @@ -78,8 +78,8 @@ public class AssetIconController { */ @GetMapping("name/{name}") @ApiOperation("按名字模糊查询图标名字") - public AjaxResult queryByName(@PathVariable("name") String name) { - return AjaxResult.success(this.assetIconService.queryByName(name)); + public GenericsAjaxResult> queryByName(@PathVariable("name") String name) { + return genericsSuccess(this.assetIconService.queryByName(name)); } /** @@ -90,8 +90,8 @@ public class AssetIconController { */ @PostMapping @ApiOperation("新增图标") - public AjaxResult add(@RequestBody AssetIcon assetIcon) { - return AjaxResult.success(this.assetIconService.insert(assetIcon)); + public GenericsAjaxResult add(@RequestBody AssetIcon assetIcon) { + return genericsSuccess(this.assetIconService.insert(assetIcon)); } /** @@ -102,8 +102,8 @@ public class AssetIconController { */ @PutMapping @ApiOperation("更新图标") - public AjaxResult edit(@RequestBody AssetIcon assetIcon) { - return AjaxResult.success(this.assetIconService.update(assetIcon)); + public GenericsAjaxResult edit(@RequestBody AssetIcon assetIcon) { + return genericsSuccess(this.assetIconService.update(assetIcon)); } /** @@ -114,8 +114,8 @@ public class AssetIconController { */ @DeleteMapping("{id}") @ApiOperation("删除图标") - public AjaxResult deleteById(@PathVariable("id") Integer id) { - return AjaxResult.success(this.assetIconService.removeById(id)); + public GenericsAjaxResult deleteById(@PathVariable("id") Integer id) { + return genericsSuccess(this.assetIconService.removeById(id)); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/image/ImageController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/image/ImageController.java index eb47c5aa..d26a4b24 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/image/ImageController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/image/ImageController.java @@ -1,20 +1,19 @@ package com.ruoyi.platform.controller.image; -import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.GenericsAjaxResult; import com.ruoyi.platform.domain.Image; -import com.ruoyi.platform.domain.Models; import com.ruoyi.platform.service.ImageService; -import com.ruoyi.platform.vo.DatasetVo; import com.ruoyi.platform.vo.ImageVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; -import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import java.util.Map; /** * (Image)表控制层 @@ -25,7 +24,7 @@ import javax.annotation.Resource; @RestController @RequestMapping("image") @Api("镜像管理") -public class ImageController { +public class ImageController extends BaseController { /** * 服务对象 */ @@ -36,15 +35,15 @@ public class ImageController { * 分页查询 * * @param image 筛选条件 - * @param page 分页对象 - * @param size 分页对象 + * @param page 分页对象 + * @param size 分页对象 * @return 查询结果 */ @GetMapping @ApiOperation("分页查询") - public AjaxResult queryByPage(Image image, int page, int size) { + public GenericsAjaxResult> queryByPage(Image image, int page, int size) { PageRequest pageRequest = PageRequest.of(page,size); - return AjaxResult.success(this.imageService.queryByPage(image, pageRequest)); + return genericsSuccess(this.imageService.queryByPage(image, pageRequest)); } /** @@ -55,8 +54,8 @@ public class ImageController { */ @GetMapping("{id}") @ApiOperation("按id查询镜像") - public AjaxResult queryById(@PathVariable("id") Integer id) { - return AjaxResult.success(this.imageService.queryById(id)); + public GenericsAjaxResult queryById(@PathVariable("id") Integer id) { + return genericsSuccess(this.imageService.queryById(id)); } /** @@ -67,8 +66,8 @@ public class ImageController { */ @GetMapping("name/{name}") @ApiOperation("按名字模糊查询镜像") - public AjaxResult queryByName(@PathVariable("name") String name) { - return AjaxResult.success(this.imageService.queryByName(name)); + public GenericsAjaxResult> queryByName(@PathVariable("name") String name) { + return genericsSuccess(this.imageService.queryByName(name)); } /** * 新增数据 @@ -78,8 +77,8 @@ public class ImageController { */ @PostMapping @ApiOperation("新增镜像") - public AjaxResult add(@RequestBody Image image) { - return AjaxResult.success(this.imageService.insert(image)); + public GenericsAjaxResult add(@RequestBody Image image) { + return genericsSuccess(this.imageService.insert(image)); } /** @@ -90,8 +89,8 @@ public class ImageController { */ @PostMapping("/addImageAndVersion") @ApiOperation("添加镜像和版本") - public AjaxResult addImageAndVersion(@RequestBody ImageVo imageVo) throws Exception { - return AjaxResult.success(this.imageService.insertImageAndVersion(imageVo)); + public GenericsAjaxResult addImageAndVersion(@RequestBody ImageVo imageVo) throws Exception { + return genericsSuccess(this.imageService.insertImageAndVersion(imageVo)); } @@ -102,36 +101,35 @@ public class ImageController { * @return 编辑结果 */ @PutMapping - public AjaxResult edit(@RequestBody Image image) { - return AjaxResult.success(this.imageService.update(image)); + public GenericsAjaxResult edit(@RequestBody Image image) { + return genericsSuccess(this.imageService.update(image)); } /** * 删除数据 * * @param id 主键 - * * @return 删除是否成功 */ @DeleteMapping("{id}") - public AjaxResult deleteById(@PathVariable("id") Integer id) { - return AjaxResult.success(this.imageService.removeById(id)); + public GenericsAjaxResult deleteById(@PathVariable("id") Integer id) { + return genericsSuccess(this.imageService.removeById(id)); } @PostMapping("/net") @ApiOperation("从本地上传构建镜像") - public AjaxResult createImageFromNet(@RequestParam("name") String imageName, - @RequestParam("tag") String imageTag, - @RequestParam("path") String path) throws Exception { - return AjaxResult.success(this.imageService.createImageFromNet(imageName,imageTag,path)); + public GenericsAjaxResult createImageFromNet(@RequestParam("name") String imageName, + @RequestParam("tag") String imageTag, + @RequestParam("path") String path) throws Exception { + return genericsSuccess(this.imageService.createImageFromNet(imageName,imageTag,path)); } @PostMapping("/local") @ApiOperation("从本地上传构建镜像") - public AjaxResult createImageFromLocal(@RequestParam("name") String imageName, - @RequestParam("tag") String imageTag, - @RequestParam("path") String path) throws Exception { - return AjaxResult.success(this.imageService.createImageFromLocal(imageName,imageTag,path)); + public GenericsAjaxResult createImageFromLocal(@RequestParam("name") String imageName, + @RequestParam("tag") String imageTag, + @RequestParam("path") String path) throws Exception { + return genericsSuccess(this.imageService.createImageFromLocal(imageName,imageTag,path)); } @@ -139,13 +137,12 @@ public class ImageController { /** * 镜像上传 * - * * @return 上传结果 */ @PostMapping("/upload") @ApiOperation(value = "上传镜像文件", notes = "上传镜像tar包,返回存储路径") - public AjaxResult uploadImageFiles(@RequestParam("file") MultipartFile file) throws Exception { - return AjaxResult.success(this.imageService.uploadImageFiles(file)); + public GenericsAjaxResult> uploadImageFiles(@RequestParam("file") MultipartFile file) throws Exception { + return genericsSuccess(this.imageService.uploadImageFiles(file)); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/image/ImageVersionController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/image/ImageVersionController.java index 9d340b1e..c6937b1a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/image/ImageVersionController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/image/ImageVersionController.java @@ -1,13 +1,12 @@ package com.ruoyi.platform.controller.image; -import com.ruoyi.common.core.web.domain.AjaxResult; -import com.ruoyi.platform.domain.Image; +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.GenericsAjaxResult; import com.ruoyi.platform.domain.ImageVersion; import com.ruoyi.platform.service.ImageVersionService; import io.swagger.annotations.ApiOperation; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; -import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -20,7 +19,7 @@ import javax.annotation.Resource; */ @RestController @RequestMapping("imageVersion") -public class ImageVersionController { +public class ImageVersionController extends BaseController { /** * 服务对象 */ @@ -31,15 +30,15 @@ public class ImageVersionController { * 分页查询 * * @param imageVersion 筛选条件 - * @param page 分页对象 - * @param size 分页对象 + * @param page 分页对象 + * @param size 分页对象 * @return 查询结果 */ @GetMapping @ApiOperation("分页查询") - public AjaxResult queryByPage(ImageVersion imageVersion, int page, int size) { + public GenericsAjaxResult> queryByPage(ImageVersion imageVersion, int page, int size) { PageRequest pageRequest = PageRequest.of(page,size); - return AjaxResult.success(this.imageVersionService.queryByPage(imageVersion, pageRequest)); + return genericsSuccess(this.imageVersionService.queryByPage(imageVersion, pageRequest)); } /** @@ -49,8 +48,8 @@ public class ImageVersionController { * @return 单条数据 */ @GetMapping("{id}") - public AjaxResult queryById(@PathVariable("id") Integer id) { - return AjaxResult.success(this.imageVersionService.queryById(id)); + public GenericsAjaxResult queryById(@PathVariable("id") Integer id) { + return genericsSuccess(this.imageVersionService.queryById(id)); } /** @@ -60,8 +59,8 @@ public class ImageVersionController { * @return 新增结果 */ @PostMapping - public AjaxResult add(@RequestBody ImageVersion imageVersion) { - return AjaxResult.success(this.imageVersionService.insert(imageVersion)); + public GenericsAjaxResult add(@RequestBody ImageVersion imageVersion) { + return genericsSuccess(this.imageVersionService.insert(imageVersion)); } /** @@ -71,8 +70,8 @@ public class ImageVersionController { * @return 编辑结果 */ @PutMapping - public AjaxResult edit(@RequestBody ImageVersion imageVersion) { - return AjaxResult.success(this.imageVersionService.update(imageVersion)); + public GenericsAjaxResult edit(@RequestBody ImageVersion imageVersion) { + return genericsSuccess(this.imageVersionService.update(imageVersion)); } /** @@ -82,8 +81,8 @@ public class ImageVersionController { * @return 删除是否成功 */ @DeleteMapping("{id}") - public AjaxResult deleteById(@PathVariable("id") Integer id) { - return AjaxResult.success(this.imageVersionService.removeById(id)); + public GenericsAjaxResult deleteById(@PathVariable("id") Integer id) { + return genericsSuccess(this.imageVersionService.removeById(id)); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/WorkflowParam.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/WorkflowParam.java index 262b2741..9653a80e 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/WorkflowParam.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/WorkflowParam.java @@ -3,6 +3,7 @@ package com.ruoyi.platform.domain; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import java.util.Date; import java.io.Serializable; @@ -20,30 +21,39 @@ public class WorkflowParam implements Serializable { /** * 主键 */ + @ApiModelProperty(name = "id") private Integer id; /** * 流水线id */ + @ApiModelProperty(value = "对应流水线id",required = true) private Long workflowId; /** * 参数名称 */ + @ApiModelProperty(value = "参数名称",required = true) private String paramName; /** * 参数描述 */ + + @ApiModelProperty(value = "参数描述",required = true) private String description; /** * 参数类型,1字符串,2整形,3布尔型 */ + + @ApiModelProperty(value = "参数类型",required = true) private Integer paramType; /** * 参数的值 */ + @ApiModelProperty(value = "参数的值",required = true) private String paramValue; /** * 0失效,1生效 */ + @ApiModelProperty(value = "是否敏感",required = true) private Integer isSensitive; /** * 创建者 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/WorkflowParamDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/WorkflowParamDao.java index fa583a26..abe4b173 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/WorkflowParamDao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/WorkflowParamDao.java @@ -28,7 +28,7 @@ public interface WorkflowParamDao { * @param pageable 分页对象 * @return 对象列表 */ - List queryAllByLimit(WorkflowParam workflowParam, @Param("pageable") Pageable pageable); + List queryAllByLimit(@Param("workflowParam") WorkflowParam workflowParam, @Param("pageable") Pageable pageable); /** * 统计总行数 @@ -36,7 +36,7 @@ public interface WorkflowParamDao { * @param workflowParam 查询条件 * @return 总行数 */ - long count(WorkflowParam workflowParam); + long count(@Param("workflowParam") WorkflowParam workflowParam); /** * 新增数据 @@ -44,7 +44,7 @@ public interface WorkflowParamDao { * @param workflowParam 实例对象 * @return 影响行数 */ - int insert(WorkflowParam workflowParam); + int insert(@Param("workflowParam") WorkflowParam workflowParam); /** * 批量新增数据(MyBatis原生foreach方法) @@ -69,7 +69,7 @@ public interface WorkflowParamDao { * @param workflowParam 实例对象 * @return 影响行数 */ - int update(WorkflowParam workflowParam); + int update(@Param("workflowParam") WorkflowParam workflowParam); /** * 通过主键删除数据 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index 2636c671..0a213f45 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -524,6 +524,8 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { //如果跟node_status里面不一样,就要去更新node_status的信息 String nodesStatus = ins.getNodesStatus(); Map nodeMap = JsonUtils.jsonToMap(nodesStatus); + + String keyStartsWithWorkflow = nodeMap.keySet().stream() .filter(key -> key.startsWith("workflow-")) .findFirst() diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowParamServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowParamServiceImpl.java index ecb9bb25..69043477 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowParamServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowParamServiceImpl.java @@ -83,7 +83,7 @@ public class WorkflowParamServiceImpl implements WorkflowParamService { public String removeById(Integer id) { WorkflowParam workflowParam = this.workflowParamDao.queryById(id); if (workflowParam == null){ - return "图标不存在"; + return "流水线参数不存在"; } //判断权限,只有admin和创建者本身可以删除 diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/WorkflowParamDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/WorkflowParamDaoMapper.xml index 4fe4d893..6ee3a384 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/WorkflowParamDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/WorkflowParamDaoMapper.xml @@ -28,106 +28,108 @@ + - insert into workflow_param(workflow_id,param_name,description,param_type,param_value,is_sensitive,create_by,create_time,update_by,update_time,state) - values (#{workflowId}#{paramName}#{description}#{paramType}#{paramValue}#{isSensitive}#{createBy}#{createTime}#{updateBy}#{updateTime}#{state}) + insert into workflow_param(workflow_id, param_name, description, param_type, param_value, is_sensitive, create_by, create_time, update_by, update_time, state) + values (#{workflowParam.workflowId}, #{workflowParam.paramName}, #{workflowParam.description}, #{workflowParam.paramType}, #{workflowParam.paramValue}, #{workflowParam.isSensitive}, #{workflowParam.createBy}, #{workflowParam.createTime}, #{workflowParam.updateBy}, #{workflowParam.updateTime}, #{workflowParam.state}) + insert into workflow_param(workflow_id,param_name,description,param_type,param_value,is_sensitive,create_by,create_time,update_by,update_time,state) values - (#{entity.workflowId}#{entity.paramName}#{entity.description}#{entity.paramType}#{entity.paramValue}#{entity.isSensitive}#{entity.createBy}#{entity.createTime}#{entity.updateBy}#{entity.updateTime}#{entity.state}) + (#{entity.workflowId},#{entity.paramName},#{entity.description},#{entity.paramType},#{entity.paramValue},#{entity.isSensitive},#{entity.createBy},#{entity.createTime},#{entity.updateBy},#{entity.updateTime},#{entity.state}) @@ -135,7 +137,7 @@ insert into workflow_param(workflow_id,param_name,description,param_type,param_value,is_sensitive,create_by,create_time,update_by,update_time,state) values - (#{entity.workflowId}#{entity.paramName}#{entity.description}#{entity.paramType}#{entity.paramValue}#{entity.isSensitive}#{entity.createBy}#{entity.createTime}#{entity.updateBy}#{entity.updateTime}#{entity.state}) + (#{entity.workflowId},#{entity.paramName},#{entity.description},#{entity.paramType},#{entity.paramValue},#{entity.isSensitive},#{entity.createBy},#{entity.createTime},#{entity.updateBy},#{entity.updateTime},#{entity.state}) on duplicate key update workflow_id = values(workflow_id)param_name = values(param_name)description = values(description)param_type = values(param_type)param_value = values(param_value)is_sensitive = values(is_sensitive)create_by = values(create_by)create_time = values(create_time)update_by = values(update_by)update_time = values(update_time)state = values(state) @@ -145,43 +147,44 @@ workflow_id = values(workflow_id)param_name = values(param_name)description = va update workflow_param - - workflow_id = #{workflowId}, + + workflow_id = #{workflowParam.workflowId}, - - param_name = #{paramName}, + + param_name = #{workflowParam.paramName}, - - description = #{description}, + + description = #{workflowParam.description}, - - param_type = #{paramType}, + + param_type = #{workflowParam.paramType}, - - param_value = #{paramValue}, + + param_value = #{workflowParam.paramValue}, - - is_sensitive = #{isSensitive}, + + is_sensitive = #{workflowParam.isSensitive}, - - create_by = #{createBy}, + + create_by = #{workflowParam.createBy}, - - create_time = #{createTime}, + + create_time = #{workflowParam.createTime}, - - update_by = #{updateBy}, + + update_by = #{workflowParam.updateBy}, - - update_time = #{updateTime}, + + update_time = #{workflowParam.updateTime}, - - state = #{state}, + + state = #{workflowParam.state}, - where id = #{id} + where id = #{workflowParam.id} + delete from workflow_param where id = #{id} From 9eb96c5bfd7ebb48471394d2ae91ed366b568e5a Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Wed, 27 Mar 2024 16:24:12 +0800 Subject: [PATCH 06/16] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=93=A6=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tensorBoard/TensorBoardController.java | 8 +++-- .../platform/domain/TensorBoardStatus.java | 32 +++++++++++++++++++ .../platform/service/TensorBoardService.java | 3 ++ .../impl/ExperimentInsServiceImpl.java | 3 ++ .../service/impl/TensorBoardServiceImpl.java | 22 +++++++++++++ .../ruoyi/platform/utils/K8sClientUtil.java | 29 ++++++++++++++--- 6 files changed, 90 insertions(+), 7 deletions(-) create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/TensorBoardStatus.java diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/tensorBoard/TensorBoardController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/tensorBoard/TensorBoardController.java index bc5bdfb5..496da51d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/tensorBoard/TensorBoardController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/tensorBoard/TensorBoardController.java @@ -19,8 +19,6 @@ import javax.annotation.Resource; @Api("TensorBoard管理") public class TensorBoardController extends BaseController { - //状态查询接口 - @Resource private TensorBoardService tensorBoardService; @@ -36,5 +34,9 @@ public class TensorBoardController extends BaseController { public GenericsAjaxResult runTensorBoard(@RequestBody FrameLogPathVo frameLogPathVo) throws Exception { return genericsSuccess(tensorBoardService.runTensorBoard(frameLogPathVo)); } - + @PostMapping("/getStatus") + @ApiResponse + public GenericsAjaxResult getStatus(@RequestBody FrameLogPathVo frameLogPathVo) throws Exception { + return genericsSuccess(tensorBoardService.getTensorBoardStatus(frameLogPathVo)); + } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/TensorBoardStatus.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/TensorBoardStatus.java new file mode 100644 index 00000000..e1f74ef0 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/TensorBoardStatus.java @@ -0,0 +1,32 @@ +package com.ruoyi.platform.domain; + +public enum TensorBoardStatus { + Pending("Pending",1), Running("Running",2),Terminated("未运行",3); + private String name; + private int index; + private TensorBoardStatus(String name, int index) { + this.name = name; + this.index = index; + } + public static String getName(int index) { + for (TensorBoardStatus c : TensorBoardStatus.values()) { + if (c.getIndex() == index) { + return c.name; + } + } + return null; + } + // get set 方法 + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public int getIndex() { + return index; + } + public void setIndex(int index) { + this.index = index; + } + } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/TensorBoardService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/TensorBoardService.java index f54ad7df..933d2eb5 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/TensorBoardService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/TensorBoardService.java @@ -3,6 +3,9 @@ package com.ruoyi.platform.service; import com.ruoyi.platform.vo.FrameLogPathVo; public interface TensorBoardService { + + + String getTensorBoardStatus(FrameLogPathVo frameLogPathVo); /** * 在集群中启动TensorBoard容器,并且返回地址,4小时后销毁 * @param frameLogPathVo diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index 0a213f45..148aabd2 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -105,6 +105,9 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { this.update(experimentIns); } } + + //新增查询tensorBoard容器状态 + result.add(experimentIns); } } 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 1fb93233..64dc3fd3 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 @@ -2,10 +2,13 @@ package com.ruoyi.platform.service.impl; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.platform.domain.TensorBoardStatus; import com.ruoyi.platform.service.TensorBoardService; import com.ruoyi.platform.utils.K8sClientUtil; import com.ruoyi.platform.vo.FrameLogPathVo; import com.ruoyi.system.api.model.LoginUser; +import io.kubernetes.client.openapi.models.V1Pod; +import net.sf.jsqlparser.schema.Database; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -22,6 +25,25 @@ public class TensorBoardServiceImpl implements TensorBoardService { private String mountPath; @Value("${tensorBoard.masterIp}") private String masterIp; + + @Override + public String getTensorBoardStatus(FrameLogPathVo frameLogPathVo){ + String status = TensorBoardStatus.Terminated.getName(); + if (StringUtils.isEmpty(frameLogPathVo.getPath())||StringUtils.isEmpty(frameLogPathVo.getPvcName())){ + return status; + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + String podName = loginUser.getUsername().toLowerCase()+"-"+frameLogPathVo.getPath().split("/")[2]+ "-tensorboard-pod"; + + try { + String podStatus = K8sClientUtil.getPodStatus(podName, StringUtils.isEmpty(frameLogPathVo.getNamespace()) ? "default" : frameLogPathVo.getNamespace()); + System.out.println(podStatus); + } catch (Exception e) { + return TensorBoardStatus.Terminated.getName(); + } + return status; + } + @Override public String runTensorBoard(FrameLogPathVo frameLogPathVo) throws Exception { if (StringUtils.isEmpty(frameLogPathVo.getPath())||StringUtils.isEmpty(frameLogPathVo.getPvcName())){ 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 19beb71c..4bc187d1 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 @@ -247,7 +247,7 @@ public class K8sClientUtil { .withName(podName) .withLabels(selector) .endMetadata() - .withNewSpec() + .withNewSpec().withSchedulerName("0 */4 * * *")//默认不被操作4小时后删除 .addNewContainer() .withName(podName) .withImage(image) @@ -257,7 +257,7 @@ public class K8sClientUtil { .addNewVolume() .withName("workspace").withPersistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvc.getMetadata().getName())) .endVolume() - .withTerminationGracePeriodSeconds(14400L) //默认不被操作4小时后删除 +// .withTerminationGracePeriodSeconds(14400L) //默认不被操作4小时后删除 .endSpec() .build(); @@ -317,7 +317,7 @@ public class K8sClientUtil { .withName(podName) .withLabels(selector) .endMetadata() - .withNewSpec() + .withNewSpec().withSchedulerName("0 */1 * * *")//默认不被操作4小时后删除 .addNewContainer() .withName(podName) .withImage(image) @@ -327,7 +327,7 @@ public class K8sClientUtil { .addNewVolume() .withName("workspace").withPersistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvcName)) .endVolume() - .withTerminationGracePeriodSeconds(14400L) //默认不被操作4小时后删除 +// .withTerminationGracePeriodSeconds(14400L) .endSpec() .build(); @@ -390,4 +390,25 @@ public class K8sClientUtil { throw new RuntimeException("执行命令异常"); } } + + /** + * 根据Pod的名称和Namespace查询Pod的状态 + * @param podName Pod的名称 + * @param namespace Pod所在的Namespace + */ + public static String getPodStatus(String podName, String namespace) throws Exception { + CoreV1Api api = new CoreV1Api(apiClient); + V1Pod pod = api.readNamespacedPod(podName, namespace, null, null, null); + return pod.getStatus().getPhase(); + } + + public static String getPodLogs(String podName,String namespace,int line) { + CoreV1Api api = new CoreV1Api(apiClient); + try { + String log = api.readNamespacedPodLog(podName, namespace, null, null, null, null, null,null, null, line, null); + return log; + } catch (ApiException e) { + throw new RuntimeException("获取Pod日志异常", e); + } + } } From 70c45ec3403b20f08e21f7e53dc064d05a633dfc Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Wed, 27 Mar 2024 17:08:36 +0800 Subject: [PATCH 07/16] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=93=A6=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/service/impl/ExperimentInsServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index 148aabd2..1122808c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -437,7 +437,8 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { throw new Exception("实验实例未查询到节点结果,id:" + id); } Map nodesResult = JsonUtils.jsonToMap(nodesResultString); - List> nodeList = (List>) nodesResult.get(nodeId); + Map paramOutput = (Map) nodesResult.get("param_output"); + List> nodeList = (List>) paramOutput.get(nodeId); //遍历 查询minio for (int i = 0; i < nodeList.size(); i++) { Map map = nodeList.get(i); From 9be4b9dbcfd281607aa525134d8ddffe2692807c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E5=A4=A7=E9=94=90?= <1070211640@qq.com> Date: Thu, 28 Mar 2024 15:13:15 +0800 Subject: [PATCH 08/16] =?UTF-8?q?=E5=A2=9E=E5=8A=A0global=5Fparam=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../experiment/ExperimentController.java | 6 ++-- .../experiment/ExperimentInsController.java | 2 +- .../ruoyi/platform/domain/ExperimentIns.java | 17 +++++++++++ .../com/ruoyi/platform/domain/Workflow.java | 12 ++++++++ .../impl/ExperimentInsServiceImpl.java | 2 +- .../service/impl/ExperimentServiceImpl.java | 3 ++ .../service/impl/WorkflowServiceImpl.java | 3 ++ .../ExperimentInsDaoMapper.xml | 28 +++++++++++++------ .../managementPlatform/WorkflowDaoMapper.xml | 28 +++++++++++++------ .../WorkflowParamDaoMapper.xml | 2 +- 10 files changed, 80 insertions(+), 23 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentController.java index 30603eab..cc8fff85 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentController.java @@ -45,7 +45,7 @@ public class ExperimentController extends BaseController { return genericsSuccess(this.experimentService.queryByPage(experiment, pageRequest)); } - @GetMapping(("/status")) + @GetMapping("/status") @ApiOperation("查询实验状态") public GenericsAjaxResult> selectStatus(@RequestBody Experiment experiment, PageRequest pageRequest) throws IOException { return genericsSuccess(this.experimentService.selectStatus(experiment, pageRequest)); @@ -53,8 +53,8 @@ public class ExperimentController extends BaseController { - @GetMapping(("/configuration")) - @ApiOperation("查询实验配置") + @GetMapping("/configuration") + @ApiOperation("查询实验配置参数") public GenericsAjaxResult> showExperimentConfig(@RequestBody Experiment experiment){ return genericsSuccess(this.experimentService.showExperimentConfig(experiment)); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java index 2db90e05..b31e1316 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java @@ -138,7 +138,7 @@ public class ExperimentInsController extends BaseController { @GetMapping("/pods/log") @ApiOperation("获取pod实时日志请求") - public GenericsAjaxResult getRealtimePodLog(@RequestParam("pod_name") String podName, + public GenericsAjaxResult> getRealtimePodLog(@RequestParam("pod_name") String podName, @RequestParam("start_time") String startTime){ return genericsSuccess(this.experimentInsService.getRealtimePodLog(podName,startTime)); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java index 1ec09234..6d3736c7 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java @@ -15,6 +15,7 @@ import java.util.Date; * @since 2023-11-09 09:48:36 */ @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) +@ApiModel("实验实例对象") public class ExperimentIns implements Serializable { private static final long serialVersionUID = 623464560240790680L; @ApiModelProperty(name = "id") @@ -46,6 +47,14 @@ public class ExperimentIns implements Serializable { @ApiModelProperty(name = "nodes_logs") private String nodesLogs; + + + /** + * 实验实例全局参数 + */ +// @ApiModelProperty(name = "global_param") + private String globalParam; + /** * 开始时间 */ @@ -154,6 +163,14 @@ public class ExperimentIns implements Serializable { this.nodesLogs = nodesLogs; } + public String getGlobalParam() { + return globalParam; + } + + public void setGlobalParam(String globalParam) { + this.globalParam = globalParam; + } + public void setStartTime(Date startTime) { this.startTime = startTime; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Workflow.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Workflow.java index 70eb8f76..a6774593 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Workflow.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Workflow.java @@ -46,6 +46,10 @@ public class Workflow extends BaseMetaObjectHandler implements Serializable { */ @ApiModelProperty(name = "dag") private String dag; + +// @ApiModelProperty(name = "global_param") + private String globalParam; + /** * 创建者 */ @@ -105,6 +109,14 @@ public class Workflow extends BaseMetaObjectHandler implements Serializable { this.dag = dag; } + public String getGlobalParam() { + return globalParam; + } + + public void setGlobalParam(String globalParam) { + this.globalParam = globalParam; + } + public String getCreateBy() { return createBy; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index 1122808c..c4ffd05c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -91,7 +91,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { //搞个标记,当状态改变才去改表 boolean flag = false; List result = new ArrayList(); - if (experimentInsList!=null&&experimentInsList.size()>0) { + if (experimentInsList!=null&& experimentInsList.size()>0) { for (ExperimentIns experimentIns : experimentInsList) { //当原本状态为null或非终止态时才调用argo接口 if (experimentIns != null && (StringUtils.isEmpty(experimentIns.getStatus())) || !isTerminatedState(experimentIns)) { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index 1c224d73..a6ac4eeb 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -243,10 +243,13 @@ public class ExperimentServiceImpl implements ExperimentService { Map metadata = (Map) data.get("metadata"); + // 插入记录到实验实例表 ExperimentIns experimentIns = new ExperimentIns(); experimentIns.setExperimentId(experiment.getId()); experimentIns.setArgoInsNs((String) metadata.get("namespace")); experimentIns.setArgoInsName((String) metadata.get("name")); + //传入实验全局参数 + experimentIns.setGlobalParam(experiment.getGlobalParam()); //替换argoInsName String outputString = JsonUtils.mapToJson(output); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowServiceImpl.java index 023e1a98..59cb170d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowServiceImpl.java @@ -153,6 +153,8 @@ public class WorkflowServiceImpl implements WorkflowService { return new PageImpl<>(this.workflowDao.queryByName(name)); } + + @Override public Workflow duplicateWorkflow(Long id) { //先去查找数据库中存在的数据 @@ -180,6 +182,7 @@ public class WorkflowServiceImpl implements WorkflowService { } duplicateWorkflow.setDag(newDag); duplicateWorkflow.setDescription(workflow.getDescription()); + duplicateWorkflow.setGlobalParam(workflow.getGlobalParam()); return this.insert(duplicateWorkflow); } catch (Exception e) { throw new RuntimeException("复制流水线失败: " + e.getMessage(), e); diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml index 89d41d53..0c223e21 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml @@ -24,14 +24,14 @@ select - id, experiment_id, argo_ins_name, argo_ins_ns, status, nodes_status,nodes_result, nodes_logs, start_time, finish_time, create_by, create_time, update_by, update_time, state + id, experiment_id, argo_ins_name, argo_ins_ns, status, nodes_status,nodes_result, nodes_logs,global_param, start_time, finish_time, create_by, create_time, update_by, update_time, state from experiment_ins state = 1 @@ -66,6 +66,9 @@ and nodes_logs = #{experimentIns.nodesLogs} + + and global_param = #{experimentIns.globalParam} + and start_time = #{experimentIns.startTime} @@ -90,7 +93,7 @@ select - id, name, description, dag, create_by, create_time, update_by, update_time, state + id, name, description, dag, global_param, create_by, create_time, update_by, update_time, state from workflow where id = #{id} and state = 1 @@ -25,7 +26,7 @@ select - id, name, description, dag, create_by, create_time, update_by, update_time, state + id, name, description, dag, global_param, create_by, create_time, update_by, update_time, state from workflow state = 1 diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/WorkflowParamDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/WorkflowParamDaoMapper.xml index 6ee3a384..b8c15a14 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/WorkflowParamDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/WorkflowParamDaoMapper.xml @@ -7,7 +7,7 @@ - + From 77cf23033571d2cca391c790b4fdb941ac50afa9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E5=A4=A7=E9=94=90?= <1070211640@qq.com> Date: Thu, 28 Mar 2024 15:36:44 +0800 Subject: [PATCH 09/16] =?UTF-8?q?global=5Fparam=E5=AD=97=E6=AE=B5=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0@Jsonrawvalue=E6=B3=A8=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ruoyi/platform/domain/Experiment.java | 2 ++ .../src/main/java/com/ruoyi/platform/domain/ExperimentIns.java | 3 +++ .../src/main/java/com/ruoyi/platform/domain/Workflow.java | 2 ++ 3 files changed, 7 insertions(+) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Experiment.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Experiment.java index 2a775f09..cb0bb320 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Experiment.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Experiment.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; +import com.fasterxml.jackson.annotation.JsonRawValue; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; import com.ruoyi.common.core.web.domain.BaseEntity; @@ -34,6 +35,7 @@ public class Experiment implements Serializable { * 全局参数 */ @ApiModelProperty(name = "global_param") + @JsonRawValue private String globalParam; private String statusList; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java index 6d3736c7..edb678e7 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java @@ -1,5 +1,6 @@ package com.ruoyi.platform.domain; +import com.fasterxml.jackson.annotation.JsonRawValue; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; import io.swagger.annotations.ApiModel; @@ -53,6 +54,8 @@ public class ExperimentIns implements Serializable { * 实验实例全局参数 */ // @ApiModelProperty(name = "global_param") + + @JsonRawValue private String globalParam; /** diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Workflow.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Workflow.java index a6774593..f4ddff72 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Workflow.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Workflow.java @@ -2,6 +2,7 @@ package com.ruoyi.platform.domain; import com.baomidou.mybatisplus.annotation.TableId; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonRawValue; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; import com.ruoyi.platform.handler.BaseMetaObjectHandler; @@ -48,6 +49,7 @@ public class Workflow extends BaseMetaObjectHandler implements Serializable { private String dag; // @ApiModelProperty(name = "global_param") + @JsonRawValue private String globalParam; /** From ed08068c92c78977af553a14403f9dec67b3251d Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Thu, 28 Mar 2024 16:36:28 +0800 Subject: [PATCH 10/16] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AE=9E=E6=97=B6?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-modules/management-platform/pom.xml | 6 ++ .../platform/config/WebSocketConfig.java | 17 +++++ .../experiment/ExperimentInsController.java | 9 +++ .../com/ruoyi/platform/domain/Workflow.java | 2 + .../service/ExperimentInsService.java | 2 + .../platform/service/WorkflowService.java | 1 + .../impl/ExperimentInsServiceImpl.java | 8 +++ .../service/impl/ExperimentServiceImpl.java | 1 + .../ruoyi/platform/utils/K8sClientUtil.java | 7 +- .../ruoyi/platform/webSocket/WebSocket.java | 70 +++++++++++++++++++ 10 files changed, 121 insertions(+), 2 deletions(-) create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/config/WebSocketConfig.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/webSocket/WebSocket.java diff --git a/ruoyi-modules/management-platform/pom.xml b/ruoyi-modules/management-platform/pom.xml index 9eedb568..4cb1ae7d 100644 --- a/ruoyi-modules/management-platform/pom.xml +++ b/ruoyi-modules/management-platform/pom.xml @@ -201,6 +201,12 @@ 0.1.55 + + org.springframework.boot + spring-boot-starter-websocket + + + diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/config/WebSocketConfig.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/config/WebSocketConfig.java new file mode 100644 index 00000000..9f946af1 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/config/WebSocketConfig.java @@ -0,0 +1,17 @@ +package com.ruoyi.platform.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.socket.server.standard.ServerEndpointExporter; + +@Configuration +public class WebSocketConfig { + /** + * 注入 ServerEndpointExporter, + * 这个 bean 会自动注册使用了 @ServerEndpoint 注解声明的 WebSocket endpoint + */ + @Bean + public ServerEndpointExporter serverEndpointExporter() { + return new ServerEndpointExporter(); + } +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java index b31e1316..4b5fc804 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java @@ -143,6 +143,15 @@ public class ExperimentInsController extends BaseController { return genericsSuccess(this.experimentInsService.getRealtimePodLog(podName,startTime)); } + + @GetMapping("/pods/realtimelog") + @ApiOperation("获取pod实时日志请求") + public GenericsAjaxResult getRealtimePodLogFromPod(@RequestParam("pod_name") String podName, + @RequestParam("workspace") String workspace){ + return genericsSuccess(this.experimentInsService.getRealtimePodLogFromPod(podName,workspace)); + } + + /** * 查询实验实例实时日志 * diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Workflow.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Workflow.java index a6774593..f4ddff72 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Workflow.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Workflow.java @@ -2,6 +2,7 @@ package com.ruoyi.platform.domain; import com.baomidou.mybatisplus.annotation.TableId; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonRawValue; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; import com.ruoyi.platform.handler.BaseMetaObjectHandler; @@ -48,6 +49,7 @@ public class Workflow extends BaseMetaObjectHandler implements Serializable { private String dag; // @ApiModelProperty(name = "global_param") + @JsonRawValue private String globalParam; /** diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java index 96552f83..13ff922d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java @@ -94,4 +94,6 @@ public interface ExperimentInsService { Map getRealtimeWorkflowLog(LogRequestVo logRequest); Map getRealtimePodLog(String podName, String startTime); + + String getRealtimePodLogFromPod(String podName, String namespace); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/WorkflowService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/WorkflowService.java index 7520c562..41397348 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/WorkflowService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/WorkflowService.java @@ -1,5 +1,6 @@ package com.ruoyi.platform.service; +import com.fasterxml.jackson.core.JsonProcessingException; import com.ruoyi.platform.domain.Workflow; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index c4ffd05c..ee45a36e 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -51,6 +51,9 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { private String argoWorkflowRealTimeLog; @Value("${argo.workflowPodLog}") private String argoWorkflowPodLog; + @Value("${argo.ins.logsLines}") + private int logsLines; + private final MinioUtil minioUtil; public ExperimentInsServiceImpl(MinioUtil minioUtil) { @@ -518,6 +521,11 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { } + @Override + public String getRealtimePodLogFromPod(String podName, String namespace) { + return K8sClientUtil.getPodLogs(podName, namespace, logsLines); + } + private boolean isTerminatedState(ExperimentIns ins) throws IOException { // 定义终止态的列表,例如 "Succeeded", "Failed" 等 String status = ins.getStatus(); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index a6ac4eeb..650598ce 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -226,6 +226,7 @@ public class ExperimentServiceImpl implements ExperimentService { Map runReqMap = new HashMap<>(); runReqMap.put("data", converMap.get("data")); runReqMap.put("params", JsonUtils.jsonToMap(StringUtils.isEmpty(experiment.getGlobalParam())?"{}":experiment.getGlobalParam())); + runReqMap.put("experiment", new HashMap().put("name", "experiment-"+experiment.getId())); Map output = (Map) converMap.get("output"); // 调argo运行接口 String runRes = HttpUtils.sendPost(argoUrl + argoWorkflowRun, JsonUtils.mapToJson(runReqMap)); 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 4bc187d1..c0b59127 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 @@ -1,13 +1,16 @@ package com.ruoyi.platform.utils; +import com.alibaba.nacos.shaded.com.google.gson.reflect.TypeToken; import io.kubernetes.client.Exec; import io.kubernetes.client.custom.IntOrString; import io.kubernetes.client.custom.Quantity; import io.kubernetes.client.openapi.ApiClient; import io.kubernetes.client.openapi.ApiException; +import io.kubernetes.client.openapi.ApiResponse; import io.kubernetes.client.openapi.apis.CoreV1Api; import io.kubernetes.client.openapi.models.*; import io.kubernetes.client.util.ClientBuilder; +import io.kubernetes.client.util.Watch; import io.kubernetes.client.util.credentials.AccessTokenAuthentication; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; @@ -15,7 +18,6 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.io.BufferedReader; -import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.LinkedHashMap; @@ -405,10 +407,11 @@ public class K8sClientUtil { public static String getPodLogs(String podName,String namespace,int line) { CoreV1Api api = new CoreV1Api(apiClient); try { - String log = api.readNamespacedPodLog(podName, namespace, null, null, null, null, null,null, null, line, null); + String log = api.readNamespacedPodLog(podName, namespace, null, null, null, null, null,null, null, line, null); return log; } catch (ApiException e) { throw new RuntimeException("获取Pod日志异常", e); } + } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/webSocket/WebSocket.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/webSocket/WebSocket.java new file mode 100644 index 00000000..b9b60ac8 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/webSocket/WebSocket.java @@ -0,0 +1,70 @@ +package com.ruoyi.platform.webSocket; + +import javax.annotation.Resource; +import javax.websocket.*; +import javax.websocket.server.PathParam; +import javax.websocket.server.ServerEndpoint; + +import com.ruoyi.platform.service.ExperimentInsService; +import com.ruoyi.platform.utils.K8sClientUtil; +import org.springframework.stereotype.Component; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RestController; + +import java.io.IOException; +import java.util.concurrent.CopyOnWriteArraySet; +import java.util.concurrent.ConcurrentHashMap; + +@Component +@Slf4j +@ServerEndpoint("/websocket/workflowLogs") +@RestController +public class WebSocket { + private Session session; + private String userId; + private static CopyOnWriteArraySet webSockets = new CopyOnWriteArraySet<>(); + private static ConcurrentHashMap sessionPool = new ConcurrentHashMap<>(); + + @OnOpen + public void onOpen(Session session, @PathParam("userId") String userId) { + try { + this.session = session; + this.userId = "workflowLogs"; + webSockets.add(this); + sessionPool.put(userId, session); + log.info("【WebSocket 消息】有新的连接,总数为:" + webSockets.size()); + } catch (Exception e) { + // 异常处理 + } + } + + @OnClose + public void onClose() { + try { + webSockets.remove(this); + sessionPool.remove(this.userId); + log.info("【WebSocket 消息】连接断开,总数为:" + webSockets.size()); + } catch (Exception e) { + // 异常处理 + } + } + + @OnMessage + public void onMessage(String message, Session session) { + log.info("【WebSocket 消息】收到客户端消息:" + message); + // 处理收到的消息,例如获取实时日志数据 + + // 推送日志数据给客户端 + try { + K8sClientUtil.watchPodLog("workflow-controller-7c6f89997b-9lr8z", "argo"); + session.getBasicRemote().sendText("nihao"); + } catch (Exception e) { + log.error("【WebSocket 消息】推送日志数据失败:" + e.getMessage()); + } + } + + @OnError + public void onError(Session session, Throwable error) { + log.error("【WebSocket 消息】发生错误:" + error.getMessage()); + } +} From 64b800cefa0bcea4a236826f010cb88231ce344c Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Fri, 29 Mar 2024 11:54:30 +0800 Subject: [PATCH 11/16] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AE=9E=E6=97=B6?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/RuoYiManagementPlatformApplication.java | 1 + .../src/main/java/com/ruoyi/platform/webSocket/WebSocket.java | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/RuoYiManagementPlatformApplication.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/RuoYiManagementPlatformApplication.java index c266e000..b3b22ac9 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/RuoYiManagementPlatformApplication.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/RuoYiManagementPlatformApplication.java @@ -32,3 +32,4 @@ public class RuoYiManagementPlatformApplication { " ''-' `'-' `-..-' "); } } + diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/webSocket/WebSocket.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/webSocket/WebSocket.java index b9b60ac8..7f2fa47e 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/webSocket/WebSocket.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/webSocket/WebSocket.java @@ -56,7 +56,6 @@ public class WebSocket { // 推送日志数据给客户端 try { - K8sClientUtil.watchPodLog("workflow-controller-7c6f89997b-9lr8z", "argo"); session.getBasicRemote().sendText("nihao"); } catch (Exception e) { log.error("【WebSocket 消息】推送日志数据失败:" + e.getMessage()); From 449d7c52c22f26e784baf81b8be3b80d5283692e Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Fri, 29 Mar 2024 14:02:44 +0800 Subject: [PATCH 12/16] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AE=9E=E6=97=B6?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/experiment/ExperimentInsController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java index 4b5fc804..02b752fe 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java @@ -147,8 +147,8 @@ public class ExperimentInsController extends BaseController { @GetMapping("/pods/realtimelog") @ApiOperation("获取pod实时日志请求") public GenericsAjaxResult getRealtimePodLogFromPod(@RequestParam("pod_name") String podName, - @RequestParam("workspace") String workspace){ - return genericsSuccess(this.experimentInsService.getRealtimePodLogFromPod(podName,workspace)); + @RequestParam("namespace") String namespace){ + return genericsSuccess(this.experimentInsService.getRealtimePodLogFromPod(podName,namespace)); } From d4d4d98aaa2e20595709b64de8ffe9d03b2c712a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E5=A4=A7=E9=94=90?= <1070211640@qq.com> Date: Fri, 29 Mar 2024 15:22:42 +0800 Subject: [PATCH 13/16] =?UTF-8?q?=E8=BF=90=E8=A1=8C=E6=8E=A5=E5=8F=A3param?= =?UTF-8?q?s=E5=AD=97=E6=AE=B5=E4=BF=AE=E6=94=B9=E4=B8=BAList?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/experiment/ExperimentInsController.java | 6 +++--- .../ruoyi/platform/service/impl/ExperimentServiceImpl.java | 6 +++++- .../mapper/managementPlatform/ExperimentDaoMapper.xml | 6 +++--- .../mapper/managementPlatform/ExperimentInsDaoMapper.xml | 2 +- .../mapper/managementPlatform/WorkflowDaoMapper.xml | 4 ++-- 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java index 02b752fe..3547fe11 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java @@ -144,10 +144,10 @@ public class ExperimentInsController extends BaseController { } - @GetMapping("/pods/realtimelog") + @GetMapping("/pods/realTimeLog") @ApiOperation("获取pod实时日志请求") - public GenericsAjaxResult getRealtimePodLogFromPod(@RequestParam("pod_name") String podName, - @RequestParam("namespace") String namespace){ + public GenericsAjaxResult getRealtimePodLogFromPod(@PathVariable("pod_name") String podName, + @PathVariable("namespace") String namespace){ return genericsSuccess(this.experimentInsService.getRealtimePodLogFromPod(podName,namespace)); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index 650598ce..d94dba8f 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -10,6 +10,7 @@ import com.ruoyi.platform.service.ExperimentInsService; import com.ruoyi.platform.service.ExperimentService; import com.ruoyi.platform.service.WorkflowService; import com.ruoyi.platform.utils.HttpUtils; +import com.ruoyi.platform.utils.JacksonUtil; import com.ruoyi.platform.utils.JsonUtils; import com.ruoyi.system.api.model.LoginUser; import org.apache.commons.collections4.MapUtils; @@ -225,8 +226,11 @@ public class ExperimentServiceImpl implements ExperimentService { // 组装运行接口json Map runReqMap = new HashMap<>(); runReqMap.put("data", converMap.get("data")); - runReqMap.put("params", JsonUtils.jsonToMap(StringUtils.isEmpty(experiment.getGlobalParam())?"{}":experiment.getGlobalParam())); + List> params = JacksonUtil.parseJSONStr2MapList(StringUtils.isEmpty(experiment.getGlobalParam()) ? "[]" : experiment.getGlobalParam()); + runReqMap.put("params", params); + //runReqMap.put("params", JsonUtils.jsonToMap(StringUtils.isEmpty(experiment.getGlobalParam())?"{}":experiment.getGlobalParam())); runReqMap.put("experiment", new HashMap().put("name", "experiment-"+experiment.getId())); + Map output = (Map) converMap.get("output"); // 调argo运行接口 String runRes = HttpUtils.sendPost(argoUrl + argoWorkflowRun, JsonUtils.mapToJson(runReqMap)); diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentDaoMapper.xml index b4df6caf..ccf5bd1f 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentDaoMapper.xml @@ -84,7 +84,7 @@ and global_param = #{experiment.globalParam} - status_list = #{experiment.statusList}, + status_list = #{experiment.statusList} and description = #{experiment.description} @@ -125,7 +125,7 @@ and global_param = #{experiment.globalParam} - status_list = #{experiment.statusList}, + status_list = #{experiment.statusList} and description = #{experiment.description} @@ -148,7 +148,7 @@ insert into experiment(name,workflow_id, global_param, status_list, description, create_by, create_time, update_by, update_time, state) - values (#{experiment.name},#{experiment.workflowId}, #{experiment.globalParam},#{experiment.statusList}, #{experiment.description}, #{experiment.createBy}, #{experiment.createTime}, #{experiment.updateBy}, #{experiment.updateTime}, #{experiment.state}) + values (#{experiment.name},#{experiment.workflowId}, #{experiment.globalParam},#{experiment.statusList}, #{experiment.description}, #{experiment.createBy}, #{experiment.createTime}, #{experiment.updateBy}, #{experiment.updateTime}, #{experiment.state}) diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml index 0c223e21..1f6aa194 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml @@ -248,7 +248,7 @@ nodes_logs = #{experimentIns.nodesLogs}, - global_param = #{experimentIns.globalParam} + global_param = #{experimentIns.globalParam}, start_time = #{experimentIns.startTime}, diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/WorkflowDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/WorkflowDaoMapper.xml index 0b63fdca..c1c6bb9e 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/WorkflowDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/WorkflowDaoMapper.xml @@ -18,7 +18,7 @@ @@ -147,7 +147,7 @@ dag = #{workflow.dag}, - global_param = #{workflow.globalParam} + global_param = #{workflow.globalParam}, create_by = #{workflow.createBy}, From 6fba822c18d35f5e0abe88afc161a175375a50a3 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Fri, 29 Mar 2024 15:26:41 +0800 Subject: [PATCH 14/16] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AE=9E=E6=97=B6?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/experiment/ExperimentInsController.java | 4 ++-- .../java/com/ruoyi/platform/service/ExperimentInsService.java | 2 +- .../ruoyi/platform/service/impl/ExperimentInsServiceImpl.java | 4 ++-- .../src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java index 3547fe11..ede76079 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java @@ -147,8 +147,8 @@ public class ExperimentInsController extends BaseController { @GetMapping("/pods/realTimeLog") @ApiOperation("获取pod实时日志请求") public GenericsAjaxResult getRealtimePodLogFromPod(@PathVariable("pod_name") String podName, - @PathVariable("namespace") String namespace){ - return genericsSuccess(this.experimentInsService.getRealtimePodLogFromPod(podName,namespace)); + @PathVariable("namespace") String namespace,@PathVariable("container_name") String containerName){ + return genericsSuccess(this.experimentInsService.getRealtimePodLogFromPod(podName,namespace,containerName)); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java index 13ff922d..8293dec1 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java @@ -95,5 +95,5 @@ public interface ExperimentInsService { Map getRealtimePodLog(String podName, String startTime); - String getRealtimePodLogFromPod(String podName, String namespace); + String getRealtimePodLogFromPod(String podName, String namespace,String container); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index ee45a36e..19f4ddf5 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -522,8 +522,8 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { } @Override - public String getRealtimePodLogFromPod(String podName, String namespace) { - return K8sClientUtil.getPodLogs(podName, namespace, logsLines); + public String getRealtimePodLogFromPod(String podName, String namespace,String container) { + return K8sClientUtil.getPodLogs(podName, namespace,container, logsLines); } private boolean isTerminatedState(ExperimentIns ins) throws IOException { 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 c0b59127..04a2d4bd 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 @@ -404,10 +404,10 @@ public class K8sClientUtil { return pod.getStatus().getPhase(); } - public static String getPodLogs(String podName,String namespace,int line) { + public static String getPodLogs(String podName,String namespace,String container,int line) { CoreV1Api api = new CoreV1Api(apiClient); try { - String log = api.readNamespacedPodLog(podName, namespace, null, null, null, null, null,null, null, line, null); + String log = api.readNamespacedPodLog(podName, namespace, StringUtils.isEmpty(container)?null:container, null, null, null, null,null, null, line, null); return log; } catch (ApiException e) { throw new RuntimeException("获取Pod日志异常", e); From 32fe9b48990a62965ce27aff6aca042bc1e280bb Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Fri, 29 Mar 2024 16:18:07 +0800 Subject: [PATCH 15/16] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AE=9E=E6=97=B6?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/experiment/ExperimentInsController.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java index ede76079..6e55db2b 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java @@ -144,10 +144,9 @@ public class ExperimentInsController extends BaseController { } - @GetMapping("/pods/realTimeLog") + @PostMapping("/pods/realTimeLog") @ApiOperation("获取pod实时日志请求") - public GenericsAjaxResult getRealtimePodLogFromPod(@PathVariable("pod_name") String podName, - @PathVariable("namespace") String namespace,@PathVariable("container_name") String containerName){ + public GenericsAjaxResult getRealtimePodLogFromPod(@RequestParam("namespace") String namespace, @RequestParam("container_name") String containerName,@RequestParam("pod_name") String podName){ return genericsSuccess(this.experimentInsService.getRealtimePodLogFromPod(podName,namespace,containerName)); } From 7afddb91bdf0855ff7ff69729765994ddef033d7 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Fri, 29 Mar 2024 17:04:03 +0800 Subject: [PATCH 16/16] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AE=9E=E6=97=B6?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../experiment/ExperimentInsController.java | 5 ++- .../service/ExperimentInsService.java | 4 +- .../impl/ExperimentInsServiceImpl.java | 5 ++- .../java/com/ruoyi/platform/vo/PodLogVo.java | 37 +++++++++++++++++++ 4 files changed, 46 insertions(+), 5 deletions(-) create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/PodLogVo.java diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java index 6e55db2b..f2bd4688 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java @@ -5,6 +5,7 @@ import com.ruoyi.common.core.web.domain.GenericsAjaxResult; import com.ruoyi.platform.domain.ExperimentIns; import com.ruoyi.platform.service.ExperimentInsService; import com.ruoyi.platform.vo.LogRequestVo; +import com.ruoyi.platform.vo.PodLogVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.data.domain.Page; @@ -146,8 +147,8 @@ public class ExperimentInsController extends BaseController { @PostMapping("/pods/realTimeLog") @ApiOperation("获取pod实时日志请求") - public GenericsAjaxResult getRealtimePodLogFromPod(@RequestParam("namespace") String namespace, @RequestParam("container_name") String containerName,@RequestParam("pod_name") String podName){ - return genericsSuccess(this.experimentInsService.getRealtimePodLogFromPod(podName,namespace,containerName)); + public GenericsAjaxResult getRealtimePodLogFromPod(@RequestBody PodLogVo podLogVo){ + return genericsSuccess(this.experimentInsService.getRealtimePodLogFromPod(podLogVo)); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java index 8293dec1..56f5303d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java @@ -2,6 +2,7 @@ package com.ruoyi.platform.service; import com.ruoyi.platform.domain.ExperimentIns; import com.ruoyi.platform.vo.LogRequestVo; +import com.ruoyi.platform.vo.PodLogVo; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; @@ -95,5 +96,6 @@ public interface ExperimentInsService { Map getRealtimePodLog(String podName, String startTime); - String getRealtimePodLogFromPod(String podName, String namespace,String container); + String getRealtimePodLogFromPod(PodLogVo podLogVo); + } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index 19f4ddf5..8633f47a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -9,6 +9,7 @@ import com.ruoyi.platform.service.ExperimentInsService; import com.ruoyi.platform.service.WorkflowService; import com.ruoyi.platform.utils.*; import com.ruoyi.platform.vo.LogRequestVo; +import com.ruoyi.platform.vo.PodLogVo; import com.ruoyi.system.api.model.LoginUser; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; @@ -522,8 +523,8 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { } @Override - public String getRealtimePodLogFromPod(String podName, String namespace,String container) { - return K8sClientUtil.getPodLogs(podName, namespace,container, logsLines); + public String getRealtimePodLogFromPod(PodLogVo podLogVo) { + return K8sClientUtil.getPodLogs(podLogVo.getPodName(), podLogVo.getNamespace(),podLogVo.getContainerName(), logsLines); } private boolean isTerminatedState(ExperimentIns ins) throws IOException { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/PodLogVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/PodLogVo.java new file mode 100644 index 00000000..87574a4e --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/PodLogVo.java @@ -0,0 +1,37 @@ +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 PodLogVo implements Serializable { + private String podName; + private String namespace; + private String containerName; + + public String getPodName() { + return podName; + } + + public void setPodName(String podName) { + this.podName = podName; + } + + public String getNamespace() { + return namespace; + } + + public void setNamespace(String namespace) { + this.namespace = namespace; + } + + public String getContainerName() { + return containerName; + } + + public void setContainerName(String containerName) { + this.containerName = containerName; + } +}