ZFSSA iSCSI driver should support extra specs

Support for extra specs at volume creation time,
would allow more flexibility to create custom volumes.
The following scoped keys are supported:
-zfssa:volblocksize
-zfssa:sparse
-zfssa:compression
-zfssa:logbias

Closes-Bug: #1379403
DocImpact

Change-Id: I8768d07f19147dc2544bebc0dbf3392313838e8f
RemoteFS: Move Nova snapshot code into RemoteFSSnapDriver

Implements bp: remotefs-snaps

Change-Id: I2e92322ff9c80de123dc281f790a7c2a89c4d62e
First version of Cinder driver for Quobyte USP

Supported Operations are:
- Create Volume
- Delete Volume
- Attach Volume
- Detach Volume
- Extend Volume
- Create Snapshot
- Delete Snapshot
- List Snapshots
- Create Volume from Snapshot
- Create Volume from Image
- Create Volume from Volume (Clone)
- Create Image from Volume

The driver uses a file-based interface to access the configured
Quobyte volume. Therefore, the driver is similar to the existing
drivers NFS and GlusterFS.

Due to the similarities, I reused the snapshot code from the GlusterFS
driver. Gluster, thanks for that! I've kept the "Red Hat" copyright in
the header to credit you properly.

All driver functions are covered by unit tests. Snapshot tests were
taken over from test_glusterfs.py. New tests are written using "Mock"
instead of "mox".

Certification tests: https://bugs.launchpad.net/cinder/+bug/1401471

Implements: blueprint quobyte-usp-driver
Change-Id: I7ca13e28b000d7a07c2baecd5454e50be4c9640b
Correct default service_name for nova_catalog*_info config option

The default service_name in config option (nova_catalog_info and 
nova_catalog_admin_info) was mistakenly put as 'nova'. Consequently,
it is impossible to invoke novaclient APIs from Cinder code without
changing the default value of those config options.

The correct service_name defined in Keystone's config file
"/etc/keystone/default_catalog.templates" is:
catalog.RegionOne.compute.name = Compute Service.

This change replaces 'nova' with 'Compute Service' for default value
of 'nova_catalog*_info' config options.

Change-Id: Idee3585a08efa1d6af1f4ee2b74e8cefb05cc54f
Closes-Bug: 1401800
Convert mox to mock: tests/compute/test_nova.py

Replace mox testing library by mock in the file
cinder/tests/compute/test_nova.py

Implements: blueprint mox-to-mock-conversion
Change-Id: Ic819afb4391708a0afebe4fc2855c93e3cb3f4c4
DB migration tests

Refactored migration tests to use OpportunisticTestCase, removed
unused code and ``test_migrations.conf`` file.

The main feature of this approach is to create a new database with
random name for each migration test.  This will avoid migration tests of
race conditions and reduce tests intersection. After this change, database
``openstack_citest`` will be used only for initial connection to the database.

``test_migrations.conf`` file not required anymore, because we create test
database for migration test, so we no longer need to keep database credentials.

Implements blueprint: db-migration-tests
Related-bug: #1266595
Change-Id: I4febd485ff53936b636947c86773a23724e24c65
Symantec NFS cinder driver

Changes to support Symantec Storage Foundation Clustered File
System High Availability via NFS Cinder driver.

cert results at:
https://bugs.launchpad.net/cinder/+bug/1402147

implements: blueprint symantec-nfs-cinder-driver
Change-Id: Ie4b4785b7c93246147c8d9e6a172621f454301ae
Ensure that lun_id is an int for NetApp Drivers

Various NetApp drivers were treating the lun_id as a string
rather than an int.  This was causing attempts to mount NetApp
volumes to Hyper-V nodes to fail as they were checking an integer
type against a unicode type which would fail.

This change casts result_lun to an integer after the value has
gone through the ssh injection attack check.  This way Hyper-V
is able to verify if the found LUN is the target LUN, enabling
mounting of NetApp volumes to Hyper-V.

This change also refactors initialize_connection into some helper
methods so as to enable simpler unit testing of the patchset.

