Compare commits

...

7 Commits

Author SHA1 Message Date
guyuliang db97a4cea9 注册ct云主机申请 2024-05-30 18:39:11 +08:00
guyuliang a8f925a459 注册ct云主机申请 2024-05-30 18:36:33 +08:00
bayuzhen 7df7518982 处理大屏展示资源使用情况问题 2024-05-30 17:13:34 +08:00
bayuzhen 0c472d7357 处理大屏展示资源使用情况问题 2024-05-30 16:58:09 +08:00
bayuzhen 79ca2cfcc2 处理大屏展示资源使用情况问题 2024-05-30 16:23:12 +08:00
bayuzhen 07329a2e0c 处理大屏展示资源使用情况问题 2024-05-30 15:39:24 +08:00
bayuzhen 62b373324d 处理大屏展示资源使用情况问题 2024-05-30 15:00:24 +08:00
5 changed files with 37 additions and 23 deletions

View File

@ -13,6 +13,6 @@ public enum CloudProviderType {
OPENSTACK, VMWARE, ALIYUN, JDCLOUD, UNKNOWN, SCP, H3C, HMC, FUSIONCLOUD, TENCENT, F5, HUAWEI, XEN, POWERVC, OPENSTACK, VMWARE, ALIYUN, JDCLOUD, UNKNOWN, SCP, H3C, HMC, FUSIONCLOUD, TENCENT, F5, HUAWEI, XEN, POWERVC,
CLOUDOS, AZURE, KINGCLOUD, KUBERNETES, AWS, QCLOUD, TCE, PQCLOUD, MANAGEONE, CLOUDOS, AZURE, KINGCLOUD, KUBERNETES, AWS, QCLOUD, TCE, PQCLOUD, MANAGEONE,
JUMPSERVER, HORIZON, TIANYI, HILLSTONE, CISCO, AGILE, NSX, CAMPUS, HCSO, VEEAM, SMARTX, VOLCENGINE, JUMPSERVER, HORIZON, TIANYI, HILLSTONE, CISCO, AGILE, NSX, CAMPUS, HCSO, VEEAM, SMARTX, VOLCENGINE,
FUSIONSPHERE,EASYSTACK; FUSIONSPHERE, EASYSTACK, CLOUDTOWER;
} }

View File

