2017-02-14 4 views
1

私は、VMwareのvCloud SDKの.NETバージョンを使用しています。私は2つのストレージ、タイプ "x"とタイプ "y"のVMを持っています。しかし複数のStorageProfilesを持つVM

、vm.Resource.StorageProfile.nameを呼び出すときに私は最初のディスクの名前を取得します(x)の

vCloudClient client = new vCloudClient(url, com.vmware.vcloud.sdk.constants.Version.V1_5); 
client.Login(userName,pass); 
Organization organisation = Organization.GetOrganizationByReference(client, client.GetOrgRefsByName()[orgName]); 
Vdc vdc = Vdc.GetVdcByReference(client,organisation.GetVdcRefByName(vdcName)); 
ReferenceType vappref = vdc.GetVappRefByName("myVappName"); 
Vapp vapp = Vapp.GetVappByReference(client,vappref); 
List<VM> vms = vapp.GetChildrenVms(); 
foreach(VM vm in vms) 
{ 
    //VM I'm having trouble with 
    string storageprofile = vm.Resource.StorageProfile.name //returns value: x 
} 

「x」および「y」の両方を取得する他の方法があります倉庫?

答えて

1

ねえVDCのストレージプロファイルを経由して解析してみてください代わりに

相続人はそれのためのリンクタイプ:

https://vcloud-example/api/query?type=orgVdcStorageProfile

それはあなたがストレージプロファイルを検索する必要が必要なものではない場合特定のストレージポリシーの名前とhrefタイプのリンクを持つ各ストレージポリシーのhrefまたはリンクタイプを指定します。

ほとんどの場合、vm.GetDisksはストレージポリシー "link"(im no確かに、私はそれをすべきだと思いますが、C#、pythonとpowershellは使用しません)

+0

こんにちは、お返事ありがとうございます。私はあなたの提案を両方とも試みました。最初のものは私に「この操作は拒否されました」と述べています。 2つめは「ACCESS_TO_RESOURCE_IS_FORBIDDEN - DISALLOWED_OPERATIONS」です。私はこれが許可と関係があると仮定しますが、私が使用しているログイン情報は正しいものでなければなりません。 – Maerth

+0

私はこのクエリを使用してstorageprofilesを見つけることができました: "https:// vcloud-example/api/query?type = orgVdcStorageProfile"。どうもありがとうございました!私はこれにあなたの答えを編集し、それが問題なければ答えとしてマークします。 – Maerth

+0

LOL確かに.. admin権限を持っていないみたいです...とにかく、ストレージプロファイルが30以上であれば、それらのリストはすべてリストされません。クエリのpagesizeを変更する必要があるかもしれません – AdilZ

0

vm.GetDisksはすべてのディスクを返す必要があります。

+0

しかし、仮想ディスクにはstorageprofilesの名前が含まれていないので、それが必要です。 – Maerth

関連する問題