Adding a RDM fails with vim.fault.InvalidDiskFormat
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 2.3k
- Forks
- 763
- PR merge metrics
- No merged PRs in 30d
Description
I'm trying to manually clone a VM with a RDM disk attached but when I try to create the new VM the process fails with vim.fault.InvalidDiskFormat. The process is as follows.
- Get the old VM and copy the RDM specs
- Shut the old VM down
- Use the previous obtained RDM specs to create a new RDM mapping on the new VM
I've included the hostd.log and the code that creates the new RDM mapping for the new VM.
Is there something I'm missing, the vSphere API isn't really clear if I need to do some additional steps before readding the RDM. Any help would be appreciated.
disk_specs = []
for device in old_vm.config.hardware.device:
if isinstance(device, vim.vm.device.VirtualDisk):
if isinstance(device.backing, vim.vm.device.VirtualDisk.RawDiskMappingVer1BackingInfo):
disk_spec = vim.vm.device.VirtualDeviceSpec()
disk_spec.fileOperation = "create"
disk_spec.operation = vim.vm.device.VirtualDeviceSpec.Operation.add
disk_spec.device = vim.vm.device.VirtualDisk()
disk_spec.device.backing = \
vim.vm.device.VirtualDisk.RawDiskMappingVer1BackingInfo()
disk_spec.device.backing.lunUuid = device.backing.lunUuid
disk_spec.device.backing.deviceName = device.backing.deviceName
disk_spec.device.backing.compatibilityMode = device.backing.compatibilityMode
disk_spec.device.backing.diskMode = device.backing.diskMode
disk_spec.device.backing.uuid = device.backing.uuid
disk_spec.device.unitNumber = device.unitNumber
disk_spec.device.controllerKey = virtual_scsi_controller_spec.device.key
disk_spec.device.capacityInKB = device.capacityInKB
disk_specs.append(disk_spec)
2017-04-22T12:39:06.605Z info hostd[F7C2B70] [Originator@6876 sub=Vmsvc.VmDiskMgr opID=cbb1865f user=root] For disk [datastore1] new_vm/new_vm_1.vmdk, Error creating disk: The specified device is not a valid physical disk device
2017-04-22T12:39:06.605Z verbose hostd[F7C2B70] [Originator@6876 sub=PropertyProvider opID=cbb1865f user=root] RecordOp ASSIGN: latestEvent, ha-eventmgr. Applied change to temp map.
2017-04-22T12:39:06.605Z info hostd[F7C2B70] [Originator@6876 sub=Vimsvc.ha-eventmgr opID=cbb1865f user=root] Event 1217 : Cannot create virtual disk
2017-04-22T12:39:06.605Z info hostd[F7C2B70] [Originator@6876 sub=Vmsvc.vm:/vmfs/volumes/58c7f78c-2ce5e343-1631-18a90576f6c0/new_vm/new_vm.vmx opID=cbb1865f user=root] Reconfigure failed: vim.fault.InvalidDiskFormat
2017-04-22T12:39:06.609Z info hostd[F7C2B70] [Originator@6876 sub=Vmsvc.vm:/vmfs/volumes/58c7f78c-2ce5e343-1631-18a90576f6c0/new_vm/new_vm.vmx opID=cbb1865f user=root] Create failed with given spec: /vmfs/volumes/58c7f78c-2ce5e343-1631-18a90576f6c0/new_vm/new_vm.vmx
--> (vim.vm.ConfigSpec) {
--> changeVersion = <unset>,
--> name = "new_vm",
--> version = "vmx-08",
--> uuid = <unset>,
--> instanceUuid = <unset>,
--> npivNodeWorldWideName = <unset>,
--> npivPortWorldWideName = <unset>,
--> npivWorldWideNameType = <unset>,
--> npivDesiredNodeWwns = <unset>,
--> npivDesiredPortWwns = <unset>,
--> npivTemporaryDisabled = <unset>,
--> npivOnNonRdmDisks = <unset>,
--> npivWorldWideNameOp = <unset>,
--> locationId = <unset>,
--> guestId = "centos64Guest",
--> alternateGuestName = <unset>,
--> annotation = <unset>,
--> files = (vim.vm.FileInfo) {
--> vmPathName = "[datastore1]",
--> snapshotDirectory = "[datastore1]",
--> suspendDirectory = <unset>,
--> logDirectory = <unset>,
--> ftMetadataDirectory = <unset>
--> },
--> tools = (vim.vm.ToolsConfigInfo) null,
--> flags = (vim.vm.FlagInfo) null,
--> consolePreferences = (vim.vm.ConsolePreferences) null,
--> powerOpInfo = (vim.vm.DefaultPowerOpInfo) null,
--> numCPUs = 2,
--> numCoresPerSocket = 2,
--> memoryMB = 4096,
--> memoryHotAddEnabled = <unset>,
--> cpuHotAddEnabled = <unset>,
--> cpuHotRemoveEnabled = <unset>,
--> virtualICH7MPresent = <unset>,
--> virtualSMCPresent = <unset>,
--> deviceChange = (vim.vm.device.VirtualDeviceSpec) [
--> (vim.vm.device.VirtualDeviceSpec) {
--> operation = "add",
--> fileOperation = <unset>,
--> device = (vim.vm.device.VirtualIDEController) {
--> key = -122,
--> deviceInfo = (vim.Description) null,
--> backing = (vim.vm.device.VirtualDevice.BackingInfo) null,
--> connectable = (vim.vm.device.VirtualDevice.ConnectInfo) null,
--> slotInfo = (vim.vm.device.VirtualDevice.BusSlotInfo) null,
--> controllerKey = <unset>,
--> unitNumber = <unset>,
--> busNumber = 0,
--> device = <unset>
--> },
--> profile = <unset>,
--> backing = (vim.vm.device.VirtualDeviceSpec.BackingSpec) null
--> },
--> (vim.vm.device.VirtualDeviceSpec) {
--> operation = "add",
--> fileOperation = <unset>,
--> device = (vim.vm.device.VirtualSIOController) {
--> key = -47,
--> deviceInfo = (vim.Description) null,
--> backing = (vim.vm.device.VirtualDevice.BackingInfo) null,
--> connectable = (vim.vm.device.VirtualDevice.ConnectInfo) null,
--> slotInfo = (vim.vm.device.VirtualDevice.BusSlotInfo) null,
--> controllerKey = <unset>,
--> unitNumber = <unset>,
--> busNumber = 0,
--> device = <unset>
--> },
--> profile = <unset>,
--> backing = (vim.vm.device.VirtualDeviceSpec.BackingSpec) null
--> },
--> (vim.vm.device.VirtualDeviceSpec) {
--> operation = "add",
--> fileOperation = <unset>,
--> device = (vim.vm.device.VirtualCdrom) {
--> key = 0,
--> deviceInfo = (vim.Description) null,
--> backing = (vim.vm.device.VirtualCdrom.IsoBackingInfo) {
--> fileName = "[datastore1] iso/centos.iso",
--> datastore = <unset>,
--> backingObjectId = <unset>
--> },
--> connectable = (vim.vm.device.VirtualDevice.ConnectInfo) {
--> startConnected = true,
--> allowGuestControl = true,
--> connected = true,
--> status = <unset>
--> },
--> slotInfo = (vim.vm.device.VirtualDevice.BusSlotInfo) null,
--> controllerKey = -122,
--> unitNumber = <unset>
--> },
--> profile = <unset>,
--> backing = (vim.vm.device.VirtualDeviceSpec.BackingSpec) null
--> },
--> (vim.vm.device.VirtualDeviceSpec) {
--> operation = "add",
--> fileOperation = <unset>,
--> device = (vim.vm.device.VirtualFloppy) {
--> key = 0,
--> deviceInfo = (vim.Description) null,
--> backing = (vim.vm.device.VirtualFloppy.ImageBackingInfo) {
--> fileName = "[datastore1] floppy/floppy.flp",
--> datastore = <unset>,
--> backingObjectId = <unset>
--> },
--> connectable = (vim.vm.device.VirtualDevice.ConnectInfo) {
--> startConnected = true,
--> allowGuestControl = true,
--> connected = true,
--> status = <unset>
--> },
--> slotInfo = (vim.vm.device.VirtualDevice.BusSlotInfo) null,
--> controllerKey = -47,
--> unitNumber = <unset>
--> },
--> profile = <unset>,
--> backing = (vim.vm.device.VirtualDeviceSpec.BackingSpec) null
--> },
--> (vim.vm.device.VirtualDeviceSpec) {
--> operation = "add",
--> fileOperation = <unset>,
--> device = (vim.vm.device.ParaVirtualSCSIController) {
--> key = -61,
--> deviceInfo = (vim.Description) null,
--> backing = (vim.vm.device.VirtualDevice.BackingInfo) null,
--> connectable = (vim.vm.device.VirtualDevice.ConnectInfo) null,
--> slotInfo = (vim.vm.device.VirtualDevice.BusSlotInfo) null,
--> controllerKey = <unset>,
--> unitNumber = <unset>,
--> busNumber = 0,
--> device = <unset>,
--> hotAddRemove = <unset>,
--> sharedBus = "noSharing",
--> scsiCtlrUnitNumber = <unset>
--> },
--> profile = <unset>,
--> backing = (vim.vm.device.VirtualDeviceSpec.BackingSpec) null
--> },
--> (vim.vm.device.VirtualDeviceSpec) {
--> operation = "add",
--> fileOperation = <unset>,
--> device = (vim.vm.device.VirtualUSBController) {
--> key = -1,
--> deviceInfo = (vim.Description) null,
--> backing = (vim.vm.device.VirtualDevice.BackingInfo) null,
--> connectable = (vim.vm.device.VirtualDevice.ConnectInfo) null,
--> slotInfo = (vim.vm.device.VirtualDevice.BusSlotInfo) null,
--> controllerKey = <unset>,
--> unitNumber = <unset>,
--> busNumber = 0,
--> device = <unset>,
--> autoConnectDevices = true,
--> ehciEnabled = true
--> },
--> profile = <unset>,
--> backing = (vim.vm.device.VirtualDeviceSpec.BackingSpec) null
--> },
--> (vim.vm.device.VirtualDeviceSpec) {
--> operation = "add",
--> fileOperation = "create",
--> device = (vim.vm.device.VirtualDisk) {
--> key = 0,
--> deviceInfo = (vim.Description) null,
--> backing = (vim.vm.device.VirtualDisk.FlatVer2BackingInfo) {
--> fileName = "",
--> datastore = <unset>,
--> backingObjectId = <unset>,
--> diskMode = "persistent",
--> split = <unset>,
--> writeThrough = <unset>,
--> thinProvisioned = true,
--> eagerlyScrub = <unset>,
--> uuid = <unset>,
--> contentId = <unset>,
--> changeId = <unset>,
--> parent = (vim.vm.device.VirtualDisk.FlatVer2BackingInfo) null,
--> deltaDiskFormat = <unset>,
--> digestEnabled = <unset>,
--> deltaGrainSize = <unset>,
--> deltaDiskFormatVariant = <unset>,
--> sharing = <unset>,
--> keyId = (vim.encryption.CryptoKeyId) null
--> },
--> connectable = (vim.vm.device.VirtualDevice.ConnectInfo) null,
--> slotInfo = (vim.vm.device.VirtualDevice.BusSlotInfo) null,
--> controllerKey = -61,
--> unitNumber = 0,
--> capacityInKB = 26214400,
--> capacityInBytes = <unset>,
--> shares = (vim.SharesInfo) null,
--> storageIOAllocation = (vim.StorageResourceManager.IOAllocationInfo) null,
--> diskObjectId = <unset>,
--> vFlashCacheConfigInfo = (vim.vm.device.VirtualDisk.VFlashCacheConfigInfo) null,
--> iofilter = <unset>,
--> vDiskId = (vim.vslm.ID) null
--> },
--> profile = <unset>,
--> backing = (vim.vm.device.VirtualDeviceSpec.BackingSpec) null
--> },
--> (vim.vm.device.VirtualDeviceSpec) {
--> operation = "add",
--> fileOperation = "create",
--> device = (vim.vm.device.VirtualDisk) {
--> key = 0,
--> deviceInfo = (vim.Description) null,
--> backing = (vim.vm.device.VirtualDisk.RawDiskMappingVer1BackingInfo) {
--> fileName = "",
--> datastore = <unset>,
--> backingObjectId = <unset>,
--> lunUuid = "0200050000600c0ff0001a5474dfcdf95801000000503230303020",
--> deviceName = "vml.0200050000600c0ff0001a5474dfcdf95801000000503230303020",
--> compatibilityMode = "physicalMode",
--> diskMode = "independent_persistent",
--> uuid = <unset>,
--> contentId = <unset>,
--> changeId = <unset>,
--> parent = (vim.vm.device.VirtualDisk.RawDiskMappingVer1BackingInfo) null,
--> deltaDiskFormat = <unset>,
--> deltaGrainSize = <unset>,
--> sharing = <unset>
--> },
--> connectable = (vim.vm.device.VirtualDevice.ConnectInfo) null,
--> slotInfo = (vim.vm.device.VirtualDevice.BusSlotInfo) null,
--> controllerKey = -61,
--> unitNumber = 1,
--> capacityInKB = 292659392,
--> capacityInBytes = <unset>,
--> shares = (vim.SharesInfo) null,
--> storageIOAllocation = (vim.StorageResourceManager.IOAllocationInfo) null,
--> diskObjectId = <unset>,
--> vFlashCacheConfigInfo = (vim.vm.device.VirtualDisk.VFlashCacheConfigInfo) null,
--> iofilter = <unset>,
--> vDiskId = (vim.vslm.ID) null
--> },
--> profile = <unset>,
--> backing = (vim.vm.device.VirtualDeviceSpec.BackingSpec) null
--> },
--> (vim.vm.device.VirtualDeviceSpec) {
--> operation = "add",
--> fileOperation = <unset>,
--> device = (vim.vm.device.VirtualVmxnet3) {
--> dynamicProperty = <unset>,
--> key = 0,
--> deviceInfo = (vim.Description) null,
--> backing = (vim.vm.device.VirtualEthernetCard.NetworkBackingInfo) {
--> deviceName = "NET1",
--> useAutoDetect = <unset>,
--> network = 'vim.Network:HaNetwork-NET1',
--> inPassthroughMode = <unset>
--> },
--> connectable = (vim.vm.device.VirtualDevice.ConnectInfo) {
--> startConnected = true,
--> allowGuestControl = false,
--> connected = true,
--> status = <unset>
--> },
--> slotInfo = (vim.vm.device.VirtualDevice.BusSlotInfo) null,
--> controllerKey = <unset>,
--> unitNumber = <unset>,
--> addressType = <unset>,
--> macAddress = <unset>,
--> wakeOnLanEnabled = <unset>,
--> resourceAllocation = (vim.vm.device.VirtualEthernetCard.ResourceAllocation) null,
--> externalId = <unset>,
--> uptCompatibilityEnabled = <unset>
--> },
--> profile = <unset>,
--> backing = (vim.vm.device.VirtualDeviceSpec.BackingSpec) null
--> },
--> (vim.vm.device.VirtualDeviceSpec) {
--> operation = "add",
--> fileOperation = <unset>,
--> device = (vim.vm.device.VirtualVmxnet3) {
--> dynamicProperty = <unset>,
--> key = 0,
--> deviceInfo = (vim.Description) null,
--> backing = (vim.vm.device.VirtualEthernetCard.NetworkBackingInfo) {
--> deviceName = "VM Network",
--> useAutoDetect = <unset>,
--> network = 'vim.Network:HaNetwork-VM Network',
--> inPassthroughMode = <unset>
--> },
--> connectable = (vim.vm.device.VirtualDevice.ConnectInfo) {
--> startConnected = false,
--> allowGuestControl = false,
--> connected = false,
--> status = <unset>
--> },
--> slotInfo = (vim.vm.device.VirtualDevice.BusSlotInfo) null,
--> controllerKey = <unset>,
--> unitNumber = <unset>,
--> addressType = <unset>,
--> macAddress = <unset>,
--> wakeOnLanEnabled = <unset>,
--> resourceAllocation = (vim.vm.device.VirtualEthernetCard.ResourceAllocation) null,
--> externalId = <unset>,
--> uptCompatibilityEnabled = <unset>
--> },
--> profile = <unset>,
--> backing = (vim.vm.device.VirtualDeviceSpec.BackingSpec) null
--> }
--> ],
--> cpuAllocation = (vim.ResourceAllocationInfo) null,
--> memoryAllocation = (vim.ResourceAllocationInfo) null,
--> latencySensitivity = (vim.LatencySensitivity) null,
--> cpuAffinity = (vim.vm.AffinityInfo) null,
--> memoryAffinity = (vim.vm.AffinityInfo) null,
--> networkShaper = (vim.vm.NetworkShaperInfo) null,
--> cpuFeatureMask = <unset>,
--> extraConfig = <unset>,
--> swapPlacement = <unset>,
--> bootOptions = (vim.vm.BootOptions) {
--> bootDelay = <unset>,
--> enterBIOSSetup = <unset>,
--> efiSecureBootEnabled = <unset>,
--> bootRetryEnabled = <unset>,
--> bootRetryDelay = <unset>,
--> bootOrder = (vim.vm.BootOptions.BootableDevice) [
--> (vim.vm.BootOptions.BootableCdromDevice) {
--> }
--> ],
--> networkBootProtocol = <unset>
--> },
--> vAppConfig = (vim.vApp.VmConfigSpec) null,
--> ftInfo = (vim.vm.FaultToleranceConfigInfo) null,
--> repConfig = (vim.vm.ReplicationConfigSpec) null,
--> vAppConfigRemoved = <unset>,
--> vAssertsEnabled = <unset>,
--> changeTrackingEnabled = <unset>,
--> firmware = <unset>,
--> maxMksConnections = <unset>,
--> guestAutoLockEnabled = <unset>,
--> managedBy = (vim.ext.ManagedByInfo) null,
--> memoryReservationLockedToMax = <unset>,
--> nestedHVEnabled = <unset>,
--> vPMCEnabled = <unset>,
--> scheduledHardwareUpgradeInfo = (vim.vm.ScheduledHardwareUpgradeInfo) null,
--> vmProfile = <unset>,
--> messageBusTunnelEnabled = <unset>,
--> crypto = (vim.encryption.CryptoSpec) null,
--> migrateEncryption = <unset>
--> }
2017-04-22T12:39:06.635Z info hostd[F7C2B70] [Originator@6876 sub=Vmsvc.vm:/vmfs/volumes/58c7f78c-2ce5e343-1631-18a90576f6c0/new_vm/new_vm.vmx opID=cbb1865f user=root] Exception thrown vim.fault.InvalidDiskFormat
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the RDM creation code in the issue and the accompanying hostd.log, focusing on the VirtualDeviceSpec and RawDiskMappingVer1BackingInfo values sent during new VM creation. Compare the submitted disk specification with the logged ConfigSpec and determine what change is needed for the new VM creation to complete without vim.fault.InvalidDiskFormat.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- api
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100