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