@ -74,6 +74,7 @@ public enum VendorType {
HCSO("HCSO"), HCSO("HCSO"),
FUSIONSPHERE("FUSIONSPHERE"), FUSIONSPHERE("FUSIONSPHERE"),
EASYSTACK("EASYSTACK"), EASYSTACK("EASYSTACK"),
CLOUDTOWER("CLOUDTOWER"),
; ;
private String name; private String name;

View File

@ -233,6 +233,7 @@ public class IaasResourceOperate extends AbstractResourceOperate implements Init
ResourceOperateFactory.register("vmware.standard.server", this); ResourceOperateFactory.register("vmware.standard.server", this);
ResourceOperateFactory.register("sangfor.standard.server", this); ResourceOperateFactory.register("sangfor.standard.server", this);
ResourceOperateFactory.register("smartx.standard.server", this); ResourceOperateFactory.register("smartx.standard.server", this);
ResourceOperateFactory.register("cloudtower.standard.server", this);
ResourceOperateFactory.register("openstack.standard.server", this); ResourceOperateFactory.register("openstack.standard.server", this);
ResourceOperateFactory.register("aliyun.standard.server", this); ResourceOperateFactory.register("aliyun.standard.server", this);
ResourceOperateFactory.register("huawei.standard.server", this); ResourceOperateFactory.register("huawei.standard.server", this);

View File

@ -58,6 +58,7 @@ public class ServiceResourceMapping {
MAPPING.put(ResourceCategory.Computer, Lists.newArrayList("vmware.standard.server", MAPPING.put(ResourceCategory.Computer, Lists.newArrayList("vmware.standard.server",
"sangfor.standard.server", "sangfor.standard.server",
"smartx.standard.server", "smartx.standard.server",
"cloudtower.standard.server",
"openstack.standard.server", "openstack.standard.server",
"aliyun.standard.server", "aliyun.standard.server",
"huawei.standard.server", "huawei.standard.server",

View File

@ -16,8 +16,10 @@ import com.bocloud.cos.model.ChargeResultTrend;
import com.bocloud.cos.model.ChargeTrendData; import com.bocloud.cos.model.ChargeTrendData;
import com.bocloud.cos.internal.ImsInternalService; import com.bocloud.cos.internal.ImsInternalService;
import com.bocloud.cos.utils.DateUtil; import com.bocloud.cos.utils.DateUtil;
import com.bocloud.rpc.interfaces.ims.ImsRpcService;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.Assert; import org.springframework.util.Assert;
@ -35,6 +37,8 @@ import java.util.stream.Collectors;
public class ResourceScreenServiceImpl implements ResourceScreenService { public class ResourceScreenServiceImpl implements ResourceScreenService {
private final Logger logger = LoggerFactory.getLogger(ResourceScreenServiceImpl.class); private final Logger logger = LoggerFactory.getLogger(ResourceScreenServiceImpl.class);
private final ImsInternalService imsInternalService; private final ImsInternalService imsInternalService;
@Autowired
private ImsRpcService imsRpcService;
public ResourceScreenServiceImpl(ImsInternalService imsInternalService) { public ResourceScreenServiceImpl(ImsInternalService imsInternalService) {
this.imsInternalService = imsInternalService; this.imsInternalService = imsInternalService;
@ -83,9 +87,16 @@ public class ResourceScreenServiceImpl implements ResourceScreenService {
List<CloudServer> cloudServers = imsInternalService.listVmsByVendor(null, false, requestContext); List<CloudServer> cloudServers = imsInternalService.listVmsByVendor(null, false, requestContext);
//私有云平台 //私有云平台
List<CloudVendor> cloudVendors = imsInternalService.listCloudVendor(null); List<CloudVendor> cloudVendors = imsInternalService.listCloudVendor(null);
Set<String> vendors = Set<String> vendors = new HashSet<>();
cloudVendors.stream().filter(cloudVendor -> !cloudVendor.getIsPublic()) Set<Long> vendorIds = new HashSet<>();
.map(CloudVendor::getType).collect(Collectors.toSet()); List<CloudVendor> noPublicVendors = new ArrayList<>();
for (CloudVendor cloudVendor : cloudVendors) {
if (!cloudVendor.getIsPublic()) {
noPublicVendors.add(cloudVendor);
vendors.add(cloudVendor.getType());
vendorIds.add(cloudVendor.getId());
}
}
List<CloudServer> priServers = cloudServers.stream().filter( List<CloudServer> priServers = cloudServers.stream().filter(
cloudServer -> null != cloudServer.getVendorType() && vendors.contains(cloudServer.getVendorType())) cloudServer -> null != cloudServer.getVendorType() && vendors.contains(cloudServer.getVendorType()))
.collect(Collectors.toList()); .collect(Collectors.toList());
@ -105,15 +116,15 @@ public class ResourceScreenServiceImpl implements ResourceScreenService {
long cpuTotal = 0L; long cpuTotal = 0L;
Long memTotal = 0L; Long memTotal = 0L;
int diskTotal = 0; int diskTotal = 0;
List<Server> hosts = imsInternalService.listHosts(); List<com.bocloud.ims.entity.resource.Server> hosts = imsRpcService.getServerAll(vendorIds);
hosts.removeIf(server -> null == server.getVendorId()); hosts.removeIf(server -> null == server.getVendorId());
Map<Long, List<Server>> hostMap = hosts.stream().filter(server -> null != server.getVendorId()) Map<Long, List<com.bocloud.ims.entity.resource.Server>> hostMap = hosts.stream().filter(server -> null != server.getVendorId())
.collect(Collectors.groupingBy(Server::getVendorId)); .collect(Collectors.groupingBy(com.bocloud.ims.entity.resource.Server::getVendorId));
List<CloudVendor> vmVendors = imsInternalService.listCloudVendor(VendorType.VMWARE.name()); // List<CloudVendor> vmVendors = imsInternalService.listCloudVendor(VendorType.VMWARE.name());
for (CloudVendor vendor : vmVendors) { for (CloudVendor vendor : noPublicVendors) {
List<Server> servers = Optional.ofNullable(hostMap.get(vendor.getId())).orElse(new ArrayList<>()); List<com.bocloud.ims.entity.resource.Server> servers = Optional.ofNullable(hostMap.get(vendor.getId())).orElse(new ArrayList<>());
for (Server server : servers) { for (com.bocloud.ims.entity.resource.Server server : servers) {
ServerConfig config = server.getConfig(); com.bocloud.ims.entity.resource.ServerConfig config = server.getConfig();
//从平台获取超分比 //从平台获取超分比
List<CloudVendor> collect = cloudVendors.stream().filter(vendor1 -> vendor1.getId().equals(server.getVendorId())).collect(Collectors.toList()); List<CloudVendor> collect = cloudVendors.stream().filter(vendor1 -> vendor1.getId().equals(server.getVendorId())).collect(Collectors.toList());
Assert.notNull(collect, "云平台不存在"); Assert.notNull(collect, "云平台不存在");
@ -124,23 +135,23 @@ public class ResourceScreenServiceImpl implements ResourceScreenService {
excessRatio = Long.valueOf(String.valueOf(authentication.get("excessRatio"))); excessRatio = Long.valueOf(String.valueOf(authentication.get("excessRatio")));
} }
if (null != excessRatio && 0L != excessRatio) { if (null != excessRatio && 0L != excessRatio) {
cpuTotal += config.getCpuCore() * config.getCpuAmount() * excessRatio; cpuTotal += (long) Optional.ofNullable(config.getCpuCore()).orElse(0) * Optional.ofNullable(config.getCpuAmount()).orElse(0) * excessRatio;
memTotal += config.getMemoryCapacity().longValue() * excessRatio; memTotal += Optional.ofNullable(config.getMemoryCapacity()).orElse(0.0).longValue() * excessRatio;
} else { } else {
cpuTotal += (long) config.getCpuCore() * config.getCpuAmount(); cpuTotal += (long) Optional.ofNullable(config.getCpuCore()).orElse(0) * Optional.ofNullable(config.getCpuAmount()).orElse(0);
memTotal += config.getMemoryCapacity().longValue(); memTotal += Optional.ofNullable(config.getMemoryCapacity()).orElse(0.0).longValue();
} }
diskTotal += config.getDiskCapacity().intValue(); diskTotal += Optional.ofNullable(config.getDiskCapacity()).orElse(0.0).intValue();
} }
} }
List<Server> opServers = List<com.bocloud.ims.entity.resource.Server> opServers =
hosts.stream().filter(server -> server.getVendorType().equals(VendorType.OPENSTACK.name())) hosts.stream().filter(server -> server.getVendorType().equals(VendorType.OPENSTACK.name()))
.collect(Collectors.toList()); .collect(Collectors.toList());
for (Server opServer : opServers) { for (com.bocloud.ims.entity.resource.Server opServer : opServers) {
ServerConfig config = opServer.getConfig(); com.bocloud.ims.entity.resource.ServerConfig config = opServer.getConfig();
cpuTotal += (long) config.getCpuCore() * config.getCpuAmount(); cpuTotal += (long) Optional.ofNullable(config.getCpuCore()).orElse(0) * Optional.ofNullable(config.getCpuAmount()).orElse(0);
diskTotal += config.getDiskCapacity().intValue(); diskTotal += Optional.ofNullable(config.getDiskCapacity()).orElse(0.0).intValue();
memTotal += config.getMemoryCapacity().longValue(); memTotal += Optional.ofNullable(config.getMemoryCapacity()).orElse(0.0).longValue();
} }
result.put("cpuTotal", cpuTotal); result.put("cpuTotal", cpuTotal);
result.put("memTotal", memTotal); result.put("memTotal", memTotal);