Example #1
0
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
}