From dff7896d026bf4c586f0894e05c3b0bdcbb20249 Mon Sep 17 00:00:00 2001
From: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
Date: Wed, 20 Dec 2017 10:01:04 +0100
Subject: [PATCH] nova: set libvirt/cpu_mode on aarch64 to working value

Instance failed to spawn: libvirtError: unsupported configuration: CPU
mode 'host-model' for aarch64 kvm domain on aarch64 host is not
supported by hypervisor.

Change-Id: Iad530457aef24ee8f561a8f7d2c6c6150c55bc42
---
 ansible/roles/nova/defaults/main.yml      | 1 +
 ansible/roles/nova/templates/nova.conf.j2 | 3 +++
 2 files changed, 4 insertions(+)

diff --git a/ansible/roles/nova/defaults/main.yml b/ansible/roles/nova/defaults/main.yml
index f46add8dc..cc0b85001 100644
--- a/ansible/roles/nova/defaults/main.yml
+++ b/ansible/roles/nova/defaults/main.yml
@@ -173,6 +173,7 @@ nova_tag: "{{ openstack_release }}"
 nova_libvirt_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ nova_install_type }}-nova-libvirt"
 nova_libvirt_tag: "{{ nova_tag }}"
 nova_libvirt_image_full: "{{ nova_libvirt_image }}:{{ nova_libvirt_tag }}"
+nova_libvirt_cpu_mode: "{{ 'host-passthrough' if ansible_architecture == 'aarch64' else '' }}"
 
 nova_ssh_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ nova_install_type }}-nova-ssh"
 nova_ssh_tag: "{{ nova_tag }}"
diff --git a/ansible/roles/nova/templates/nova.conf.j2 b/ansible/roles/nova/templates/nova.conf.j2
index 006bd17b6..a09e4800e 100644
--- a/ansible/roles/nova/templates/nova.conf.j2
+++ b/ansible/roles/nova/templates/nova.conf.j2
@@ -186,6 +186,9 @@ rbd_secret_uuid = {{ rbd_secret_uuid }}
 {% endif %}
 virt_type = {{ nova_compute_virt_type }}
 {% endif %}
+{% if nova_libvirt_cpu_mode %}
+cpu_mode = {{ nova_libvirt_cpu_mode }}
+{% endif %}
 
 {% if nova_compute_virt_type == "vmware" %}
 [vmware]
-- 
GitLab