From 808d285888d8b98663a46672123bc19e786be509 Mon Sep 17 00:00:00 2001 From: xiaohucoding <2307520758@qq.com> Date: Mon, 30 Jun 2025 20:35:29 +0800 Subject: [PATCH] =?UTF-8?q?GPU=E5=92=8C=E6=9C=8D=E5=8A=A1=E5=8F=91?= =?UTF-8?q?=E5=B8=83=E5=92=8C=E7=AE=97=E6=B3=95=E9=83=A8=E5=88=86=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 26 +++--- ...cationOrchestrationServiceApplication.java | 3 + .../config/IpConfig.java | 21 +++++ .../config/RedisConfig.java | 42 ++++++---- .../controller/GpuResourceController.java | 5 +- .../controller/PublishController.java | 37 ++++++-- .../{mapper => entity}/GpuMapper.java | 6 +- .../entity/GpuResource.java | 84 ++++++++----------- .../mapper/GpuResourceDao.java | 4 +- .../mapper/PublishMapper.java | 5 +- .../pojo/GpuCreateDTO.java | 6 +- .../pojo/GpuResponseDTO.java | 35 ++++++-- .../pojo/GpuUpdateDTO.java | 54 ++++++++---- .../pojo/ResponseVO.java | 24 ++++++ .../pojo/ServicePublishVO.java | 4 +- .../Impl/AlgorithmInfoServiceImpl.java | 1 + .../service/Impl/PublishServiceImpl.java | 7 ++ .../service/PublishService.java | 6 +- .../service/impl/GpuManageServiceImpl.java | 2 +- src/main/resources/application.properties | 2 + .../resources/mapper/GpuResourceMapper.xml | 13 ++- src/main/resources/mapper/PublishMapper.xml | 4 +- 22 files changed, 256 insertions(+), 135 deletions(-) create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/config/IpConfig.java rename src/main/java/com/bipt/intelligentapplicationorchestrationservice/{mapper => entity}/GpuMapper.java (73%) diff --git a/pom.xml b/pom.xml index b67dd81..f1094d8 100644 --- a/pom.xml +++ b/pom.xml @@ -92,7 +92,6 @@ springdoc-openapi-starter-webmvc-ui 2.3.0 - com.alibaba.cloud @@ -103,7 +102,6 @@ org.springframework.cloud spring-cloud-starter-bootstrap - org.springframework.boot @@ -137,8 +135,6 @@ mapstruct 1.5.5.Final - - org.springframework.boot spring-boot-starter-actuator @@ -206,19 +202,17 @@ lombok 1.18.38 - - - - - org.springframework.boot - spring-boot-maven-plugin - - - + + org.mapstruct + mapstruct-processor + 1.5.5.Final + + org.projectlombok - lombok - - + lombok-mapstruct-binding + 0.2.0 + + diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/IntelligentApplicationOrchestrationServiceApplication.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/IntelligentApplicationOrchestrationServiceApplication.java index 57b84c1..4e53e87 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/IntelligentApplicationOrchestrationServiceApplication.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/IntelligentApplicationOrchestrationServiceApplication.java @@ -1,10 +1,12 @@ package com.bipt.intelligentapplicationorchestrationservice; +import com.bipt.intelligentapplicationorchestrationservice.config.IpConfig; import lombok.extern.slf4j.Slf4j; import org.mybatis.spring.annotation.MapperScan; import org.slf4j.Logger; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -12,6 +14,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; @SpringBootApplication @EnableTransactionManagement @EnableDiscoveryClient +@EnableConfigurationProperties(IpConfig.class) //@Slf4j public class IntelligentApplicationOrchestrationServiceApplication { private static final Logger log = org.slf4j.LoggerFactory.getLogger(IntelligentApplicationOrchestrationServiceApplication.class); diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/config/IpConfig.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/config/IpConfig.java new file mode 100644 index 0000000..bab1811 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/config/IpConfig.java @@ -0,0 +1,21 @@ +package com.bipt.intelligentapplicationorchestrationservice.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +import java.util.Arrays; +import java.util.List; + +@Configuration +@ConfigurationProperties(prefix = "available") +public class IpConfig { + private List ips; + + public List getIps() { + return ips; + } + + public void setIps(String ips) { + this.ips = Arrays.asList(ips.split(",")); + } +} \ No newline at end of file diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/config/RedisConfig.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/config/RedisConfig.java index 41d7a34..716ff14 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/config/RedisConfig.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/config/RedisConfig.java @@ -1,6 +1,9 @@ package com.bipt.intelligentapplicationorchestrationservice.config; import ch.qos.logback.classic.Logger; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import io.lettuce.core.ClientOptions; import io.lettuce.core.SocketOptions; import org.slf4j.LoggerFactory; @@ -60,38 +63,41 @@ public class RedisConfig { .clientOptions(clientOptions) // 注入 ClientOptions .commandTimeout(Duration.ofSeconds(30)) // 全局命令超时 .build(); + RedisStandaloneConfiguration config = new RedisStandaloneConfiguration(); config.setHostName(redisHost); config.setPort(redisPort); config.setUsername(redisUsername); // Redis 6.0+ 支持用户名 config.setPassword(RedisPassword.of(redisPassword)); -// LettuceClientConfiguration clientConfig = LettuceClientConfiguration.builder() -// .commandTimeout(Duration.ofSeconds(30)) // 增加命令超时 -// .socketOptions(SocketOptions.builder() -// .connectTimeout(Duration.ofSeconds(15)) // TCP连接超时 -// .build()) -// .build(); - return new LettuceConnectionFactory(config, clientConfig); } - -// @Bean -// public RedisConnectionFactory redisConnectionFactory() { -// RedisStandaloneConfiguration config = new RedisStandaloneConfiguration(); -// config.setPassword(""); -// return new LettuceConnectionFactory(config); -// } - @Bean - public RedisTemplate redisTemplate(){ + public RedisTemplate redisTemplate() { RedisTemplate template = new RedisTemplate<>(); Logger log = (Logger) LoggerFactory.getLogger(RedisConfig.class); log.info("开始创建redis模板对象..."); template.setConnectionFactory(redisConnectionFactory()); + + // 创建自定义的ObjectMapper并注册JavaTimeModule + ObjectMapper mapper = new ObjectMapper(); + // 禁用将日期序列化为时间戳 + mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); + // 注册Java 8日期时间模块 + mapper.registerModule(new JavaTimeModule()); + + // 使用自定义的ObjectMapper创建JSON序列化器 + GenericJackson2JsonRedisSerializer jsonSerializer = + new GenericJackson2JsonRedisSerializer(mapper); + + // 设置键和值的序列化方式 template.setKeySerializer(new StringRedisSerializer()); - template.setValueSerializer(new GenericJackson2JsonRedisSerializer()); + template.setValueSerializer(jsonSerializer); + template.setHashKeySerializer(new StringRedisSerializer()); + template.setHashValueSerializer(jsonSerializer); + + template.afterPropertiesSet(); return template; } -} +} \ No newline at end of file diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/GpuResourceController.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/GpuResourceController.java index f26f167..d8e255f 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/GpuResourceController.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/GpuResourceController.java @@ -9,11 +9,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController -@RequestMapping +@RequestMapping("/gpu") +@CrossOrigin(origins = "http://localhost:3000") public class GpuResourceController { @Autowired private GpuManageService gpuManageService; - @PostMapping + @PostMapping(value = "/add", produces = "application/json") public ResponseVO addGpu(@Valid @RequestBody GpuCreateDTO dto){ return gpuManageService.createGpuResource(dto); } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/PublishController.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/PublishController.java index 9f4d604..1917af5 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/PublishController.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/PublishController.java @@ -1,5 +1,6 @@ package com.bipt.intelligentapplicationorchestrationservice.controller; +import com.bipt.intelligentapplicationorchestrationservice.config.IpConfig; import com.bipt.intelligentapplicationorchestrationservice.pojo.*; import com.bipt.intelligentapplicationorchestrationservice.service.PublishService; import com.bipt.intelligentapplicationorchestrationservice.util.NacosServiceUtil; @@ -17,6 +18,8 @@ import java.util.List; @RestController @RequestMapping("/publish") @Slf4j +@CrossOrigin(origins = "http://localhost:3000") // 生产环境指定具体域名 + public class PublishController { @Autowired private PublishService publishService; @@ -24,6 +27,9 @@ public class PublishController { @Autowired private NacosServiceUtil nacosServiceUtil; + @Autowired + private IpConfig ipConfig; + @PostMapping @Operation(summary ="新增发布请求") @Transactional @@ -38,7 +44,6 @@ public class PublishController { log.warn("IP列表为空,不进行Nacos注册"); return OptResult.success(); } - try { // 使用逗号分割IP字符串 String[] ipArray = ipListStr.split(","); @@ -59,15 +64,31 @@ public class PublishController { log.error("Nacos服务注册失败", e); return OptResult.error("Nacos服务注册失败"); // 根据业务需求返回错误 } - - return OptResult.success(); } + /** + * 获取已发布的服务列表 + * @return + */ + @GetMapping("/list") + @Operation(summary ="获取已发布服务列表") + public OptResult> listPublishedServices() { + log.info("获取已发布服务列表接口被调用"); + List services = publishService.listPublishedServices(); + log.info("返回的数据: {}", services); + return OptResult.success(services); + } - - - - - + /** + * 获取IP列表 + * @return + */ + @GetMapping("/config/ips") + @Operation(summary = "获取可用IP地址列表") + public OptResult> getAvailableIps() { + List ips = ipConfig.getIps(); + log.info("返回列表;{}",ips); + return OptResult.success(ips); + } } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/GpuMapper.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/entity/GpuMapper.java similarity index 73% rename from src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/GpuMapper.java rename to src/main/java/com/bipt/intelligentapplicationorchestrationservice/entity/GpuMapper.java index a1ffed8..9ace267 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/GpuMapper.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/entity/GpuMapper.java @@ -1,12 +1,12 @@ -package com.bipt.intelligentapplicationorchestrationservice.mapper; +package com.bipt.intelligentapplicationorchestrationservice.entity; import com.bipt.intelligentapplicationorchestrationservice.pojo.GpuCreateDTO; import com.bipt.intelligentapplicationorchestrationservice.pojo.GpuResponseDTO; import com.bipt.intelligentapplicationorchestrationservice.pojo.GpuUpdateDTO; -import com.bipt.intelligentapplicationorchestrationservice.entity.GpuResource; import org.mapstruct.Mapper; -import org.mapstruct.MappingConstants; +import org.springframework.stereotype.Component; +@Component @Mapper(componentModel = "spring") public interface GpuMapper { GpuResource toEntity(GpuCreateDTO dto); diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/entity/GpuResource.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/entity/GpuResource.java index 35a50a6..c9e3332 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/entity/GpuResource.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/entity/GpuResource.java @@ -1,52 +1,21 @@ package com.bipt.intelligentapplicationorchestrationservice.entity; import com.baomidou.mybatisplus.annotation.TableField; -import lombok.Data; -import lombok.Getter; -import lombok.Setter; +import lombok.*; import java.time.LocalDateTime; -@Setter @Data +@AllArgsConstructor +@Setter +@Getter public class GpuResource { - @Getter @TableField("GPUId") private Long GPUId; - @Getter @TableField("GPUModel") private String GPUModel; - public Integer getGPUMemorySize() { - return GPUMemorySize; - } - - public Long getGPUId() { - return GPUId; - } - - public String getGPUModel() { - return GPUModel; - } - - public String getIp() { - return Ip; - } - - public LocalDateTime getCreateTime() { - return CreateTime; - } - - public LocalDateTime getUpdateTime() { - return UpdateTime; - } - - public Integer getGPUMaxMemory() { - return GPUMaxMemory; - } - - @Getter @TableField("GPUMemorySize") private Integer GPUMemorySize; @@ -56,15 +25,12 @@ public class GpuResource { @TableField("Ip") private String Ip; - @Getter - @TableField("CreatedTime") - private LocalDateTime CreateTime; + @TableField("created_time") + private LocalDateTime createTime; - @Getter @TableField("update_time") private LocalDateTime UpdateTime; - @Getter @TableField("GPUMaxMemory") private Integer GPUMaxMemory; @@ -83,16 +49,40 @@ public class GpuResource { - public GpuResource(Long Id, String Model, Integer MemorySize, String ip, LocalDateTime create_time) { + public GpuResource(Long Id, String GPUModel, Integer GPUMemorySize, String ip, LocalDateTime create_time) { this.GPUId = Id; - this.GPUModel = Model; - this.GPUMemorySize = MemorySize; + this.GPUModel = GPUModel; + this.GPUMemorySize = GPUMemorySize; this.Ip = ip; - this.CreateTime = create_time; + this.createTime = create_time; } public GpuResource() {} + public Integer getGPUMemorySize() { + return GPUMemorySize; + } + + public Long getGPUId() { + return GPUId; + } + + public String getGPUModel() { + return GPUModel; + } + + public String getIp() { + return Ip; + } + + public LocalDateTime getCreateTime() { + return createTime; + } + + public Integer getGPUMaxMemory() { + return GPUMaxMemory; + } + public void setGPUId(Long GPUId) { this.GPUId = GPUId; } @@ -114,11 +104,7 @@ public class GpuResource { } public void setCreateTime(LocalDateTime createTime) { - CreateTime = createTime; - } - - public void setUpdateTime(LocalDateTime updateTime) { - UpdateTime = updateTime; + this.createTime = createTime; } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/GpuResourceDao.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/GpuResourceDao.java index 7efab1f..417f505 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/GpuResourceDao.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/GpuResourceDao.java @@ -12,7 +12,7 @@ import java.util.Map; public interface GpuResourceDao { //---------------------- 基础CRUD ------------------------ @Insert("INSERT INTO Ipz.public.gpu_resource (GPUModel, GPUMemorySize, Ip) " + - "VALUES (#{model}, #{memory}, #{ip})") + "VALUES (#{GPUModel}, #{GPUMemorySize}, #{Ip})") @Options(useGeneratedKeys = true, keyProperty = "GPUId") Integer insert(GpuResource entity); @@ -27,7 +27,7 @@ public interface GpuResourceDao { Integer isDeleted(@Param("gpuId") Long gpuId); @Update("UPDATE Ipz.public.gpu_resource " + - "SET GPUModel = #{model}, GPUMemorySize = #{memory}, Ip = #{ip} " + + "SET GPUModel = #{GPUModel}, GPUMemorySize = #{GPUMemorySize}, Ip = #{Ip} " + "WHERE GPUId = #{GPUId}") Integer updateById(GpuResource entity); diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/PublishMapper.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/PublishMapper.java index 38c48a6..8be4fea 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/PublishMapper.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/PublishMapper.java @@ -6,6 +6,8 @@ import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishVO import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; +import java.util.List; + @Mapper public interface PublishMapper { @@ -15,5 +17,6 @@ public interface PublishMapper { Long getByApiUrl(String apiUrl); - + @Select("SELECT model_id,api_url,ip FROM service_publish") + List listPublishedServices(); } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/GpuCreateDTO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/GpuCreateDTO.java index 8916ec8..8e3ec34 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/GpuCreateDTO.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/GpuCreateDTO.java @@ -1,5 +1,6 @@ package com.bipt.intelligentapplicationorchestrationservice.pojo; +import com.fasterxml.jackson.annotation.JsonProperty; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Pattern; @@ -14,14 +15,17 @@ public class GpuCreateDTO { @NotBlank(message = "GPU型号不能为空") @Pattern(regexp = "^([A-Z][A-Z0-9-]+)-\\w+", message = "型号格式应为 [厂商(大写字母开头)]-[型号],如 Intel-Xe_GPU") + @JsonProperty("GPUModel") // 显示指定JSON映射名称 private String GPUModel; @NotNull(message = "显存容量不能为空") + @JsonProperty("GPUMemorySize") private Integer GPUMemorySize; @NotBlank(message = "IP地址不能为空") - @Pattern(regexp = "^\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}$", + @Pattern(regexp = "^(\\d{1,3}\\.){3}\\d{1,3}$", message = "IP地址格式无效") + @JsonProperty("Ip") // 显示指定JSON映射名称 private String Ip; } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/GpuResponseDTO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/GpuResponseDTO.java index 83dcb0a..5a4a3a4 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/GpuResponseDTO.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/GpuResponseDTO.java @@ -1,23 +1,30 @@ package com.bipt.intelligentapplicationorchestrationservice.pojo; +import com.fasterxml.jackson.annotation.JsonView; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import lombok.Data; import java.time.LocalDateTime; @Data public class GpuResponseDTO { - private Long id; + @JsonView + private Long GPUId; private String GPUModel; private Integer GPUMemorySize; private String Ip; + + @JsonSerialize(using = LocalDateTimeSerializer.class) private LocalDateTime createTime; + // Builder类 public static class Builder { private Long id; private String model; private Integer memory; private String ip; - private LocalDateTime createdTime; + private LocalDateTime createTime = LocalDateTime.now(); // 统一命名为createTime public Builder id(Long id) { this.id = id; @@ -39,19 +46,29 @@ public class GpuResponseDTO { return this; } - public Builder createdTime(LocalDateTime createdTime) { - this.createdTime = createdTime; + public Builder createTime(LocalDateTime createTime) { + this.createTime = createTime; return this; } + public GpuResponseDTO build() { - // 必填字段校验(如网页2的推荐) + // 必填字段校验 if (id == null) { throw new IllegalArgumentException("GPU ID必须填写"); } - return new GpuResponseDTO(); + + GpuResponseDTO dto = new GpuResponseDTO(); + dto.setGPUId(id); + dto.setGPUModel(model); + dto.setGPUMemorySize(memory); + dto.setIp(ip); + dto.setCreateTime(createTime); // 正确赋值createTime + + return dto; } } - public String getCreateTimeStr(){ - return "GPU创建时间:" + createTime.toString(); + + public String getCreateTimeStr() { + return "GPU创建时间:" + (createTime != null ? createTime.toString() : "未设置"); } -} +} \ No newline at end of file diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/GpuUpdateDTO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/GpuUpdateDTO.java index 10263d5..22ad852 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/GpuUpdateDTO.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/GpuUpdateDTO.java @@ -1,5 +1,6 @@ package com.bipt.intelligentapplicationorchestrationservice.pojo; +import com.fasterxml.jackson.annotation.JsonProperty; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Pattern; import lombok.*; @@ -7,14 +8,36 @@ import lombok.*; @Data @AllArgsConstructor @NoArgsConstructor -//@Setter -//@Getter +@Setter +@Getter public class GpuUpdateDTO { - public @NotNull(message = "GPU ID cannot be null") Long getGPUId() { - return GPUId; + + private Long GPUId; + + public @Pattern(regexp = "^([A-Z][A-Z0-9-]+)-\\w+", + message = "型号格式应为 [厂商(大写字母开头)]-[型号],如 Intel-Xe_GPU") String getGPUModel() { + return GPUModel; } - public void setGPUId(@NotNull(message = "GPU ID cannot be null") Long GPUId) { + public @Pattern(regexp = "^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$", + message = "IP地址格式无效") String getIp() { + return Ip; + } + + @Pattern(regexp = "^([A-Z][A-Z0-9-]+)-\\w+", + message = "型号格式应为 [厂商(大写字母开头)]-[型号],如 Intel-Xe_GPU") + @JsonProperty("GPUModel") // 显示指定JSON映射名称 + private String GPUModel; + + @JsonProperty("GPUMemorySize") // 显示指定JSON映射名称 + private Integer GPUMemorySize; + + @Pattern(regexp = "^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$", + message = "IP地址格式无效") + @JsonProperty("Ip") // 显示指定JSON映射名称 + private String Ip; + + public void setGPUId(Long GPUId) { this.GPUId = GPUId; } @@ -27,18 +50,15 @@ public class GpuUpdateDTO { message = "IP地址格式无效") String ip) { Ip = ip; } + public Long getGPUId() { + return GPUId; + } - @NotNull(message = "GPU ID cannot be null") - private Long GPUId; + public Integer getGPUMemorySize() { + return GPUMemorySize; + } - @Pattern(regexp = "^([A-Z][A-Z0-9-]+)-\\w+", - message = "型号格式应为 [厂商(大写字母开头)]-[型号],如 Intel-Xe_GPU") - private String GPUModel; - - @Setter - private Integer GPUMemorySize; - - @Pattern(regexp = "^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$", - message = "IP地址格式无效") - private String Ip; + public void setGPUMemorySize(Integer GPUMemorySize) { + this.GPUMemorySize = GPUMemorySize; + } } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ResponseVO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ResponseVO.java index 06e356e..60d432b 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ResponseVO.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ResponseVO.java @@ -35,4 +35,28 @@ public class ResponseVO implements Serializable { public static ResponseVO error(ErrorCodeEnum errorCode) { return new ResponseVO<>(errorCode.getCode(), errorCode.getMessage(), null); } + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublishVO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublishVO.java index 0500cf5..c08bc6a 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublishVO.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublishVO.java @@ -17,9 +17,9 @@ import java.time.LocalDateTime; @AllArgsConstructor public class ServicePublishVO implements Serializable { private Long modelId; - private String GPUModel; + /*private String GPUModel;*/ private String ip; - private String GPUMemorySize; +/* private String GPUMemorySize;*/ private String apiUrl; diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/AlgorithmInfoServiceImpl.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/AlgorithmInfoServiceImpl.java index 97f61d0..0fd8dca 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/AlgorithmInfoServiceImpl.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/AlgorithmInfoServiceImpl.java @@ -97,6 +97,7 @@ public class AlgorithmInfoServiceImpl implements AlgorithmInfoService { @Override public String run(Long id, String param) { + //todo从分布式存储中拿到文件(以下是示例) String file = algorithmInfoMapper.getFileById(id); StringBuilder result = new StringBuilder(); // 用于存储结果 diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/PublishServiceImpl.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/PublishServiceImpl.java index 4788340..a5f0b6f 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/PublishServiceImpl.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/PublishServiceImpl.java @@ -2,12 +2,15 @@ package com.bipt.intelligentapplicationorchestrationservice.service.Impl; import com.bipt.intelligentapplicationorchestrationservice.mapper.PublishMapper; import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishDTO; +import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishVO; import com.bipt.intelligentapplicationorchestrationservice.service.PublishService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + /** * @author hky */ @@ -35,6 +38,10 @@ public class PublishServiceImpl implements PublishService { publishMapper.insert(servicePublishDTO); } + @Override + public List listPublishedServices() { + return publishMapper.listPublishedServices(); + } } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/PublishService.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/PublishService.java index 851891f..11f43b8 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/PublishService.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/PublishService.java @@ -1,12 +1,14 @@ package com.bipt.intelligentapplicationorchestrationservice.service; import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishDTO; +import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishVO; + +import java.util.List; public interface PublishService { void save(ServicePublishDTO servicePublishDTO); - - + List listPublishedServices(); } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/impl/GpuManageServiceImpl.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/impl/GpuManageServiceImpl.java index 6089c89..f5d2198 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/impl/GpuManageServiceImpl.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/impl/GpuManageServiceImpl.java @@ -1,7 +1,7 @@ package com.bipt.intelligentapplicationorchestrationservice.service.impl; import com.bipt.intelligentapplicationorchestrationservice.mapper.GpuResourceDao; -import com.bipt.intelligentapplicationorchestrationservice.mapper.GpuMapper; +import com.bipt.intelligentapplicationorchestrationservice.entity.GpuMapper; import com.bipt.intelligentapplicationorchestrationservice.pojo.GpuCreateDTO; import com.bipt.intelligentapplicationorchestrationservice.pojo.GpuResponseDTO; import com.bipt.intelligentapplicationorchestrationservice.pojo.GpuUpdateDTO; diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index c16aefa..a7ba8c7 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -57,4 +57,6 @@ spring.servlet.multipart.max-request-size=100MB # 激活开发环境!告诉 Spring:加载 application-dev.properties 里的配置 spring.profiles.active=dev +#配置IP列表(后续根据需求修改ip数据,以下仅为测试用例) +available.ips=192.168.1.100,192.168.1.101,192.168.1.102 diff --git a/src/main/resources/mapper/GpuResourceMapper.xml b/src/main/resources/mapper/GpuResourceMapper.xml index ec4db54..5efd63d 100644 --- a/src/main/resources/mapper/GpuResourceMapper.xml +++ b/src/main/resources/mapper/GpuResourceMapper.xml @@ -2,10 +2,19 @@ - + + + + + + + + + +