3PAR with pool-aware-cinder-scheduler

HP 3PAR support for the pool-aware scheduler.
Adds support for a list of CPGs (pools).  Uses
model update when our volume-type CPG is used
instead of the scheduler selected CPG.

In cinder.conf, hp3par_cpg now accepts a list of CPGs.

DocImpact
Implements: blueprint pool-aware-cinder-scheduler-hp3par
Change-Id: I74ef0af5390311eb1a529e0d5d4875c4f7d04156
3PAR migrate without losing type settings

Leverage retype to fix migrate.  It was losing type settings.

Closes-Bug: 1356608
Change-Id: Ic4d5233533abf65e4784b0e89f5793a6cd1ce521
HP 3PAR: Don't ignore extra-specs snap_cpg when missing cpg

When snap_cpg is specified in extra-specs, it should be used.
For some reason, it was being ignored when extra-specs did not
also specify a user cpg.

When using a volume-type, the snapCPG should come from (in this order
of preference):
1. extra specs snap_cpg,
2. extra specs cpg,
3. config hp3par_cpg_snap,
4. config hp3par_cpg.

Change-Id: I649e3dc49f7775a8071229fc315f0ee5f23aa833
Closes-Bug: 1368972
check the configuration item glance_num_retries

we need to to check the value of the configuration item glance_num_retries
in the code in order to ensure the " glance_num_retries " is equal or greater
than 0

Change-Id: I661ee883f3e1009e7fb242e0df2fa130eb8daa66
Closes-Bug: #1372452
Move SolidFire driver from httplib to requests

The SolidFire driver has been pretty static for a number of
years now, this change is to move from httplib for API calls
to requests.  There are a number of advantages to this, including
performance, simplicity and ability to add things like ssl support
easily.

In addtion this change removes the confusing looping/retry mechanisms
that were in the issue_api_request method and replaces it with a
retry decorator for the exceptions we're interested in retrying.

Finally, I realize that my unit tests suck!  That will be one of the
follow up items after a bit more clean up in the driver.

Change-Id: Icc4cf601bffddb057f35537f3870c45dd5eb67cc
Export cinder volumes only if the status is 'in-use'

Currently, cinder volumes are exported both 'in-use' and 'available'
after restarting cinder-volume service.
This behavior was introduced following commit.

  commit ffefe18334a9456250e1b6ff88b7b47fb366f374
  Author: Zhiteng Huang <zhithuang@ebaysf.com>
  Date: Sat Aug 23 18:32:57 2014 +0000

If the volumes are attached to nova instances, they should be exported
via tgtd after restarting cinder-volume.
But the volumes which are not attached to instances must not be exported
because everyone can connect these volumes.

This patch changes volume export behavior that exports a volume only if
the volume status is 'in-use'.

Change-Id: I4c598c240b9290c81bd8001e5a0720c8c329aeb9
Signed-off-by: Mitsuhiro Tanino <mitsuhiro.tanino@hds.com>
Closes-bug: #1381106
Merge "Move SolidFire driver from httplib to requests"
Merge "3PAR with pool-aware-cinder-scheduler"
Merge "3PAR migrate without losing type settings"
Merge "HP 3PAR: Don't ignore extra-specs snap_cpg when missing cpg"
Merge "Export cinder volumes only if the status is 'in-use'"
Merge "check the configuration item glance_num_retries"