Allow the user to update a volume's metadata

The fix mainly involves updating the VolumeController's update method
to allow the 'metadata' key to be a valid key in a request body.

The _translate_volume_summary_view method is updated to check for a
'metadata' key in the vol parameter after checking first for
'volume_metadata'.  This is to avoid making a third call to the
database after updating the volume model.  This solution introduces
the least amount of new code.

Change-Id: I41256d03f9c4c7a0866ff0f2d35fce8e4fd26b11
Fixes: bug #1046382
Split out drivers in san.py

The SolarisISCSIDriver and HpSanISCSIDriver have been removed from
san.py and placed in their own files. The default SanISCSIDriver
implementing some common methods still resides in san.py. These
san drivers have now been grouped in the san module.

Implements bp driver-cleanup

Change-Id: I68802f01a4a8c7e93e097777d305fbee0d15128a
Detect and fix issues caused by vol ID migration

The migration from volume ID to UUID neglected to update the provider_location
field on the volume.  As a result the iqn and volume name no long match and
existing volumes are no longer able to be attached after an upgrade
(essex -> folsom and then nova-vol->cinder).

This patch adds a method to the volume driver that will check for the
mismatch of volume name in the iqn during service start up.  If
detected it will update the provider_location field in the database
to include the new ID.  Also it will create a symlink to the device backing
file that also has the correct naming convention.

Note: We don't disturb an connections that are currently attached.
For this case we add a check in manager.detach and do any provider_location
cleanup that's needed at that time.  This ensures that connections
persist on restarts of tgtd and reboot.

Change-Id: I8224824b793c98a9767c5d8dd741d892be720c4f
Fixes: bug 1065702
Log the body of an /action

The inability to deduce an /action request from the logs
makes diagnosing integration with nova difficult. This change
logs the action method and arguments

Change-Id: Iea4f46c7da9c61e07aa23e897b60992b8fdb6663
Merge "Split out drivers in san.py"
Add VolumeTenantAttribute API extension

Expose the ID of the project to which a volume belongs through a
new API extension. This is only presented to Admins by default.
Visibility can be controlled with the 'volume_tenant_attribute'
policy rule.

Change-Id: If85d9759af6a9457bf3230375cc64af9efe4a088
pin sqlalchemy to the 0.7 series

sqlalchemy 0.8 beta has hit mirrors, and changes dependencies, thus
breaking jenkins. This pins it to 0.7 series until all the projects
agree to move forward to 0.8.

Fixes bug #1073569

Change-Id: If11f39d311ba9ef5cb2b198c9649a8997b2a52b5
Merge "Add VolumeTenantAttribute API extension"
Return volume type name on volume create

Update openstack api controller for volumes to fully inflate the
returned volume model on create to populate the volume_type fields so
the response serializer will return the name of the volume_type instead
of the id on volume create requests.  Returning the name on create is
consistent with the show and index commands.

fixes bug #1071436

Change-Id: Ie091cf824a2df40211d8bcfa7f177fc851d737f5
Merge "Detect and fix issues caused by vol ID migration"
Merge "Log the body of an /action"
Merge "Allow the user to update a volume's metadata"
Merge "Return volume type name on volume create"