diff --git a/nex-be/Dockerfile b/nex-be/Dockerfile index 2f3b848..c7e4359 100644 --- a/nex-be/Dockerfile +++ b/nex-be/Dockerfile @@ -10,7 +10,7 @@ WORKDIR /app COPY target/*.jar app.jar # 暴露应用端口 -EXPOSE 8112 +EXPOSE 8113 # 启动应用 ENTRYPOINT ["java", "-jar", "app.jar"] diff --git a/nex-be/docker-compose.yaml b/nex-be/docker-compose.yaml index d82aaa5..9dca2b3 100644 --- a/nex-be/docker-compose.yaml +++ b/nex-be/docker-compose.yaml @@ -1,12 +1,13 @@ services: app: build: . - image: nex-be:1.0.3 + image: nex-be:1.0.0 container_name: nex-be ports: - "8113:8113" + - "50051:50051" volumes: - /var/lib/vdi/:/var/lib/vdi/ environment: - SPRING_PROFILES_ACTIVE=prod - restart: always \ No newline at end of file + restart: always diff --git a/nex-be/src/main/java/com/unisinsight/project/controller/NetworkManageController.java b/nex-be/src/main/java/com/unisinsight/project/controller/NetworkManageController.java index 0d9e2c7..b7bbb94 100644 --- a/nex-be/src/main/java/com/unisinsight/project/controller/NetworkManageController.java +++ b/nex-be/src/main/java/com/unisinsight/project/controller/NetworkManageController.java @@ -59,8 +59,7 @@ public class NetworkManageController { @ApiOperation(value = "同步数据和状态") @GetMapping("/synchData") public Result synchData() { - networkManageService.synchData(); - return Result.successResult(); + return Result.successResult(networkManageService.synchData()); } } diff --git a/nex-be/src/main/java/com/unisinsight/project/controller/StoragePoolController.java b/nex-be/src/main/java/com/unisinsight/project/controller/StoragePoolController.java index 2304d25..7bb026b 100644 --- a/nex-be/src/main/java/com/unisinsight/project/controller/StoragePoolController.java +++ b/nex-be/src/main/java/com/unisinsight/project/controller/StoragePoolController.java @@ -65,8 +65,7 @@ public class StoragePoolController { @ApiOperation(value = "同步数据") @GetMapping("/synchData") public Result synchData() { - storagePoolService.synchData(); - return Result.successResult(); + return Result.successResult(storagePoolService.synchData()); } } diff --git a/nex-be/src/main/java/com/unisinsight/project/entity/dao/StoragePool.java b/nex-be/src/main/java/com/unisinsight/project/entity/dao/StoragePool.java index 3872265..e0eba0b 100644 --- a/nex-be/src/main/java/com/unisinsight/project/entity/dao/StoragePool.java +++ b/nex-be/src/main/java/com/unisinsight/project/entity/dao/StoragePool.java @@ -76,4 +76,25 @@ public class StoragePool { @TableField("create_user") @ApiModelProperty(value = "创建用户") private String createUser; + + /** + * 总容量 + */ + @TableField(exist = false) + @ApiModelProperty(value = "总容量") + private Long capacity; + + /** + * 已分配容量 + */ + @TableField(exist = false) + @ApiModelProperty(value = "已分配容量") + private Long allocation; + + /** + * 可用容量 + */ + @TableField(exist = false) + @ApiModelProperty(value = "可用容量") + private Long available; } diff --git a/nex-be/src/main/java/com/unisinsight/project/entity/dto/Network.java b/nex-be/src/main/java/com/unisinsight/project/entity/dto/Network.java index a7d35e5..42fcf80 100644 --- a/nex-be/src/main/java/com/unisinsight/project/entity/dto/Network.java +++ b/nex-be/src/main/java/com/unisinsight/project/entity/dto/Network.java @@ -3,6 +3,7 @@ package com.unisinsight.project.entity.dto; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; import lombok.Data; @Data @@ -51,4 +52,21 @@ public class Network { @JsonProperty("vlan_id") private Integer vlanId; + + // 自定义 setter,在设置 name 时同步到 networkName + public void setName(String name) { + this.name = name; + if (name != null) { + this.networkName = name; + } + } + + // 自定义 setter,在设置 poolName 时同步到 name + @JsonSetter("network_name") + public void setPoolName(String poolName) { + this.networkName = poolName; + if (poolName != null) { + this.name = poolName; + } + } } \ No newline at end of file diff --git a/nex-be/src/main/java/com/unisinsight/project/entity/dto/VmStoragePool.java b/nex-be/src/main/java/com/unisinsight/project/entity/dto/VmStoragePool.java index 1709af9..c14df0a 100644 --- a/nex-be/src/main/java/com/unisinsight/project/entity/dto/VmStoragePool.java +++ b/nex-be/src/main/java/com/unisinsight/project/entity/dto/VmStoragePool.java @@ -1,8 +1,15 @@ // StoragePool.java - 存储池信息对象 package com.unisinsight.project.entity.dto; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import lombok.Data; + +@Data public class VmStoragePool { private String name; + @JsonProperty("pool_name") + private String poolName; private String uuid; private String state; private Long capacity; @@ -10,96 +17,25 @@ public class VmStoragePool { private Long available; private Integer autostart; private Integer persistent; + @JsonProperty("volume_count") private Integer volumeCount; private String type; private String path; - // Getters and Setters - public String getName() { - return name; - } - + // 自定义 setter,在设置 name 时同步到 poolName public void setName(String name) { this.name = name; + if (name != null) { + this.poolName = name; + } } - public String getUuid() { - return uuid; - } - - public void setUuid(String uuid) { - this.uuid = uuid; - } - - public String getState() { - return state; - } - - public void setState(String state) { - this.state = state; - } - - public Long getCapacity() { - return capacity; - } - - public void setCapacity(Long capacity) { - this.capacity = capacity; - } - - public Long getAllocation() { - return allocation; - } - - public void setAllocation(Long allocation) { - this.allocation = allocation; - } - - public Long getAvailable() { - return available; - } - - public void setAvailable(Long available) { - this.available = available; - } - - public Integer getAutostart() { - return autostart; - } - - public void setAutostart(Integer autostart) { - this.autostart = autostart; - } - - public Integer getPersistent() { - return persistent; - } - - public void setPersistent(Integer persistent) { - this.persistent = persistent; - } - - public Integer getVolumeCount() { - return volumeCount; - } - - public void setVolumeCount(Integer volumeCount) { - this.volumeCount = volumeCount; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public String getPath() { - return path; - } - - public void setPath(String path) { - this.path = path; + // 自定义 setter,在设置 poolName 时同步到 name + @JsonSetter("pool_name") + public void setPoolName(String poolName) { + this.poolName = poolName; + if (poolName != null) { + this.name = poolName; + } } } diff --git a/nex-be/src/main/java/com/unisinsight/project/entity/req/NetworkManageReq.java b/nex-be/src/main/java/com/unisinsight/project/entity/req/NetworkManageReq.java index 2d8e60e..9b06942 100644 --- a/nex-be/src/main/java/com/unisinsight/project/entity/req/NetworkManageReq.java +++ b/nex-be/src/main/java/com/unisinsight/project/entity/req/NetworkManageReq.java @@ -69,8 +69,8 @@ public class NetworkManageReq { /** * DHCP启用状态 */ - @ApiModelProperty(value = "DHCP启用状态") - @JsonProperty("dhcp_enabled:1 启用 0 不启用") + @ApiModelProperty(value = "DHCP启用状态:1 启用 0 不启用") + @JsonProperty("dhcp_enabled") private Short dhcpEnabled; /** @@ -100,8 +100,8 @@ public class NetworkManageReq { /** * 状态 */ - @ApiModelProperty(value = "状态,新增时不传") - @JsonProperty("status:1,活跃,0,非活跃") + @ApiModelProperty(value = "状态,新增时不传:1,活跃,0,非活跃") + @JsonProperty("status") private Integer status; /** diff --git a/nex-be/src/main/java/com/unisinsight/project/entity/req/StoragePoolReq.java b/nex-be/src/main/java/com/unisinsight/project/entity/req/StoragePoolReq.java index 9296914..a12b159 100644 --- a/nex-be/src/main/java/com/unisinsight/project/entity/req/StoragePoolReq.java +++ b/nex-be/src/main/java/com/unisinsight/project/entity/req/StoragePoolReq.java @@ -31,6 +31,20 @@ public class StoragePoolReq { @JsonProperty("pool_name") private String poolName; + @ApiModelProperty("名称,用于传给虚拟机的时候用的") + @JsonProperty("storage_pool_name") + private String storagePoolName; + + + public String getStoragePoolName() { + return this.poolName; + } + + public void setPoolName(String poolName) { + this.poolName = poolName; + this.storagePoolName = poolName; // 同步值 + } + @ApiModelProperty("类型") @Size(max = 16, message = "类型长度不能超过16个字符") @JsonProperty("type") diff --git a/nex-be/src/main/java/com/unisinsight/project/service/NetworkManageService.java b/nex-be/src/main/java/com/unisinsight/project/service/NetworkManageService.java index 5760d35..ef6b2d1 100644 --- a/nex-be/src/main/java/com/unisinsight/project/service/NetworkManageService.java +++ b/nex-be/src/main/java/com/unisinsight/project/service/NetworkManageService.java @@ -62,5 +62,5 @@ public interface NetworkManageService { */ PageResult pageNetworkManages(NetworkManagePageReq networkManagePageReq); - void synchData(); + String synchData(); } diff --git a/nex-be/src/main/java/com/unisinsight/project/service/StoragePoolService.java b/nex-be/src/main/java/com/unisinsight/project/service/StoragePoolService.java index 25841b8..fb65a41 100644 --- a/nex-be/src/main/java/com/unisinsight/project/service/StoragePoolService.java +++ b/nex-be/src/main/java/com/unisinsight/project/service/StoragePoolService.java @@ -51,5 +51,5 @@ public interface StoragePoolService { */ PageResult pageStoragePools(StoragePoolReq storagePoolReq); - void synchData(); + String synchData(); } diff --git a/nex-be/src/main/java/com/unisinsight/project/service/impl/NetworkManageServiceImpl.java b/nex-be/src/main/java/com/unisinsight/project/service/impl/NetworkManageServiceImpl.java index 8abed65..7765a67 100644 --- a/nex-be/src/main/java/com/unisinsight/project/service/impl/NetworkManageServiceImpl.java +++ b/nex-be/src/main/java/com/unisinsight/project/service/impl/NetworkManageServiceImpl.java @@ -50,7 +50,7 @@ public class NetworkManageServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("name", networkManageReq.getNetworkName()); + queryWrapper.eq("network_name", networkManageReq.getNetworkName()); if (this.count(queryWrapper) > 0) { throw new BusinessException("网络名称'" + networkManageReq.getNetworkName() + "'已存在,请使用其他名称"); } @@ -242,7 +242,8 @@ public class NetworkManageServiceImpl extends ServiceImpl response; try { response = client.list(1, 100); @@ -255,7 +256,7 @@ public class NetworkManageServiceImpl extends ServiceImpl networkList = response.getData().getNetworks(); if (CollectionUtils.isEmpty(networkList)) { - return; + return "同步成功,无数据更新"; } log.info("开始同步网络数据,共{}条记录", networkList.size()); @@ -294,10 +295,12 @@ public class NetworkManageServiceImpl extends ServiceImpl list) { diff --git a/nex-be/src/main/java/com/unisinsight/project/service/impl/StoragePoolServiceImpl.java b/nex-be/src/main/java/com/unisinsight/project/service/impl/StoragePoolServiceImpl.java index f293fe2..a76b2f2 100644 --- a/nex-be/src/main/java/com/unisinsight/project/service/impl/StoragePoolServiceImpl.java +++ b/nex-be/src/main/java/com/unisinsight/project/service/impl/StoragePoolServiceImpl.java @@ -3,9 +3,10 @@ package com.unisinsight.project.service.impl; 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 com.unisinsight.project.entity.dao.NetworkManage; import com.unisinsight.project.entity.dao.StoragePool; -import com.unisinsight.project.entity.dto.*; +import com.unisinsight.project.entity.dto.ApiResponse; +import com.unisinsight.project.entity.dto.StoragePoolData; +import com.unisinsight.project.entity.dto.VmStoragePool; import com.unisinsight.project.entity.req.StoragePoolReq; import com.unisinsight.project.entity.res.PageResult; import com.unisinsight.project.exception.BusinessException; @@ -16,7 +17,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.ArrayList; @@ -46,7 +46,7 @@ public class StoragePoolServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("name", storagePoolReq.getPoolName()); + queryWrapper.eq("pool_name", storagePoolReq.getPoolName()); if (this.count(queryWrapper) > 0) { throw new BusinessException("存储池名称'" + storagePoolReq.getPoolName() + "'已存在,请使用其他名称"); } @@ -187,7 +187,8 @@ public class StoragePoolServiceImpl extends ServiceImpl response; try { response = client.listStorage(1, 100); @@ -220,7 +221,7 @@ public class StoragePoolServiceImpl extends ServiceImpl