TSM backup driver changes to support file backup

Extend TSM backup driver to support backup of file based volumes,
as well as restore and delete of the backups.  This in addition
to the current block based volume support.  This involves determining
the type of volume this is requested to be backed up, and modifying
the dsmc command options accordingly.  When a volume is backed
up, the backup mode and backup path are saved in the backup
service_metadata for use on restore and delete operations.

This commit includes some further refactoring based on pylint
feedback and system testing.

Implements: blueprint tsm-backup-driver-enhancement
Change-Id: Ic994a8c2f7302e59358dd858b50df746c9a7d76f
Add optional ionice to volume clearing process

Allow the volume clearing process to have an ionice priority set to
reduce the performance impact of volume zeroing. Note that this may
cause volume clearing processes to get backed up on  a busy system, use
with care.

DocImpact
Change-Id: I2d556f57aaca8a8ccc6f0f767f1cec28c3f9bc86
Implements: blueprint when-deleting-volume-dd-performance
Don't clear host_state_map when scheduling

host_state_map was added to scheduler for the purpose of caching latest
host_state in memory for scheduler.  With this cache, scheduler has the
latest host_state (e.g. free_capacity, allocated_capacity, etc) of hosts
even hosts haven't reported their updated status to scheduler.

Unfortunately, this cache is flushed when scheduling pulling all available
volume services from DB in current implementation, which is a bug.

This change remove the host_state_map.clear() so that scheduler is able to
maintain an up-to-date (well, mostly) view of all volume services in memory.
Also, added code to remove non-active host from the cache every time when
scheduler handles a new request.  Multi-line docstrings in cinder/scheduler/
host_manager.py are also fixed.

Change-Id: Ib47be483fa26631a1483721e2ae6d972994e150f
Fixes-bug: 1271162
Export and import backup service metadata

Add new admin API for backup-export and backup-import.
The new commands export the backup details (not actual backup) to
a string that can be imported again in another OpenStack cloud or
if the backup database was corrupted.
The code includes a default backup driver implementation.
Backup test code converted to use mock.

blueprint cinder-backup-recover-api
DocImpact new admin API calls backup-import and backup-export

Change-Id: I564194929962e75c67630e73d8711ee6587706d4
Fix volume stats with multiple LeftHand clusters

When more than one cluster exists in a LeftHand management
group, get_volume_stats may return the stats for the wrong
cluster. This patch fixes the problem by listing the cluster
name in the getClusterInfo query.

Change-Id: I2d5a76869c6bb1b3d514f0546ea00998e5ee32fb
Closes-Bug: #1279897
Merge "Export and import backup service metadata"
Merge "Don't clear host_state_map when scheduling"
Merge "Add optional ionice to volume clearing process"
Merge "TSM backup driver changes to support file backup"
Merge "Fix volume stats with multiple LeftHand clusters"
(Test commit) Change README to reflect Jio's fork of Cinder

Change-Id: I3f26c0a736e63725aec24ca2fa12c707b8e6460f