Bug#929734: unblock: nova/18.1.0-6
On 5/29/19 9:49 PM, Thomas Goirand wrote:
> Package: release.debian.org
> Severity: normal
> User: release.debian.org@packages.debian.org
> Usertags: unblock
>
> Dear release team,
> Please unblock package nova 18.1.0-6.
>
> During normal operation, it may happen that nova-conductor doesn't
> work as expected when requesting a (live) migration of a virtual
> machine from one compute node to another. Indeed, some information
> may be missing in the json object generated by nova-conductor,
> leading to a HTTP 500 error.
>
> This patch fixes the mess if a VM gets into this broken state.
>
> I'm sorry if this isn't a full explanation of how things work, but
> it'd be hard to get into the full details of how Nova works. Though
> please trust me, this is an important patch that really needs to
> be in Buster, and I have tested this patch with success in production.
>
> Cheers,
>
> Thomas Goirand (zigo)
>
> unblock nova/18.1.0-6
Hi,
I just realized that Buster got a much lower version of nova: 18.1.0-2.
Here's the new debdiff. The changes are still quite minimal, there's on
top, only a fix for os-vif version (needed for smoother upgrades and to
make sure we don't hit an upstream bug), and a fix for the serialconsole
proxy startup.
Please unblock nova.
unblock nova/18.1.0-6
diff -Nru nova-18.1.0/debian/changelog nova-18.1.0/debian/changelog
--- nova-18.1.0/debian/changelog 2019-02-06 18:04:27.000000000 +0100
+++ nova-18.1.0/debian/changelog 2019-05-29 14:56:05.000000000 +0200
@@ -1,3 +1,31 @@
+nova (2:18.1.0-6) unstable; urgency=medium
+
+ * Add upstream patch to fix broken request_spec, which in certain cases lead
+ to breaking instance migration:
+ - Workaround_missing_RequestSpec.instance_group.uuid.patch
+
+ -- Thomas Goirand <zigo@debian.org> Wed, 29 May 2019 14:56:05 +0200
+
+nova (2:18.1.0-5) unstable; urgency=medium
+
+ * Revert using uwsgi for nova-api: this breaks the metadata server.
+
+ -- Thomas Goirand <zigo@debian.org> Thu, 07 Mar 2019 17:24:19 +0100
+
+nova (2:18.1.0-4) unstable; urgency=medium
+
+ * Use uwsgi for nova-api.
+
+ -- Thomas Goirand <zigo@debian.org> Fri, 01 Mar 2019 15:26:24 +0100
+
+nova (2:18.1.0-3) unstable; urgency=medium
+
+ * Also package the nova-serialproxy startup script/unit.
+ * Fix startup of nova-serialproxy.
+ * Accept only python3-os-vif (>= 1.11.1).
+
+ -- Thomas Goirand <zigo@debian.org> Tue, 19 Feb 2019 09:57:59 +0100
+
nova (2:18.1.0-2) unstable; urgency=medium
* Add fix-python3-compatibility-ceph.patch
diff -Nru nova-18.1.0/debian/control nova-18.1.0/debian/control
--- nova-18.1.0/debian/control 2019-02-06 18:04:27.000000000 +0100
+++ nova-18.1.0/debian/control 2019-05-29 14:56:05.000000000 +0200
@@ -62,7 +62,7 @@
python3-os-brick (>= 2.5.0),
python3-os-service-types (>= 1.2.0),
python3-os-traits (>= 0.4.0),
- python3-os-vif (>= 1.7.0),
+ python3-os-vif (>= 1.11.1),
python3-os-win (>= 3.0.0),
python3-os-xenapi (>= 0.3.3),
python3-oslo.cache (>= 1.26.0),
@@ -622,7 +622,7 @@
python3-os-brick (>= 2.5.0),
python3-os-service-types (>= 1.2.0),
python3-os-traits (>= 0.4.0),
- python3-os-vif (>= 1.7.0),
+ python3-os-vif (>= 1.11.1),
python3-os-win (>= 3.0.0),
python3-os-xenapi (>= 0.3.3),
python3-oslo.cache (>= 1.26.0),
diff -Nru nova-18.1.0/debian/nova-consoleproxy.nova-serialproxy.init.in nova-18.1.0/debian/nova-consoleproxy.nova-serialproxy.init.in
--- nova-18.1.0/debian/nova-consoleproxy.nova-serialproxy.init.in 2019-02-06 18:04:27.000000000 +0100
+++ nova-18.1.0/debian/nova-consoleproxy.nova-serialproxy.init.in 2019-05-29 14:56:05.000000000 +0200
@@ -25,7 +25,7 @@
exit 0
fi
fi
-if ! [ "${NOVA_SERIAL_PROXY_START}" = "TRUE" ] ; then
+if ! [ ""$(echo "${NOVA_SERIAL_PROXY_START}" | tr '[:upper:]' '[:lower:]') = "true" ] || [ "${NOVA_SERIAL_PROXY_START}" = "1" ] ; then
# This is to prevent pkgos-gen-systemd-unit to exit
if [ -z "${INIT_TEMPLATE}" ] ; then
exit 0
diff -Nru nova-18.1.0/debian/patches/revert-restore-async-keyword.patch nova-18.1.0/debian/patches/revert-restore-async-keyword.patch
--- nova-18.1.0/debian/patches/revert-restore-async-keyword.patch 2019-02-06 18:04:27.000000000 +0100
+++ nova-18.1.0/debian/patches/revert-restore-async-keyword.patch 2019-05-29 14:56:05.000000000 +0200
@@ -6,11 +6,11 @@
Forwarded: not-needed
Last-Update: 2018-09-25
-diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
-index a67747e408..59f0a8c292 100644
---- a/nova/db/sqlalchemy/api.py
-+++ b/nova/db/sqlalchemy/api.py
-@@ -202,7 +202,7 @@ def select_db_reader_mode(f):
+Index: nova/nova/db/sqlalchemy/api.py
+===================================================================
+--- nova.orig/nova/db/sqlalchemy/api.py
++++ nova/nova/db/sqlalchemy/api.py
+@@ -204,7 +204,7 @@ def select_db_reader_mode(f):
use_slave = keyed_args.get('use_slave', False)
if use_slave:
diff -Nru nova-18.1.0/debian/patches/series nova-18.1.0/debian/patches/series
--- nova-18.1.0/debian/patches/series 2019-02-06 18:04:27.000000000 +0100
+++ nova-18.1.0/debian/patches/series 2019-05-29 14:56:05.000000000 +0200
@@ -3,3 +3,4 @@
remove-crashing-blockdiag-doc-line.patch
revert-restore-async-keyword.patch
fix-python3-compatibility-ceph.patch
+Workaround_missing_RequestSpec.instance_group.uuid.patch
diff -Nru nova-18.1.0/debian/patches/Workaround_missing_RequestSpec.instance_group.uuid.patch nova-18.1.0/debian/patches/Workaround_missing_RequestSpec.instance_group.uuid.patch
--- nova-18.1.0/debian/patches/Workaround_missing_RequestSpec.instance_group.uuid.patch 1970-01-01 01:00:00.000000000 +0100
+++ nova-18.1.0/debian/patches/Workaround_missing_RequestSpec.instance_group.uuid.patch 2019-05-29 14:56:05.000000000 +0200
@@ -0,0 +1,45 @@
+Author: Matt Riedemann <mriedem.os@gmail.com>
+Date: Tue, 28 May 2019 11:24:11 -0400
+Subject: [PATCH] Workaround missing RequestSpec.instance_group.uuid
+ It's clear that we could have a RequestSpec.instance_group
+ without a uuid field if the InstanceGroup is set from the
+ _populate_group_info method which should only be used for
+ legacy translation of request specs using legacy filter
+ properties dicts.
+ .
+ To workaround the issue, we look for the group scheduler hint
+ to get the group uuid before loading it from the DB.
+ .
+ The related functional regression recreate test is updated
+ to show this solves the issue.
+Change-Id: I20981c987549eec40ad9762e74b0db16e54f4e63
+Closes-Bug: #1830747
+Origin: upstream, https://review.opendev.org/#/c/661786
+Last-Update: 2019-05-29
+
+Index: nova/nova/objects/request_spec.py
+===================================================================
+--- nova.orig/nova/objects/request_spec.py
++++ nova/nova/objects/request_spec.py
+@@ -225,6 +225,8 @@ class RequestSpec(base.NovaObject):
+ policies = list(filter_properties.get('group_policies'))
+ hosts = list(filter_properties.get('group_hosts'))
+ members = list(filter_properties.get('group_members'))
++ # TODO(mriedem): We could try to get the group uuid from the
++ # group hint in the filter_properties.
+ self.instance_group = objects.InstanceGroup(policy=policies[0],
+ hosts=hosts,
+ members=members)
+@@ -502,6 +504,12 @@ class RequestSpec(base.NovaObject):
+ spec._context = context
+
+ if 'instance_group' in spec and spec.instance_group:
++ # NOTE(mriedem): We could have a half-baked instance group with no
++ # uuid if some legacy translation was performed on this spec in the
++ # past. In that case, try to workaround the issue by getting the
++ # group uuid from the scheduler hint.
++ if 'uuid' not in spec.instance_group:
++ spec.instance_group.uuid = spec.get_scheduler_hint('group')
+ # NOTE(danms): We don't store the full instance group in
+ # the reqspec since it would be stale almost immediately.
+ # Instead, load it by uuid here so it's up-to-date.
diff -Nru nova-18.1.0/debian/rules nova-18.1.0/debian/rules
--- nova-18.1.0/debian/rules 2019-02-06 18:04:27.000000000 +0100
+++ nova-18.1.0/debian/rules 2019-05-29 14:56:05.000000000 +0200
@@ -183,6 +183,7 @@
dh_installinit --name=nova-novncproxy
dh_installinit --name=nova-spicehtml5proxy
dh_installinit --name=nova-xenvncproxy
+ dh_installinit --name=nova-serialproxy
install -D -m 0644 $(CURDIR)/debian/nova-consoleproxy.mydefault $(CURDIR)/debian/nova-consoleproxy/usr/share/nova-consoleproxy/default
override_dh_python3:
Reply to: