Merge lp:~jtv/maas/bug-979539 into lp:~maas-committers/maas/trunk

Proposed by Jeroen T. Vermeulen
Status: Merged
Approved by: Jeroen T. Vermeulen
Approved revision: no longer in the source branch.
Merged at revision: 504
Proposed branch: lp:~jtv/maas/bug-979539
Merge into: lp:~maas-committers/maas/trunk
Diff against target: 389 lines (+63/-70)
7 files modified
src/maasserver/enum.py (+7/-9)
src/maasserver/forms.py (+14/-22)
src/maasserver/templates/maasserver/settings.html (+2/-4)
src/maasserver/templates/maasserver/snippets.html (+1/-2)
src/maasserver/tests/test_api.py (+28/-15)
src/maasserver/tests/test_forms.py (+6/-10)
src/maasserver/tests/test_views.py (+5/-8)
To merge this branch: bzr merge lp:~jtv/maas/bug-979539
Reviewer Review Type Date Requested Status
Raphaël Badin (community) Approve
Review via email: mp+103047@code.launchpad.net

Commit message

Restore (mostly) the after-commissioning action.

Description of the change

As discussed with Julian. This re-enables the after-commissioning actions choices in the UI.

As agreed in pre-imp, this disables the two nonexistent options, leaving only one choice.

Jeroen

To post a comment you must log in.
Revision history for this message
Raphaël Badin (rvb) wrote :

Nice! Very straightforward thanks to the XXX messages you've added when this was disabled.

[0]

270 + # The API allows a regular logged-in user to create a Node.

Fwiw I've used the wording "non-admin logged-in user" so far instead of "regular logged-in user".

review: Approve
Revision history for this message
Jeroen T. Vermeulen (jtv) wrote :

