Bug Reference

CLOUDSTACK-4757

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.

Current scenario

CloudStack only supports template creation based on OVA files containing a single disk.

If an Admin/User registers a template using OVA containing more than 1 disk and launches an instance using this template then only the first disk in the OVA is attached to the new instance and the rest of the disks are ignored. 

Purpose

The current behavior needs to be improved to support OVA files with multiple disks

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

Architecture and Design description

Changes in the existing code flow

VM start orchestration

Hypervisor storage processor for VM's storage preparation

Once started, VM will contain ROOT disk, disks requested by the user in the deployVM API and additional disks contained in the template OVA.

For the additional disks present in the OVA we first create them in storage and then create an entry for them in DB

Traditionally in CloudStack, for any resource entity we first make a DB entry and then create the resource. But with the proposed workflow CS will

Reason for the above design choice - 

But today in CloudStack, we lack the capability to understand i.e. parse and manipulate OVA format. And hence offloading the import job to vCenter and using the results (information about additional disks) provided by vCenter will be simpler and reliable.

Limitations

API/UI/DB Schema

No changes

Upgrade scenario

In a setup that has been upgraded to 4.4 any new VM that is deployed from a template with multiple disks will have multiple volumes attached to it.