Bug Reference

CLOUDSTACK-4757

Branch

Work is in progress in this PR  https://github.com/apache/cloudstack/pull/2146

Tested the PR that was submitted by Citrix. Made architectural changes, bug fixes, enhancements and feature additions for it to be useful.

Introduction

OVA is an archive or an envelope specification that can contain a complete VM including multiple disks and other files such as ISOs. And CloudStack templates in case of VMware are in OVA format.

Today in CloudStack, we only support template creation based on OVA files that contain a single disk. If an Admin/User registers a template using OVA that contains more than 1 disk or iso files and launches an instance using this template, only the first disk is attached to the new instance and the rest of the disks and iso's are ignored. 

Purpose

The purpose of this document is to present functional specifications for improvements that are required to extend the current OVA support to include multiple disks.

Glossary

VM template – Represents a ROOT disk contained in an OVA along with other VM related information like Guest OS.

Datadisk Template - An abstraction for a DATA volume contained in an OVA

Iso Template - An abstraction for an ISO contained in an OVA

Goals

The current CloudStack behavior needs to be improved to support OVA files with multiple disks and/or an ISO.

In case of an instance launched from a template that is an OVA containing more than 1 disk 

Scope

The scope of this proposal is limited to adding support for additional disks or ISO present in a simple OVA that is registered in CloudStack. It is not in the scope to fully support an OVA and hence CloudStack will ignore any other information that is encapsulated in the OVA which may include information about networks, multiple Virtual machines. The limitations on OVA are contained in the Limitations section.

Feature specifications

Currently, in CloudStack, template abstraction is that of a VM template that contains a single disk. To represent the additional disks present in an OVA we will introduce the concept of Datadisk templates.

Datadisk templates will be

Datadisk templates will provide flexibility to orchestrate, deploy and manage additional disks present in an OVA like any other Datadisk in CloudStack.

Similarly, ISO templates are introduced in Cloudstack.

Architecture

Work flow changes

Template registration

 

Handling of ISO's

 

The other functionality currently missing in the import of OVA is the treatment of ISOs. The ISOs are simply ignored. The ISO files mentioned in the OVF will be mounted as CD-ROM that is to say that ISOs mentioned in the OVF should be backing up a CD-ROM device.

 

Listing templates

Virtual Machine deployment

Template deletion

Template copy

Template update

Update template permissions

Change in the existing behavior

Web Service API

DeployVirtualMachine API

New parameter – datadisktemplatetodiskofferinglist

UI Flow

Deploy VM wizard

DB Schema changes

Upgrade scenario

Limitations

Limitations placed by Cloudstack

Following are the limitations that are placed by current Cloudstack implementation and its limitation.

  1. Cloudstack allows single disk controller for all data disk. In case the OVA contains multiple data disk only one type of disk controller will be applicable for all of them.
  2. Cloudstack allows iscsi disks to be resized. Due to this limitation, if datadisk are ide for example, the resize to disk offering size will fail. And user will see actual disk sizes contained in OVA in the vCenter, not the ones selected by disk offerings.
  3. The disk controller specified in the OVA file could have a wide range of types and sub-types. Cloudstack has only limited types available. In case the disk controller is not supported by cloudstack, there can be boot issues with the VM. 

Limitations on OVA

There are some limitations on OVA template that Cloudstack will be able to handle. These limitations if found restricting can be further worked upon and removed.

Some assumptions on OVF files contained in the OVA packages are: