Example #1
0
 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)
Example #2
0
 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))
Example #3
0
 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))
Example #4
0
 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))
Example #5
0
 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)
Example #6
0
 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))
Example #7
0
 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)
Example #8
0
 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']))
Example #9
0
 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']))
Example #10
0
    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])
Example #11
0
    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']))
Example #12
0
    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']))
Example #13
0
 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
Example #14
0
    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)
Example #15
0
    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])
Example #16
0
    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)
Example #17
0
 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))
Example #18
0
 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))
Example #19
0
 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))
Example #20
0
 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))
Example #21
0
 def test_have_image_returns_False_if_image_not_available(self):
     self.assertFalse(
         BootImage.objects.have_image(
             self.nodegroup, **make_boot_image_params()))
Example #22
0
 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)
Example #23
0
 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))
Example #24
0
 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))
Example #25
0
 def test_have_image_returns_False_if_image_not_available(self):
     self.assertFalse(
         BootImage.objects.have_image(self.nodegroup,
                                      **make_boot_image_params()))
Example #26
0
 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))
Example #27
0
 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))