190
180
Config.objects.get_config('kernel_opts'))
192
def test_settings_contains_form_to_accept_all_nodegroups(self):
193
self.client_log_in(as_admin=True)
194
factory.make_node_group(status=NODEGROUP_STATUS.PENDING),
195
response = self.client.get(reverse('settings'))
196
doc = fromstring(response.content)
197
forms = doc.cssselect('form#accept_all_pending_nodegroups')
198
self.assertEqual(1, len(forms))
200
def test_settings_contains_form_to_reject_all_nodegroups(self):
201
self.client_log_in(as_admin=True)
202
factory.make_node_group(status=NODEGROUP_STATUS.PENDING),
203
response = self.client.get(reverse('settings'))
204
doc = fromstring(response.content)
205
forms = doc.cssselect('form#reject_all_pending_nodegroups')
206
self.assertEqual(1, len(forms))
208
def test_settings_accepts_all_pending_nodegroups_POST(self):
209
self.client_log_in(as_admin=True)
211
factory.make_node_group(status=NODEGROUP_STATUS.PENDING),
212
factory.make_node_group(status=NODEGROUP_STATUS.PENDING),
214
response = self.client.post(
215
reverse('settings'), {'mass_accept_submit': 1})
216
self.assertEqual(httplib.FOUND, response.status_code)
218
[reload_object(nodegroup).status for nodegroup in nodegroups],
219
[NODEGROUP_STATUS.ACCEPTED] * 2)
221
def test_settings_rejects_all_pending_nodegroups_POST(self):
222
self.client_log_in(as_admin=True)
224
factory.make_node_group(status=NODEGROUP_STATUS.PENDING),
225
factory.make_node_group(status=NODEGROUP_STATUS.PENDING),
227
response = self.client.post(
228
reverse('settings'), {'mass_reject_submit': 1})
229
self.assertEqual(httplib.FOUND, response.status_code)
231
[reload_object(nodegroup).status for nodegroup in nodegroups],
232
[NODEGROUP_STATUS.REJECTED] * 2)
234
def test_settings_import_boot_images_calls_tasks(self):
235
self.client_log_in(as_admin=True)
236
recorder = self.patch(nodegroup_module, 'import_boot_images')
237
accepted_nodegroups = [
238
factory.make_node_group(status=NODEGROUP_STATUS.ACCEPTED),
239
factory.make_node_group(status=NODEGROUP_STATUS.ACCEPTED),
241
response = self.client.post(
242
reverse('settings'), {'import_all_boot_images': 1})
243
self.assertEqual(httplib.FOUND, response.status_code)
245
call(queue=nodegroup.work_queue, kwargs=ANY)
246
for nodegroup in accepted_nodegroups
248
self.assertItemsEqual(calls, recorder.apply_async.call_args_list)
250
def test_cluster_no_boot_images_message_displayed_if_no_boot_images(self):
251
self.client_log_in(as_admin=True)
252
nodegroup = factory.make_node_group(
253
status=NODEGROUP_STATUS.ACCEPTED)
254
response = self.client.get(reverse('settings'))
255
document = fromstring(response.content)
256
nodegroup_row = document.xpath("//tr[@id='%s']" % nodegroup.uuid)[0]
257
self.assertIn('no boot images', nodegroup_row.text_content())
260
183
class NonAdminSettingsTest(MAASServerTestCase):