Merge ~ltrager/maas:lp1840181_2.6 into maas:2.6
- Git
- lp:~ltrager/maas
- lp1840181_2.6
- Merge into 2.6
Proposed by
Lee Trager
Status: | Merged |
---|---|
Approved by: | Lee Trager |
Approved revision: | 6049734dac9ae76bd973ea75fb5247fb16d2e7a0 |
Merge reported by: | MAAS Lander |
Merged at revision: | not available |
Proposed branch: | ~ltrager/maas:lp1840181_2.6 |
Merge into: | maas:2.6 |
Diff against target: |
299 lines (+65/-45) 7 files modified
src/maasserver/api/tests/test_machines.py (+4/-0) src/maasserver/api/tests/test_tag.py (+13/-2) src/maasserver/models/signals/scriptresult.py (+17/-15) src/maasserver/models/signals/tests/test_scriptresult.py (+16/-23) src/maasserver/models/tests/test_blockdevice.py (+3/-2) src/maasserver/testing/factory.py (+10/-1) src/maasserver/websockets/handlers/tests/test_machine.py (+2/-2) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Lee Trager (community) | Approve | ||
MAAS Lander | unittests | Pending | |
Review via email: mp+371489@code.launchpad.net |
Commit message
Backport of df8ae4e LP: #1840181 - Use model to get device name for ScriptResult events
Description of the change
To post a comment you must log in.
~ltrager/maas:lp1840181_2.6
updated
- 6049734... by Lee Trager
-
Fix merge conflict
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | diff --git a/src/maasserver/api/tests/test_machines.py b/src/maasserver/api/tests/test_machines.py | |||
2 | index 1ec635c..7849678 100644 | |||
3 | --- a/src/maasserver/api/tests/test_machines.py | |||
4 | +++ b/src/maasserver/api/tests/test_machines.py | |||
5 | @@ -397,6 +397,8 @@ class TestMachinesAPI(APITestCase.ForUser): | |||
6 | 397 | for _ in range(10): | 397 | for _ in range(10): |
7 | 398 | node = factory.make_Node_with_Interface_on_Subnet() | 398 | node = factory.make_Node_with_Interface_on_Subnet() |
8 | 399 | factory.make_VirtualBlockDevice(node=node) | 399 | factory.make_VirtualBlockDevice(node=node) |
9 | 400 | # XXX ltrager 2019-08-16 - Work around for LP:1840491 | ||
10 | 401 | Node.objects.update(boot_disk=None) | ||
11 | 400 | 402 | ||
12 | 401 | num_queries1, response1 = count_queries( | 403 | num_queries1, response1 = count_queries( |
13 | 402 | self.client.get, reverse('machines_handler')) | 404 | self.client.get, reverse('machines_handler')) |
14 | @@ -404,6 +406,8 @@ class TestMachinesAPI(APITestCase.ForUser): | |||
15 | 404 | for _ in range(10): | 406 | for _ in range(10): |
16 | 405 | node = factory.make_Node_with_Interface_on_Subnet() | 407 | node = factory.make_Node_with_Interface_on_Subnet() |
17 | 406 | factory.make_VirtualBlockDevice(node=node) | 408 | factory.make_VirtualBlockDevice(node=node) |
18 | 409 | # XXX ltrager 2019-08-16 - Work around for LP:1840491 | ||
19 | 410 | Node.objects.update(boot_disk=None) | ||
20 | 407 | num_queries2, response2 = count_queries( | 411 | num_queries2, response2 = count_queries( |
21 | 408 | self.client.get, reverse('machines_handler')) | 412 | self.client.get, reverse('machines_handler')) |
22 | 409 | 413 | ||
23 | diff --git a/src/maasserver/api/tests/test_tag.py b/src/maasserver/api/tests/test_tag.py | |||
24 | index 682721c..a489be0 100644 | |||
25 | --- a/src/maasserver/api/tests/test_tag.py | |||
26 | +++ b/src/maasserver/api/tests/test_tag.py | |||
27 | @@ -1,4 +1,4 @@ | |||
29 | 1 | # Copyright 2013-2016 Canonical Ltd. This software is licensed under the | 1 | # Copyright 2013-2019 Canonical Ltd. This software is licensed under the |
30 | 2 | # GNU Affero General Public License version 3 (see the file LICENSE). | 2 | # GNU Affero General Public License version 3 (see the file LICENSE). |
31 | 3 | 3 | ||
32 | 4 | """Tests for the Tags API.""" | 4 | """Tests for the Tags API.""" |
33 | @@ -16,7 +16,10 @@ from apiclient.creds import convert_tuple_to_string | |||
34 | 16 | from django.conf import settings | 16 | from django.conf import settings |
35 | 17 | from maasserver import middleware | 17 | from maasserver import middleware |
36 | 18 | from maasserver.enum import NODE_STATUS | 18 | from maasserver.enum import NODE_STATUS |
38 | 19 | from maasserver.models import Tag | 19 | from maasserver.models import ( |
39 | 20 | Node, | ||
40 | 21 | Tag, | ||
41 | 22 | ) | ||
42 | 20 | from maasserver.models.node import generate_node_system_id | 23 | from maasserver.models.node import generate_node_system_id |
43 | 21 | from maasserver.models.user import ( | 24 | from maasserver.models.user import ( |
44 | 22 | create_auth_token, | 25 | create_auth_token, |
45 | @@ -167,6 +170,8 @@ class TestTagAPI(APITestCase.ForUser): | |||
46 | 167 | for _ in range(3): | 170 | for _ in range(3): |
47 | 168 | machine = factory.make_Node_with_Interface_on_Subnet() | 171 | machine = factory.make_Node_with_Interface_on_Subnet() |
48 | 169 | machine.tags.add(tag) | 172 | machine.tags.add(tag) |
49 | 173 | # XXX ltrager 2019-08-16 - Work around for LP:1840491 | ||
50 | 174 | Node.objects.update(boot_disk=None) | ||
51 | 170 | for _ in range(3): | 175 | for _ in range(3): |
52 | 171 | device = factory.make_Device() | 176 | device = factory.make_Device() |
53 | 172 | device.tags.add(tag) | 177 | device.tags.add(tag) |
54 | @@ -176,6 +181,8 @@ class TestTagAPI(APITestCase.ForUser): | |||
55 | 176 | for _ in range(3): | 181 | for _ in range(3): |
56 | 177 | machine = factory.make_Node_with_Interface_on_Subnet() | 182 | machine = factory.make_Node_with_Interface_on_Subnet() |
57 | 178 | machine.tags.add(tag) | 183 | machine.tags.add(tag) |
58 | 184 | # XXX ltrager 2019-08-16 - Work around for LP:1840491 | ||
59 | 185 | Node.objects.update(boot_disk=None) | ||
60 | 179 | for _ in range(3): | 186 | for _ in range(3): |
61 | 180 | device = factory.make_Device() | 187 | device = factory.make_Device() |
62 | 181 | device.tags.add(tag) | 188 | device.tags.add(tag) |
63 | @@ -234,12 +241,16 @@ class TestTagAPI(APITestCase.ForUser): | |||
64 | 234 | for _ in range(3): | 241 | for _ in range(3): |
65 | 235 | machine = factory.make_Node_with_Interface_on_Subnet() | 242 | machine = factory.make_Node_with_Interface_on_Subnet() |
66 | 236 | machine.tags.add(tag) | 243 | machine.tags.add(tag) |
67 | 244 | # XXX ltrager 2019-08-16 - Work around for LP:1840491 | ||
68 | 245 | Node.objects.update(boot_disk=None) | ||
69 | 237 | num_queries1, response1 = count_queries( | 246 | num_queries1, response1 = count_queries( |
70 | 238 | self.client.get, self.get_tag_uri(tag), {'op': 'machines'}) | 247 | self.client.get, self.get_tag_uri(tag), {'op': 'machines'}) |
71 | 239 | 248 | ||
72 | 240 | for _ in range(3): | 249 | for _ in range(3): |
73 | 241 | machine = factory.make_Node_with_Interface_on_Subnet() | 250 | machine = factory.make_Node_with_Interface_on_Subnet() |
74 | 242 | machine.tags.add(tag) | 251 | machine.tags.add(tag) |
75 | 252 | # XXX ltrager 2019-08-16 - Work around for LP:1840491 | ||
76 | 253 | Node.objects.update(boot_disk=None) | ||
77 | 243 | num_queries2, response2 = count_queries( | 254 | num_queries2, response2 = count_queries( |
78 | 244 | self.client.get, self.get_tag_uri(tag), {'op': 'machines'}) | 255 | self.client.get, self.get_tag_uri(tag), {'op': 'machines'}) |
79 | 245 | 256 | ||
80 | diff --git a/src/maasserver/models/signals/scriptresult.py b/src/maasserver/models/signals/scriptresult.py | |||
81 | index a3295de..4a82e71 100644 | |||
82 | --- a/src/maasserver/models/signals/scriptresult.py | |||
83 | +++ b/src/maasserver/models/signals/scriptresult.py | |||
84 | @@ -22,30 +22,32 @@ from provisioningserver.events import EVENT_TYPES | |||
85 | 22 | signals = SignalsManager() | 22 | signals = SignalsManager() |
86 | 23 | 23 | ||
87 | 24 | 24 | ||
89 | 25 | def emit_script_result_status_transition_event(instance, old_values, **kwargs): | 25 | def emit_script_result_status_transition_event( |
90 | 26 | script_result, old_values, **kwargs): | ||
91 | 26 | """Send a status transition event.""" | 27 | """Send a status transition event.""" |
92 | 27 | script_result = instance | ||
93 | 28 | [old_status] = old_values | 28 | [old_status] = old_values |
94 | 29 | 29 | ||
95 | 30 | if script_result.physical_blockdevice: | ||
96 | 31 | script_name = '%s on %s' % ( | ||
97 | 32 | script_result.name, script_result.physical_blockdevice.name) | ||
98 | 33 | else: | ||
99 | 34 | script_name = script_result.name | ||
100 | 35 | |||
101 | 30 | if (script_result.script_set.result_type == RESULT_TYPE.TESTING and | 36 | if (script_result.script_set.result_type == RESULT_TYPE.TESTING and |
106 | 31 | old_status == SCRIPT_STATUS.PENDING and script_result.status in ( | 37 | old_status == SCRIPT_STATUS.PENDING and ( |
107 | 32 | SCRIPT_STATUS.INSTALLING, SCRIPT_STATUS.RUNNING)): | 38 | script_result.status in [ |
108 | 33 | storage_name = script_result.parameters.get( | 39 | SCRIPT_STATUS.INSTALLING, SCRIPT_STATUS.RUNNING])): |
105 | 34 | 'storage', {}).get('value', {}).get('name') | ||
109 | 35 | Event.objects.create_node_event( | 40 | Event.objects.create_node_event( |
110 | 36 | script_result.script_set.node, EVENT_TYPES.RUNNING_TEST, | 41 | script_result.script_set.node, EVENT_TYPES.RUNNING_TEST, |
118 | 37 | event_description="%s on %s" % ( | 42 | event_description=script_name) |
119 | 38 | script_result.name, storage_name) if storage_name else | 43 | elif script_result.status in [ |
120 | 39 | script_result.name) | 44 | SCRIPT_STATUS.FAILED, SCRIPT_STATUS.FAILED_INSTALLING, |
121 | 40 | 45 | SCRIPT_STATUS.TIMEDOUT, SCRIPT_STATUS.ABORTED]: | |
115 | 41 | elif script_result.status in ( | ||
116 | 42 | SCRIPT_STATUS.FAILED, SCRIPT_STATUS.TIMEDOUT, | ||
117 | 43 | SCRIPT_STATUS.ABORTED): | ||
122 | 44 | Event.objects.create_node_event( | 46 | Event.objects.create_node_event( |
123 | 45 | script_result.script_set.node, | 47 | script_result.script_set.node, |
124 | 46 | EVENT_TYPES.SCRIPT_DID_NOT_COMPLETE, | 48 | EVENT_TYPES.SCRIPT_DID_NOT_COMPLETE, |
125 | 47 | event_description="%s %s" % ( | 49 | event_description="%s %s" % ( |
127 | 48 | script_result.name, SCRIPT_STATUS_CHOICES[ | 50 | script_name, SCRIPT_STATUS_CHOICES[ |
128 | 49 | script_result.status][1].lower())) | 51 | script_result.status][1].lower())) |
129 | 50 | else: | 52 | else: |
130 | 51 | old_status_name = None | 53 | old_status_name = None |
131 | @@ -59,7 +61,7 @@ def emit_script_result_status_transition_event(instance, old_values, **kwargs): | |||
132 | 59 | script_result.script_set.node, | 61 | script_result.script_set.node, |
133 | 60 | EVENT_TYPES.SCRIPT_RESULT_CHANGED_STATUS, | 62 | EVENT_TYPES.SCRIPT_RESULT_CHANGED_STATUS, |
134 | 61 | event_description="%s changed status from '%s' to '%s'" % ( | 63 | event_description="%s changed status from '%s' to '%s'" % ( |
136 | 62 | script_result.name, old_status_name, new_status_name)) | 64 | script_name, old_status_name, new_status_name)) |
137 | 63 | if (CURTIN_INSTALL_LOG == script_result.name and not | 65 | if (CURTIN_INSTALL_LOG == script_result.name and not |
138 | 64 | script_result.script_set.node.netboot): | 66 | script_result.script_set.node.netboot): |
139 | 65 | Event.objects.create_node_event( | 67 | Event.objects.create_node_event( |
140 | diff --git a/src/maasserver/models/signals/tests/test_scriptresult.py b/src/maasserver/models/signals/tests/test_scriptresult.py | |||
141 | index f49e8e6..d538f89 100644 | |||
142 | --- a/src/maasserver/models/signals/tests/test_scriptresult.py | |||
143 | +++ b/src/maasserver/models/signals/tests/test_scriptresult.py | |||
144 | @@ -6,7 +6,6 @@ | |||
145 | 6 | __all__ = [] | 6 | __all__ = [] |
146 | 7 | 7 | ||
147 | 8 | 8 | ||
148 | 9 | import json | ||
149 | 10 | import random | 9 | import random |
150 | 11 | 10 | ||
151 | 12 | from maasserver.models import Event | 11 | from maasserver.models import Event |
152 | @@ -17,6 +16,7 @@ from metadataserver.enum import ( | |||
153 | 17 | RESULT_TYPE, | 16 | RESULT_TYPE, |
154 | 18 | SCRIPT_STATUS, | 17 | SCRIPT_STATUS, |
155 | 19 | SCRIPT_STATUS_CHOICES, | 18 | SCRIPT_STATUS_CHOICES, |
156 | 19 | SCRIPT_TYPE, | ||
157 | 20 | ) | 20 | ) |
158 | 21 | from provisioningserver.events import ( | 21 | from provisioningserver.events import ( |
159 | 22 | EVENT_DETAILS, | 22 | EVENT_DETAILS, |
160 | @@ -26,22 +26,20 @@ from provisioningserver.events import ( | |||
161 | 26 | 26 | ||
162 | 27 | class TestStatusTransitionEvent(MAASServerTestCase): | 27 | class TestStatusTransitionEvent(MAASServerTestCase): |
163 | 28 | 28 | ||
166 | 29 | def test__running_or_installing_emits_event_empty_storage_parameters(self): | 29 | def test__running_or_installing_emits_event(self): |
167 | 30 | 30 | script = factory.make_Script(script_type=SCRIPT_TYPE.TESTING) | |
168 | 31 | script_result = factory.make_ScriptResult( | 31 | script_result = factory.make_ScriptResult( |
171 | 32 | status=SCRIPT_STATUS.PENDING, script_set=factory.make_ScriptSet( | 32 | status=SCRIPT_STATUS.PENDING, script=script) |
172 | 33 | result_type=RESULT_TYPE.TESTING), script=factory.make_Script()) | 33 | |
173 | 34 | script_result.status = random.choice([ | 34 | script_result.status = random.choice([ |
174 | 35 | SCRIPT_STATUS.INSTALLING, SCRIPT_STATUS.RUNNING]) | 35 | SCRIPT_STATUS.INSTALLING, SCRIPT_STATUS.RUNNING]) |
175 | 36 | script_result.parameters = json.dumps({}) | ||
176 | 37 | script_result.save() | 36 | script_result.save() |
177 | 38 | 37 | ||
178 | 39 | latest_event = Event.objects.last() | 38 | latest_event = Event.objects.last() |
179 | 40 | self.assertEqual( | 39 | self.assertEqual( |
180 | 41 | ( | 40 | ( |
181 | 42 | EVENT_TYPES.RUNNING_TEST, | 41 | EVENT_TYPES.RUNNING_TEST, |
184 | 43 | EVENT_DETAILS[ | 42 | EVENT_DETAILS[EVENT_TYPES.RUNNING_TEST].description, |
183 | 44 | EVENT_TYPES.RUNNING_TEST].description, | ||
185 | 45 | script_result.name, | 43 | script_result.name, |
186 | 46 | ), | 44 | ), |
187 | 47 | ( | 45 | ( |
188 | @@ -50,30 +48,25 @@ class TestStatusTransitionEvent(MAASServerTestCase): | |||
189 | 50 | latest_event.description, | 48 | latest_event.description, |
190 | 51 | )) | 49 | )) |
191 | 52 | 50 | ||
194 | 53 | def test__running_or_installing_emits_event_with_storage_parameters(self): | 51 | def test__running_or_installing_emits_event_with_storage_parameter(self): |
195 | 54 | 52 | node = factory.make_Node() | |
196 | 53 | script = factory.make_Script(script_type=SCRIPT_TYPE.TESTING) | ||
197 | 54 | script_set = factory.make_ScriptSet( | ||
198 | 55 | result_type=RESULT_TYPE.TESTING, node=node) | ||
199 | 55 | script_result = factory.make_ScriptResult( | 56 | script_result = factory.make_ScriptResult( |
202 | 56 | status=SCRIPT_STATUS.PENDING, script_set=factory.make_ScriptSet( | 57 | status=SCRIPT_STATUS.PENDING, script=script, script_set=script_set, |
203 | 57 | result_type=RESULT_TYPE.TESTING), script=factory.make_Script()) | 58 | physical_blockdevice=node.boot_disk) |
204 | 59 | |||
205 | 58 | script_result.status = random.choice([ | 60 | script_result.status = random.choice([ |
206 | 59 | SCRIPT_STATUS.INSTALLING, SCRIPT_STATUS.RUNNING]) | 61 | SCRIPT_STATUS.INSTALLING, SCRIPT_STATUS.RUNNING]) |
207 | 60 | script_result.parameters = json.dumps({ | ||
208 | 61 | 'storage': { | ||
209 | 62 | 'value': { | ||
210 | 63 | 'name': factory.make_name('name') | ||
211 | 64 | } | ||
212 | 65 | } | ||
213 | 66 | }) | ||
214 | 67 | script_result.save() | 62 | script_result.save() |
215 | 68 | 63 | ||
216 | 69 | latest_event = Event.objects.last() | 64 | latest_event = Event.objects.last() |
217 | 70 | self.assertEqual( | 65 | self.assertEqual( |
218 | 71 | ( | 66 | ( |
219 | 72 | EVENT_TYPES.RUNNING_TEST, | 67 | EVENT_TYPES.RUNNING_TEST, |
224 | 73 | EVENT_DETAILS[ | 68 | EVENT_DETAILS[EVENT_TYPES.RUNNING_TEST].description, |
225 | 74 | EVENT_TYPES.RUNNING_TEST].description, | 69 | '%s on %s' % (script_result.name, node.boot_disk.name) |
222 | 75 | "%s on %s" % (script_result.name, script_result.parameters.get( | ||
223 | 76 | 'storage').get('value').get('name')), | ||
226 | 77 | ), | 70 | ), |
227 | 78 | ( | 71 | ( |
228 | 79 | latest_event.type.name, | 72 | latest_event.type.name, |
229 | diff --git a/src/maasserver/models/tests/test_blockdevice.py b/src/maasserver/models/tests/test_blockdevice.py | |||
230 | index 7d5ab6a..5a0969f 100644 | |||
231 | --- a/src/maasserver/models/tests/test_blockdevice.py | |||
232 | +++ b/src/maasserver/models/tests/test_blockdevice.py | |||
233 | @@ -1,4 +1,4 @@ | |||
235 | 1 | # Copyright 2014-2016 Canonical Ltd. This software is licensed under the | 1 | # Copyright 2014-2019 Canonical Ltd. This software is licensed under the |
236 | 2 | # GNU Affero General Public License version 3 (see the file LICENSE). | 2 | # GNU Affero General Public License version 3 (see the file LICENSE). |
237 | 3 | 3 | ||
238 | 4 | """Tests for `BlockDevice`.""" | 4 | """Tests for `BlockDevice`.""" |
239 | @@ -338,7 +338,8 @@ class TestBlockDevice(MAASServerTestCase): | |||
240 | 338 | mock_get_effective_filesystem = self.patch_autospec( | 338 | mock_get_effective_filesystem = self.patch_autospec( |
241 | 339 | blockdevice_module, "get_effective_filesystem") | 339 | blockdevice_module, "get_effective_filesystem") |
242 | 340 | mock_get_effective_filesystem.return_value = sentinel.filesystem | 340 | mock_get_effective_filesystem.return_value = sentinel.filesystem |
244 | 341 | block_device = factory.make_BlockDevice() | 341 | node = factory.make_Node(with_boot_disk=False) |
245 | 342 | block_device = factory.make_BlockDevice(node=node) | ||
246 | 342 | self.assertEqual( | 343 | self.assertEqual( |
247 | 343 | sentinel.filesystem, block_device.get_effective_filesystem()) | 344 | sentinel.filesystem, block_device.get_effective_filesystem()) |
248 | 344 | 345 | ||
249 | diff --git a/src/maasserver/testing/factory.py b/src/maasserver/testing/factory.py | |||
250 | index ec327a4..c28f600 100644 | |||
251 | --- a/src/maasserver/testing/factory.py | |||
252 | +++ b/src/maasserver/testing/factory.py | |||
253 | @@ -473,6 +473,8 @@ class Factory(maastesting.factory.Factory): | |||
254 | 473 | self.make_Filesystem( | 473 | self.make_Filesystem( |
255 | 474 | fstype=fstype, partition=root_partition, mount_point='/', | 474 | fstype=fstype, partition=root_partition, mount_point='/', |
256 | 475 | acquired=acquired) | 475 | acquired=acquired) |
257 | 476 | node.boot_disk = root_partition.partition_table.block_device | ||
258 | 477 | node.save() | ||
259 | 476 | 478 | ||
260 | 477 | # Setup the BMC connected to rack controller if a BMC is created. | 479 | # Setup the BMC connected to rack controller if a BMC is created. |
261 | 478 | if bmc_connected_to is not None: | 480 | if bmc_connected_to is not None: |
262 | @@ -803,7 +805,14 @@ class Factory(maastesting.factory.Factory): | |||
263 | 803 | stdout=None, stderr=None, result=None, started=None, ended=None, | 805 | stdout=None, stderr=None, result=None, started=None, ended=None, |
264 | 804 | suppressed=False, **kwargs): | 806 | suppressed=False, **kwargs): |
265 | 805 | if script_set is None: | 807 | if script_set is None: |
267 | 806 | script_set = self.make_ScriptSet() | 808 | if script is not None: |
268 | 809 | script_set_type = ( | ||
269 | 810 | RESULT_TYPE.TESTING | ||
270 | 811 | if script.script_type == SCRIPT_TYPE.TESTING else | ||
271 | 812 | RESULT_TYPE.COMMISSIONING) | ||
272 | 813 | else: | ||
273 | 814 | script_set_type = None | ||
274 | 815 | script_set = self.make_ScriptSet(result_type=script_set_type) | ||
275 | 807 | if script is None and script_name is None: | 816 | if script is None and script_name is None: |
276 | 808 | if script_set.result_type == RESULT_TYPE.COMMISSIONING: | 817 | if script_set.result_type == RESULT_TYPE.COMMISSIONING: |
277 | 809 | script = self.make_Script( | 818 | script = self.make_Script( |
278 | diff --git a/src/maasserver/websockets/handlers/tests/test_machine.py b/src/maasserver/websockets/handlers/tests/test_machine.py | |||
279 | index d73ed3c..5cd28fd 100644 | |||
280 | --- a/src/maasserver/websockets/handlers/tests/test_machine.py | |||
281 | +++ b/src/maasserver/websockets/handlers/tests/test_machine.py | |||
282 | @@ -210,7 +210,7 @@ class TestMachineHandler(MAASServerTestCase): | |||
283 | 210 | "actions": list(compile_node_actions(node, handler.user).keys()), | 210 | "actions": list(compile_node_actions(node, handler.user).keys()), |
284 | 211 | "architecture": node.architecture, | 211 | "architecture": node.architecture, |
285 | 212 | "bmc": node.bmc_id, | 212 | "bmc": node.bmc_id, |
287 | 213 | "boot_disk": node.boot_disk, | 213 | "boot_disk": node.boot_disk.id if node.boot_disk else None, |
288 | 214 | "bios_boot_method": node.bios_boot_method, | 214 | "bios_boot_method": node.bios_boot_method, |
289 | 215 | "commissioning_script_count": commissioning_scripts.count(), | 215 | "commissioning_script_count": commissioning_scripts.count(), |
290 | 216 | "commissioning_status": get_status_from_qs( | 216 | "commissioning_status": get_status_from_qs( |
291 | @@ -618,7 +618,7 @@ class TestMachineHandler(MAASServerTestCase): | |||
292 | 618 | # number means regiond has to do more work slowing down its process | 618 | # number means regiond has to do more work slowing down its process |
293 | 619 | # and slowing down the client waiting for the response. | 619 | # and slowing down the client waiting for the response. |
294 | 620 | self.assertEqual( | 620 | self.assertEqual( |
296 | 621 | queries, 49, | 621 | queries, 50, |
297 | 622 | "Number of queries has changed; make sure this is expected.") | 622 | "Number of queries has changed; make sure this is expected.") |
298 | 623 | 623 | ||
299 | 624 | def test_trigger_update_updates_script_result_cache(self): | 624 | def test_trigger_update_updates_script_result_cache(self): |
Approved in https:/ /code.launchpad .net/~ltrager/ maas/+git/ maas/+merge/ 371387