def test_does_nothing_without_credentials(self): self.set_maas_url() self.patch( tftppath, 'list_boot_images', Mock(return_value=make_boot_image_params())) boot_images.report_to_server() self.assertItemsEqual([], tftppath.list_boot_images.call_args_list)
def test_report_boot_images_ignores_unknown_image_properties(self): nodegroup = NodeGroup.objects.ensure_master() image = make_boot_image_params() image['nonesuch'] = factory.make_name('nonesuch'), client = make_worker_client(nodegroup) response = self.report_images(nodegroup, [image], client=client) self.assertEqual((httplib.OK, "OK"), (response.status_code, response.content))
def test_report_boot_images_ignores_unknown_image_properties(self): nodegroup = NodeGroup.objects.ensure_master() image = make_boot_image_params() image['nonesuch'] = factory.make_name('nonesuch'), client = make_worker_client(nodegroup) response = self.report_images(nodegroup, [image], client=client) self.assertEqual( (httplib.OK, "OK"), (response.status_code, response.content))
def test_report_boot_images_stores_images(self): nodegroup = NodeGroup.objects.ensure_master() image = make_boot_image_params() client = make_worker_client(nodegroup) response = self.report_images(nodegroup, [image], client=client) self.assertEqual((httplib.OK, "OK"), (response.status_code, response.content)) self.assertTrue( BootImage.objects.have_image(nodegroup=nodegroup, **image))
def test_report_boot_images_ignores_non_accepted_groups(self): nodegroup = factory.make_node_group(status=NODEGROUP_STATUS.ACCEPTED) factory.make_node_group(status=NODEGROUP_STATUS.PENDING) factory.make_node_group(status=NODEGROUP_STATUS.REJECTED) recorder = self.patch(api, 'register_persistent_error') client = make_worker_client(nodegroup) image = make_boot_image_params() response = self.report_images(nodegroup, [image], client=client) self.assertEqual(httplib.OK, response.status_code) self.assertEqual(0, recorder.call_count)
def test_report_boot_images_stores_images(self): nodegroup = NodeGroup.objects.ensure_master() image = make_boot_image_params() client = make_worker_client(nodegroup) response = self.report_images(nodegroup, [image], client=client) self.assertEqual( (httplib.OK, "OK"), (response.status_code, response.content)) self.assertTrue( BootImage.objects.have_image(nodegroup=nodegroup, **image))
def test_report_boot_images_ignores_non_accepted_groups(self): nodegroup = factory.make_node_group(status=NODEGROUP_STATUS.ACCEPTED) factory.make_node_group(status=NODEGROUP_STATUS.PENDING) factory.make_node_group(status=NODEGROUP_STATUS.REJECTED) recorder = self.patch(api, 'register_persistent_error') client = make_worker_client(nodegroup) image = make_boot_image_params() response = self.report_images(nodegroup, [image], client=client) self.assertEqual(httplib.OK, response.status_code) self.assertEqual(0, recorder.call_count)
def test_sends_boot_images_to_server(self): self.set_maas_url() self.set_api_credentials() image = make_boot_image_params() self.patch(tftppath, 'list_boot_images', Mock(return_value=[image])) get_cluster_uuid = self.patch(boot_images, "get_cluster_uuid") get_cluster_uuid.return_value = sentinel.uuid self.patch(MAASClient, 'post') boot_images.report_to_server() args, kwargs = MAASClient.post.call_args self.assertIs(sentinel.uuid, kwargs["nodegroup"]) self.assertItemsEqual([image], json.loads(kwargs['images']))
def test_sends_boot_images_to_server(self): self.set_maas_url() self.set_api_credentials() image = make_boot_image_params() self.patch(tftppath, 'list_boot_images', Mock(return_value=[image])) get_cluster_uuid = self.patch(boot_images, "get_cluster_uuid") get_cluster_uuid.return_value = sentinel.uuid self.patch(MAASClient, 'post') boot_images.report_to_server() args, kwargs = MAASClient.post.call_args self.assertIs(sentinel.uuid, kwargs["nodegroup"]) self.assertItemsEqual([image], json.loads(kwargs['images']))
def test_report_boot_images_warns_if_any_nodegroup_has_no_images(self): nodegroup = NodeGroup.objects.ensure_master() # Second nodegroup with no images. factory.make_node_group(status=NODEGROUP_STATUS.ACCEPTED) recorder = self.patch(api, 'register_persistent_error') client = make_worker_client(nodegroup) image = make_boot_image_params() response = self.report_images(nodegroup, [image], client=client) self.assertEqual((httplib.OK, "OK"), (response.status_code, response.content)) self.assertIn(COMPONENT.IMPORT_PXE_FILES, [args[0][0] for args in recorder.call_args_list])
def test_sends_boot_images_to_server(self): self.useFixture(ConfigFixture({'tftp': {'root': self.make_dir()}})) self.set_maas_url() auth.record_api_credentials(':'.join(make_api_credentials())) image = make_boot_image_params() self.patch(tftppath, 'list_boot_images', Mock(return_value=[image])) self.patch(boot_images, "get_cluster_uuid") self.patch(MAASClient, 'post') report_boot_images.delay() args, kwargs = MAASClient.post.call_args self.assertItemsEqual([image], json.loads(kwargs['images']))
def test_sends_boot_images_to_server(self): self.useFixture(ConfigFixture({'tftp': {'root': self.make_dir()}})) self.set_maas_url() auth.record_api_credentials(':'.join(make_api_credentials())) image = make_boot_image_params() self.patch(tftppath, 'list_boot_images', Mock(return_value=[image])) self.patch(boot_images, "get_cluster_uuid") self.patch(MAASClient, 'post') report_boot_images.delay() args, kwargs = MAASClient.post.call_args self.assertItemsEqual([image], json.loads(kwargs['images']))
def make_all_boot_images( self, return_purpose, subarch=None, subarches=None): params = make_boot_image_params() images = [] return_image = None all_purposes = ["commissioning", "xinstall", "install", "ephemeral"] for purpose in all_purposes: image = self.make_boot_image( params, purpose, subarch=subarch, subarches=subarches) if purpose == return_purpose: return_image = image images.append(image) return images, return_image
def test_report_boot_images_removes_warning_if_images_found(self): self.patch(api, 'register_persistent_error') self.patch(api, 'discard_persistent_error') nodegroup = factory.make_node_group() image = make_boot_image_params() client = make_worker_client(nodegroup) response = self.report_images(nodegroup, [image], client=client) self.assertEqual((httplib.OK, "OK"), (response.status_code, response.content)) self.assertItemsEqual([], api.register_persistent_error.call_args_list) api.discard_persistent_error.assert_called_once_with( COMPONENT.IMPORT_PXE_FILES)
def test_report_boot_images_warns_if_any_nodegroup_has_no_images(self): nodegroup = NodeGroup.objects.ensure_master() # Second nodegroup with no images. factory.make_node_group(status=NODEGROUP_STATUS.ACCEPTED) recorder = self.patch(api, 'register_persistent_error') client = make_worker_client(nodegroup) image = make_boot_image_params() response = self.report_images(nodegroup, [image], client=client) self.assertEqual( (httplib.OK, "OK"), (response.status_code, response.content)) self.assertIn( COMPONENT.IMPORT_PXE_FILES, [args[0][0] for args in recorder.call_args_list])
def test_report_boot_images_removes_warning_if_images_found(self): self.patch(api, 'register_persistent_error') self.patch(api, 'discard_persistent_error') nodegroup = factory.make_node_group() image = make_boot_image_params() client = make_worker_client(nodegroup) response = self.report_images(nodegroup, [image], client=client) self.assertEqual( (httplib.OK, "OK"), (response.status_code, response.content)) self.assertItemsEqual( [], api.register_persistent_error.call_args_list) api.discard_persistent_error.assert_called_once_with( COMPONENT.IMPORT_PXE_FILES)
def test_register_image_leaves_existing_image_intact(self): params = make_boot_image_params() factory.make_boot_image(nodegroup=self.nodegroup, **params) BootImage.objects.register_image(self.nodegroup, **params) self.assertTrue(BootImage.objects.have_image(self.nodegroup, **params))
def test_register_image_leaves_existing_image_intact(self): params = make_boot_image_params() factory.make_boot_image(nodegroup=self.nodegroup, **params) BootImage.objects.register_image(self.nodegroup, **params) self.assertTrue( BootImage.objects.have_image(self.nodegroup, **params))
def test_register_image_registers_new_image(self): params = make_boot_image_params() BootImage.objects.register_image(self.nodegroup, **params) self.assertTrue( BootImage.objects.have_image(self.nodegroup, **params))
def test_have_image_returns_True_if_image_available(self): params = make_boot_image_params() factory.make_boot_image(nodegroup=self.nodegroup, **params) self.assertTrue( BootImage.objects.have_image(self.nodegroup, **params))
def test_have_image_returns_False_if_image_not_available(self): self.assertFalse( BootImage.objects.have_image( self.nodegroup, **make_boot_image_params()))
def test_does_nothing_without_credentials(self): self.set_maas_url() self.patch(tftppath, 'list_boot_images', Mock(return_value=make_boot_image_params())) boot_images.report_to_server() self.assertItemsEqual([], tftppath.list_boot_images.call_args_list)
def test_list_boot_images_enumerates_boot_images(self): images = [make_boot_image_params() for counter in range(3)] for image in images: self.make_image_dir(image, self.tftproot) self.assertItemsEqual(images, list_boot_images(self.tftproot))
def test_list_boot_images_finds_boot_image(self): image = make_boot_image_params() self.make_image_dir(image, self.tftproot) self.assertItemsEqual([image], list_boot_images(self.tftproot))
def test_have_image_returns_False_if_image_not_available(self): self.assertFalse( BootImage.objects.have_image(self.nodegroup, **make_boot_image_params()))
def test_register_image_registers_new_image(self): params = make_boot_image_params() BootImage.objects.register_image(self.nodegroup, **params) self.assertTrue(BootImage.objects.have_image(self.nodegroup, **params))
def test_have_image_returns_True_if_image_available(self): params = make_boot_image_params() factory.make_boot_image(nodegroup=self.nodegroup, **params) self.assertTrue(BootImage.objects.have_image(self.nodegroup, **params))