こんにちは。
今私はVMware Infrastructure SDK 2.5 for javaを使用して既存仮想マシンのディスク容量を変更しようとしています。
SDK内にあるVMReconfig.javaソースファイルを編集しようと考えているのですが、ReconfigVM_Taskメソッドの引数specに渡す
VirtualMachineConfigSpec(DataObject)の設定項目および設定値が分からず困っています。
どなたか、お分かりになる方いらっしゃいませんか?
Java初心者なのでVMReconfig.javaに記述する内容を直接教えていただけると助かります。
※ExtendVirtualDisk_Taskメソッドを使用しようかと思ったのですが、V2.5からの新規メソッド?であるためサンプルソース上では使い方が不明でした。
宜しくお願いします。
/**********************************************************************/
/下記の処理の前にVirtualMachineConfigSpec(vmConfigSpec)オブジェクトに何を設定するのでしょうか?/
ManagedObjectReference tmor
= cb.getConnection().getService().reconfigVM_Task(
_virtualMachine, vmConfigSpec);
/*********************************************************************/
こんにちは。
C#での経験しかなく、ExtendVirtualDisk_Taskの使用経験はないのですが
ReconfigVM_Taskからお答えします。
#ReconfigVM_TaskではCPU、メモリサイズ、ディスクの追加はしたことがあります。
ReconfigVM_TaskのパラメータVirtualMachineConfigSpecは
かなり膨大なプロパティを持っていますが、ほとんどが必須ではないものです。
仮想ディスクなどの仮想デバイスを変更する場合は、VirtualMachineConfigSpec.deviceChangesに
変更したいデバイスのVirurtualDeviceConfigSpecを代入してReconfigVM_Taskに渡すことで仮想マシンの変更が可能です。
仮想ディスクのVirtualDeviceConfigSpec.deviceに格納されるべき
クラス VirtualDiskのプロパティcapacityInKBを操作するだけでよいかと思います。
1. ログイン
2. 対象の仮想マシンのMoRefを取得
3. 2. で取得した仮想マシンの変更したい仮想ディスクのVirtualDeviceを取得
4. 3. で取得したVirtualDevice(Disk) のサイズを変更しVirtualMachineConfigSpec.deviceChangesに
代入。fileOperationとoperationの変更を行っておくこと
5. ReconfigVM_Taskを実行
といった流れになるかと思います。
ただし、わざわざExtendVirtualDisk_TaskがExperimentalとはいえ用意されているところを見るに
ReconfigVM_Taskではできないかもしれませんね。ExtendVIrtualDisk_Taskの_this引数の
VirtualDiskManagerはログイン時に使用するServiceContentから取得できるようです。
ご返信ありがとうございます。
VMClone時のDatastoreの変更と同様ですが、MoRefの取得方法
が分かりません。
ManagedObjectReferenceはどういう扱いとなっているのでしょうか?
お手数ですが、宜しくお願い致します。
Thank you.
It was possible to do.
The revision part is the following.
//********************************************************
VirtualDeviceConfigSpec diskSpec = new VirtualDeviceConfigSpec();
VirtualDisk disk = null;
VirtualMachineConfigInfo vmConfigInfo =
(VirtualMachineConfigInfo)cb.getServiceUtil().getDynamicProperty(_virtualMachine, "config");
VirtualDiskFlatVer2BackingInfo diskfileBacking
= new VirtualDiskFlatVer2BackingInfo();
VirtualDevice [] test = vmConfigInfo.getHardware().getDevice();
for(int k=0;k
if(test[k].getDeviceInfo().getLabel().equalsIgnoreCase(
cb.get_option("value"))){
disk = (VirtualDisk)test[k];
}
}
if(disk != null) {
int size = 1024 * 1024 * 26;
disk.setCapacityInKB(size);
diskSpec.setOperation(VirtualDeviceConfigSpecOperation.edit);
//diskSpec.setFileOperation(VirtualDeviceConfigSpecFileOperation.replace);
diskSpec.setDevice(disk);
}
if (diskSpec != null){
VirtualDeviceConfigSpec [] vdiskSpecArray = {diskSpec};
vmConfigSpec.setDeviceChange(vdiskSpecArray);
}
//**********************************************************