皆様、
表題の件ですが、現在既存ディスク(RDM)をHot-addするような機能の開発を行なっているのですが、エラーが発生しており手詰りの状態です。
どなたかお力添えください。
添付ファイルのようなPerlのスクリプトで実行したところ、
# rdmmanagement.pl --server esxi_ip_address --username aaa --password aaa --operation add --vmname testVM --datastore testDatastore --vmdkname "testVM_1.vmdk" --scsicontroller "SCSI controller 0" --scsinode 4
下記の様なエラーが出力されてしまいました。
Addint RDM: "testVM_1.vmdk" to testVM ...
Error:
-----------
Fault string: Invalid configuration for device '0'.
Fault detail: InvalidDeviceSpec
既にVMware API Exploerにて仕様を確認しましたが、
vSphere Web Services API - VMware API Explorer - VMware {code}
使用しているESXiとPerl SDKは以下の通りです。
ESXi 6.0 U2
vSphere Perl SDK for vSphere 6.5
機能開発に当たって下記リンク先文書を参照しました。
rdmManagmement.pl
Onyxを使ってvSphere Client上でのGUI操作をPowerCLIに落としたところ以下の様になりました。
#------- ReconfigVM_Task -------
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
$spec.changeVersion = "2018-04-26T10:04:17.714698Z""
$spec.deviceChange = New-Object VMware.Vim.VirtualDeviceConfigSpec[] (1)
$spec.deviceChange[0] = New-Object VMware.Vim.VirtualDeviceConfigSpec
$spec.deviceChange[0].operation = "add"
$spec.deviceChange[0].device = New-Object VMware.Vim.VirtualDisk
$spec.deviceChange[0].device.key = -100
$spec.deviceChange[0].device.backing = New-Object VMware.Vim.VirtualDiskRawDiskMappingVer1BackingInfo
$spec.deviceChange[0].device.backing.fileName = "[testDatastore] testVM/testVM_1.vmdk"
$spec.deviceChange[0].device.backing.compatibilityMode = ""
$spec.deviceChange[0].device.backing.diskMode = "persistent"
$spec.deviceChange[0].device.connectable = New-Object VMware.Vim.VirtualDeviceConnectInfo
$spec.deviceChange[0].device.connectable.startConnected = $true
$spec.deviceChange[0].device.connectable.allowGuestControl = $false
$spec.deviceChange[0].device.connectable.connected = $true
$spec.deviceChange[0].device.controllerKey = 1000
$spec.deviceChange[0].device.unitNumber = 4
$spec.deviceChange[0].device.capacityInKB = 104857920
$_this = Get-View -Id 'VirtualMachine-vm-443'
$_this.ReconfigVM_Task($spec)
"Invalid configuration for device '0'."は何を表すのか、コード上のどこを修正すれば良いのか、等
ご存知の方がいらっしゃいましたらご教授いただければと思います。
既存ディスク(RDM)をVMにHot-addすることが目的ですので、他の方法でも問題ございません。
現状ではvCLIにて該当の機能を見つけられなかった為、この様な開発をしている次第です。
既に下記リンク先にて質問させていただいておりますが、日本語でも投稿いたします。
Getting an error, "Invalid configuration for device '0'", with my code
よろしくお願いいたします。