- 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 <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/maas | 1 +
mcp/config/states/openstack | 2 +
mcp/config/states/openstack_ha | 1 +
- .../armband/files/nova-libvirt-driver.diff | 48 ++++++++++++++++++++++
+ 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 | 5 +++
+ 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 +++
- 9 files changed, 106 insertions(+)
- create mode 100644 mcp/salt-formulas/armband/files/nova-libvirt-driver.diff
+ 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/maas b/mcp/config/states/maas
-index db0bd3f..9576333 100755
---- a/mcp/config/states/maas
-+++ b/mcp/config/states/maas
-@@ -86,6 +86,7 @@ wait_for 90 "! salt 'kvm*' test.ping | tee /dev/stderr | fgrep -q 'Not connected
-
- salt -C '* and not cfg01* and not mas01*' state.apply linux,ntp
-
-+salt -C 'kvm*' state.sls armband
- salt -C 'kvm*' state.sls libvirt
-
- salt -C '* and not cfg01* and not mas01*' state.apply salt
diff --git a/mcp/config/states/openstack b/mcp/config/states/openstack
-index eaab135..050b648 100755
+index 19cd417..73983d2 100755
--- a/mcp/config/states/openstack
+++ b/mcp/config/states/openstack
-@@ -31,3 +31,5 @@ salt -I 'ceilometer:server' state.sls ceilometer
+@@ -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
++salt -I 'nova:compute' state.sls armband || true
diff --git a/mcp/config/states/openstack_ha b/mcp/config/states/openstack_ha
-index 8ca76e4..c0b8ee3 100755
+index 9eaa3a1..2439ad6 100755
--- a/mcp/config/states/openstack_ha
+++ b/mcp/config/states/openstack_ha
-@@ -41,6 +41,7 @@ salt -I 'neutron:server' state.sls neutron -b 1
+@@ -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
++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 -I 'mongodb:server' state.sls mongodb
- while true; do sleep 5; salt -C 'I@mongodb:server and *01*' cmd.run 'mongo localhost:27017/admin' && break; done
-diff --git a/mcp/salt-formulas/armband/files/nova-libvirt-driver.diff b/mcp/salt-formulas/armband/files/nova-libvirt-driver.diff
++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-libvirt-driver.diff
++++ b/mcp/salt-formulas/armband/files/nova-Update-vga-console-defaults-for-armv7-aarch64.diff
@@ -0,0 +1,48 @@
+From: Stanislaw Kardach <stanislaw.kardach@cavium.com>
+Date: Tue, 22 Mar 2016 12:05:09 +0100
+ # 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 <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.
++
++Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
++Signed-off-by: Ciprian Barbu <ciprian.barbu@enea.com>
++
++---
++
++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
+
diff --git a/mcp/salt-formulas/armband/libvirt_driver.sls b/mcp/salt-formulas/armband/libvirt_driver.sls
new file mode 100644
-index 0000000..c309035
+index 0000000..9b47e2f
--- /dev/null
+++ b/mcp/salt-formulas/armband/libvirt_driver.sls
-@@ -0,0 +1,5 @@
-+/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py:
+@@ -0,0 +1,11 @@
++nova-libvirt-vga-console:
+ file.patch:
-+ - source: salt://armband/files/nova-libvirt-driver.diff
-+ - hash: "668641080c6a77a9205d0f71d510ad5f"
++ - 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