DatacoreVolumeDriver


 * Launchpad Entry: In progress (no code yet)
 * Created: 10 Dec 2012
 * Contributors: Emilien Macchi

Summary
We would like to introduce the DataCore support for the Cinder service with the basic capabilities to create, export and delete volumes and snapshots.

The driver can interact with the DataCore SAN-Symphony Appliance using its API.

The proposal is to add DataCore SAN-Symphony driver into the Cinder service. Nothing has been developped at the moment, and this work is waiting the validation from DataCore company.

Release Note
"SANsymphony-V forms a transparent, scalable virtualization layer across your storage infrastructure in order to enhance its capabilities and centralize its management."

Requirements

 * Openstack Cinder service installed (on Windows with or Linux)
 * Datacore SAN-Symphony Appliance installed and configured
 * Dedicated ‘volume’ object created on appliance

Rationale
DataCore SAN-Symphony Appliance provides reliable block-level volumes which are easy to manage via PowerShell & API. It automates many common storage administration tasks. It is intended to be used with commodity hardware and basically is vendor-independent. This makes DataCore SAN-Symphony Appliance software useful as a base for storage nodes in IaaS clouds.

User stories
User installs Cinder service on the Openstack node or on a Windows node (since Cinder can be run on Windows 2008/2012) and configures volume_driver, specifies communication transport and IP address of the appliance. Additional parameters for volumes can be specified in the flag file, i.e. block size. User can then create volumes with standard Cinder API calls.

Datacore Appliance Configuration
To get the volumes stored to the DataCore appliance, it has to be configured appropriately.

OpenStack Cinder configuration
You can set up the driver by setting following flags in cinder.conf:
 * volume_driver - should be set to datacore.volume.DatacoreDriver;
 * nouse_local_volumes - this is necessary for all SAN drivers;
 * datacore_host - should be hostname or IP address of DataCore appliance;
 * datacore_volume - should be set to the name of volume that should contain all Cinder volumes;
 * datacore_user - name of user at DataCore appliance with API or Powershell
 * datacore_password - password for that user.

Example config following:

--volume_driver=datacore.volume.DatacoreDriver --nouse_local_volumes --datacore_host=192.168.14.9 --datacore_volume=cinder --datacore_user=admin --datacore_password=secrete

Assumptions
This driver assumes user has installed Datacore SAN-Symphony software on at least one appliance and configured it to have a logical volume dedicated to Openstack volumes.

Design
Driver extends iSCSI driver in the same way as all SAN drivers.

Volumes Export
Common iSCSI initiator-target scheme is used for export. Each volume is exported through dedicated target which is placed in separate target group to ensure correct iSCSI LUN numbering.

Implementation
Need to be written.

Code Changes
Datacore driver code should be included as package under cinder.volume package.

Test/Demo Plan
Not yet.

Unresolved issues
None.