func (d *diskDeployer) deployExistingDisk(disk bidisk.Disk, diskPool bideplmanifest.DiskPool, vm VM, stage biui.Stage) ([]bidisk.Disk, error) { disks := []bidisk.Disk{} // the disk is already part of the deployment, and should already be attached disks = append(disks, disk) // attach is idempotent err := d.attachDisk(disk, vm, stage) if err != nil { return disks, err } if disk.NeedsMigration(diskPool.DiskSize, diskPool.CloudProperties) { disk, err = d.migrateDisk(disk, diskPool, vm, stage) if err != nil { return disks, err } // after migration, only the new disk is part of the deployment disks[0] = disk } return disks, nil }