Compare commits

..

No commits in common. "f2b298f9c72fe0514e183837186e1418df4f4e65" and "0292dcb065f6152a870b7d8155558d962a343bad" have entirely different histories.

14 changed files with 108 additions and 106 deletions

View File

@ -10,7 +10,7 @@ WORKDIR /app
COPY target/*.jar app.jar
# 暴露应用端口
EXPOSE 8113
EXPOSE 8112
# 启动应用
ENTRYPOINT ["java", "-jar", "app.jar"]

View File

@ -1,11 +1,10 @@
services:
app:
build: .
image: nex-be:1.0.0
image: nex-be:1.0.3
container_name: nex-be
ports:
- "8113:8113"
- "50051:50051"
volumes:
- /var/lib/vdi/:/var/lib/vdi/
environment:

View File

@ -59,7 +59,8 @@ public class NetworkManageController {
@ApiOperation(value = "同步数据和状态")
@GetMapping("/synchData")
public Result<?> synchData() {
return Result.successResult(networkManageService.synchData());
networkManageService.synchData();
return Result.successResult();
}
}

View File

@ -65,7 +65,8 @@ public class StoragePoolController {
@ApiOperation(value = "同步数据")
@GetMapping("/synchData")
public Result<?> synchData() {
return Result.successResult(storagePoolService.synchData());
storagePoolService.synchData();
return Result.successResult();
}
}

View File

@ -76,25 +76,4 @@ 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;
}

View File

@ -3,7 +3,6 @@
package com.unisinsight.project.entity.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSetter;
import lombok.Data;
@Data
@ -52,21 +51,4 @@ 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;
}
}
}

View File

@ -1,15 +1,8 @@
// 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;
@ -17,25 +10,96 @@ public class VmStoragePool {
private Long available;
private Integer autostart;
private Integer persistent;
@JsonProperty("volume_count")
private Integer volumeCount;
private String type;
private String path;
// 自定义 setter在设置 name 时同步到 poolName
public void setName(String name) {
this.name = name;
if (name != null) {
this.poolName = name;
}
// Getters and Setters
public String getName() {
return name;
}
// 自定义 setter在设置 poolName 时同步到 name
@JsonSetter("pool_name")
public void setPoolName(String poolName) {
this.poolName = poolName;
if (poolName != null) {
this.name = poolName;
public void setName(String name) {
this.name = 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;
}
}

View File

@ -69,8 +69,8 @@ public class NetworkManageReq {
/**
* DHCP
*/
@ApiModelProperty(value = "DHCP启用状态1 启用 0 不启用")
@JsonProperty("dhcp_enabled")
@ApiModelProperty(value = "DHCP启用状态")
@JsonProperty("dhcp_enabled1 启用 0 不启用")
private Short dhcpEnabled;
/**
@ -100,8 +100,8 @@ public class NetworkManageReq {
/**
*
*/
@ApiModelProperty(value = "状态,新增时不传1活跃0非活跃")
@JsonProperty("status")
@ApiModelProperty(value = "状态,新增时不传")
@JsonProperty("status1活跃0非活跃")
private Integer status;
/**

View File

@ -31,20 +31,6 @@ 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")

View File

@ -62,5 +62,5 @@ public interface NetworkManageService {
*/
PageResult<NetworkManage> pageNetworkManages(NetworkManagePageReq networkManagePageReq);
String synchData();
void synchData();
}

View File

@ -51,5 +51,5 @@ public interface StoragePoolService {
*/
PageResult<StoragePool> pageStoragePools(StoragePoolReq storagePoolReq);
String synchData();
void synchData();
}

View File

