diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ResourceOccupy.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ResourceOccupy.java index c9c1b14c..fb7ceb03 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ResourceOccupy.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ResourceOccupy.java @@ -49,6 +49,9 @@ public class ResourceOccupy { @ApiModelProperty("流水线id") private Long workflowId; + @ApiModelProperty("任务名称") + private String taskName; + @ApiModelProperty("流水线节点id") private String nodeId; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ResourceOccupyDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ResourceOccupyDao.java index 49d71704..ba2bcd9d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ResourceOccupyDao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ResourceOccupyDao.java @@ -14,7 +14,7 @@ public interface ResourceOccupyDao { int edit(@Param("resourceOccupy") ResourceOccupy resourceOccupy); - List getResourceOccupyByTask(@Param("taskType") String taskType, @Param("taskId") Long taskId, @Param("nodeId") String nodeId); + List getResourceOccupyByTask(@Param("taskType") String taskType, @Param("taskInsId") Long taskInsId, @Param("nodeId") String nodeId); int deduceCredit(@Param("credit") Double credit, @Param("userId") Long userId); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ResourceOccupyService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ResourceOccupyService.java index 177d2dd6..8670a290 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ResourceOccupyService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ResourceOccupyService.java @@ -11,11 +11,11 @@ public interface ResourceOccupyService { Boolean haveResource(Integer computingResourceId) throws Exception; - void startDeduce(Integer computingResourceId, String taskType, Long taskId, Long taskInsId, Long workflowId, String nodeId); + void startDeduce(Integer computingResourceId, String taskType, Long taskId, Long taskInsId, Long workflowId, String taskName, String nodeId); - void endDeduce(String taskType, Long taskId, String nodeId, Date nodeStartTime); + void endDeduce(String taskType, Long taskInsId, String nodeId, Date nodeStartTime); - void deducing(String taskType, Long taskId, String nodeId, Date nodeStartTime); + void deducing(String taskType, Long taskInsId, String nodeId, Date nodeStartTime); Page queryByPage(PageRequest pageRequest); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java index 12b34188..0459aea2 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java @@ -38,7 +38,7 @@ public interface ServiceService { String stopServiceVersion(Long id); - String updateServiceVersion(ServiceVersion serviceVersion); + String updateServiceVersion(ServiceVersion serviceVersion) throws Exception; HashMap getServiceVersionLog(Long id, String startTime, String endTime); 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 2adbb5bf..bf87969a 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 @@ -313,7 +313,7 @@ public class ExperimentServiceImpl implements ExperimentService { // 记录开始扣积分 for (Map.Entry> entry : resourceInfo.entrySet()) { Map node = entry.getValue(); - resourceOccupyService.startDeduce((Integer) node.get("computing_resource_id"), Constant.TaskType_Workflow, Long.valueOf(id), Long.valueOf(insert.getId()), experiment.getWorkflowId(), entry.getKey()); + resourceOccupyService.startDeduce((Integer) node.get("computing_resource_id"), Constant.TaskType_Workflow, Long.valueOf(id), Long.valueOf(insert.getId()), experiment.getWorkflowId(), experiment.getName(), entry.getKey()); } } catch (Exception e) { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/RayServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/RayServiceImpl.java index 3f499866..0cbf6ffb 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/RayServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/RayServiceImpl.java @@ -206,7 +206,7 @@ public class RayServiceImpl implements RayService { rayInsDao.insert(rayIns); rayInsService.updateRayStatus(id); // 记录开始扣除积分 - resourceOccupyService.startDeduce(ray.getComputingResourceId(), Constant.TaskType_Ray, id, rayIns.getId(), null, null); + resourceOccupyService.startDeduce(ray.getComputingResourceId(), Constant.TaskType_Ray, id, rayIns.getId(), null, ray.getName(), null); } catch (Exception e) { throw new RuntimeException(e); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ResourceOccupyServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ResourceOccupyServiceImpl.java index 647ead62..bfc4760b 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ResourceOccupyServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ResourceOccupyServiceImpl.java @@ -53,7 +53,7 @@ public class ResourceOccupyServiceImpl implements ResourceOccupyService { @Override @Transactional - public void startDeduce(Integer computingResourceId, String taskType, Long taskId, Long taskInsId, Long workflowId, String nodeId) { + public void startDeduce(Integer computingResourceId, String taskType, Long taskId, Long taskInsId, Long workflowId, String taskName, String nodeId) { ResourceOccupy resourceOccupy = new ResourceOccupy(); ComputingResource computingResource = computingResourceDao.queryById(computingResourceId); resourceOccupy.setComputingResourceId(computingResourceId); @@ -65,6 +65,7 @@ public class ResourceOccupyServiceImpl implements ResourceOccupyService { resourceOccupy.setTaskId(taskId); resourceOccupy.setTaskInsId(taskInsId); resourceOccupy.setWorkflowId(workflowId); + resourceOccupy.setTaskName(taskName); resourceOccupy.setNodeId(nodeId); resourceOccupyDao.save(resourceOccupy); @@ -77,10 +78,10 @@ public class ResourceOccupyServiceImpl implements ResourceOccupyService { @Override @Transactional - public void endDeduce(String taskType, Long taskId, String nodeId, Date nodeStartTime) { - List resourceOccupys = resourceOccupyDao.getResourceOccupyByTask(taskType, taskId, nodeId); + public void endDeduce(String taskType, Long taskInsId, String nodeId, Date nodeStartTime) { + List resourceOccupys = resourceOccupyDao.getResourceOccupyByTask(taskType, taskInsId, nodeId); for (ResourceOccupy resourceOccupy : resourceOccupys) { - deducing(taskType, taskId, nodeId, nodeStartTime); + deducing(taskType, taskInsId, nodeId, nodeStartTime); resourceOccupy.setState(Constant.State_invalid); resourceOccupyDao.edit(resourceOccupy); @@ -95,8 +96,8 @@ public class ResourceOccupyServiceImpl implements ResourceOccupyService { @Override @Transactional - public void deducing(String taskType, Long taskId, String nodeId, Date nodeStartTime) { - List resourceOccupys = resourceOccupyDao.getResourceOccupyByTask(taskType, taskId, nodeId); + public void deducing(String taskType, Long taskInsId, String nodeId, Date nodeStartTime) { + List resourceOccupys = resourceOccupyDao.getResourceOccupyByTask(taskType, taskInsId, nodeId); for (ResourceOccupy resourceOccupy : resourceOccupys) { Date now = new Date(); long timeDifferenceMillis; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java index 8fee155a..825acc5f 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java @@ -149,13 +149,14 @@ public class ServiceServiceImpl implements ServiceService { public String editServiceVersion(ServiceVersionVo serviceVersionVo) throws Exception { ServiceVersion serviceVersion = getServiceVersion(serviceVersionVo); ServiceVersion oldServiceVersion = serviceDao.getServiceVersionById(serviceVersionVo.getId()); - if (!oldServiceVersion.getReplicas().equals(serviceVersionVo.getReplicas()) || !oldServiceVersion.getResource().equals(serviceVersionVo.getResource()) + if (!oldServiceVersion.getReplicas().equals(serviceVersionVo.getReplicas()) || !oldServiceVersion.getComputingResourceId().equals(serviceVersionVo.getComputingResourceId()) || serviceVersionVo.getRerun()) { updateServiceVersion(serviceVersion); } LoginUser loginUser = SecurityUtils.getLoginUser(); serviceVersion.setUpdateBy(loginUser.getUsername()); serviceDao.updateServiceVersion(serviceVersion); + return "修改成功"; } @@ -274,7 +275,7 @@ public class ServiceServiceImpl implements ServiceService { serviceDao.updateServiceVersion(serviceVersion); // 记录开始扣积分 - resourceOccupyService.startDeduce(serviceVersion.getComputingResourceId(), Constant.TaskType_Service, serviceVersion.getServiceId(), serviceVersion.getId(), null, null); + resourceOccupyService.startDeduce(serviceVersion.getComputingResourceId(), Constant.TaskType_Service, serviceVersion.getServiceId(), serviceVersion.getId(), null, service.getServiceName(), null); return "启动成功"; } else { throw new RuntimeException("启动失败"); @@ -304,19 +305,26 @@ public class ServiceServiceImpl implements ServiceService { } @Override - public String updateServiceVersion(ServiceVersion serviceVersion) { - HashMap paramMap = new HashMap<>(); - paramMap.put("deployment_name", serviceVersion.getDeploymentName()); - HashMap updateMap = new HashMap<>(); - updateMap.put("replicas", serviceVersion.getReplicas()); - updateMap.put("resource", serviceVersion.getResource()); - paramMap.put("update_model", new JSONObject(updateMap)); - String req = HttpUtils.sendPost(argoUrl + modelService + "/update", JSON.toJSONString(paramMap)); - if (StringUtils.isNotEmpty(req)) { - return "修改成功"; - } else { - throw new RuntimeException("更新失败"); + public String updateServiceVersion(ServiceVersion serviceVersion) throws Exception { + // 判断是否有资源 + if (resourceOccupyService.haveResource(serviceVersion.getComputingResourceId())) { + HashMap paramMap = new HashMap<>(); + paramMap.put("deployment_name", serviceVersion.getDeploymentName()); + HashMap updateMap = new HashMap<>(); + updateMap.put("replicas", serviceVersion.getReplicas()); + updateMap.put("resource", serviceVersion.getResource()); + paramMap.put("update_model", new JSONObject(updateMap)); + String req = HttpUtils.sendPost(argoUrl + modelService + "/update", JSON.toJSONString(paramMap)); + if (StringUtils.isNotEmpty(req)) { + com.ruoyi.platform.domain.Service service = serviceDao.getServiceById(serviceVersion.getServiceId()); + // 记录开始扣积分 + resourceOccupyService.startDeduce(serviceVersion.getComputingResourceId(), Constant.TaskType_Service, serviceVersion.getServiceId(), serviceVersion.getId(), null, service.getServiceName(), null); + return "修改成功"; + } else { + throw new RuntimeException("更新失败"); + } } + throw new RuntimeException("更新失败"); } @Override 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 1614ff4b..c4608fd6 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 @@ -517,7 +517,7 @@ public class K8sClientUtil { String nodeName = getNodeName(podName, namespace); // 记录开始扣除积分 - resourceOccupyService.startDeduce(devEnvironment.getComputingResourceId(), Constant.TaskType_Dev, Long.valueOf(devEnvironment.getId()), null, null, null); + resourceOccupyService.startDeduce(devEnvironment.getComputingResourceId(), Constant.TaskType_Dev, Long.valueOf(devEnvironment.getId()), null, null, devEnvironment.getName(), null); } } catch (ApiException e) { throw new RuntimeException("创建pod异常:" + e.getResponseBody()); diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ResourceOccupy.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ResourceOccupy.xml index c1c906cc..527ea618 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ResourceOccupy.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ResourceOccupy.xml @@ -3,11 +3,11 @@ insert into resource_occupy (user_id, computing_resource_id, credit_per_hour, description, task_type, task_id, - task_ins_id, workflow_id, + task_ins_id, workflow_id, task_name, node_id) values (#{resourceOccupy.userId}, #{resourceOccupy.computingResourceId}, #{resourceOccupy.creditPerHour}, #{resourceOccupy.description}, #{resourceOccupy.taskType}, #{resourceOccupy.taskId}, - #{resourceOccupy.taskInsId}, #{resourceOccupy.workflowId}, + #{resourceOccupy.taskInsId}, #{resourceOccupy.workflowId}, #{resourceOccupy.taskName}, #{resourceOccupy.nodeId}) @@ -55,7 +55,7 @@ select * from resource_occupy where task_type = #{taskType} - and task_id = #{taskId} + and task_ins_id = #{taskInsId} and node_id = #{nodeId} @@ -75,6 +75,11 @@ credit_per_hour, TRUNCATE(deduce_credit, 1) as deduce_credit, start_time, + task_type, + task_id, + task_ins_id, + workflow_id, + task_name, state from resource_occupy where user_id = #{userId}