state

package
v0.69.0 Latest Latest
Warning

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

Go to latest
Published: Jun 1, 2019 License: MIT Imports: 24 Imported by: 0

Documentation

Index

Constants

View Source
const DefaultEnv = "default"
View Source
const MissingFileHandlerDebug = "Debug"
View Source
const MissingFileHandlerError = "Error"
View Source
const MissingFileHandlerInfo = "Info"
View Source
const MissingFileHandlerWarn = "Warn"
View Source
const ReleaseErrorCodeFailure = 1

Variables

This section is empty.

Functions

func NewChartDependencyManager added in v0.61.0

func NewChartDependencyManager(name string, logger *zap.SugaredLogger) *chartDependencyManager

Types

type AffectedReleases added in v0.55.0

type AffectedReleases struct {
	Upgraded []*ReleaseSpec
	Deleted  []*ReleaseSpec
	Failed   []*ReleaseSpec
}

AffectedReleases hold the list of released that where updated, deleted, or in error

func (*AffectedReleases) DisplayAffectedReleases added in v0.55.0

func (ar *AffectedReleases) DisplayAffectedReleases(logger *zap.SugaredLogger)

DisplayAffectedReleases logs the upgraded, deleted and in error releases

type ChartLockedRequirements added in v0.61.0

type ChartLockedRequirements struct {
	ResolvedDependencies []ResolvedChartDependency `yaml:"dependencies"`
}

type ChartMeta added in v0.61.0

type ChartMeta struct {
	Name string `yaml:"name"`
}

type ChartRequirements added in v0.61.0

type ChartRequirements struct {
	UnresolvedDependencies []unresolvedChartDependency `yaml:"dependencies"`
}

type EnvironmentSpec added in v0.28.0

type EnvironmentSpec struct {
	Values  []interface{} `yaml:"values"`
	Secrets []string      `yaml:"secrets"`

	// MissingFileHandler instructs helmfile to fail when unable to find a environment values file listed
	// under `environments.NAME.values`.
	//
	// Possible values are  "Error", "Warn", "Info", "Debug". The default is "Error".
	//
	// Use "Warn", "Info", or "Debug" if you want helmfile to not fail when a values file is missing, while just leaving
	// a message about the missing file at the log-level.
	MissingFileHandler *string `yaml:"missingFileHandler"`
}

type EnvironmentTemplateData added in v0.42.0

type EnvironmentTemplateData struct {
	// Environment is accessible as `.Environment` from any template executed by the renderer
	Environment environment.Environment
	// Namespace is accessible as `.Namespace` from any non-values template executed by the renderer
	Namespace string
}

EnvironmentTemplateData provides variables accessible while executing golang text/template expressions in helmfile and values YAML files

type EnvironmentValuesLoader added in v0.68.0

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

func NewEnvironmentValuesLoader added in v0.68.0

func NewEnvironmentValuesLoader(storage *Storage, readFile func(string) ([]byte, error)) *EnvironmentValuesLoader

func (*EnvironmentValuesLoader) LoadEnvironmentValues added in v0.68.0

func (ld *EnvironmentValuesLoader) LoadEnvironmentValues(missingFileHandler *string, envValues []interface{}) (map[string]interface{}, error)

type HelmSpec added in v0.20.0

type HelmSpec struct {
	KubeContext     string   `yaml:"kubeContext"`
	TillerNamespace string   `yaml:"tillerNamespace"`
	Tillerless      bool     `yaml:"tillerless"`
	Args            []string `yaml:"args"`
	Verify          bool     `yaml:"verify"`
	// Devel, when set to true, use development versions, too. Equivalent to version '>0.0.0-0'
	Devel bool `yaml:"devel"`
	// Wait, if set to true, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful
	Wait bool `yaml:"wait"`
	// Timeout is the time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks, and waits on pod/pvc/svc/deployment readiness) (default 300)
	Timeout int `yaml:"timeout"`
	// RecreatePods, when set to true, instruct helmfile to perform pods restart for the resource if applicable
	RecreatePods bool `yaml:"recreatePods"`
	// Force, when set to true, forces resource update through delete/recreate if needed
	Force bool `yaml:"force"`
	// Atomic, when set to true, restore previous state in case of a failed install/upgrade attempt
	Atomic bool `yaml:"atomic"`

	TLS       bool   `yaml:"tls"`
	TLSCACert string `yaml:"tlsCACert"`
	TLSKey    string `yaml:"tlsKey"`
	TLSCert   string `yaml:"tlsCert"`
}

