Fix import log_handler error with publish_errors set

Sync latest module log_handler from Oslo.
Commit Id is 2843a92a0e4007f50d5ad63d51fe574e1ba5e280

This handler sends the error to configured notifier.
The notifier could be any kind (log, RPC, no_op, None).

Note: when using publish_errors you also need to set the
notification_driver option too.

Closes-bug: #1240349
Change-Id: I4f759b049b8f34904ba11382a2e8fc1578677a8f
Fix up calculating space info for mirrored volumes

The status reporting in the lvm driver for cinder volume incorrectly
reports free capacity. This is due to a couple of issues:
  a) the number of mirrors isn't taken into account
  b) there are some pathological cases where a
     simple division by total mirrors isn't sufficient
     because all mirrors must be on separate physical volumes.

Co-authored-by: Vishvananda Ishaya <vishvananda@gmail.com>
Co-authored-by: John Griffith <john.griffith@solidfire.com>

Closes-Bug: 1269964
Change-Id: I65e16b24367b4093a52c1c52d895fb58ef6a29ff
Remove unused exceptions

The following exceptions are not used.
  class MigrationNotFound(NotFound):
  class BadDriverResponseStatus(VolumeDriverException):
  class InstanceNotFound(NotFound):
  class VolumeRetypeFailed(CinderException):
  class DuplicateSolidFireVolumeNames(SolidFireDriverException):

Change-Id: I891360f9c150eb8ea3f3968f12b9ad3da998981a
Fixed inconsistency in iqn

Brick's TargetAdmin classes have a
default value set in __init__ for
iscsi_target_prefix.   The unit test was changing
the value returned for the internal _get_target,
but wasn't changing the CONF.iscsi_target_prefix to
match.  So the default value in the __init__ was
being used and hence the differences.

This patch sets the configuration's iscsi_target_prefix
which alters the values passed into the driver.  This
also makes the tests consistent between the iqn of the volume
at create time and delete time.

Closes-Bug: #1271249
Change-Id: Ie3308cf68adcbdff6057ea795af1299dded82e14
Convert RBD unit tests to use mock instead of mox

Change-Id: If32e14a8f5ff180b6c0ff46797bcb81b21f805f1
Closes-bug: 1261864
Storwize driver cleanup

1. Moved Storwize driver into 'ibm' directory and refactored into
   separate files to improve readability and debug-ability. Other IBM
   drivers will be moved into this directory in a separate patch.
2. Errors coming from storage now raise VolumeBackendAPIException,
   and those coming from the driver raise VolumeDriverException.
3. Fixed many pylint errors.
4. Removed any usage of mox from unit tests in favor of mock.

DocImpact

Change-Id: I1696a97279efe834a96b3f3843bc65f0ea6da9cc
Sync gettextutils from Oslo

Update gettextutils as a dependency for RPC updates

Requires changes within Cinder as well for
"get_localized_message" -> "translate" method rename.

221c37d Allow the Message class to have non-English default locales
0e1af5b Implementation of translation log handler
f5686b1 Merge "Translation Message improvements"
8b2b0b7 Use hacking import_exceptions for gettextutils._
2cfc1a7 Translation Message improvements
45658e2 Fix violations of H302:import only modules
12bcdb7 Remove vim header

Oslo version:
7a51572 Merge "Implement cache abstraction layer"
Date:   Wed Jan 15 19:31:16 2014 +0000

Change-Id: I979114dbebfe2368b071cc6c18951da227b6f74a
Sync py3kcompat, sslutils, versionutils from Oslo

Dependencies identified by update.py for RPC update.

py3kcompat:
12d3bbc Add method quote_plus in module py3kcompat.urlutils
8575d87 Removed copyright from empty files
0d8f18b Use urlutils functions instead of urllib/urllib2
12bcdb7 Remove vim header
4c22556 Use py3kcompat urlutils functions instead of urlparse
71743d9 Add urlopen/URLError/pathname2url in urlutils
0f2906f py3kcompat: Add unquote
eaec23b py3kcompat: Add urljoin compatibility
35c317b Fix capitalization, it's OpenStack
4d12ad1 python3: Import translation layer

sslutils:
8b2b0b7 Use hacking import_exceptions for gettextutils._
12bcdb7 Remove vim header
1a2df89 Enable H302 hacking check
99b7c35 Convert kombu SSL version string into integer
b0b37ce Fix IBM copyright strings
f63ea05 Use oslo-config-2013.1b3
e50b68c Support for SSL in wsgi.Service

versionutils:
8b2b0b7 Use hacking import_exceptions for gettextutils._
a5ae087 fixed typos
45658e2 Fix violations of H302:import only modules
37ea814 Adds decorator to deprecate functions and methods
12bcdb7 Remove vim header
d7d74a7 Add `versionutils` for version compatibility checks

Oslo version:
7a51572 Merge "Implement cache abstraction layer"
Date:   Wed Jan 15 19:31:16 2014 +0000

Change-Id: I72a4ddaa015ce4a8016d580c922e8f7664376cb7
Sync common modules from Oslo

