diff options
author | 2016-12-18 16:53:26 +0100 | |
---|---|---|
committer | 2017-01-21 18:07:28 +0100 | |
commit | e42a9b3011f96ad26f4a19db77ac44cad31a4290 (patch) | |
tree | b6a1c7f918138dd3e4705d170dde85eb2e5aaa6a /patches/fuel-library/arm64-bug-fixes/0005-nova-libvirt-fix-delete-instance-with-nvram.patch | |
parent | 5c258a9ae96fd2a0c6fd56e41c4368467e931782 (diff) |
Uplift Armband to Fuel Newton
[ Dan Andresan ]
- puppet: database: Fix Percona XtraBackup sync
[ Alexandru Avadanii ]
- disable all plugins;
- re-enable remote tracking;
- remove "Revert: Point to specific snapshot ...";
- patch context adjustments;
- obsolete "kernel-bump", linux-image-lts-xenial is now the default;
- network-checker iface state check now fixed upstream [1];
- fuel-nailgun-agent hugepage size should also check /proc/meminfo;
- fuel-nailgun-agent CPU detection for AArch64;
- nova AArch64 hugepage support is now upstream;
- obsolete Cirros Test VM direct kernel boot (by switch to AAVMF):
* f-l/0001-upload_cirros-Add-direct-kernel-boot-support.patch
* f-w/0001-direct-kernel-boot-for-cirros.patch
- rework m1.micro RAM size patch after puppet manifest split upstream;
- re-enable arch-agnostic plugins which were rebased in Fuel@OPNFV:
* f_yardstick-pluginbuild
* f_congress-pluginbuild
- do NOT retire MySQL SST provider patch series (nack: ARMBAND-186),
rebase (and keep for now) MySQL SST provider patches, as trying to
use xtrabackup-v2 revelead a regression since Colorado.3.0, and
these patches simplify troubleshooting a lot;
- AArch64: nova: libvirt: Use host-model cpu (ARMBAND-193);
- AArch64: nova: libvirt: Use pointer_model instead of use_usb_tablet;
- m1.micro RAM size insufficient for TestVM with AAVMF (s/128/256/)
- switch Cirros TestVM to AAVMF from direct kernel boot;
- backport nova libvirt driver fix for deleting instances booted with
AAVMF firmware from [2];
TODO (later):
- Include ISO build time fixes for cirros_testvm in Armband package;
TODO (ODL, later):
- test & revise leveldb patching;
- bring back Qugga patching for arm64;
- configure systemd service to automatically respawn;
[1] https://review.openstack.org/#/c/417373/
[2] https://review.openstack.org/#/c/357190/
JIRA: ARMBAND-29
JIRA: ARMBAND-32
JIRA: ARMBAND-63
JIRA: ARMBAND-88
JIRA: ARMBAND-116
JIRA: ARMBAND-118
JIRA: ARMBAND-186
JIRA: ARMBAND-193
JIRA: ARMBAND-194
JIRA: ARMBAND-195
JIRA: ARMBAND-196
JIRA: ARMBAND-197
Change-Id: Ia99022e364e61245d109cabab9d0ed7157b4d2f5
Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
Signed-off-by: Dan Andresan <dan.andresan@enea.com>
Diffstat (limited to 'patches/fuel-library/arm64-bug-fixes/0005-nova-libvirt-fix-delete-instance-with-nvram.patch')
-rw-r--r-- | patches/fuel-library/arm64-bug-fixes/0005-nova-libvirt-fix-delete-instance-with-nvram.patch | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/patches/fuel-library/arm64-bug-fixes/0005-nova-libvirt-fix-delete-instance-with-nvram.patch b/patches/fuel-library/arm64-bug-fixes/0005-nova-libvirt-fix-delete-instance-with-nvram.patch new file mode 100644 index 00000000..9bf9a5c4 --- /dev/null +++ b/patches/fuel-library/arm64-bug-fixes/0005-nova-libvirt-fix-delete-instance-with-nvram.patch @@ -0,0 +1,117 @@ +From: Alexandru Avadanii <Alexandru.Avadanii@enea.com> +Date: Thu, 19 Jan 2017 23:03:54 +0100 +Subject: [PATCH] nova: libvirt: fix delete instance with nvram + +Backported from [1]. + +Closes-bug: 1567807 + +[1] https://review.openstack.org/#/q/ + 539d381434ccadcdc3f5d58c2705c35558a3a065 + +Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com> +--- + .../files/nova-libvirt-delete-with-nvram.patch | 70 ++++++++++++++++++++++ + .../openstack_tasks/manifests/roles/compute.pp | 12 ++++ + 2 files changed, 82 insertions(+) + create mode 100644 deployment/puppet/openstack/files/nova-libvirt-delete-with-nvram.patch + +diff --git a/deployment/puppet/openstack/files/nova-libvirt-delete-with-nvram.patch b/deployment/puppet/openstack/files/nova-libvirt-delete-with-nvram.patch +new file mode 100644 +index 0000000..5d4f67c +--- /dev/null ++++ b/deployment/puppet/openstack/files/nova-libvirt-delete-with-nvram.patch +@@ -0,0 +1,70 @@ ++From: Kevin Zhao <kevin.zhao@linaro.org> ++Date: Thu, 5 Jan 2017 21:32:41 +0000 ++Subject: [PATCH] libvirt: fix nova can't delete the instance with nvram ++ ++Currently libvirt needs a flag when deleting an VM with a nvram file, ++without which nova can't delete an instance booted with UEFI. Add ++deletion flag for NVRAM. Also add a test case. ++ ++[ Alexandru Avadanii ] ++Removed chunks affecting tests and adapted for OPNFV Armband. ++ ++Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com> ++Co-authored-by: Derek Higgins <derekh@redhat.com> ++Change-Id: I46baa952b6c3a1a4c5cf2660931f317cafb5757d ++Closes-Bug: #1567807 ++--- ++ ++diff --git a/virt/libvirt/driver.py b/virt/libvirt/driver.py ++--- a/virt/libvirt/driver.py +++++ b/virt/libvirt/driver.py ++@@ -903,7 +903,8 @@ class LibvirtDriver(driver.ComputeDriver): ++ try: ++ guest = self._host.get_guest(instance) ++ try: ++- guest.delete_configuration() +++ support_uefi = self._has_uefi_support() +++ guest.delete_configuration(support_uefi) ++ except libvirt.libvirtError as e: ++ with excutils.save_and_reraise_exception(): ++ errcode = e.get_error_code() ++@@ -1241,7 +1242,8 @@ class LibvirtDriver(driver.ComputeDriver): ++ # If any part of this block fails, the domain is ++ # re-defined regardless. ++ if guest.has_persistent_configuration(): ++- guest.delete_configuration() +++ support_uefi = self._has_uefi_support() +++ guest.delete_configuration(support_uefi) ++ ++ # Start copy with VIR_DOMAIN_REBASE_REUSE_EXT flag to ++ # allow writing to existing external volume file ++@@ -1760,7 +1762,8 @@ class LibvirtDriver(driver.ComputeDriver): ++ # If any part of this block fails, the domain is ++ # re-defined regardless. ++ if guest.has_persistent_configuration(): ++- guest.delete_configuration() +++ support_uefi = self._has_uefi_support() +++ guest.delete_configuration(support_uefi) ++ ++ # NOTE (rmk): Establish a temporary mirror of our root disk and ++ # issue an abort once we have a complete copy. ++diff --git a/virt/libvirt/guest.py b/virt/libvirt/guest.py ++--- a/virt/libvirt/guest.py +++++ b/virt/libvirt/guest.py ++@@ -262,11 +262,13 @@ class Guest(object): ++ yield VCPUInfo( ++ id=vcpu[0], cpu=vcpu[3], state=vcpu[1], time=vcpu[2]) ++ ++- def delete_configuration(self): +++ def delete_configuration(self, support_uefi=False): ++ """Undefines a domain from hypervisor.""" ++ try: ++- self._domain.undefineFlags( ++- libvirt.VIR_DOMAIN_UNDEFINE_MANAGED_SAVE) +++ flags = libvirt.VIR_DOMAIN_UNDEFINE_MANAGED_SAVE +++ if support_uefi: +++ flags |= libvirt.VIR_DOMAIN_UNDEFINE_NVRAM +++ self._domain.undefineFlags(flags) ++ except libvirt.libvirtError: ++ LOG.debug("Error from libvirt during undefineFlags. %d" ++ "Retrying with undefine", self.id) +diff --git a/deployment/puppet/openstack_tasks/manifests/roles/compute.pp b/deployment/puppet/openstack_tasks/manifests/roles/compute.pp +index f6e6698..dd0c034 100644 +--- a/deployment/puppet/openstack_tasks/manifests/roles/compute.pp ++++ b/deployment/puppet/openstack_tasks/manifests/roles/compute.pp +@@ -301,6 +301,18 @@ class openstack_tasks::roles::compute { + unless => "patch -p1 -R -N --dry-run < ${nova_path}/libvirt-vga-console.patch", + cwd => $nova_path, + require => [Package['patch']], ++ } -> ++ # FIXME(armband): Backport fix: nova delete instance with nvram ++ file { "${nova_path}/nova-libvirt-delete-with-nvram.patch": ++ ensure => "file", ++ source => "puppet:///modules/openstack/nova-libvirt-delete-with-nvram.patch", ++ } -> ++ exec { 'nova libvirt delete instance with nvram': ++ path => ['/usr/bin'], ++ command => "patch -p1 < ${nova_path}/nova-libvirt-delete-with-nvram.patch", ++ unless => "patch -p1 -R -N --dry-run < ${nova_path}/nova-libvirt-delete-with-nvram.patch", ++ cwd => $nova_path, ++ require => [Package['patch']], + } + + class { '::nova::cache': |