Closes-bug: 1372808

Change-Id: I308b3b2dff315ec33451fb45a30ecd53d5d4c353
Add Support for Dell Storage Center

This driver implements cinder FC and iSCSI volume drivers.
The file dell_storagecenter_api.py is called to interface with the
Dell Storage Center backend via a REST interface.
Dell_storagecenter_common.py is the base class implementation with
dell_storagecenter_fc.py and dell_storagecenter_iscsi.py being providing
fc and iscsi specific support respectivly.

https://bugs.launchpad.net/cinder/+bug/1398951

Implements: blueprint dell-storage-center-block-storage-driver
Change-Id: Ic483e54b40349ede20e078c6406f5bab8d7d7cc2
Merge "Convert mox to mock: tests/compute/test_nova.py"
Add unit test for commit 22abe9081

Commit 22abe9081 fixed a bug in commit d7bd65e8e which we could have
found the first time with a simple unit test.

This change adds the unit test to cover that new error handling block.

Related-Bug: #1398078

Change-Id: I86d2fd477f3ae5590c5f079a4c806d1f50eb96d0
Fix HNAS driver confusing error message

The error message shown when the parser finds a parser error
says, 'file not found' which causes confusion on the user when
he/she needs to debug the real cause o the problem. This patch fix
this by testing first if the file exist and then throwing a
proper error message.

Closes-Bug: #1402775
Change-Id: I91c7a24d5da37735787e8fc0da544c8ba8204884
Remove commented out code from cinder/test.py

There was a line of code left from previous development that
was left commented out.  This change removes the unnecessary
line of code.

Change-Id: I8a78e051e946f4cad7ec4b26d1a590a7e97cb613
Add the StorPool block storage driver.

StorPool is distributed data storage software running on standard x86
servers.  StorPool aggregates the performance and capacity of all drives
into a shared pool of storage distributed among the servers.  Within
this storage pool the user creates thin-provisioned volumes that are
exposed to the clients as block devices.  StorPool consists of two parts
wrapped in one package - a server and a client.  The StorPool server
allows a hypervisor to act as a storage node, while the StorPool client
allows a hypervisor node to access the storage pool and act as a compute
node.  In OpenStack terms the StorPool solution allows each hypervisor
node to be both a storage and a compute node simultaneously.

To make full use of StorPool's native network communication protocol,
the Nova compute nodes will need to use the StorPool libvirt volume
attachment driver, nova.virt.libvirt.storpool.LibvirtStorPoolVolumeDriver.

DocImpact
Change-Id: I64adbca724a52771b68e4838749f8896e6e56019
Implements: blueprint storpool-block-driver
Send the notifications to the Ceilometer for backup service

* Add the notification send-out for create_backup, delete_backup
  and restore_backup.
* Add the progress notification to Swift backup service.

DocImpact

Change-Id: I9835073a39aa8b2ffbec12d84147cce027ff731b
implements-bp: backup-notification
Delete default volume size 100M in drivers

There is check: if volume size == 0 we set default value to 100M,
it uses only in tests and it's little bit confusing.Use code only
for tests in drivers is bad practice.

Also the create volume flow already won't let user to create
a volume  with size 0. So it was decided to remove this check.

Change-Id: I620ae8fff4634c60a02329f22d1a0343b27aa955
Fix 3PAR driver hang on SSH calls

In removing the 3PAR driver local file locks, part of the fix included
making a new SSH connection for each call in the hp3parclient as
oppose to leaving a connection open. Older hp3parclients(3.1.1 and
later) will result in the SSH calls hanging at driver initilization time.

This patch will now check against the correct minimum hp3parclient version
and remove the need for checking of the SSH args version since the minimum
hp3parclient is now greater than 3.1.1
Closes-Bug: #1402115

Change-Id: Ic162a1a469e85fa36501d4de245fe16738d3aefa
Merge "RemoteFS: Move Nova snapshot code into RemoteFSSnapDriver"
Merge "First version of Cinder driver for Quobyte USP"
Merge "Ensure that lun_id is an int for NetApp Drivers"