Updated from global requirements

Change-Id: I9d453b1270f82821273b1cc654e031599c1f9f77
Remove property on virtual_host in TransportURL

This isn't useful at all.

Change-Id: I1025da66a0f382cc3ecec15acf01890d75257a6a
Remove hosts as property in TransportURL

There's no need to use this indirection there.

Change-Id: Ia0d247693509f14b1a0a2faffb7da8884c679170
Merge "Remove property on virtual_host in TransportURL"
Merge "Remove hosts as property in TransportURL"
Support a new qpid topology

There has been a bug open for a while pointing out that the way we
create direct exchanges with qpid results in leaking exchanges since
qpid doesn't support auto-deleting exchanges.  This was somewhat
mitigated by change to use a single reply queue.  This meant we created
far fewer direct exchanges, but the problem persists anyway.

A Qpid expert, William Henry, originally proposed a change to address
this issue.  Unfortunately, it wasn't backwards compatible with existing
installations.  This patch takes the same approach, but makes it
optional and off by default.  This will allow a migration period.

As a really nice side effect, the Qpid experts have told us that this
change will also allow us to use Qpid broker federation to provide HA.

DocImpact
Closes-bug: #1178375
Co-authored-by: William Henry <whenry@redhat.com>
Change-Id: I09b8317c0d8a298237beeb3105f2b90cb13933d8
Supply missing argument to raise_invalid_topology_version()

Change-Id: I110255fd426e61840989a520a8f3708dc4d9b8ab
Decouple from Oslo uuidutils module

uuidutils module will be deprecated in Icehouse, So need replace it.
This patch uses str(uuid.uuid4()) instead of method generate_uuid.

Closes-Bug: #1253497
Change-Id: I35815544429c489096b4db3fa79a649f4cd9459f
Merge "Supply missing argument to raise_invalid_topology_version()"
Add 'warning' as an alias to 'warn'

The standard Python logging system uses 'warning' and not 'warn'. To
ease compatibility with it, let's add 'warning' too.

Change-Id: I7778d7960ca7a72be007cb083e5434ede6e3fe6e
notifier: add audit level

This maps what is provided by the openstack.common.logging module.

Change-Id: Id581c4c748e2763a2c9a3e576e3bd497595adbff
Implement a log handler using notifier

Change-Id: Iccac043d46a733e965b3310bbbe9c7d6c07a46ac
Blueprint: logging-and-notification
Avoid storing configuration in notifier

The notifier itself doesn't use the configuration. So let's not store
it, that lights the dependency a bit on this configuration object.

Blueprint: messaging-decouple-cfg

Change-Id: Ic4b5ddd93ea0382bd8292f9e31b7dacba9b489d3
Merge "Avoid storing configuration in notifier"
Remove useless global vars / import

This removes a few import and global variables that are not used through
the code. That cleans things a little.

Change-Id: I7b30bb11e8ad3c2df01ca2107eff2444feed3fe2
Simplify common base exception prototype

It seems there's no gain in trying to be smarter and different from the
base Python Exception, so let's remove our custom code to be more
compatible and friendly with all Python versions.

Change-Id: I259783ef1f77c6661ea7dc2325605c8d6290b898
Merge "Remove useless global vars / import"
Refactors boolean returns

Return the boolean evaluation itself rather than
a boolean after evaluation

Change-Id: I6329d474c921e29eb3a690270de12d51cb863710
Remove vim header

No need to set tabstop 189 times, this can be set in your vimrc file
instead.  Also if set incorrectly gate (pep8 check) will catch your
mistakes.

Change-Id: Ic6f0c0ef94e8194a5c121598305d1ec3c74e4843
Unify different names between Python2/3 with six.moves

Some modules use different names in Python2 and Python3. Use six.moves
to make them work well in Python2 and Python3.
This is changes mapping:

six.moves      Python 2       Python 3
reduce         reduce()      functools.reduce()

Implements: blueprint make-python3-compatible
Change-Id: I97971f2ab40385bfc2c73ae7e8a7620c4d64a03c