The commit 887c445a7a made the nova.utils
module dependent on the fixtures library but the change missed updating
requirements and the fixtures library is not installed automatically.
This change migrates the fixtures library from test-requirements.txt to
requirements.txt so that the library is installed without test codes.
Closes-Bug: #1958075
Change-Id: I712f88fc1b6053fe6d1f13e708f3bd8874452a8f
This is a follow up change to I168fffac8002f274a905cfd53ac4f6c9abe18803
which added a hackaround to enable our tests to pass with
fasteners>=0.15 which was upgraded recently as part of a
openstack/requirements update.
The ReaderWriterLock from fasteners (and thus lockutils) cannot work
correctly with eventlet patched code, so this adds a wrapper containing
the aforementioned hackaround along with a hacking check to do our best
to ensure that future use of ReaderWriterLock will be through the
wrapper.
Change-Id: Ia7bcb40a21a804c7bc6b74f501d95ce2a88b09b5
As of fasteners >= 0.15, the workaround code to use eventlet.getcurrent
if eventlet patching is detected has been removed and
threading.current_thread is being used instead [1]. Although we are
running in a greenlet in our test environment, we are not running in a
greenlet of type GreenThread. A GreenThread is created by calling
eventlet.spawn and spawn is not used to run our tests. At the time of
this writing, the eventlet patched threading.current_thread method
falls back to the original unpatched current_thread method if it is not
called from a GreenThead [2] and that breaks our tests involving this
fixture. We can work around this by patching threading.current_thread
with eventlet.getcurrent during creation of the lock object.
[1] 467ed75ee1
[2] https://github.com/eventlet/eventlet/blob/v0.32.0/eventlet/green/threading.py#L128
Change-Id: I168fffac8002f274a905cfd53ac4f6c9abe18803
There is a race condition between an incoming resize and an
update_available_resource periodic in the resource tracker. The race
window starts when the resize_instance RPC finishes and ends when the
finish_resize compute RPC finally applies the migration context on the
instance.
In the race window, if the update_available_resource periodic is run on
the destination node, then it will see the instance as being tracked on
this host as the instance.node is already pointing to the dest. But the
instance.numa_topology still points to the source host topology as the
migration context is not applied yet. This leads to CPU pinning error if
the source topology does not fit to the dest topology. Also it stops the
periodic task and leaves the tracker in an inconsistent state. The
inconsistent state only cleanup up after the periodic is run outside of
the race window.
This patch applies the migration context temporarily to the specific
instances during the periodic to keep resource accounting correct.
Change-Id: Icaad155e22c9e2d86e464a0deb741c73f0dfb28a
Closes-Bug: #1953359
Closes-Bug: #1952915
This patch extends the original reproduction
I4be429c56aaa15ee12f448978c38214e741eae63 to cover
bug 1952915 as well as they have a common root cause.
Change-Id: I57982131768d87e067d1413012b96f1baa68052b
Related-Bug: #1953359
Related-Bug: #1952915
This patch adds a functional test that reproduces a race between
incoming migration and the update_available_resource periodic
Change-Id: I4be429c56aaa15ee12f448978c38214e741eae63
Related-Bug: #1953359
When suspending a VM in OpenStack, Nova detaches all the mediated
devices from the guest machine, but does not reattach them on the resume
operation. This patch makes Nova reattach the mdevs that were detached
when the guest was suspended.
This behavior is due to libvirt not supporting the hot-unplug of
mediated devices at the time the feature was being developed. The
limitation has been lifted since then, and now we have to amend the
resume function so it will reattach the mediated devices that were
detached on suspension.
Closes-bug: #1948705
Signed-off-by: Gustavo Santos <gustavofaganello.santos@windriver.com>
Change-Id: I083929f36d9e78bf7713a87cae6d581e0d946867
This regression test asserts the behaviour of Nova when Cinder raises a
404 during a DELETE request against an attachment.
In the context of bug 1937084 this could happen if a caller attempted to
DELETE a volume attachment through Nova's os-volume_attachments API and
then made a separate DELETE request against the underlying volume in
Cinder when it was marked as available.
Related-Bug: #1937084
Change-Id: I56106d16ed1d24793c4cddad0caa365a641ea4fd
This trivial change ensures the instance is logged within the volume
drivers whenever possible to ease debugging.
Change-Id: Ib61ba7266ad58b311adcac566a96149839cb688e
This makes our API fixture pass roles in line with the user that
is being used. For admin_api, the admin role is included, and two
other clients are added for "reader" and "other".
Change-Id: I4aa985072103aeab50a1a3db4784081a492dcb7b
Yoga testing runtime is updated now
- https://governance.openstack.org/tc/reference/runtimes/yoga.html
which needs to test py38 and py39. Unit tests update are
handled by the job template change in openstack-zuul-job and
this commit makes changes to fucntional job to run py39 as voting
and updating the metdata in setup file.
Change-Id: I314fd61f20f2c3551f6231d191b7dcaaefabd2b5
Adding IOError in list of catching exceptions in order to
fix behavior when nova-compute wouldn't retry image download
when got "Corrupt image download" error from glanceclient
and had num_retries config option set.
Closes-Bug: #1950657
Change-Id: Iae4fd0579f71d3ba6793dbdb037275352d7e57b0
Resolve the following RemovedIn20Warning warnings:
The Row.keys() method is considered legacy as of the 1.x series of
SQLAlchemy and will be removed in 2.0. Use the namedtuple standard
accessor Row._fields, or for full mapping behavior use
row._mapping.keys()
An additional warning that appears to have been resolved in the interim
is also removed.
Change-Id: I0c33130a745b986f1bcd2ec177f78e3bb68d2271
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
Resolve the following RemovedIn20Warning warning:
Passing a string to Connection.execute() is deprecated and will be
removed in version 2.0. Use the text() construct, or the
Connection.exec_driver_sql() method to invoke a driver-level SQL
string.
Change-Id: I44d6bf1ebfaf24f00a21389364456bceaae7c4d1
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>