vmware / pyvmomi

VMware vSphere API Python Bindings
Apache License 2.0
2.19k stars 766 forks source link

Create First class disk with "path" backing parameter always fails (msg = 'A specified parameter was not correct: ') #1081

Closed RCHERNYY closed 1 week ago

RCHERNYY commented 2 weeks ago

Describe the bug

Whenever attempting to create First Class Disk providing a target path, it fails with msg = 'A specified parameter was not correct: '. Many path formats have been tested, but no luck. In case path parameter is not set, the task completes Successfully.

backing_spec = vim.vslm.CreateSpec.DiskFileBackingSpec()
backing_spec.datastore = fcd.datastore_obj
**backing_spec.path** = f"[fcd.datastore_obj.name] fcd/{fcd.disk_name}.vmdk"
#backing_spec.path = f"[fcd.datastore_obj.name] fcd/"
#backing_spec.path = f"fcd/{fcd.disk_name}.vmdk"
#backing_spec.path = f"{fcd.disk_name}.vmdk"
#backing_spec.path = f"fcd/"
vslm_create_spec = vim.vslm.CreateSpec()
vslm_create_spec.backingSpec = backing_spec
vslm_create_spec.capacityInMB = fcd.size_mb
vslm_create_spec.name = fcd.disk_name

task = fcd.content.vStorageObjectManager.CreateDisk_Task(vslm_create_spec)

TaskInfo output is as following:

(vim.TaskInfo) { dynamicType = , dynamicProperty = (vmodl.DynamicProperty) [], key = 'task-11204', task = 'vim.Task:task-11204', description = , name = vim.vslm.vcenter.VStorageObjectManager.CreateDisk, descriptionId = 'vslm.vcenter.VStorageObjectManager.createDisk', entity = 'vim.HostSystem:host-26', locked = (vim.ManagedEntity) [], state = 'error', cancelled = false, cancelable = false, error = (vmodl.fault.InvalidArgument) { dynamicType = , dynamicProperty = (vmodl.DynamicProperty) [], msg = 'A specified parameter was not correct: ', faultCause = , faultMessage = (vmodl.LocalizableMessage) [], invalidProperty = '' }, result = , progress = , reason = (vim.TaskReasonUser) { ... changeTag = , parentTaskKey = , rootTaskKey = , activationId = }

Reproduction steps

  1. Create DiskFileBackingSpec with path parameter provided
  2. Execute CreateDisk_Task with the above spec

backing_spec = vim.vslm.CreateSpec.DiskFileBackingSpec() backing_spec.datastore = fcd.datastore_obj backing_spec.path = f"[fcd.datastore_obj.name] fcd/{fcd.disk_name}.vmdk" vslm_create_spec = vim.vslm.CreateSpec() vslm_create_spec.backingSpec = backing_spec vslm_create_spec.capacityInMB = fcd.size_mb vslm_create_spec.name = fcd.disk_name task = fcd.content.vStorageObjectManager.CreateDisk_Task(vslm_create_spec)`

  1. Check task.info.state

Expected behavior

First class disk is created with the provided path.

Additional context