处理大屏展示资源使用情况问题

develop
bayuzhen 2024-05-30 15:00:22 +08:00
parent 4b6bf6bb54
commit 185d1cd9ad
1 changed files with 98 additions and 80 deletions

View File

@ -150,88 +150,31 @@ public class ServerServiceImpl implements ServerService {
vendorId = Long.valueOf(paramMap.get("vendorId").toString()); vendorId = Long.valueOf(paramMap.get("vendorId").toString());
} }
} }
CloudVendor vendor = cloudVendorRepository.listById(vendorId); if (null == vendorId) {
if (simple) { Integer totals = 0;
int total = this.serverRepository.count(params, labelContent, vendorType); List<CloudVendor> vendorList = cloudVendorRepository.queryProxy().col(GenericEntity::getDeleted).eq(0).list();
List<SimpleBean> beans = this.serverRepository.list(params, sorter, labelContent); List<Server> servers = new ArrayList<>();
gridBean = new GridBean(1, 1, total, beans); for (CloudVendor cloudVendor : vendorList) {
vendorType = cloudVendor.getType();
int total = this.serverRepository.counts(params, labelContent, vendorType, clusterName, vdcName);
List<Server> list = this.serverRepository.list(page, rows, params, sorter, labelContent, vendorType, clusterName, vdcName);
getServerList(rows, params, cloudVendor, list);
servers.addAll(list);
totals += total;
}
gridBean = GridHelper.getBean(page, rows, totals, servers);
} else { } else {
int total = this.serverRepository.counts(params, labelContent, vendorType, clusterName, vdcName); CloudVendor vendor = cloudVendorRepository.listById(vendorId);
List<Server> list = this.serverRepository.list(page, rows, params, sorter, labelContent, vendorType, clusterName, vdcName); if (simple) {
int total = this.serverRepository.count(params, labelContent, vendorType);
String azUuid, azName, ratioDesc; List<SimpleBean> beans = this.serverRepository.list(params, sorter, labelContent);
Long cpuUsed, cpuHz; gridBean = new GridBean(1, 1, total, beans);
Double memoryCapacity, memUsed; } else {
ServerConfig config; int total = this.serverRepository.counts(params, labelContent, vendorType, clusterName, vdcName);
Map<String, String> allAzUuidNameMap = sangforAzService.getAllAzUuidNameMap(); List<Server> list = this.serverRepository.list(page, rows, params, sorter, labelContent, vendorType, clusterName, vdcName);
Map<Long, String> netMap = new HashMap<>(); getServerList(rows, params, vendor, list);
if (null != vendor && "CLOUDTOWER".equals(vendor.getType())) { gridBean = GridHelper.getBean(page, rows, total, list);
List<Long> collect = list.stream().map(Server::getId).collect(Collectors.toList());
List<NetworkCard> networkCardList = networkCardRepository.queryProxy().col(NetworkCard::getHostId).in(collect)
.col(NetworkCard::getCategory).eq("PM")
.col(GenericEntity::getDeleted).eq(false).list();
netMap = networkCardList.stream().collect(Collectors.toMap(NetworkCard::getHostId, NetworkCard::getInstanceId, (existingValue, newValue) -> newValue));
} }
for (Server server : list) {
if (null != vendor && "CLOUDTOWER".equals(vendor.getType())) {
server.setNicUuid(netMap.get(server.getId()));
}
azUuid = server.getAzUuid();
if (StringUtils.isNotEmpty(azUuid)) {
azName = allAzUuidNameMap.get(azUuid);
if (StringUtils.isNotEmpty(azName)) {
server.setAzName(azName);
}
}
List<NetworkCard> networkCards = networkCardRepository.listByHostIdAndSwitcherAvailable(server.getId(), true);
server.setNetcards(networkCards);
params.clear();
params.add(new Param(MapTools.simpleMap("hostId", server.getId()), Sign.EQ));
int vmNum = cloudServerRepository.count(params, 0L);
params.add(new Param(MapTools.simpleMap("isTemplate", 1), Sign.EQ));
int templateNum = cloudServerRepository.count(params, 0L);
server.setVmNum(vmNum - templateNum);
server.setTemplateNum(templateNum);
if (!StringUtils.isEmpty(server.getResourceGroup())) {
Dictionary dictionary = dictionaryRepository.query(server.getResourceGroup(), "RESOURCE_GROUP");
if (null != dictionary) {
server.setResourceGroupName(dictionary.getName());
}
}
// 设置这个物理机的资源池
if (ServerAssetCategory.X86_SERVER.name().equals(server.getAssetCategory())) {
// 这是一个x86物理机
server.setGroupName(poolGroupRepository.getGroupNameByResourceTarget(server.getId(),
ResourceCategory.Computer.name(), ResourceCatalog.PHYSICAL.name()));
}
Optional.ofNullable(this.serverConfigRepository.getBySid(server.getId()))
.ifPresent(server::setConfig);
config = server.getConfig();
Optional.ofNullable(server.getRole()).ifPresent(role -> {
server.setRoles(new ArrayList<>(Arrays.asList(role.split(","))));
server.getRoles().remove("nfs_gateway");
});
// 深信服6.8宿主机下拉框增加CPU和内存利用率(非实时数据,以上次同步时候的数据计算)
if ("6.8".equalsIgnoreCase(vendor.getVersion()) && CloudProvider.SANGFOR.name().equals(vendor.getType()) && rows == 9999) {
ratioDesc = "(CPU" + new BigDecimal(server.getCpuRatio()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_UP).toString() + "%" + "-内存" + new BigDecimal(server.getMemRatio()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_UP).toString() + "%)";
server.setName(server.getName() + ratioDesc);
}
// vmware宿主机下拉框增加CPU和内存利用率(非实时数据,以上次同步时候的数据计算)
if (CloudProvider.VMWARE.name().equals(vendor.getType()) && rows >= 9999 && config != null) {
cpuUsed = (config.getCpuUsed() != null ? config.getCpuUsed() : 0L);
cpuHz = (config.getCpuHz() != null ? config.getCpuHz() : 0L);
memUsed = (config.getMemUsed() != null ? config.getMemUsed() : 0D);
memoryCapacity = (config.getMemoryCapacity() != null ? config.getMemoryCapacity() : 0D);
if (cpuHz > 0L && memoryCapacity > 0D) {
ratioDesc = "(CPU" + new BigDecimal(cpuUsed * 1.0D / cpuHz).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_UP).toString() + "%" + "-内存" + new BigDecimal(memUsed / memoryCapacity).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_UP).toString() + "%)";
server.setName(server.getName() + ratioDesc);
}
}
}
gridBean = GridHelper.getBean(page, rows, total, list);
} }
return new BocloudResult(true, gridBean, "查询成功"); return new BocloudResult(true, gridBean, "查询成功");
} catch (Exception e) { } catch (Exception e) {
@ -240,6 +183,81 @@ public class ServerServiceImpl implements ServerService {
} }
} }
private void getServerList(int rows, List<Param> params, CloudVendor vendor, List<Server> list) throws Exception {
String azUuid, azName, ratioDesc;
Long cpuUsed, cpuHz;
Double memoryCapacity, memUsed;
ServerConfig config;
Map<String, String> allAzUuidNameMap = sangforAzService.getAllAzUuidNameMap();
Map<Long, String> netMap = new HashMap<>();
if (null != vendor && "CLOUDTOWER".equals(vendor.getType())) {
List<Long> collect = list.stream().map(Server::getId).collect(Collectors.toList());
List<NetworkCard> networkCardList = networkCardRepository.queryProxy().col(NetworkCard::getHostId).in(collect)
.col(NetworkCard::getCategory).eq("PM")
.col(GenericEntity::getDeleted).eq(false).list();
netMap = networkCardList.stream().collect(Collectors.toMap(NetworkCard::getHostId, NetworkCard::getInstanceId, (existingValue, newValue) -> newValue));
}
for (Server server : list) {
if (null != vendor && "CLOUDTOWER".equals(vendor.getType())) {
server.setNicUuid(netMap.get(server.getId()));
}
azUuid = server.getAzUuid();
if (StringUtils.isNotEmpty(azUuid)) {
azName = allAzUuidNameMap.get(azUuid);
if (StringUtils.isNotEmpty(azName)) {
server.setAzName(azName);
}
}
List<NetworkCard> networkCards = networkCardRepository.listByHostIdAndSwitcherAvailable(server.getId(), true);
server.setNetcards(networkCards);
params.clear();
params.add(new Param(MapTools.simpleMap("hostId", server.getId()), Sign.EQ));
int vmNum = cloudServerRepository.count(params, 0L);
params.add(new Param(MapTools.simpleMap("isTemplate", 1), Sign.EQ));
int templateNum = cloudServerRepository.count(params, 0L);
server.setVmNum(vmNum - templateNum);
server.setTemplateNum(templateNum);
if (!StringUtils.isEmpty(server.getResourceGroup())) {
Dictionary dictionary = dictionaryRepository.query(server.getResourceGroup(), "RESOURCE_GROUP");
if (null != dictionary) {
server.setResourceGroupName(dictionary.getName());
}
}
// 设置这个物理机的资源池
if (ServerAssetCategory.X86_SERVER.name().equals(server.getAssetCategory())) {
// 这是一个x86物理机
server.setGroupName(poolGroupRepository.getGroupNameByResourceTarget(server.getId(),
ResourceCategory.Computer.name(), ResourceCatalog.PHYSICAL.name()));
}
Optional.ofNullable(this.serverConfigRepository.getBySid(server.getId()))
.ifPresent(server::setConfig);
config = server.getConfig();
Optional.ofNullable(server.getRole()).ifPresent(role -> {
server.setRoles(new ArrayList<>(Arrays.asList(role.split(","))));
server.getRoles().remove("nfs_gateway");
});
// 深信服6.8宿主机下拉框增加CPU和内存利用率(非实时数据,以上次同步时候的数据计算)
if ("6.8".equalsIgnoreCase(vendor.getVersion()) && CloudProvider.SANGFOR.name().equals(vendor.getType()) && rows == 9999) {
ratioDesc = "(CPU" + new BigDecimal(server.getCpuRatio()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_UP).toString() + "%" + "-内存" + new BigDecimal(server.getMemRatio()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_UP).toString() + "%)";
server.setName(server.getName() + ratioDesc);
}
// vmware宿主机下拉框增加CPU和内存利用率(非实时数据,以上次同步时候的数据计算)
if (CloudProvider.VMWARE.name().equals(vendor.getType()) && rows >= 9999 && config != null) {
cpuUsed = (config.getCpuUsed() != null ? config.getCpuUsed() : 0L);
cpuHz = (config.getCpuHz() != null ? config.getCpuHz() : 0L);
memUsed = (config.getMemUsed() != null ? config.getMemUsed() : 0D);
memoryCapacity = (config.getMemoryCapacity() != null ? config.getMemoryCapacity() : 0D);
if (cpuHz > 0L && memoryCapacity > 0D) {
ratioDesc = "(CPU" + new BigDecimal(cpuUsed * 1.0D / cpuHz).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_UP).toString() + "%" + "-内存" + new BigDecimal(memUsed / memoryCapacity).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_UP).toString() + "%)";
server.setName(server.getName() + ratioDesc);
}
}
}
}
@Override @Override
public BocloudResult<String> modify(String params, RequestContext context) { public BocloudResult<String> modify(String params, RequestContext context) {
return new BocloudResult(false, ServerService.class.getSimpleName() + "的modify方法未实现"); return new BocloudResult(false, ServerService.class.getSimpleName() + "的modify方法未实现");