[OneSwap] Delta migration treats CD-ROM emptyBackingString as an active disk

Open Beginner friendly
#8,170 3 comments 0 reactions 1 assignee View on GitHub

@ryatsyshyn is already working on this.

Since Oct 12, 2026.

  • #139 by @ryatsyshyn — merged
  • #1033 by @ryatsyshyn — merged

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
75/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
ruby
Domain
cloud

Research direction

The bug is in the Delta VMX disk-detection path, where active_disks builds its list from the VM's scsi/sata entries; the payload does not name the file. Start from that method and check how it treats deviceType atapi-cdrom and fileName emptyBackingString. Reproduce with a VMX containing the CD-ROM and VMDK entries from the issue. Done when only the .vmdk disk is returned and the copy step no longer runs for the CD-ROM.

Written by the indexing model from the issue text.

Description

Category: OneSwap Status: Pending

Description

Delta migration fails when the source VM has a CD-ROM device with:

sata0:0.deviceType = "atapi-cdrom"
sata0:0.fileName = "emptyBackingString"
sata0:0.present = "TRUE"

OneSwap includes emptyBackingString in the list of active disks and then tries to process it as a VMDK.

Example:

VM  has the following active disks:
["emptyBackingString", "vm-1-000003.vmdk"]

Detected 2 active disk(s) in 0.23s.

Copying files from 10.62.100.19:/vmfs/volumes/path ...

scp: /vmfs/volumes/path: No such file or directory

Error: undefined method `chomp' for nil

The VMX contains one actual disk:

scsi0:0.deviceType = "scsi-hardDisk"
scsi0:0.fileName = "vm-1-000003.vmdk"
scsi0:0.present = "TRUE"

and one CD-ROM:

sata0:0.deviceType = "atapi-cdrom"
sata0:0.fileName = "emptyBackingString"
sata0:0.present = "TRUE"

Steps to reproduce

Run a Delta migration for a VM with a CD-ROM configured as above:

ONE_SWAP_DEBUG=1 oneswap convert vm --delta  --config-file oneswap.yaml  --verbose

Actual behavior

active_disks returns both the CD-ROM backing and the real VMDK:

["emptyBackingString", "vm-1-000003.vmdk"]

OneSwap then tries to copy emptyBackingString from the ESXi datastore and later fails with:

undefined method `chomp' for nil

Expected behavior

Only actual virtual hard disks should be included in the Delta disk list.

CD-ROM/floppy devices and entries such as emptyBackingString should be ignored.

Notes

Other OneSwap migration methods work with the same VM. The issue appears specific to the Delta VMX disk-detection path.

Dominant language
JavaScript
Stars
1.7k
Forks
534
PR merge metrics
No merged PRs in 30d

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from OpenNebula/one

All issues in OpenNebula/one

Similar issues

More JavaScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.