GPFS support for various volume attributes

Specify the following attributes when creating a new volume:

* The storage pool on which the volume is placed
* Number of block-level replicas
* Whether the physical blocks should be allocated locally on the node issuing
  the IO or striped across the cluster
* Whether writes to the volume should use direct IO
* Number of file system blocks to be laid out sequentially on disk to behave
  like a single large block
* Local storage attached to specific node(s) where the replicas of the
  volume should be allocated

Change-Id: I77bb7de32bbde5a125f8c6f9a727b538ea99bc18
Implements: blueprint gpfs-volume-attributes
Increase test coverage brick/initiator/connector

Covered next methods:
	disconnect_volume_multipath_iscsi;
	get_multipath_iqn;
	get_iscsi_devices;
	get_multipath_device_name;

Change-Id: I0eaffa6d1408446f1f13e56016642df5337015a2
Storwize/SVC: More error logging

Some cases had exception raised without logging the error, and one
case where FC was not configured properly raised an IndexError rather
than presenting a clear message.

Fixes: bug 1212652

Change-Id: I7c39977f8e168e5e6afcdeb0f772fec854732140
Fix some pylint error in Coraid Driver

Chage usage of rpc method in tests, for fixing
3 pylint error.

Change-Id: Ib30d3f1a26b718d2fca588668683253c03df01ba
Use FakeLoopingCall instead of the real one

Decrease the execution time in brick's tests.

Change-Id: Idef19e91f593c2c276015d5bf9f9cc85cd6094ad
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
Removed need for domain in 3PAR drivers

The 3PAR drivers need to support CPGs that are not part of a
virtual domain on the 3PAR backend. This patch removes the need
for the CPG to be part of a domain and changes a few of the commands
that took the domain as an option.

DocImpact

Change-Id: I7e472e19e484e837c9216ea01455a4b8a85b19e5
Fixes: bug #1212328
Reduce hidden effects of sqlalchemy objects

The flows are currently holding onto sqlalchemy
due to bug #1214083 and this is causing a problem
with gettextutils which appears to be deepcopying
the raw objects, of which one of those is sqlalchemy
objects, which can't seem to be deepcopied.

Change-Id: Ie831738799a75e2a4a652c73900cad353a71e327
Standardize on ID for log messages

We have some places where logs use name to identify
a volume and others where we use ID.  Let's standardize
on the UUID here as that's typically the unique identifier
we use in most places anyway.  Even though name is a
derviative it seems better to be consistent with this
and use the UUID by itself.

Change-Id: Iaee3d146042780e4a526834db1e0be84a705f24b
Fixes: bug 1214140
Add root_helper param to get_connector_properties

This patch adds the ability to pass in a custom
root_helper for executing commands.  This is needed
for other projects that need a custom root-wrapper,
such as nova.

fixes Bug #1213135

Change-Id: Ie18276ae2e736bb2276d4e9c57385d2588441428
Avoid serializing CinderExceptions before they are translated

CinderExceptions were being unicode()'d when being wrapped in an
HTTPException, and this was causing the delayed translation to fail for
those errors.

Also, CinderExceptions have a 'message' class attribute that holds the
generic error message template, e.g. "Backup  %(backup_id)s is not
found", unfortunately, because the names are the same, it was
overshadowing the actual exception instance 'message', e.g. "Backup 1 is
not found", when translating. This patch puts the exception's actual
message in a new field called 'msg'.

Fixes Bug: #1214102

Change-Id: Ied9abcc3d05454852c0a5891432eb181220a744e
Merge "Allow Cinder to call Nova client"
Allow volume create from source unless in error status

This patch restores the source volume status checking behavior
to allow create_volume function to proceed unless it is in
error status. In FibreChannel attached environment, it is typical
to have a volume attached before the volume clone starts. The
operating system owns the volume will ensure the consistency.

Fixes: bug #1214235
Change-Id: Ie639f2f36e2939399303ca0658c169124801e86b
Merge "Reduce hidden effects of sqlalchemy objects"
Merge "Standardize on ID for log messages"
Added need info to accept_transfer

Drivers that implement accept_transfer will need
things like the new user_id and project_id.  We were
not including this in the original add, in order for
drivers that are tenant aware this information will be
necessary.

Also the get_volume call in the transfer was using
the new user context, so the volume would never be
found.  We fix this here by providing an elevated
context to the get_volume call when accepting the
transfer.

Change-Id: I7b60c19950f85c4309a97bb842ff238bcf8e746a
Fixes: bug 1213275
Add accept_transfer to solidfire driver

The SolidFire cluster is tenant aware and as such
needs to change account association on volume transfer.

We use the project_id to build this account, so read that
in here and create a new account if necessary and re-assign
the existing volume to the new tenant account.

Change-Id: I29879714c2d32a982918cd1305c8eb00718795fd
Make the SolidFire driver api port configurable.

Making the SolidFire driver api port configurable allows it to be
placed behind a transparent proxy.

Change-Id: I976ecfd5df11797722776faf65777ca1ffa5b0c4
Fix Fibre Channel attach for single WWN

The code allowed for only a string of the WWN or a list of them.
Unfortunately unicode is also returned, for which the attach fails.
This patch allows for unicode as well.

Change-Id: I4d2809b41b24b2240e447a5c09f14e6438304cd6
Fixes: bug 1214413
Merge "Add root_helper param to get_connector_properties"