vmare vsphere 数据中心 datacenter

数据中心 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;
}
发布了5 篇原创文章 · 获赞 0 · 访问量 19

猜你喜欢

转载自blog.csdn.net/pingzhilidexingfu/article/details/105139347