Skip to content

attachVolume fails with HTTP 500 from vCenter datastore #13249

Description

@mogamal1

problem

AttachVolume fails with HTTP 500 from vCenter datastore browser when
attaching a detached volume on a PreSetup (DatastoreCluster) storage pool
to a Running VMware VM.

ERROR: Failed to attach volume!
java.io.IOException: Server returned HTTP response code: 500 for URL:
https://vcenter.../folder/i-2422-79-VM%2Fcaa1f96c...vmdk?dcPath=XXXXX&dsName=OShit-BigVol

CloudStack calls VirtualMachineMO.attachDisk() → getVmdkFileInfo() which
does an HTTP GET via vCenter datastore browser. vCenter routes this to a
non-owner ESXi host which cannot serve the locked file of the running VM.

EXPECTED RESULT:
Volume attaches successfully. CloudStack should use the vSphere API
(ReconfigVM_Task with VirtualDiskSpec) directly instead of going through
the vCenter HTTP datastore browser to validate the VMDK.

WORKAROUND:
Power off the VM, attach the volume, power it back on.
Reference: Related issue #10626

versions

COMPONENT NAME: Storage / VMware
CLOUDSTACK VERSION: 4.22.0

The steps to reproduce the bug

  1. Create a volume on a PreSetup/DatastoreCluster-type primary storage pool
  2. Migrate the volume (migrateVolume API) to BIGVOL (DatastoreCluster)
  3. Volume lands correctly on ESXi host VMFS under i-XXXX-XX-VM/ folder
  4. Attempt attachVolume to a Running VM on the same cluster

What to do about it?

No response

Metadata

Metadata

Assignees

Type

No type

Projects

Status
Todo

Relationships

None yet

Development

No branches or pull requests

Issue actions