Fix Huawei drivers to support other host OSs

Huawei drivers create Linux hosts by default when attaching volumes.
This patch makes them also support Windows, XenServer, AIX, etc.
The default OS is still Linux if it is not specified.

Users need to configure the host OS types in Huawei XML configuration
file. They need to set the items like this:
<Host OSType="Windows" HostIP="10.10.0.1, 10.10.0.2, ..." />
<Host .../>

When attaching a volume, the driver will get the host IP from nova. We
compare that IP with the IP in "HostIP" to get the corresponding OS type.

Closes-bug: #1229759
Change-Id: I36fd52b97f790f1c68eaf24b6c12e7ef5d16145d
Initialize shares variables for RemoteFsDriver(s)

self.shares and self._mounted_shares are used by various methods
for RemoteFs-based drivers, but may not be instantiated early enough.

Initialize them in __init__ to ensure they always exist.  (Also fixes
pylint warnings.)

Closes-Bug: #1239741
Change-Id: I0ef884c28b82b7f694cf8a0fb4629c835da11c91
FK lookup failures during migration

There are a couple of cases where migrations have failed
upgrading from Grizzly to Havana, this seems to be isolated
to a couple of migrations so far and the error message is a
failure to lookup/associate the volume-id FK dependency.

It appears that this is caused by not setting the charset
in the migration, so the result is that the initial db setup
uses utf8 and the migrations are using the default latin1.

This patch goes through all of the migrations in Havana that
specify InnoDB and explicitly sets the charset to utf8 to match
the volumes table (and the other original tables).

Change-Id: I43b219ff5e4eea10a7391ad65ef68a80b7460370
Closes-Bug: #1233861
Nexenta NFS volume driver folder auto sharing

1. Auto sharing for NFS enclosing folders, this helps to avoid errors if user
forgot to share enclosing directory.

2. Added version history to NexentaNfsDriver doc string.

Change-Id: I9aa2a7b8760c687985aa11d85715188f1c1622f9
Fix lvm.extend_volume to pass Gig suffix

The extend function in the lvm driver was not converting
the cinder size value to Gigabytes before passing the call
to the vg module.  The result was that we would attempt to
extend a volume to "new size in Megabytes" which of course
is less than the current size since we do a Gigabyte string
conversion on create and everywhere else.

This change makes sure we pass the integer change through
the sizestr method to get the G suffix needed to work properly.

Change-Id: I070962a3aa7038f612e19a93ccaa60cbc13008f6
Closes-Bug: #1240287
Don't zero out thin provisioned LV's on delete

Thin provisioned LV's don't need secure delete to protect
from data leakage.  Also, zeroing these out kinda defeats
the purpose of using thing provisioning.

This patch add a check for the lvm type and if it's thin simply
returns from the lvm.clear_volume() method.

Change-Id: Ie6764209018152565295291efc6fbba553698ae6
Closes-Bug: #1240299
Merge "Initialize shares variables for RemoteFsDriver(s)"
Merge "Fix lvm.extend_volume to pass Gig suffix"
Merge "Fix Huawei drivers to support other host OSs"
Merge "Nexenta NFS volume driver folder auto sharing"
Merge "Don't zero out thin provisioned LV's on delete"