From 8d69d6d274cfda09b86ac43eb75d002d7f9ba00e Mon Sep 17 00:00:00 2001 From: Alexandru Avadanii Date: Thu, 16 Nov 2017 19:14:14 +0100 Subject: p/fuel: armband formula: Refresh nova patches Rework armband salt formula, focusing on nova libvirt driver patches: - Switch from multiple individual patches to a single roll-up patch: * Patch is now applied for python directory instead of each file; * Expected hash is now 'False' (no hash checking for whole dir); * Added 'unless' condition to skip patching when already applied. Replaces old hash mechanism which was broken anyway when multiple patches are applied to the same file; - nova: Switch guest video from VGA to virtio (replace our old standard VGA default patch with upstream backport); - nova: Skip config/patch if 'python-nova' is not installed (e.g. for KVM nodes); - nova: Support Qemu >= 2.10 (backport); - libvirt: Re-enable Apparmor security driver on compute nodes; - armband state is now fully re-entrant; JIRA: ARMBAND-306 JIRA: ARMBAND-318 JIRA: ARMBAND-320 JIRA: ARMBAND-331 Change-Id: I48c09b10be030aa1ab4424b76876bf3dabd40fd2 Signed-off-by: Alexandru Avadanii (cherry picked from commit ae49b614d29351d07e317ca792865ae74d0c5fb7) --- ...-salt-formulas-Add-enable-armband-formula.patch | 278 --------------------- 1 file changed, 278 deletions(-) delete mode 100644 patches/opnfv-fuel/0001-mcp-salt-formulas-Add-enable-armband-formula.patch (limited to 'patches/opnfv-fuel/0001-mcp-salt-formulas-Add-enable-armband-formula.patch') diff --git a/patches/opnfv-fuel/0001-mcp-salt-formulas-Add-enable-armband-formula.patch b/patches/opnfv-fuel/0001-mcp-salt-formulas-Add-enable-armband-formula.patch deleted file mode 100644 index d15cb934..00000000 --- a/patches/opnfv-fuel/0001-mcp-salt-formulas-Add-enable-armband-formula.patch +++ /dev/null @@ -1,278 +0,0 @@ -:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -: Copyright (c) 2017 Enea AB and others. -: -: All rights reserved. This program and the accompanying materials -: are made available under the terms of the Apache License, Version 2.0 -: which accompanies this distribution, and is available at -: http://www.apache.org/licenses/LICENSE-2.0 -:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -From: Guillermo Herrero -Date: Tue, 25 Jul 2017 00:58:32 +0200 -Subject: [PATCH] mcp: salt-formulas: Add & enable armband formula - -FIXME: Re-enable apparmor. -FIXME: Detect baremetal and re-enable acceleration. - -- install qemu-efi; -- install vgabios; -- disable apparmor as security driver for libvirt (temporary); -- fix missing link for vgabios binary blob; -- nova: virt_type=qemu (temporary, until we support baremetal too); -- nova: pointer_model=ps2mouse since AArch64 has no USB tablet; -- nova: cpu_model=cortex-a57; -- nova: libvirt driver: Add ttyAMA0 by default on AArch64; -- nova: libvirt driver: Use VGA video type by default on AArch64; -- nova: libvirt driver: AArch64: ACPI depends on AAVMF; - -Signed-off-by: Guillermo Herrero -Signed-off-by: Charalampos Kominos -Signed-off-by: Alexandru Avadanii ---- - mcp/config/states/openstack | 2 + - mcp/config/states/openstack_ha | 1 + - mcp/config/states/virtual_control_plane | 1 + - ...ate-vga-console-defaults-for-armv7-aarch64.diff | 48 ++++++++++++++++++++++ - ...nova-libvirt-AArch64-ACPI-depends-on-AAVMF.diff | 45 ++++++++++++++++++++ - mcp/salt-formulas/armband/init.sls | 6 +++ - mcp/salt-formulas/armband/libvirt_driver.sls | 11 +++++ - mcp/salt-formulas/armband/nova.sls | 30 ++++++++++++++ - mcp/salt-formulas/armband/qemu.sls | 7 ++++ - mcp/salt-formulas/armband/vgabios.sls | 6 +++ - 10 files changed, 157 insertions(+) - create mode 100644 mcp/salt-formulas/armband/files/nova-Update-vga-console-defaults-for-armv7-aarch64.diff - create mode 100644 mcp/salt-formulas/armband/files/nova-libvirt-AArch64-ACPI-depends-on-AAVMF.diff - create mode 100644 mcp/salt-formulas/armband/init.sls - create mode 100644 mcp/salt-formulas/armband/libvirt_driver.sls - create mode 100644 mcp/salt-formulas/armband/nova.sls - create mode 100644 mcp/salt-formulas/armband/qemu.sls - create mode 100644 mcp/salt-formulas/armband/vgabios.sls - -diff --git a/mcp/config/states/openstack b/mcp/config/states/openstack -index 19cd417..73983d2 100755 ---- a/mcp/config/states/openstack -+++ b/mcp/config/states/openstack -@@ -43,3 +43,5 @@ salt -I 'ceilometer:server' state.sls ceilometer - salt -I 'ceilometer:agent' state.sls ceilometer - - salt -I 'horizon:server' state.sls horizon -+ -+salt -I 'nova:compute' state.sls armband || true -diff --git a/mcp/config/states/openstack_ha b/mcp/config/states/openstack_ha -index e1fdf73..e1f705c 100755 ---- a/mcp/config/states/openstack_ha -+++ b/mcp/config/states/openstack_ha -@@ -52,6 +52,7 @@ salt -I 'neutron:server' state.sls neutron -b 1 - salt -I 'neutron:gateway' state.sls neutron.gateway - - salt -I 'nova:compute' state.sls nova -+salt -I 'nova:compute' state.sls armband || true - - salt -I 'mongodb:server' state.sls mongodb || true - wait_for 90 "salt -C 'I@mongodb:server and *01*' cmd.run 'mongo localhost:27017/admin'" -diff --git a/mcp/config/states/virtual_control_plane b/mcp/config/states/virtual_control_plane -index 43d1520..88e7080 100755 ---- a/mcp/config/states/virtual_control_plane -+++ b/mcp/config/states/virtual_control_plane -@@ -34,6 +34,7 @@ wait_for 90 "! salt -C 'kvm* or cmp*' test.ping | " \ - - salt -C '* and not cfg01* and not mas01*' state.apply linux,ntp - -+salt -C 'kvm*' state.sls armband || true - wait_for 5 "salt -C 'kvm*' state.sls libvirt" - - salt -C '* and not cfg01* and not mas01*' state.apply salt -diff --git a/mcp/salt-formulas/armband/files/nova-Update-vga-console-defaults-for-armv7-aarch64.diff b/mcp/salt-formulas/armband/files/nova-Update-vga-console-defaults-for-armv7-aarch64.diff -new file mode 100644 -index 0000000..a5b08da ---- /dev/null -+++ b/mcp/salt-formulas/armband/files/nova-Update-vga-console-defaults-for-armv7-aarch64.diff -@@ -0,0 +1,48 @@ -+From: Stanislaw Kardach -+Date: Tue, 22 Mar 2016 12:05:09 +0100 -+Subject: [PATCH] nova: Update vga, console defaults for armv7, aarch64 -+ -+Nova hardcodes default options for both video=cirrus and console. -+armv7 and aarch64 VMs require video=vga, and since most applications -+use PL011 serial driver for guests, adding console=ttyAMA0 is also -+a nice UX addition. -+ -+Signed-off-by: Stanislaw Kardach -+Signed-off-by: Alexandru Avadanii -+Signed-off-by: Guillermo Herrero -+ -+--- -+ usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py | 10 +++++++++- -+ 1 file changed, 9 insertions(+), 1 deletion(-) -+ -+diff --git a/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py b/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py -+index bba9b00..99e86be 100644 -+--- a/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py -++++ b/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py -+@@ -4179,7 +4179,12 @@ class LibvirtDriver(driver.ComputeDriver): -+ if virt_type == "xen": -+ guest.os_cmdline = "ro root=%s" % root_device_name -+ else: -++ guestarch = libvirt_utils.get_arch(image_meta) -+ guest.os_cmdline = ("root=%s %s" % (root_device_name, CONSOLE)) -++ if guestarch in (fields.Architecture.ARMV7, -++ fields.Architecture.AARCH64): -++ # NOTE(armband): ARM v7/v8 use PL011 drv, add ttyAMA0 console -++ guest.os_cmdline += " console=ttyAMA0" -+ if virt_type == "qemu": -+ guest.os_cmdline += " no_timer_check" -+ if instance.ramdisk_id: -+@@ -4288,9 +4293,12 @@ class LibvirtDriver(driver.ComputeDriver): -+ video.type = 'xen' -+ elif CONF.libvirt.virt_type == 'parallels': -+ video.type = 'vga' -+- elif guestarch in (fields.Architecture.PPC, -++ elif guestarch in (fields.Architecture.ARMV7, -++ fields.Architecture.AARCH64, -++ fields.Architecture.PPC, -+ fields.Architecture.PPC64, -+ fields.Architecture.PPC64LE): -++ # NOTE(armband): Added ARM v7/v8, same as on PPC. -+ # NOTE(ldbragst): PowerKVM doesn't support 'cirrus' be default -+ # so use 'vga' instead when running on Power hardware. -+ video.type = 'vga' -diff --git a/mcp/salt-formulas/armband/files/nova-libvirt-AArch64-ACPI-depends-on-AAVMF.diff b/mcp/salt-formulas/armband/files/nova-libvirt-AArch64-ACPI-depends-on-AAVMF.diff -new file mode 100644 -index 0000000..7c1b78a ---- /dev/null -+++ b/mcp/salt-formulas/armband/files/nova-libvirt-AArch64-ACPI-depends-on-AAVMF.diff -@@ -0,0 +1,45 @@ -+From: Alexandru Avadanii -+Date: Thu, 24 Aug 2017 10:57:28 +0200 -+Subject: [PATCH] libvirt: AArch64: ACPI depends on AAVMF -+ -+On AArch64, ACPI should be added to domain XML only if guest UEFI -+(AAVMF) is also used. -+ -+Signed-off-by: Alexandru Avadanii -+Signed-off-by: Ciprian Barbu -+ -+--- -+ -+diff --git a/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py b/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py -+--- a/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py -++++ b/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py -+@@ -4255,7 +4255,7 @@ -+ tmhyperv.present = True -+ clk.add_timer(tmhyperv) -+ -+- def _set_features(self, guest, os_type, caps, virt_type): -++ def _set_features(self, guest, os_type, image_meta, caps, virt_type): -+ if virt_type == "xen": -+ # PAE only makes sense in X86 -+ if caps.host.cpu.arch in (fields.Architecture.I686, -+@@ -4264,7 +4264,10 @@ -+ -+ if (virt_type not in ("lxc", "uml", "parallels", "xen") or -+ (virt_type == "xen" and guest.os_type == fields.VMMode.HVM)): -+- guest.features.append(vconfig.LibvirtConfigGuestFeatureACPI()) -++ guestarch = libvirt_utils.get_arch(image_meta) -++ if (guestarch not in (fields.Architecture.ARMV7, fields.Architecture.AARCH64) or -++ image_meta.properties.get('hw_firmware_type') == 'uefi'): -++ guest.features.append(vconfig.LibvirtConfigGuestFeatureACPI()) -+ guest.features.append(vconfig.LibvirtConfigGuestFeatureAPIC()) -+ -+ if (virt_type in ("qemu", "kvm") and -+@@ -4799,7 +4802,7 @@ -+ self._conf_non_lxc_uml(virt_type, guest, root_device_name, rescue, -+ instance, inst_path, image_meta, disk_info) -+ -+- self._set_features(guest, instance.os_type, caps, virt_type) -++ self._set_features(guest, instance.os_type, image_meta, caps, virt_type) -+ self._set_clock(guest, instance.os_type, image_meta, virt_type) -+ -+ storage_configs = self._get_guest_storage_config( -diff --git a/mcp/salt-formulas/armband/init.sls b/mcp/salt-formulas/armband/init.sls -new file mode 100644 -index 0000000..6e7b6ad ---- /dev/null -+++ b/mcp/salt-formulas/armband/init.sls -@@ -0,0 +1,6 @@ -+include: -+ - armband.qemu -+ - armband.vgabios -+ - armband.nova -+ - armband.libvirt_driver -+ -diff --git a/mcp/salt-formulas/armband/libvirt_driver.sls b/mcp/salt-formulas/armband/libvirt_driver.sls -new file mode 100644 -index 0000000..9b47e2f ---- /dev/null -+++ b/mcp/salt-formulas/armband/libvirt_driver.sls -@@ -0,0 +1,11 @@ -+nova-libvirt-vga-console: -+ file.patch: -+ - name: /usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py -+ - source: salt://armband/files/nova-Update-vga-console-defaults-for-armv7-aarch64.diff -+ - hash: "71b22839913e6351edc70b6d59505f17" -+ -+nova-libvirt-ACPI-AAVMF: -+ file.patch: -+ - name: /usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py -+ - source: salt://armband/files/nova-libvirt-AArch64-ACPI-depends-on-AAVMF.diff -+ - hash: "c02969d59f16f57242eb74a75e46b0cf" -diff --git a/mcp/salt-formulas/armband/nova.sls b/mcp/salt-formulas/armband/nova.sls -new file mode 100644 -index 0000000..674f371 ---- /dev/null -+++ b/mcp/salt-formulas/armband/nova.sls -@@ -0,0 +1,30 @@ -+{% if grains['virtual'] == 'kvm' %} -+nova_virt_type: -+ file.replace: -+ - name: "/etc/nova/nova.conf" -+ - pattern: '^virt_type\s*=.*$' -+ - repl: "virt_type = qemu" -+{% endif %} -+nova_pointer_model: -+ file.replace: -+ - name: "/etc/nova/nova.conf" -+ - pattern: '^#pointer_model\s*=.*$' -+ - repl: "pointer_model = ps2mouse" -+nova_cpu_mode: -+ file.replace: -+ - name: "/etc/nova/nova.conf" -+ - pattern: '^cpu_mode\s*=\s*host-passthrough' -+ - repl: "cpu_mode = custom" -+nova_cpu_model: -+ file.replace: -+ - name: "/etc/nova/nova.conf" -+ - pattern: '^#cpu_model\s*=.*$' -+ {% if grains['virtual'] == 'kvm' %} -+ - repl: "cpu_model = cortex-a57" -+ {% else %} -+ - repl: "cpu_model = host" -+ {% endif %} -+restart_nova-compute: -+ cmd: -+ - run -+ - name: "service nova-compute restart" -diff --git a/mcp/salt-formulas/armband/qemu.sls b/mcp/salt-formulas/armband/qemu.sls -new file mode 100644 -index 0000000..ecdb5ae ---- /dev/null -+++ b/mcp/salt-formulas/armband/qemu.sls -@@ -0,0 +1,7 @@ -+qemu-efi: -+ pkg.installed -+/etc/libvirt/qemu.conf: -+ file.replace: -+ - pattern: ^#security_driver =.*$ -+ - repl: "security_driver = \"none\"" -+ -diff --git a/mcp/salt-formulas/armband/vgabios.sls b/mcp/salt-formulas/armband/vgabios.sls -new file mode 100644 -index 0000000..a31eafa ---- /dev/null -+++ b/mcp/salt-formulas/armband/vgabios.sls -@@ -0,0 +1,6 @@ -+vgabios: -+ pkg.installed -+/usr/share/qemu/vgabios-stdvga.bin: -+ file.symlink: -+ - target: "/usr/share/vgabios/vgabios.bin" -+ -- cgit 1.2.3-korg