OK. I've changed it to say non-admin logged-in user for uniformity.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/maasserver/enum.py'
2--- src/maasserver/enum.py 2012-04-20 15:16:41 +0000
3+++ src/maasserver/enum.py 2012-04-23 10:17:20 +0000
4@@ -19,9 +19,7 @@
5 'NODE_STATUS_CHOICES_DICT',
6 ]
7
8-from collections import (
9- OrderedDict,
10- )
11+from collections import OrderedDict
12
13
14 class NODE_STATUS:
15@@ -77,18 +75,18 @@
16 #:
17 QUEUE = 0
18 #:
19- CHECK = 1
20+ #CHECK = 1
21 #:
22- DEPLOY_12_04 = 2
23+ #DEPLOY_12_04 = 2
24
25
26 NODE_AFTER_COMMISSIONING_ACTION_CHOICES = (
27 (NODE_AFTER_COMMISSIONING_ACTION.QUEUE,
28 "Queue for dynamic allocation to services"),
29- (NODE_AFTER_COMMISSIONING_ACTION.CHECK,
30- "Check compatibility and hold for future decision"),
31- (NODE_AFTER_COMMISSIONING_ACTION.DEPLOY_12_04,
32- "Deploy with Ubuntu 12.04 LTS"),
33+ #(NODE_AFTER_COMMISSIONING_ACTION.CHECK,
34+ # "Check compatibility and hold for future decision"),
35+ #(NODE_AFTER_COMMISSIONING_ACTION.DEPLOY_12_04,
36+ # "Deploy with Ubuntu 12.04 LTS"),
37 )
38
39
40
41=== modified file 'src/maasserver/forms.py'
42--- src/maasserver/forms.py 2012-04-20 15:16:41 +0000
43+++ src/maasserver/forms.py 2012-04-23 10:17:20 +0000
44@@ -47,6 +47,7 @@
45 from maasserver.enum import (
46 ARCHITECTURE,
47 ARCHITECTURE_CHOICES,
48+ NODE_AFTER_COMMISSIONING_ACTION,
49 NODE_AFTER_COMMISSIONING_ACTION_CHOICES,
50 NODE_PERMISSION,
51 NODE_STATUS,
52@@ -86,12 +87,10 @@
53 widget=forms.TextInput(attrs={'readonly': 'readonly'}),
54 required=False)
55
56- # XXX JeroenVermeulen 2012-04-12, bug=979539: re-enable.
57-
58- #after_commissioning_action = forms.TypedChoiceField(
59- # label="After commissioning",
60- # choices=NODE_AFTER_COMMISSIONING_ACTION_CHOICES, required=False,
61- # empty_value=NODE_AFTER_COMMISSIONING_ACTION.DEFAULT)
62+ after_commissioning_action = forms.TypedChoiceField(
63+ label="After commissioning",
64+ choices=NODE_AFTER_COMMISSIONING_ACTION_CHOICES, required=False,
65+ empty_value=NODE_AFTER_COMMISSIONING_ACTION.DEFAULT)
66
67 architecture = forms.ChoiceField(
68 choices=ARCHITECTURE_CHOICES, required=True,
69@@ -103,8 +102,7 @@
70 fields = (
71 'hostname',
72 'system_id',
73- # XXX JeroenVermeulen 2012-04-12, bug=979539: re-enable.
74- #'after_commissioning_action',
75+ 'after_commissioning_action',
76 'architecture',
77 'power_type',
78 )
79@@ -112,35 +110,29 @@
80
81 class UINodeEditForm(ModelForm):
82
83- # XXX JeroenVermeulen 2012-04-12, bug=979539: re-enable.
84-
85- #after_commissioning_action = forms.ChoiceField(
86- # label="After commissioning",
87- # choices=NODE_AFTER_COMMISSIONING_ACTION_CHOICES)
88+ after_commissioning_action = forms.ChoiceField(
89+ label="After commissioning",
90+ choices=NODE_AFTER_COMMISSIONING_ACTION_CHOICES)
91
92 class Meta:
93 model = Node
94 fields = (
95 'hostname',
96- # XXX JeroenVermeulen 2012-04-12, bug=979539: re-enable.
97- #'after_commissioning_action',
98+ 'after_commissioning_action',
99 )
100
101
102 class UIAdminNodeEditForm(ModelForm):
103
104- # XXX JeroenVermeulen 2012-04-12, bug=979539: re-enable.
105-
106- #after_commissioning_action = forms.ChoiceField(
107- # label="After commissioning",
108- # choices=NODE_AFTER_COMMISSIONING_ACTION_CHOICES)
109+ after_commissioning_action = forms.ChoiceField(
110+ label="After commissioning",
111+ choices=NODE_AFTER_COMMISSIONING_ACTION_CHOICES)
112
113 class Meta:
114 model = Node
115 fields = (
116 'hostname',
117- # XXX JeroenVermeulen 2012-04-12, bug=979539: re-enable.
118- #'after_commissioning_action',
119+ 'after_commissioning_action',
120 'power_type',
121 )
122
123
124=== modified file 'src/maasserver/templates/maasserver/settings.html'
125--- src/maasserver/templates/maasserver/settings.html 2012-04-16 05:48:10 +0000
126+++ src/maasserver/templates/maasserver/settings.html 2012-04-23 10:17:20 +0000
127@@ -68,8 +68,7 @@
128 </a>
129 <div class="clear"></div>
130 </div>
131-<!-- XXX JeroenVermeulen 2012-04-12, bug=979539: re-enable. -->
132- <div id="commissioning" class="hidden block size7 first">
133+ <div id="commissioning" class="block size7 first">
134 <h2>Commissioning</h2>
135 <form action="{% url "settings" %}" method="post">
136 <ul>
137@@ -81,8 +80,7 @@
138 <input type="submit" class="button right" value="Save" />
139 </form>
140 </div>
141-<!-- XXX JeroenVermeulen 2012-04-12, bug=979539: re-enable. -->
142- <div id="ubuntu" class="hidden block size7 first">
143+ <div id="ubuntu" class="block size7 first">
144 <h2>Ubuntu</h2>
145 <form action="{% url "settings" %}" method="post">
146 <ul>
147
148=== modified file 'src/maasserver/templates/maasserver/snippets.html'
149--- src/maasserver/templates/maasserver/snippets.html 2012-04-12 04:21:18 +0000
150+++ src/maasserver/templates/maasserver/snippets.html 2012-04-23 10:17:20 +0000
151@@ -21,8 +21,7 @@
152 <div class="field-help">Default is MAC-based, e.g. "node-aabbccddeeff"
153 </div>
154 </p>
155-<!-- XXX JeroenVermeulen 2012-04-12, bug=979539: re-enable. -->
156- <p class="hidden">
157+ <p>
158 <label for="id_after_commissioning_action">After commissioning</label>
159 {{ node_form.after_commissioning_action }}
160 </p>
161
162=== modified file 'src/maasserver/tests/test_api.py'
163--- src/maasserver/tests/test_api.py 2012-04-20 15:16:41 +0000
164+++ src/maasserver/tests/test_api.py 2012-04-23 10:17:20 +0000
165@@ -30,6 +30,7 @@
166 )
167 from maasserver.enum import (
168 ARCHITECTURE_CHOICES,
169+ NODE_AFTER_COMMISSIONING_ACTION,
170 NODE_STATUS,
171 NODE_STATUS_CHOICES_DICT,
172 )
173@@ -113,7 +114,8 @@
174 'op': 'new',
175 'hostname': 'diane',
176 'architecture': architecture,
177- 'after_commissioning_action': '2',
178+ 'after_commissioning_action':
179+ NODE_AFTER_COMMISSIONING_ACTION.DEFAULT,
180 'mac_addresses': ['aa:bb:cc:dd:ee:ff', '22:bb:cc:dd:ee:ff'],
181 })
182 parsed_result = json.loads(response.content)
183@@ -123,8 +125,6 @@
184 self.assertEqual('diane', parsed_result['hostname'])
185 self.assertNotEqual(0, len(parsed_result.get('system_id')))
186 [diane] = Node.objects.filter(hostname='diane')
187- # XXX JeroenVermeulen 2012-04-12, bug=979539: re-enable.
188- #self.assertEqual(2, diane.after_commissioning_action)
189 self.assertEqual(architecture, diane.architecture)
190
191 def test_POST_new_power_type_defaults_to_asking_config(self):
192@@ -162,7 +162,8 @@
193 'op': 'new',
194 'hostname': 'diane',
195 'architecture': architecture,
196- 'after_commissioning_action': '2',
197+ 'after_commissioning_action':
198+ NODE_AFTER_COMMISSIONING_ACTION.DEFAULT,
199 'mac_addresses': ['aa:bb:cc:dd:ee:ff', '22:bb:cc:dd:ee:ff'],
200 })
201 [diane] = Node.objects.filter(hostname='diane')
202@@ -303,7 +304,8 @@
203 'op': 'new',
204 'hostname': factory.getRandomString(),
205 'architecture': factory.getRandomChoice(ARCHITECTURE_CHOICES),
206- 'after_commissioning_action': '2',
207+ 'after_commissioning_action':
208+ NODE_AFTER_COMMISSIONING_ACTION.DEFAULT,
209 'mac_addresses': ['aa:bb:cc:dd:ee:ff'],
210 })
211 self.assertEqual(httplib.OK, response.status_code)
212@@ -335,7 +337,8 @@
213 'op': 'new',
214 'architecture': factory.getRandomChoice(ARCHITECTURE_CHOICES),
215 'hostname': factory.getRandomString(),
216- 'after_commissioning_action': '2',
217+ 'after_commissioning_action':
218+ NODE_AFTER_COMMISSIONING_ACTION.DEFAULT,
219 'mac_addresses': ['aa:bb:cc:dd:ee:ff', '22:bb:cc:dd:ee:ff'],
220 })
221 parsed_result = json.loads(response.content)
222@@ -372,14 +375,19 @@
223 'op': 'new',
224 'hostname': factory.getRandomString(),
225 'architecture': factory.getRandomChoice(ARCHITECTURE_CHOICES),
226- 'after_commissioning_action': '2',
227+ 'after_commissioning_action':
228+ NODE_AFTER_COMMISSIONING_ACTION.DEFAULT,
229 'mac_addresses': ['aa:bb:cc:dd:ee:ff', '22:bb:cc:dd:ee:ff'],
230 })
231 parsed_result = json.loads(response.content)
232 self.assertItemsEqual(
233 [
234- 'hostname', 'system_id', 'macaddress_set', 'architecture',
235- 'status', 'resource_uri',
236+ 'hostname',
237+ 'system_id',
238+ 'macaddress_set',
239+ 'architecture',
240+ 'status',
241+ 'resource_uri',
242 ],
243 list(parsed_result))
244
245@@ -398,7 +406,8 @@
246 'op': 'new',
247 'hostname': factory.getRandomString(),
248 'architecture': factory.getRandomChoice(ARCHITECTURE_CHOICES),
249- 'after_commissioning_action': '2',
250+ 'after_commissioning_action':
251+ NODE_AFTER_COMMISSIONING_ACTION.DEFAULT,
252 'mac_addresses': ['aa:bb:cc:dd:ee:ff'],
253 })
254 self.assertEqual(httplib.OK, response.status_code)
255@@ -414,7 +423,8 @@
256 'op': 'new',
257 'hostname': factory.getRandomString(),
258 'architecture': factory.getRandomChoice(ARCHITECTURE_CHOICES),
259- 'after_commissioning_action': '2',
260+ 'after_commissioning_action':
261+ NODE_AFTER_COMMISSIONING_ACTION.DEFAULT,
262 'mac_addresses': ['aa:bb:cc:dd:ee:ff', '22:bb:cc:dd:ee:ff'],
263 })
264 parsed_result = json.loads(response.content)
265@@ -843,7 +853,7 @@
266 """Tests for /api/1.0/nodes/."""
267
268 def test_POST_new_creates_node(self):
269- # The API allows a Node to be created, even as a logged-in user.
270+ # The API allows a non-admin logged-in user to create a Node.
271 architecture = factory.getRandomChoice(ARCHITECTURE_CHOICES)
272 response = self.client.post(
273 self.get_uri('nodes/'),
274@@ -851,7 +861,8 @@
275 'op': 'new',
276 'hostname': factory.getRandomString(),
277 'architecture': architecture,
278- 'after_commissioning_action': '2',
279+ 'after_commissioning_action':
280+ NODE_AFTER_COMMISSIONING_ACTION.DEFAULT,
281 'mac_addresses': ['aa:bb:cc:dd:ee:ff', '22:bb:cc:dd:ee:ff'],
282 })
283
284@@ -866,7 +877,8 @@
285 'op': 'new',
286 'hostname': factory.getRandomString(),
287 'architecture': factory.getRandomChoice(ARCHITECTURE_CHOICES),
288- 'after_commissioning_action': '2',
289+ 'after_commissioning_action':
290+ NODE_AFTER_COMMISSIONING_ACTION.DEFAULT,
291 'mac_addresses': ['aa:bb:cc:dd:ee:ff'],
292 })
293 self.assertEqual(httplib.OK, response.status_code)
294@@ -1734,7 +1746,8 @@
295 'op': 'new',
296 'hostname': hostname,
297 'architecture': architecture,
298- 'after_commissioning_action': '2',
299+ 'after_commissioning_action':
300+ NODE_AFTER_COMMISSIONING_ACTION.DEFAULT,
301 'mac_addresses': ['aa:bb:cc:dd:ee:ff'],
302 })
303
304
305=== modified file 'src/maasserver/tests/test_forms.py'
306--- src/maasserver/tests/test_forms.py 2012-04-20 15:16:41 +0000
307+++ src/maasserver/tests/test_forms.py 2012-04-23 10:17:20 +0000
308@@ -189,8 +189,7 @@
309 self.assertEqual(
310 [
311 'hostname',
312- # XXX JeroenVermeulen 2012-04-12, bug=979539: re-enable.
313- #'after_commissioning_action',
314+ 'after_commissioning_action',
315 ], list(form.fields))
316
317 def test_UINodeEditForm_changes_node(self):
318@@ -208,9 +207,8 @@
319 form.save()
320
321 self.assertEqual(hostname, node.hostname)
322- # XXX JeroenVermeulen 2012-04-12, bug=979539: re-enable.
323- #self.assertEqual(
324- # after_commissioning_action, node.after_commissioning_action)
325+ self.assertEqual(
326+ after_commissioning_action, node.after_commissioning_action)
327
328 def test_UIAdminNodeEditForm_contains_limited_set_of_fields(self):
329 form = UIAdminNodeEditForm()
330@@ -218,8 +216,7 @@
331 self.assertEqual(
332 [
333 'hostname',
334- # XXX JeroenVermeulen 2012-04-12, bug=979539: re-enable.
335- #'after_commissioning_action',
336+ 'after_commissioning_action',
337 'power_type',
338 ],
339 list(form.fields))
340@@ -240,9 +237,8 @@
341 form.save()
342
343 self.assertEqual(hostname, node.hostname)
344- # XXX JeroenVermeulen 2012-04-12, bug=979539: re-enable.
345- #self.assertEqual(
346- # after_commissioning_action, node.after_commissioning_action)
347+ self.assertEqual(
348+ after_commissioning_action, node.after_commissioning_action)
349 self.assertEqual(power_type, node.power_type)
350
351
352
353=== modified file 'src/maasserver/tests/test_views.py'
354--- src/maasserver/tests/test_views.py 2012-04-23 09:11:50 +0000
355+++ src/maasserver/tests/test_views.py 2012-04-23 10:17:20 +0000
356@@ -148,8 +148,7 @@
357 self.assertTemplateExistsAndContains(
358 response.content, '#add-node', 'input#id_hostname')
359
360- # XXX JeroenVermeulen 2012-04-12, bug=979539: re-enable.
361- def t_e_s_t_after_commissioning_action_snippet(self):
362+ def test_after_commissioning_action_snippet(self):
363 response = self.client.get('/')
364 self.assertTemplateExistsAndContains(
365 response.content, '#add-node',
366@@ -719,9 +718,8 @@
367 node_edit_link = reverse('node-edit', args=[node.system_id])
368 params = {
369 'hostname': factory.getRandomString(),
370- # XXX JeroenVermeulen 2012-04-12, bug=979539: re-enable.
371- #'after_commissioning_action': factory.getRandomEnum(
372- # NODE_AFTER_COMMISSIONING_ACTION),
373+ 'after_commissioning_action': factory.getRandomEnum(
374+ NODE_AFTER_COMMISSIONING_ACTION),
375 }
376 response = self.client.post(node_edit_link, params)
377
378@@ -866,9 +864,8 @@
379 node_edit_link = reverse('node-edit', args=[node.system_id])
380 params = {
381 'hostname': factory.getRandomString(),
382- # XXX JeroenVermeulen 2012-04-12, bug=979539: re-enable.
383- #'after_commissioning_action': factory.getRandomEnum(
384- # NODE_AFTER_COMMISSIONING_ACTION),
385+ 'after_commissioning_action': factory.getRandomEnum(
386+ NODE_AFTER_COMMISSIONING_ACTION),
387 'power_type': factory.getRandomChoice(POWER_TYPE_CHOICES),
388 }
389 response = self.client.post(node_edit_link, params)