2017-11-02 14 views
1

仮想マシンのカスタムフィールド(名前と値)。 [要約]タブの[注釈]の下にあるフィールド。いいえ、私は注釈プロパティ自体を必要としません、私は本当にカスタムフィールドが必要です。VI JAVA:仮想マシンからのカスタムフィールド(名前と値)の取得

vm.getSummary.getCustomValueを入力してCustomFieldStringValueにキャストし、配列のカスタムフィールドごとに.getValueを実行して、カスタムフィールドの値そのものを管理しました。ここで

は(vmObjectは私が取得する必要がありフィールド用に作成されたオブジェクトである)、例です:

CustomFieldValue[] customFieldValue = vm.getSummary().getCustomValue();  
CustomFieldStringValue BU = (CustomFieldStringValue) customFieldValue[0]; 
vmObject.setBusinessUnit(BU.getValue()); 

私はCustomFieldsManagerとCustomFieldDefがあります知っている、彼らは両方とも私が必要「名前」プロパティを持っています、私は知らない...私は、私は現在でよどこのからこれらにマッピングんか

編集/進捗状況です: だから私はやっによってCustomFieldsManagerCustomFieldsDefを、つかむことができた:

ManagedObjectReference customFieldOR = si.getServiceContent().getCustomFieldsManager(); 
     CustomFieldsManager CFManager = new CustomFieldsManager(vm.getServerConnection(), customFieldOR); 
     CustomFieldDef[] CFDef = CFManager.getField(); 

これについては悪いことでは、私はVM内のすべてのVMとカスタムフィールドのためのCustomFieldDef配列を反復処理する必要があるだろうということです...

答えて

0

をうんざり反復が進むべき道であるようにまあ、それが見えます。私は逆さまに私は、1回のまたは2つの呼び出しで、すべてのカスタムフィールドをつかむために管理するのでvSphereのコールは、各反復で行われていないことだと思います。そこ

ManagedObjectReference customFieldOR = si.getServiceContent().getCustomFieldsManager(); 
     CustomFieldsManager CFManager = new CustomFieldsManager(vm.getServerConnection(), customFieldOR); 
     CustomFieldDef[] CFDef = CFManager.getField(); 

、私はすべてのカスタムフィールドの配列を持っています。

次に、VMを反復処理するときに、キーを持つCustomFieldValueプロパティを取得しました。そこから、CustomFieldDefCustomFieldValue配列を使ったキーのマッピング。 CustomFieldStringValueはカスタムフィールドの実際の値を持つプロパティなので、CustomFieldValueからCustomFieldStringValueへのキャストが必要です。

推奨される改善は常に歓迎されます!これが将来の人々に役立つことを願っています。

関連する問題