Module rugged.tuf.metadata_files

Functions

def get_current_partial_root_metadata_path() ‑> str
Expand source code
def get_current_partial_root_metadata_path() -> str:
    """ Look up the full path for the current partial root metadata file. """
    metadata_dir = RUGGED_PARTIAL_METADATA_DIR
    return get_metadata_path('root', metadata_dir)

Look up the full path for the current partial root metadata file.

def get_metadata_path(role_name: str, metadata_dir: str) ‑> str
Expand source code
def get_metadata_path(role_name: str, metadata_dir: str) -> str:
    """ Determine the path for a given role's metadata file. """
    filename = _get_metadata_filename(role_name, metadata_dir)
    return os.path.join(metadata_dir, filename)

Determine the path for a given role's metadata file.

def get_metafile_info(metadata: tuf.api.metadata.Metadata[typing.Any]) ‑> tuf.api.metadata.MetaFile
Expand source code
def get_metafile_info(metadata: Metadata[Any]) -> MetaFile:
    """ Return role metadata information. """
    serialized_metadata = get_serializer().serialize(metadata)
    return MetaFile(
        version=metadata.signed.version,
        length=len(serialized_metadata),
        # @TODO: Make hashes optional
        hashes={
            # @TODO: Make which hashes to include configurable.
            'sha256': sha256(serialized_metadata).hexdigest(),
            'sha512': sha512(serialized_metadata).hexdigest(),
        },
    )

Return role metadata information.

def load_metadata_from_file(role_name: str, path: str) ‑> tuf.api.metadata.Metadata[typing.Any]
Expand source code
def load_metadata_from_file(role_name: str, path: str) -> Metadata[Any]:
    """ Load a role's metadata from storage. """
    metadata = Metadata
    try:
        loaded_metadata = metadata.from_file(path)
        message = f"Loaded metadata for '{role_name}' role from "\
                  f"'{path}'."
        log.debug(message)
        return loaded_metadata
    except TypeError as e:
        log_exception(e)
        error = f"Failed to load metadata for '{role_name}' role from "\
                f"'{path}'."
        raise RuggedMetadataError(error)
    except DeserializationError as e:
        log_exception(e)
        error = f"Failed to deserialize data from '{path}'."
        raise RuggedMetadataError(error)

Load a role's metadata from storage.

def load_partial_metadata_from_file(role_name: str) ‑> tuf.api.metadata.Metadata[typing.Any]
Expand source code
def load_partial_metadata_from_file(role_name: str) -> Metadata[Any]:
    """ Load current partial Metadata. """
    metadata_dir = RUGGED_PARTIAL_METADATA_DIR
    return _load_metadata_from_file(role_name, metadata_dir)

Load current partial Metadata.

def load_production_metadata_from_file(role_name: str) ‑> tuf.api.metadata.Metadata[typing.Any]
Expand source code
def load_production_metadata_from_file(role_name: str) -> Metadata[Any]:
    """ Load current version of production Metadata. """
    metadata_dir = config['repo_metadata_path'].get()
    return _load_metadata_from_file(role_name, metadata_dir)

Load current version of production Metadata.

def write_metadata_to_file(role_name: str, metadata: tuf.api.metadata.Metadata[typing.Any], path: str) ‑> bool
Expand source code
def write_metadata_to_file(role_name: str, metadata: Metadata[Any], path: str) -> bool:
    """ Write a role's metadata to a given file path. """
    try:
        metadata.to_file(path, serializer=get_serializer())
    except SerializationError as e:
        log_exception(e)
        error = f"Failed to serialize '{role_name}' metadata."
        log.error(error)
        return False
    except Exception as e:
        log_exception(e)
        error = f"Failed to write '{role_name}' metadata to file '{path}'."
        log.error(error)
        return False
    log.debug(f"Wrote '{role_name}' metadata to file '{path}'.")
    return True

Write a role's metadata to a given file path.