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"))
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, )
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())
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)
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)
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"))
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
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)
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())
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())