Merge lp:~allenap/maas/discover-storage-capacity--bug-1387380--1.7 into lp:maas/1.7

Proposed by Gavin Panella
Status: Merged
Approved by: Gavin Panella
Approved revision: no longer in the source branch.
Merged at revision: 3289
Proposed branch: lp:~allenap/maas/discover-storage-capacity--bug-1387380--1.7
Merge into: lp:maas/1.7
Diff against target: 62 lines (+38/-2)
2 files modified
src/metadataserver/models/commissioningscript.py (+8/-2)
src/metadataserver/models/tests/test_noderesults.py (+30/-0)
To merge this branch: bzr merge lp:~allenap/maas/discover-storage-capacity--bug-1387380--1.7
Reviewer Review Type Date Requested Status
Christian Reis (community) Approve
Review via email: mp+240109@code.launchpad.net

Commit message

Backport of r3316 from lp:maas: Updated XPath expression for discovering storage capacity from lshw XML.

The lshw format has evolved. The new expression attempts to cope with both old and new formats.

To post a comment you must log in.
Revision history for this message
Christian Reis (kiko) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/metadataserver/models/commissioningscript.py'
2--- src/metadataserver/models/commissioningscript.py 2014-10-22 12:29:54 +0000
3+++ src/metadataserver/models/commissioningscript.py 2014-10-30 12:45:49 +0000
4@@ -139,9 +139,15 @@
5 div 1024 div 1024
6 """
7
8+# Select <node class="disk"><size units="bytes">1234</size></node>, or,
9+# failing that, <node class="volume"><size units="bytes">1234</size></node>
10+# that's not nested within a <node class="disk"></node>.
11 _xpath_storage_bytes = """\
12- sum(//node[@class='volume']/size[@units='bytes'])
13- div 1024 div 1024
14+ (
15+ //node[@class='disk'] |
16+ //node[not(ancestor::node[@class='disk']) and @class='volume']
17+ )
18+ /size[@units='bytes'] div 1024 div 1024
19 """
20
21
22
23=== modified file 'src/metadataserver/models/tests/test_noderesults.py'
24--- src/metadataserver/models/tests/test_noderesults.py 2014-10-22 12:29:54 +0000
25+++ src/metadataserver/models/tests/test_noderesults.py 2014-10-30 12:45:49 +0000
26@@ -620,6 +620,36 @@
27 node = reload_object(node)
28 self.assertEqual(764435, node.storage)
29
30+ def test_hardware_updates_storage_1387380_bad(self):
31+ # Hardware data from bug 1387380 (the "bad" node).
32+ node = factory.make_Node()
33+ xmlbytes = dedent("""\
34+ <node id="disk" claimed="true"
35+ class="disk" handle="SCSI:00:00:00:00">
36+ <size units="bytes">120034123776</size>
37+ </node>
38+ """).encode("utf-8")
39+ update_hardware_details(node, xmlbytes, 0)
40+ node = reload_object(node)
41+ self.assertEqual(114473, node.storage)
42+
43+ def test_hardware_updates_storage_1387380_good(self):
44+ # Hardware data from bug 1387380 (the "good" node).
45+ node = factory.make_Node()
46+ xmlbytes = dedent("""\
47+ <node id="disk" claimed="true"
48+ class="disk" handle="SCSI:00:00:00:00">
49+ <size units="bytes">120034123776</size>
50+ <node id="volume" claimed="true" class="volume" handle="">
51+ <size units="bytes">120033075200</size>
52+ <capacity>120033075200</capacity>
53+ </node>
54+ </node>
55+ """).encode("utf-8")
56+ update_hardware_details(node, xmlbytes, 0)
57+ node = reload_object(node)
58+ self.assertEqual(114473, node.storage)
59+
60 def test_hardware_updates_ignores_empty_tags(self):
61 # Tags with empty definitions are ignored when
62 # update_hardware_details gets called.

Subscribers

People subscribed via source and target branches

to all changes: