| @@ -44,7 +44,8 @@ public class ExperimentController { | |||||
| @GetMapping(("/status")) | @GetMapping(("/status")) | ||||
| @ApiOperation("查询实验状态") | @ApiOperation("查询实验状态") | ||||
| public Page<Experiment> selectStatus(@RequestBody Experiment experiment, PageRequest pageRequest){ | |||||
| public Page<Experiment> selectStatus(Experiment experiment, int page,int size){ | |||||
| PageRequest pageRequest = PageRequest.of(page,size); | |||||
| return this.experimentService.selectStatus(experiment, pageRequest); | return this.experimentService.selectStatus(experiment, pageRequest); | ||||
| } | } | ||||
| @@ -115,7 +116,7 @@ public class ExperimentController { | |||||
| */ | */ | ||||
| @PutMapping("/experiments/{id}") | @PutMapping("/experiments/{id}") | ||||
| @ApiOperation("运行实验") | @ApiOperation("运行实验") | ||||
| public ResponseEntity<Experiment> runExperiment(@PathVariable("id") Integer id) { | |||||
| public ResponseEntity<Experiment> runExperiment(@PathVariable("id") Integer id) throws Exception { | |||||
| return ResponseEntity.ok(this.experimentService.runExperiment(id)); | return ResponseEntity.ok(this.experimentService.runExperiment(id)); | ||||
| } | } | ||||
| @@ -100,6 +100,7 @@ public class ExperimentInsController { | |||||
| @ApiOperation("终止实验实例") | @ApiOperation("终止实验实例") | ||||
| public boolean terminateExperimentIns(@PathVariable("id") Integer id) { | public boolean terminateExperimentIns(@PathVariable("id") Integer id) { | ||||
| return this.experimentInsService.terminateExperimentIns(id); | return this.experimentInsService.terminateExperimentIns(id); | ||||
| } | } | ||||
| /** | /** | ||||
| @@ -41,6 +41,20 @@ public class ExperimentIns implements Serializable { | |||||
| private String nodesStatus; | private String nodesStatus; | ||||
| @ApiModelProperty(name = "nodes_logs") | @ApiModelProperty(name = "nodes_logs") | ||||
| private String nodesLogs; | private String nodesLogs; | ||||
| /** | |||||
| * 开始时间 | |||||
| */ | |||||
| @ApiModelProperty(name = "start_time") | |||||
| private Date startTime; | |||||
| /** | |||||
| * 结束时间 | |||||
| */ | |||||
| @ApiModelProperty(name = "finish_time") | |||||
| private Date finishTime; | |||||
| /** | /** | ||||
| * 创建者 | * 创建者 | ||||
| */ | */ | ||||
| @@ -127,6 +141,19 @@ public class ExperimentIns implements Serializable { | |||||
| this.nodesLogs = nodesLogs; | this.nodesLogs = nodesLogs; | ||||
| } | } | ||||
| public void setStartTime(Date startTime) { | |||||
| this.startTime = startTime; | |||||
| } | |||||
| public Date getStartTime() {return startTime;} | |||||
| public void setFinishTime(Date finishTime) { | |||||
| this.finishTime = finishTime; | |||||
| } | |||||
| public Date getFinishTime() {return finishTime;} | |||||
| public String getCreateBy() { | public String getCreateBy() { | ||||
| return createBy; | return createBy; | ||||
| } | } | ||||
| @@ -55,6 +55,8 @@ public interface DatasetVersionDao { | |||||
| */ | */ | ||||
| int insertBatch(@Param("entities") List<DatasetVersion> entities); | int insertBatch(@Param("entities") List<DatasetVersion> entities); | ||||
| /** | /** | ||||
| * 批量新增或按主键更新数据(MyBatis原生foreach方法) | * 批量新增或按主键更新数据(MyBatis原生foreach方法) | ||||
| * | * | ||||
| @@ -83,5 +85,7 @@ public interface DatasetVersionDao { | |||||
| List<DatasetVersion> queryByDatasetId(Integer datasetId); | List<DatasetVersion> queryByDatasetId(Integer datasetId); | ||||
| DatasetVersion queryByDatasetVersion(DatasetVersion datasetVersion); | DatasetVersion queryByDatasetVersion(DatasetVersion datasetVersion); | ||||
| } | } | ||||
| @@ -37,7 +37,7 @@ public interface ExperimentInsDao { | |||||
| * @param experimentIns 查询条件 | * @param experimentIns 查询条件 | ||||
| * @return 总行数 | * @return 总行数 | ||||
| */ | */ | ||||
| long count(@Param("experimentIns")ExperimentIns experimentIns); | |||||
| long count(@Param("experimentIns") ExperimentIns experimentIns); | |||||
| /** | /** | ||||
| * 新增数据 | * 新增数据 | ||||
| @@ -45,7 +45,7 @@ public interface ExperimentInsDao { | |||||
| * @param experimentIns 实例对象 | * @param experimentIns 实例对象 | ||||
| * @return 影响行数 | * @return 影响行数 | ||||
| */ | */ | ||||
| int insert(ExperimentIns experimentIns); | |||||
| int insert(@Param("experimentIns") ExperimentIns experimentIns); | |||||
| /** | /** | ||||
| * 批量新增数据(MyBatis原生foreach方法) | * 批量新增数据(MyBatis原生foreach方法) | ||||
| @@ -68,6 +68,7 @@ public interface ExperimentInsService { | |||||
| */ | */ | ||||
| boolean deleteById(Integer id); | boolean deleteById(Integer id); | ||||
| List<ExperimentIns> queryByExperimentId(Integer id); | List<ExperimentIns> queryByExperimentId(Integer id); | ||||
| @@ -56,7 +56,7 @@ public interface ExperimentService { | |||||
| */ | */ | ||||
| boolean deleteById(Integer id); | boolean deleteById(Integer id); | ||||
| String removeById(Integer id); | String removeById(Integer id); | ||||
| Experiment runExperiment(Integer id); | |||||
| Experiment runExperiment(Integer id) throws Exception; | |||||
| Experiment addAndRunExperiment(Experiment experiment); | Experiment addAndRunExperiment(Experiment experiment); | ||||
| @@ -301,9 +301,8 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { | |||||
| // 检查响应是否为空或无内容 | // 检查响应是否为空或无内容 | ||||
| if (StringUtils.isEmpty(req)) { | if (StringUtils.isEmpty(req)) { | ||||
| throw new RuntimeException("终止响应内容为空。"); | throw new RuntimeException("终止响应内容为空。"); | ||||
| } | |||||
| } | |||||
| // 将响应的JSON字符串转换为Map对象 | // 将响应的JSON字符串转换为Map对象 | ||||
| Map<String, Object> runResMap = JsonUtils.jsonToMap(req); | Map<String, Object> runResMap = JsonUtils.jsonToMap(req); | ||||
| // 从响应Map中直接获取"errCode"的值 | // 从响应Map中直接获取"errCode"的值 | ||||
| @@ -5,6 +5,7 @@ import com.ruoyi.platform.domain.Experiment; | |||||
| import com.ruoyi.platform.domain.ExperimentIns; | import com.ruoyi.platform.domain.ExperimentIns; | ||||
| import com.ruoyi.platform.domain.Workflow; | import com.ruoyi.platform.domain.Workflow; | ||||
| import com.ruoyi.platform.mapper.ExperimentDao; | import com.ruoyi.platform.mapper.ExperimentDao; | ||||
| import com.ruoyi.platform.mapper.ExperimentInsDao; | |||||
| import com.ruoyi.platform.service.ExperimentInsService; | import com.ruoyi.platform.service.ExperimentInsService; | ||||
| import com.ruoyi.platform.service.ExperimentService; | import com.ruoyi.platform.service.ExperimentService; | ||||
| import com.ruoyi.platform.service.WorkflowService; | import com.ruoyi.platform.service.WorkflowService; | ||||
| @@ -35,6 +36,11 @@ public class ExperimentServiceImpl implements ExperimentService { | |||||
| @Resource | @Resource | ||||
| private ExperimentDao experimentDao; | private ExperimentDao experimentDao; | ||||
| @Resource | |||||
| private ExperimentInsDao experimentInsDao; | |||||
| @Resource | @Resource | ||||
| @Lazy | @Lazy | ||||
| private WorkflowService workflowService; | private WorkflowService workflowService; | ||||
| @@ -192,7 +198,7 @@ public class ExperimentServiceImpl implements ExperimentService { | |||||
| * @return 是否成功 | * @return 是否成功 | ||||
| */ | */ | ||||
| @Override | @Override | ||||
| public Experiment runExperiment(Integer id) { | |||||
| public Experiment runExperiment(Integer id) throws Exception { | |||||
| //先查出实验记录 | //先查出实验记录 | ||||
| Experiment experiment = this.queryById(id); | Experiment experiment = this.queryById(id); | ||||
| @@ -200,13 +206,18 @@ public class ExperimentServiceImpl implements ExperimentService { | |||||
| System.out.println("No experiment"); | System.out.println("No experiment"); | ||||
| } | } | ||||
| Workflow workflow = workflowService.queryById(experiment.getWorkflowId()); | Workflow workflow = workflowService.queryById(experiment.getWorkflowId()); | ||||
| if(workflow == null) { | |||||
| throw new RuntimeException("流水线不存在,请先创建流水线"); | |||||
| } | |||||
| String dag = workflow.getDag(); | String dag = workflow.getDag(); | ||||
| // 调argo转换接口 | // 调argo转换接口 | ||||
| try { | try { | ||||
| String convertRes = HttpUtils.sendPost(argoUrl + argoConvert, dag); | String convertRes = HttpUtils.sendPost(argoUrl + argoConvert, dag); | ||||
| if (convertRes == null || StringUtils.isEmpty(convertRes)) { | if (convertRes == null || StringUtils.isEmpty(convertRes)) { | ||||
| throw new RuntimeException("Failed to convert workflow."); | |||||
| throw new RuntimeException("转换流水线失败"); | |||||
| } | } | ||||
| Map<String, Object> converMap = JsonUtils.jsonToMap(convertRes); | Map<String, Object> converMap = JsonUtils.jsonToMap(convertRes); | ||||
| // 组装运行接口json | // 组装运行接口json | ||||
| @@ -234,13 +245,16 @@ public class ExperimentServiceImpl implements ExperimentService { | |||||
| experimentIns.setArgoInsNs((String) metadata.get("namespace")); | experimentIns.setArgoInsNs((String) metadata.get("namespace")); | ||||
| experimentIns.setArgoInsName((String) metadata.get("name")); | experimentIns.setArgoInsName((String) metadata.get("name")); | ||||
| //插入ExperimentIns表中 | //插入ExperimentIns表中 | ||||
| experimentInsService.insert(experimentIns); | |||||
| experimentInsDao.insert(experimentIns); | |||||
| }catch (Exception e){ | }catch (Exception e){ | ||||
| throw new RuntimeException(e); | throw new RuntimeException(e); | ||||
| } | } | ||||
| List<ExperimentIns> experimentIns = experimentInsService.queryByExperimentId(id); | List<ExperimentIns> experimentIns = experimentInsService.queryByExperimentId(id); | ||||
| experiment.setExperimentInsList(experimentIns); | experiment.setExperimentInsList(experimentIns); | ||||
| return experiment; | return experiment; | ||||
| } | } | ||||
| @@ -253,7 +267,11 @@ public class ExperimentServiceImpl implements ExperimentService { | |||||
| throw new RuntimeException("Failed to add experiment."); | throw new RuntimeException("Failed to add experiment."); | ||||
| } | } | ||||
| // 调用runExperiment方法运行实验 | // 调用runExperiment方法运行实验 | ||||
| newExperiment = this.runExperiment(newExperiment.getId()); | |||||
| try { | |||||
| newExperiment = this.runExperiment(newExperiment.getId()); | |||||
| } catch (Exception e) { | |||||
| throw new RuntimeException(e); | |||||
| } | |||||
| return newExperiment; | return newExperiment; | ||||
| } | } | ||||
| @@ -19,8 +19,6 @@ | |||||
| <!--查询单个--> | <!--查询单个--> | ||||
| <select id="queryById" resultMap="ExperimentInsMap"> | <select id="queryById" resultMap="ExperimentInsMap"> | ||||
| select id, experiment_id, argo_ins_name, argo_ins_ns, status, nodes_status, nodes_logs, create_by, create_time, update_by, update_time, state | select id, experiment_id, argo_ins_name, argo_ins_ns, status, nodes_status, nodes_logs, create_by, create_time, update_by, update_time, state | ||||
| @@ -175,7 +173,7 @@ | |||||
| experiment_ins(experiment_id,argo_ins_name,argo_ins_ns,status,nodes_status,nodes_logs,create_by,create_time,update_by,update_time,state) | experiment_ins(experiment_id,argo_ins_name,argo_ins_ns,status,nodes_status,nodes_logs,create_by,create_time,update_by,update_time,state) | ||||
| values | values | ||||
| <foreach collection="entities" item="entity" separator=","> | <foreach collection="entities" item="entity" separator=","> | ||||
| (#{entity.experimentId},#{entity.argoInsName},#{entity.argoInsNs},#{entity.status},#{entity.nodesStatus},#{entity.nodesStatus},#{entity.createBy},#{entity.createTime},#{entity.updateBy},#{entity.updateTime},#{entity.state}) | |||||
| (#{entity.experimentId},#{entity.argoInsName},#{entity.argoInsNs},#{entity.status},#{entity.nodesStatus},#{entity.nodesLogs},#{entity.createBy},#{entity.createTime},#{entity.updateBy},#{entity.updateTime},#{entity.state}) | |||||
| </foreach> | </foreach> | ||||
| </insert> | </insert> | ||||
| @@ -184,7 +182,7 @@ | |||||
| experiment_ins(experiment_id,argo_ins_name,argo_ins_ns,status,nodes_status,create_by,create_time,update_by,update_time,state) | experiment_ins(experiment_id,argo_ins_name,argo_ins_ns,status,nodes_status,create_by,create_time,update_by,update_time,state) | ||||
| values | values | ||||
| <foreach collection="entities" item="entity" separator=","> | <foreach collection="entities" item="entity" separator=","> | ||||
| (#{entity.experimentId},#{entity.argoInsName},#{entity.argoInsNs},#{entity.status},#{entity.nodesStatus},#{entity.createBy},#{entity.createTime},#{entity.updateBy},#{entity.updateTime},#{entity.state}) | |||||
| (#{entity.experimentId},#{entity.argoInsName},#{entity.argoInsNs},#{entity.status},#{entity.nodesStatus},#{entity.nodesLogs},#{entity.createBy},#{entity.createTime},#{entity.updateBy},#{entity.updateTime},#{entity.state}) | |||||
| </foreach> | </foreach> | ||||
| on duplicate key update | on duplicate key update | ||||
| experiment_id = values(experiment_id)argo_ins_name = values(argo_ins_name)argo_ins_ns = | experiment_id = values(experiment_id)argo_ins_name = values(argo_ins_name)argo_ins_ns = | ||||