Merge lp:~jibel/ubuntu-server-iso-testing/alternate.oem into lp:ubuntu-server-iso-testing
- alternate.oem
- Merge into trunk
Proposed by
Jean-Baptiste Lallement
Status: | Merged |
---|---|
Merged at revision: | 235 |
Proposed branch: | lp:~jibel/ubuntu-server-iso-testing/alternate.oem |
Merge into: | lp:ubuntu-server-iso-testing |
Diff against target: |
346 lines (+190/-15) 8 files modified
run-test.py (+30/-7) templates.alternate/libvirt.xml (+9/-4) templates.alternate/preseeds-common/base (+9/-2) templates.alternate/pxelinuxcfg.install (+1/-2) templates.alternate/test_cases/oem/config (+23/-0) templates.alternate/test_cases/oem/preseed (+36/-0) templates.alternate/test_cases/oem/test (+77/-0) templates.desktop/libvirt.xml (+5/-0) |
To merge this branch: | bzr merge lp:~jibel/ubuntu-server-iso-testing/alternate.oem |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
C de-Avillez (community) | Approve | ||
Review via email: mp+70926@code.launchpad.net |
Commit message
Description of the change
Added OEM to alternate
Small fixes to alternate VM definition
+ little feature added to run-test.py to define test specific parameters.
To post a comment you must log in.
Revision history for this message
C de-Avillez (hggdh2) wrote : | # |
Revision history for this message
C de-Avillez (hggdh2) wrote : | # |
Of course, if I approve, I should mark it as such. Sigh.
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'run-test.py' | |||
2 | --- run-test.py 2011-07-29 16:28:51 +0000 | |||
3 | +++ run-test.py 2011-08-09 16:51:19 +0000 | |||
4 | @@ -20,10 +20,8 @@ | |||
5 | 20 | # | 20 | # |
6 | 21 | 21 | ||
7 | 22 | import datetime | 22 | import datetime |
8 | 23 | import glob | ||
9 | 24 | import logging | 23 | import logging |
10 | 25 | import optparse | 24 | import optparse |
11 | 26 | import os.path | ||
12 | 27 | import os | 25 | import os |
13 | 28 | import pipes | 26 | import pipes |
14 | 29 | import random | 27 | import random |
15 | @@ -33,12 +31,11 @@ | |||
16 | 33 | import sys | 31 | import sys |
17 | 34 | import tempfile | 32 | import tempfile |
18 | 35 | import uuid | 33 | import uuid |
19 | 36 | import urllib | ||
20 | 37 | import time | 34 | import time |
21 | 38 | import couchdb | 35 | import couchdb |
22 | 39 | import jinja2 | 36 | import jinja2 |
23 | 40 | import re | 37 | import re |
25 | 41 | from stat import S_IRWXU, S_IRGRP, S_IXGRP, S_IROTH, S_IXOTH | 38 | import ConfigParser |
26 | 42 | 39 | ||
27 | 43 | logging.basicConfig(level=logging.DEBUG) | 40 | logging.basicConfig(level=logging.DEBUG) |
28 | 44 | 41 | ||
29 | @@ -61,9 +58,32 @@ | |||
30 | 61 | DEFAULT_TEST_TIMEOUT = 3600 | 58 | DEFAULT_TEST_TIMEOUT = 3600 |
31 | 62 | DISK_SIZE = "6G" | 59 | DISK_SIZE = "6G" |
32 | 63 | 60 | ||
33 | 61 | def load_test_config(test_dir, config_file = "config"): | ||
34 | 62 | """Load test configuration from config file in test directory""" | ||
35 | 63 | config_path = os.path.join(test_dir, config_file) | ||
36 | 64 | logging.debug("Loading test configuration file: '%s'", config_path) | ||
37 | 65 | config = ConfigParser.SafeConfigParser() | ||
38 | 66 | |||
39 | 67 | config.read(config_path) | ||
40 | 68 | |||
41 | 69 | return config | ||
42 | 70 | |||
43 | 71 | def get_config_value(config, section, option): | ||
44 | 72 | """Return the value for a section/option in a preloaded config file""" | ||
45 | 73 | logging.debug("Loading configuration option: '%s/%s'", section, option) | ||
46 | 74 | try: | ||
47 | 75 | value = config.get(section, option) | ||
48 | 76 | return value | ||
49 | 77 | except ConfigParser.NoSectionError: | ||
50 | 78 | logging.info("Section doesn't exists: '%s'", section) | ||
51 | 79 | return '' | ||
52 | 80 | except ConfigParser.NoOptionError: | ||
53 | 81 | logging.info("Option doesn't exists: '%s/%s'", section, option) | ||
54 | 82 | return '' | ||
55 | 83 | |||
56 | 64 | # Defaults | 84 | # Defaults |
57 | 65 | DEFAULT_VARIANT = 'server' | 85 | DEFAULT_VARIANT = 'server' |
59 | 66 | DEFAULT_RELEASE = 'maverick' | 86 | DEFAULT_RELEASE = 'oneiric' |
60 | 67 | DEFAULT_ARCH = 'i386' | 87 | DEFAULT_ARCH = 'i386' |
61 | 68 | DEFAULT_FLAVOR= 'ubuntu-server' | 88 | DEFAULT_FLAVOR= 'ubuntu-server' |
62 | 69 | DEFAULT_ISOROOT = os.path.expanduser('~/isos') | 89 | DEFAULT_ISOROOT = os.path.expanduser('~/isos') |
63 | @@ -193,6 +213,7 @@ | |||
64 | 193 | 213 | ||
65 | 194 | t_preseed = os.path.basename(os.path.normpath(preseed)) | 214 | t_preseed = os.path.basename(os.path.normpath(preseed)) |
66 | 195 | logging.info("Generating %s configuration" % (t_preseed)) | 215 | logging.info("Generating %s configuration" % (t_preseed)) |
67 | 216 | test_config = load_test_config(os.path.join(preseed)) | ||
68 | 196 | 217 | ||
69 | 197 | old_wd = os.getcwd() | 218 | old_wd = os.getcwd() |
70 | 198 | mac_address = random_mac_address() | 219 | mac_address = random_mac_address() |
71 | @@ -237,7 +258,7 @@ | |||
72 | 237 | logging.debug("Copying preseed to tftp root") | 258 | logging.debug("Copying preseed to tftp root") |
73 | 238 | shutil.copy(preseed_file,os.path.join(TFTP_DIR,'preseed.%s' % test_uuid)) | 259 | shutil.copy(preseed_file,os.path.join(TFTP_DIR,'preseed.%s' % test_uuid)) |
74 | 239 | 260 | ||
76 | 240 | logging.info("Copying run_test") | 261 | logging.info("Copying %s -> %s", RUN_TEST, initrd_tmp_dir) |
77 | 241 | # Put run_test in the initrd so that the installer can copy it | 262 | # Put run_test in the initrd so that the installer can copy it |
78 | 242 | # into the target system at late_command time | 263 | # into the target system at late_command time |
79 | 243 | shutil.copy(RUN_TEST, os.path.join(initrd_tmp_dir, 'run_test')) | 264 | shutil.copy(RUN_TEST, os.path.join(initrd_tmp_dir, 'run_test')) |
80 | @@ -301,9 +322,11 @@ | |||
81 | 301 | # Generate pxelinux configuration file for test cashe | 322 | # Generate pxelinux configuration file for test cashe |
82 | 302 | 323 | ||
83 | 303 | logging.debug("Copying pxelinux config to tftp root") | 324 | logging.debug("Copying pxelinux config to tftp root") |
84 | 325 | kernel_boot_args = get_config_value(test_config, 'pxelinux', 'kernel_boot_args') | ||
85 | 304 | tmpl = templates.get_template('pxelinuxcfg.install') | 326 | tmpl = templates.get_template('pxelinuxcfg.install') |
86 | 305 | ctxt = { 'mac': mac_address, | 327 | ctxt = { 'mac': mac_address, |
88 | 306 | 'uuid': test_uuid | 328 | 'uuid': test_uuid, |
89 | 329 | 'kernel_boot_args': kernel_boot_args | ||
90 | 307 | } | 330 | } |
91 | 308 | logging.debug("Context: %s" % (ctxt)) | 331 | logging.debug("Context: %s" % (ctxt)) |
92 | 309 | pxelinux_cfg_file = os.path.join(TFTP_DIR,'pxelinux.cfg', | 332 | pxelinux_cfg_file = os.path.join(TFTP_DIR,'pxelinux.cfg', |
93 | 310 | 333 | ||
94 | === modified file 'templates.alternate/libvirt.xml' | |||
95 | --- templates.alternate/libvirt.xml 2011-06-26 14:06:40 +0000 | |||
96 | +++ templates.alternate/libvirt.xml 2011-08-09 16:51:19 +0000 | |||
97 | @@ -20,7 +20,7 @@ | |||
98 | 20 | <domain type='kvm'> | 20 | <domain type='kvm'> |
99 | 21 | <name>{{ name }}</name> | 21 | <name>{{ name }}</name> |
100 | 22 | <uuid>{{ uuid }}</uuid> | 22 | <uuid>{{ uuid }}</uuid> |
102 | 23 | <memory>450000</memory> | 23 | <memory>1024000</memory> |
103 | 24 | <vcpu>1</vcpu> | 24 | <vcpu>1</vcpu> |
104 | 25 | <features> | 25 | <features> |
105 | 26 | <acpi/> | 26 | <acpi/> |
106 | @@ -50,7 +50,12 @@ | |||
107 | 50 | <mac address='{{ mac }}'/> | 50 | <mac address='{{ mac }}'/> |
108 | 51 | <source network='iso-testing' /> | 51 | <source network='iso-testing' /> |
109 | 52 | <model type='virtio'/> | 52 | <model type='virtio'/> |
113 | 53 | </interface> | 53 | </interface> |
114 | 54 | <graphics type='vnc' listen='0.0.0.0'/> | 54 | <graphics type='vnc' listen='0.0.0.0'/> |
115 | 55 | </devices> | 55 | <video> |
116 | 56 | <model type='vga' vram='12288' heads='1'> | ||
117 | 57 | <acceleration accel3d='yes' accel2d='yes'/> | ||
118 | 58 | </model> | ||
119 | 59 | </video> | ||
120 | 60 | </devices> | ||
121 | 56 | </domain> | 61 | </domain> |
122 | 57 | 62 | ||
123 | === modified file 'templates.alternate/preseeds-common/base' | |||
124 | --- templates.alternate/preseeds-common/base 2011-03-04 13:50:04 +0000 | |||
125 | +++ templates.alternate/preseeds-common/base 2011-08-09 16:51:19 +0000 | |||
126 | @@ -20,13 +20,13 @@ | |||
127 | 20 | 20 | ||
128 | 21 | ### Localization | 21 | ### Localization |
129 | 22 | # Locale sets language and country. | 22 | # Locale sets language and country. |
131 | 23 | d-i debian-installer/locale string en_CA.UTF-8 | 23 | d-i debian-installer/locale string en_US.UTF-8 |
132 | 24 | 24 | ||
133 | 25 | # Keyboard selection. | 25 | # Keyboard selection. |
134 | 26 | # Disable automatic (interactive) keymap detection. | 26 | # Disable automatic (interactive) keymap detection. |
135 | 27 | d-i console-setup/ask_detect boolean false | 27 | d-i console-setup/ask_detect boolean false |
136 | 28 | #d-i console-setup/modelcode string pc105 | 28 | #d-i console-setup/modelcode string pc105 |
138 | 29 | d-i console-setup/layoutcode string ca | 29 | d-i console-setup/layoutcode string us |
139 | 30 | # To select a variant of the selected layout (if you leave this out, the | 30 | # To select a variant of the selected layout (if you leave this out, the |
140 | 31 | # basic form of the layout will be used): | 31 | # basic form of the layout will be used): |
141 | 32 | #d-i console-setup/variantcode string dvorak | 32 | #d-i console-setup/variantcode string dvorak |
142 | @@ -175,12 +175,14 @@ | |||
143 | 175 | # or encrypted using an MD5 hash. | 175 | # or encrypted using an MD5 hash. |
144 | 176 | #d-i passwd/root-password-crypted password [MD5 hash] | 176 | #d-i passwd/root-password-crypted password [MD5 hash] |
145 | 177 | 177 | ||
146 | 178 | {% block user_account %} | ||
147 | 178 | # To create a normal user account. | 179 | # To create a normal user account. |
148 | 179 | d-i passwd/user-fullname string Ubuntu | 180 | d-i passwd/user-fullname string Ubuntu |
149 | 180 | d-i passwd/username string ubuntu | 181 | d-i passwd/username string ubuntu |
150 | 181 | # Normal user's password, either in clear text | 182 | # Normal user's password, either in clear text |
151 | 182 | d-i passwd/user-password password !ubuntu123 | 183 | d-i passwd/user-password password !ubuntu123 |
152 | 183 | d-i passwd/user-password-again password !ubuntu123 | 184 | d-i passwd/user-password-again password !ubuntu123 |
153 | 185 | {% endblock %} | ||
154 | 184 | 186 | ||
155 | 185 | # No boot splash screen. | 187 | # No boot splash screen. |
156 | 186 | d-i debian-installer/splash boolean false | 188 | d-i debian-installer/splash boolean false |
157 | @@ -219,6 +221,11 @@ | |||
158 | 219 | # Wait for two seconds in grub | 221 | # Wait for two seconds in grub |
159 | 220 | d-i grub-installer/timeout string 2 | 222 | d-i grub-installer/timeout string 2 |
160 | 221 | 223 | ||
161 | 224 | ### OEM Configuration | ||
162 | 225 | {% block oem_mode %} | ||
163 | 226 | # OEM Mode disabled | ||
164 | 227 | {% endblock %} | ||
165 | 228 | |||
166 | 222 | ### Package selection | 229 | ### Package selection |
167 | 223 | 230 | ||
168 | 224 | {% block tasksel_first %} | 231 | {% block tasksel_first %} |
169 | 225 | 232 | ||
170 | === modified file 'templates.alternate/pxelinuxcfg.install' | |||
171 | --- templates.alternate/pxelinuxcfg.install 2011-06-15 12:06:07 +0000 | |||
172 | +++ templates.alternate/pxelinuxcfg.install 2011-08-09 16:51:19 +0000 | |||
173 | @@ -25,5 +25,4 @@ | |||
174 | 25 | label install | 25 | label install |
175 | 26 | kernel kernel.{{ uuid }} | 26 | kernel kernel.{{ uuid }} |
176 | 27 | initrd initrd.{{ uuid }} | 27 | initrd initrd.{{ uuid }} |
179 | 28 | append file=/preseed DEBCONF_DEBUG=developer -- debconf/priority=critical locale=en_US console-setup/ask_detect=false console-setup/layoutcode=us | 28 | append file=/preseed DEBCONF_DEBUG=developer -- debconf/priority=critical locale=en_US console-setup/ask_detect=false console-setup/layoutcode=us {{ kernel_boot_args }} |
178 | 29 | |||
180 | 30 | 29 | ||
181 | === added directory 'templates.alternate/test_cases/oem' | |||
182 | === added file 'templates.alternate/test_cases/oem/config' | |||
183 | --- templates.alternate/test_cases/oem/config 1970-01-01 00:00:00 +0000 | |||
184 | +++ templates.alternate/test_cases/oem/config 2011-08-09 16:51:19 +0000 | |||
185 | @@ -0,0 +1,23 @@ | |||
186 | 1 | # | ||
187 | 2 | # Copyright (C) 2011, Canonical Ltd (http://www.canonical.com/) | ||
188 | 3 | # | ||
189 | 4 | # This file is part of ubuntu-server-iso-testing. | ||
190 | 5 | # | ||
191 | 6 | # ubuntu-server-iso-testing is free software: you can redistribute it | ||
192 | 7 | # and/or modify it under the terms of the GNU General Public License | ||
193 | 8 | # as published by the Free Software Foundation, either version 3 of | ||
194 | 9 | # the License, or (at your option) any later version. | ||
195 | 10 | # | ||
196 | 11 | # ubuntu-server-iso-testing is distributed in the hope that it will | ||
197 | 12 | # be useful, but WITHOUT ANY WARRANTY; without even the implied warranty | ||
198 | 13 | # of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
199 | 14 | # GNU General Public License for more details. | ||
200 | 15 | # | ||
201 | 16 | # You should have received a copy of the GNU General Public License | ||
202 | 17 | # along with ubuntu-server-iso-testing. If not, see | ||
203 | 18 | # <http://www.gnu.org/licenses/>. | ||
204 | 19 | # | ||
205 | 20 | # | ||
206 | 21 | # Test Case specific configuration file | ||
207 | 22 | [pxelinux] | ||
208 | 23 | kernel_boot_args=oem-config/enable=true | ||
209 | 0 | 24 | ||
210 | === added file 'templates.alternate/test_cases/oem/preseed' | |||
211 | --- templates.alternate/test_cases/oem/preseed 1970-01-01 00:00:00 +0000 | |||
212 | +++ templates.alternate/test_cases/oem/preseed 2011-08-09 16:51:19 +0000 | |||
213 | @@ -0,0 +1,36 @@ | |||
214 | 1 | # | ||
215 | 2 | # Copyright (C) 2010, Canonical Ltd (http://www.canonical.com/) | ||
216 | 3 | # | ||
217 | 4 | # This file is part of ubuntu-server-iso-testing. | ||
218 | 5 | # | ||
219 | 6 | # ubuntu-server-iso-testing is free software: you can redistribute it | ||
220 | 7 | # and/or modify it under the terms of the GNU General Public License | ||
221 | 8 | # as published by the Free Software Foundation, either version 3 of | ||
222 | 9 | # the License, or (at your option) any later version. | ||
223 | 10 | # | ||
224 | 11 | # ubuntu-server-iso-testing is distributed in the hope that it will | ||
225 | 12 | # be useful, but WITHOUT ANY WARRANTY; without even the implied warranty | ||
226 | 13 | # of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
227 | 14 | # GNU General Public License for more details. | ||
228 | 15 | # | ||
229 | 16 | # You should have received a copy of the GNU General Public License | ||
230 | 17 | # along with ubuntu-server-iso-testing. If not, see | ||
231 | 18 | # <http://www.gnu.org/licenses/>. | ||
232 | 19 | # | ||
233 | 20 | |||
234 | 21 | {% extends "base" %} | ||
235 | 22 | |||
236 | 23 | {% block user_account %} | ||
237 | 24 | # OEM Install | ||
238 | 25 | d-i passwd/allow-password-empty boolean true | ||
239 | 26 | d-i passwd/user-fullname string OEM Configuration (temporary user) | ||
240 | 27 | d-i passwd/username string oem | ||
241 | 28 | d-i passwd/user-password string !ubuntu123 | ||
242 | 29 | d-i passwd/user-password-again string !ubuntu123 | ||
243 | 30 | {% endblock %} | ||
244 | 31 | |||
245 | 32 | {% block oem_mode %} | ||
246 | 33 | # enable oem mode | ||
247 | 34 | d-i oem-config/enable boolean true | ||
248 | 35 | d-i oem-config/id string USIT_OEM | ||
249 | 36 | {% endblock %} | ||
250 | 0 | 37 | ||
251 | === added file 'templates.alternate/test_cases/oem/test' | |||
252 | --- templates.alternate/test_cases/oem/test 1970-01-01 00:00:00 +0000 | |||
253 | +++ templates.alternate/test_cases/oem/test 2011-08-09 16:51:19 +0000 | |||
254 | @@ -0,0 +1,77 @@ | |||
255 | 1 | #!/usr/bin/python | ||
256 | 2 | # | ||
257 | 3 | # Copyright (C) 2010, Canonical Ltd (http://www.canonical.com/) | ||
258 | 4 | # | ||
259 | 5 | # This file is part of ubuntu-server-iso-testing. | ||
260 | 6 | # | ||
261 | 7 | # ubuntu-server-iso-testing is free software: you can redistribute it | ||
262 | 8 | # and/or modify it under the terms of the GNU General Public License | ||
263 | 9 | # as published by the Free Software Foundation, either version 3 of | ||
264 | 10 | # the License, or (at your option) any later version. | ||
265 | 11 | # | ||
266 | 12 | # ubuntu-server-iso-testing is distributed in the hope that it will | ||
267 | 13 | # be useful, but WITHOUT ANY WARRANTY; without even the implied warranty | ||
268 | 14 | # of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
269 | 15 | # GNU General Public License for more details. | ||
270 | 16 | # | ||
271 | 17 | # You should have received a copy of the GNU General Public License | ||
272 | 18 | # along with ubuntu-server-iso-testing. If not, see | ||
273 | 19 | # <http://www.gnu.org/licenses/>. | ||
274 | 20 | # | ||
275 | 21 | |||
276 | 22 | import logging | ||
277 | 23 | import os.path | ||
278 | 24 | import unittest | ||
279 | 25 | import subprocess | ||
280 | 26 | |||
281 | 27 | logging.basicConfig(level=logging.INFO) | ||
282 | 28 | |||
283 | 29 | def cmd(command, input = None, stderr = subprocess.STDOUT, stdout = subprocess.PIPE, stdin = None): | ||
284 | 30 | '''Try to execute given command (array) and return its stdout, or return | ||
285 | 31 | a textual error if it failed.''' | ||
286 | 32 | try: | ||
287 | 33 | sp = subprocess.Popen(command, stdin=stdin, stdout=stdout, stderr=stderr, close_fds=True) | ||
288 | 34 | except OSError, e: | ||
289 | 35 | return [127, str(e)] | ||
290 | 36 | |||
291 | 37 | out, outerr = sp.communicate(input) | ||
292 | 38 | # Handle redirection of stdout | ||
293 | 39 | if out == None: | ||
294 | 40 | out = '' | ||
295 | 41 | # Handle redirection of stderr | ||
296 | 42 | if outerr == None: | ||
297 | 43 | outerr = '' | ||
298 | 44 | return [sp.returncode,out+outerr] | ||
299 | 45 | |||
300 | 46 | |||
301 | 47 | class OemTest(unittest.TestCase): | ||
302 | 48 | # Only works on english installation since Desktop is localized | ||
303 | 49 | desktop_shortcut_path = '/home/oem/Desktop/oem-config-prepare-gtk.desktop' | ||
304 | 50 | |||
305 | 51 | # The following packages must be installed | ||
306 | 52 | oem_pkglist = ( | ||
307 | 53 | 'oem-config', | ||
308 | 54 | 'oem-config-gtk' | ||
309 | 55 | ) | ||
310 | 56 | |||
311 | 57 | def test_01ReadWrite(self): | ||
312 | 58 | t_fh = open(os.path.join('/tmp', 'a'), 'w') | ||
313 | 59 | self.assertNotEqual(t_fh, None) | ||
314 | 60 | self.assertEqual(t_fh.write('a'), None) | ||
315 | 61 | self.assertEqual(t_fh.close(), None) | ||
316 | 62 | |||
317 | 63 | def test_02DesktopShortcutExists(self): | ||
318 | 64 | """Test if the desktop shortcut has been created successfully""" | ||
319 | 65 | self.assertTrue(os.path.exists(self.desktop_shortcut_path)) | ||
320 | 66 | |||
321 | 67 | def test_03OEMPkgInstalled(self): | ||
322 | 68 | """Verify that OEM packages are installed""" | ||
323 | 69 | for pkg in self.oem_pkglist: | ||
324 | 70 | rc, report = cmd(['dpkg-query', '-W', pkg]) | ||
325 | 71 | expected = 0 | ||
326 | 72 | result = 'Got exit code %d, expected %d\n' % (rc, expected) | ||
327 | 73 | self.assertEquals(expected, rc, result + report) | ||
328 | 74 | |||
329 | 75 | |||
330 | 76 | if __name__ == '__main__': | ||
331 | 77 | unittest.main() | ||
332 | 0 | 78 | ||
333 | === modified file 'templates.desktop/libvirt.xml' | |||
334 | --- templates.desktop/libvirt.xml 2011-06-26 14:06:40 +0000 | |||
335 | +++ templates.desktop/libvirt.xml 2011-08-09 16:51:19 +0000 | |||
336 | @@ -52,5 +52,10 @@ | |||
337 | 52 | <model type='virtio'/> | 52 | <model type='virtio'/> |
338 | 53 | </interface> | 53 | </interface> |
339 | 54 | <graphics type='vnc' listen='0.0.0.0'/> | 54 | <graphics type='vnc' listen='0.0.0.0'/> |
340 | 55 | <video> | ||
341 | 56 | <model type='vga' vram='12288' heads='1'> | ||
342 | 57 | <acceleration accel3d='yes' accel2d='yes'/> | ||
343 | 58 | </model> | ||
344 | 59 | </video> | ||
345 | 55 | </devices> | 60 | </devices> |
346 | 56 | </domain> | 61 | </domain> |
Go for it.
Just two comments, mostly for reference, and before I forget:
1. we should standardise on an account/password for those throw-away systems. Right now we use account=ubuntu, password= {!ubuntu123, ubuntu, insecure}, on different places. Personally, I like 'insecure' ;-)
2. we have to look for, and change all references to en_ca.UTF8 (or country code CA) to en_US.UTF8 and US). Jean-Baptiste already did this one here, which was why I remembered about it.