Identified as dependencies for RPC sync by update.py

Contains code from:
12bcdb7 Remove vim header
e6494c2 Use six.iteritems to make dict work on Python2/3
6d0a6c3 Correct invalid docstrings
fe18bfa Remove keystone from default_log_levels default
0228b81 Logging excepthook: print exception info if debug=True
8b2b0b7 Use hacking import_exceptions for gettextutils._
6d0a6c3 Correct invalid docstrings
fe18bfa Remove keystone from default_log_levels default
13eb01c Adding domain to context and log
27b21bc Unify different names between Python2/3 with six.moves
a6f40ac Don't log to stdout when log_dir is set
4c22556 Use py3kcompat urlutils functions instead of urlparse
0bf03b7 Add network_utils.urlsplit
e456727 Remove useless logging in networks_utils
8b2b0b7 Use hacking import_exceptions for gettextutils._
37e46bb disable SIGHUP restart behavior in foreground
f08f6ba service: replace eventlet event by threading
32cd4c0 Allow configurable ProcessLauncher liveness check
25ff65e Make wait & stop methods work on all threads
7013471 Fix typo in parameter documentation (timeutils)
ae931a9 Avoid TypeError in is_older_than, is_newer_than
ad17a69 Fix filter() usage due to python 3 compability

Oslo version:
7a51572 Merge "Implement cache abstraction layer"
Date:   Wed Jan 15 19:31:16 2014 +0000

Change-Id: If83fb203ecbae912e365118861477a9be834fde3
Enable multi-process for API service

Due to the limit of Python interpreter, API service of Cinder can't
really utilize underlying multi-core architecture even libraries
like eventlet has been used. To make API service much more scalable,
we'd adopt multi-process (worker) mode that has been used for long
in Glance/Swift/Nova.

The default behavior isn't changed with this patch, Cinder API
service will still run in one process (default value of
osapi_volume_workers is None).

Implementation wise, a good portion of cinder/service.py has been
removed because those content has been merged in Oslo version of
service module.  cinder/wsgi.py is also updated to adopt the change
for multiple WSGI servers running in separate processes.

Implement bp: multi-process-api-service

DocImpact: 'New config option osapi_volume_workers is used to specify
number of API service workers (OS processes) to launch for Cinder
API service.  Setting this config option to a proper value (e.g.
osapi_volume_workers = # of CPU cores/threads of the machine) can
greatly improve the total throughput of API service [# of API
requests can be handled per second].'

Also removed out-dated comments in bin/cinder-api due to the fact
that this bug [1] has been fixed in eventlet 0.9.13

[1] https://bitbucket.org/eventlet/eventlet/issue/92/eventletgreen-override-of-oswaitpid

Change-Id: I8361d0dc0d43040e48634ff1aee1324e5e0af466
GlusterFS: Fix deadlock in volume clone

The create_cloned_volume path could deadlock due to
create_cloned_volume and create/delete_snapshot using the same
lock for synchronization.

Refactor the calls to create/delete snapshot to call the inner
method which does not use a lock.

Introduced by "06999f6 GlusterFS: Synchronize additional op..."

Related-Bug: 1267983
Closes-Bug: 1272092

Change-Id: I84ca34b201c10644faa047f1c9274c14bcdd0359
Fix docstring and remove unused variable

Fix error docstring and remove unused variable 'volume ' in
VolumeTransferTestCase.

Change-Id: I6c98af30df88b8f19c23ef5e38e4b5b2eef7436c
Closes-Bug: #1272182
Delete volume transfer in volume_destroy function

Doing volume force delete operation on volume-A will change volume-A's
status to 'deleted', so all related data about volume-A should be deleted.
Now current version's volume_destroy function doesn't delete related data
of volume transfer. If there is volume transfer about volume-A, first do
force delete operation on volume A, and thus the volume-A's transfer data
would be residual. So remove the related data of volume transfer in
volume_destroy function.

Change-Id: Id80a6e0cc061fccb02af60706244be043abdd72d
Closes-Bug: #1270785
Merge "Fix up calculating space info for mirrored volumes"
Catch new iscsi exception

A while back we fixed up a target create/update error
that was identified in the gating tests:
    https://review.openstack.org/#/c/47513/

Since then a new patch was introduced to to the update and separate
it so that it could easily be used in other places.
    https://review.openstack.org/#/c/58599/

The problem is this added a new exception "TargetUpdate" and
didn't add this to the except block that we have.

This patch changes the catch block to handle the new exception and
do the retry, thereby putting the original fix back in place.

Change-Id: I1ed1bc6f4249f99a36b1168f9fec0b6b74482acf
Closes-Bug: 1223469
Updated from global requirements

Change-Id: I6eee83f9c1f315ad295fc710f98f033349bb7aa9
Imported Translations from Transifex

Change-Id: I6fd23ffe606bc94c5ad1648da65098c28846087a
Merge "Fix docstring and remove unused variable"
Merge "Fixed inconsistency in iqn"
Merge "Sync gettextutils from Oslo"