The set_time_override function in timeutils was written as a
helper function to mock utcnow for unittests before 'mock' was
generally used. Now that we have mock and fixture, we no longer
need to use it.
Change-Id: I9a0727edab12ccd5f1e4eb4f5f62d588f5a0faee
Partial-Bug: #1266962
* Get the current line at runtime, don't hardcode the line number
* Only strip last character of the filename if it ends with ".pyc"
or ".pyo". On Python 3, import automatically replaces .pyc and
.pyo with .py.
* Use threading.current_thread().ident to get the identifier of the
current thread. The get_ident() function is available in thread
module in Python 2, but in threading module in Python 3. And on
Python 3, logging.thread symbol does not exist anymore.
Change-Id: I3f248bb860caafaf38eefcf440d36b9bebc8f05e
basestring does not exist anymore in Python 3: use six.string_types instead.
In "try: .../except Exception as err: ...", err is a local variable, it does no
more exist after the except block. Copy the exception in a new cls_error
variable to fix Python 3 support.
Extract of Python 3 documentation: "When an exception has been assigned using
as target, it is cleared at the end of the except clause. (...) Exceptions are
cleared because with the traceback attached to them, they form a reference
cycle with the stack frame, keeping all locals in that frame alive until the
next garbage collection occurs."
http://docs.python.org/3.3/reference/compound_stmts.html#try
Change-Id: I2efb14b3838f78d1ed5e09b3ccd4e796a3448aee
Manually applied ef406a21782134aeefb944f74b3f1a47d6169318 from
oslo-incubator to get the fix required for bug 1257293.
Copying the original commit message from oslo-incubator below.
"""
When multiple RPC servers (consumers) are subscribed to the same RPC
topic, a single RPC request to that topic should be received by only
one of the consumers. A bug in the QPID driver caused every consumer
to receive a copy of the RPC request. This bug affects only Topology
version 2. This patch will cause a single queue to be created for
each topic, and shared among all consumers of that topic. This
results in each RPC request being received by only one consumer,
in turn across all the competing consumers.
"""
Change-Id: I76bfa5b48bad4a70fbf06b74f4cc8234af6610c2
Closes-bug: #1257293.
dict.iteritems() was replaced with dict.items() in Python 3. Use the
six.iteritems() function to get code compatible with Python 2 and Python 3.
Change-Id: I0c8ecc3ae540ffaf4c6b159e09ca16ccf365973d
"except (IOError, errors):" fails with a TypeError if errors is a tuple on
Python 3, whereas it was accepted in Python 2.
Change-Id: I65cfb60af87e76fdf2d37043fb106adbd4586fb9
Builtin exceptions are now in the builtins module, the exceptions module has
been removed.
Fix also the unit test for tracebacks, Unicode representation doesn't start
with "u" prefix anymore (u'...').
Change-Id: I422be457e23066699950c9a3999878ecf65f1b3f
With the routing notifier we can now issue high-frequency notifications
and not worry about clogging up the queue. The Sample priority will
be used for this situation.
Change-Id: Ia4aa77b7aa4ca9458e97ca3ed81101d92934b691
Update to get jsonutils compatible with Python 3.
The babel Python module is now required by gettextutils, and gettextutils is
imported by excutils.
Change-Id: Ifa6d6b29e2af58dfcfda1ab7efdb2f32cf9de655
Because driver should rely on executor and not directly on eventlet,
delete eventlet related code. This also drop the old driver API.
This is the amqp part.
Change-Id: Ic6060058dafa4dabbc5e8c68bf231c818a7fec25
Some modules have different names in Python2 and Python3. This patch
make them compatible with Python 3.
* Use six.moves.filter instead of itertools.ifilter() in Python 2.
* Use common.py3kcompat.urlutils instead of urllib and urlparse.
Change-Id: Ia27ebf6057d91d0e129fbe90f995cfdaa89efa8a
In Python 3, some data structures' attribute is different in Python 2.
See http://pythonhosted.org/six/#object-model-compatibility
This is change mapping:
six Python 2 Python 3
six.next(it) it.next() next(it)
six.iterkeys(dict) dict.iterkeys() dict.keys()
six.itervalues(dict) dict.itervalues() dict.values()
Implements: blueprint make-python3-compatible
Change-Id: Ida48f39ff230860feee7305b93b134c625a21663
In current logic, class impl_qpid.Connnection constructor calls
method connection_create twice indirectly. Let us avoid this.
Change-Id: I7618cf3506d857579dc37b338690d05179ba272d
We need to support deprecated transport driver configurations like:
rpc_backend = nova.rpc.impl_kombu
i.e. 'nova.rpc.impl_kombu' is a deprecated alias for 'rabbit'.
Initially, we supported this by adding the aliases to each project's
setup.cfg:
oslo.messaging.drivers =
nova.rpc.impl_kombu = oslo.messaging._drivers.impl_rabbit:RabbitDriver
However, this means that code like this:
url = str(TransportURL(conf))
generates a bogus URL string like:
nova.rpc.impl_kombu://...
We need to apply these transport aliases when we load drivers, but also
when we create transport URLs from configuration containing potentially
deprecated aliases.
To enable that, add an aliases parameter to TransportURL(),
TransportURL.parse() and get_transport().
blueprint: transport-aliases
Change-Id: Ifce68ff62746c2a363c719417a2bd0a78ee025dd
The ack_on_error is not used by the abstraction layer, and only the
rabbitmq implements it.
This commit remove this feature, and next commit will add a new way for
this.
Partial implements blueprint notification-subscriber-server
Change-Id: I17eb23f2e3e374630251576438011f186e5b2150
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
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
Handle the case where the context passed into def pack_context() is a
dictionary. If a dictionary is passed in, we don't need to call to_dict
before updating the msg.
Closes-Bug: #1208971
Change-Id: I2ce0b28f97634e717868e0ee5525189338d4981c