packages

package
v0.30.20 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 4, 2026 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Overview

Package packages mirrors Deckhouse "packages", which are structurally identical to modules but live under a different set of registry segments:

<root>/packages/<name>:<version>             - package main image
<root>/packages/<name>/version:<channel>     - package version-channel metadata
<root>/packages/<name>/version:<vX.Y.Z>      - package version-tagged release metadata
<root>/packages/<name>/extra/<extra>:<tag>   - package extra images

The pull pipeline, filtering and version selection are intentionally the same as for modules, so the generic version-selection vocabulary (Filter, Module, VersionConstraint, ProbeAvailableVersions) is reused from the modules package rather than duplicated here.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func LayoutHasManifests

func LayoutHasManifests(lp layout.Path) bool

LayoutHasManifests reports whether the OCI layout at the given path contains at least one image manifest.

Types

type ImageDownloadList

type ImageDownloadList struct {
	Package                map[string]*puller.ImageMeta
	PackageVersionChannels map[string]*puller.ImageMeta
	PackageExtra           map[string]*puller.ImageMeta
	// contains filtered or unexported fields
}

func NewImageDownloadList

func NewImageDownloadList(rootURL string) *ImageDownloadList

type ImageLayouts

type ImageLayouts struct {

	// Packages is the main package image layout (packages/<name>/)
	Packages *regimage.ImageLayout
	// PackageVersionChannels is the version channel layout (packages/<name>/version/)
	PackageVersionChannels *regimage.ImageLayout
	// ExtraImages holds layouts for each extra image (packages/<name>/extra/<extra-name>/)
	// Key is the extra image name.
	ExtraImages map[string]*regimage.ImageLayout
	// contains filtered or unexported fields
}

func NewImageLayouts

func NewImageLayouts(rootFolder string) *ImageLayouts

func (*ImageLayouts) AsList

func (l *ImageLayouts) AsList() []layout.Path

AsList returns a list of layout.Path's in it. Undefined path's are not included in the list.

func (*ImageLayouts) GetOrCreateExtraLayout

func (l *ImageLayouts) GetOrCreateExtraLayout(extraName string) (*regimage.ImageLayout, error)

GetOrCreateExtraLayout returns or creates a layout for a specific extra image. Extra images are stored under: packages/<name>/extra/<extra-name>/

func (*ImageLayouts) HasImages

func (l *ImageLayouts) HasImages() bool

HasImages reports whether any sub-layout of this package contains at least one image manifest. Returns false when all layouts are empty (i.e. the package was discovered but no images were pulled into it).

type Options

type Options struct {
	// Filter is the package filter (whitelist/blacklist). It reuses the
	// modules filter because package selection works exactly like module
	// selection (names + semver constraints).
	Filter *modules.Filter
	// OnlyExtraImages pulls only extra images without main package images
	OnlyExtraImages bool
	// SkipVexImages allows skipping VEX images
	SkipVexImages bool
	// BundleDir is the directory to store the bundle
	BundleDir string
	// BundleChunkSize is the max size of bundle chunks in bytes (0 = no chunking)
	BundleChunkSize int64
	// Timeout is the timeout for the packages access check
	Timeout time.Duration
	// DryRun prints the pull plan without downloading any image blobs
	DryRun bool
	// ProxyRegistry replaces catalog-based discovery with a sequential probe
	// of individual version tags derived from the user's --include-package
	// version constraint. See the modules service for the full rationale.
	ProxyRegistry bool
}

Options contains configuration options for the packages service.

type PackageStat added in v0.30.20

type PackageStat struct {
	Name   string
	Images int
	// VEX is how many of Images are VEX attestations (a subset of Images, not
	// an additional count).
	VEX int
	// Versions are the resolved package versions to pull, e.g.
	// ["v1.45.2", "v1.44.0"]. Resolved before download, so available in dry-run.
	Versions []string
}

PackageStat is one package's contribution to the pull.

type PackagesDownloadList

type PackagesDownloadList struct {
	// contains filtered or unexported fields
}

func NewPackagesDownloadList

func NewPackagesDownloadList(rootURL string) *PackagesDownloadList

func (*PackagesDownloadList) Package

func (l *PackagesDownloadList) Package(packageName string) *ImageDownloadList

type PackagesImageLayouts

type PackagesImageLayouts struct {
	// contains filtered or unexported fields
}

func NewPackagesImageLayouts

func NewPackagesImageLayouts(rootFolder string) *PackagesImageLayouts

func (*PackagesImageLayouts) AsList

func (l *PackagesImageLayouts) AsList() []layout.Path

AsList returns a list of layout.Path's from all packages. Undefined path's are not included in the list.

func (*PackagesImageLayouts) Package

func (l *PackagesImageLayouts) Package(packageName string) *ImageLayouts

type PackagesStats added in v0.30.20

type PackagesStats struct {
	Attempted       bool
	OnlyExtraImages bool
	Packages        []PackageStat
	TotalImages     int
	// TotalVEX is the number of VEX attestations across all packages, a subset of
	// TotalImages.
	TotalVEX int
}

PackagesStats is the packages phase's accounting, mapped into the top-level summary by the pull orchestrator.

type Service

type Service struct {
	// contains filtered or unexported fields
}

func NewService

func NewService(
	registryService *registryservice.Service,
	workingDir string,
	options *Options,
	logger *dkplog.Logger,
	userLogger *log.SLogger,
) *Service

func (*Service) PullPackageVersions

func (svc *Service) PullPackageVersions(ctx context.Context) error

PullPackageVersions pulls the release/version images of every package and packs them into a single shared archive (package-versions.tar).

Unlike PullPackages this runs on EVERY mirror operation, independently of which components are being mirrored and of the --no-packages flag, so the package release-image catalog is always cloned into the bundle. Release images may therefore be duplicated between this archive and the per-package archives produced by PullPackages — that duplication is intentional.

func (*Service) PullPackages

func (svc *Service) PullPackages(ctx context.Context) error

PullPackages pulls the Deckhouse packages. It validates access to the registry and pulls the package images.

func (*Service) Stats added in v0.30.20

func (svc *Service) Stats() PackagesStats

Stats returns accounting for the packages phase. In dry-run it reports planned per-package counts from the download lists; otherwise it reports the actual number of manifests pulled into each package's OCI layouts, captured before packing in Service.packageStats (packages that produced no images are omitted, matching packPackages, which emits no tar for them).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL