843ea174c95c94a3e4b6882d64a96e28e8b6177e
[armband.git] / patches / opnfv-fuel / 0003-mcp-salt-formulas-Add-enable-armband-formula.patch
1 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
2 : Copyright (c) 2017 Enea AB and others.
3 :
4 : All rights reserved. This program and the accompanying materials
5 : are made available under the terms of the Apache License, Version 2.0
6 : which accompanies this distribution, and is available at
7 : http://www.apache.org/licenses/LICENSE-2.0
8 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
9 From: Guillermo Herrero <Guillermo.Herrero@enea.com>
10 Date: Tue, 25 Jul 2017 00:58:32 +0200
11 Subject: [PATCH] mcp: salt-formulas: Add & enable armband formula
12
13 FIXME: Re-enable apparmor.
14 FIXME: Detect baremetal and re-enable acceleration.
15
16 - install qemu-efi;
17 - install vgabios;
18 - disable apparmor as security driver for libvirt (temporary);
19 - fix missing link for vgabios binary blob;
20 - nova: virt_type=qemu (temporary, until we support baremetal too);
21 - nova: pointer_model=ps2mouse since AArch64 has no USB tablet;
22 - nova: cpu_model=cortex-a57;
23 - nova: libvirt driver: Add ttyAMA0 by default on AArch64;
24 - nova: libvirt driver: Use VGA video type by default on AArch64;
25
26 Signed-off-by: Guillermo Herrero <Guillermo.Herrero@enea.com>
27 Signed-off-by: Charalampos Kominos <Charalampos.Kominos@enea.com>
28 Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
29 ---
30  mcp/config/states/maas                             |  1 +
31  mcp/config/states/openstack                        |  2 +
32  mcp/config/states/openstack_ha                     |  1 +
33  .../armband/files/nova-libvirt-driver.diff         | 48 ++++++++++++++++++++++
34  mcp/salt-formulas/armband/init.sls                 |  6 +++
35  mcp/salt-formulas/armband/libvirt_driver.sls       |  5 +++
36  mcp/salt-formulas/armband/nova.sls                 | 30 ++++++++++++++
37  mcp/salt-formulas/armband/qemu.sls                 |  7 ++++
38  mcp/salt-formulas/armband/vgabios.sls              |  6 +++
39  9 files changed, 106 insertions(+)
40  create mode 100644 mcp/salt-formulas/armband/files/nova-libvirt-driver.diff
41  create mode 100644 mcp/salt-formulas/armband/init.sls
42  create mode 100644 mcp/salt-formulas/armband/libvirt_driver.sls
43  create mode 100644 mcp/salt-formulas/armband/nova.sls
44  create mode 100644 mcp/salt-formulas/armband/qemu.sls
45  create mode 100644 mcp/salt-formulas/armband/vgabios.sls
46
47 diff --git a/mcp/config/states/maas b/mcp/config/states/maas
48 index 710ec0e..6c2ae04 100755
49 --- a/mcp/config/states/maas
50 +++ b/mcp/config/states/maas
51 @@ -81,6 +81,7 @@ wait_for 90 "! salt 'kvm*' test.ping | tee /dev/stderr | fgrep -q 'Not connected
52
53  salt -C '* and not cfg01* and not mas01*' state.apply linux,ntp
54
55 +salt -C 'kvm*' state.sls armband
56  salt -C 'kvm*' state.sls libvirt
57
58  salt -C '* and not cfg01* and not mas01*' state.apply salt
59 diff --git a/mcp/config/states/openstack b/mcp/config/states/openstack
60 index eaab135..050b648 100755
61 --- a/mcp/config/states/openstack
62 +++ b/mcp/config/states/openstack
63 @@ -31,3 +31,5 @@ salt -I 'ceilometer:server' state.sls ceilometer
64  salt -I 'ceilometer:agent' state.sls ceilometer
65
66  salt -I 'horizon:server' state.sls horizon
67 +
68 +salt -I 'nova:compute' state.sls armband
69 diff --git a/mcp/config/states/openstack_ha b/mcp/config/states/openstack_ha
70 index e507ec9..6c68e15 100755
71 --- a/mcp/config/states/openstack_ha
72 +++ b/mcp/config/states/openstack_ha
73 @@ -41,6 +41,7 @@ salt -I 'neutron:server' state.sls neutron -b 1
74  salt -I 'neutron:gateway' state.sls neutron.gateway
75
76  salt -I 'nova:compute' state.sls nova
77 +salt -I 'nova:compute' state.sls armband
78
79  salt -I 'mongodb:server' state.sls mongodb -b 1
80  salt -I 'aodh:server' state.sls aodh
81 diff --git a/mcp/salt-formulas/armband/files/nova-libvirt-driver.diff b/mcp/salt-formulas/armband/files/nova-libvirt-driver.diff
82 new file mode 100644
83 index 0000000..a5b08da
84 --- /dev/null
85 +++ b/mcp/salt-formulas/armband/files/nova-libvirt-driver.diff
86 @@ -0,0 +1,48 @@
87 +From: Stanislaw Kardach <stanislaw.kardach@cavium.com>
88 +Date: Tue, 22 Mar 2016 12:05:09 +0100
89 +Subject: [PATCH] nova: Update vga, console defaults for armv7, aarch64
90 +
91 +Nova hardcodes default options for both video=cirrus and console.
92 +armv7 and aarch64 VMs require video=vga, and since most applications
93 +use PL011 serial driver for guests, adding console=ttyAMA0 is also
94 +a nice UX addition.
95 +
96 +Signed-off-by: Stanislaw Kardach <stanislaw.kardach@cavium.com>
97 +Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
98 +Signed-off-by: Guillermo Herrero <Guillermo.Herrero@enea.com>
99 +
100 +---
101 + usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py | 10 +++++++++-
102 + 1 file changed, 9 insertions(+), 1 deletion(-)
103 +
104 +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
105 +index bba9b00..99e86be 100644
106 +--- a/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py
107 ++++ b/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py
108 +@@ -4179,7 +4179,12 @@ class LibvirtDriver(driver.ComputeDriver):
109 +         if virt_type == "xen":
110 +             guest.os_cmdline = "ro root=%s" % root_device_name
111 +         else:
112 ++            guestarch = libvirt_utils.get_arch(image_meta)
113 +             guest.os_cmdline = ("root=%s %s" % (root_device_name, CONSOLE))
114 ++            if guestarch in (fields.Architecture.ARMV7,
115 ++                             fields.Architecture.AARCH64):
116 ++                # NOTE(armband): ARM v7/v8 use PL011 drv, add ttyAMA0 console
117 ++                guest.os_cmdline += " console=ttyAMA0"
118 +             if virt_type == "qemu":
119 +                 guest.os_cmdline += " no_timer_check"
120 +         if instance.ramdisk_id:
121 +@@ -4288,9 +4293,12 @@ class LibvirtDriver(driver.ComputeDriver):
122 +             video.type = 'xen'
123 +         elif CONF.libvirt.virt_type == 'parallels':
124 +             video.type = 'vga'
125 +-        elif guestarch in (fields.Architecture.PPC,
126 ++        elif guestarch in (fields.Architecture.ARMV7,
127 ++                           fields.Architecture.AARCH64,
128 ++                           fields.Architecture.PPC,
129 +                            fields.Architecture.PPC64,
130 +                            fields.Architecture.PPC64LE):
131 ++            # NOTE(armband): Added ARM v7/v8, same as on PPC.
132 +             # NOTE(ldbragst): PowerKVM doesn't support 'cirrus' be default
133 +             # so use 'vga' instead when running on Power hardware.
134 +             video.type = 'vga'
135 diff --git a/mcp/salt-formulas/armband/init.sls b/mcp/salt-formulas/armband/init.sls
136 new file mode 100644
137 index 0000000..6e7b6ad
138 --- /dev/null
139 +++ b/mcp/salt-formulas/armband/init.sls
140 @@ -0,0 +1,6 @@
141 +include:
142 + - armband.qemu
143 + - armband.vgabios
144 + - armband.nova
145 + - armband.libvirt_driver
146 +
147 diff --git a/mcp/salt-formulas/armband/libvirt_driver.sls b/mcp/salt-formulas/armband/libvirt_driver.sls
148 new file mode 100644
149 index 0000000..c309035
150 --- /dev/null
151 +++ b/mcp/salt-formulas/armband/libvirt_driver.sls
152 @@ -0,0 +1,5 @@
153 +/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py:
154 +  file.patch:
155 +  - source:  salt://armband/files/nova-libvirt-driver.diff
156 +  - hash: "668641080c6a77a9205d0f71d510ad5f"
157 +
158 diff --git a/mcp/salt-formulas/armband/nova.sls b/mcp/salt-formulas/armband/nova.sls
159 new file mode 100644
160 index 0000000..674f371
161 --- /dev/null
162 +++ b/mcp/salt-formulas/armband/nova.sls
163 @@ -0,0 +1,30 @@
164 +{% if grains['virtual'] == 'kvm' %}
165 +nova_virt_type:
166 +  file.replace:
167 +    - name: "/etc/nova/nova.conf"
168 +    - pattern: '^virt_type\s*=.*$'
169 +    - repl: "virt_type = qemu"
170 +{% endif %}
171 +nova_pointer_model:
172 +  file.replace:
173 +    - name: "/etc/nova/nova.conf"
174 +    - pattern: '^#pointer_model\s*=.*$'
175 +    - repl: "pointer_model = ps2mouse"
176 +nova_cpu_mode:
177 +  file.replace:
178 +    - name: "/etc/nova/nova.conf"
179 +    - pattern:  '^cpu_mode\s*=\s*host-passthrough'
180 +    - repl: "cpu_mode = custom"
181 +nova_cpu_model:
182 +  file.replace:
183 +    - name: "/etc/nova/nova.conf"
184 +    - pattern: '^#cpu_model\s*=.*$'
185 +    {% if grains['virtual'] == 'kvm' %}
186 +    - repl: "cpu_model = cortex-a57"
187 +    {% else %}
188 +    - repl: "cpu_model = host"
189 +    {% endif %}
190 +restart_nova-compute:
191 +  cmd:
192 +    - run
193 +    - name: "service nova-compute restart"
194 diff --git a/mcp/salt-formulas/armband/qemu.sls b/mcp/salt-formulas/armband/qemu.sls
195 new file mode 100644
196 index 0000000..ecdb5ae
197 --- /dev/null
198 +++ b/mcp/salt-formulas/armband/qemu.sls
199 @@ -0,0 +1,7 @@
200 +qemu-efi:
201 +  pkg.installed
202 +/etc/libvirt/qemu.conf:
203 +  file.replace:
204 +    - pattern: ^#security_driver =.*$
205 +    - repl: "security_driver = \"none\""
206 +
207 diff --git a/mcp/salt-formulas/armband/vgabios.sls b/mcp/salt-formulas/armband/vgabios.sls
208 new file mode 100644
209 index 0000000..a31eafa
210 --- /dev/null
211 +++ b/mcp/salt-formulas/armband/vgabios.sls
212 @@ -0,0 +1,6 @@
213 +vgabios:
214 +  pkg.installed
215 +/usr/share/qemu/vgabios-stdvga.bin:
216 +  file.symlink:
217 +    - target: "/usr/share/vgabios/vgabios.bin"
218 +