Esempio n. 1
0
    def test_adds_release_codename_title_and_support_eol(self):
        source = factory.make_BootSource(keyring_data=b"1234")
        os = factory.make_name("os")
        release = factory.make_name("release")
        release_codename = factory.make_name("codename")
        release_title = factory.make_name("title")
        support_eol = factory.make_date().strftime("%Y-%m-%d")
        image_spec = make_image_spec(os=os, release=release)
        image_mapping = BootImageMapping()
        image_mapping.setdefault(
            image_spec,
            {
                "release_codename": release_codename,
                "release_title": release_title,
                "support_eol": support_eol,
            },
        )
        mock_download = self.patch(bootsources,
                                   "download_all_image_descriptions")
        mock_download.return_value = image_mapping

        cache_boot_sources()
        cached = BootSourceCache.objects.filter(boot_source=source).first()
        self.assertEqual(release_codename, cached.release_codename)
        self.assertEqual(release_title, cached.release_title)
        self.assertEqual(support_eol, cached.support_eol.strftime("%Y-%m-%d"))
Esempio n. 2
0
    def test_adds_title_with_gadget_to_extra(self):
        source = factory.make_BootSource(keyring_data=b"1234")
        os = factory.make_name("os")
        release = factory.make_name("release")
        os_title = factory.make_name("os_title")
        release_title = factory.make_name("release_title")
        gadget_title = factory.make_name("gadget_title")
        image_spec = make_image_spec(os=os, release=release)
        image_mapping = BootImageMapping()
        image_mapping.setdefault(
            image_spec,
            {
                "os_title": os_title,
                "release_title": release_title,
                "gadget_title": gadget_title,
            },
        )
        mock_download = self.patch(bootsources,
                                   "download_all_image_descriptions")
        mock_download.return_value = image_mapping

        cache_boot_sources()
        cached = BootSourceCache.objects.filter(boot_source=source).first()
        self.assertDictEqual(
            {"title": "%s %s %s" % (os_title, release_title, gadget_title)},
            cached.extra,
        )
Esempio n. 3
0
 def test_set_overwrites_item(self):
     image_dict = BootImageMapping()
     image = make_image_spec()
     resource = factory.make_name("resource")
     image_dict.setdefault(image, factory.make_name("resource"))
     image_dict.set(image, resource)
     self.assertItemsEqual([(image, resource)], image_dict.items())
Esempio n. 4
0
 def make_meta_file(self, image_params, image_resource, tftproot):
     image = ImageSpec(os=image_params["osystem"],
                       arch=image_params["architecture"],
                       subarch=image_params["subarchitecture"],
                       kflavor="generic",
                       release=image_params["release"],
                       label=image_params["label"])
     mapping = BootImageMapping()
     mapping.setdefault(image, image_resource)
     maas_meta = mapping.dump_json()
     filepath = os.path.join(tftproot, "maas.meta")
     with open(filepath, "w", encoding="utf-8") as f:
         f.write(maas_meta)
Esempio n. 5
0
    def test__adds_title_to_extra(self):
        source = factory.make_BootSource(keyring_data=b'1234')
        os = factory.make_name('os')
        release = factory.make_name('release')
        os_title = factory.make_name('os_title')
        release_title = factory.make_name('release_title')
        image_spec = make_image_spec(os=os, release=release)
        image_mapping = BootImageMapping()
        image_mapping.setdefault(image_spec, {
            'os_title': os_title,
            'release_title': release_title,
        })
        mock_download = self.patch(bootsources,
                                   'download_all_image_descriptions')
        mock_download.return_value = image_mapping

        cache_boot_sources()
        cached = BootSourceCache.objects.filter(boot_source=source).first()
        self.assertDictEqual({'title': '%s %s' % (os_title, release_title)},
                             cached.extra)
Esempio n. 6
0
 def test__adds_release_to_cache(self):
     source = factory.make_BootSource(keyring_data=b'1234')
     os = factory.make_name('os')
     release = factory.make_name('release')
     release_codename = factory.make_name('codename')
     release_title = factory.make_name('title')
     support_eol = factory.make_date().strftime("%Y-%m-%d")
     image_spec = make_image_spec(os=os, release=release)
     image_mapping = BootImageMapping()
     image_mapping.setdefault(
         image_spec, {
             "release_codename": release_codename,
             "release_title": release_title,
             "support_eol": support_eol,
         })
     bootsources._update_cache(source.to_dict_without_selections(),
                               image_mapping)
     cached = BootSourceCache.objects.filter(boot_source=source).first()
     self.assertEqual(release_codename, cached.release_codename)
     self.assertEqual(release_title, cached.release_title)
     self.assertEqual(support_eol, cached.support_eol.strftime("%Y-%m-%d"))
Esempio n. 7
0
def make_boot_image_mapping(image_specs=None):
    mapping = BootImageMapping()
    if image_specs is not None:
        for image_spec in image_specs:
            mapping.setdefault(image_spec, {})
    return mapping
Esempio n. 8
0
    def test_extract_ephemeral_image_params_with_metadata(self):
        path, osystem, arch, subarch, release, label = self._make_path()

        # Patch OperatingSystemRegistry to return a fixed list of
        # values.
        purpose1 = factory.make_name("purpose")
        purpose2 = factory.make_name("purpose")
        xi_purpose = "ephemeral"
        xi_path = factory.make_name("xi_path")
        xi_type = factory.make_name("xi_type")
        purposes = [purpose1, purpose2, xi_purpose]
        self._patch_osystem_registry(purposes,
                                     xinstall_params=(xi_path, xi_type))

        # Create some maas.meta content.
        image = ImageSpec(os=osystem,
                          arch=arch,
                          subarch=subarch,
                          kflavor='generic',
                          release=release,
                          label=label)
        image_resource = dict(subarches=factory.make_name("subarches"))
        mapping = BootImageMapping()
        mapping.setdefault(image, image_resource)
        maas_meta = mapping.dump_json()

        params = extract_image_params(path, maas_meta)

        self.assertItemsEqual([
            {
                "osystem": osystem,
                "architecture": arch,
                "subarchitecture": subarch,
                "release": release,
                "label": label,
                "purpose": purpose1,
                "xinstall_path": '',
                "xinstall_type": '',
                "supported_subarches": image_resource["subarches"],
            },
            {
                "osystem": osystem,
                "architecture": arch,
                "subarchitecture": subarch,
                "release": release,
                "label": label,
                "purpose": purpose2,
                "xinstall_path": '',
                "xinstall_type": '',
                "supported_subarches": image_resource["subarches"],
            },
            {
                "osystem": osystem,
                "architecture": arch,
                "subarchitecture": subarch,
                "release": release,
                "label": label,
                "purpose": xi_purpose,
                "xinstall_path": xi_path,
                "xinstall_type": xi_type,
                "supported_subarches": image_resource["subarches"],
            },
        ], params)
Esempio n. 9
0
 def test_is_empty_returns_False_if_not_empty(self):
     mapping = BootImageMapping()
     mapping.setdefault(make_image_spec(), factory.make_name("resource"))
     self.assertFalse(mapping.is_empty())
Esempio n. 10
0
 def test_setdefault_sets_unset_item(self):
     image_dict = BootImageMapping()
     image = make_image_spec()
     resource = factory.make_name('resource')
     image_dict.setdefault(image, resource)
     self.assertItemsEqual([(image, resource)], image_dict.items())