HelmSpec to defines helmDefault values

type HelmState

type HelmState struct {
	FilePath string

	Environments map[string]EnvironmentSpec `yaml:"environments"`

	Bases              []string          `yaml:"bases"`
	HelmDefaults       HelmSpec          `yaml:"helmDefaults"`
	Helmfiles          []SubHelmfileSpec `yaml:"helmfiles"`
	DeprecatedContext  string            `yaml:"context"`
	DeprecatedReleases []ReleaseSpec     `yaml:"charts"`
	Namespace          string            `yaml:"namespace"`
	Repositories       []RepositorySpec  `yaml:"repositories"`
	Releases           []ReleaseSpec     `yaml:"releases"`
	Selectors          []string

	Templates map[string]TemplateSpec `yaml:"templates"`

	Env environment.Environment
	// contains filtered or unexported fields
}

HelmState structure for the helmfile

func (*HelmState) BuildDeps added in v0.45.0

func (st *HelmState) BuildDeps(helm helmexec.Interface) []error

BuildDeps wrapper for building dependencies on the releases

func (*HelmState) Clean

func (st *HelmState) Clean() []error

Clean will remove any generated secrets

func (*HelmState) DeleteReleases

func (st *HelmState) DeleteReleases(affectedReleases *AffectedReleases, helm helmexec.Interface, purge bool) []error

DeleteReleases wrapper for executing helm delete on the releases

func (*HelmState) DetectReleasesToBeDeleted added in v0.36.0

func (st *HelmState) DetectReleasesToBeDeleted(helm helmexec.Interface) ([]*ReleaseSpec, error)

func (*HelmState) DiffReleases

func (st *HelmState) DiffReleases(helm helmexec.Interface, additionalValues []string, workerLimit int, detailedExitCode, suppressSecrets bool, triggerCleanupEvents bool) ([]*ReleaseSpec, []error)

DiffReleases wrapper for executing helm diff on the releases It returns releases that had any changes

func (*HelmState) ExecuteTemplates added in v0.42.0

func (st *HelmState) ExecuteTemplates() (*HelmState, error)

func (*HelmState) ExpandedHelmfiles added in v0.68.0

func (st *HelmState) ExpandedHelmfiles() ([]SubHelmfileSpec, error)

func (*HelmState) FilterReleases

func (st *HelmState) FilterReleases() error

FilterReleases allows for the execution of helm commands against a subset of the releases in the helmfile.

func (*HelmState) LintReleases added in v0.20.0

func (st *HelmState) LintReleases(helm helmexec.Interface, additionalValues []string, args []string, workerLimit int) []error

LintReleases wrapper for executing helm lint on the releases

func (*HelmState) PrepareReleases added in v0.61.0

func (st *HelmState) PrepareReleases(helm helmexec.Interface, helmfileCommand string) []error

func (*HelmState) ReleaseStatuses added in v0.14.0

func (st *HelmState) ReleaseStatuses(helm helmexec.Interface, workerLimit int) []error

func (*HelmState) RenderValuesFileToBytes added in v0.28.0

func (st *HelmState) RenderValuesFileToBytes(path string) ([]byte, error)

func (*HelmState) ResolveDeps added in v0.61.0

func (st *HelmState) ResolveDeps() (*HelmState, error)

ResolveDeps returns a copy of this helmfile state with the concrete chart version numbers filled in for remote chart dependencies

func (*HelmState) SyncReleases

