资源管理暂时对接完毕。

This commit is contained in:
even 2025-07-22 15:35:00 +08:00
parent 0c1627c841
commit cb6cbb069f
12 changed files with 156 additions and 19 deletions

View File

@ -2,10 +2,18 @@ package cd.casic.ci.api;
import cd.casic.ci.process.dto.req.resource.ResourceCreateReq;
import cd.casic.ci.process.dto.req.resource.ResourceListReq;
import cd.casic.ci.process.dto.req.resource.ResourcePageReq;
import cd.casic.ci.process.dto.req.resource.ResourceUpdateReq;
import cd.casic.ci.process.dto.resp.resource.ResourceDetailResp;
import cd.casic.ci.process.dto.resp.resource.ResourceListResp;
import cd.casic.ci.process.process.service.resource.ResourceManagerService;
import cd.casic.framework.commons.pojo.CommonResult;
import cd.casic.framework.commons.pojo.PageResult;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -22,7 +30,31 @@ public class ResourceManagerController {
@Resource
private ResourceManagerService resourceManagerService;
@PostMapping("/createResource")
public CommonResult<String> createResource(@RequestBody ResourceCreateReq req){
return CommonResult.success(resourceManagerService.createResource(req));
}
@PostMapping("/updateResource")
public CommonResult<String> updateResource(@RequestBody ResourceUpdateReq req){
return CommonResult.success(resourceManagerService.updateResource(req));
}
@GetMapping("/findResourceDetailById/{resourceId}")
public CommonResult<ResourceDetailResp> findResourceDetailById(@PathVariable String resourceId){
return CommonResult.success(resourceManagerService.findResourceDetailById(resourceId));
}
@PostMapping("/list")
public CommonResult<List<ResourceListResp>> list(@RequestBody ResourceListReq req){
return CommonResult.success(resourceManagerService.list(req));
}
@PostMapping("/page")
public CommonResult<PageResult<ResourceListResp>> page(@RequestBody ResourcePageReq req){
return CommonResult.success(resourceManagerService.page(req));
}
@DeleteMapping("/deleteResource/{resourceId}")
public CommonResult<Void> deleteResource(@PathVariable String resourceId){
resourceManagerService.deleteResource(resourceId);
return CommonResult.success();
}
}

View File

@ -1,6 +1,5 @@
package cd.casic.ci.api;
import cd.casic.ci.process.util.CryptogramUtil;
import cd.casic.ci.process.util.SftpUploadUtil;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

View File

@ -0,0 +1,8 @@
package cd.casic.ci.process.dto.req.resource;
import lombok.Data;
@Data
public class ResourceListReq {
}

View File

@ -0,0 +1,10 @@
package cd.casic.ci.process.dto.req.resource;
import cd.casic.framework.commons.pojo.PageParam;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class ResourcePageReq extends PageParam {
}

View File

@ -22,4 +22,6 @@ public class ResourceUpdateReq {
* docker连接端口选填
* */
private Integer dockerPort;
private String cloudId;
}

View File

@ -0,0 +1,38 @@
package cd.casic.ci.process.dto.resp.resource;
import jakarta.annotation.Resource;
import lombok.Data;
@Data
public class ResourceListResp {
/**
* docker镜像服务器信息id
*/
private String dockerId;
/**
* k8s服务器信息id
*/
private String k8sId;
/**
* 机器服务器信息id
*/
private Long machineId;
/**
* 弹性云服务器信息id
*/
private String cloudId;
/**
* 资源名称
*/
private String resourceName;
/**
* 资源类型ResourceConstant.RES_TYPE_*
* */
private String resourceType;
private String id;
}

View File

@ -1,6 +1,9 @@
package cd.casic.ci.process.process.converter;
import cd.casic.ci.process.dto.req.resource.ResourceCreateReq;
import cd.casic.ci.process.dto.req.resource.ResourceUpdateReq;
import cd.casic.ci.process.dto.resp.resource.ResourceDetailResp;
import cd.casic.ci.process.dto.resp.resource.ResourceListResp;
import cd.casic.ci.process.process.dataObject.resource.PipResourceManager;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
@ -18,4 +21,7 @@ import java.util.List;
public interface ResourceConverter {
ResourceConverter INSTANCE = Mappers.getMapper(ResourceConverter.class);
ResourceDetailResp converter(PipResourceManager manager);
PipResourceManager converter(ResourceUpdateReq req);
PipResourceManager converter(ResourceCreateReq req);
List<ResourceListResp> converter(List<PipResourceManager> manager);
}

