aboutsummaryrefslogtreecommitdiffstats
path: root/patches/opnfv-fuel/0001-salt-formulas-Add-enable-armband-formula.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/opnfv-fuel/0001-salt-formulas-Add-enable-armband-formula.patch')
-rw-r--r--patches/opnfv-fuel/0001-salt-formulas-Add-enable-armband-formula.patch282
1 files changed, 282 insertions, 0 deletions
diff --git a/patches/opnfv-fuel/0001-salt-formulas-Add-enable-armband-formula.patch b/patches/opnfv-fuel/0001-salt-formulas-Add-enable-armband-formula.patch
new file mode 100644
index 00000000..a04780b5
--- /dev/null
+++ b/patches/opnfv-fuel/0001-salt-formulas-Add-enable-armband-formula.patch
@@ -0,0 +1,282 @@
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+: Copyright (c) 2018 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 <Guillermo.Herrero@enea.com>
+Date: Tue, 25 Jul 2017 00:58:32 +0200
+Subject: [PATCH] salt-formulas: Add & enable armband formula
+
+- prereq: install qemu-efi;
+- prereq: install vgabios;
+- prereq: fix missing link for vgabios binary blob;
+- nova patch: Add video type virtio for AArch64 (backport from [1]);
+- nova patch: libvirt driver: AArch64: ACPI depends on AAVMF;
+- nova conf: cpu_model=cortex-a57 (only for virtual deploys);
+- nova conf: virt_type=qemu (only for virtual deploys);
+- nova compute conf: virt_type=qemu (only for virtual deploys);
+- nova conf: pointer_model=ps2mouse since AArch64 has no USB tablet;
+
+[1] https://github.com/openstack/nova/commit/f0f0953
+
+Signed-off-by: Guillermo Herrero <Guillermo.Herrero@enea.com>
+Signed-off-by: Charalampos Kominos <Charalampos.Kominos@enea.com>
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ mcp/config/states/openstack_ha | 1 +
+ mcp/config/states/openstack_noha | 2 +
+ mcp/config/states/virtual_control_plane | 1 +
+ .../files/nova-libvirt-aarch64-rollup.diff | 106 ++++++++++++++++++
+ mcp/salt-formulas/armband/init.sls | 7 ++
+ mcp/salt-formulas/armband/nova_config.sls | 35 ++++++
+ mcp/salt-formulas/armband/nova_libvirt.sls | 7 ++
+ mcp/salt-formulas/armband/qemu_efi.sls | 2 +
+ mcp/salt-formulas/armband/vgabios.sls | 7 ++
+ 9 files changed, 168 insertions(+)
+ create mode 100644 mcp/salt-formulas/armband/files/nova-libvirt-aarch64-rollup.diff
+ create mode 100644 mcp/salt-formulas/armband/init.sls
+ create mode 100644 mcp/salt-formulas/armband/nova_config.sls
+ create mode 100644 mcp/salt-formulas/armband/nova_libvirt.sls
+ create mode 100644 mcp/salt-formulas/armband/qemu_efi.sls
+ create mode 100644 mcp/salt-formulas/armband/vgabios.sls
+
+diff --git a/mcp/config/states/openstack_ha b/mcp/config/states/openstack_ha
+index a30f9af6..600aa76b 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
++wait_for 5.0 "salt -I 'nova:compute' state.sls armband"
+
+ salt -I 'redis:cluster:role:master' state.sls redis
+ salt -I 'redis:server' state.sls redis
+diff --git a/mcp/config/states/openstack_noha b/mcp/config/states/openstack_noha
+index a266989a..77557caa 100755
+--- a/mcp/config/states/openstack_noha
++++ b/mcp/config/states/openstack_noha
+@@ -55,6 +55,8 @@ salt -I 'ceilometer:agent' state.sls ceilometer
+
+ salt -I 'horizon:server' state.sls horizon
+
++salt -I 'nova:compute' state.sls armband
++
+ # workaround for the pike horizon is missing css, FUEL-324
+ salt -I 'horizon:server' file.symlink \
+ /var/lib/openstack-dashboard/static \
+diff --git a/mcp/config/states/virtual_control_plane b/mcp/config/states/virtual_control_plane
+index c391cfe6..02a813c9 100755
+--- a/mcp/config/states/virtual_control_plane
++++ b/mcp/config/states/virtual_control_plane
+@@ -27,6 +27,7 @@ if [ "${ERASE_ENV}" -eq 1 ]; then
+ fi
+
+ # KVM libvirt first, VCP deployment
++wait_for 5.0 "salt -C 'kvm*' state.sls armband"
+ wait_for 5.0 "salt -C 'kvm*' state.sls libvirt"
+
+ salt -C 'kvm* or cmp*' state.apply salt
+diff --git a/mcp/salt-formulas/armband/files/nova-libvirt-aarch64-rollup.diff b/mcp/salt-formulas/armband/files/nova-libvirt-aarch64-rollup.diff
+new file mode 100644
+index 00000000..c987a4ce
+--- /dev/null
++++ b/mcp/salt-formulas/armband/files/nova-libvirt-aarch64-rollup.diff
+@@ -0,0 +1,106 @@
++From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
++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.
++
++[ Alexandru.Avadanii@enea.com ]
++- pike rebase: minor context adj
++
++Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
++Signed-off-by: Ciprian Barbu <ciprian.barbu@enea.com>
++
++---
++
++diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py
++--- a/nova/virt/libvirt/driver.py
+++++ b/nova/virt/libvirt/driver.py
++@@ -4314,7 +4314,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
++--
++
++From f0f09530ee9169eb29bc28d4f118676d7dc6640e Mon Sep 17 00:00:00 2001
++From: Kevin Zhao <kevin.zhao@arm.com>
++Date: Tue, 15 Aug 2017 09:52:09 +0000
++Subject: [PATCH] Add video type virtio for AArch64
++
++Currently only "virtio" type is supported on AArch64, and the
++other "virrus", "qxl" and "vga" don't work on AArch64 according to
++libvirt upstream:
++https://www.redhat.com/archives/libvir-list/2016-September/msg00546.html
++Then this patch adds the virtio for AArch64 and tweaks the related test cases.
++
++Closes-bug: #1710766
++
++[ Alexandru.Avadanii@enea.com ]
++Dropped test changes so it applies cleanly on Newton without more backports.
++
++Change-Id: Iba8a1e671f2b5759b3d9178aa1871d0cf888b26b
++Signed-off-by: Kevin Zhao <kevin.zhao@arm.com>
++Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
++---
++
++--- a/nova/virt/libvirt/driver.py
+++++ b/nova/virt/libvirt/driver.py
++@@ -4342,7 +4342,8 @@ def _check_number_of_serial_console(self, num_ports):
++ allowed=ALLOWED_QEMU_SERIAL_PORTS, virt_type=virt_type)
++
++ def _add_video_driver(self, guest, image_meta, flavor):
++- VALID_VIDEO_DEVICES = ("vga", "cirrus", "vmvga", "xen", "qxl")
+++ VALID_VIDEO_DEVICES = ("vga", "cirrus", "vmvga",
+++ "xen", "qxl", "virtio")
++ video = vconfig.LibvirtConfigGuestVideo()
++ # NOTE(ldbragst): The following logic sets the video.type
++ # depending on supported defaults given the architecture,
++@@ -4360,6 +4361,10 @@ def _add_video_driver(self, guest, image_meta, flavor):
++ # NOTE(ldbragst): PowerKVM doesn't support 'cirrus' be default
++ # so use 'vga' instead when running on Power hardware.
++ video.type = 'vga'
+++ elif guestarch in (fields.Architecture.AARCH64):
+++ # NOTE(kevinz): Only virtio device type is supported by AARCH64
+++ # so use 'virtio' instead when running on AArch64 hardware.
+++ video.type = 'virtio'
++ elif CONF.spice.enabled:
++ video.type = 'qxl'
++ if image_meta.properties.get('hw_video_model'):
++--
++
++From dbd4c20de002784a4ffc07b173e82dd84a3af01c Mon Sep 17 00:00:00 2001
++From: Charalampos Kominos <Charalampos.Kominos@enea.com>
++Date: Wed, 2 May 2018 14:20:47 +0200
++Subject: [PATCH] Allow libvirt to honor root device naming
++
++Current behaviour in upstream nova is for rootfs to be in /dev/vda
++which is the default behaviour when using virtio driver. However when
++other devices are requested either by glance or by CLI, nova ignores
++that naming and still tries to attach to vda which fails.
++
++Manually applied in https://review.openstack.org/#/c/214314/
++
++JIRA: ARMBAND-376
++
++Signed-off-by: Charalampos Kominos <charalampos.kominos@enea.com>
++---
++
++--- a/nova/virt/libvirt/driver.py
+++++ b/nova/virt/libvirt/driver.py
++@@ -8257,6 +8257,8 @@
++ "Ignoring supplied device name: %(device_name)s. "
++ "Libvirt can't honour user-supplied dev names",
++ {'device_name': bdm.device_name}, instance=instance)
+++ if instance.root_device_name == bdm.device_name:
+++ instance.root_device_name = None
++ bdm.device_name = None
++ block_device_info = driver.get_block_device_info(instance,
++ block_device_mapping)
+diff --git a/mcp/salt-formulas/armband/init.sls b/mcp/salt-formulas/armband/init.sls
+new file mode 100644
+index 00000000..8a8cf2ab
+--- /dev/null
++++ b/mcp/salt-formulas/armband/init.sls
+@@ -0,0 +1,7 @@
++include:
++ - armband.qemu_efi
++ - armband.vgabios
++ {%- if salt['pkg.version']('python-nova') %}
++ - armband.nova_libvirt
++ - armband.nova_config
++ {%- endif %}
+diff --git a/mcp/salt-formulas/armband/nova_config.sls b/mcp/salt-formulas/armband/nova_config.sls
+new file mode 100644
+index 00000000..31fa031a
+--- /dev/null
++++ b/mcp/salt-formulas/armband/nova_config.sls
+@@ -0,0 +1,35 @@
++{% if grains['virtual'] == 'kvm' %}
++nova_virt_type:
++ file.replace:
++ - name: "/etc/nova/nova.conf"
++ - pattern: '^virt_type\s*=.*$'
++ - repl: "virt_type = qemu"
++nova_compute_virt_type:
++ file.replace:
++ - name: "/etc/nova/nova-compute.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/nova_libvirt.sls b/mcp/salt-formulas/armband/nova_libvirt.sls
+new file mode 100644
+index 00000000..ff93db80
+--- /dev/null
++++ b/mcp/salt-formulas/armband/nova_libvirt.sls
+@@ -0,0 +1,7 @@
++nova-libvirt-aarch64-rollup:
++ file.patch:
++ - name: /usr/lib/python2.7/dist-packages
++ - source: salt://armband/files/nova-libvirt-aarch64-rollup.diff
++ - hash: False
++ - options: '-p1'
++ - unless: 'test -f /var/cache/salt/minion/files/base/armband/files/nova-libvirt-aarch64-rollup.diff && cd /usr/lib/python2.7/dist-packages && patch -p1 -R --dry-run -r - < /var/cache/salt/minion/files/base/armband/files/nova-libvirt-aarch64-rollup.diff'
+diff --git a/mcp/salt-formulas/armband/qemu_efi.sls b/mcp/salt-formulas/armband/qemu_efi.sls
+new file mode 100644
+index 00000000..c697dae9
+--- /dev/null
++++ b/mcp/salt-formulas/armband/qemu_efi.sls
+@@ -0,0 +1,2 @@
++qemu-efi:
++ pkg.installed
+diff --git a/mcp/salt-formulas/armband/vgabios.sls b/mcp/salt-formulas/armband/vgabios.sls
+new file mode 100644
+index 00000000..500c2bcf
+--- /dev/null
++++ b/mcp/salt-formulas/armband/vgabios.sls
+@@ -0,0 +1,7 @@
++vgabios:
++ pkg.installed
++/usr/share/qemu:
++ file.directory
++/usr/share/qemu/vgabios-stdvga.bin:
++ file.symlink:
++ - target: "/usr/share/vgabios/vgabios.bin"