Externalize error messages in the v2 API

This patch does more internationalization for the REST API error
messages that don't currently have it to take advantage of the new
support added by bp user-locale-api to show error messages in the locale
requested by the user through the Accept-Language HTTP header.

We only do v2 because consumers have used the response error message in
the past for error checks, so changing it in v1 too would break them.

Partially implements bp user-locale-api

Change-Id: I92780b42c125a91ab4916b7a31e4b71d306a89a1
refactor/unify driver version strings

This patch updates each driver to provide
the same mechanism for reporting the version
of the driver.  It also includes fixing the
reported driver version at get_volume_stats()
time to be the version set in the driver.

When the manager starts the driver it now
logs the driver's name and version in the log file.

fixes Bug #1212878

Change-Id: Icefd065f885ad417735490e6ac90e2b21557d2dc
Refactor Nexenta driver

Moving NEXENTA_OPTIONS out of nexenta/volume.py and splitting the
options. This change is to avoid duplication as the iSCSI and NFS driver
will use the same configuration options.

Change-Id: I3596fec9e852f07aea2ef7f2cd26023de07e7d0b
Fix SSH injection threat in 3PAR driver

The setqos ssh command was not built up correctly when the following
patch https://review.openstack.org/#/c/37697/ landed for cleaning up
the SSH calls from injection attacks in the 3PAR driver.

The command was in the following format causing the injection threat
due to the spaces in the second item in the list:
['setqos', '-io 5000 -bw 500M vvset:vvs-JOHB2Oj0QJ2UaWatwbe7Bg']
When it should actually be in the following format:
['setqos', '-io', '5000', '-bw', '500M', 'vvset:vvs-JOHB2Oj0QJ2UaWatwbe7Bg']

Change-Id: I69ed8dbca3af3ba56220891411b63331c1935373
Fixes: bug 1212884
Add support for encrypted volumes

This modification adds an encryption key UUID field to the volume
table, which is sufficient to make Cinder "aware" of encrypted volumes
as designated by predefined volume types. Integration with a key
manager is necessary to obtain an actual encryption key UUID (the
current implementation generates a random UUID when an encrypted
volumes is created). Cinder should *not* presume that it necessarily
will have access to the key itself -- this decision depends upon the
design, implementation, and policy for encrypted volumes. The key's
UUID is stored in Cinder because it is metadata about the volume.

Implements: blueprint encrypt-cinder-volumes
Change-Id: I164290e761a9922919a70f22f99af70dac213b61
SecurityImpact
Implement missing Coraid Driver functionality for Havana

Intorduce a brick connector for AoE protocol.
Refactoring Coraid Driver. Implement missing functionality for Havana:
- Copy Volume To Image
- Copy Image To Volume
- Clone Volume

Fix a bug with resize volume command.

Change-Id: I2af6a41dc44cb8bc4b74da752e0be9ed54a83cb1
Implements: blueprint coraid-driver-refactoring-for-havana
Fixes SSH injection threat in 3PAR driver

The setqos ssh command was not built up correctly when the following
patch https://review.openstack.org/#/c/37697/ landed for cleaning up
the SSH calls from injection attacks in the 3PAR driver.

The command was in the following format causing the injection threat
due to the spaces in the second item in the list:
['setqos', '-io 5000 -bw 500M vvset:vvs-JOHB2Oj0QJ2UaWatwbe7Bg']
When it should actually be in the following format:
['setqos', '-io', '5000', '-bw', '500M', 'vvset:vvs-JOHB2Oj0QJ2UaWatwbe7Bg']

This patch fixes an append vs. extend that was introduced in patch
https://review.openstack.org/#/c/42241

Also fixes: bug 1212884

Change-Id: I28f84acd02397ee0d433a666375737145904d67e
Refactor LVM driver to use Brick VG utility

Refactor the LVM driver to utilize bricks LVM
module.  This includes significant modification to
tests and fake objects related to testing.

implements blueprint: refactor-lvm-and-iscsi-driver

Change-Id: I94e41abf90d0c5b77e732d40ed8b81b0a2f5d7dd
Add more asserts to the limiter unit tests to test the RateLimit

Added new asserts to test the per user set limits instead of using
the defaults only

Change-Id: Ib6651a82c9d7bb4b79d5c68be6372dc1100b816a
Offline snapshots for GlusterFS volumes

Offline snapshots for the GlusterFS driver, based
on QCOW2 snapshotting.

This also introduces the option to have volumes stored
as qcow2 files rather than raw files.

Bump driver version to 1.1.

Implements blueprint qemu-assisted-snapshots
DocImpact

Change-Id: I783a802574b835b495e343f555f7ecf9b46981dd
Allow Cinder to call Nova client

This code allows Cinder to call Nova client functions. This will be used
for online migration and guest-assisted snapshots, which are both in
progress.

Change-Id: I9c94917bddcf250b880ca730df463a8402fe6b1d
Enable access to Nova admin API endpoint

Note: includes compute/__init__.py from Avishay's
https://review.openstack.org/#/c/41285/

This will be merged outside of this patch.
Guest-assisted-snapshots for GlusterFS volumes

Coordinate with Nova to create and delete snaphots online for
GlusterFS volumes.

Cinder is responsible for creating a qcow2 file which Nova
will activate in the VM's snapshot chain.

Implements blueprint qemu-assisted-snapshots
Fixup qcow2_snap_file overlapping
Extend volume for GlusterFS

Add support for extend volume

Submit as separate gerrit review
Test cases for offline snaps