func (st *HelmState) SyncReleases(affectedReleases *AffectedReleases, helm helmexec.Interface, additionalValues []string, workerLimit int) []error

SyncReleases wrapper for executing helm upgrade on the releases

func (*HelmState) SyncRepos

func (st *HelmState) SyncRepos(helm RepoUpdater) []error

SyncRepos will update the given helm releases

func (*HelmState) TemplateReleases added in v0.31.0

func (st *HelmState) TemplateReleases(helm helmexec.Interface, additionalValues []string, args []string, workerLimit int) []error

TemplateReleases wrapper for executing helm template on the releases

func (*HelmState) TestReleases added in v0.18.0

func (st *HelmState) TestReleases(helm helmexec.Interface, cleanup bool, timeout int, concurrency int) []error

TestReleases wrapper for executing helm test on the releases

func (*HelmState) UpdateDeps

func (st *HelmState) UpdateDeps(helm helmexec.Interface) []error

UpdateDeps wrapper for updating dependencies on the releases

type LabelFilter

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

LabelFilter matches a release with the given positive lables. Negative labels invert the match for cases such as tier!=backend

func ParseLabels

func ParseLabels(l string) (LabelFilter, error)

ParseLabels takes a label in the form foo=bar,baz!=bat and returns a LabelFilter that will match the labels

func (LabelFilter) Match

func (l LabelFilter) Match(r ReleaseSpec) bool

Match will match a release that has the same labels as the filter

type ReleaseError added in v0.23.0

type ReleaseError struct {
	*ReleaseSpec

	Code int
	// contains filtered or unexported fields
}

func (*ReleaseError) Error added in v0.23.0

func (e *ReleaseError) Error() string

type ReleaseFilter

type ReleaseFilter interface {
	// Match returns true if the ReleaseSpec matches the Filter
	Match(r ReleaseSpec) bool
}

ReleaseFilter is used to determine if a given release should be used during helmfile execution

type ReleaseSpec

type ReleaseSpec struct {
	// Chart is the name of the chart being installed to create this release
	Chart   string `yaml:"chart"`
	Version string `yaml:"version"`
	Verify  *bool  `yaml:"verify"`
	// Devel, when set to true, use development versions, too. Equivalent to version '>0.0.0-0'
	Devel *bool `yaml:"devel"`
	// Wait, if set to true, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful
	Wait *bool `yaml:"wait"`
	// Timeout is the time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks, and waits on pod/pvc/svc/deployment readiness) (default 300)
	Timeout *int `yaml:"timeout"`
	// RecreatePods, when set to true, instruct helmfile to perform pods restart for the resource if applicable
	RecreatePods *bool `yaml:"recreatePods"`
	// Force, when set to true, forces resource update through delete/recreate if needed
	Force *bool `yaml:"force"`
	// Installed, when set to true, `delete --purge` the release
	Installed *bool `yaml:"installed"`
	// Atomic, when set to true, restore previous state in case of a failed install/upgrade attempt
	Atomic *bool `yaml:"atomic"`

	// MissingFileHandler is set to either "Error" or "Warn". "Error" instructs helmfile to fail when unable to find a values or secrets file. When "Warn", it prints the file and continues.
	// The default value for MissingFileHandler is "Error".
	MissingFileHandler *string `yaml:"missingFileHandler"`

	// Hooks is a list of extension points paired with operations, that are executed in specific points of the lifecycle of releases defined in helmfile
	Hooks []event.Hook `yaml:"hooks"`

	// Name is the name of this release
	Name      string            `yaml:"name"`
	Namespace string            `yaml:"namespace"`
	Labels    map[string]string `yaml:"labels"`
	Values    []interface{}     `yaml:"values"`
	Secrets   []string          `yaml:"secrets"`
	SetValues []SetValue        `yaml:"set"`

	// The 'env' section is not really necessary any longer, as 'set' would now provide the same functionality
	EnvValues []SetValue `yaml:"env"`

	ValuesPathPrefix string `yaml:"valuesPathPrefix"`

	TillerNamespace string `yaml:"tillerNamespace"`
	Tillerless      *bool  `yaml:"tillerless"`

	TLS       *bool  `yaml:"tls"`
	TLSCACert string `yaml:"tlsCACert"`
	TLSKey    string `yaml:"tlsKey"`
	TLSCert   string `yaml:"tlsCert"`
	// contains filtered or unexported fields
}

