前言
前面说明了如何使用Web Service SDK登录vCenter Server以及获取虚拟机总数,这次就来说一下如何获取虚拟机的CPU个数以及内存大小。
实现
void getVirtualMachineConfig() {
//ServiceContent这个类跟mob首页的ServiceContent对应起来的,这里相当于拿到一个容器
ManagedObjectReference propCol = connection.getServiceContent().getPropertyCollector();
getMOREFs = new GetMOREF(connection);
try {
//根据虚拟机名称拿到对应的引用
ManagedObjectReference vmRef = getMOREFs.vmByVMname("CentOS6.5", propCol);
//解析虚拟机summary属性
VirtualMachineSummary vmSummary = (VirtualMachineSummary)
getMOREFs.entityProps(vmRef, new String[]{"summary"}).get("summary");
System.out.println(vmSummary.getConfig().getMemorySizeMB());
System.out.println(vmSummary.getConfig().getNumCpu());
} catch (InvalidPropertyFaultMsg invalidPropertyFaultMsg) {
invalidPropertyFaultMsg.printStackTrace();
} catch (RuntimeFaultFaultMsg runtimeFaultFaultMsg) {
runtimeFaultFaultMsg.printStackTrace();
}
}
这个地方只提供了一种套路,按照这种套路,大家可以获取虚拟机中所有的配置,mob中有的属性,使用这种套路都可以得到。
VirtualMachineSummary vmSummary = (VirtualMachineSummary)
getMOREFs.entityProps(vmRef, new String[]{"summary"}).get("summary");
这行代码中的summary对应mob中虚拟机的summary属性,VMware为虚拟机的每个配置都定义了一种数据结构,例如VirtualMa chineCapability(定义了虚拟机兼容性)、VirtualMachineConfigInfo(虚拟机配置信息)、VirtualMachineSummary(虚拟机摘要信息)等。