私の目標は、特定のデータセンター内のすべてのデータストアの一覧を取得することです。すべてのホストと VM を一覧表示できますが、データストアは一覧表示できません。その理由がわかりません (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;
}
データストアの類似コードを次に示します (期待どおりに動作しません)。
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 は、接続するためのメソッド、または既に接続している場合は接続を再利用するためのメソッドです。
コードについて他に質問がある場合は、お知らせください。
また、もっと良い方法があれば、それも知りたいです:)