Browse Source

开发服务功能

dev-lhz
chenzhihang 1 year ago
parent
commit
42ba3d0399
8 changed files with 139 additions and 30 deletions
  1. +5
    -1
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java
  2. +14
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java
  3. +1
    -1
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Service.java
  4. +1
    -1
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ServiceVersion.java
  5. +2
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ServiceDao.java
  6. +5
    -1
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java
  7. +100
    -21
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java
  8. +11
    -5
      ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml

+ 5
- 1
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java View File

@@ -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";
}

+ 14
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java View File

@@ -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<ServiceVersion> updateServiceVersion(@RequestBody ServiceVersion serviceVersion) {
return genericsSuccess(serviceService.updateServiceVersion(serviceVersion));
}

@GetMapping("/getServiceVersionLog/{id}")
@ApiOperation("获取服务版本日志")
public GenericsAjaxResult<String> getServiceVersionLog(@PathVariable("id") Long id,
@RequestParam String startTime, @RequestParam String endTime){
return genericsSuccess(serviceService.getServiceVersionLog(id,startTime,endTime));
}

@GetMapping("/getServiceVersionDocs/{id}")
@ApiOperation("获取服务版本文档")
public GenericsAjaxResult<Map<String, Object>> getServiceVersionDocs(@PathVariable("id") Long id){
return genericsSuccess(serviceService.getServiceVersionDocs(id));
}
}

+ 1
- 1
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Service.java View File

@@ -17,7 +17,7 @@ public class Service implements Serializable {

private String serviceName;

private Integer serviceType;
private String serviceType;

private String description;



+ 1
- 1
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ServiceVersion.java View File

@@ -48,7 +48,7 @@ public class ServiceVersion implements Serializable {

private Integer state;

private Integer runState;
private String runState;

private String deploymentName;



+ 2
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ServiceDao.java View File

@@ -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);


+ 5
- 1
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java View File

@@ -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<Service> 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<String, Object> getServiceVersionDocs(Long id);
}

+ 100
- 21
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java View File

@@ -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<ServiceVersion> 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<ServiceVersion> serviceVersions = serviceDao.queryByPageServiceVersion(serviceVersion, pageRequest);

List<String> deploymentNames = serviceVersions.stream().map(ServiceVersion::getDeploymentName).collect(Collectors.toList());
Map<String, String> runStates = getRunState(deploymentNames);
updateRunState(runStates);

List<ServiceVersion> 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<ServiceVersion> serviceVersions = serviceDao.queryByPageServiceVersion(serviceVersion, pageRequest);

List<String> deploymentNames = serviceVersions.stream().map(ServiceVersion::getDeploymentName).collect(Collectors.toList());
Map<String, String> runStates = getRunState(deploymentNames);
updateRunState(runStates);

return new PageImpl<>(serviceVersions, pageRequest, total);
}
}

Map<String, String> getRunState(List<String> deploymentNames) {
HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("deployment_names", deploymentNames);
String req = HttpUtils.sendPost(argoUrl + modelService + "/getStatus", JSON.toJSONString(paramMap));
if (StringUtils.isNotEmpty(req)) {
Map<String, Object> reqMap = JacksonUtil.parseJSONStr2Map(req);
Map<String, Map<String, String>> data = (Map<String, Map<String, String>>) reqMap.get("data");
return data.get("status");
} else {
return null;
}
}

PageRequest pageRequest = PageRequest.of(page, size);
long total = serviceDao.countServiceVersion(serviceVersion);
List<ServiceVersion> serviceVersions = serviceDao.queryByPageServiceVersion(serviceVersion, pageRequest);
return new PageImpl<>(serviceVersions, pageRequest, total);
void updateRunState(Map<String, String> runStates) {
for (Map.Entry<String, String> 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<String, Object> 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<String, Object> 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<String, String> data = (Map<String, String>) 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<String, Object> 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<String, Object> 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<String, Object> reqMap = JacksonUtil.parseJSONStr2Map(req);
HashMap<String, String> data = (HashMap<String, String>) reqMap.get("data");
return data.get("log_content");
} else {
throw new RuntimeException("获取日志失败");
}
}

@Override
public Map<String, Object> getServiceVersionDocs(Long id) {
ServiceVersion serviceVersion = serviceDao.getServiceVersionById(id);
HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("deployment_name", serviceVersion.getDeploymentName());
String req = HttpUtils.sendPost(argoUrl + modelService + "/getDocs", JSON.toJSONString(paramMap));
if (StringUtils.isNotEmpty(req)) {
Map<String, Object> reqMap = JacksonUtil.parseJSONStr2Map(req);
Map<String, Object> data = (Map<String, Object>) reqMap.get("data");
return data;
} else {
throw new RuntimeException("获取日志失败");
}
}

}

+ 11
- 5
ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml View File

@@ -73,7 +73,7 @@
</insert>

<insert id="insertServiceVersion">
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 @@
<if test="service.serviceName != null and service.serviceName !=''">
service_name = #{service.serviceName},
</if>
<if test="service.serviceType != null">
<if test="service.serviceType != null and service.serviceType !=''">
service_type = #{service.serviceType},
</if>
<if test="service.description != null and service.description !=''">
@@ -111,8 +111,8 @@
<if test="serviceVersion.image != null and serviceVersion.image !=''">
image = #{serviceVersion.image},
</if>
<if test="serviceVersion.resouce != null and serviceVersion.resouce !=''">
resouce = #{serviceVersion.resouce},
<if test="serviceVersion.resource != null and serviceVersion.resource !=''">
resource = #{serviceVersion.resource},
</if>
<if test="serviceVersion.replicas != null">
replicas = #{serviceVersion.replicas},
@@ -135,7 +135,7 @@
<if test="serviceVersion.state != null">
state = #{serviceVersion.state},
</if>
<if test="serviceVersion.runState != null">
<if test="serviceVersion.runState != null and serviceVersion.runState !=''">
run_state = #{serviceVersion.runState},
</if>
<if test="serviceVersion.deploymentName != null and serviceVersion.deploymentName !=''">
@@ -147,4 +147,10 @@
</set>
where id = #{serviceVersion.id}
</update>

<update id="updateRunState">
update service_version
set run_state = #{runState}
where deployment_name = #{deploymentName}
</update>
</mapper>

Loading…
Cancel
Save