Ejemplo n.º 1
0
def extract_metadata(metadata, params):
    """Examine the maas.meta file for any required metadata.

    :param metadata: contents of the maas.meta file
    :param params: A dict of path components for the image
        (architecture, subarchitecture, kflavor, release and label).
    :return: a dict of name/value metadata pairs.  Currently, only
        "subarches" is extracted.
    """
    mapping = BootImageMapping.load_json(metadata)
    subarch = params["subarchitecture"]
    split_subarch = subarch.split('-')
    if len(split_subarch) > 2:
        kflavor = split_subarch[2]
    else:
        kflavor = 'generic'

    image = ImageSpec(
        os=params["osystem"],
        arch=params["architecture"],
        subarch=subarch,
        kflavor=kflavor,
        release=params["release"],
        label=params["label"],
    )
    try:
        # On upgrade from 1.5 to 1.6, the subarches does not exist in the
        # maas.meta file . Without this catch boot images will fail to
        # report until the boot images are imported again.
        subarches = mapping.mapping[image]['subarches']
    except KeyError:
        return {}

    return dict(supported_subarches=subarches)
Ejemplo n.º 2
0
 def test_load_json_result_of_old_data_uses_ubuntu_as_os(self):
     test_meta_file_content = make_maas_meta_without_os()
     mapping = BootImageMapping.load_json(test_meta_file_content)
     os = {image.os for image, _ in mapping.items()}.pop()
     self.assertEqual("ubuntu", os)
Ejemplo n.º 3
0
 def test_load_json_returns_empty_mapping_for_invalid_json(self):
     bad_json = ""
     mapping = BootImageMapping.load_json(bad_json)
     self.assertEqual({}, mapping.mapping)
Ejemplo n.º 4
0
 def test_load_json_result_matches_dump_of_own_data(self):
     # Loading the test data and dumping it again should result in
     # identical test data.
     mapping = BootImageMapping.load_json(make_maas_meta())
     dumped = mapping.dump_json()
     self.assertEqual(make_maas_meta(), dumped)