Container image pusher

Class used for copying images in Quay. It supports both source (single-arch) and multiarch images. Logic for determining whether manifest list merging is necessary, or simple copy suffices is also contained in this class. This class handles all the container-related parts of the Push Docker workflow.

class pubtools._quay.container_image_pusher.ContainerImagePusher(push_items: List[Any], target_settings: Dict[str, Any])[source]

Push container images to Quay.

No validation is performed, push items are expected to be correct.

__init__(push_items: List[Any], target_settings: Dict[str, Any]) None[source]

Initialize.

Args:
push_items ([ContainerPushItem]):

List of push items.

target_settings (dict):

Target settings.

classmethod run_tag_images(source_ref: str, dest_refs: List[str], all_arch: bool, target_settings: Dict[str, Any]) None[source]

Prepare the “tag images” entrypoint with all the necessary arguments and run it.

NOTE: Tagging operation will run with retries to compensate for transient

container-related issues.

Args:
source_ref (str):

Source image reference.

dest_refs ([str]):

List of destination references.

all_arch (bool):

Whether all architectures should be copied.

target_settings (dict):

Settings used for setting the values of the function parameters.

copy_source_push_item(push_item: Any) None[source]

Perform the tagging operation for a push item containing a source image.

Args:
push_item (ContainerPushItem):

Source container push item.

copy_multiarch_push_item(push_item: Any, source_ml: ManifestList) None[source]

Evaluate the correct tagging and manifest list merging strategy of multiarch push item.

There are two workflows of multiarch images: Simple copying, or manifest list merging. Destination tags are sorted, and correct workflow is performed on them.

Args:
push_items (ContainerPushItem):

Multiarch container push item.

source_ml (dict):

Manifest list of the source image.

push_container_images() None[source]

Push container images to Quay.

Two image types are supported: source images and multiarch images. Non-source, single arch images are not supported. In case of multiarch images, manifest list merging is performed if destination image contains more architectures than source.