@ -50,7 +50,7 @@ public class NetworkManageServiceImpl extends ServiceImpl<NetworkManageMapper, N
public NetworkManage addNetworkManage(NetworkManageReq networkManageReq) {
// 检查名称是否重复
QueryWrapper<NetworkManage> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("network_name", networkManageReq.getNetworkName());
queryWrapper.eq("name", networkManageReq.getNetworkName());
if (this.count(queryWrapper) > 0) {
throw new BusinessException("网络名称'" + networkManageReq.getNetworkName() + "'已存在,请使用其他名称");
}
@ -242,8 +242,7 @@ public class NetworkManageServiceImpl extends ServiceImpl<NetworkManageMapper, N
*/
@Override
// @Transactional
public String synchData() {
StringBuffer sb = new StringBuffer();
public void synchData() {
ApiResponse<NetworkData> response;
try {
response = client.list(1, 100);
@ -256,7 +255,7 @@ public class NetworkManageServiceImpl extends ServiceImpl<NetworkManageMapper, N
List<Network> networkList = response.getData().getNetworks();
if (CollectionUtils.isEmpty(networkList)) {
return "同步成功,无数据更新";
return;
}
log.info("开始同步网络数据,共{}条记录", networkList.size());
@ -295,12 +294,10 @@ public class NetworkManageServiceImpl extends ServiceImpl<NetworkManageMapper, N
// 执行批量操作,分批处理避免大数据量问题
if (!toUpdate.isEmpty()) {
updateBatch(toUpdate);
sb.append("更新 ").append(toUpdate.size()).append(" 条存储池数据\n");
}
if (!toInsert.isEmpty()) {
insertBatch(toInsert);
sb.append("插入 ").append(toInsert.size()).append(" 条存储池数据\n");
}
// 删除不存在的记录
@ -316,9 +313,7 @@ public class NetworkManageServiceImpl extends ServiceImpl<NetworkManageMapper, N
if (!idsToDelete.isEmpty()) {
log.info("需要删除{}条记录", idsToDelete.size());
this.removeByIds(idsToDelete);
sb.append("删除 ").append(idsToDelete.size()).append(" 条存储池数据\n");
}
return sb.toString();
}
private void updateBatch(List<NetworkManage> list) {

View File

@ -3,10 +3,9 @@ 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.ApiResponse;
import com.unisinsight.project.entity.dto.StoragePoolData;
import com.unisinsight.project.entity.dto.VmStoragePool;
import com.unisinsight.project.entity.dto.*;
import com.unisinsight.project.entity.req.StoragePoolReq;
import com.unisinsight.project.entity.res.PageResult;
import com.unisinsight.project.exception.BusinessException;
@ -17,6 +16,7 @@ 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<StoragePoolMapper, Stora
public StoragePool addStoragePool(StoragePoolReq storagePoolReq) {
// 检查名称是否重复
QueryWrapper<StoragePool> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("pool_name", storagePoolReq.getPoolName());
queryWrapper.eq("name", storagePoolReq.getPoolName());
if (this.count(queryWrapper) > 0) {
throw new BusinessException("存储池名称'" + storagePoolReq.getPoolName() + "'已存在,请使用其他名称");
}
@ -187,8 +187,7 @@ public class StoragePoolServiceImpl extends ServiceImpl<StoragePoolMapper, Stora
@Override
@Transactional(rollbackFor = Exception.class)
public String synchData() {
StringBuffer sb = new StringBuffer();
public void synchData() {
ApiResponse<StoragePoolData> response;
try {
response = client.listStorage(1, 100);
@ -221,7 +220,7 @@ public class StoragePoolServiceImpl extends ServiceImpl<StoragePoolMapper, Stora
StoragePool storagePool = new StoragePool();
BeanUtils.copyProperties(remotePool, storagePool);
storagePool.setPoolName(remotePool.getName());
storagePool.setStatus("active".equals(remotePool.getState()) ? 1 : 0);
storagePool.setStatus("active".equals(remotePool.getState()) ? 1 : 2);
if (localPool == null) {
// 新增项
@ -249,13 +248,11 @@ public class StoragePoolServiceImpl extends ServiceImpl<StoragePoolMapper, Stora
if (!toAdd.isEmpty()) {
this.saveBatch(toAdd);
log.info("新增 {} 条存储池数据", toAdd.size());
sb.append("新增 ").append(toAdd.size()).append(" 条存储池数据\n");
}
if (!toUpdate.isEmpty()) {
this.updateBatchById(toUpdate);
log.info("更新 {} 条存储池数据", toUpdate.size());
sb.append("更新 ").append(toUpdate.size()).append(" 条存储池数据\n");
}
if (!toRemoveNames.isEmpty()) {
@ -263,9 +260,7 @@ public class StoragePoolServiceImpl extends ServiceImpl<StoragePoolMapper, Stora
deleteWrapper.in("pool_name", toRemoveNames);
this.remove(deleteWrapper);
log.info("删除 {} 条存储池数据", toRemoveNames.size());
sb.append("删除 ").append(toRemoveNames.size()).append(" 条存储池数据\n");
}
return sb.toString();
}
}

View File

@ -81,4 +81,4 @@ logging:
com.unisinsight.project.feign.ExternalApiClient: debug
external:
api:
url: http://10.100.51.178:8000
url: http://10.100.51.118:8000