ReleaseSpec defines the structure of a helm release

func (ReleaseSpec) Clone added in v0.42.0

func (r ReleaseSpec) Clone() (*ReleaseSpec, error)

func (ReleaseSpec) Desired added in v0.51.1

func (r ReleaseSpec) Desired() bool

func (ReleaseSpec) ExecuteTemplateExpressions added in v0.42.0

func (r ReleaseSpec) ExecuteTemplateExpressions(renderer *tmpl.FileRenderer) (*ReleaseSpec, error)

type ReleaseTemplateData added in v0.42.0

type ReleaseTemplateData struct {
	// Environment is accessible as `.Environment` from any template expression executed by the renderer
	Environment environment.Environment
	// Release is accessible as `.Release` from any template expression executed by the renderer
	Release ReleaseSpec
}

ReleaseTemplateData provides variables accessible while executing golang text/template expressions in releases of a helmfile YAML file

type RepoUpdater added in v0.38.0

type RepoUpdater interface {
	AddRepo(name, repository, certfile, keyfile, username, password string) error
	UpdateRepo() error
}

type RepositorySpec

type RepositorySpec struct {
	Name     string `yaml:"name"`
	URL      string `yaml:"url"`
	CertFile string `yaml:"certFile"`
	KeyFile  string `yaml:"keyFile"`
	Username string `yaml:"username"`
	Password string `yaml:"password"`
}

RepositorySpec that defines values for a helm repo

type ResolvedChartDependency added in v0.61.0

type ResolvedChartDependency struct {
	// ChartName identifies the dependant chart. In Helmfile, ChartName for `chart: stable/envoy` would be just `envoy`.
	// It can't be collided with other charts referenced in the same helmfile spec.
	// That is, collocating `chart: incubator/foo` and `chart: stable/foo` isn't allowed. Name them differently for a work-around.
	ChartName string `yaml:"name"`
	// Repository contains the URL for the helm chart repository that hosts the chart identified by ChartName
	Repository string `yaml:"repository"`
	// Version is the version number of the dependent chart.
	// In the context of helmfile this can be omitted. When omitted, it is considered `*` which results helm/helmfile fetching the latest version.
	Version string `yaml:"version"`
}

type ResolvedDependencies added in v0.61.0

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

func (*ResolvedDependencies) Get added in v0.61.0

func (d *ResolvedDependencies) Get(chart, versionConstraint string) (string, error)

type SetValue

type SetValue struct {
	Name   string   `yaml:"name"`
	Value  string   `yaml:"value"`
	File   string   `yaml:"file"`
	Values []string `yaml:"values"`
}

SetValue are the key values to set on a helm release

type StateCreator added in v0.63.1

type StateCreator struct {
	Strict bool

	LoadFile func(inheritedEnv *environment.Environment, baseDir, file string, evaluateBases bool) (*HelmState, error)
	// contains filtered or unexported fields
}

func NewCreator added in v0.33.4

func NewCreator(logger *zap.SugaredLogger, readFile func(string) ([]byte, error), fileExists func(string) (bool, error), abs func(string) (string, error), glob func(string) ([]string, error)) *StateCreator

func (*StateCreator) LoadEnvValues added in v0.63.1

func (c *StateCreator) LoadEnvValues(target *HelmState, env string, ctxEnv *environment.Environment) (*HelmState, error)

LoadEnvValues loads environment values files relative to the `baseDir`

func (*StateCreator) Parse added in v0.63.1

func (c *StateCreator) Parse(content []byte, baseDir, file string) (*HelmState, error)

Parse parses YAML into HelmState

func (*StateCreator) ParseAndLoad added in v0.63.1

