Merge lp:~corey.bryant/nova/2014.1.3 into lp:~ubuntu-server-dev/nova/icehouse
- 2014.1.3
- Merge into icehouse
Proposed by
Corey Bryant
Status: | Merged | ||||
---|---|---|---|---|---|
Merged at revision: | 696 | ||||
Proposed branch: | lp:~corey.bryant/nova/2014.1.3 | ||||
Merge into: | lp:~ubuntu-server-dev/nova/icehouse | ||||
Diff against target: |
421 lines (+102/-216) 4 files modified
debian/changelog (+60/-2) debian/patches/libvirt-Handle-unsupported-host-capabilities.patch (+42/-53) debian/patches/libvirt-convert-cpu-features-attribute-from-list-to-.patch (+0/-160) debian/patches/series (+0/-1) |
||||
To merge this branch: | bzr merge lp:~corey.bryant/nova/2014.1.3 | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Ubuntu Server Developers | Pending | ||
Review via email:
|
Commit message
Description of the change
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'debian/changelog' |
2 | --- debian/changelog 2014-09-30 14:41:00 +0000 |
3 | +++ debian/changelog 2014-10-03 19:06:52 +0000 |
4 | @@ -1,9 +1,67 @@ |
5 | -nova (1:2014.1.2-0ubuntu1.1) UNRELEASED; urgency=medium |
6 | +nova (1:2014.1.3-0ubuntu1) UNRELEASED; urgency=medium |
7 | |
8 | + [ Liam Young ] |
9 | * d/p/cells-json-store.patch: Fix issue with nova-cells failing when using |
10 | JSON file to store cell information (LP: #1314677). |
11 | |
12 | - -- Liam Young <liam.young@canonical.com> Mon, 29 Sep 2014 12:59:24 +0000 |
13 | + [ Corey Bryant ] |
14 | + * Resynchronize with stable/icehouse (a058646) (LP: #1377136): |
15 | + - [1a95c95] Adds tests for Hyper-V VM Utils |
16 | + - [bb47d55] Removes unnecessary instructions in test_hypervapi |
17 | + - [4f41d37] Fixes a Hyper-V list_instances localization issue |
18 | + - [9015410] Adds list_instance_uuids to the Hyper-V driver |
19 | + - [3371ad8] Add _wrap_db_error() support to Session.commit() |
20 | + - [dfb0e0f] Neutron: Atomic update of instance info cache |
21 | + - [bce481c] Ensure info cache updates don't overwhelm cells |
22 | + - [f58d95c] Sync process and str utils from oslo |
23 | + - [4e6371b] remove test_multiprocess_api |
24 | + - [7e09173] Fixes Hyper-V agent force_hyperv_utils_v1 flag issue |
25 | + - [7523ab4] Fix attaching config drive issue on Hyper-V when migrate instances |
26 | + - [74e0ba7] Fix live-migration failure in FC multipath case |
27 | + - [b61aa4d] libvirt: Save device_path in connection_info when booting from volume |
28 | + - [f93b8ee] Made unassigned networks visible in flat networking |
29 | + - [82cc3be] Do not fail cell's instance deletion, if it's missing info_cache |
30 | + - [d72c0a4] Fixes Hyper-V boot from volume root device issue |
31 | + - [0d3dad7] Fixes Hyper-V resize down exception |
32 | + - [5d5970a] db: Add @_retry_on_deadlock to service_update() |
33 | + - [9596f52] Add Hyper-V driver in the "compute_driver" option description |
34 | + - [4a8d6ca] Block sqlalchemy migrate 0.9.2 as it breaks all of nova |
35 | + - [311ab57] Move the error check for "brctl addif" |
36 | + - [df09c2a] Fix rootwrap for non openstack.org iqn's |
37 | + - [1613cd99] Fix instance boot when Ceph is used for ephemeral storage |
38 | + - [4bc680f] Make floatingip-ip-delete atomic with neutron |
39 | + - [0d69163] Fix race condition with vif plugging in finish migrate |
40 | + - [520aa4c] libvirt: Use VIR_DOMAIN_AFFECT_LIVE for paused instances |
41 | + - [3c34e37] add repr for event objects |
42 | + - [1b7ab22] make lifecycle event logs more clear |
43 | + - [e1d6e18] Catch missing Glance image attrs with None |
44 | + - [b591389] Update block_device_info to contain swap and ephemeral disks |
45 | + - [2155188] Adds get_instance_disk_info to compute drivers |
46 | + - [87f842d] Fixes Hyper-V vm state issue |
47 | + - [1106ef2] Fix expected error details from jsonschema |
48 | + - [e5e6bc7] Include next link when default limit is reached |
49 | + - [526853e] Fix FloatingIP.save() passing FixedIP object to sqlalchemy |
50 | + - [4e1e217] Read deleted instances during lifecycle events |
51 | + - [d8b9ba5] Add a retry_on_deadlock to reservations_expire |
52 | + - [b53adea] Add expire reservations in backport position. |
53 | + - [e874ee2] Fixes Hyper-V SCSI slot selection |
54 | + - [471e644] VMware: do not cache image when root_gb is 0 |
55 | + - [825cfe4] Fix _parse_datetime in simple tenant usage extension |
56 | + - [073ee06] Avoid traceback logs from simple tenant usage extension |
57 | + - [9447203] replace NovaException with VirtualInterfaceCreate when neutron fails |
58 | + - [6b7cb1a] libvirt: convert cpu features attribute from list to a set |
59 | + - [7ca83e8] Delete image when backup operation failed on snapshot step |
60 | + - [82a13b3] VM in rescue state must have a restricted set of actions |
61 | + - [e7d2087] shelve doesn't work on nova-cells environment |
62 | + - [aeb71a8] libvirt: return the correct instance path while cleanup_resize |
63 | + - [cce6d22] Fix nova image-show with queued image |
64 | + - [aff80d5] _translate_from_glance() can cause an unnecessary HTTP request |
65 | + - [a058646] Loosen import_exceptions to cover all of gettextutils |
66 | + * d/p/libvirt-convert-cpu-features-attribute-from-list-to-.patch: Dropped. |
67 | + Code has been fixed upstream. |
68 | + * d/p/libvirt-Handle-unsupported-host-capabilities.patch: Rebased. |
69 | + |
70 | + -- Corey Bryant <corey.bryant@canonical.com> Fri, 03 Oct 2014 13:11:04 -0400 |
71 | |
72 | nova (1:2014.1.2-0ubuntu1) trusty; urgency=medium |
73 | |
74 | |
75 | === modified file 'debian/patches/libvirt-Handle-unsupported-host-capabilities.patch' |
76 | --- debian/patches/libvirt-Handle-unsupported-host-capabilities.patch 2014-06-24 15:47:40 +0000 |
77 | +++ debian/patches/libvirt-Handle-unsupported-host-capabilities.patch 2014-10-03 19:06:52 +0000 |
78 | @@ -1,10 +1,9 @@ |
79 | Description: Fix exception when starting LXC containers with libvirt-lxc. |
80 | Author: Chuck Short <zulcss@ubuntu.com> |
81 | Forwarded: Not Needed. |
82 | -diff -Naurp nova-2014.1.1.orig/nova/tests/virt/libvirt/fakelibvirt.py nova-2014.1.1/nova/tests/virt/libvirt/fakelibvirt.py |
83 | ---- nova-2014.1.1.orig/nova/tests/virt/libvirt/fakelibvirt.py 2014-06-05 17:33:22.000000000 -0400 |
84 | -+++ nova-2014.1.1/nova/tests/virt/libvirt/fakelibvirt.py 2014-06-09 12:00:11.032072000 -0400 |
85 | -@@ -172,18 +172,76 @@ def _parse_disk_info(element): |
86 | +--- a/nova/tests/virt/libvirt/fakelibvirt.py |
87 | ++++ b/nova/tests/virt/libvirt/fakelibvirt.py |
88 | +@@ -172,18 +172,76 @@ |
89 | |
90 | |
91 | class libvirtError(Exception): |
92 | @@ -89,7 +88,7 @@ |
93 | |
94 | |
95 | class NWFilter(object): |
96 | -@@ -219,8 +277,10 @@ class Domain(object): |
97 | +@@ -219,8 +277,10 @@ |
98 | try: |
99 | tree = etree.fromstring(xml) |
100 | except etree.ParseError: |
101 | @@ -102,7 +101,7 @@ |
102 | |
103 | definition = {} |
104 | |
105 | -@@ -369,7 +429,11 @@ class Domain(object): |
106 | +@@ -369,7 +429,11 @@ |
107 | 123456789L] |
108 | |
109 | def migrateToURI(self, desturi, flags, dname, bandwidth): |
110 | @@ -115,7 +114,7 @@ |
111 | |
112 | def attachDevice(self, xml): |
113 | disk_info = _parse_disk_info(etree.fromstring(xml)) |
114 | -@@ -380,7 +444,11 @@ class Domain(object): |
115 | +@@ -380,7 +444,11 @@ |
116 | def attachDeviceFlags(self, xml, flags): |
117 | if (flags & VIR_DOMAIN_AFFECT_LIVE and |
118 | self._state != VIR_DOMAIN_RUNNING): |
119 | @@ -128,7 +127,7 @@ |
120 | self.attachDevice(xml) |
121 | |
122 | def detachDevice(self, xml): |
123 | -@@ -533,9 +601,11 @@ class Connection(object): |
124 | +@@ -533,9 +601,11 @@ |
125 | 'test:///default'] |
126 | |
127 | if uri not in uri_whitelist: |
128 | @@ -143,7 +142,7 @@ |
129 | |
130 | self.readonly = readonly |
131 | self._uri = uri |
132 | -@@ -594,16 +664,20 @@ class Connection(object): |
133 | +@@ -594,16 +664,20 @@ |
134 | def lookupByID(self, id): |
135 | if id in self._running_vms: |
136 | return self._running_vms[id] |
137 | @@ -170,7 +169,7 @@ |
138 | |
139 | def _emit_lifecycle(self, dom, event, detail): |
140 | if VIR_DOMAIN_EVENT_ID_LIFECYCLE not in self._event_callbacks: |
141 | -@@ -904,14 +978,21 @@ class Connection(object): |
142 | +@@ -904,14 +978,21 @@ |
143 | 'user': 26728850000000L, |
144 | 'iowait': 6121490000000L} |
145 | else: |
146 | @@ -195,7 +194,7 @@ |
147 | |
148 | def nwfilterDefineXML(self, xml): |
149 | nwfilter = NWFilter(self, xml) |
150 | -@@ -964,6 +1045,24 @@ def registerErrorHandler(handler, ctxt): |
151 | +@@ -964,6 +1045,24 @@ |
152 | pass |
153 | |
154 | |
155 | @@ -220,18 +219,37 @@ |
156 | virDomain = Domain |
157 | |
158 | |
159 | -diff -Naurp nova-2014.1.1.orig/nova/tests/virt/libvirt/test_libvirt.py nova-2014.1.1/nova/tests/virt/libvirt/test_libvirt.py |
160 | ---- nova-2014.1.1.orig/nova/tests/virt/libvirt/test_libvirt.py 2014-06-05 17:33:22.000000000 -0400 |
161 | -+++ nova-2014.1.1/nova/tests/virt/libvirt/test_libvirt.py 2014-06-09 12:00:11.040072000 -0400 |
162 | -@@ -60,6 +60,7 @@ import nova.tests.image.fake |
163 | - from nova.tests import matchers |
164 | - from nova.tests.objects import test_pci_device |
165 | - from nova.tests.virt.libvirt import fake_libvirt_utils |
166 | -+from nova.tests.virt.libvirt import fakelibvirt |
167 | - from nova import utils |
168 | - from nova import version |
169 | - from nova.virt import configdrive |
170 | -@@ -80,7 +81,7 @@ from nova.virt import netutils |
171 | +--- a/nova/virt/libvirt/driver.py |
172 | ++++ b/nova/virt/libvirt/driver.py |
173 | +@@ -77,6 +77,7 @@ |
174 | + from nova.openstack.common import excutils |
175 | + from nova.openstack.common import fileutils |
176 | + from nova.openstack.common.gettextutils import _ |
177 | ++from nova.openstack.common.gettextutils import _LW |
178 | + from nova.openstack.common import importutils |
179 | + from nova.openstack.common import jsonutils |
180 | + from nova.openstack.common import log as logging |
181 | +@@ -2888,9 +2889,14 @@ |
182 | + # this -1 checking should be removed later. |
183 | + if features and features != -1: |
184 | + self._caps.host.cpu.parse_str(features) |
185 | +- except libvirt.VIR_ERR_NO_SUPPORT: |
186 | +- # Note(yjiang5): ignore if libvirt has no support |
187 | +- pass |
188 | ++ except libvirt.libvirtError as ex: |
189 | ++ error_code = ex.get_error_code() |
190 | ++ if error_code == libvirt.VIR_ERR_NO_SUPPORT: |
191 | ++ LOG.warn(_LW("URI %(uri)s does not support full set" |
192 | ++ " of host capabilities: " "%(error)s"), |
193 | ++ {'uri': self.uri(), 'error': ex}) |
194 | ++ else: |
195 | ++ raise |
196 | + return self._caps |
197 | + |
198 | + def get_host_uuid(self): |
199 | +--- a/nova/tests/virt/libvirt/test_libvirt.py |
200 | ++++ b/nova/tests/virt/libvirt/test_libvirt.py |
201 | +@@ -83,7 +83,7 @@ |
202 | try: |
203 | import libvirt |
204 | except ImportError: |
205 | @@ -240,7 +258,7 @@ |
206 | libvirt_driver.libvirt = libvirt |
207 | |
208 | |
209 | -@@ -849,6 +850,42 @@ class LibvirtConnTestCase(test.TestCase) |
210 | +@@ -887,6 +887,42 @@ |
211 | caps = conn.get_host_capabilities() |
212 | self.assertIn('aes', [x.name for x in caps.host.cpu.features]) |
213 | |
214 | @@ -283,32 +301,3 @@ |
215 | def test_lxc_get_host_capabilities_failed(self): |
216 | conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) |
217 | |
218 | -diff -Naurp nova-2014.1.1.orig/nova/virt/libvirt/driver.py nova-2014.1.1/nova/virt/libvirt/driver.py |
219 | ---- nova-2014.1.1.orig/nova/virt/libvirt/driver.py 2014-06-05 17:33:22.000000000 -0400 |
220 | -+++ nova-2014.1.1/nova/virt/libvirt/driver.py 2014-06-09 11:59:55.232072000 -0400 |
221 | -@@ -76,6 +76,7 @@ from nova.objects import service as serv |
222 | - from nova.openstack.common import excutils |
223 | - from nova.openstack.common import fileutils |
224 | - from nova.openstack.common.gettextutils import _ |
225 | -+from nova.openstack.common.gettextutils import _LW |
226 | - from nova.openstack.common import importutils |
227 | - from nova.openstack.common import jsonutils |
228 | - from nova.openstack.common import log as logging |
229 | -@@ -2859,9 +2860,14 @@ class LibvirtDriver(driver.ComputeDriver |
230 | - # this -1 checking should be removed later. |
231 | - if features and features != -1: |
232 | - self._caps.host.cpu.parse_str(features) |
233 | -- except libvirt.VIR_ERR_NO_SUPPORT: |
234 | -- # Note(yjiang5): ignore if libvirt has no support |
235 | -- pass |
236 | -+ except libvirt.libvirtError as ex: |
237 | -+ error_code = ex.get_error_code() |
238 | -+ if error_code == libvirt.VIR_ERR_NO_SUPPORT: |
239 | -+ LOG.warn(_LW("URI %(uri)s does not support full set" |
240 | -+ " of host capabilities: " "%(error)s"), |
241 | -+ {'uri': self.uri(), 'error': ex}) |
242 | -+ else: |
243 | -+ raise |
244 | - return self._caps |
245 | - |
246 | - def get_host_uuid(self): |
247 | |
248 | === removed file 'debian/patches/libvirt-convert-cpu-features-attribute-from-list-to-.patch' |
249 | --- debian/patches/libvirt-convert-cpu-features-attribute-from-list-to-.patch 2014-08-08 17:43:35 +0000 |
250 | +++ debian/patches/libvirt-convert-cpu-features-attribute-from-list-to-.patch 1970-01-01 00:00:00 +0000 |
251 | @@ -1,160 +0,0 @@ |
252 | -Description: libvirt: convert cpu features attribute from list to a set |
253 | - |
254 | -Currently, the cpu features list which is being sent to libvirt, |
255 | -when creating a domain or calling compareCPU, must contain only |
256 | -unique entries. Multiple issues arise when we are updating the |
257 | -features attribute in LibvirtConfigCPU class (for example during |
258 | -migration). |
259 | - |
260 | -This change will change the features attribute from being a list |
261 | -to a set. This make the LibvirtConfigCPU class keep only unique |
262 | -features. |
263 | -Adjusting the LibvirtConfigCPUFeature class to support set |
264 | -operations by overriding the __eq__, __ne__ and __hash__ |
265 | -methods. |
266 | - |
267 | -Author: Vladik Romanovsky <vladik.romanovsky@enovance.com> |
268 | -Origin: upstream, Change-Id: I6350fe0e827c860aea77cc4fe56f18f5c1483580 |
269 | -Bug-Ubuntu: #1303536 |
270 | -Last-Update: 2014-06-25 |
271 | - |
272 | ---- |
273 | - nova/tests/virt/libvirt/test_libvirt.py | 8 ++++---- |
274 | - nova/tests/virt/libvirt/test_libvirt_config.py | 24 +++++++++++++++++++++++- |
275 | - nova/virt/libvirt/config.py | 16 +++++++++++++--- |
276 | - nova/virt/libvirt/driver.py | 2 +- |
277 | - 4 files changed, 41 insertions(+), 9 deletions(-) |
278 | - |
279 | -diff --git a/nova/tests/virt/libvirt/test_libvirt.py b/nova/tests/virt/libvirt/test_libvirt.py |
280 | -index 1f744b7..9139ab9 100644 |
281 | ---- a/nova/tests/virt/libvirt/test_libvirt.py |
282 | -+++ b/nova/tests/virt/libvirt/test_libvirt.py |
283 | -@@ -2206,8 +2206,8 @@ class LibvirtConnTestCase(test.TestCase): |
284 | - cpu.model = "Opteron_G4" |
285 | - cpu.vendor = "AMD" |
286 | - |
287 | -- cpu.features.append(vconfig.LibvirtConfigGuestCPUFeature("tm2")) |
288 | -- cpu.features.append(vconfig.LibvirtConfigGuestCPUFeature("ht")) |
289 | -+ cpu.add_feature(vconfig.LibvirtConfigGuestCPUFeature("tm2")) |
290 | -+ cpu.add_feature(vconfig.LibvirtConfigGuestCPUFeature("ht")) |
291 | - |
292 | - caps = vconfig.LibvirtConfigCaps() |
293 | - caps.host = vconfig.LibvirtConfigCapsHost() |
294 | -@@ -2235,8 +2235,8 @@ class LibvirtConnTestCase(test.TestCase): |
295 | - self.assertEqual(conf.cpu.model, "Opteron_G4") |
296 | - self.assertEqual(conf.cpu.vendor, "AMD") |
297 | - self.assertEqual(len(conf.cpu.features), 2) |
298 | -- self.assertEqual(conf.cpu.features[0].name, "tm2") |
299 | -- self.assertEqual(conf.cpu.features[1].name, "ht") |
300 | -+ self.assertEqual(conf.cpu.features.pop().name, "tm2") |
301 | -+ self.assertEqual(conf.cpu.features.pop().name, "ht") |
302 | - |
303 | - def test_get_guest_cpu_config_custom_old(self): |
304 | - def get_lib_version_stub(): |
305 | -diff --git a/nova/tests/virt/libvirt/test_libvirt_config.py b/nova/tests/virt/libvirt/test_libvirt_config.py |
306 | -index 2251bf8..fa65ebc 100644 |
307 | ---- a/nova/tests/virt/libvirt/test_libvirt_config.py |
308 | -+++ b/nova/tests/virt/libvirt/test_libvirt_config.py |
309 | -@@ -235,8 +235,30 @@ class LibvirtConfigCPUTest(LibvirtConfigBaseTest): |
310 | - <arch>x86_64</arch> |
311 | - <model>Penryn</model> |
312 | - <vendor>Intel</vendor> |
313 | -+ <feature name="apic"/> |
314 | - <feature name="mtrr"/> |
315 | -+ </cpu> |
316 | -+ """) |
317 | -+ |
318 | -+ def test_only_uniq_cpu_featues(self): |
319 | -+ obj = config.LibvirtConfigCPU() |
320 | -+ obj.model = "Penryn" |
321 | -+ obj.vendor = "Intel" |
322 | -+ obj.arch = "x86_64" |
323 | -+ |
324 | -+ obj.add_feature(config.LibvirtConfigCPUFeature("mtrr")) |
325 | -+ obj.add_feature(config.LibvirtConfigCPUFeature("apic")) |
326 | -+ obj.add_feature(config.LibvirtConfigCPUFeature("apic")) |
327 | -+ obj.add_feature(config.LibvirtConfigCPUFeature("mtrr")) |
328 | -+ |
329 | -+ xml = obj.to_xml() |
330 | -+ self.assertXmlEqual(xml, """ |
331 | -+ <cpu> |
332 | -+ <arch>x86_64</arch> |
333 | -+ <model>Penryn</model> |
334 | -+ <vendor>Intel</vendor> |
335 | - <feature name="apic"/> |
336 | -+ <feature name="mtrr"/> |
337 | - </cpu> |
338 | - """) |
339 | - |
340 | -@@ -285,8 +307,8 @@ class LibvirtConfigGuestCPUTest(LibvirtConfigBaseTest): |
341 | - <arch>x86_64</arch> |
342 | - <model>Penryn</model> |
343 | - <vendor>Intel</vendor> |
344 | -- <feature name="mtrr" policy="require"/> |
345 | - <feature name="apic" policy="require"/> |
346 | -+ <feature name="mtrr" policy="require"/> |
347 | - </cpu> |
348 | - """) |
349 | - |
350 | -diff --git a/nova/virt/libvirt/config.py b/nova/virt/libvirt/config.py |
351 | -index a931b57..f32e178 100644 |
352 | ---- a/nova/virt/libvirt/config.py |
353 | -+++ b/nova/virt/libvirt/config.py |
354 | -@@ -250,6 +250,15 @@ class LibvirtConfigCPUFeature(LibvirtConfigObject): |
355 | - |
356 | - return ft |
357 | - |
358 | -+ def __eq__(self, obj): |
359 | -+ return obj.name == self.name |
360 | -+ |
361 | -+ def __ne__(self, obj): |
362 | -+ return obj.name != self.name |
363 | -+ |
364 | -+ def __hash__(self): |
365 | -+ return hash(self.name) |
366 | -+ |
367 | - |
368 | - class LibvirtConfigCPU(LibvirtConfigObject): |
369 | - |
370 | -@@ -265,7 +274,7 @@ class LibvirtConfigCPU(LibvirtConfigObject): |
371 | - self.cores = None |
372 | - self.threads = None |
373 | - |
374 | -- self.features = [] |
375 | -+ self.features = set() |
376 | - |
377 | - def parse_dom(self, xmldoc): |
378 | - super(LibvirtConfigCPU, self).parse_dom(xmldoc) |
379 | -@@ -305,13 +314,14 @@ class LibvirtConfigCPU(LibvirtConfigObject): |
380 | - top.set("threads", str(self.threads)) |
381 | - cpu.append(top) |
382 | - |
383 | -- for f in self.features: |
384 | -+ # sorting the features to allow more predictable tests |
385 | -+ for f in sorted(self.features, key=lambda x: x.name): |
386 | - cpu.append(f.format_dom()) |
387 | - |
388 | - return cpu |
389 | - |
390 | - def add_feature(self, feat): |
391 | -- self.features.append(feat) |
392 | -+ self.features.add(feat) |
393 | - |
394 | - |
395 | - class LibvirtConfigGuestCPUFeature(LibvirtConfigCPUFeature): |
396 | -diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py |
397 | -index df367dd..7402363 100644 |
398 | ---- a/nova/virt/libvirt/driver.py |
399 | -+++ b/nova/virt/libvirt/driver.py |
400 | -@@ -2888,7 +2888,7 @@ class LibvirtDriver(driver.ComputeDriver): |
401 | - for hostfeat in hostcpu.features: |
402 | - guestfeat = vconfig.LibvirtConfigGuestCPUFeature(hostfeat.name) |
403 | - guestfeat.policy = "require" |
404 | -- guestcpu.features.append(guestfeat) |
405 | -+ guestcpu.add_feature(guestfeat) |
406 | - |
407 | - return guestcpu |
408 | - |
409 | --- |
410 | -1.9.1 |
411 | - |
412 | |
413 | === modified file 'debian/patches/series' |
414 | --- debian/patches/series 2014-09-30 14:41:00 +0000 |
415 | +++ debian/patches/series 2014-10-03 19:06:52 +0000 |
416 | @@ -1,5 +1,4 @@ |
417 | # Ubuntu specific patches below here. Note these can be dropped eventually. |
418 | -libvirt-convert-cpu-features-attribute-from-list-to-.patch |
419 | fix-requirements.patch |
420 | skip_ipv6_test.patch |
421 | arm-console-patch.patch |