0

以下のように、ディスクを直線的に追加できます。

my $vmSpec = VirtualMachineConfigSpec->new(deviceChange => [$devSpecs[0]]);
$vmView->ReconfigVM(spec => $vmSpec);
my $vmSpec = VirtualMachineConfigSpec->new(deviceChange => [$devSpecs[1]]);
$vmView->ReconfigVM(spec => $vmSpec);
my $vmSpec = VirtualMachineConfigSpec->new(deviceChange => [$devSpecs[2]]);
$vmView->ReconfigVM(spec => $vmSpec);

ただし、一度にすべてのディスクを追加しようとすると、SOAP エラーが発生します

my $vmSpec = VirtualMachineConfigSpec->new(deviceChange => \@devSpecs);
$vmView->ReconfigVM(spec => $vmSpec);

エラー:

SOAP Fault:
-----------
Fault string: Cannot complete the operation because the file or folder
/vmfs/volumes/ba5e81fe-201a6c4e/paul-vm1/paul-vm1_0_3.vmdk already exists
Fault detail: FileAlreadyExists

何が起こっているかを知っている、VSphere/VMware の方法で賢明な人はいますか?

編集:コードを実行する前または実行した後、ファイルは絶対に存在しません。

4

1 に答える 1

1

解決策を見つけました。どうやら、たとえそれが負であっても、各仮想マシン構成仕様に独自のキーを与える必要があるようです。後世セット用

$disk->key = UNIQUE NEGATIVE NUMBER

次に、構成仕様を設定します

$devSpec = VirtualDeviceConfigSpec->new(
      operation     => $devSpec->operation,
      fileOperation => $devSpec->fileOperation,
      device        => $disk,
);
于 2013-06-13T20:47:56.993 に答える