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
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
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
Update Nexenta ISCSI volume driver authors

Change-Id: Ib2981c336d479fb506a4db4a9d91e00c1cc6d4e8
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
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
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
Merge "Externalize error messages in the v2 API"
Merge "refactor/unify driver version strings"
Merge "Refactor Nexenta driver"
Merge "Fix SSH injection threat in 3PAR driver"
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
Merge "Add support for encrypted volumes"
Added missing import

pep8 tests didn't find this one.
This patch adds the missing _ import

Fixes Bug #1213268

Change-Id: Ia0e688fc15ccc4d8b3f83516c517e9f9c83767a0
Merge "Implement missing Coraid Driver functionality for Havana"
Merge "Fixes SSH injection threat in 3PAR driver"
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
Merge "Add more asserts to the limiter unit tests to test the RateLimit"
Remove strcmp_const_time

This was carried over from Nova and isn't used in Cinder.  Removed
in Nova via commit 08a5066d with message:

"This function was used with deprecated auth and is no longer used
anywhere in the code, so just remove it."

Change-Id: I2b90a1a723265d9d23f89ec03246de8508d591e5