Updated from global requirements

Change-Id: I4f26d3a8790c799e5c1f7f81031406e0c57545f9

Change-Id: Ica7315effe308bd739e90f885849fac27a3c542b
Fix rpc client docs

Missing a colon before the example code, see:

  http://docs.openstack.org/developer/oslo.messaging/rpcclient.html

Change-Id: Icd875e509b0057c2c739d43c11cd37ab923b59ee
Add third element to RPC versions for backports

This makes the RPC version support three elements, adding a "revision"
in addition to the major and minor version. The revision would always
be zero for the master branch of a service, but could be incremented
for stable versions. This provides us some room to backport fixes
that affect RPC versions in such a way that would avoid breaking
the version lineage for systems running stable versions that may
some day be involved in a rolling upgrade to a version from master.

I didn't find any tests for version_is_compatible(), so I added
some for existing version scenarios, as well as new ones with
revisions. They also serve to validate that this doesn't break
anything for code using two-element versions (the expectation is that
two-element versions will still be used everywhere until a third
is needed).

Porting chages from Change-Id I239c17a3e305f572493498c4b96ee3c7514c5881
to oslo-incubator

Change-Id: I4fa7b0be14a7afba36136a746b76036355f119b2
Apply six for metaclass

__metaclass__ cannot be used in python3.six be used in general
for python 3 compatibility.

Porting Change-Id I9fc7a59df3af29b4cc1287c40fa4e883d994a961
from oslo-incubator

Change-Id: Icdacdcf5556b6d3b8450d1350c6f62b4f5a9690b
Merge "Add third element to RPC versions for backports"
Make rpc_backend default to 'rabbit'

'rabbit' is the canonical name for the driver and 'kombu' is just an
alias, so let's set the default to the canonical.

Change-Id: If163ece6793d2a7d6e99d0c8df1745bbcf9a36e6
Updated from global requirements

Change-Id: I076e205d326c8da4e72032d81e46be21cba8ebe5
Merge "Make rpc_backend default to 'rabbit'"
Properly handle transport:///vhost URL

Currently, if we are supplied with a transport URL with only the virtual
host specified, we completely ignore it. Instead, the behaviour should
be that we use that virtual host with the host, port and credentials
from the config file.

Change-Id: Ic97aa511ddf9bce69b1a5069d9f6468f4bd6dd4c
Replace assertEquals with assertEqual

The method assertEquals has been deprecated since python 2.7.
http://docs.python.org/2/library/unittest.html#deprecated-aliases

Also in Python 3, a deprecated warning is raised when using assertEquals.

Change-Id: Iba0ae72e72470cdf5b122defcd68effc5434f948
Updated from global requirements

Change-Id: I7080ecd84738030e9143f6b313522e2e5ebf6540
Merge "Replace assertEquals with assertEqual"
Merge "Properly handle transport:///vhost URL"
Updated from global requirements

Change-Id: I8275dd8bfd72d3a71d9606f8822a778023c1f0b9
Properly handle transport URL config on the client

On the client side, in the rabbit and qpid drivers, we use a connection
pool to avoid opening a connection for each message we send. However,
there is only currently one connection pool per process:

 def get_connection_pool(conf, connection_cls):
     with _pool_create_sem:
         # Make sure only one thread tries to create the connection pool.
         if not connection_cls.pool:
             connection_cls.pool = ConnectionPool(conf, connection_cls)
     return connection_cls.pool

This is a nasty artifact of the original RPC having no conectp of a
transport context - everything was a global. We'll fix this soon enough.

In the meantime, we need to make sure we only use this connection pool
where we're not using the default transport configuration from the
config file - i.e. where we supply a transport URL.

The use case here is cells - we send messages to a remote cell by
connecting to it using a transport URL. In our devstack testing, the
two cells are on the same Rabbit broker but under different virtual
hosts. Because we were always using the connection pool on the client
side, we were seeing both cells always send messages to the '/' virtual
host.

Note - avoiding the connection pool in the case of cells is the same
behaviour as the current RPC code:

 def cast_to_server(conf, context, server_params, topic, msg, connection_pool):
     ...
     with ConnectionContext(conf, connection_pool, pooled=False,
                            server_params=server_params) as conn:

Change-Id: I2f35b45ef237bb85ab8faf58a408c03fcb1de9d7
Changes driver method for notifications

Oslo.messaging.Transport is used as an abstraction to redirect function
calls to the configured driver. _send_notification called
self._driver.send instead of self._driver.send_notification

As the test
oslo.messaging.tests.TestTransportMethodArgs.test_send_notification also
assumed that send was the correct method, this should be changed
accordingly

Change-Id: I9406d74f3dc13c44d1aaad5379aafbf1a8580137
Fix some typos and adjust capitalization

Change-Id: I61cf108f9746fc44a08d83e11d44ed1007a6a1fa
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