View File

@ -41,4 +41,6 @@ public class PipResourceManager extends PipBaseElement {
* 资源类型ResourceConstant.RES_TYPE_*
* */
private String resourceType;
private String state;
}

View File

@ -1,12 +1,17 @@
package cd.casic.ci.process.process.service.resource;
import cd.casic.ci.process.dto.req.resource.ResourceCreateReq;
import cd.casic.ci.process.dto.req.resource.ResourceListReq;
import cd.casic.ci.process.dto.req.resource.ResourcePageReq;
import cd.casic.ci.process.dto.req.resource.ResourceUpdateReq;
import cd.casic.ci.process.dto.resp.resource.ResourceDetailResp;
import cd.casic.ci.process.dto.resp.resource.ResourceListResp;
import cd.casic.ci.process.process.dataObject.resource.PipResourceManager;
import cd.casic.framework.commons.pojo.PageResult;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
@ -20,8 +25,11 @@ public interface ResourceManagerService extends IService<PipResourceManager> {
/**
* 创建||申请 资源
* */
void createResource(ResourceCreateReq req);
void updateResource(ResourceUpdateReq req);
String createResource(ResourceCreateReq req);
String updateResource(ResourceUpdateReq req);
ResourceDetailResp findResourceDetailById(String resourceId);
void deleteResource(String resourceId);
PageResult<ResourceListResp> page(ResourcePageReq req);
List<ResourceListResp> list(ResourceListReq req);
}

View File

