blob: eb8df5a6e109b5a3bea7550199f7f04255f62c07 [file] [log] [blame] [edit]
# Copyright 2013 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""PayGen - Automatic Payload Generation.
This library processes a single build at a time, and decides which payloads
need to be generated. It then calls paygen_payload to generate each payload.
This library is reponsible for locking builds during processing, and checking
and setting flags to show that a build has been processed.
"""
from chromite.lib.paygen import gspaths
class Error(Exception):
"""Exception base class for this module."""
def DefaultPayloadUri(
payload: gspaths.Payload, random_str: str | None = None
) -> str:
"""Compute the default output URI for a payload.
For a glob that matches all potential URIs for this
payload, pass in a random_str of '*'.
Args:
payload: gspaths.Payload instance.
random_str: A hook to force a specific random_str. None means generate
it.
Returns:
Default URI for the payload.
"""
src_version = None
if payload.src_image:
src_version = payload.src_image.build.version
if gspaths.IsDLCImage(payload.tgt_image):
# Signed DLC payload.
return gspaths.ChromeosReleases.DLCPayloadUri(
payload.build,
random_str=random_str,
dlc_id=payload.tgt_image.dlc_id,
dlc_package=payload.tgt_image.dlc_package,
image_channel=payload.tgt_image.image_channel,
image_version=payload.tgt_image.image_version,
src_version=src_version,
)
elif gspaths.IsMiniOSImage(payload.tgt_image):
# Signed MiniOS payload.
return gspaths.ChromeosReleases.MiniOSPayloadUri(
payload.build,
random_str=random_str,
key=payload.tgt_image.key,
image_channel=payload.tgt_image.image_channel,
image_version=payload.tgt_image.image_version,
src_version=src_version,
)
elif gspaths.IsImage(payload.tgt_image):
# Signed payload.
return gspaths.ChromeosReleases.PayloadUri(
payload.build,
random_str=random_str,
key=payload.tgt_image.key,
image_channel=payload.tgt_image.image_channel,
image_version=payload.tgt_image.image_version,
src_version=src_version,
)
elif gspaths.IsUnsignedMiniOSImageArchive(payload.tgt_image):
# Unsigned test MiniOS payload.
return gspaths.ChromeosReleases.MiniOSPayloadUri(
payload.build, random_str=random_str, src_version=src_version
)
elif gspaths.IsUnsignedImageArchive(payload.tgt_image):
# Unsigned test payload.
return gspaths.ChromeosReleases.PayloadUri(
payload.build, random_str=random_str, src_version=src_version
)
else:
raise Error("Unknown image type %s" % type(payload.tgt_image))