action

package
v1.0.0 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: 61 Imported by: 0

Documentation

Overview

Package action contains the logic for each action that Helm can perform.

This is a library for calling top-level Helm actions like 'install', 'upgrade', or 'list'. Actions approximately match the command line invocations that the Helm client uses.

Index

Constants

ListAll is a convenience for enabling all list filters

Variables

View Source
var Timestamper = time.Now

Timestamper is a function capable of producing a timestamp.Timestamper.

By default, this is a time.Time function from the Helm time package. This can be overridden for testing though, so that timestamps are predictable.

View Source
var ValidName = regexp.MustCompile(`^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$`)

ValidName is a regular expression for resource names.

DEPRECATED: This will be removed in Helm 4, and is no longer used here. See pkg/lint/rules.validateMetadataNameFunc for the replacement.

According to the Kubernetes help text, the regular expression it uses is:

[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*

This follows the above regular expression (but requires a full string match, not partial).

The Kubernetes documentation is here, though it is not entirely correct: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

Functions

func CheckDependencies

func CheckDependencies(ch *chart.Chart, reqs []*chart.Dependency) error

CheckDependencies checks the dependencies for a chart.

func GetVersionSet

GetVersionSet retrieves a set of available k8s API versions

func HasWarningsOrErrors

func HasWarningsOrErrors(result *LintResult) bool

HasWarningsOrErrors checks is LintResult has any warnings or errors

func TemplateName

func TemplateName(nameTemplate string) (string, error)

TemplateName renders a name template, returning the name or an error.

Types

type ChartPathOptions

type ChartPathOptions struct {
	CaFile                string // --ca-file
	CertFile              string // --cert-file
	KeyFile               string // --key-file
	InsecureSkipTLSverify bool   // --insecure-skip-verify
	Keyring               string // --keyring
	Password              string // --password
	PassCredentialsAll    bool   // --pass-credentials
	RepoURL               string // --repo
	Username              string // --username
	Verify                bool   // --verify
	Version               string // --version
	// contains filtered or unexported fields
}

ChartPathOptions captures common options used for controlling chart paths

func (*ChartPathOptions) LocateChart

func (c *ChartPathOptions) LocateChart(name string, settings *cli.EnvSettings) (string, error)

LocateChart looks for a chart directory in known places, and returns either the full path or an error.

This does not ensure that the chart is well-formed; only that the requested filename exists.

Order of resolution: - relative to current working directory - if path is absolute or begins with '.', error out here - URL

If 'verify' was set on ChartPathOptions, this will attempt to also verify the chart.

type Configuration

type Configuration struct {
	// RESTClientGetter is an interface that loads Kubernetes clients.
	RESTClientGetter RESTClientGetter

	// Releases stores records of releases.
	Releases *storage.Storage

	// KubeClient is a Kubernetes API client.
	KubeClient kube.Interface

	// RegistryClient is a client for working with registries
	RegistryClient *registry.Client

	// Capabilities describes the capabilities of the Kubernetes cluster.
	Capabilities *chartutil.Capabilities

	Log func(string, ...interface{})
}

Configuration injects the dependencies that all actions share.

func (*Configuration) Init

func (cfg *Configuration) Init(getter genericclioptions.RESTClientGetter, namespace, helmDriver string, log DebugLog) error

Init initializes the action configuration

func (*Configuration) KubernetesClientSet

func (cfg *Configuration) KubernetesClientSet() (kubernetes.Interface, error)

KubernetesClientSet creates a new kubernetes ClientSet based on the configuration

func (*Configuration) Now

func (cfg *Configuration) Now() time.Time

Now generates a timestamp

If the configuration has a Timestamper on it, that will be used. Otherwise, this will use time.Now().

type DebugLog

type DebugLog func(format string, v ...interface{})

DebugLog sets the logger that writes debug strings

type Dependency

type Dependency struct {
	Verify      bool
	Keyring     string
	SkipRefresh bool
	ColumnWidth uint
}

Dependency is the action for building a given chart's dependency tree.

It provides the implementation of 'helm dependency' and its respective subcommands.

func NewDependency

func NewDependency() *Dependency

NewDependency creates a new Dependency object with the given configuration.

func (*Dependency) List

func (d *Dependency) List(chartpath string, out io.Writer) error

List executes 'helm dependency list'.

type Get

type Get struct {

	// Initializing Version to 0 will get the latest revision of the release.
	Version int
	// contains filtered or unexported fields
}

Get is the action for checking a given release's information.

It provides the implementation of 'helm get' and its respective subcommands (except `helm get values`).

func NewGet

func NewGet(cfg *Configuration) *Get

NewGet creates a new Get object with the given configuration.

func (*Get) Run

func (g *Get) Run(name string) (*release.Release, error)

Run executes 'helm get' against the given release.

type GetValues

type GetValues struct {
	Version   int
	AllValues bool
	// contains filtered or unexported fields
}

GetValues is the action for checking a given release's values.

It provides the implementation of 'helm get values'.

func NewGetValues

func NewGetValues(cfg *Configuration) *GetValues

NewGetValues creates a new GetValues object with the given configuration.

func (*GetValues) Run

func (g *GetValues) Run(name string) (map[string]interface{}, error)

Run executes 'helm get values' against the given release.

type History

type History struct {
	Max     int
	Version int
	// contains filtered or unexported fields
}

History is the action for checking the release's ledger.

It provides the implementation of 'helm history'. It returns all the revisions for a specific release. To list up to one revision of every release in one specific, or in all, namespaces, see the List action.

func NewHistory

func NewHistory(cfg *Configuration) *History

NewHistory creates a new History object with the given configuration.

func (*History) Run

func (h *History) Run(name string) ([]*release.Release, error)

Run executes 'helm history' against the given release.

type Install

type Install struct {
	ChartPathOptions

	ClientOnly               bool
	CreateNamespace          bool
	DryRun                   bool
	DisableHooks             bool
	Replace                  bool
	Wait                     bool
	WaitForJobs              bool
	Devel                    bool
	DependencyUpdate         bool
	Timeout                  time.Duration
	Namespace                string
	ReleaseName              string
	GenerateName             bool
	NameTemplate             string
	Description              string
	OutputDir                string
	Atomic                   bool
	SkipCRDs                 bool
	SubNotes                 bool
	DisableOpenAPIValidation bool
	IncludeCRDs              bool
	// KubeVersion allows specifying a custom kubernetes version to use and
	// APIVersions allows a manual set of supported API Versions to be passed
	// (for things like templating). These are ignored if ClientOnly is false
	KubeVersion *chartutil.KubeVersion
	APIVersions chartutil.VersionSet
	// Used by helm template to render charts with .Release.IsUpgrade. Ignored if Dry-Run is false
	IsUpgrade bool
	// Used by helm template to add the release as part of OutputDir path
	// OutputDir/<ReleaseName>
	UseReleaseName bool
	PostRenderer   postrender.PostRenderer
	// Lock to control raceconditions when the process receives a SIGTERM
	Lock sync.Mutex
	// contains filtered or unexported fields
}

Install performs an installation operation.

func NewInstall

func NewInstall(cfg *Configuration) *Install

NewInstall creates a new Install object with the given configuration.

func (*Install) NameAndChart

func (i *Install) NameAndChart(args []string) (string, string, error)

NameAndChart returns the name and chart that should be used.

This will read the flags and handle name generation if necessary.

func (*Install) Run

func (i *Install) Run(chrt *chart.Chart, vals map[string]interface{}) (*release.Release, error)

func (*Install) RunWithContext

func (i *Install) RunWithContext(ctx context.Context, chrt *chart.Chart, vals map[string]interface{}) (*release.Release, error)

Run executes the installation with Context

type Lint

type Lint struct {
	Strict        bool
	Namespace     string
	WithSubcharts bool
	Quiet         bool
}

Lint is the action for checking that the semantics of a chart are well-formed.

It provides the implementation of 'helm lint'.

func NewLint

func NewLint() *Lint

NewLint creates a new Lint object with the given configuration.

func (*Lint) Run

func (l *Lint) Run(paths []string, vals map[string]interface{}) *LintResult

Run executes 'helm Lint' against the given chart.

type LintResult

type LintResult struct {
	TotalChartsLinted int
	Messages          []support.Message
	Errors            []error
}

LintResult is the result of Lint

type List

type List struct {

	// All ignores the limit/offset
	All bool
	// AllNamespaces searches across namespaces
	AllNamespaces bool
	// Sort indicates the sort to use
	//
	// see pkg/releaseutil for several useful sorters
	Sort Sorter
	// Overrides the default lexicographic sorting
	ByDate      bool
	SortReverse bool
	// StateMask accepts a bitmask of states for items to show.
	// The default is ListDeployed
	StateMask ListStates
	// Limit is the number of items to return per Run()
	Limit int
	// Offset is the starting index for the Run() call
	Offset int
	// Filter is a filter that is applied to the results
	Filter       string
	Short        bool
	NoHeaders    bool
	TimeFormat   string
	Uninstalled  bool
	Superseded   bool
	Uninstalling bool
	Deployed     bool
	Failed       bool
	Pending      bool
	Selector     string
	// contains filtered or unexported fields
}

List is the action for listing releases.

It provides, for example, the implementation of 'helm list'. It returns no more than one revision of every release in one specific, or in all, namespaces. To list all the revisions of a specific release, see the History action.

func NewList

func NewList(cfg *Configuration) *List

NewList constructs a new *List

func (*List) Run

func (l *List) Run() ([]*release.Release, error)

Run executes the list command, returning a set of matches.

func (*List) SetStateMask

func (l *List) SetStateMask()

SetStateMask calculates the state mask based on parameters.

type ListStates

type ListStates uint

ListStates represents zero or more status codes that a list item may have set

Because this is used as a bitmask filter, more than one bit can be flipped in the ListStates.

const (
	// ListDeployed filters on status "deployed"
	ListDeployed ListStates = 1 << iota
	// ListUninstalled filters on status "uninstalled"
	ListUninstalled
	// ListUninstalling filters on status "uninstalling" (uninstall in progress)
	ListUninstalling
	// ListPendingInstall filters on status "pending" (deployment in progress)
	ListPendingInstall
	// ListPendingUpgrade filters on status "pending_upgrade" (upgrade in progress)
	ListPendingUpgrade
	// ListPendingRollback filters on status "pending_rollback" (rollback in progress)
	ListPendingRollback
	// ListSuperseded filters on status "superseded" (historical release version that is no longer deployed)
	ListSuperseded
	// ListFailed filters on status "failed" (release version not deployed because of error)
	ListFailed
	// ListUnknown filters on an unknown status
	ListUnknown
)

func (ListStates) FromName

func (s ListStates) FromName(str string) ListStates

FromName takes a state name and returns a ListStates representation.

Currently, there are only names for individual flipped bits, so the returned ListStates will only match one of the constants. However, it is possible that this behavior could change in the future.

type Package

type Package struct {
	Sign             bool
	Key              string
	Keyring          string
	PassphraseFile   string
	Version          string
	AppVersion       string
	Destination      string
	DependencyUpdate bool

	RepositoryConfig string
	RepositoryCache  string
}

Package is the action for packaging a chart.

It provides the implementation of 'helm package'.

func NewPackage

func NewPackage() *Package

NewPackage creates a new Package object with the given configuration.

func (*Package) Clearsign

func (p *Package) Clearsign(filename string) error

Clearsign signs a chart

func (*Package) Run

func (p *Package) Run(path string, vals map[string]interface{}) (string, error)

Run executes 'helm package' against the given chart and returns the path to the packaged chart.

type Pull

type Pull struct {
	ChartPathOptions

	Settings *cli.EnvSettings // TODO: refactor this out of pkg/action

	Devel       bool
	Untar       bool
	VerifyLater bool
	UntarDir    string
	DestDir     string
	// contains filtered or unexported fields
}

Pull is the action for checking a given release's information.

It provides the implementation of 'helm pull'.

func NewPull

func NewPull() *Pull

NewPull creates a new Pull object.

func NewPullWithOpts

func NewPullWithOpts(opts ...PullOpt) *Pull

NewPullWithOpts creates a new pull, with configuration options.

func (*Pull) Run

func (p *Pull) Run(chartRef string) (string, error)

Run executes 'helm pull' against the given release.

type PullOpt

type PullOpt func(*Pull)

func WithConfig

func WithConfig(cfg *Configuration) PullOpt

type Push

type Push struct {
	Settings *cli.EnvSettings
	// contains filtered or unexported fields
}

Push is the action for uploading a chart.

It provides the implementation of 'helm push'.

func NewPushWithOpts

func NewPushWithOpts(opts ...PushOpt) *Push

NewPushWithOpts creates a new push, with configuration options.

func (*Push) Run

func (p *Push) Run(chartRef string, remote string) (string, error)

Run executes 'helm push' against the given chart archive.

type PushOpt

type PushOpt func(*Push)

PushOpt is a type of function that sets options for a push action.

func WithPushConfig

func WithPushConfig(cfg *Configuration) PushOpt

WithPushConfig sets the cfg field on the push configuration object.

type RESTClientGetter

type RESTClientGetter interface {
	ToRESTConfig() (*rest.Config, error)
	ToDiscoveryClient() (discovery.CachedDiscoveryInterface, error)
	ToRESTMapper() (meta.RESTMapper, error)
}

RESTClientGetter gets the rest client

type RegistryLogin

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

RegistryLogin performs a registry login operation.

func NewRegistryLogin

func NewRegistryLogin(cfg *Configuration) *RegistryLogin

NewRegistryLogin creates a new RegistryLogin object with the given configuration.

func (*RegistryLogin) Run

func (a *RegistryLogin) Run(out io.Writer, hostname string, username string, password string, insecure bool) error

Run executes the registry login operation

type RegistryLogout

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

RegistryLogout performs a registry login operation.

func NewRegistryLogout

func NewRegistryLogout(cfg *Configuration) *RegistryLogout

NewRegistryLogout creates a new RegistryLogout object with the given configuration.

func (*RegistryLogout) Run

func (a *RegistryLogout) Run(out io.Writer, hostname string) error

Run executes the registry logout operation

type ReleaseTesting

type ReleaseTesting struct {
	Timeout time.Duration
	// Used for fetching logs from test pods
	Namespace string
	Filters   map[string][]string
	// contains filtered or unexported fields
}

ReleaseTesting is the action for testing a release.

It provides the implementation of 'helm test'.

func NewReleaseTesting

func NewReleaseTesting(cfg *Configuration) *ReleaseTesting

NewReleaseTesting creates a new ReleaseTesting object with the given configuration.

func (*ReleaseTesting) GetPodLogs

func (r *ReleaseTesting) GetPodLogs(out io.Writer, rel *release.Release) error

GetPodLogs will write the logs for all test pods in the given release into the given writer. These can be immediately output to the user or captured for other uses

func (*ReleaseTesting) Run

func (r *ReleaseTesting) Run(name string) (*release.Release, error)

Run executes 'helm test' against the given release.

type Rollback

type Rollback struct {
	Version       int
	Timeout       time.Duration
	Wait          bool
	WaitForJobs   bool
	DisableHooks  bool
	DryRun        bool
	Recreate      bool // will (if true) recreate pods after a rollback.
	Force         bool // will (if true) force resource upgrade through uninstall/recreate if needed
	CleanupOnFail bool
	MaxHistory    int // MaxHistory limits the maximum number of revisions saved per release
	// contains filtered or unexported fields
}

Rollback is the action for rolling back to a given release.

It provides the implementation of 'helm rollback'.

func NewRollback

func NewRollback(cfg *Configuration) *Rollback

NewRollback creates a new Rollback object with the given configuration.

func (*Rollback) Run

func (r *Rollback) Run(name string) error

Run executes 'helm rollback' against the given release.

type Show

type Show struct {
	ChartPathOptions
	Devel            bool
	OutputFormat     ShowOutputFormat
	JSONPathTemplate string
	// contains filtered or unexported fields
}

Show is the action for checking a given release's information.

It provides the implementation of 'helm show' and its respective subcommands.

func NewShow

func NewShow(output ShowOutputFormat) *Show

NewShow creates a new Show object with the given configuration. Deprecated: Use NewShowWithConfig TODO Helm 4: Fold NewShowWithConfig back into NewShow

func NewShowWithConfig

func NewShowWithConfig(output ShowOutputFormat, cfg *Configuration) *Show

NewShowWithConfig creates a new Show object with the given configuration.

func (*Show) Run

func (s *Show) Run(chartpath string) (string, error)

Run executes 'helm show' against the given release.

type ShowOutputFormat

type ShowOutputFormat string

ShowOutputFormat is the format of the output of `helm show`

const (
	// ShowAll is the format which shows all the information of a chart
	ShowAll ShowOutputFormat = "all"
	// ShowChart is the format which only shows the chart's definition
	ShowChart ShowOutputFormat = "chart"
	// ShowValues is the format which only shows the chart's values
	ShowValues ShowOutputFormat = "values"
	// ShowReadme is the format which only shows the chart's README
	ShowReadme ShowOutputFormat = "readme"
	// ShowCRDs is the format which only shows the chart's CRDs
	ShowCRDs ShowOutputFormat = "crds"
)

func (ShowOutputFormat) String

func (o ShowOutputFormat) String() string

type Sorter

type Sorter uint

Sorter is a top-level sort

const (
	// ByNameDesc sorts by descending lexicographic order
	ByNameDesc Sorter = iota + 1
	// ByDateAsc sorts by ascending dates (oldest updated release first)
	ByDateAsc
	// ByDateDesc sorts by descending dates (latest updated release first)
	ByDateDesc
)

type Status

type Status struct {
	Version int

	// If true, display description to output format,
	// only affect print type table.
	// TODO Helm 4: Remove this flag and output the description by default.
	ShowDescription bool
	// contains filtered or unexported fields
}

Status is the action for checking the deployment status of releases.

It provides the implementation of 'helm status'.

func NewStatus

func NewStatus(cfg *Configuration) *Status

NewStatus creates a new Status object with the given configuration.

func (*Status) Run

func (s *Status) Run(name string) (*release.Release, error)

Run executes 'helm status' against the given release.

type Uninstall

type Uninstall struct {
	DisableHooks bool
	DryRun       bool
	KeepHistory  bool
	Wait         bool
	Timeout      time.Duration
	Description  string
	// contains filtered or unexported fields
}

Uninstall is the action for uninstalling releases.

It provides the implementation of 'helm uninstall'.

func NewUninstall

func NewUninstall(cfg *Configuration) *Uninstall

NewUninstall creates a new Uninstall object with the given configuration.

func (*Uninstall) Run

Run uninstalls the given release.

type Upgrade

type Upgrade struct {
	ChartPathOptions

	// Install is a purely informative flag that indicates whether this upgrade was done in "install" mode.
	//
	// Applications may use this to determine whether this Upgrade operation was done as part of a
	// pure upgrade (Upgrade.Install == false) or as part of an install-or-upgrade operation
	// (Upgrade.Install == true).
	//
	// Setting this to `true` will NOT cause `Upgrade` to perform an install if the release does not exist.
	// That process must be handled by creating an Install action directly. See cmd/upgrade.go for an
	// example of how this flag is used.
	Install bool
	// Devel indicates that the operation is done in devel mode.
	Devel bool
	// Namespace is the namespace in which this operation should be performed.
	Namespace string
	// SkipCRDs skips installing CRDs when install flag is enabled during upgrade
	SkipCRDs bool
	// Timeout is the timeout for this operation
	Timeout time.Duration
	// Wait determines whether the wait operation should be performed after the upgrade is requested.
	Wait bool
	// WaitForJobs determines whether the wait operation for the Jobs should be performed after the upgrade is requested.
	WaitForJobs bool
	// DisableHooks disables hook processing if set to true.
	DisableHooks bool
	// DryRun controls whether the operation is prepared, but not executed.
	// If `true`, the upgrade is prepared but not performed.
	DryRun bool
	// Force will, if set to `true`, ignore certain warnings and perform the upgrade anyway.
	//
	// This should be used with caution.
	Force bool
	// ResetValues will reset the values to the chart's built-ins rather than merging with existing.
	ResetValues bool
	// ReuseValues will re-use the user's last supplied values.
	ReuseValues bool
	// Recreate will (if true) recreate pods after a rollback.
	Recreate bool
	// MaxHistory limits the maximum number of revisions saved per release
	MaxHistory int
	// Atomic, if true, will roll back on failure.
	Atomic bool
	// CleanupOnFail will, if true, cause the upgrade to delete newly-created resources on a failed update.
	CleanupOnFail bool
	// SubNotes determines whether sub-notes are rendered in the chart.
	SubNotes bool
	// Description is the description of this operation
	Description string
	// PostRender is an optional post-renderer
	//
	// If this is non-nil, then after templates are rendered, they will be sent to the
	// post renderer before sending to the Kubernetes API server.
	PostRenderer postrender.PostRenderer
	// DisableOpenAPIValidation controls whether OpenAPI validation is enforced.
	DisableOpenAPIValidation bool
	// Get missing dependencies
	DependencyUpdate bool
	// Lock to control raceconditions when the process receives a SIGTERM
	Lock sync.Mutex
	// contains filtered or unexported fields
}

Upgrade is the action for upgrading releases.

It provides the implementation of 'helm upgrade'.

func NewUpgrade

func NewUpgrade(cfg *Configuration) *Upgrade

NewUpgrade creates a new Upgrade object with the given configuration.

func (*Upgrade) Run

func (u *Upgrade) Run(name string, chart *chart.Chart, vals map[string]interface{}) (*release.Release, error)

Run executes the upgrade on the given release.

func (*Upgrade) RunWithContext

func (u *Upgrade) RunWithContext(ctx context.Context, name string, chart *chart.Chart, vals map[string]interface{}) (*release.Release, error)

RunWithContext executes the upgrade on the given release with context.

type Verify

type Verify struct {
	Keyring string
	Out     string
}

Verify is the action for building a given chart's Verify tree.

It provides the implementation of 'helm verify'.

func NewVerify

func NewVerify() *Verify

NewVerify creates a new Verify object with the given configuration.

func (*Verify) Run

func (v *Verify) Run(chartfile string) error

Run executes 'helm verify'.

Jump to

Keyboard shortcuts

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