Add cinder volume driver support for Nimble Storage.

The set of changes introduces the cinder iSCSI volume driver support for
Nimble Storage. It implements the minimum set of features required by the
icehouse release. Please see the blueprint nimble-iscsi-volume-driver for
more information.

Change-Id: I48781fc890b8fefb33027da3db2b1ff56c5deed4
Implements: blueprint nimble-iscsi-volume-driver
Merge "Add cinder volume driver support for Nimble Storage."
Fixes Cinder volume upload to image on windows

Due to fact that when uploading a volume to an image the file is
opened in text mode and the different line endings style on
windows glance client won't be able to upload the desired file.
The solutions is to simply open the file in binary mode when
performing this action.

Change-Id: I51b084ce38e1aaad4ded63b75b097137dedc088c
Closes-bug: 1346911
Implements new 'bootable' option for manage existing volume.

A 'bootable' option (defaults to False) can be passed as part of
the HTTP POST request to manage an existing volume.  This is
passed into the database when the volume is created.

Also changes all drivers to use the more agnostic keys
'source-name' or 'source-id' when specifying
which existing volume to manage.  This change is to support the
cinderclient change in https://review.openstack.org/#/c/76216/
to make it easier for CLI users to manage existing volumes
without having to know the implementation-specifics of the driver.

Change-Id: I58eaa75181fd0b606628584308fd83bdeaa8b64f
Implements: blueprint add-export-import-volumes
Merge "Fixes Cinder volume upload to image on windows"
Merge "Implements new 'bootable' option for manage existing volume."
Remove Hyper-V dependency in the Windows Cinder Volume Driver

Currently, the Windows Cinder Volume driver depends on the Hyper-V
feature in order to be able to access the WMI namespaces that
are used for some of the volume related operations.

Those WMI calls must be urgently replaced with Win32 calls in order
to provide CI tests performed on Windows Storage Server edition.

Change-Id: Ib4b8bccee3c7ee86e6cc44e1b16d20d455e61612
Closes-Bug: #1346496
Add SMB Volume Driver

Introduces a volume driver which makes use of SMB shares for
hosting volumes as disk images, having a similar workflow with
the other NFS like drivers.

The driver uses Samba in order to access the SMB shares. It takes
SMB shares information such as share path, credentials and other
mount flags from a config file of which location can be configured
in the cinder config file.

It includes all the features required by the Juno release.

Implements: blueprint smbfs-volume-driver

Change-Id: I3b4bebf73122d5b784228af18f9b1eddfc02b643
Remove Hyper-V dependency in the Windows Cinder Volume Driver

Currently, the Windows Cinder Volume driver depends on the Hyper-V
feature in order to be able to access the WMI namespaces that
are used for some of the volume related operations.

Those WMI calls must be urgently replaced with Win32 calls in order
to provide CI tests performed on Windows Storage Server edition.

Change-Id: Ib4b8bccee3c7ee86e6cc44e1b16d20d455e61612
Closes-Bug: #1346496
Add Windows SMB Volume Driver

Introduces a volume driver which makes use of SMB shares for
hosting volumes as disk images, having a similar workflow with
the other NFS like drivers.

This driver is based on the SMB Volume driver proposed for
Linux, overriding the platform specific methods.

It includes all the features required by the Juno release.

Change-Id: Idd5964690bca618c11fd116f80dd802d6cc2f31b
Implements: blueprint windows-smbfs-volume-driver