@ -2,24 +2,32 @@ package cd.casic.ci.process.process.service.resource.impl;
import cd.casic.ci.process.constant.ResourceConstant;
import cd.casic.ci.process.dto.req.resource.ResourceCreateReq;
import cd.casic.ci.process.dto.req.resource.ResourceListReq;
import cd.casic.ci.process.dto.req.resource.ResourcePageReq;
import cd.casic.ci.process.dto.req.resource.ResourceUpdateReq;
import cd.casic.ci.process.dto.resp.resource.ResourceDetailResp;
import cd.casic.ci.process.dto.resp.resource.ResourceListResp;
import cd.casic.ci.process.process.converter.ResourceConverter;
import cd.casic.ci.process.process.dao.pipeline.PipResourceManagerDao;
import cd.casic.ci.process.process.dataObject.resource.PipResourceManager;
import cd.casic.ci.process.process.service.resource.ResourceManagerService;
import cd.casic.framework.commons.pojo.PageResult;
import cd.casic.module.execute.docker.dao.DockerEndpointDao;
import cd.casic.module.execute.docker.dataobject.dto.DockerEndpointDo;
import cd.casic.module.execute.docker.dataobject.model.DockerEndpoint;
import cd.casic.module.machine.dal.dataobject.MachineInfoDO;
import cd.casic.module.machine.service.MachineInfoService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.cxf.resource.ResourceManager;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
/**
@ -42,7 +50,7 @@ public class ResourceManagerServiceImpl extends ServiceImpl<PipResourceManagerDa
private ResourceConverter converter;
@Override
public void createResource(ResourceCreateReq req) {
public String createResource(ResourceCreateReq req) {
String resourceType = req.getResourceType();
PipResourceManager manager = new PipResourceManager();
manager.setResourceName(req.getResourceName());
@ -61,16 +69,20 @@ public class ResourceManagerServiceImpl extends ServiceImpl<PipResourceManagerDa
dockerEndpointDao.insert(dockerEndpoint);
manager.setDockerId(dockerEndpoint.getId());
}
pipResourceManagerDao.insert(manager);
} else if(ResourceConstant.RES_TYPE_CLOUD.equals(resourceType)){
// 入库申请资源等操作
}
return manager.getId();
}
@Override
public void updateResource(ResourceUpdateReq req) {
public String updateResource(ResourceUpdateReq req) {
String resourceType = req.getResourceType();
String id = req.getId();
PipResourceManager manager = pipResourceManagerDao.selectById(id);
manager.setResourceName(req.getResourceName());
manager.setResourceType(req.getResourceType());
// 同类型资源修改
if (manager.getResourceType().equals(resourceType)) {
if (ResourceConstant.RES_TYPE_CUSTOM.equals(resourceType)) {
@ -83,18 +95,23 @@ public class ResourceManagerServiceImpl extends ServiceImpl<PipResourceManagerDa
// 2.维护docker信息之后需要修改
// 3.之前维护了docker信息之后不想维护了
DockerEndpointDo dockerEndpoint = new DockerEndpointDo();
dockerEndpoint.setName(machineInfoDO.getName());
dockerEndpoint.setPort(req.getDockerPort());
dockerEndpoint.setHost(machineInfoDO.getHostIp());
dockerEndpoint.setType(DockerEndpoint.DockerEndpointTypeEnum.REMOTE);
if (StringUtils.isEmpty(manager.getDockerId()) &&Objects.nonNull(req.getDockerPort())) {
String dockerId = manager.getDockerId();
if (StringUtils.isNotEmpty(dockerId)) {
dockerEndpoint = dockerEndpointDao.selectById(dockerId);
}
if (dockerEndpoint!=null) {
dockerEndpoint.setName(machineInfoDO.getName());
dockerEndpoint.setPort(req.getDockerPort());
dockerEndpoint.setHost(machineInfoDO.getHostIp());
dockerEndpoint.setType(DockerEndpoint.DockerEndpointTypeEnum.REMOTE);
}
if (StringUtils.isEmpty(dockerId) &&Objects.nonNull(req.getDockerPort())) {
dockerEndpointDao.insert(dockerEndpoint);
manager.setDockerId(dockerEndpoint.getId());
} else if (!StringUtils.isEmpty(manager.getDockerId()) &&Objects.nonNull(req.getDockerPort())) {
} else if (!StringUtils.isEmpty(dockerId) &&Objects.nonNull(req.getDockerPort())) {
dockerEndpointDao.updateById(dockerEndpoint);
manager.setDockerId(dockerEndpoint.getId());
} else if (!StringUtils.isEmpty(manager.getDockerId()) &&!Objects.nonNull(req.getDockerPort())) {
String dockerId = manager.getDockerId();
} else if (!StringUtils.isEmpty(dockerId) &&!Objects.nonNull(req.getDockerPort())) {
dockerEndpointDao.deleteById(dockerId);
manager.setDockerId(null);
}
@ -105,6 +122,7 @@ public class ResourceManagerServiceImpl extends ServiceImpl<PipResourceManagerDa
//天河国云资源转机器资源是否需要销毁原本资源还是说可以自由切换预留入口
}
pipResourceManagerDao.updateById(manager);
return req.getId();
}
@Override
@ -127,4 +145,20 @@ public class ResourceManagerServiceImpl extends ServiceImpl<PipResourceManagerDa
}
pipResourceManagerDao.deleteById(resourceId);
}
@Override
public PageResult<ResourceListResp> page(ResourcePageReq req) {
LambdaQueryWrapper<PipResourceManager> wrapper = new LambdaQueryWrapper<>();
Page<PipResourceManager> page = pipResourceManagerDao.selectPage(new Page<>(req.getPageNo(), req.getPageSize()), wrapper);
List<ResourceListResp> list = converter.converter(page.getRecords());
return new PageResult<>(list, page.getTotal(), page.getCurrent(), page.getSize());
}
@Override
public List<ResourceListResp> list(ResourceListReq req) {
LambdaQueryWrapper<PipResourceManager> wrapper = new LambdaQueryWrapper<>();
List<PipResourceManager> list = pipResourceManagerDao.selectList(wrapper);
return converter.converter(list);
}
}

View File

@ -1,5 +1,4 @@
package cd.casic.server;
import cd.casic.ci.process.util.CryptogramUtil;
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.command.CreateContainerResponse;
import com.github.dockerjava.api.command.ExecCreateCmdResponse;

View File

@ -1,7 +1,6 @@
package cd.casic.server;
import cd.casic.ci.process.properties.TargetFileUploadProperties;
import cd.casic.ci.process.util.CryptogramUtil;
import cd.casic.ci.process.util.SftpUploadUtil;
import com.jcraft.jsch.*;
import jakarta.annotation.Resource;