diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java index f38c6517..12300bb1 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java @@ -26,5 +26,9 @@ public class Constant { public final static String Source_Hand_Export = "hand_export"; public final static String Source_Add = "add"; - + public final static String Running = "Running"; + public final static String Failed = "Failed"; + public final static String Pending = "Pending"; + public final static String Init = "Init"; + public final static String Stopped = "Stopped"; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java index 133301fc..a77ad8f1 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java @@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.io.IOException; +import java.util.Map; @RestController @RequestMapping("service") @@ -94,4 +95,17 @@ public class ServiceController extends BaseController { public GenericsAjaxResult updateServiceVersion(@RequestBody ServiceVersion serviceVersion) { return genericsSuccess(serviceService.updateServiceVersion(serviceVersion)); } + + @GetMapping("/getServiceVersionLog/{id}") + @ApiOperation("获取服务版本日志") + public GenericsAjaxResult getServiceVersionLog(@PathVariable("id") Long id, + @RequestParam String startTime, @RequestParam String endTime){ + return genericsSuccess(serviceService.getServiceVersionLog(id,startTime,endTime)); + } + + @GetMapping("/getServiceVersionDocs/{id}") + @ApiOperation("获取服务版本文档") + public GenericsAjaxResult> getServiceVersionDocs(@PathVariable("id") Long id){ + return genericsSuccess(serviceService.getServiceVersionDocs(id)); + } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Service.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Service.java index 6c7168ce..151f0cde 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Service.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Service.java @@ -17,7 +17,7 @@ public class Service implements Serializable { private String serviceName; - private Integer serviceType; + private String serviceType; private String description; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ServiceVersion.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ServiceVersion.java index da3fbd42..f190a99a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ServiceVersion.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ServiceVersion.java @@ -48,7 +48,7 @@ public class ServiceVersion implements Serializable { private Integer state; - private Integer runState; + private String runState; private String deploymentName; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ServiceDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ServiceDao.java index d489f475..d114e0cd 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ServiceDao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ServiceDao.java @@ -25,6 +25,8 @@ public interface ServiceDao { int updateServiceVersion(@Param("serviceVersion") ServiceVersion serviceVersion); + int updateRunState(@Param("deploymentName") String deploymentName, @Param("runState") String runState); + Service getServiceById(@Param("id") Long id); ServiceVersion getServiceVersionById(@Param("id") Long id); 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 f3350409..1f98ce1e 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 @@ -1,12 +1,12 @@ package com.ruoyi.platform.service; -import com.fasterxml.jackson.core.JsonProcessingException; import com.ruoyi.platform.domain.Service; import com.ruoyi.platform.domain.ServiceVersion; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import java.io.IOException; +import java.util.Map; public interface ServiceService { Page queryByPageService(Service service, PageRequest pageRequest) throws IOException; @@ -32,4 +32,8 @@ public interface ServiceService { String stopServiceVersion(Long id); ServiceVersion updateServiceVersion(ServiceVersion serviceVersion); + + String getServiceVersionLog(Long id, String startTime, String endTime); + + Map getServiceVersionDocs(Long id); } 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 f19ccef9..7075c051 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 @@ -21,6 +21,7 @@ import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; @Service("serviceService") public class ServiceServiceImpl implements ServiceService { @@ -28,6 +29,9 @@ public class ServiceServiceImpl implements ServiceService { @Value("${argo.url}") private String argoUrl; + @Value("${argo.modelService}") + private String modelService; + @Resource private ServiceDao serviceDao; @@ -40,14 +44,52 @@ public class ServiceServiceImpl implements ServiceService { @Override public Page queryByPageServiceVersion(ServiceVersion serviceVersion, int page, int size) { - if (serviceVersion.getRunState() != null) { + PageRequest pageRequest; + if (StringUtils.isNotEmpty(serviceVersion.getRunState())) { + pageRequest = PageRequest.of(page, Integer.MAX_VALUE); + List serviceVersions = serviceDao.queryByPageServiceVersion(serviceVersion, pageRequest); + + List deploymentNames = serviceVersions.stream().map(ServiceVersion::getDeploymentName).collect(Collectors.toList()); + Map runStates = getRunState(deploymentNames); + updateRunState(runStates); + + List result = serviceVersions.stream().filter(serviceVersion1 -> { + String runState = runStates.get(serviceVersion1.getDeploymentName()); + return serviceVersion1.getRunState().equals(runState); + }).collect(Collectors.toList()); + + PageRequest.of(page, size); + return new PageImpl<>(result, pageRequest, result.size()); + } else { + pageRequest = PageRequest.of(page, size); + long total = serviceDao.countServiceVersion(serviceVersion); + List serviceVersions = serviceDao.queryByPageServiceVersion(serviceVersion, pageRequest); + + List deploymentNames = serviceVersions.stream().map(ServiceVersion::getDeploymentName).collect(Collectors.toList()); + Map runStates = getRunState(deploymentNames); + updateRunState(runStates); + return new PageImpl<>(serviceVersions, pageRequest, total); + } + } + + Map getRunState(List deploymentNames) { + HashMap paramMap = new HashMap<>(); + paramMap.put("deployment_names", deploymentNames); + String req = HttpUtils.sendPost(argoUrl + modelService + "/getStatus", JSON.toJSONString(paramMap)); + if (StringUtils.isNotEmpty(req)) { + Map reqMap = JacksonUtil.parseJSONStr2Map(req); + Map> data = (Map>) reqMap.get("data"); + return data.get("status"); + } else { + return null; } + } - PageRequest pageRequest = PageRequest.of(page, size); - long total = serviceDao.countServiceVersion(serviceVersion); - List serviceVersions = serviceDao.queryByPageServiceVersion(serviceVersion, pageRequest); - return new PageImpl<>(serviceVersions, pageRequest, total); + void updateRunState(Map runStates) { + for (Map.Entry entry : runStates.entrySet()) { + serviceDao.updateRunState(entry.getKey(), entry.getValue()); + } } @Override @@ -126,27 +168,32 @@ public class ServiceServiceImpl implements ServiceService { ServiceVersion serviceVersion = serviceDao.getServiceVersionById(id); com.ruoyi.platform.domain.Service service = serviceDao.getServiceById(serviceVersion.getServiceId()); HashMap paramMap = new HashMap<>(); - paramMap.put("code_config", serviceVersion.getCodeConfig()); + paramMap.put("service_name", service.getServiceName()); paramMap.put("description", serviceVersion.getDescription()); + paramMap.put("resource", serviceVersion.getResource()); + paramMap.put("mount_path", serviceVersion.getMountPath()); + paramMap.put("replicas", serviceVersion.getReplicas()); paramMap.put("env", JSONObject.parseObject(serviceVersion.getEnvVariables())); + paramMap.put("code_config", JSONObject.parseObject(serviceVersion.getCodeConfig())); paramMap.put("image", serviceVersion.getImage()); paramMap.put("model", JSONObject.parseObject(serviceVersion.getModel())); - paramMap.put("mount_path", serviceVersion.getMountPath()); - paramMap.put("replicas", serviceVersion.getReplicas()); - paramMap.put("resource", serviceVersion.getResource()); - paramMap.put("service_name", service.getServiceName()); paramMap.put("service_type", service.getServiceType()); - String req = HttpUtils.sendPost(argoUrl + "/model/service/create", JSON.toJSONString(paramMap)); + String req = HttpUtils.sendPost(argoUrl + modelService + "/create", JSON.toJSONString(paramMap)); if (StringUtils.isNotEmpty(req)) { Map reqMap = JacksonUtil.parseJSONStr2Map(req); - serviceVersion.setUrl((String) reqMap.get("url")); - serviceVersion.setDeploymentName((String) reqMap.get("deployment_name")); - serviceVersion.setSvcName((String) reqMap.get("svc_name")); - serviceVersion.setRunState(Constant.State_building); - editServiceVersion(serviceVersion); - return "启动成功"; + if ((Integer) reqMap.get("code") == 200) { + Map data = (Map) reqMap.get("data"); + serviceVersion.setUrl(data.get("url")); + serviceVersion.setDeploymentName(data.get("deployment_name")); + serviceVersion.setSvcName(data.get("svc_name")); + serviceVersion.setRunState(Constant.Init); + editServiceVersion(serviceVersion); + return "启动成功"; + } else { + throw new RuntimeException("启动失败"); + } } else { - throw new RuntimeException("创建失败"); + throw new RuntimeException("启动失败"); } } @@ -155,9 +202,9 @@ public class ServiceServiceImpl implements ServiceService { ServiceVersion serviceVersion = serviceDao.getServiceVersionById(id); HashMap paramMap = new HashMap<>(); paramMap.put("deployment_name", serviceVersion.getDeploymentName()); - String req = HttpUtils.sendPost(argoUrl + "/model/service/create", JSON.toJSONString(paramMap)); + String req = HttpUtils.sendPost(argoUrl + modelService + "/stop", JSON.toJSONString(paramMap)); if (StringUtils.isNotEmpty(req)) { - serviceVersion.setRunState(Constant.State_invalid); + serviceVersion.setRunState(Constant.Stopped); editServiceVersion(serviceVersion); return "停止成功"; } else { @@ -173,7 +220,7 @@ public class ServiceServiceImpl implements ServiceService { updateMap.put("replicas", serviceVersion.getReplicas()); updateMap.put("resource", serviceVersion.getResource()); paramMap.put("update_model", JSON.toJSONString(updateMap)); - String req = HttpUtils.sendPost(argoUrl + "/model/service/update", JSON.toJSONString(paramMap)); + String req = HttpUtils.sendPost(argoUrl + modelService + "/update", JSON.toJSONString(paramMap)); if (StringUtils.isNotEmpty(req)) { return editServiceVersion(serviceVersion); } else { @@ -181,4 +228,36 @@ public class ServiceServiceImpl implements ServiceService { } } + @Override + public String getServiceVersionLog(Long id, String startTime, String endTime) { + ServiceVersion serviceVersion = serviceDao.getServiceVersionById(id); + HashMap paramMap = new HashMap<>(); + paramMap.put("deployment_name", serviceVersion.getDeploymentName()); + paramMap.put("start_time", startTime); + paramMap.put("end_time", endTime); + String req = HttpUtils.sendPost(argoUrl + modelService + "/getLog", JSON.toJSONString(paramMap)); + if (StringUtils.isNotEmpty(req)) { + Map reqMap = JacksonUtil.parseJSONStr2Map(req); + HashMap data = (HashMap) reqMap.get("data"); + return data.get("log_content"); + } else { + throw new RuntimeException("获取日志失败"); + } + } + + @Override + public Map getServiceVersionDocs(Long id) { + ServiceVersion serviceVersion = serviceDao.getServiceVersionById(id); + HashMap paramMap = new HashMap<>(); + paramMap.put("deployment_name", serviceVersion.getDeploymentName()); + String req = HttpUtils.sendPost(argoUrl + modelService + "/getDocs", JSON.toJSONString(paramMap)); + if (StringUtils.isNotEmpty(req)) { + Map reqMap = JacksonUtil.parseJSONStr2Map(req); + Map data = (Map) reqMap.get("data"); + return data; + } else { + throw new RuntimeException("获取日志失败"); + } + } + } diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml index b8e00112..c7427eb4 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml @@ -73,7 +73,7 @@ - insert into service_version(service_id, version, model, description, image, resouce, replicas, mount_path, env_variables, + insert into service_version(service_id, version, model, description, image, resource, replicas, mount_path, env_variables, code_config, command, create_by, update_by) values (#{serviceVersion.serviceId}, #{serviceVersion.version}, #{serviceVersion.model}, #{serviceVersion.description}, #{serviceVersion.image}, #{serviceVersion.replicas}, #{serviceVersion.mountPath}, #{serviceVersion.envVariables}, @@ -86,7 +86,7 @@ service_name = #{service.serviceName}, - + service_type = #{service.serviceType}, @@ -111,8 +111,8 @@ image = #{serviceVersion.image}, - - resouce = #{serviceVersion.resouce}, + + resource = #{serviceVersion.resource}, replicas = #{serviceVersion.replicas}, @@ -135,7 +135,7 @@ state = #{serviceVersion.state}, - + run_state = #{serviceVersion.runState}, @@ -147,4 +147,10 @@ where id = #{serviceVersion.id} + + + update service_version + set run_state = #{runState} + where deployment_name = #{deploymentName} + \ No newline at end of file