downloader

package
v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Nov 27, 2022 License: Apache-2.0 Imports: 28 Imported by: 0

Documentation

Overview

Package downloader provides a library for downloading charts.

This package contains various tools for downloading charts from repository servers, and then storing them in Helm-specific directory structures. This library contains many functions that depend on a specific filesystem layout.

Index

Constants

This section is empty.

Variables

View Source
var ErrNoOwnerRepo = errors.New("could not find a repo containing the given URL")

ErrNoOwnerRepo indicates that a given chart URL can't be found in any repos.

Functions

func VerifyChart

func VerifyChart(path, keyring string) (*provenance.Verification, error)

VerifyChart takes a path to a chart archive and a keyring, and verifies the chart.

It assumes that a chart archive file is accompanied by a provenance file whose name is the archive file name plus the ".prov" extension.

Types

type ChartDownloader

type ChartDownloader struct {
	// Out is the location to write warning and info messages.
	Out io.Writer
	// Verify indicates what verification strategy to use.
	Verify VerificationStrategy
	// Keyring is the keyring file used for verification.
	Keyring string
	// Getter collection for the operation
	Getters getter.Providers
	// Options provide parameters to be passed along to the Getter being initialized.
	Options          []getter.Option
	RegistryClient   *registry.Client
	RepositoryConfig string
	RepositoryCache  string
}

ChartDownloader handles downloading a chart.

It is capable of performing verifications on charts as well.

func (*ChartDownloader) DownloadTo

func (c *ChartDownloader) DownloadTo(ref, version, dest string) (string, *provenance.Verification, error)

DownloadTo retrieves a chart. Depending on the settings, it may also download a provenance file.

If Verify is set to VerifyNever, the verification will be nil. If Verify is set to VerifyIfPossible, this will return a verification (or nil on failure), and print a warning on failure. If Verify is set to VerifyAlways, this will return a verification or an error if the verification fails. If Verify is set to VerifyLater, this will download the prov file (if it exists), but not verify it.

For VerifyNever and VerifyIfPossible, the Verification may be empty.

Returns a string path to the location where the file was downloaded and a verification (if provenance was verified), or an error if something bad happened.

func (*ChartDownloader) ResolveChartVersion

func (c *ChartDownloader) ResolveChartVersion(ref, version string) (*url.URL, error)

ResolveChartVersion resolves a chart reference to a URL.

It returns the URL and sets the ChartDownloader's Options that can fetch the URL using the appropriate Getter.

A reference may be an HTTP URL, an oci reference URL, a 'reponame/chartname' reference, or a local path.

A version is a SemVer string (1.2.3-beta.1+f334a6789).

  • For fully qualified URLs, the version will be ignored (since URLs aren't versioned)
  • For a chart reference
  • If version is non-empty, this will return the URL for that version
  • If version is empty, this will return the URL for the latest version
  • If no version can be found, an error is returned

type ErrRepoNotFound

type ErrRepoNotFound struct {
	Repos []string
}

ErrRepoNotFound indicates that chart repositories can't be found in local repo cache. The value of Repos is missing repos.

func (ErrRepoNotFound) Error

func (e ErrRepoNotFound) Error() string

Error implements the error interface.

type Manager

type Manager struct {
	// Out is used to print warnings and notifications.
	Out io.Writer
	// ChartPath is the path to the unpacked base chart upon which this operates.
	ChartPath string
	// Verification indicates whether the chart should be verified.
	Verify VerificationStrategy
	// Debug is the global "--debug" flag
	Debug bool
	// Keyring is the key ring file.
	Keyring string
	// SkipUpdate indicates that the repository should not be updated first.
	SkipUpdate bool
	// Getter collection for the operation
	Getters          []getter.Provider
	RegistryClient   *registry.Client
	RepositoryConfig string
	RepositoryCache  string
}

Manager handles the lifecycle of fetching, resolving, and storing dependencies.

func (*Manager) Build

func (m *Manager) Build() error

Build rebuilds a local charts directory from a lockfile.

If the lockfile is not present, this will run a Manager.Update()

If SkipUpdate is set, this will not update the repository.

func (*Manager) Update

func (m *Manager) Update() error

Update updates a local charts directory.

It first reads the Chart.yaml file, and then attempts to negotiate versions based on that. It will download the versions from remote chart repositories unless SkipUpdate is true.

func (*Manager) UpdateRepositories

func (m *Manager) UpdateRepositories() error

UpdateRepositories updates all of the local repos to the latest.

type VerificationStrategy

type VerificationStrategy int

VerificationStrategy describes a strategy for determining whether to verify a chart.

const (
	// VerifyNever will skip all verification of a chart.
	VerifyNever VerificationStrategy = iota
	// VerifyIfPossible will attempt a verification, it will not error if verification
	// data is missing. But it will not stop processing if verification fails.
	VerifyIfPossible
	// VerifyAlways will always attempt a verification, and will fail if the
	// verification fails.
	VerifyAlways
	// VerifyLater will fetch verification data, but not do any verification.
	// This is to accommodate the case where another step of the process will
	// perform verification.
	VerifyLater
)

Jump to

Keyboard shortcuts

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