我的目标是获取特定数据中心中所有数据存储的列表。我能够列出所有主机和虚拟机,但不能列出数据存储,我不明白为什么(我仍在学习 API)。任何见解将不胜感激。
这是获取所有 VM 的代码(按预期工作):
public List<VM> getVMsInDatacenter(String datacenter, IEnumerable<String> properties)
{
List<VM> VMs = null;
this.joinConnection((appUtil) =>
{
var svcUtil = appUtil.getServiceUtil();
var dcMoRef = svcUtil.GetDecendentMoRef(null, "Datacenter", datacenter);
var typeinfo = buildTypeInfo("VirtualMachine", properties.ToList());
VMs = buildVMsFromObjectContent(svcUtil.GetContentsRecursively(null, dcMoRef, typeinfo, true));
});
return VMs;
}
这是 Datastore 的类似代码(不能按预期工作):
public List<DataStore> getDataStoresInDatacenter(String datacenter, IEnumerable<String> properties)
{
List<DataStore> DataStores = null;
this.joinConnection((appUtil) =>
{
var svcUtil = appUtil.getServiceUtil();
var dcMoRef = svcUtil.GetDecendentMoRef(null, "Datacenter", datacenter);
var typeinfo = buildTypeInfo("Datastore", properties.ToList());
DataStores = buildDataStoresFromObjectContent(svcUtil.GetContentsRecursively(null, dcMoRef, typeinfo, true));
});
return DataStores;
}
appUtil 是随 VIM SDK 示例一起提供的 AppUtil 类的实例化。它包含连接、查询等功能。
joinConnection 是一种连接方法,如果我们已经连接,则重新使用连接。
如果对代码有任何其他问题,请告诉我。
另外,如果有更好的方法,我也想知道:)