Compare commits
7 Commits
Author | SHA1 | Date |
---|---|---|
|
db97a4cea9 | |
|
a8f925a459 | |
|
7df7518982 | |
|
0c472d7357 | |
|
79ca2cfcc2 | |
|
07329a2e0c | |
|
62b373324d |
|
@ -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;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue