数据中心 datacenter
public List list(ServiceInstance si, String dataCenterName) {
List retList = new ArrayList();
try {
ManagedEntity[] dcs =
new InventoryNavigator(si.getRootFolder()).searchManagedEntities(CloudCodeConstant.DATACENTER);
for (int i = 0; i < dcs.length; i++) {
Datacenter dataCenter = (Datacenter)dcs[i];
ManagedEntity[] hosts =
new InventoryNavigator(dataCenter).searchManagedEntities(CloudCodeConstant.HOST_SYSTEM);
ManagedEntity[] clusters = new InventoryNavigator(dataCenter)
.searchManagedEntities(CloudCodeConstant.CLUSTER_COMPUTE_RESOURCE);
ManagedEntity[] vms =
new InventoryNavigator(dataCenter).searchManagedEntities(CloudCodeConstant.VIRTUAL_MACHINE);
long memTotal = 0;
int memUsage = 0;
int hostCpuCoreNum = 0, vmCpuCoreNum = 0;
int cpuTotalMhz = 0, cpuUsageMhz = 0;
for (ManagedEntity entity : hosts) {
HostSystem host = (HostSystem)entity;
// in bytes
memTotal += host.getSummary().getHardware().getMemorySize();
// in MB, This is only available if the host is connected
memUsage += host.getSummary().getQuickStats().getOverallMemoryUsage();
hostCpuCoreNum += host.getSummary().getHardware().getNumCpuCores();
cpuTotalMhz +=
host.getSummary().getHardware().getCpuMhz() * host.getSummary().getHardware().getNumCpuCores();
// This is only available if the host is connected.
cpuUsageMhz += host.getSummary().getQuickStats().getOverallCpuUsage();
}
int vmNum = 0;
for (ManagedEntity entity : vms) {
VirtualMachine vm = (VirtualMachine)entity;
//VirtualMachine including templates
//that can be deployed (repeatedly) as new virtual machines
if (!vm.getConfig().isTemplate()) {
vmNum += 1;
vmCpuCoreNum += vm.getSummary().getConfig().getNumCpu();
}
}
long storeTotal = 0, storeFree = 0;
for (Datastore datastore : dataCenter.getDatastores()) {
// in bytes, This property is guaranteed to be valid only if accessible is true.
// datastore.getSummary().isAccessible();
storeTotal += datastore.getSummary().getCapacity();
storeFree += datastore.getSummary().getFreeSpace();
}
UniDatacenter uniDatacenter = new UniDatacenter();
uniDatacenter.setDatacenterName(dataCenter.getName());
uniDatacenter.setClustersNum(clusters.length);
uniDatacenter.setHostNum(hosts.length);
uniDatacenter.setVmNum(vmNum);
uniDatacenter.setMemoryTotalMB((int)(memTotal / 1024 / 1024));
uniDatacenter.setMemoryUsedMB(memUsage);
uniDatacenter.setHostCpuCoreNum(hostCpuCoreNum);
uniDatacenter.setVmCpuCoreNum(vmCpuCoreNum);
uniDatacenter.setCpuTotalMhz(cpuTotalMhz);
uniDatacenter.setCpuUsedMhz(cpuUsageMhz);
uniDatacenter.setDataStoreTotalMB((int)(storeTotal / 1024 / 1024));
uniDatacenter.setDataStoreUsedMB((int)((storeTotal - storeFree) / 1024 / 1024));
retList.add(uniDatacenter);
}
} catch (RemoteException e) {
log.error(LogUtils.logs(CloudResourcesErrorEnum.VCENTER_DATACENTER_ERROR.getMessage()));
throw new CloudResourcesException(CloudResourcesErrorEnum.VCENTER_DATACENTER_ERROR);
}
return retList;
}