func (c *StateCreator) ParseAndLoad(content []byte, baseDir, file string, envName string, evaluateBases bool, envValues *environment.Environment) (*HelmState, error)

Parses YAML into HelmState, while loading environment values files relative to the `baseDir`

type StateLoadError added in v0.32.0

type StateLoadError struct {
	Cause error
	// contains filtered or unexported fields
}

func (*StateLoadError) Error added in v0.32.0

func (e *StateLoadError) Error() string

type Storage added in v0.68.0

type Storage struct {
	FilePath string
	// contains filtered or unexported fields
}

func NewStorage added in v0.68.0

func NewStorage(forFile string, logger *zap.SugaredLogger, glob func(string) ([]string, error)) *Storage

func (*Storage) ExpandPaths added in v0.68.0

func (st *Storage) ExpandPaths(globPattern string) ([]string, error)

func (*Storage) JoinBase added in v0.68.0

func (st *Storage) JoinBase(relPath string) string

JoinBase returns an absolute path in the form basePath/relative

type SubHelmfileSpec added in v0.56.0

type SubHelmfileSpec struct {
	Path               string   //path or glob pattern for the sub helmfiles
	Selectors          []string //chosen selectors for the sub helmfiles
	SelectorsInherited bool     //do the sub helmfiles inherits from parent selectors

	Environment SubhelmfileEnvironmentSpec
}

SubHelmfileSpec defines the subhelmfile path and options

func (*SubHelmfileSpec) UnmarshalYAML added in v0.56.0

func (hf *SubHelmfileSpec) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML will unmarshal the helmfile yaml section and fill the SubHelmfileSpec structure this is required to keep allowing string scalar for defining helmfile

type SubhelmfileEnvironmentSpec added in v0.68.0

type SubhelmfileEnvironmentSpec struct {
	OverrideValues []interface{} `yaml:"values"`
}

type TemplateSpec added in v0.42.0

type TemplateSpec struct {
	ReleaseSpec `yaml:",inline"`
}

TemplateSpec defines the structure of a reusable and composable template for helm releases.

type TestFs added in v0.63.2

type TestFs struct {
	Cwd string

	GlobFixtures map[string][]string
	// contains filtered or unexported fields
}

func NewTestFs added in v0.63.2

func NewTestFs(files map[string]string) *TestFs

func (*TestFs) Abs added in v0.63.2

func (f *TestFs) Abs(path string) (string, error)

func (*TestFs) Chdir added in v0.63.2

func (f *TestFs) Chdir(dir string) error

func (*TestFs) DirectoryExistsAt added in v0.63.2

func (f *TestFs) DirectoryExistsAt(path string) bool

func (*TestFs) FileExists added in v0.64.2

func (f *TestFs) FileExists(path string) (bool, error)

func (*TestFs) FileExistsAt added in v0.63.2

func (f *TestFs) FileExistsAt(path string) bool

func (*TestFs) FileReaderCalls added in v0.63.2

func (f *TestFs) FileReaderCalls() int

func (*TestFs) Getwd added in v0.63.2

func (f *TestFs) Getwd() (string, error)

func (*TestFs) Glob added in v0.63.2

func (f *TestFs) Glob(relPattern string) ([]string, error)

func (*TestFs) ReadFile added in v0.63.2

func (f *TestFs) ReadFile(filename string) ([]byte, error)

func (*TestFs) SuccessfulReads added in v0.63.2

func (f *TestFs) SuccessfulReads() []string

type UndefinedEnvError added in v0.32.0

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

func (*UndefinedEnvError) Error added in v0.32.0

func (e *UndefinedEnvError) Error() string

type UnresolvedDependencies added in v0.61.0

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

func (*UnresolvedDependencies) Add added in v0.61.0

func (d *UnresolvedDependencies) Add(chart, url, versionConstraint string) error

func (*UnresolvedDependencies) ToChartRequirements added in v0.61.0

func (d *UnresolvedDependencies) ToChartRequirements() *ChartRequirements

Jump to

Keyboard shortcuts

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