Make a few helmfile sub-commands consistently support needs-related flags (#78)
* Make a few helmfile sub-commands to consistently support needs-related flags * helmfile-diff adds support for --include-transitive-needs * helmfile-template adds support for --skip-needs * helmfile-lint adds support for --skip-needs, --include-needs, and --include-transitive-needs Ref https://github.com/roboll/helmfile/issues/2055 Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com> * Fix a few helmfile-lint needs related bugs and add tests Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com> * Is include-transitive-needs realy working as intended? 🤔 Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com> * Confirm that it does fail on unselected need by default Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com> * Add missing testdata Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com> * Test helmfile-template for include/skip needs support Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com> * Fix a few terms Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com> * Add more tests to better know the current helmfile-diff behavior around needs Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com> * Fix failing tests Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com> * Fix helmfile-diff to consistently handle skip/include-needs Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com> * Extract testhelper.RequireLog for reusing Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com> * Fix all bugs and test cases for TestDiff and TestDiff_2 Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com> * Fix TestDiff_2 Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com> * Fix TestDiff Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com> * Fix TestDiffWithNeeds Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com> * Unify behavior on including disabled releases as needs for lint and template Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com> * Fix bug that --include-transitive-needs does not imply include-needs Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com>
This commit is contained in:
parent
3e60f72d1f
commit
fc306ec3d1
|
|
@ -44,6 +44,10 @@ func addDiffSubcommand(cliApp *cli.App) {
|
|||
Name: "include-needs",
|
||||
Usage: `automatically include releases from the target release's "needs" when --selector/-l flag is provided. Does nothing when when --selector/-l flag is not provided`,
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "include-transitive-needs",
|
||||
Usage: `like --include-needs, but also includes transitive needs (needs of needs). Does nothing when when --selector/-l flag is not provided. Overrides exclusions of other selectors and conditions.`,
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "skip-diff-on-install",
|
||||
Usage: "Skips running helm-diff on releases being newly installed on this apply. Useful when the release manifests are too huge to be reviewed, or it's too time-consuming to diff at all",
|
||||
|
|
|
|||
|
|
@ -49,6 +49,10 @@ func addTemplateSubcommand(cliApp *cli.App) {
|
|||
Name: "skip-tests",
|
||||
Usage: "skip tests from templated output",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "skip-needs",
|
||||
Usage: `do not automatically include releases from the target release's "needs" when --selector/-l flag is provided. Does nothing when when --selector/-l flag is not provided. Defaults to true when --include-needs or --include-transitive-needs is not provided`,
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "include-needs",
|
||||
Usage: `automatically include releases from the target release's "needs" when --selector/-l flag is provided. Does nothing when when --selector/-l flag is not provided`,
|
||||
|
|
|
|||
245
pkg/app/app.go
245
pkg/app/app.go
|
|
@ -200,7 +200,7 @@ func (a *App) Diff(c DiffConfigProvider) error {
|
|||
}
|
||||
|
||||
return matched, criticalErrs
|
||||
}, false)
|
||||
}, c.IncludeTransitiveNeeds())
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
@ -318,7 +318,7 @@ func (a *App) Lint(c LintConfigProvider) error {
|
|||
}
|
||||
|
||||
return
|
||||
}, false, SetFilter(true))
|
||||
}, c.IncludeTransitiveNeeds())
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
@ -1459,126 +1459,75 @@ Do you really want to delete?
|
|||
}
|
||||
|
||||
func (a *App) diff(r *Run, c DiffConfigProvider) (*string, bool, bool, []error) {
|
||||
st := r.state
|
||||
var (
|
||||
infoMsg *string
|
||||
updated, deleted map[string]state.ReleaseSpec
|
||||
)
|
||||
|
||||
selectedReleases, deduplicatedReleases, err := a.getSelectedReleases(r, false)
|
||||
if err != nil {
|
||||
return nil, false, false, []error{err}
|
||||
}
|
||||
ok, errs := a.withNeeds(r, c, true, func(st *state.HelmState) []error {
|
||||
helm := r.helm
|
||||
|
||||
if len(selectedReleases) == 0 {
|
||||
return nil, false, false, nil
|
||||
}
|
||||
helm.SetExtraArgs(argparser.GetArgs(c.Args(), r.state)...)
|
||||
|
||||
r.helm.SetExtraArgs(argparser.GetArgs(c.Args(), r.state)...)
|
||||
var errs []error
|
||||
|
||||
opts := &state.DiffOpts{
|
||||
Context: c.Context(),
|
||||
Output: c.DiffOutput(),
|
||||
Color: c.Color(),
|
||||
NoColor: c.NoColor(),
|
||||
Set: c.Set(),
|
||||
SkipDiffOnInstall: c.SkipDiffOnInstall(),
|
||||
}
|
||||
|
||||
st.Releases = deduplicatedReleases
|
||||
|
||||
plan, err := st.PlanReleases(state.PlanOptions{Reverse: false, SelectedReleases: selectedReleases, SkipNeeds: c.SkipNeeds(), IncludeNeeds: c.IncludeNeeds(), IncludeTransitiveNeeds: false})
|
||||
if err != nil {
|
||||
return nil, false, false, []error{err}
|
||||
}
|
||||
|
||||
var toDiffWithNeeds []state.ReleaseSpec
|
||||
|
||||
for _, rs := range plan {
|
||||
for _, r := range rs {
|
||||
toDiffWithNeeds = append(toDiffWithNeeds, r.ReleaseSpec)
|
||||
opts := &state.DiffOpts{
|
||||
Context: c.Context(),
|
||||
Output: c.DiffOutput(),
|
||||
Color: c.Color(),
|
||||
NoColor: c.NoColor(),
|
||||
Set: c.Set(),
|
||||
SkipDiffOnInstall: c.SkipDiffOnInstall(),
|
||||
}
|
||||
}
|
||||
|
||||
// Diff only targeted releases
|
||||
filtered := &Run{
|
||||
state: st,
|
||||
helm: helm,
|
||||
ctx: r.ctx,
|
||||
Ask: r.Ask,
|
||||
}
|
||||
infoMsg, updated, deleted, errs = filtered.diff(true, c.DetailedExitcode(), c, opts)
|
||||
|
||||
st.Releases = toDiffWithNeeds
|
||||
return errs
|
||||
})
|
||||
|
||||
filtered := &Run{
|
||||
state: st,
|
||||
helm: r.helm,
|
||||
ctx: r.ctx,
|
||||
Ask: r.Ask,
|
||||
}
|
||||
|
||||
infoMsg, updated, deleted, errs := filtered.diff(true, c.DetailedExitcode(), c, opts)
|
||||
|
||||
return infoMsg, true, len(deleted) > 0 || len(updated) > 0, errs
|
||||
return infoMsg, ok, len(deleted) > 0 || len(updated) > 0, errs
|
||||
}
|
||||
|
||||
func (a *App) lint(r *Run, c LintConfigProvider) (bool, []error, []error) {
|
||||
st := r.state
|
||||
helm := r.helm
|
||||
|
||||
allReleases := st.GetReleasesWithOverrides()
|
||||
|
||||
selectedReleases, _, err := a.getSelectedReleases(r, false)
|
||||
if err != nil {
|
||||
return false, nil, []error{err}
|
||||
}
|
||||
if len(selectedReleases) == 0 {
|
||||
return false, nil, nil
|
||||
}
|
||||
|
||||
// Do build deps and prepare only on selected releases so that we won't waste time
|
||||
// on running various helm commands on unnecessary releases
|
||||
st.Releases = selectedReleases
|
||||
|
||||
var toLint []state.ReleaseSpec
|
||||
for _, r := range selectedReleases {
|
||||
if r.Installed != nil && !*r.Installed {
|
||||
continue
|
||||
}
|
||||
toLint = append(toLint, r)
|
||||
}
|
||||
|
||||
var errs []error
|
||||
|
||||
// Traverse DAG of all the releases so that we don't suffer from false-positive missing dependencies
|
||||
st.Releases = allReleases
|
||||
|
||||
args := argparser.GetArgs(c.Args(), st)
|
||||
|
||||
// Reset the extra args if already set, not to break `helm fetch` by adding the args intended for `lint`
|
||||
helm.SetExtraArgs()
|
||||
|
||||
if len(args) > 0 {
|
||||
helm.SetExtraArgs(args...)
|
||||
}
|
||||
|
||||
var deferredLintErrs []error
|
||||
|
||||
if len(toLint) > 0 {
|
||||
_, templateErrs := withDAG(st, helm, a.Logger, state.PlanOptions{SelectedReleases: toLint, Reverse: false, SkipNeeds: true}, a.WrapWithoutSelector(func(subst *state.HelmState, helm helmexec.Interface) []error {
|
||||
opts := &state.LintOpts{
|
||||
Set: c.Set(),
|
||||
SkipCleanup: c.SkipCleanup(),
|
||||
}
|
||||
lintErrs := subst.LintReleases(helm, c.Values(), args, c.Concurrency(), opts)
|
||||
if len(lintErrs) == 1 {
|
||||
if err, ok := lintErrs[0].(helmexec.ExitError); ok {
|
||||
if err.Code > 0 {
|
||||
deferredLintErrs = append(deferredLintErrs, err)
|
||||
ok, errs := a.withNeeds(r, c, false, func(st *state.HelmState) []error {
|
||||
helm := r.helm
|
||||
|
||||
return nil
|
||||
}
|
||||
args := argparser.GetArgs(c.Args(), st)
|
||||
|
||||
// Reset the extra args if already set, not to break `helm fetch` by adding the args intended for `lint`
|
||||
helm.SetExtraArgs()
|
||||
|
||||
if len(args) > 0 {
|
||||
helm.SetExtraArgs(args...)
|
||||
}
|
||||
|
||||
opts := &state.LintOpts{
|
||||
Set: c.Set(),
|
||||
SkipCleanup: c.SkipCleanup(),
|
||||
}
|
||||
lintErrs := st.LintReleases(helm, c.Values(), args, c.Concurrency(), opts)
|
||||
if len(lintErrs) == 1 {
|
||||
if err, ok := lintErrs[0].(helmexec.ExitError); ok {
|
||||
if err.Code > 0 {
|
||||
deferredLintErrs = append(deferredLintErrs, err)
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
return lintErrs
|
||||
}))
|
||||
|
||||
if len(templateErrs) > 0 {
|
||||
errs = append(errs, templateErrs...)
|
||||
}
|
||||
}
|
||||
return true, deferredLintErrs, errs
|
||||
|
||||
return lintErrs
|
||||
})
|
||||
|
||||
return ok, deferredLintErrs, errs
|
||||
}
|
||||
|
||||
func (a *App) status(r *Run, c StatusesConfigProvider) (bool, []error) {
|
||||
|
|
@ -1795,10 +1744,33 @@ func (a *App) sync(r *Run, c SyncConfigProvider) (bool, []error) {
|
|||
}
|
||||
|
||||
func (a *App) template(r *Run, c TemplateConfigProvider) (bool, []error) {
|
||||
st := r.state
|
||||
helm := r.helm
|
||||
return a.withNeeds(r, c, false, func(st *state.HelmState) []error {
|
||||
helm := r.helm
|
||||
|
||||
selectedReleases, selectedAndNeededReleases, err := a.getSelectedReleases(r, c.IncludeTransitiveNeeds())
|
||||
args := argparser.GetArgs(c.Args(), st)
|
||||
|
||||
// Reset the extra args if already set, not to break `helm fetch` by adding the args intended for `lint`
|
||||
helm.SetExtraArgs()
|
||||
|
||||
if len(args) > 0 {
|
||||
helm.SetExtraArgs(args...)
|
||||
}
|
||||
|
||||
opts := &state.TemplateOpts{
|
||||
Set: c.Set(),
|
||||
IncludeCRDs: c.IncludeCRDs(),
|
||||
OutputDirTemplate: c.OutputDirTemplate(),
|
||||
SkipCleanup: c.SkipCleanup(),
|
||||
SkipTests: c.SkipTests(),
|
||||
}
|
||||
return st.TemplateReleases(helm, c.OutputDir(), c.Values(), args, c.Concurrency(), c.Validate(), opts)
|
||||
})
|
||||
}
|
||||
|
||||
func (a *App) withNeeds(r *Run, c DAGConfig, includeDisabled bool, f func(*state.HelmState) []error) (bool, []error) {
|
||||
st := r.state
|
||||
|
||||
selectedReleases, deduplicated, err := a.getSelectedReleases(r, false)
|
||||
if err != nil {
|
||||
return false, []error{err}
|
||||
}
|
||||
|
|
@ -1810,9 +1782,14 @@ func (a *App) template(r *Run, c TemplateConfigProvider) (bool, []error) {
|
|||
// Without this, `PlanReleases` conflates duplicates and return both in `batches`,
|
||||
// even if we provided `SelectedReleases: selectedReleases`.
|
||||
// See https://github.com/roboll/helmfile/issues/1818 for more context.
|
||||
st.Releases = selectedAndNeededReleases
|
||||
st.Releases = deduplicated
|
||||
|
||||
batches, err := st.PlanReleases(state.PlanOptions{Reverse: false, SelectedReleases: selectedReleases, IncludeNeeds: c.IncludeNeeds(), IncludeTransitiveNeeds: c.IncludeTransitiveNeeds(), SkipNeeds: !c.IncludeNeeds()})
|
||||
includeNeeds := c.IncludeNeeds()
|
||||
if c.IncludeTransitiveNeeds() {
|
||||
includeNeeds = true
|
||||
}
|
||||
|
||||
batches, err := st.PlanReleases(state.PlanOptions{Reverse: false, SelectedReleases: selectedReleases, IncludeNeeds: includeNeeds, IncludeTransitiveNeeds: c.IncludeTransitiveNeeds(), SkipNeeds: c.SkipNeeds()})
|
||||
if err != nil {
|
||||
return false, []error{err}
|
||||
}
|
||||
|
|
@ -1838,36 +1815,34 @@ func (a *App) template(r *Run, c TemplateConfigProvider) (bool, []error) {
|
|||
}
|
||||
}
|
||||
|
||||
var errs []error
|
||||
var rels []state.ReleaseSpec
|
||||
|
||||
// Traverse DAG of all the releases so that we don't suffer from false-positive missing dependencies
|
||||
st.Releases = selectedReleasesWithNeeds
|
||||
|
||||
args := argparser.GetArgs(c.Args(), st)
|
||||
|
||||
// Reset the extra args if already set, not to break `helm fetch` by adding the args intended for `lint`
|
||||
helm.SetExtraArgs()
|
||||
|
||||
if len(args) > 0 {
|
||||
helm.SetExtraArgs(args...)
|
||||
// toRender already contains the direct and transitive needs depending on the DAG options.
|
||||
// That's why we don't pass in `IncludeNeeds: c.IncludeNeeds(), IncludeTransitiveNeeds: c.IncludeTransitiveNeeds()` here.
|
||||
// Otherwise, in case include-needs=true, it will include the needs of needs, which results in unexpectedly introducing transitive needs,
|
||||
// even if include-transitive-needs=true is unspecified.
|
||||
if _, errs := withDAG(st, r.helm, a.Logger, state.PlanOptions{SelectedReleases: toRender, Reverse: false, SkipNeeds: c.SkipNeeds(), IncludeNeeds: includeNeeds}, a.WrapWithoutSelector(func(subst *state.HelmState, helm helmexec.Interface) []error {
|
||||
rels = append(rels, subst.Releases...)
|
||||
return nil
|
||||
})); len(errs) > 0 {
|
||||
return false, errs
|
||||
}
|
||||
|
||||
if len(toRender) > 0 {
|
||||
_, templateErrs := withDAG(st, helm, a.Logger, state.PlanOptions{SelectedReleases: toRender, Reverse: false, SkipNeeds: true, IncludeTransitiveNeeds: c.IncludeTransitiveNeeds()}, a.WrapWithoutSelector(func(subst *state.HelmState, helm helmexec.Interface) []error {
|
||||
opts := &state.TemplateOpts{
|
||||
Set: c.Set(),
|
||||
IncludeCRDs: c.IncludeCRDs(),
|
||||
OutputDirTemplate: c.OutputDirTemplate(),
|
||||
SkipCleanup: c.SkipCleanup(),
|
||||
SkipTests: c.SkipTests(),
|
||||
}
|
||||
return subst.TemplateReleases(helm, c.OutputDir(), c.Values(), args, c.Concurrency(), c.Validate(), opts)
|
||||
}))
|
||||
|
||||
if len(templateErrs) > 0 {
|
||||
errs = append(errs, templateErrs...)
|
||||
if includeDisabled {
|
||||
for _, d := range releasesDisabled {
|
||||
rels = append(rels, d)
|
||||
}
|
||||
}
|
||||
|
||||
// Traverse DAG of all the releases so that we don't suffer from false-positive missing dependencies
|
||||
// and we don't fail on dependenciese on disabled releases.
|
||||
// In diff, we need to diff on disabled releases to show to-be-uninstalled releases.
|
||||
// In lint and template, we'd need to run respective helm commands only on enabled releases,
|
||||
// without failing on disabled releases.
|
||||
st.Releases = rels
|
||||
|
||||
errs := f(st)
|
||||
|
||||
return true, errs
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -208,6 +208,14 @@ releases:
|
|||
{Name: "external-secrets", Chart: "incubator/raw", Flags: "--namespacedefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
{Name: "my-release", Chart: "incubator/raw", Flags: "--namespacedefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
},
|
||||
lists: map[exectest.ListKey]string{
|
||||
{Filter: "^external-secrets$", Flags: helmV2ListFlagsWithoutKubeContext}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
external-secrets 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^my-release$", Flags: helmV2ListFlagsWithoutKubeContext}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
log: `processing file "helmfile.yaml" in directory "."
|
||||
|
|
@ -284,14 +292,12 @@ GROUP RELEASES
|
|||
2 default/my-release
|
||||
|
||||
processing releases in group 1/2: default/external-secrets
|
||||
getting deployed release version failed:unexpected list key: {^external-secrets$ --deleting--deployed--failed--pending}
|
||||
processing releases in group 2/2: default/my-release
|
||||
getting deployed release version failed:unexpected list key: {^my-release$ --deleting--deployed--failed--pending}
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw
|
||||
my-release incubator/raw
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
|
|
@ -466,6 +472,17 @@ releases:
|
|||
{Name: "external-secrets", Chart: "incubator/raw", Flags: "--namespacedefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
{Name: "my-release", Chart: "incubator/raw", Flags: "--namespacedefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
},
|
||||
lists: map[exectest.ListKey]string{
|
||||
{Filter: "^kubernetes-external-secrets$", Flags: helmV2ListFlagsWithoutKubeContext}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
kubernetes-external-secrets 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^external-secrets$", Flags: helmV2ListFlagsWithoutKubeContext}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
external-secrets 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^my-release$", Flags: helmV2ListFlagsWithoutKubeContext}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
log: `processing file "helmfile.yaml" in directory "."
|
||||
|
|
@ -544,17 +561,14 @@ GROUP RELEASES
|
|||
3 default/my-release
|
||||
|
||||
processing releases in group 1/3: kube-system/kubernetes-external-secrets
|
||||
getting deployed release version failed:unexpected list key: {^kubernetes-external-secrets$ --deleting--deployed--failed--pending}
|
||||
processing releases in group 2/3: default/external-secrets
|
||||
getting deployed release version failed:unexpected list key: {^external-secrets$ --deleting--deployed--failed--pending}
|
||||
processing releases in group 3/3: default/my-release
|
||||
getting deployed release version failed:unexpected list key: {^my-release$ --deleting--deployed--failed--pending}
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
kubernetes-external-secrets incubator/raw
|
||||
external-secrets incubator/raw
|
||||
my-release incubator/raw
|
||||
kubernetes-external-secrets incubator/raw 3.1.0
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
|
|
@ -596,12 +610,19 @@ releases:
|
|||
},
|
||||
selectors: []string{"app=test"},
|
||||
upgraded: []exectest.Release{},
|
||||
lists: nil,
|
||||
diffs: map[exectest.DiffKey]error{
|
||||
{Name: "kubernetes-external-secrets", Chart: "incubator/raw", Flags: "--namespacekube-system--detailed-exitcode"}: nil,
|
||||
{Name: "external-secrets", Chart: "incubator/raw", Flags: "--namespacedefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
{Name: "my-release", Chart: "incubator/raw", Flags: "--namespacedefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
},
|
||||
lists: map[exectest.ListKey]string{
|
||||
{Filter: "^external-secrets$", Flags: helmV2ListFlagsWithoutKubeContext}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
external-secrets 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^my-release$", Flags: helmV2ListFlagsWithoutKubeContext}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
log: `processing file "helmfile.yaml" in directory "."
|
||||
|
|
@ -678,14 +699,12 @@ GROUP RELEASES
|
|||
2 default/my-release
|
||||
|
||||
processing releases in group 1/2: default/external-secrets
|
||||
getting deployed release version failed:unexpected list key: {^external-secrets$ --deleting--deployed--failed--pending}
|
||||
processing releases in group 2/2: default/my-release
|
||||
getting deployed release version failed:unexpected list key: {^my-release$ --deleting--deployed--failed--pending}
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw
|
||||
my-release incubator/raw
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
|
|
@ -729,9 +748,14 @@ releases:
|
|||
selectors: []string{"app=test"},
|
||||
upgraded: []exectest.Release{},
|
||||
lists: map[exectest.ListKey]string{
|
||||
// delete frontend-v1 and backend-v1
|
||||
{Filter: "^kubernetes-external-secrets$", Flags: helmV2ListFlagsWithoutKubeContext}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
^kubernetes-external-secrets$ 4 Fri Nov 1 08:40:07 2019 DEPLOYED backend-3.1.0 3.1.0 default
|
||||
kubernetes-external-secrets 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^external-secrets$", Flags: helmV2ListFlagsWithoutKubeContext}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
external-secrets 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^my-release$", Flags: helmV2ListFlagsWithoutKubeContext}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
diffs: map[exectest.DiffKey]error{
|
||||
|
|
@ -822,14 +846,12 @@ GROUP RELEASES
|
|||
2 default/my-release
|
||||
|
||||
processing releases in group 1/2: default/external-secrets
|
||||
getting deployed release version failed:unexpected list key: {^external-secrets$ --deleting--deployed--failed--pending}
|
||||
processing releases in group 2/2: default/my-release
|
||||
getting deployed release version failed:unexpected list key: {^my-release$ --deleting--deployed--failed--pending}
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw
|
||||
my-release incubator/raw
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
|
||||
|
||||
DELETED RELEASES:
|
||||
|
|
@ -877,8 +899,13 @@ releases:
|
|||
selectors: []string{"app=test"},
|
||||
upgraded: []exectest.Release{},
|
||||
lists: map[exectest.ListKey]string{
|
||||
// delete frontend-v1 and backend-v1
|
||||
{Filter: "^kubernetes-external-secrets$", Flags: helmV2ListFlagsWithoutKubeContext}: ``,
|
||||
{Filter: "^external-secrets$", Flags: helmV2ListFlagsWithoutKubeContext}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
external-secrets 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^my-release$", Flags: helmV2ListFlagsWithoutKubeContext}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
diffs: map[exectest.DiffKey]error{
|
||||
{Name: "external-secrets", Chart: "incubator/raw", Flags: "--namespacedefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
|
|
@ -962,14 +989,12 @@ GROUP RELEASES
|
|||
2 default/my-release
|
||||
|
||||
processing releases in group 1/2: default/external-secrets
|
||||
getting deployed release version failed:unexpected list key: {^external-secrets$ --deleting--deployed--failed--pending}
|
||||
processing releases in group 2/2: default/my-release
|
||||
getting deployed release version failed:unexpected list key: {^my-release$ --deleting--deployed--failed--pending}
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw
|
||||
my-release incubator/raw
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
|
|
|
|||
|
|
@ -210,6 +210,14 @@ releases:
|
|||
{Name: "external-secrets", Chart: "incubator/raw", Flags: "--kube-contextdefault--namespacedefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
{Name: "my-release", Chart: "incubator/raw", Flags: "--kube-contextdefault--namespacedefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
},
|
||||
lists: map[exectest.ListKey]string{
|
||||
{Filter: "^external-secrets$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
external-secrets 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^my-release$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
log: `processing file "helmfile.yaml" in directory "."
|
||||
|
|
@ -286,14 +294,12 @@ GROUP RELEASES
|
|||
2 default/default/my-release
|
||||
|
||||
processing releases in group 1/2: default/default/external-secrets
|
||||
getting deployed release version failed:unexpected list key: {^external-secrets$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
processing releases in group 2/2: default/default/my-release
|
||||
getting deployed release version failed:unexpected list key: {^my-release$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw
|
||||
my-release incubator/raw
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
|
|
@ -468,6 +474,17 @@ releases:
|
|||
{Name: "external-secrets", Chart: "incubator/raw", Flags: "--kube-contextdefault--namespacedefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
{Name: "my-release", Chart: "incubator/raw", Flags: "--kube-contextdefault--namespacedefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
},
|
||||
lists: map[exectest.ListKey]string{
|
||||
{Filter: "^kubernetes-external-secrets$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
kubernetes-external-secrets 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^external-secrets$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
external-secrets 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^my-release$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
log: `processing file "helmfile.yaml" in directory "."
|
||||
|
|
@ -546,17 +563,14 @@ GROUP RELEASES
|
|||
3 default/default/my-release
|
||||
|
||||
processing releases in group 1/3: default/kube-system/kubernetes-external-secrets
|
||||
getting deployed release version failed:unexpected list key: {^kubernetes-external-secrets$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
processing releases in group 2/3: default/default/external-secrets
|
||||
getting deployed release version failed:unexpected list key: {^external-secrets$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
processing releases in group 3/3: default/default/my-release
|
||||
getting deployed release version failed:unexpected list key: {^my-release$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
kubernetes-external-secrets incubator/raw
|
||||
external-secrets incubator/raw
|
||||
my-release incubator/raw
|
||||
kubernetes-external-secrets incubator/raw 3.1.0
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
|
|
@ -598,12 +612,19 @@ releases:
|
|||
},
|
||||
selectors: []string{"app=test"},
|
||||
upgraded: []exectest.Release{},
|
||||
lists: nil,
|
||||
diffs: map[exectest.DiffKey]error{
|
||||
{Name: "kubernetes-external-secrets", Chart: "incubator/raw", Flags: "--kube-contextdefault--namespacekube-system--detailed-exitcode"}: nil,
|
||||
{Name: "external-secrets", Chart: "incubator/raw", Flags: "--kube-contextdefault--namespacedefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
{Name: "my-release", Chart: "incubator/raw", Flags: "--kube-contextdefault--namespacedefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
},
|
||||
lists: map[exectest.ListKey]string{
|
||||
{Filter: "^external-secrets$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
external-secrets 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^my-release$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
log: `processing file "helmfile.yaml" in directory "."
|
||||
|
|
@ -680,14 +701,12 @@ GROUP RELEASES
|
|||
2 default/default/my-release
|
||||
|
||||
processing releases in group 1/2: default/default/external-secrets
|
||||
getting deployed release version failed:unexpected list key: {^external-secrets$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
processing releases in group 2/2: default/default/my-release
|
||||
getting deployed release version failed:unexpected list key: {^my-release$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw
|
||||
my-release incubator/raw
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
|
|
@ -731,9 +750,14 @@ releases:
|
|||
selectors: []string{"app=test"},
|
||||
upgraded: []exectest.Release{},
|
||||
lists: map[exectest.ListKey]string{
|
||||
// delete frontend-v1 and backend-v1
|
||||
{Filter: "^kubernetes-external-secrets$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
^kubernetes-external-secrets$ 4 Fri Nov 1 08:40:07 2019 DEPLOYED backend-3.1.0 3.1.0 default
|
||||
kubernetes-external-secrets 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^external-secrets$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
external-secrets 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^my-release$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
diffs: map[exectest.DiffKey]error{
|
||||
|
|
@ -824,14 +848,12 @@ GROUP RELEASES
|
|||
2 default/default/my-release
|
||||
|
||||
processing releases in group 1/2: default/default/external-secrets
|
||||
getting deployed release version failed:unexpected list key: {^external-secrets$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
processing releases in group 2/2: default/default/my-release
|
||||
getting deployed release version failed:unexpected list key: {^my-release$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw
|
||||
my-release incubator/raw
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
|
||||
|
||||
DELETED RELEASES:
|
||||
|
|
@ -879,8 +901,13 @@ releases:
|
|||
selectors: []string{"app=test"},
|
||||
upgraded: []exectest.Release{},
|
||||
lists: map[exectest.ListKey]string{
|
||||
// delete frontend-v1 and backend-v1
|
||||
{Filter: "^kubernetes-external-secrets$", Flags: helmV2ListFlags}: ``,
|
||||
{Filter: "^external-secrets$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
external-secrets 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^my-release$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
diffs: map[exectest.DiffKey]error{
|
||||
{Name: "external-secrets", Chart: "incubator/raw", Flags: "--kube-contextdefault--namespacedefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
|
|
@ -964,14 +991,12 @@ GROUP RELEASES
|
|||
2 default/default/my-release
|
||||
|
||||
processing releases in group 1/2: default/default/external-secrets
|
||||
getting deployed release version failed:unexpected list key: {^external-secrets$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
processing releases in group 2/2: default/default/my-release
|
||||
getting deployed release version failed:unexpected list key: {^my-release$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw
|
||||
my-release incubator/raw
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
|
|
@ -1015,6 +1040,17 @@ releases:
|
|||
{Name: "serviceB", Chart: "my/chart", Flags: "--kube-contextdefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
{Name: "serviceC", Chart: "my/chart", Flags: "--kube-contextdefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
},
|
||||
lists: map[exectest.ListKey]string{
|
||||
{Filter: "^serviceA$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
serviceA 4 Fri Nov 1 08:40:07 2019 DEPLOYED chart-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^serviceB$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
serviceB 4 Fri Nov 1 08:40:07 2019 DEPLOYED chart-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^serviceC$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
serviceC 4 Fri Nov 1 08:40:07 2019 DEPLOYED chart-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
log: `processing file "helmfile.yaml" in directory "."
|
||||
|
|
@ -1085,17 +1121,14 @@ GROUP RELEASES
|
|||
3 default//serviceA
|
||||
|
||||
processing releases in group 1/3: default//serviceC
|
||||
getting deployed release version failed:unexpected list key: {^serviceC$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
processing releases in group 2/3: default//serviceB
|
||||
getting deployed release version failed:unexpected list key: {^serviceB$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
processing releases in group 3/3: default//serviceA
|
||||
getting deployed release version failed:unexpected list key: {^serviceA$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
serviceC my/chart
|
||||
serviceB my/chart
|
||||
serviceA my/chart
|
||||
serviceC my/chart 3.1.0
|
||||
serviceB my/chart 3.1.0
|
||||
serviceA my/chart 3.1.0
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
|
|
@ -1231,6 +1264,11 @@ releases:
|
|||
diffs: map[exectest.DiffKey]error{
|
||||
{Name: "foo", Chart: "incubator/raw", Flags: "--kube-contextdefault--namespacedefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
},
|
||||
lists: map[exectest.ListKey]string{
|
||||
{Filter: "^foo$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
foo 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
error: "",
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
|
|
@ -1292,6 +1330,11 @@ releases:
|
|||
diffs: map[exectest.DiffKey]error{
|
||||
{Name: "foo", Chart: "incubator/raw", Flags: "--kube-contextdefault--namespacedefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
},
|
||||
lists: map[exectest.ListKey]string{
|
||||
{Filter: "^foo$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
foo 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
error: "",
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,307 @@
|
|||
package app
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"io"
|
||||
"path/filepath"
|
||||
"sync"
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"github.com/helmfile/helmfile/pkg/exectest"
|
||||
"github.com/helmfile/helmfile/pkg/helmexec"
|
||||
"github.com/helmfile/helmfile/pkg/testhelper"
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/variantdev/vals"
|
||||
)
|
||||
|
||||
func TestDiffWithNeeds(t *testing.T) {
|
||||
type fields struct {
|
||||
skipNeeds bool
|
||||
includeNeeds bool
|
||||
includeTransitiveNeeds bool
|
||||
}
|
||||
|
||||
type testcase struct {
|
||||
fields fields
|
||||
ns string
|
||||
error string
|
||||
selectors []string
|
||||
diffed []exectest.Release
|
||||
}
|
||||
|
||||
check := func(t *testing.T, tc testcase) {
|
||||
t.Helper()
|
||||
|
||||
wantDiffs := tc.diffed
|
||||
|
||||
var helm = &exectest.Helm{
|
||||
FailOnUnexpectedList: true,
|
||||
FailOnUnexpectedDiff: true,
|
||||
DiffMutex: &sync.Mutex{},
|
||||
ChartsMutex: &sync.Mutex{},
|
||||
ReleasesMutex: &sync.Mutex{},
|
||||
}
|
||||
|
||||
bs := &bytes.Buffer{}
|
||||
|
||||
func() {
|
||||
t.Helper()
|
||||
|
||||
logReader, logWriter := io.Pipe()
|
||||
|
||||
logFlushed := &sync.WaitGroup{}
|
||||
// Ensure all the log is consumed into `bs` by calling `logWriter.Close()` followed by `logFlushed.Wait()`
|
||||
logFlushed.Add(1)
|
||||
go func() {
|
||||
scanner := bufio.NewScanner(logReader)
|
||||
for scanner.Scan() {
|
||||
bs.Write(scanner.Bytes())
|
||||
bs.WriteString("\n")
|
||||
}
|
||||
logFlushed.Done()
|
||||
}()
|
||||
|
||||
defer func() {
|
||||
// This is here to avoid data-trace on bytes buffer `bs` to capture logs
|
||||
if err := logWriter.Close(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
logFlushed.Wait()
|
||||
}()
|
||||
|
||||
logger := helmexec.NewLogger(logWriter, "debug")
|
||||
|
||||
valsRuntime, err := vals.New(vals.Options{CacheSize: 32})
|
||||
if err != nil {
|
||||
t.Errorf("unexpected error creating vals runtime: %v", err)
|
||||
}
|
||||
|
||||
files := map[string]string{
|
||||
"/path/to/helmfile.yaml": `
|
||||
releases:
|
||||
- name: logging
|
||||
chart: incubator/raw
|
||||
namespace: kube-system
|
||||
|
||||
- name: kubernetes-external-secrets
|
||||
chart: incubator/raw
|
||||
namespace: kube-system
|
||||
needs:
|
||||
- kube-system/logging
|
||||
|
||||
- name: external-secrets
|
||||
chart: incubator/raw
|
||||
namespace: default
|
||||
labels:
|
||||
app: test
|
||||
needs:
|
||||
- kube-system/kubernetes-external-secrets
|
||||
|
||||
- name: my-release
|
||||
chart: incubator/raw
|
||||
namespace: default
|
||||
labels:
|
||||
app: test
|
||||
needs:
|
||||
- default/external-secrets
|
||||
|
||||
|
||||
# Disabled releases are treated as missing
|
||||
- name: disabled
|
||||
chart: incubator/raw
|
||||
namespace: kube-system
|
||||
installed: false
|
||||
|
||||
- name: test2
|
||||
chart: incubator/raw
|
||||
needs:
|
||||
- kube-system/disabled
|
||||
|
||||
- name: test3
|
||||
chart: incubator/raw
|
||||
needs:
|
||||
- test2
|
||||
`,
|
||||
}
|
||||
|
||||
app := appWithFs(&App{
|
||||
OverrideHelmBinary: DefaultHelmBinary,
|
||||
glob: filepath.Glob,
|
||||
abs: filepath.Abs,
|
||||
OverrideKubeContext: "default",
|
||||
Env: "default",
|
||||
Logger: logger,
|
||||
helms: map[helmKey]helmexec.Interface{
|
||||
createHelmKey("helm", "default"): helm,
|
||||
},
|
||||
valsRuntime: valsRuntime,
|
||||
}, files)
|
||||
|
||||
if tc.ns != "" {
|
||||
app.Namespace = tc.ns
|
||||
}
|
||||
|
||||
if tc.selectors != nil {
|
||||
app.Selectors = tc.selectors
|
||||
}
|
||||
|
||||
diffErr := app.Diff(applyConfig{
|
||||
// if we check log output, concurrency must be 1. otherwise the test becomes non-deterministic.
|
||||
concurrency: 1,
|
||||
logger: logger,
|
||||
skipNeeds: tc.fields.skipNeeds,
|
||||
includeNeeds: tc.fields.includeNeeds,
|
||||
includeTransitiveNeeds: tc.fields.includeTransitiveNeeds,
|
||||
})
|
||||
|
||||
var gotErr string
|
||||
if diffErr != nil {
|
||||
gotErr = diffErr.Error()
|
||||
}
|
||||
|
||||
if d := cmp.Diff(tc.error, gotErr); d != "" {
|
||||
t.Fatalf("unexpected error: want (-), got (+): %s", d)
|
||||
}
|
||||
|
||||
require.Equal(t, wantDiffs, helm.Diffed)
|
||||
}()
|
||||
|
||||
testhelper.RequireLog(t, "app_diff_test", bs)
|
||||
}
|
||||
|
||||
t.Run("fail on unselected need by default", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
selectors: []string{"app=test"},
|
||||
error: `in ./helmfile.yaml: release "default/default/external-secrets" depends on "default/kube-system/kubernetes-external-secrets" which does not match the selectors. Please add a selector like "--selector name=kubernetes-external-secrets", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies`,
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("skip-needs", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
fields: fields{
|
||||
skipNeeds: true,
|
||||
},
|
||||
selectors: []string{"app=test"},
|
||||
diffed: []exectest.Release{
|
||||
{Name: "external-secrets", Flags: []string{"--kube-context", "default", "--namespace", "default"}},
|
||||
{Name: "my-release", Flags: []string{"--kube-context", "default", "--namespace", "default"}},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("include-needs", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
fields: fields{
|
||||
skipNeeds: false,
|
||||
includeNeeds: true,
|
||||
},
|
||||
error: ``,
|
||||
selectors: []string{"app=test"},
|
||||
diffed: []exectest.Release{
|
||||
// TODO: Turned out we can't differentiate needs vs transitive needs in this case :thinking:
|
||||
{Name: "logging", Flags: []string{"--kube-context", "default", "--namespace", "kube-system"}},
|
||||
{Name: "kubernetes-external-secrets", Flags: []string{"--kube-context", "default", "--namespace", "kube-system"}},
|
||||
{Name: "external-secrets", Flags: []string{"--kube-context", "default", "--namespace", "default"}},
|
||||
{Name: "my-release", Flags: []string{"--kube-context", "default", "--namespace", "default"}},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("include-transitive-needs", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
fields: fields{
|
||||
skipNeeds: false,
|
||||
includeTransitiveNeeds: true,
|
||||
},
|
||||
error: ``,
|
||||
selectors: []string{"app=test"},
|
||||
diffed: []exectest.Release{
|
||||
{Name: "logging", Flags: []string{"--kube-context", "default", "--namespace", "kube-system"}},
|
||||
{Name: "kubernetes-external-secrets", Flags: []string{"--kube-context", "default", "--namespace", "kube-system"}},
|
||||
{Name: "external-secrets", Flags: []string{"--kube-context", "default", "--namespace", "default"}},
|
||||
{Name: "my-release", Flags: []string{"--kube-context", "default", "--namespace", "default"}},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("include-needs should not fail on disabled direct need", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
fields: fields{
|
||||
skipNeeds: false,
|
||||
includeNeeds: true,
|
||||
},
|
||||
selectors: []string{"name=test2"},
|
||||
diffed: []exectest.Release{
|
||||
{Name: "test2", Flags: []string{"--kube-context", "default"}},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("include-needs should not fail on disabled transitive need", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
fields: fields{
|
||||
skipNeeds: false,
|
||||
includeNeeds: true,
|
||||
},
|
||||
selectors: []string{"name=test3"},
|
||||
diffed: []exectest.Release{
|
||||
{Name: "test2", Flags: []string{"--kube-context", "default"}},
|
||||
{Name: "test3", Flags: []string{"--kube-context", "default"}},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("include-transitive-needs should not fail on disabled transitive need", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
fields: fields{
|
||||
skipNeeds: false,
|
||||
includeNeeds: false,
|
||||
includeTransitiveNeeds: true,
|
||||
},
|
||||
selectors: []string{"name=test3"},
|
||||
diffed: []exectest.Release{
|
||||
{Name: "test2", Flags: []string{"--kube-context", "default"}},
|
||||
{Name: "test3", Flags: []string{"--kube-context", "default"}},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("include-needs with include-transitive-needs should not fail on disabled direct need", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
fields: fields{
|
||||
skipNeeds: false,
|
||||
includeNeeds: true,
|
||||
includeTransitiveNeeds: true,
|
||||
},
|
||||
selectors: []string{"name=test2"},
|
||||
diffed: []exectest.Release{
|
||||
{Name: "test2", Flags: []string{"--kube-context", "default"}},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("include-needs with include-transitive-needs should not fail on disabled transitive need", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
fields: fields{
|
||||
skipNeeds: false,
|
||||
includeNeeds: true,
|
||||
includeTransitiveNeeds: true,
|
||||
},
|
||||
selectors: []string{"name=test3"},
|
||||
diffed: []exectest.Release{
|
||||
{Name: "test2", Flags: []string{"--kube-context", "default"}},
|
||||
{Name: "test3", Flags: []string{"--kube-context", "default"}},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("bad selector", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
selectors: []string{"app=test_non_existent"},
|
||||
diffed: nil,
|
||||
error: "err: no releases found that matches specified selector(app=test_non_existent) and environment(default), in any helmfile",
|
||||
})
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,335 @@
|
|||
package app
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"io"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"sync"
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"github.com/helmfile/helmfile/pkg/exectest"
|
||||
"github.com/helmfile/helmfile/pkg/helmexec"
|
||||
"github.com/helmfile/helmfile/pkg/testhelper"
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/variantdev/vals"
|
||||
)
|
||||
|
||||
func TestLint(t *testing.T) {
|
||||
type fields struct {
|
||||
skipNeeds bool
|
||||
includeNeeds bool
|
||||
includeTransitiveNeeds bool
|
||||
}
|
||||
|
||||
type testcase struct {
|
||||
fields fields
|
||||
ns string
|
||||
error string
|
||||
selectors []string
|
||||
linted []exectest.Release
|
||||
}
|
||||
|
||||
check := func(t *testing.T, tc testcase) {
|
||||
t.Helper()
|
||||
|
||||
wantLints := tc.linted
|
||||
|
||||
var helm = &exectest.Helm{
|
||||
FailOnUnexpectedList: true,
|
||||
FailOnUnexpectedDiff: true,
|
||||
DiffMutex: &sync.Mutex{},
|
||||
ChartsMutex: &sync.Mutex{},
|
||||
ReleasesMutex: &sync.Mutex{},
|
||||
}
|
||||
|
||||
bs := &bytes.Buffer{}
|
||||
|
||||
func() {
|
||||
t.Helper()
|
||||
|
||||
logReader, logWriter := io.Pipe()
|
||||
|
||||
logFlushed := &sync.WaitGroup{}
|
||||
// Ensure all the log is consumed into `bs` by calling `logWriter.Close()` followed by `logFlushed.Wait()`
|
||||
logFlushed.Add(1)
|
||||
go func() {
|
||||
scanner := bufio.NewScanner(logReader)
|
||||
for scanner.Scan() {
|
||||
bs.Write(scanner.Bytes())
|
||||
bs.WriteString("\n")
|
||||
}
|
||||
logFlushed.Done()
|
||||
}()
|
||||
|
||||
defer func() {
|
||||
// This is here to avoid data-trace on bytes buffer `bs` to capture logs
|
||||
if err := logWriter.Close(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
logFlushed.Wait()
|
||||
}()
|
||||
|
||||
logger := helmexec.NewLogger(logWriter, "debug")
|
||||
|
||||
valsRuntime, err := vals.New(vals.Options{CacheSize: 32})
|
||||
if err != nil {
|
||||
t.Errorf("unexpected error creating vals runtime: %v", err)
|
||||
}
|
||||
|
||||
files := map[string]string{
|
||||
"/path/to/helmfile.yaml": `
|
||||
releases:
|
||||
- name: logging
|
||||
chart: incubator/raw
|
||||
namespace: kube-system
|
||||
|
||||
- name: kubernetes-external-secrets
|
||||
chart: incubator/raw
|
||||
namespace: kube-system
|
||||
needs:
|
||||
- kube-system/logging
|
||||
|
||||
- name: external-secrets
|
||||
chart: incubator/raw
|
||||
namespace: default
|
||||
labels:
|
||||
app: test
|
||||
needs:
|
||||
- kube-system/kubernetes-external-secrets
|
||||
|
||||
- name: my-release
|
||||
chart: incubator/raw
|
||||
namespace: default
|
||||
labels:
|
||||
app: test
|
||||
needs:
|
||||
- default/external-secrets
|
||||
|
||||
|
||||
# Disabled releases are treated as missing
|
||||
- name: disabled
|
||||
chart: incubator/raw
|
||||
namespace: kube-system
|
||||
installed: false
|
||||
|
||||
- name: test2
|
||||
chart: incubator/raw
|
||||
needs:
|
||||
- kube-system/disabled
|
||||
|
||||
- name: test3
|
||||
chart: incubator/raw
|
||||
needs:
|
||||
- test2
|
||||
`,
|
||||
}
|
||||
|
||||
app := appWithFs(&App{
|
||||
OverrideHelmBinary: DefaultHelmBinary,
|
||||
glob: filepath.Glob,
|
||||
abs: filepath.Abs,
|
||||
OverrideKubeContext: "default",
|
||||
Env: "default",
|
||||
Logger: logger,
|
||||
helms: map[helmKey]helmexec.Interface{
|
||||
createHelmKey("helm", "default"): helm,
|
||||
},
|
||||
valsRuntime: valsRuntime,
|
||||
}, files)
|
||||
|
||||
if tc.ns != "" {
|
||||
app.Namespace = tc.ns
|
||||
}
|
||||
|
||||
if tc.selectors != nil {
|
||||
app.Selectors = tc.selectors
|
||||
}
|
||||
|
||||
lintErr := app.Lint(applyConfig{
|
||||
// if we check log output, concurrency must be 1. otherwise the test becomes non-deterministic.
|
||||
concurrency: 1,
|
||||
logger: logger,
|
||||
skipNeeds: tc.fields.skipNeeds,
|
||||
includeNeeds: tc.fields.includeNeeds,
|
||||
includeTransitiveNeeds: tc.fields.includeTransitiveNeeds,
|
||||
})
|
||||
|
||||
var gotErr string
|
||||
if lintErr != nil {
|
||||
gotErr = lintErr.Error()
|
||||
}
|
||||
|
||||
if d := cmp.Diff(tc.error, gotErr); d != "" {
|
||||
t.Fatalf("unexpected error: want (-), got (+): %s", d)
|
||||
}
|
||||
|
||||
require.Equal(t, wantLints, helm.Linted)
|
||||
}()
|
||||
|
||||
testNameComponents := strings.Split(t.Name(), "/")
|
||||
testBaseName := strings.ToLower(
|
||||
strings.ReplaceAll(
|
||||
testNameComponents[len(testNameComponents)-1],
|
||||
" ",
|
||||
"_",
|
||||
),
|
||||
)
|
||||
wantLogFileDir := filepath.Join("testdata", "app_lint_test")
|
||||
wantLogFile := filepath.Join(wantLogFileDir, testBaseName)
|
||||
wantLogData, err := os.ReadFile(wantLogFile)
|
||||
updateLogFile := err != nil
|
||||
wantLog := string(wantLogData)
|
||||
gotLog := bs.String()
|
||||
if updateLogFile {
|
||||
if err := os.MkdirAll(wantLogFileDir, 0755); err != nil {
|
||||
t.Fatalf("unable to create directory %q: %v", wantLogFileDir, err)
|
||||
}
|
||||
if err := os.WriteFile(wantLogFile, bs.Bytes(), 0644); err != nil {
|
||||
t.Fatalf("unable to update lint log snapshot: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
diff, exists := testhelper.Diff(wantLog, gotLog, 3)
|
||||
if exists {
|
||||
t.Errorf("unexpected log:\nDIFF\n%s\nEOD", diff)
|
||||
}
|
||||
}
|
||||
|
||||
t.Run("fail on unselected need by default", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
selectors: []string{"app=test"},
|
||||
error: `in ./helmfile.yaml: release "default/default/external-secrets" depends on "default/kube-system/kubernetes-external-secrets" which does not match the selectors. Please add a selector like "--selector name=kubernetes-external-secrets", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies`,
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("skip-needs", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
fields: fields{
|
||||
skipNeeds: true,
|
||||
},
|
||||
selectors: []string{"app=test"},
|
||||
linted: []exectest.Release{
|
||||
{Name: "external-secrets", Flags: []string{"--namespace", "default"}},
|
||||
{Name: "my-release", Flags: []string{"--namespace", "default"}},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("include-needs", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
fields: fields{
|
||||
skipNeeds: false,
|
||||
includeNeeds: true,
|
||||
},
|
||||
error: ``,
|
||||
selectors: []string{"app=test"},
|
||||
linted: []exectest.Release{
|
||||
// TODO: Turned out we can't differentiate needs vs transitive needs in this case :thinking:
|
||||
{Name: "logging", Flags: []string{"--namespace", "kube-system"}},
|
||||
{Name: "kubernetes-external-secrets", Flags: []string{"--namespace", "kube-system"}},
|
||||
{Name: "external-secrets", Flags: []string{"--namespace", "default"}},
|
||||
{Name: "my-release", Flags: []string{"--namespace", "default"}},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("include-transitive-needs", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
fields: fields{
|
||||
skipNeeds: false,
|
||||
includeTransitiveNeeds: true,
|
||||
},
|
||||
error: ``,
|
||||
selectors: []string{"app=test"},
|
||||
linted: []exectest.Release{
|
||||
{Name: "logging", Flags: []string{"--namespace", "kube-system"}},
|
||||
{Name: "kubernetes-external-secrets", Flags: []string{"--namespace", "kube-system"}},
|
||||
{Name: "external-secrets", Flags: []string{"--namespace", "default"}},
|
||||
{Name: "my-release", Flags: []string{"--namespace", "default"}},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("include-needs should not fail on disabled direct need", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
fields: fields{
|
||||
skipNeeds: false,
|
||||
includeNeeds: true,
|
||||
},
|
||||
selectors: []string{"name=test2"},
|
||||
linted: []exectest.Release{
|
||||
exectest.Release{Name: "test2", Flags: []string{}},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("include-needs should not fail on disabled transitive need", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
fields: fields{
|
||||
skipNeeds: false,
|
||||
includeNeeds: true,
|
||||
},
|
||||
selectors: []string{"name=test3"},
|
||||
linted: []exectest.Release{
|
||||
exectest.Release{Name: "test2", Flags: []string{}},
|
||||
exectest.Release{Name: "test3", Flags: []string{}},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("include-transitive-needs should not fail on disabled transitive need", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
fields: fields{
|
||||
skipNeeds: false,
|
||||
includeNeeds: false,
|
||||
includeTransitiveNeeds: true,
|
||||
},
|
||||
selectors: []string{"name=test3"},
|
||||
linted: []exectest.Release{
|
||||
exectest.Release{Name: "test2", Flags: []string{}},
|
||||
exectest.Release{Name: "test3", Flags: []string{}},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("include-needs with include-transitive-needs should not fail on disabled direct need", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
fields: fields{
|
||||
skipNeeds: false,
|
||||
includeNeeds: true,
|
||||
includeTransitiveNeeds: true,
|
||||
},
|
||||
selectors: []string{"name=test2"},
|
||||
linted: []exectest.Release{
|
||||
exectest.Release{Name: "test2", Flags: []string{}},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("include-needs with include-transitive-needs should not fail on disabled transitive need", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
fields: fields{
|
||||
skipNeeds: false,
|
||||
includeNeeds: true,
|
||||
includeTransitiveNeeds: true,
|
||||
},
|
||||
selectors: []string{"name=test3"},
|
||||
linted: []exectest.Release{
|
||||
exectest.Release{Name: "test2", Flags: []string{}},
|
||||
exectest.Release{Name: "test3", Flags: []string{}},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("bad selector", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
selectors: []string{"app=test_non_existent"},
|
||||
linted: nil,
|
||||
error: "err: no releases found that matches specified selector(app=test_non_existent) and environment(default), in any helmfile",
|
||||
})
|
||||
})
|
||||
}
|
||||
|
|
@ -202,6 +202,14 @@ releases:
|
|||
{Name: "external-secrets", Flags: []string{"--kube-context", "default", "--namespace", "default"}},
|
||||
{Name: "my-release", Flags: []string{"--kube-context", "default", "--namespace", "default"}},
|
||||
},
|
||||
lists: map[exectest.ListKey]string{
|
||||
{Filter: "^external-secrets$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
external-secrets 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^my-release$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
log: `processing file "helmfile.yaml" in directory "."
|
||||
|
|
@ -278,14 +286,12 @@ GROUP RELEASES
|
|||
2 default/default/my-release
|
||||
|
||||
processing releases in group 1/2: default/default/external-secrets
|
||||
getting deployed release version failed:unexpected list key: {^external-secrets$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
processing releases in group 2/2: default/default/my-release
|
||||
getting deployed release version failed:unexpected list key: {^my-release$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw
|
||||
my-release incubator/raw
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
|
|
@ -327,6 +333,17 @@ releases:
|
|||
},
|
||||
selectors: []string{"app=test"},
|
||||
upgraded: []exectest.Release{},
|
||||
lists: map[exectest.ListKey]string{
|
||||
{Filter: "^kubernetes-external-secrets$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
kubernetes-external-secrets 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^external-secrets$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
external-secrets 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^my-release$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
log: `processing file "helmfile.yaml" in directory "."
|
||||
|
|
@ -405,17 +422,14 @@ GROUP RELEASES
|
|||
3 default/default/my-release
|
||||
|
||||
processing releases in group 1/3: default/kube-system/kubernetes-external-secrets
|
||||
getting deployed release version failed:unexpected list key: {^kubernetes-external-secrets$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
processing releases in group 2/3: default/default/external-secrets
|
||||
getting deployed release version failed:unexpected list key: {^external-secrets$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
processing releases in group 3/3: default/default/my-release
|
||||
getting deployed release version failed:unexpected list key: {^my-release$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
kubernetes-external-secrets incubator/raw
|
||||
external-secrets incubator/raw
|
||||
my-release incubator/raw
|
||||
kubernetes-external-secrets incubator/raw 3.1.0
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
|
|
@ -453,6 +467,17 @@ releases:
|
|||
},
|
||||
selectors: []string{"name=serviceA"},
|
||||
upgraded: []exectest.Release{},
|
||||
lists: map[exectest.ListKey]string{
|
||||
{Filter: "^serviceC$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
serviceC 4 Fri Nov 1 08:40:07 2019 DEPLOYED chart-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^serviceB$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
serviceB 4 Fri Nov 1 08:40:07 2019 DEPLOYED chart-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^serviceA$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
serviceA 4 Fri Nov 1 08:40:07 2019 DEPLOYED chart-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
log: `processing file "helmfile.yaml" in directory "."
|
||||
|
|
@ -523,17 +548,14 @@ GROUP RELEASES
|
|||
3 default//serviceA
|
||||
|
||||
processing releases in group 1/3: default//serviceC
|
||||
getting deployed release version failed:unexpected list key: {^serviceC$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
processing releases in group 2/3: default//serviceB
|
||||
getting deployed release version failed:unexpected list key: {^serviceB$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
processing releases in group 3/3: default//serviceA
|
||||
getting deployed release version failed:unexpected list key: {^serviceA$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
serviceC my/chart
|
||||
serviceB my/chart
|
||||
serviceA my/chart
|
||||
serviceC my/chart 3.1.0
|
||||
serviceB my/chart 3.1.0
|
||||
serviceA my/chart 3.1.0
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
|
|
@ -578,10 +600,15 @@ releases:
|
|||
selectors: []string{"app=test"},
|
||||
upgraded: []exectest.Release{},
|
||||
lists: map[exectest.ListKey]string{
|
||||
// delete frontend-v1 and backend-v1
|
||||
{Filter: "^kubernetes-external-secrets$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
^kubernetes-external-secrets$ 4 Fri Nov 1 08:40:07 2019 DEPLOYED backend-3.1.0 3.1.0 default
|
||||
`,
|
||||
kubernetes-external-secrets 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^external-secrets$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
external-secrets 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^my-release$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
|
|
@ -667,14 +694,12 @@ GROUP RELEASES
|
|||
2 default/default/my-release
|
||||
|
||||
processing releases in group 1/2: default/default/external-secrets
|
||||
getting deployed release version failed:unexpected list key: {^external-secrets$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
processing releases in group 2/2: default/default/my-release
|
||||
getting deployed release version failed:unexpected list key: {^my-release$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw
|
||||
my-release incubator/raw
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
|
||||
|
||||
DELETED RELEASES:
|
||||
|
|
@ -725,6 +750,12 @@ releases:
|
|||
lists: map[exectest.ListKey]string{
|
||||
// delete frontend-v1 and backend-v1
|
||||
{Filter: "^kubernetes-external-secrets$", Flags: helmV2ListFlags}: ``,
|
||||
{Filter: "^external-secrets$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
external-secrets 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^my-release$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
|
|
@ -804,14 +835,12 @@ GROUP RELEASES
|
|||
2 default/default/my-release
|
||||
|
||||
processing releases in group 1/2: default/default/external-secrets
|
||||
getting deployed release version failed:unexpected list key: {^external-secrets$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
processing releases in group 2/2: default/default/my-release
|
||||
getting deployed release version failed:unexpected list key: {^my-release$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw
|
||||
my-release incubator/raw
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,335 @@
|
|||
package app
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"io"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"sync"
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"github.com/helmfile/helmfile/pkg/exectest"
|
||||
"github.com/helmfile/helmfile/pkg/helmexec"
|
||||
"github.com/helmfile/helmfile/pkg/testhelper"
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/variantdev/vals"
|
||||
)
|
||||
|
||||
func TestTemplate(t *testing.T) {
|
||||
type fields struct {
|
||||
skipNeeds bool
|
||||
includeNeeds bool
|
||||
includeTransitiveNeeds bool
|
||||
}
|
||||
|
||||
type testcase struct {
|
||||
fields fields
|
||||
ns string
|
||||
error string
|
||||
selectors []string
|
||||
templated []exectest.Release
|
||||
}
|
||||
|
||||
check := func(t *testing.T, tc testcase) {
|
||||
t.Helper()
|
||||
|
||||
wantTemplates := tc.templated
|
||||
|
||||
var helm = &exectest.Helm{
|
||||
FailOnUnexpectedList: true,
|
||||
FailOnUnexpectedDiff: true,
|
||||
DiffMutex: &sync.Mutex{},
|
||||
ChartsMutex: &sync.Mutex{},
|
||||
ReleasesMutex: &sync.Mutex{},
|
||||
}
|
||||
|
||||
bs := &bytes.Buffer{}
|
||||
|
||||
func() {
|
||||
t.Helper()
|
||||
|
||||
logReader, logWriter := io.Pipe()
|
||||
|
||||
logFlushed := &sync.WaitGroup{}
|
||||
// Ensure all the log is consumed into `bs` by calling `logWriter.Close()` followed by `logFlushed.Wait()`
|
||||
logFlushed.Add(1)
|
||||
go func() {
|
||||
scanner := bufio.NewScanner(logReader)
|
||||
for scanner.Scan() {
|
||||
bs.Write(scanner.Bytes())
|
||||
bs.WriteString("\n")
|
||||
}
|
||||
logFlushed.Done()
|
||||
}()
|
||||
|
||||
defer func() {
|
||||
// This is here to avoid data-trace on bytes buffer `bs` to capture logs
|
||||
if err := logWriter.Close(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
logFlushed.Wait()
|
||||
}()
|
||||
|
||||
logger := helmexec.NewLogger(logWriter, "debug")
|
||||
|
||||
valsRuntime, err := vals.New(vals.Options{CacheSize: 32})
|
||||
if err != nil {
|
||||
t.Errorf("unexpected error creating vals runtime: %v", err)
|
||||
}
|
||||
|
||||
files := map[string]string{
|
||||
"/path/to/helmfile.yaml": `
|
||||
releases:
|
||||
- name: logging
|
||||
chart: incubator/raw
|
||||
namespace: kube-system
|
||||
|
||||
- name: kubernetes-external-secrets
|
||||
chart: incubator/raw
|
||||
namespace: kube-system
|
||||
needs:
|
||||
- kube-system/logging
|
||||
|
||||
- name: external-secrets
|
||||
chart: incubator/raw
|
||||
namespace: default
|
||||
labels:
|
||||
app: test
|
||||
needs:
|
||||
- kube-system/kubernetes-external-secrets
|
||||
|
||||
- name: my-release
|
||||
chart: incubator/raw
|
||||
namespace: default
|
||||
labels:
|
||||
app: test
|
||||
needs:
|
||||
- default/external-secrets
|
||||
|
||||
|
||||
# Disabled releases are treated as missing
|
||||
- name: disabled
|
||||
chart: incubator/raw
|
||||
namespace: kube-system
|
||||
installed: false
|
||||
|
||||
- name: test2
|
||||
chart: incubator/raw
|
||||
needs:
|
||||
- kube-system/disabled
|
||||
|
||||
- name: test3
|
||||
chart: incubator/raw
|
||||
needs:
|
||||
- test2
|
||||
`,
|
||||
}
|
||||
|
||||
app := appWithFs(&App{
|
||||
OverrideHelmBinary: DefaultHelmBinary,
|
||||
glob: filepath.Glob,
|
||||
abs: filepath.Abs,
|
||||
OverrideKubeContext: "default",
|
||||
Env: "default",
|
||||
Logger: logger,
|
||||
helms: map[helmKey]helmexec.Interface{
|
||||
createHelmKey("helm", "default"): helm,
|
||||
},
|
||||
valsRuntime: valsRuntime,
|
||||
}, files)
|
||||
|
||||
if tc.ns != "" {
|
||||
app.Namespace = tc.ns
|
||||
}
|
||||
|
||||
if tc.selectors != nil {
|
||||
app.Selectors = tc.selectors
|
||||
}
|
||||
|
||||
tmplErr := app.Template(applyConfig{
|
||||
// if we check log output, concurrency must be 1. otherwise the test becomes non-deterministic.
|
||||
concurrency: 1,
|
||||
logger: logger,
|
||||
skipNeeds: tc.fields.skipNeeds,
|
||||
includeNeeds: tc.fields.includeNeeds,
|
||||
includeTransitiveNeeds: tc.fields.includeTransitiveNeeds,
|
||||
})
|
||||
|
||||
var gotErr string
|
||||
if tmplErr != nil {
|
||||
gotErr = tmplErr.Error()
|
||||
}
|
||||
|
||||
if d := cmp.Diff(tc.error, gotErr); d != "" {
|
||||
t.Fatalf("unexpected error: want (-), got (+): %s", d)
|
||||
}
|
||||
|
||||
require.Equal(t, wantTemplates, helm.Templated)
|
||||
}()
|
||||
|
||||
testNameComponents := strings.Split(t.Name(), "/")
|
||||
testBaseName := strings.ToLower(
|
||||
strings.ReplaceAll(
|
||||
testNameComponents[len(testNameComponents)-1],
|
||||
" ",
|
||||
"_",
|
||||
),
|
||||
)
|
||||
wantLogFileDir := filepath.Join("testdata", "app_template_test")
|
||||
wantLogFile := filepath.Join(wantLogFileDir, testBaseName)
|
||||
wantLogData, err := os.ReadFile(wantLogFile)
|
||||
updateLogFile := err != nil
|
||||
wantLog := string(wantLogData)
|
||||
gotLog := bs.String()
|
||||
if updateLogFile {
|
||||
if err := os.MkdirAll(wantLogFileDir, 0755); err != nil {
|
||||
t.Fatalf("unable to create directory %q: %v", wantLogFileDir, err)
|
||||
}
|
||||
if err := os.WriteFile(wantLogFile, bs.Bytes(), 0644); err != nil {
|
||||
t.Fatalf("unable to update lint log snapshot: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
diff, exists := testhelper.Diff(wantLog, gotLog, 3)
|
||||
if exists {
|
||||
t.Errorf("unexpected log:\nDIFF\n%s\nEOD", diff)
|
||||
}
|
||||
}
|
||||
|
||||
t.Run("fail on unselected need by default", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
selectors: []string{"app=test"},
|
||||
error: `in ./helmfile.yaml: release "default/default/external-secrets" depends on "default/kube-system/kubernetes-external-secrets" which does not match the selectors. Please add a selector like "--selector name=kubernetes-external-secrets", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies`,
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("skip-needs", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
fields: fields{
|
||||
skipNeeds: true,
|
||||
},
|
||||
selectors: []string{"app=test"},
|
||||
templated: []exectest.Release{
|
||||
{Name: "external-secrets", Flags: []string{"--namespace", "default"}},
|
||||
{Name: "my-release", Flags: []string{"--namespace", "default"}},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("include-needs", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
fields: fields{
|
||||
skipNeeds: false,
|
||||
includeNeeds: true,
|
||||
},
|
||||
error: ``,
|
||||
selectors: []string{"app=test"},
|
||||
templated: []exectest.Release{
|
||||
// TODO: Turned out we can't differentiate needs vs transitive needs in this case :thinking:
|
||||
{Name: "logging", Flags: []string{"--namespace", "kube-system"}},
|
||||
{Name: "kubernetes-external-secrets", Flags: []string{"--namespace", "kube-system"}},
|
||||
{Name: "external-secrets", Flags: []string{"--namespace", "default"}},
|
||||
{Name: "my-release", Flags: []string{"--namespace", "default"}},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("include-transitive-needs", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
fields: fields{
|
||||
skipNeeds: false,
|
||||
includeTransitiveNeeds: true,
|
||||
},
|
||||
error: ``,
|
||||
selectors: []string{"app=test"},
|
||||
templated: []exectest.Release{
|
||||
{Name: "logging", Flags: []string{"--namespace", "kube-system"}},
|
||||
{Name: "kubernetes-external-secrets", Flags: []string{"--namespace", "kube-system"}},
|
||||
{Name: "external-secrets", Flags: []string{"--namespace", "default"}},
|
||||
{Name: "my-release", Flags: []string{"--namespace", "default"}},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("include-needs should not fail on disabled direct need", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
fields: fields{
|
||||
skipNeeds: false,
|
||||
includeNeeds: true,
|
||||
},
|
||||
selectors: []string{"name=test2"},
|
||||
templated: []exectest.Release{
|
||||
exectest.Release{Name: "test2", Flags: []string(nil)},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("include-needs should not fail on disabled transitive need", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
fields: fields{
|
||||
skipNeeds: false,
|
||||
includeNeeds: true,
|
||||
},
|
||||
selectors: []string{"name=test3"},
|
||||
templated: []exectest.Release{
|
||||
exectest.Release{Name: "test2", Flags: []string(nil)},
|
||||
exectest.Release{Name: "test3", Flags: []string(nil)},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("include-transitive-needs should not fail on disabled transitive need", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
fields: fields{
|
||||
skipNeeds: false,
|
||||
includeNeeds: false,
|
||||
includeTransitiveNeeds: true,
|
||||
},
|
||||
selectors: []string{"name=test3"},
|
||||
templated: []exectest.Release{
|
||||
exectest.Release{Name: "test2", Flags: []string(nil)},
|
||||
exectest.Release{Name: "test3", Flags: []string(nil)},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("include-needs with include-transitive-needs should not fail on disabled direct need", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
fields: fields{
|
||||
skipNeeds: false,
|
||||
includeNeeds: true,
|
||||
includeTransitiveNeeds: true,
|
||||
},
|
||||
selectors: []string{"name=test2"},
|
||||
templated: []exectest.Release{
|
||||
exectest.Release{Name: "test2", Flags: []string(nil)},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("include-needs with include-transitive-needs should not fail on disabled transitive need", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
fields: fields{
|
||||
skipNeeds: false,
|
||||
includeNeeds: true,
|
||||
includeTransitiveNeeds: true,
|
||||
},
|
||||
selectors: []string{"name=test3"},
|
||||
templated: []exectest.Release{
|
||||
exectest.Release{Name: "test2", Flags: []string(nil)},
|
||||
exectest.Release{Name: "test3", Flags: []string(nil)},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("bad selector", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
selectors: []string{"app=test_non_existent"},
|
||||
templated: nil,
|
||||
error: "err: no releases found that matches specified selector(app=test_non_existent) and environment(default), in any helmfile",
|
||||
})
|
||||
})
|
||||
}
|
||||
|
|
@ -2360,6 +2360,10 @@ type applyConfig struct {
|
|||
logger *zap.SugaredLogger
|
||||
wait bool
|
||||
waitForJobs bool
|
||||
|
||||
// template-only options
|
||||
includeCRDs, skipTests bool
|
||||
outputDir, outputDirTemplate string
|
||||
}
|
||||
|
||||
func (a applyConfig) Args() string {
|
||||
|
|
@ -2470,6 +2474,23 @@ func (a applyConfig) SkipDiffOnInstall() bool {
|
|||
return a.skipDiffOnInstall
|
||||
}
|
||||
|
||||
// helmfile-template-only flags
|
||||
|
||||
func (a applyConfig) IncludeCRDs() bool {
|
||||
return a.includeCRDs
|
||||
}
|
||||
|
||||
func (a applyConfig) SkipTests() bool {
|
||||
return a.skipTests
|
||||
}
|
||||
|
||||
func (a applyConfig) OutputDir() string {
|
||||
return a.outputDir
|
||||
}
|
||||
func (a applyConfig) OutputDirTemplate() string {
|
||||
return a.outputDirTemplate
|
||||
}
|
||||
|
||||
type depsConfig struct {
|
||||
skipRepos bool
|
||||
includeTransitiveNeeds bool
|
||||
|
|
@ -2850,11 +2871,32 @@ releases:
|
|||
},
|
||||
lists: map[exectest.ListKey]string{
|
||||
// delete frontend-v1 and backend-v1
|
||||
{Filter: "^logging$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
logging 4 Fri Nov 1 08:40:07 2019 DEPLOYED fluent-bit-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^front-proxy$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
front-proxy 4 Fri Nov 1 08:40:07 2019 DEPLOYED envoy-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^database$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
database 4 Fri Nov 1 08:40:07 2019 DEPLOYED mysql-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^servicemesh$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
servicemesh 4 Fri Nov 1 08:40:07 2019 DEPLOYED istio-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^anotherbackend$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
anotherbackend 4 Fri Nov 1 08:40:07 2019 DEPLOYED anotherbackend-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^frontend-v1$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
frontend-v1 4 Fri Nov 1 08:40:07 2019 DEPLOYED backend-3.1.0 3.1.0 default
|
||||
frontend-v1 4 Fri Nov 1 08:40:07 2019 DEPLOYED frontend-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^frontend-v3$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
frontend-v3 4 Fri Nov 1 08:40:07 2019 DEPLOYED frontend-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^backend-v1$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
backend-v1 4 Fri Nov 1 08:40:07 2019 DEPLOYED backend-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^backend-v2$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
backend-v2 4 Fri Nov 1 08:40:07 2019 DEPLOYED backend-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
// Disable concurrency to avoid in-deterministic result
|
||||
|
|
@ -2871,188 +2913,6 @@ backend-v1 4 Fri Nov 1 08:40:07 2019 DEPLOYED backend-3.1.0 3.1.0
|
|||
deleted: []exectest.Release{
|
||||
{Name: "frontend-v1", Flags: []string{}},
|
||||
},
|
||||
log: `processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: database
|
||||
3: chart: charts/mysql
|
||||
4: needs:
|
||||
5: - logging
|
||||
6: - name: frontend-v1
|
||||
7: chart: charts/frontend
|
||||
8: installed: false
|
||||
9: needs:
|
||||
10: - servicemesh
|
||||
11: - logging
|
||||
12: - backend-v1
|
||||
13: - name: frontend-v2
|
||||
14: chart: charts/frontend
|
||||
15: needs:
|
||||
16: - servicemesh
|
||||
17: - logging
|
||||
18: - backend-v2
|
||||
19: - name: frontend-v3
|
||||
20: chart: charts/frontend
|
||||
21: needs:
|
||||
22: - servicemesh
|
||||
23: - logging
|
||||
24: - backend-v2
|
||||
25: - name: backend-v1
|
||||
26: chart: charts/backend
|
||||
27: installed: false
|
||||
28: needs:
|
||||
29: - servicemesh
|
||||
30: - logging
|
||||
31: - database
|
||||
32: - anotherbackend
|
||||
33: - name: backend-v2
|
||||
34: chart: charts/backend
|
||||
35: needs:
|
||||
36: - servicemesh
|
||||
37: - logging
|
||||
38: - database
|
||||
39: - anotherbackend
|
||||
40: - name: anotherbackend
|
||||
41: chart: charts/anotherbackend
|
||||
42: needs:
|
||||
43: - servicemesh
|
||||
44: - logging
|
||||
45: - database
|
||||
46: - name: servicemesh
|
||||
47: chart: charts/istio
|
||||
48: needs:
|
||||
49: - logging
|
||||
50: - name: logging
|
||||
51: chart: charts/fluent-bit
|
||||
52: - name: front-proxy
|
||||
53: chart: stable/envoy
|
||||
54:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: database
|
||||
3: chart: charts/mysql
|
||||
4: needs:
|
||||
5: - logging
|
||||
6: - name: frontend-v1
|
||||
7: chart: charts/frontend
|
||||
8: installed: false
|
||||
9: needs:
|
||||
10: - servicemesh
|
||||
11: - logging
|
||||
12: - backend-v1
|
||||
13: - name: frontend-v2
|
||||
14: chart: charts/frontend
|
||||
15: needs:
|
||||
16: - servicemesh
|
||||
17: - logging
|
||||
18: - backend-v2
|
||||
19: - name: frontend-v3
|
||||
20: chart: charts/frontend
|
||||
21: needs:
|
||||
22: - servicemesh
|
||||
23: - logging
|
||||
24: - backend-v2
|
||||
25: - name: backend-v1
|
||||
26: chart: charts/backend
|
||||
27: installed: false
|
||||
28: needs:
|
||||
29: - servicemesh
|
||||
30: - logging
|
||||
31: - database
|
||||
32: - anotherbackend
|
||||
33: - name: backend-v2
|
||||
34: chart: charts/backend
|
||||
35: needs:
|
||||
36: - servicemesh
|
||||
37: - logging
|
||||
38: - database
|
||||
39: - anotherbackend
|
||||
40: - name: anotherbackend
|
||||
41: chart: charts/anotherbackend
|
||||
42: needs:
|
||||
43: - servicemesh
|
||||
44: - logging
|
||||
45: - database
|
||||
46: - name: servicemesh
|
||||
47: chart: charts/istio
|
||||
48: needs:
|
||||
49: - logging
|
||||
50: - name: logging
|
||||
51: chart: charts/fluent-bit
|
||||
52: - name: front-proxy
|
||||
53: chart: stable/envoy
|
||||
54:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
10 release(s) found in helmfile.yaml
|
||||
|
||||
Affected releases are:
|
||||
anotherbackend (charts/anotherbackend) UPDATED
|
||||
backend-v1 (charts/backend) DELETED
|
||||
backend-v2 (charts/backend) UPDATED
|
||||
database (charts/mysql) UPDATED
|
||||
front-proxy (stable/envoy) UPDATED
|
||||
frontend-v1 (charts/frontend) DELETED
|
||||
frontend-v3 (charts/frontend) UPDATED
|
||||
logging (charts/fluent-bit) UPDATED
|
||||
servicemesh (charts/istio) UPDATED
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default//frontend-v1
|
||||
2 default//backend-v1
|
||||
|
||||
processing releases in group 1/2: default//frontend-v1
|
||||
processing releases in group 2/2: default//backend-v1
|
||||
processing 5 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default//logging, default//front-proxy
|
||||
2 default//database, default//servicemesh
|
||||
3 default//anotherbackend
|
||||
4 default//backend-v2
|
||||
5 default//frontend-v3
|
||||
|
||||
processing releases in group 1/5: default//logging, default//front-proxy
|
||||
getting deployed release version failed:unexpected list key: {^logging$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
getting deployed release version failed:unexpected list key: {^front-proxy$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
processing releases in group 2/5: default//database, default//servicemesh
|
||||
getting deployed release version failed:unexpected list key: {^database$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
getting deployed release version failed:unexpected list key: {^servicemesh$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
processing releases in group 3/5: default//anotherbackend
|
||||
getting deployed release version failed:unexpected list key: {^anotherbackend$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
processing releases in group 4/5: default//backend-v2
|
||||
getting deployed release version failed:unexpected list key: {^backend-v2$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
processing releases in group 5/5: default//frontend-v3
|
||||
getting deployed release version failed:unexpected list key: {^frontend-v3$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
logging charts/fluent-bit
|
||||
front-proxy stable/envoy
|
||||
database charts/mysql
|
||||
servicemesh charts/istio
|
||||
anotherbackend charts/anotherbackend
|
||||
backend-v2 charts/backend
|
||||
frontend-v3 charts/frontend
|
||||
|
||||
|
||||
DELETED RELEASES:
|
||||
NAME
|
||||
frontend-v1
|
||||
backend-v1
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
},
|
||||
//
|
||||
// noop: no changes
|
||||
|
|
@ -3116,68 +2976,6 @@ releases:
|
|||
},
|
||||
deleted: []exectest.Release{},
|
||||
concurrency: 1,
|
||||
log: `processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: baz
|
||||
3: chart: stable/mychart3
|
||||
4: - name: foo
|
||||
5: chart: stable/mychart1
|
||||
6: needs:
|
||||
7: - bar
|
||||
8: - name: bar
|
||||
9: chart: stable/mychart2
|
||||
10:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: baz
|
||||
3: chart: stable/mychart3
|
||||
4: - name: foo
|
||||
5: chart: stable/mychart1
|
||||
6: needs:
|
||||
7: - bar
|
||||
8: - name: bar
|
||||
9: chart: stable/mychart2
|
||||
10:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
3 release(s) found in helmfile.yaml
|
||||
|
||||
Affected releases are:
|
||||
bar (stable/mychart2) UPDATED
|
||||
baz (stable/mychart3) UPDATED
|
||||
foo (stable/mychart1) UPDATED
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default//baz, default//bar
|
||||
2 default//foo
|
||||
|
||||
processing releases in group 1/2: default//baz, default//bar
|
||||
getting deployed release version failed:unexpected list key: {^baz$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
getting deployed release version failed:unexpected list key: {^bar$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
processing releases in group 2/2: default//foo
|
||||
getting deployed release version failed:unexpected list key: {^foo$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
baz stable/mychart3
|
||||
bar stable/mychart2
|
||||
foo stable/mychart1
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
},
|
||||
//
|
||||
// install with upgrade
|
||||
|
|
@ -3600,6 +3398,14 @@ releases:
|
|||
{Name: "foo", Flags: []string{"--tiller-namespace", "tns1", "--kube-context", "default", "--namespace", "ns1"}},
|
||||
{Name: "bar", Flags: []string{"--tiller-namespace", "tns2", "--kube-context", "default", "--namespace", "ns2"}},
|
||||
},
|
||||
lists: map[exectest.ListKey]string{
|
||||
{Filter: "^foo$", Flags: "--tiller-namespacetns1" + helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
foo 4 Fri Nov 1 08:40:07 2019 DEPLOYED mychart1-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^bar$", Flags: "--tiller-namespacetns2" + helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
bar 4 Fri Nov 1 08:40:07 2019 DEPLOYED mychart2-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
log: `processing file "helmfile.yaml" in directory "."
|
||||
|
|
@ -3654,14 +3460,12 @@ GROUP RELEASES
|
|||
2 default/tns2/bar
|
||||
|
||||
processing releases in group 1/2: default/tns1/foo
|
||||
getting deployed release version failed:unexpected list key: {^foo$ --tiller-namespacetns1--kube-contextdefault--deleting--deployed--failed--pending}
|
||||
processing releases in group 2/2: default/tns2/bar
|
||||
getting deployed release version failed:unexpected list key: {^bar$ --tiller-namespacetns2--kube-contextdefault--deleting--deployed--failed--pending}
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
foo stable/mychart1
|
||||
bar stable/mychart2
|
||||
foo stable/mychart1 3.1.0
|
||||
bar stable/mychart2 3.1.0
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
|
|
@ -3919,6 +3723,14 @@ releases:
|
|||
{Name: "external-secrets", Flags: []string{"--kube-context", "default", "--namespace", "default"}},
|
||||
{Name: "my-release", Flags: []string{"--kube-context", "default", "--namespace", "default"}},
|
||||
},
|
||||
lists: map[exectest.ListKey]string{
|
||||
{Filter: "^external-secrets$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
external-secrets 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^my-release$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
log: `processing file "helmfile.yaml" in directory "."
|
||||
|
|
@ -3995,14 +3807,12 @@ GROUP RELEASES
|
|||
2 default/default/my-release
|
||||
|
||||
processing releases in group 1/2: default/default/external-secrets
|
||||
getting deployed release version failed:unexpected list key: {^external-secrets$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
processing releases in group 2/2: default/default/my-release
|
||||
getting deployed release version failed:unexpected list key: {^my-release$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw
|
||||
my-release incubator/raw
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
|
|
@ -4551,6 +4361,8 @@ changing working directory back to "/path/to"
|
|||
if exists {
|
||||
t.Errorf("unexpected log for data defined %s:\nDIFF\n%s\nEOD", tc.loc, diff)
|
||||
}
|
||||
} else {
|
||||
assertEqualsToSnapshot(t, "log", bs.String())
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -66,9 +66,7 @@ type ApplyConfigProvider interface {
|
|||
SkipCleanup() bool
|
||||
SkipDiffOnInstall() bool
|
||||
|
||||
SkipNeeds() bool
|
||||
IncludeNeeds() bool
|
||||
IncludeTransitiveNeeds() bool
|
||||
DAGConfig
|
||||
|
||||
concurrencyConfig
|
||||
interactive
|
||||
|
|
@ -90,6 +88,7 @@ type SyncConfigProvider interface {
|
|||
SkipNeeds() bool
|
||||
IncludeNeeds() bool
|
||||
IncludeTransitiveNeeds() bool
|
||||
DAGConfig
|
||||
|
||||
concurrencyConfig
|
||||
loggingConfig
|
||||
|
|
@ -112,8 +111,7 @@ type DiffConfigProvider interface {
|
|||
SuppressDiff() bool
|
||||
SkipDiffOnInstall() bool
|
||||
|
||||
SkipNeeds() bool
|
||||
IncludeNeeds() bool
|
||||
DAGConfig
|
||||
|
||||
DetailedExitcode() bool
|
||||
Color() bool
|
||||
|
|
@ -164,6 +162,8 @@ type LintConfigProvider interface {
|
|||
SkipDeps() bool
|
||||
SkipCleanup() bool
|
||||
|
||||
DAGConfig
|
||||
|
||||
concurrencyConfig
|
||||
}
|
||||
|
||||
|
|
@ -186,12 +186,18 @@ type TemplateConfigProvider interface {
|
|||
SkipTests() bool
|
||||
OutputDir() string
|
||||
IncludeCRDs() bool
|
||||
IncludeNeeds() bool
|
||||
IncludeTransitiveNeeds() bool
|
||||
|
||||
DAGConfig
|
||||
|
||||
concurrencyConfig
|
||||
}
|
||||
|
||||
type DAGConfig interface {
|
||||
SkipNeeds() bool
|
||||
IncludeNeeds() bool
|
||||
IncludeTransitiveNeeds() bool
|
||||
}
|
||||
|
||||
type WriteValuesConfigProvider interface {
|
||||
Values() []string
|
||||
Set() []string
|
||||
|
|
|
|||
|
|
@ -17,7 +17,8 @@ import (
|
|||
|
||||
func TestDiff_2(t *testing.T) {
|
||||
type flags struct {
|
||||
skipNeeds bool
|
||||
skipNeeds bool
|
||||
includeNeeds bool
|
||||
}
|
||||
|
||||
testcases := []struct {
|
||||
|
|
@ -127,145 +128,6 @@ backend-v1 4 Fri Nov 1 08:40:07 2019 DEPLOYED backend-3.1.0 3.1.0
|
|||
concurrency: 1,
|
||||
upgraded: []exectest.Release{},
|
||||
deleted: []exectest.Release{},
|
||||
log: `processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: database
|
||||
3: chart: charts/mysql
|
||||
4: needs:
|
||||
5: - logging
|
||||
6: - name: frontend-v1
|
||||
7: chart: charts/frontend
|
||||
8: installed: false
|
||||
9: needs:
|
||||
10: - servicemesh
|
||||
11: - logging
|
||||
12: - backend-v1
|
||||
13: - name: frontend-v2
|
||||
14: chart: charts/frontend
|
||||
15: needs:
|
||||
16: - servicemesh
|
||||
17: - logging
|
||||
18: - backend-v2
|
||||
19: - name: frontend-v3
|
||||
20: chart: charts/frontend
|
||||
21: needs:
|
||||
22: - servicemesh
|
||||
23: - logging
|
||||
24: - backend-v2
|
||||
25: - name: backend-v1
|
||||
26: chart: charts/backend
|
||||
27: installed: false
|
||||
28: needs:
|
||||
29: - servicemesh
|
||||
30: - logging
|
||||
31: - database
|
||||
32: - anotherbackend
|
||||
33: - name: backend-v2
|
||||
34: chart: charts/backend
|
||||
35: needs:
|
||||
36: - servicemesh
|
||||
37: - logging
|
||||
38: - database
|
||||
39: - anotherbackend
|
||||
40: - name: anotherbackend
|
||||
41: chart: charts/anotherbackend
|
||||
42: needs:
|
||||
43: - servicemesh
|
||||
44: - logging
|
||||
45: - database
|
||||
46: - name: servicemesh
|
||||
47: chart: charts/istio
|
||||
48: needs:
|
||||
49: - logging
|
||||
50: - name: logging
|
||||
51: chart: charts/fluent-bit
|
||||
52: - name: front-proxy
|
||||
53: chart: stable/envoy
|
||||
54:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: database
|
||||
3: chart: charts/mysql
|
||||
4: needs:
|
||||
5: - logging
|
||||
6: - name: frontend-v1
|
||||
7: chart: charts/frontend
|
||||
8: installed: false
|
||||
9: needs:
|
||||
10: - servicemesh
|
||||
11: - logging
|
||||
12: - backend-v1
|
||||
13: - name: frontend-v2
|
||||
14: chart: charts/frontend
|
||||
15: needs:
|
||||
16: - servicemesh
|
||||
17: - logging
|
||||
18: - backend-v2
|
||||
19: - name: frontend-v3
|
||||
20: chart: charts/frontend
|
||||
21: needs:
|
||||
22: - servicemesh
|
||||
23: - logging
|
||||
24: - backend-v2
|
||||
25: - name: backend-v1
|
||||
26: chart: charts/backend
|
||||
27: installed: false
|
||||
28: needs:
|
||||
29: - servicemesh
|
||||
30: - logging
|
||||
31: - database
|
||||
32: - anotherbackend
|
||||
33: - name: backend-v2
|
||||
34: chart: charts/backend
|
||||
35: needs:
|
||||
36: - servicemesh
|
||||
37: - logging
|
||||
38: - database
|
||||
39: - anotherbackend
|
||||
40: - name: anotherbackend
|
||||
41: chart: charts/anotherbackend
|
||||
42: needs:
|
||||
43: - servicemesh
|
||||
44: - logging
|
||||
45: - database
|
||||
46: - name: servicemesh
|
||||
47: chart: charts/istio
|
||||
48: needs:
|
||||
49: - logging
|
||||
50: - name: logging
|
||||
51: chart: charts/fluent-bit
|
||||
52: - name: front-proxy
|
||||
53: chart: stable/envoy
|
||||
54:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
10 release(s) found in helmfile.yaml
|
||||
|
||||
Affected releases are:
|
||||
anotherbackend (charts/anotherbackend) UPDATED
|
||||
backend-v1 (charts/backend) DELETED
|
||||
backend-v2 (charts/backend) UPDATED
|
||||
database (charts/mysql) UPDATED
|
||||
front-proxy (stable/envoy) UPDATED
|
||||
frontend-v1 (charts/frontend) DELETED
|
||||
frontend-v3 (charts/frontend) UPDATED
|
||||
logging (charts/fluent-bit) UPDATED
|
||||
servicemesh (charts/istio) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
},
|
||||
//
|
||||
// noop: no changes
|
||||
|
|
@ -329,51 +191,6 @@ releases:
|
|||
upgraded: []exectest.Release{},
|
||||
deleted: []exectest.Release{},
|
||||
concurrency: 1,
|
||||
log: `processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: baz
|
||||
3: chart: mychart3
|
||||
4: - name: foo
|
||||
5: chart: mychart1
|
||||
6: needs:
|
||||
7: - bar
|
||||
8: - name: bar
|
||||
9: chart: mychart2
|
||||
10:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: baz
|
||||
3: chart: mychart3
|
||||
4: - name: foo
|
||||
5: chart: mychart1
|
||||
6: needs:
|
||||
7: - bar
|
||||
8: - name: bar
|
||||
9: chart: mychart2
|
||||
10:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
3 release(s) found in helmfile.yaml
|
||||
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
baz (mychart3) UPDATED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
},
|
||||
//
|
||||
// upgrades
|
||||
|
|
@ -517,7 +334,7 @@ releases:
|
|||
upgraded: []exectest.Release{},
|
||||
},
|
||||
{
|
||||
name: "helm2: upgrade when tns1/foo needs tns2/bar",
|
||||
name: "helm2 upgrade when tns1 foo needs tns2 bar",
|
||||
loc: location(),
|
||||
|
||||
files: map[string]string{
|
||||
|
|
@ -544,7 +361,7 @@ releases:
|
|||
upgraded: []exectest.Release{},
|
||||
},
|
||||
{
|
||||
name: "helm2: upgrade when tns2/bar needs tns1/foo",
|
||||
name: "helm2 upgrade when tns2 bar needs tns1 foo",
|
||||
loc: location(),
|
||||
files: map[string]string{
|
||||
"/path/to/helmfile.yaml": `
|
||||
|
|
@ -570,57 +387,9 @@ releases:
|
|||
upgraded: []exectest.Release{},
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
log: `processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: namespace: ns2
|
||||
5: tillerNamespace: tns2
|
||||
6: needs:
|
||||
7: - tns1/foo
|
||||
8: - name: foo
|
||||
9: chart: mychart1
|
||||
10: namespace: ns1
|
||||
11: tillerNamespace: tns1
|
||||
12:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: namespace: ns2
|
||||
5: tillerNamespace: tns2
|
||||
6: needs:
|
||||
7: - tns1/foo
|
||||
8: - name: foo
|
||||
9: chart: mychart1
|
||||
10: namespace: ns1
|
||||
11: tillerNamespace: tns1
|
||||
12:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
},
|
||||
{
|
||||
name: "helm3: upgrade when ns2/bar needs ns1/foo",
|
||||
name: "helm3 upgrade when ns2 bar needs ns1 foo",
|
||||
loc: location(),
|
||||
files: map[string]string{
|
||||
"/path/to/helmfile.yaml": `
|
||||
|
|
@ -644,50 +413,6 @@ releases:
|
|||
upgraded: []exectest.Release{},
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
log: `processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: namespace: ns2
|
||||
5: needs:
|
||||
6: - ns1/foo
|
||||
7: - name: foo
|
||||
8: chart: mychart1
|
||||
9: namespace: ns1
|
||||
10:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: namespace: ns2
|
||||
5: needs:
|
||||
6: - ns1/foo
|
||||
7: - name: foo
|
||||
8: chart: mychart1
|
||||
9: namespace: ns1
|
||||
10:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
},
|
||||
//
|
||||
// deletes: deleting all releases in the correct order
|
||||
|
|
@ -807,6 +532,76 @@ releases:
|
|||
`,
|
||||
},
|
||||
detailedExitcode: true,
|
||||
error: `in ./helmfile.yaml: release "foo" depends on "bar" which does not match the selectors. Please add a selector like "--selector name=bar", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies`,
|
||||
diffs: map[exectest.DiffKey]error{
|
||||
{Name: "bar", Chart: "mychart2", Flags: "--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
{Name: "foo", Chart: "mychart1", Flags: "--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
},
|
||||
lists: map[exectest.ListKey]string{
|
||||
{Filter: "^foo$", Flags: helmV2ListFlagsWithoutKubeContext}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
foo 4 Fri Nov 1 08:40:07 2019 DEPLOYED mychart1-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^bar$", Flags: helmV2ListFlagsWithoutKubeContext}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
bar 4 Fri Nov 1 08:40:07 2019 DEPLOYED mychart2-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
upgraded: []exectest.Release{},
|
||||
deleted: []exectest.Release{},
|
||||
},
|
||||
{
|
||||
name: "delete bar when foo needs bar with include-needs",
|
||||
loc: location(),
|
||||
files: map[string]string{
|
||||
"/path/to/helmfile.yaml": `
|
||||
releases:
|
||||
- name: bar
|
||||
chart: mychart2
|
||||
installed: false
|
||||
- name: foo
|
||||
chart: mychart1
|
||||
needs:
|
||||
- bar
|
||||
`,
|
||||
},
|
||||
flags: flags{
|
||||
includeNeeds: true,
|
||||
},
|
||||
detailedExitcode: true,
|
||||
error: "Identified at least one change",
|
||||
diffs: map[exectest.DiffKey]error{
|
||||
{Name: "bar", Chart: "mychart2", Flags: "--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
{Name: "foo", Chart: "mychart1", Flags: "--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
},
|
||||
lists: map[exectest.ListKey]string{
|
||||
{Filter: "^foo$", Flags: helmV2ListFlagsWithoutKubeContext}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
foo 4 Fri Nov 1 08:40:07 2019 DEPLOYED mychart1-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^bar$", Flags: helmV2ListFlagsWithoutKubeContext}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
bar 4 Fri Nov 1 08:40:07 2019 DEPLOYED mychart2-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
upgraded: []exectest.Release{},
|
||||
deleted: []exectest.Release{},
|
||||
},
|
||||
{
|
||||
name: "delete bar when foo needs bar with skip-needs",
|
||||
loc: location(),
|
||||
files: map[string]string{
|
||||
"/path/to/helmfile.yaml": `
|
||||
releases:
|
||||
- name: bar
|
||||
chart: mychart2
|
||||
installed: false
|
||||
- name: foo
|
||||
chart: mychart1
|
||||
needs:
|
||||
- bar
|
||||
`,
|
||||
},
|
||||
flags: flags{
|
||||
skipNeeds: true,
|
||||
},
|
||||
detailedExitcode: true,
|
||||
error: "Identified at least one change",
|
||||
diffs: map[exectest.DiffKey]error{
|
||||
{Name: "bar", Chart: "mychart2", Flags: "--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
|
|
@ -839,7 +634,7 @@ releases:
|
|||
`,
|
||||
},
|
||||
detailedExitcode: true,
|
||||
error: "Identified at least one change",
|
||||
error: `in ./helmfile.yaml: release "bar" depends on "foo" which does not match the selectors. Please add a selector like "--selector name=foo", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies`,
|
||||
diffs: map[exectest.DiffKey]error{
|
||||
{Name: "bar", Chart: "mychart2", Flags: "--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
{Name: "foo", Chart: "mychart1", Flags: "--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
|
|
@ -931,76 +726,6 @@ releases:
|
|||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
error: "Identified at least one change",
|
||||
log: `processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1:
|
||||
2:
|
||||
3: releases:
|
||||
4: - name: kubernetes-external-secrets
|
||||
5: chart: incubator/raw
|
||||
6: namespace: kube-system
|
||||
7:
|
||||
8: - name: external-secrets
|
||||
9: chart: incubator/raw
|
||||
10: namespace: default
|
||||
11: labels:
|
||||
12: app: test
|
||||
13: needs:
|
||||
14: - kube-system/kubernetes-external-secrets
|
||||
15:
|
||||
16: - name: my-release
|
||||
17: chart: incubator/raw
|
||||
18: namespace: default
|
||||
19: labels:
|
||||
20: app: test
|
||||
21: needs:
|
||||
22: - default/external-secrets
|
||||
23:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1:
|
||||
2:
|
||||
3: releases:
|
||||
4: - name: kubernetes-external-secrets
|
||||
5: chart: incubator/raw
|
||||
6: namespace: kube-system
|
||||
7:
|
||||
8: - name: external-secrets
|
||||
9: chart: incubator/raw
|
||||
10: namespace: default
|
||||
11: labels:
|
||||
12: app: test
|
||||
13: needs:
|
||||
14: - kube-system/kubernetes-external-secrets
|
||||
15:
|
||||
16: - name: my-release
|
||||
17: chart: incubator/raw
|
||||
18: namespace: default
|
||||
19: labels:
|
||||
20: app: test
|
||||
21: needs:
|
||||
22: - default/external-secrets
|
||||
23:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) matching app=test found in helmfile.yaml
|
||||
|
||||
Affected releases are:
|
||||
external-secrets (incubator/raw) UPDATED
|
||||
my-release (incubator/raw) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
},
|
||||
{
|
||||
name: "upgrades with good selector with --skip-needs=false",
|
||||
|
|
@ -1359,6 +1084,7 @@ changing working directory back to "/path/to"
|
|||
logger: logger,
|
||||
detailedExitcode: tc.detailedExitcode,
|
||||
skipNeeds: tc.flags.skipNeeds,
|
||||
includeNeeds: tc.flags.includeNeeds,
|
||||
})
|
||||
|
||||
var diffErrStr string
|
||||
|
|
@ -1408,6 +1134,8 @@ changing working directory back to "/path/to"
|
|||
if exists {
|
||||
t.Errorf("unexpected log for data defined %s:\nDIFF\n%s\nEOD", tc.loc, diff)
|
||||
}
|
||||
} else {
|
||||
testhelper.RequireLog(t, "app_diff_test_2", bs)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,28 +17,29 @@ import (
|
|||
)
|
||||
|
||||
type diffConfig struct {
|
||||
args string
|
||||
values []string
|
||||
retainValuesFiles bool
|
||||
set []string
|
||||
validate bool
|
||||
skipCRDs bool
|
||||
skipDeps bool
|
||||
includeTests bool
|
||||
includeNeeds bool
|
||||
skipNeeds bool
|
||||
suppress []string
|
||||
suppressSecrets bool
|
||||
showSecrets bool
|
||||
suppressDiff bool
|
||||
noColor bool
|
||||
context int
|
||||
diffOutput string
|
||||
concurrency int
|
||||
detailedExitcode bool
|
||||
interactive bool
|
||||
skipDiffOnInstall bool
|
||||
logger *zap.SugaredLogger
|
||||
args string
|
||||
values []string
|
||||
retainValuesFiles bool
|
||||
set []string
|
||||
validate bool
|
||||
skipCRDs bool
|
||||
skipDeps bool
|
||||
includeTests bool
|
||||
skipNeeds bool
|
||||
includeNeeds bool
|
||||
includeTransitiveNeeds bool
|
||||
suppress []string
|
||||
suppressSecrets bool
|
||||
showSecrets bool
|
||||
suppressDiff bool
|
||||
noColor bool
|
||||
context int
|
||||
diffOutput string
|
||||
concurrency int
|
||||
detailedExitcode bool
|
||||
interactive bool
|
||||
skipDiffOnInstall bool
|
||||
logger *zap.SugaredLogger
|
||||
}
|
||||
|
||||
func (a diffConfig) Args() string {
|
||||
|
|
@ -69,12 +70,16 @@ func (a diffConfig) IncludeTests() bool {
|
|||
return a.includeTests
|
||||
}
|
||||
|
||||
func (a diffConfig) SkipNeeds() bool {
|
||||
return a.skipNeeds
|
||||
}
|
||||
|
||||
func (a diffConfig) IncludeNeeds() bool {
|
||||
return a.includeNeeds
|
||||
}
|
||||
|
||||
func (a diffConfig) SkipNeeds() bool {
|
||||
return a.skipNeeds
|
||||
func (a diffConfig) IncludeTransitiveNeeds() bool {
|
||||
return a.includeTransitiveNeeds
|
||||
}
|
||||
|
||||
func (a diffConfig) Suppress() []string {
|
||||
|
|
@ -135,7 +140,8 @@ func (a diffConfig) RetainValuesFiles() bool {
|
|||
|
||||
func TestDiff(t *testing.T) {
|
||||
type flags struct {
|
||||
skipNeeds bool
|
||||
skipNeeds bool
|
||||
includeNeeds bool
|
||||
}
|
||||
|
||||
testcases := []struct {
|
||||
|
|
@ -246,145 +252,6 @@ backend-v1 4 Fri Nov 1 08:40:07 2019 DEPLOYED backend-3.1.0 3.1.0
|
|||
concurrency: 1,
|
||||
upgraded: []exectest.Release{},
|
||||
deleted: []exectest.Release{},
|
||||
log: `processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: database
|
||||
3: chart: charts/mysql
|
||||
4: needs:
|
||||
5: - logging
|
||||
6: - name: frontend-v1
|
||||
7: chart: charts/frontend
|
||||
8: installed: false
|
||||
9: needs:
|
||||
10: - servicemesh
|
||||
11: - logging
|
||||
12: - backend-v1
|
||||
13: - name: frontend-v2
|
||||
14: chart: charts/frontend
|
||||
15: needs:
|
||||
16: - servicemesh
|
||||
17: - logging
|
||||
18: - backend-v2
|
||||
19: - name: frontend-v3
|
||||
20: chart: charts/frontend
|
||||
21: needs:
|
||||
22: - servicemesh
|
||||
23: - logging
|
||||
24: - backend-v2
|
||||
25: - name: backend-v1
|
||||
26: chart: charts/backend
|
||||
27: installed: false
|
||||
28: needs:
|
||||
29: - servicemesh
|
||||
30: - logging
|
||||
31: - database
|
||||
32: - anotherbackend
|
||||
33: - name: backend-v2
|
||||
34: chart: charts/backend
|
||||
35: needs:
|
||||
36: - servicemesh
|
||||
37: - logging
|
||||
38: - database
|
||||
39: - anotherbackend
|
||||
40: - name: anotherbackend
|
||||
41: chart: charts/anotherbackend
|
||||
42: needs:
|
||||
43: - servicemesh
|
||||
44: - logging
|
||||
45: - database
|
||||
46: - name: servicemesh
|
||||
47: chart: charts/istio
|
||||
48: needs:
|
||||
49: - logging
|
||||
50: - name: logging
|
||||
51: chart: charts/fluent-bit
|
||||
52: - name: front-proxy
|
||||
53: chart: stable/envoy
|
||||
54:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: database
|
||||
3: chart: charts/mysql
|
||||
4: needs:
|
||||
5: - logging
|
||||
6: - name: frontend-v1
|
||||
7: chart: charts/frontend
|
||||
8: installed: false
|
||||
9: needs:
|
||||
10: - servicemesh
|
||||
11: - logging
|
||||
12: - backend-v1
|
||||
13: - name: frontend-v2
|
||||
14: chart: charts/frontend
|
||||
15: needs:
|
||||
16: - servicemesh
|
||||
17: - logging
|
||||
18: - backend-v2
|
||||
19: - name: frontend-v3
|
||||
20: chart: charts/frontend
|
||||
21: needs:
|
||||
22: - servicemesh
|
||||
23: - logging
|
||||
24: - backend-v2
|
||||
25: - name: backend-v1
|
||||
26: chart: charts/backend
|
||||
27: installed: false
|
||||
28: needs:
|
||||
29: - servicemesh
|
||||
30: - logging
|
||||
31: - database
|
||||
32: - anotherbackend
|
||||
33: - name: backend-v2
|
||||
34: chart: charts/backend
|
||||
35: needs:
|
||||
36: - servicemesh
|
||||
37: - logging
|
||||
38: - database
|
||||
39: - anotherbackend
|
||||
40: - name: anotherbackend
|
||||
41: chart: charts/anotherbackend
|
||||
42: needs:
|
||||
43: - servicemesh
|
||||
44: - logging
|
||||
45: - database
|
||||
46: - name: servicemesh
|
||||
47: chart: charts/istio
|
||||
48: needs:
|
||||
49: - logging
|
||||
50: - name: logging
|
||||
51: chart: charts/fluent-bit
|
||||
52: - name: front-proxy
|
||||
53: chart: stable/envoy
|
||||
54:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
10 release(s) found in helmfile.yaml
|
||||
|
||||
Affected releases are:
|
||||
anotherbackend (charts/anotherbackend) UPDATED
|
||||
backend-v1 (charts/backend) DELETED
|
||||
backend-v2 (charts/backend) UPDATED
|
||||
database (charts/mysql) UPDATED
|
||||
front-proxy (stable/envoy) UPDATED
|
||||
frontend-v1 (charts/frontend) DELETED
|
||||
frontend-v3 (charts/frontend) UPDATED
|
||||
logging (charts/fluent-bit) UPDATED
|
||||
servicemesh (charts/istio) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
},
|
||||
//
|
||||
// noop: no changes
|
||||
|
|
@ -448,51 +315,6 @@ releases:
|
|||
upgraded: []exectest.Release{},
|
||||
deleted: []exectest.Release{},
|
||||
concurrency: 1,
|
||||
log: `processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: baz
|
||||
3: chart: mychart3
|
||||
4: - name: foo
|
||||
5: chart: mychart1
|
||||
6: needs:
|
||||
7: - bar
|
||||
8: - name: bar
|
||||
9: chart: mychart2
|
||||
10:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: baz
|
||||
3: chart: mychart3
|
||||
4: - name: foo
|
||||
5: chart: mychart1
|
||||
6: needs:
|
||||
7: - bar
|
||||
8: - name: bar
|
||||
9: chart: mychart2
|
||||
10:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
3 release(s) found in helmfile.yaml
|
||||
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
baz (mychart3) UPDATED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
},
|
||||
//
|
||||
// upgrades
|
||||
|
|
@ -612,31 +434,7 @@ releases:
|
|||
upgraded: []exectest.Release{},
|
||||
},
|
||||
{
|
||||
name: "helm3: upgrade when ns2/bar needs ns1/foo",
|
||||
loc: location(),
|
||||
files: map[string]string{
|
||||
"/path/to/helmfile.yaml": `
|
||||
releases:
|
||||
- name: bar
|
||||
chart: mychart2
|
||||
namespace: ns2
|
||||
needs:
|
||||
- ns1/foo
|
||||
- name: foo
|
||||
chart: mychart1
|
||||
namespace: ns1
|
||||
`,
|
||||
},
|
||||
detailedExitcode: true,
|
||||
error: "Identified at least one change",
|
||||
diffs: map[exectest.DiffKey]error{
|
||||
{Name: "bar", Chart: "mychart2", Flags: "--kube-contextdefault--namespacens2--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
{Name: "foo", Chart: "mychart1", Flags: "--kube-contextdefault--namespacens1--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
},
|
||||
upgraded: []exectest.Release{},
|
||||
},
|
||||
{
|
||||
name: "upgrade when tns1/ns1/foo needs tns2/ns2/bar",
|
||||
name: "upgrade when tns1 ns1 foo needs tns2 ns2 bar",
|
||||
loc: location(),
|
||||
|
||||
files: map[string]string{
|
||||
|
|
@ -663,7 +461,7 @@ releases:
|
|||
upgraded: []exectest.Release{},
|
||||
},
|
||||
{
|
||||
name: "helm2: upgrade when tns2/bar needs tns1/foo",
|
||||
name: "helm2 upgrade when tns2 bar needs tns1 foo",
|
||||
loc: location(),
|
||||
files: map[string]string{
|
||||
"/path/to/helmfile.yaml": `
|
||||
|
|
@ -689,57 +487,9 @@ releases:
|
|||
upgraded: []exectest.Release{},
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
log: `processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: namespace: ns2
|
||||
5: tillerNamespace: tns2
|
||||
6: needs:
|
||||
7: - tns1/foo
|
||||
8: - name: foo
|
||||
9: chart: mychart1
|
||||
10: namespace: ns1
|
||||
11: tillerNamespace: tns1
|
||||
12:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: namespace: ns2
|
||||
5: tillerNamespace: tns2
|
||||
6: needs:
|
||||
7: - tns1/foo
|
||||
8: - name: foo
|
||||
9: chart: mychart1
|
||||
10: namespace: ns1
|
||||
11: tillerNamespace: tns1
|
||||
12:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
},
|
||||
{
|
||||
name: "helm3: upgrade when ns2/bar needs ns1/foo",
|
||||
name: "helm3 upgrade when ns2 bar needs ns1 foo",
|
||||
loc: location(),
|
||||
files: map[string]string{
|
||||
"/path/to/helmfile.yaml": `
|
||||
|
|
@ -763,50 +513,6 @@ releases:
|
|||
upgraded: []exectest.Release{},
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
log: `processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: namespace: ns2
|
||||
5: needs:
|
||||
6: - ns1/foo
|
||||
7: - name: foo
|
||||
8: chart: mychart1
|
||||
9: namespace: ns1
|
||||
10:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: namespace: ns2
|
||||
5: needs:
|
||||
6: - ns1/foo
|
||||
7: - name: foo
|
||||
8: chart: mychart1
|
||||
9: namespace: ns1
|
||||
10:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
},
|
||||
//
|
||||
// deletes: deleting all releases in the correct order
|
||||
|
|
@ -926,7 +632,77 @@ releases:
|
|||
`,
|
||||
},
|
||||
detailedExitcode: true,
|
||||
error: "Identified at least one change",
|
||||
error: `in ./helmfile.yaml: release "default//foo" depends on "default//bar" which does not match the selectors. Please add a selector like "--selector name=bar", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies`,
|
||||
diffs: map[exectest.DiffKey]error{
|
||||
{Name: "bar", Chart: "mychart2", Flags: "--kube-contextdefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
{Name: "foo", Chart: "mychart1", Flags: "--kube-contextdefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
},
|
||||
lists: map[exectest.ListKey]string{
|
||||
{Filter: "^foo$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
foo 4 Fri Nov 1 08:40:07 2019 DEPLOYED mychart1-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^bar$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
bar 4 Fri Nov 1 08:40:07 2019 DEPLOYED mychart2-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
upgraded: []exectest.Release{},
|
||||
deleted: []exectest.Release{},
|
||||
},
|
||||
{
|
||||
name: "delete bar when foo needs bar with include-needs",
|
||||
loc: location(),
|
||||
files: map[string]string{
|
||||
"/path/to/helmfile.yaml": `
|
||||
releases:
|
||||
- name: bar
|
||||
chart: mychart2
|
||||
installed: false
|
||||
- name: foo
|
||||
chart: mychart1
|
||||
needs:
|
||||
- bar
|
||||
`,
|
||||
},
|
||||
detailedExitcode: true,
|
||||
flags: flags{
|
||||
includeNeeds: true,
|
||||
},
|
||||
error: "Identified at least one change",
|
||||
diffs: map[exectest.DiffKey]error{
|
||||
{Name: "bar", Chart: "mychart2", Flags: "--kube-contextdefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
{Name: "foo", Chart: "mychart1", Flags: "--kube-contextdefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
},
|
||||
lists: map[exectest.ListKey]string{
|
||||
{Filter: "^foo$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
foo 4 Fri Nov 1 08:40:07 2019 DEPLOYED mychart1-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^bar$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
bar 4 Fri Nov 1 08:40:07 2019 DEPLOYED mychart2-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
upgraded: []exectest.Release{},
|
||||
deleted: []exectest.Release{},
|
||||
},
|
||||
{
|
||||
name: "delete bar when foo needs bar with skip-needs",
|
||||
loc: location(),
|
||||
files: map[string]string{
|
||||
"/path/to/helmfile.yaml": `
|
||||
releases:
|
||||
- name: bar
|
||||
chart: mychart2
|
||||
installed: false
|
||||
- name: foo
|
||||
chart: mychart1
|
||||
needs:
|
||||
- bar
|
||||
`,
|
||||
},
|
||||
detailedExitcode: true,
|
||||
flags: flags{
|
||||
skipNeeds: true,
|
||||
},
|
||||
error: "Identified at least one change",
|
||||
diffs: map[exectest.DiffKey]error{
|
||||
{Name: "bar", Chart: "mychart2", Flags: "--kube-contextdefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
{Name: "foo", Chart: "mychart1", Flags: "--kube-contextdefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
|
|
@ -958,6 +734,76 @@ releases:
|
|||
`,
|
||||
},
|
||||
detailedExitcode: true,
|
||||
error: `in ./helmfile.yaml: release "default//bar" depends on "default//foo" which does not match the selectors. Please add a selector like "--selector name=foo", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies`,
|
||||
diffs: map[exectest.DiffKey]error{
|
||||
{Name: "bar", Chart: "mychart2", Flags: "--kube-contextdefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
{Name: "foo", Chart: "mychart1", Flags: "--kube-contextdefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
},
|
||||
lists: map[exectest.ListKey]string{
|
||||
{Filter: "^foo$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
foo 4 Fri Nov 1 08:40:07 2019 DEPLOYED mychart1-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^bar$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
bar 4 Fri Nov 1 08:40:07 2019 DEPLOYED mychart2-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
upgraded: []exectest.Release{},
|
||||
deleted: []exectest.Release{},
|
||||
},
|
||||
{
|
||||
name: "delete foo when bar needs foo with include-needs",
|
||||
loc: location(),
|
||||
files: map[string]string{
|
||||
"/path/to/helmfile.yaml": `
|
||||
releases:
|
||||
- name: foo
|
||||
chart: mychart1
|
||||
installed: false
|
||||
- name: bar
|
||||
chart: mychart2
|
||||
needs:
|
||||
- foo
|
||||
`,
|
||||
},
|
||||
flags: flags{
|
||||
includeNeeds: true,
|
||||
},
|
||||
detailedExitcode: true,
|
||||
error: "Identified at least one change",
|
||||
diffs: map[exectest.DiffKey]error{
|
||||
{Name: "bar", Chart: "mychart2", Flags: "--kube-contextdefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
{Name: "foo", Chart: "mychart1", Flags: "--kube-contextdefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
},
|
||||
lists: map[exectest.ListKey]string{
|
||||
{Filter: "^foo$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
foo 4 Fri Nov 1 08:40:07 2019 DEPLOYED mychart1-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^bar$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
bar 4 Fri Nov 1 08:40:07 2019 DEPLOYED mychart2-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
upgraded: []exectest.Release{},
|
||||
deleted: []exectest.Release{},
|
||||
},
|
||||
{
|
||||
name: "delete foo when bar needs foo with skip-needs",
|
||||
loc: location(),
|
||||
files: map[string]string{
|
||||
"/path/to/helmfile.yaml": `
|
||||
releases:
|
||||
- name: foo
|
||||
chart: mychart1
|
||||
installed: false
|
||||
- name: bar
|
||||
chart: mychart2
|
||||
needs:
|
||||
- foo
|
||||
`,
|
||||
},
|
||||
flags: flags{
|
||||
skipNeeds: true,
|
||||
},
|
||||
detailedExitcode: true,
|
||||
error: "Identified at least one change",
|
||||
diffs: map[exectest.DiffKey]error{
|
||||
{Name: "bar", Chart: "mychart2", Flags: "--kube-contextdefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
|
|
@ -1050,76 +896,6 @@ releases:
|
|||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
error: "Identified at least one change",
|
||||
log: `processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1:
|
||||
2:
|
||||
3: releases:
|
||||
4: - name: kubernetes-external-secrets
|
||||
5: chart: incubator/raw
|
||||
6: namespace: kube-system
|
||||
7:
|
||||
8: - name: external-secrets
|
||||
9: chart: incubator/raw
|
||||
10: namespace: default
|
||||
11: labels:
|
||||
12: app: test
|
||||
13: needs:
|
||||
14: - kube-system/kubernetes-external-secrets
|
||||
15:
|
||||
16: - name: my-release
|
||||
17: chart: incubator/raw
|
||||
18: namespace: default
|
||||
19: labels:
|
||||
20: app: test
|
||||
21: needs:
|
||||
22: - default/external-secrets
|
||||
23:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1:
|
||||
2:
|
||||
3: releases:
|
||||
4: - name: kubernetes-external-secrets
|
||||
5: chart: incubator/raw
|
||||
6: namespace: kube-system
|
||||
7:
|
||||
8: - name: external-secrets
|
||||
9: chart: incubator/raw
|
||||
10: namespace: default
|
||||
11: labels:
|
||||
12: app: test
|
||||
13: needs:
|
||||
14: - kube-system/kubernetes-external-secrets
|
||||
15:
|
||||
16: - name: my-release
|
||||
17: chart: incubator/raw
|
||||
18: namespace: default
|
||||
19: labels:
|
||||
20: app: test
|
||||
21: needs:
|
||||
22: - default/external-secrets
|
||||
23:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) matching app=test found in helmfile.yaml
|
||||
|
||||
Affected releases are:
|
||||
external-secrets (incubator/raw) UPDATED
|
||||
my-release (incubator/raw) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
},
|
||||
{
|
||||
name: "upgrades with good selector with --skip-needs=false",
|
||||
|
|
@ -1542,6 +1318,7 @@ changing working directory back to "/path/to"
|
|||
logger: logger,
|
||||
detailedExitcode: tc.detailedExitcode,
|
||||
skipNeeds: tc.flags.skipNeeds,
|
||||
includeNeeds: tc.flags.includeNeeds,
|
||||
})
|
||||
|
||||
var diffErrStr string
|
||||
|
|
@ -1591,6 +1368,8 @@ changing working directory back to "/path/to"
|
|||
if exists {
|
||||
t.Errorf("unexpected log for data defined %s:\nDIFF\n%s\nEOD", tc.loc, diff)
|
||||
}
|
||||
} else {
|
||||
testhelper.RequireLog(t, "app_diff_test_1", bs)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,107 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
0 release(s) matching app=test_non_existent found in helmfile.yaml
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) matching app=test found in helmfile.yaml
|
||||
|
||||
err: release "default/default/external-secrets" depends on "default/kube-system/kubernetes-external-secrets" which does not match the selectors. Please add a selector like "--selector name=kubernetes-external-secrets", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) matching app=test found in helmfile.yaml
|
||||
|
||||
processing 4 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/kube-system/logging
|
||||
2 default/kube-system/kubernetes-external-secrets
|
||||
3 default/default/external-secrets
|
||||
4 default/default/my-release
|
||||
|
||||
processing releases in group 1/4: default/kube-system/logging
|
||||
processing releases in group 2/4: default/kube-system/kubernetes-external-secrets
|
||||
processing releases in group 3/4: default/default/external-secrets
|
||||
processing releases in group 4/4: default/default/my-release
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
1 release(s) matching name=test2 found in helmfile.yaml
|
||||
|
||||
err: release "default//test2" depends on "default/kube-system/disabled" which does not match the selectors. Please add a selector like "--selector name=disabled", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies
|
||||
changing working directory back to "/path/to"
|
||||
108
pkg/app/testdata/app_diff_test/include-needs_fail_on_disabled_transitive_need
vendored
Normal file
108
pkg/app/testdata/app_diff_test/include-needs_fail_on_disabled_transitive_need
vendored
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
1 release(s) matching name=test3 found in helmfile.yaml
|
||||
|
||||
err: release "default//test2" depends on "default/kube-system/disabled" which does not match the selectors. Please add a selector like "--selector name=disabled", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies
|
||||
changing working directory back to "/path/to"
|
||||
117
pkg/app/testdata/app_diff_test/include-needs_should_not_fail_on_disabled_direct_need
vendored
Normal file
117
pkg/app/testdata/app_diff_test/include-needs_should_not_fail_on_disabled_direct_need
vendored
Normal file
|
|
@ -0,0 +1,117 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
1 release(s) matching name=test2 found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/kube-system/disabled
|
||||
2 default//test2
|
||||
|
||||
processing releases in group 1/2: default/kube-system/disabled
|
||||
processing releases in group 2/2: default//test2
|
||||
Affected releases are:
|
||||
disabled (incubator/raw) DELETED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
119
pkg/app/testdata/app_diff_test/include-needs_should_not_fail_on_disabled_transitive_need
vendored
Normal file
119
pkg/app/testdata/app_diff_test/include-needs_should_not_fail_on_disabled_transitive_need
vendored
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
1 release(s) matching name=test3 found in helmfile.yaml
|
||||
|
||||
processing 3 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/kube-system/disabled
|
||||
2 default//test2
|
||||
3 default//test3
|
||||
|
||||
processing releases in group 1/3: default/kube-system/disabled
|
||||
processing releases in group 2/3: default//test2
|
||||
processing releases in group 3/3: default//test3
|
||||
Affected releases are:
|
||||
disabled (incubator/raw) DELETED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) matching name=test2 found in helmfile.yaml
|
||||
|
||||
err: release "default//test2" depends on "default/kube-system/disabled" which does not match the selectors. Please add a selector like "--selector name=disabled", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
3 release(s) matching name=test3 found in helmfile.yaml
|
||||
|
||||
err: release "default//test2" depends on "default/kube-system/disabled" which does not match the selectors. Please add a selector like "--selector name=disabled", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,117 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
1 release(s) matching name=test2 found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/kube-system/disabled
|
||||
2 default//test2
|
||||
|
||||
processing releases in group 1/2: default/kube-system/disabled
|
||||
processing releases in group 2/2: default//test2
|
||||
Affected releases are:
|
||||
disabled (incubator/raw) DELETED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,119 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
1 release(s) matching name=test3 found in helmfile.yaml
|
||||
|
||||
processing 3 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/kube-system/disabled
|
||||
2 default//test2
|
||||
3 default//test3
|
||||
|
||||
processing releases in group 1/3: default/kube-system/disabled
|
||||
processing releases in group 2/3: default//test2
|
||||
processing releases in group 3/3: default//test3
|
||||
Affected releases are:
|
||||
disabled (incubator/raw) DELETED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) matching app=test found in helmfile.yaml
|
||||
|
||||
processing 4 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/kube-system/logging
|
||||
2 default/kube-system/kubernetes-external-secrets
|
||||
3 default/default/external-secrets
|
||||
4 default/default/my-release
|
||||
|
||||
processing releases in group 1/4: default/kube-system/logging
|
||||
processing releases in group 2/4: default/kube-system/kubernetes-external-secrets
|
||||
processing releases in group 3/4: default/default/external-secrets
|
||||
processing releases in group 4/4: default/default/my-release
|
||||
changing working directory back to "/path/to"
|
||||
119
pkg/app/testdata/app_diff_test/include-transitive-needs_should_not_fail_on_disabled_transitive_need
vendored
Normal file
119
pkg/app/testdata/app_diff_test/include-transitive-needs_should_not_fail_on_disabled_transitive_need
vendored
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
1 release(s) matching name=test3 found in helmfile.yaml
|
||||
|
||||
processing 3 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/kube-system/disabled
|
||||
2 default//test2
|
||||
3 default//test3
|
||||
|
||||
processing releases in group 1/3: default/kube-system/disabled
|
||||
processing releases in group 2/3: default//test2
|
||||
processing releases in group 3/3: default//test3
|
||||
Affected releases are:
|
||||
disabled (incubator/raw) DELETED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,114 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) matching app=test found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/default/external-secrets
|
||||
2 default/default/my-release
|
||||
|
||||
processing releases in group 1/2: default/default/external-secrets
|
||||
processing releases in group 2/2: default/default/my-release
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: namespace: ns1
|
||||
5: needs:
|
||||
6: - ns2/bar
|
||||
7: - name: bar
|
||||
8: chart: mychart2
|
||||
9: namespace: ns2
|
||||
10:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: namespace: ns1
|
||||
5: needs:
|
||||
6: - ns2/bar
|
||||
7: - name: bar
|
||||
8: chart: mychart2
|
||||
9: namespace: ns2
|
||||
10:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/ns2/bar
|
||||
2 default/ns1/foo
|
||||
|
||||
processing releases in group 1/2: default/ns2/bar
|
||||
processing releases in group 2/2: default/ns1/foo
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: - name: bar
|
||||
5: chart: mychart2
|
||||
6: installed: false
|
||||
7: needs:
|
||||
8: - foo
|
||||
9:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: - name: bar
|
||||
5: chart: mychart2
|
||||
6: installed: false
|
||||
7: needs:
|
||||
8: - foo
|
||||
9:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 1 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default//foo
|
||||
|
||||
processing releases in group 1/1: default//foo
|
||||
Affected releases are:
|
||||
bar (mychart2) DELETED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: installed: false
|
||||
5: - name: foo
|
||||
6: chart: mychart1
|
||||
7: needs:
|
||||
8: - bar
|
||||
9:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: installed: false
|
||||
5: - name: foo
|
||||
6: chart: mychart1
|
||||
7: needs:
|
||||
8: - bar
|
||||
9:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
err: release "default//foo" depends on "default//bar" which does not match the selectors. Please add a selector like "--selector name=bar", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies
|
||||
changing working directory back to "/path/to"
|
||||
48
pkg/app/testdata/app_diff_test_1/delete_bar_when_foo_needs_bar_with_include-needs
vendored
Normal file
48
pkg/app/testdata/app_diff_test_1/delete_bar_when_foo_needs_bar_with_include-needs
vendored
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: installed: false
|
||||
5: - name: foo
|
||||
6: chart: mychart1
|
||||
7: needs:
|
||||
8: - bar
|
||||
9:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: installed: false
|
||||
5: - name: foo
|
||||
6: chart: mychart1
|
||||
7: needs:
|
||||
8: - bar
|
||||
9:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default//bar
|
||||
2 default//foo
|
||||
|
||||
processing releases in group 1/2: default//bar
|
||||
processing releases in group 2/2: default//foo
|
||||
Affected releases are:
|
||||
bar (mychart2) DELETED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
46
pkg/app/testdata/app_diff_test_1/delete_bar_when_foo_needs_bar_with_skip-needs
vendored
Normal file
46
pkg/app/testdata/app_diff_test_1/delete_bar_when_foo_needs_bar_with_skip-needs
vendored
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: installed: false
|
||||
5: - name: foo
|
||||
6: chart: mychart1
|
||||
7: needs:
|
||||
8: - bar
|
||||
9:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: installed: false
|
||||
5: - name: foo
|
||||
6: chart: mychart1
|
||||
7: needs:
|
||||
8: - bar
|
||||
9:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 1 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default//foo
|
||||
|
||||
processing releases in group 1/1: default//foo
|
||||
Affected releases are:
|
||||
bar (mychart2) DELETED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: installed: false
|
||||
5: needs:
|
||||
6: - foo
|
||||
7: - name: foo
|
||||
8: chart: mychart1
|
||||
9: installed: false
|
||||
10:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: installed: false
|
||||
5: needs:
|
||||
6: - foo
|
||||
7: - name: foo
|
||||
8: chart: mychart1
|
||||
9: installed: false
|
||||
10:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default//foo
|
||||
2 default//bar
|
||||
|
||||
processing releases in group 1/2: default//foo
|
||||
processing releases in group 2/2: default//bar
|
||||
Affected releases are:
|
||||
bar (mychart2) DELETED
|
||||
foo (mychart1) DELETED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: installed: false
|
||||
5: - name: foo
|
||||
6: chart: mychart1
|
||||
7: installed: false
|
||||
8: needs:
|
||||
9: - bar
|
||||
10:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: installed: false
|
||||
5: - name: foo
|
||||
6: chart: mychart1
|
||||
7: installed: false
|
||||
8: needs:
|
||||
9: - bar
|
||||
10:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default//bar
|
||||
2 default//foo
|
||||
|
||||
processing releases in group 1/2: default//bar
|
||||
processing releases in group 2/2: default//foo
|
||||
Affected releases are:
|
||||
bar (mychart2) DELETED
|
||||
foo (mychart1) DELETED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: installed: false
|
||||
5: - name: bar
|
||||
6: chart: mychart2
|
||||
7: needs:
|
||||
8: - foo
|
||||
9:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: installed: false
|
||||
5: - name: bar
|
||||
6: chart: mychart2
|
||||
7: needs:
|
||||
8: - foo
|
||||
9:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
err: release "default//bar" depends on "default//foo" which does not match the selectors. Please add a selector like "--selector name=foo", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies
|
||||
changing working directory back to "/path/to"
|
||||
48
pkg/app/testdata/app_diff_test_1/delete_foo_when_bar_needs_foo_with_include-needs
vendored
Normal file
48
pkg/app/testdata/app_diff_test_1/delete_foo_when_bar_needs_foo_with_include-needs
vendored
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: installed: false
|
||||
5: - name: bar
|
||||
6: chart: mychart2
|
||||
7: needs:
|
||||
8: - foo
|
||||
9:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: installed: false
|
||||
5: - name: bar
|
||||
6: chart: mychart2
|
||||
7: needs:
|
||||
8: - foo
|
||||
9:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default//foo
|
||||
2 default//bar
|
||||
|
||||
processing releases in group 1/2: default//foo
|
||||
processing releases in group 2/2: default//bar
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
foo (mychart1) DELETED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
46
pkg/app/testdata/app_diff_test_1/delete_foo_when_bar_needs_foo_with_skip-needs
vendored
Normal file
46
pkg/app/testdata/app_diff_test_1/delete_foo_when_bar_needs_foo_with_skip-needs
vendored
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: installed: false
|
||||
5: - name: bar
|
||||
6: chart: mychart2
|
||||
7: needs:
|
||||
8: - foo
|
||||
9:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: installed: false
|
||||
5: - name: bar
|
||||
6: chart: mychart2
|
||||
7: needs:
|
||||
8: - foo
|
||||
9:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 1 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default//bar
|
||||
|
||||
processing releases in group 1/1: default//bar
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
foo (mychart1) DELETED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: - name: foo
|
||||
5: chart: mychart1
|
||||
6: installed: false
|
||||
7: needs:
|
||||
8: - bar
|
||||
9:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: - name: foo
|
||||
5: chart: mychart1
|
||||
6: installed: false
|
||||
7: needs:
|
||||
8: - bar
|
||||
9:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 1 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default//bar
|
||||
|
||||
processing releases in group 1/1: default//bar
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
foo (mychart1) DELETED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: namespace: ns2
|
||||
5: tillerNamespace: tns2
|
||||
6: needs:
|
||||
7: - tns1/foo
|
||||
8: - name: foo
|
||||
9: chart: mychart1
|
||||
10: namespace: ns1
|
||||
11: tillerNamespace: tns1
|
||||
12:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: namespace: ns2
|
||||
5: tillerNamespace: tns2
|
||||
6: needs:
|
||||
7: - tns1/foo
|
||||
8: - name: foo
|
||||
9: chart: mychart1
|
||||
10: namespace: ns1
|
||||
11: tillerNamespace: tns1
|
||||
12:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/tns1/foo
|
||||
2 default/tns2/bar
|
||||
|
||||
processing releases in group 1/2: default/tns1/foo
|
||||
processing releases in group 2/2: default/tns2/bar
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: namespace: ns2
|
||||
5: needs:
|
||||
6: - ns1/foo
|
||||
7: - name: foo
|
||||
8: chart: mychart1
|
||||
9: namespace: ns1
|
||||
10:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: namespace: ns2
|
||||
5: needs:
|
||||
6: - ns1/foo
|
||||
7: - name: foo
|
||||
8: chart: mychart1
|
||||
9: namespace: ns1
|
||||
10:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/ns1/foo
|
||||
2 default/ns2/bar
|
||||
|
||||
processing releases in group 1/2: default/ns1/foo
|
||||
processing releases in group 2/2: default/ns2/bar
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: baz
|
||||
3: chart: mychart3
|
||||
4: - name: foo
|
||||
5: chart: mychart1
|
||||
6: needs:
|
||||
7: - bar
|
||||
8: - name: bar
|
||||
9: chart: mychart2
|
||||
10:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: baz
|
||||
3: chart: mychart3
|
||||
4: - name: foo
|
||||
5: chart: mychart1
|
||||
6: needs:
|
||||
7: - bar
|
||||
8: - name: bar
|
||||
9: chart: mychart2
|
||||
10:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
3 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default//baz, default//bar
|
||||
2 default//foo
|
||||
|
||||
processing releases in group 1/2: default//baz, default//bar
|
||||
processing releases in group 2/2: default//foo
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
baz (mychart3) UPDATED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: - name: foo
|
||||
5: chart: mychart1
|
||||
6: installed: false
|
||||
7: needs:
|
||||
8: - bar
|
||||
9:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: - name: foo
|
||||
5: chart: mychart1
|
||||
6: installed: false
|
||||
7: needs:
|
||||
8: - bar
|
||||
9:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 1 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default//bar
|
||||
|
||||
processing releases in group 1/1: default//bar
|
||||
No affected releases
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,151 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: database
|
||||
3: chart: charts/mysql
|
||||
4: needs:
|
||||
5: - logging
|
||||
6: - name: frontend-v1
|
||||
7: chart: charts/frontend
|
||||
8: installed: false
|
||||
9: needs:
|
||||
10: - servicemesh
|
||||
11: - logging
|
||||
12: - backend-v1
|
||||
13: - name: frontend-v2
|
||||
14: chart: charts/frontend
|
||||
15: needs:
|
||||
16: - servicemesh
|
||||
17: - logging
|
||||
18: - backend-v2
|
||||
19: - name: frontend-v3
|
||||
20: chart: charts/frontend
|
||||
21: needs:
|
||||
22: - servicemesh
|
||||
23: - logging
|
||||
24: - backend-v2
|
||||
25: - name: backend-v1
|
||||
26: chart: charts/backend
|
||||
27: installed: false
|
||||
28: needs:
|
||||
29: - servicemesh
|
||||
30: - logging
|
||||
31: - database
|
||||
32: - anotherbackend
|
||||
33: - name: backend-v2
|
||||
34: chart: charts/backend
|
||||
35: needs:
|
||||
36: - servicemesh
|
||||
37: - logging
|
||||
38: - database
|
||||
39: - anotherbackend
|
||||
40: - name: anotherbackend
|
||||
41: chart: charts/anotherbackend
|
||||
42: needs:
|
||||
43: - servicemesh
|
||||
44: - logging
|
||||
45: - database
|
||||
46: - name: servicemesh
|
||||
47: chart: charts/istio
|
||||
48: needs:
|
||||
49: - logging
|
||||
50: - name: logging
|
||||
51: chart: charts/fluent-bit
|
||||
52: - name: front-proxy
|
||||
53: chart: stable/envoy
|
||||
54:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: database
|
||||
3: chart: charts/mysql
|
||||
4: needs:
|
||||
5: - logging
|
||||
6: - name: frontend-v1
|
||||
7: chart: charts/frontend
|
||||
8: installed: false
|
||||
9: needs:
|
||||
10: - servicemesh
|
||||
11: - logging
|
||||
12: - backend-v1
|
||||
13: - name: frontend-v2
|
||||
14: chart: charts/frontend
|
||||
15: needs:
|
||||
16: - servicemesh
|
||||
17: - logging
|
||||
18: - backend-v2
|
||||
19: - name: frontend-v3
|
||||
20: chart: charts/frontend
|
||||
21: needs:
|
||||
22: - servicemesh
|
||||
23: - logging
|
||||
24: - backend-v2
|
||||
25: - name: backend-v1
|
||||
26: chart: charts/backend
|
||||
27: installed: false
|
||||
28: needs:
|
||||
29: - servicemesh
|
||||
30: - logging
|
||||
31: - database
|
||||
32: - anotherbackend
|
||||
33: - name: backend-v2
|
||||
34: chart: charts/backend
|
||||
35: needs:
|
||||
36: - servicemesh
|
||||
37: - logging
|
||||
38: - database
|
||||
39: - anotherbackend
|
||||
40: - name: anotherbackend
|
||||
41: chart: charts/anotherbackend
|
||||
42: needs:
|
||||
43: - servicemesh
|
||||
44: - logging
|
||||
45: - database
|
||||
46: - name: servicemesh
|
||||
47: chart: charts/istio
|
||||
48: needs:
|
||||
49: - logging
|
||||
50: - name: logging
|
||||
51: chart: charts/fluent-bit
|
||||
52: - name: front-proxy
|
||||
53: chart: stable/envoy
|
||||
54:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
10 release(s) found in helmfile.yaml
|
||||
|
||||
processing 5 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default//logging, default//front-proxy
|
||||
2 default//database, default//servicemesh
|
||||
3 default//anotherbackend
|
||||
4 default//backend-v2
|
||||
5 default//frontend-v2, default//frontend-v3
|
||||
|
||||
processing releases in group 1/5: default//logging, default//front-proxy
|
||||
processing releases in group 2/5: default//database, default//servicemesh
|
||||
processing releases in group 3/5: default//anotherbackend
|
||||
processing releases in group 4/5: default//backend-v2
|
||||
processing releases in group 5/5: default//frontend-v2, default//frontend-v3
|
||||
Affected releases are:
|
||||
anotherbackend (charts/anotherbackend) UPDATED
|
||||
backend-v1 (charts/backend) DELETED
|
||||
backend-v2 (charts/backend) UPDATED
|
||||
database (charts/mysql) UPDATED
|
||||
front-proxy (stable/envoy) UPDATED
|
||||
frontend-v1 (charts/frontend) DELETED
|
||||
frontend-v3 (charts/frontend) UPDATED
|
||||
logging (charts/fluent-bit) UPDATED
|
||||
servicemesh (charts/istio) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: - name: bar
|
||||
5: chart: mychart2
|
||||
6: needs:
|
||||
7: - foo
|
||||
8:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: - name: bar
|
||||
5: chart: mychart2
|
||||
6: needs:
|
||||
7: - foo
|
||||
8:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default//foo
|
||||
2 default//bar
|
||||
|
||||
processing releases in group 1/2: default//foo
|
||||
processing releases in group 2/2: default//bar
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
46
pkg/app/testdata/app_diff_test_1/upgrade_when_bar_needs_foo,_with_ns_override
vendored
Normal file
46
pkg/app/testdata/app_diff_test_1/upgrade_when_bar_needs_foo,_with_ns_override
vendored
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: - name: bar
|
||||
5: chart: mychart2
|
||||
6: needs:
|
||||
7: - foo
|
||||
8:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: - name: bar
|
||||
5: chart: mychart2
|
||||
6: needs:
|
||||
7: - foo
|
||||
8:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/testNamespace/foo
|
||||
2 default/testNamespace/bar
|
||||
|
||||
processing releases in group 1/2: default/testNamespace/foo
|
||||
processing releases in group 2/2: default/testNamespace/bar
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: - name: foo
|
||||
5: chart: mychart1
|
||||
6: needs:
|
||||
7: - bar
|
||||
8:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: - name: foo
|
||||
5: chart: mychart1
|
||||
6: needs:
|
||||
7: - bar
|
||||
8:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default//bar
|
||||
2 default//foo
|
||||
|
||||
processing releases in group 1/2: default//bar
|
||||
processing releases in group 2/2: default//foo
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
46
pkg/app/testdata/app_diff_test_1/upgrade_when_foo_needs_bar,_with_ns_override
vendored
Normal file
46
pkg/app/testdata/app_diff_test_1/upgrade_when_foo_needs_bar,_with_ns_override
vendored
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: - name: foo
|
||||
5: chart: mychart1
|
||||
6: needs:
|
||||
7: - bar
|
||||
8:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: - name: foo
|
||||
5: chart: mychart1
|
||||
6: needs:
|
||||
7: - bar
|
||||
8:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/testNamespace/bar
|
||||
2 default/testNamespace/foo
|
||||
|
||||
processing releases in group 1/2: default/testNamespace/bar
|
||||
processing releases in group 2/2: default/testNamespace/foo
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
54
pkg/app/testdata/app_diff_test_1/upgrade_when_tns1_ns1_foo_needs_tns2_ns2_bar
vendored
Normal file
54
pkg/app/testdata/app_diff_test_1/upgrade_when_tns1_ns1_foo_needs_tns2_ns2_bar
vendored
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: namespace: ns1
|
||||
5: tillerNamespace: tns1
|
||||
6: needs:
|
||||
7: - tns2/bar
|
||||
8: - name: bar
|
||||
9: chart: mychart2
|
||||
10: namespace: ns2
|
||||
11: tillerNamespace: tns2
|
||||
12:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: namespace: ns1
|
||||
5: tillerNamespace: tns1
|
||||
6: needs:
|
||||
7: - tns2/bar
|
||||
8: - name: bar
|
||||
9: chart: mychart2
|
||||
10: namespace: ns2
|
||||
11: tillerNamespace: tns2
|
||||
12:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/tns2/bar
|
||||
2 default/tns1/foo
|
||||
|
||||
processing releases in group 1/2: default/tns2/bar
|
||||
processing releases in group 2/2: default/tns1/foo
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
76
pkg/app/testdata/app_diff_test_1/upgrades_with_good_selector_with_--skip-needs=true
vendored
Normal file
76
pkg/app/testdata/app_diff_test_1/upgrades_with_good_selector_with_--skip-needs=true
vendored
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1:
|
||||
2:
|
||||
3: releases:
|
||||
4: - name: kubernetes-external-secrets
|
||||
5: chart: incubator/raw
|
||||
6: namespace: kube-system
|
||||
7:
|
||||
8: - name: external-secrets
|
||||
9: chart: incubator/raw
|
||||
10: namespace: default
|
||||
11: labels:
|
||||
12: app: test
|
||||
13: needs:
|
||||
14: - kube-system/kubernetes-external-secrets
|
||||
15:
|
||||
16: - name: my-release
|
||||
17: chart: incubator/raw
|
||||
18: namespace: default
|
||||
19: labels:
|
||||
20: app: test
|
||||
21: needs:
|
||||
22: - default/external-secrets
|
||||
23:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1:
|
||||
2:
|
||||
3: releases:
|
||||
4: - name: kubernetes-external-secrets
|
||||
5: chart: incubator/raw
|
||||
6: namespace: kube-system
|
||||
7:
|
||||
8: - name: external-secrets
|
||||
9: chart: incubator/raw
|
||||
10: namespace: default
|
||||
11: labels:
|
||||
12: app: test
|
||||
13: needs:
|
||||
14: - kube-system/kubernetes-external-secrets
|
||||
15:
|
||||
16: - name: my-release
|
||||
17: chart: incubator/raw
|
||||
18: namespace: default
|
||||
19: labels:
|
||||
20: app: test
|
||||
21: needs:
|
||||
22: - default/external-secrets
|
||||
23:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) matching app=test found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/default/external-secrets
|
||||
2 default/default/my-release
|
||||
|
||||
processing releases in group 1/2: default/default/external-secrets
|
||||
processing releases in group 2/2: default/default/my-release
|
||||
Affected releases are:
|
||||
external-secrets (incubator/raw) UPDATED
|
||||
my-release (incubator/raw) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: namespace: ns1
|
||||
5: needs:
|
||||
6: - ns2/bar
|
||||
7: - name: bar
|
||||
8: chart: mychart2
|
||||
9: namespace: ns2
|
||||
10:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: namespace: ns1
|
||||
5: needs:
|
||||
6: - ns2/bar
|
||||
7: - name: bar
|
||||
8: chart: mychart2
|
||||
9: namespace: ns2
|
||||
10:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 ns2/bar
|
||||
2 ns1/foo
|
||||
|
||||
processing releases in group 1/2: ns2/bar
|
||||
processing releases in group 2/2: ns1/foo
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: - name: bar
|
||||
5: chart: mychart2
|
||||
6: installed: false
|
||||
7: needs:
|
||||
8: - foo
|
||||
9:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: - name: bar
|
||||
5: chart: mychart2
|
||||
6: installed: false
|
||||
7: needs:
|
||||
8: - foo
|
||||
9:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 1 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 foo
|
||||
|
||||
processing releases in group 1/1: foo
|
||||
Affected releases are:
|
||||
bar (mychart2) DELETED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: installed: false
|
||||
5: - name: foo
|
||||
6: chart: mychart1
|
||||
7: needs:
|
||||
8: - bar
|
||||
9:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: installed: false
|
||||
5: - name: foo
|
||||
6: chart: mychart1
|
||||
7: needs:
|
||||
8: - bar
|
||||
9:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
err: release "foo" depends on "bar" which does not match the selectors. Please add a selector like "--selector name=bar", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies
|
||||
changing working directory back to "/path/to"
|
||||
48
pkg/app/testdata/app_diff_test_2/delete_bar_when_foo_needs_bar_with_include-needs
vendored
Normal file
48
pkg/app/testdata/app_diff_test_2/delete_bar_when_foo_needs_bar_with_include-needs
vendored
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: installed: false
|
||||
5: - name: foo
|
||||
6: chart: mychart1
|
||||
7: needs:
|
||||
8: - bar
|
||||
9:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: installed: false
|
||||
5: - name: foo
|
||||
6: chart: mychart1
|
||||
7: needs:
|
||||
8: - bar
|
||||
9:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 bar
|
||||
2 foo
|
||||
|
||||
processing releases in group 1/2: bar
|
||||
processing releases in group 2/2: foo
|
||||
Affected releases are:
|
||||
bar (mychart2) DELETED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
46
pkg/app/testdata/app_diff_test_2/delete_bar_when_foo_needs_bar_with_skip-needs
vendored
Normal file
46
pkg/app/testdata/app_diff_test_2/delete_bar_when_foo_needs_bar_with_skip-needs
vendored
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: installed: false
|
||||
5: - name: foo
|
||||
6: chart: mychart1
|
||||
7: needs:
|
||||
8: - bar
|
||||
9:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: installed: false
|
||||
5: - name: foo
|
||||
6: chart: mychart1
|
||||
7: needs:
|
||||
8: - bar
|
||||
9:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 1 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 foo
|
||||
|
||||
processing releases in group 1/1: foo
|
||||
Affected releases are:
|
||||
bar (mychart2) DELETED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: installed: false
|
||||
5: needs:
|
||||
6: - foo
|
||||
7: - name: foo
|
||||
8: chart: mychart1
|
||||
9: installed: false
|
||||
10:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: installed: false
|
||||
5: needs:
|
||||
6: - foo
|
||||
7: - name: foo
|
||||
8: chart: mychart1
|
||||
9: installed: false
|
||||
10:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 foo
|
||||
2 bar
|
||||
|
||||
processing releases in group 1/2: foo
|
||||
processing releases in group 2/2: bar
|
||||
Affected releases are:
|
||||
bar (mychart2) DELETED
|
||||
foo (mychart1) DELETED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: installed: false
|
||||
5: - name: foo
|
||||
6: chart: mychart1
|
||||
7: installed: false
|
||||
8: needs:
|
||||
9: - bar
|
||||
10:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: installed: false
|
||||
5: - name: foo
|
||||
6: chart: mychart1
|
||||
7: installed: false
|
||||
8: needs:
|
||||
9: - bar
|
||||
10:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 bar
|
||||
2 foo
|
||||
|
||||
processing releases in group 1/2: bar
|
||||
processing releases in group 2/2: foo
|
||||
Affected releases are:
|
||||
bar (mychart2) DELETED
|
||||
foo (mychart1) DELETED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: installed: false
|
||||
5: - name: bar
|
||||
6: chart: mychart2
|
||||
7: needs:
|
||||
8: - foo
|
||||
9:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: installed: false
|
||||
5: - name: bar
|
||||
6: chart: mychart2
|
||||
7: needs:
|
||||
8: - foo
|
||||
9:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
err: release "bar" depends on "foo" which does not match the selectors. Please add a selector like "--selector name=foo", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: - name: foo
|
||||
5: chart: mychart1
|
||||
6: installed: false
|
||||
7: needs:
|
||||
8: - bar
|
||||
9:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: - name: foo
|
||||
5: chart: mychart1
|
||||
6: installed: false
|
||||
7: needs:
|
||||
8: - bar
|
||||
9:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 1 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 bar
|
||||
|
||||
processing releases in group 1/1: bar
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
foo (mychart1) DELETED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: namespace: ns2
|
||||
5: needs:
|
||||
6: - ns1/foo
|
||||
7: - name: foo
|
||||
8: chart: mychart1
|
||||
9: namespace: ns1
|
||||
10:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: namespace: ns2
|
||||
5: needs:
|
||||
6: - ns1/foo
|
||||
7: - name: foo
|
||||
8: chart: mychart1
|
||||
9: namespace: ns1
|
||||
10:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 ns1/foo
|
||||
2 ns2/bar
|
||||
|
||||
processing releases in group 1/2: ns1/foo
|
||||
processing releases in group 2/2: ns2/bar
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: namespace: ns1
|
||||
5: tillerNamespace: tns1
|
||||
6: needs:
|
||||
7: - tns2/bar
|
||||
8: - name: bar
|
||||
9: chart: mychart2
|
||||
10: namespace: ns2
|
||||
11: tillerNamespace: tns2
|
||||
12:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: namespace: ns1
|
||||
5: tillerNamespace: tns1
|
||||
6: needs:
|
||||
7: - tns2/bar
|
||||
8: - name: bar
|
||||
9: chart: mychart2
|
||||
10: namespace: ns2
|
||||
11: tillerNamespace: tns2
|
||||
12:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 tns2/bar
|
||||
2 tns1/foo
|
||||
|
||||
processing releases in group 1/2: tns2/bar
|
||||
processing releases in group 2/2: tns1/foo
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: namespace: ns2
|
||||
5: tillerNamespace: tns2
|
||||
6: needs:
|
||||
7: - tns1/foo
|
||||
8: - name: foo
|
||||
9: chart: mychart1
|
||||
10: namespace: ns1
|
||||
11: tillerNamespace: tns1
|
||||
12:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: namespace: ns2
|
||||
5: tillerNamespace: tns2
|
||||
6: needs:
|
||||
7: - tns1/foo
|
||||
8: - name: foo
|
||||
9: chart: mychart1
|
||||
10: namespace: ns1
|
||||
11: tillerNamespace: tns1
|
||||
12:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 tns1/foo
|
||||
2 tns2/bar
|
||||
|
||||
processing releases in group 1/2: tns1/foo
|
||||
processing releases in group 2/2: tns2/bar
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: namespace: ns2
|
||||
5: needs:
|
||||
6: - ns1/foo
|
||||
7: - name: foo
|
||||
8: chart: mychart1
|
||||
9: namespace: ns1
|
||||
10:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: namespace: ns2
|
||||
5: needs:
|
||||
6: - ns1/foo
|
||||
7: - name: foo
|
||||
8: chart: mychart1
|
||||
9: namespace: ns1
|
||||
10:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 ns1/foo
|
||||
2 ns2/bar
|
||||
|
||||
processing releases in group 1/2: ns1/foo
|
||||
processing releases in group 2/2: ns2/bar
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: baz
|
||||
3: chart: mychart3
|
||||
4: - name: foo
|
||||
5: chart: mychart1
|
||||
6: needs:
|
||||
7: - bar
|
||||
8: - name: bar
|
||||
9: chart: mychart2
|
||||
10:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: baz
|
||||
3: chart: mychart3
|
||||
4: - name: foo
|
||||
5: chart: mychart1
|
||||
6: needs:
|
||||
7: - bar
|
||||
8: - name: bar
|
||||
9: chart: mychart2
|
||||
10:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
3 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 baz, bar
|
||||
2 foo
|
||||
|
||||
processing releases in group 1/2: baz, bar
|
||||
processing releases in group 2/2: foo
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
baz (mychart3) UPDATED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: - name: foo
|
||||
5: chart: mychart1
|
||||
6: installed: false
|
||||
7: needs:
|
||||
8: - bar
|
||||
9:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: - name: foo
|
||||
5: chart: mychart1
|
||||
6: installed: false
|
||||
7: needs:
|
||||
8: - bar
|
||||
9:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 1 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 bar
|
||||
|
||||
processing releases in group 1/1: bar
|
||||
No affected releases
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,151 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: database
|
||||
3: chart: charts/mysql
|
||||
4: needs:
|
||||
5: - logging
|
||||
6: - name: frontend-v1
|
||||
7: chart: charts/frontend
|
||||
8: installed: false
|
||||
9: needs:
|
||||
10: - servicemesh
|
||||
11: - logging
|
||||
12: - backend-v1
|
||||
13: - name: frontend-v2
|
||||
14: chart: charts/frontend
|
||||
15: needs:
|
||||
16: - servicemesh
|
||||
17: - logging
|
||||
18: - backend-v2
|
||||
19: - name: frontend-v3
|
||||
20: chart: charts/frontend
|
||||
21: needs:
|
||||
22: - servicemesh
|
||||
23: - logging
|
||||
24: - backend-v2
|
||||
25: - name: backend-v1
|
||||
26: chart: charts/backend
|
||||
27: installed: false
|
||||
28: needs:
|
||||
29: - servicemesh
|
||||
30: - logging
|
||||
31: - database
|
||||
32: - anotherbackend
|
||||
33: - name: backend-v2
|
||||
34: chart: charts/backend
|
||||
35: needs:
|
||||
36: - servicemesh
|
||||
37: - logging
|
||||
38: - database
|
||||
39: - anotherbackend
|
||||
40: - name: anotherbackend
|
||||
41: chart: charts/anotherbackend
|
||||
42: needs:
|
||||
43: - servicemesh
|
||||
44: - logging
|
||||
45: - database
|
||||
46: - name: servicemesh
|
||||
47: chart: charts/istio
|
||||
48: needs:
|
||||
49: - logging
|
||||
50: - name: logging
|
||||
51: chart: charts/fluent-bit
|
||||
52: - name: front-proxy
|
||||
53: chart: stable/envoy
|
||||
54:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: database
|
||||
3: chart: charts/mysql
|
||||
4: needs:
|
||||
5: - logging
|
||||
6: - name: frontend-v1
|
||||
7: chart: charts/frontend
|
||||
8: installed: false
|
||||
9: needs:
|
||||
10: - servicemesh
|
||||
11: - logging
|
||||
12: - backend-v1
|
||||
13: - name: frontend-v2
|
||||
14: chart: charts/frontend
|
||||
15: needs:
|
||||
16: - servicemesh
|
||||
17: - logging
|
||||
18: - backend-v2
|
||||
19: - name: frontend-v3
|
||||
20: chart: charts/frontend
|
||||
21: needs:
|
||||
22: - servicemesh
|
||||
23: - logging
|
||||
24: - backend-v2
|
||||
25: - name: backend-v1
|
||||
26: chart: charts/backend
|
||||
27: installed: false
|
||||
28: needs:
|
||||
29: - servicemesh
|
||||
30: - logging
|
||||
31: - database
|
||||
32: - anotherbackend
|
||||
33: - name: backend-v2
|
||||
34: chart: charts/backend
|
||||
35: needs:
|
||||
36: - servicemesh
|
||||
37: - logging
|
||||
38: - database
|
||||
39: - anotherbackend
|
||||
40: - name: anotherbackend
|
||||
41: chart: charts/anotherbackend
|
||||
42: needs:
|
||||
43: - servicemesh
|
||||
44: - logging
|
||||
45: - database
|
||||
46: - name: servicemesh
|
||||
47: chart: charts/istio
|
||||
48: needs:
|
||||
49: - logging
|
||||
50: - name: logging
|
||||
51: chart: charts/fluent-bit
|
||||
52: - name: front-proxy
|
||||
53: chart: stable/envoy
|
||||
54:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
10 release(s) found in helmfile.yaml
|
||||
|
||||
processing 5 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 logging, front-proxy
|
||||
2 database, servicemesh
|
||||
3 anotherbackend
|
||||
4 backend-v2
|
||||
5 frontend-v2, frontend-v3
|
||||
|
||||
processing releases in group 1/5: logging, front-proxy
|
||||
processing releases in group 2/5: database, servicemesh
|
||||
processing releases in group 3/5: anotherbackend
|
||||
processing releases in group 4/5: backend-v2
|
||||
processing releases in group 5/5: frontend-v2, frontend-v3
|
||||
Affected releases are:
|
||||
anotherbackend (charts/anotherbackend) UPDATED
|
||||
backend-v1 (charts/backend) DELETED
|
||||
backend-v2 (charts/backend) UPDATED
|
||||
database (charts/mysql) UPDATED
|
||||
front-proxy (stable/envoy) UPDATED
|
||||
frontend-v1 (charts/frontend) DELETED
|
||||
frontend-v3 (charts/frontend) UPDATED
|
||||
logging (charts/fluent-bit) UPDATED
|
||||
servicemesh (charts/istio) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: - name: bar
|
||||
5: chart: mychart2
|
||||
6: needs:
|
||||
7: - foo
|
||||
8:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: - name: bar
|
||||
5: chart: mychart2
|
||||
6: needs:
|
||||
7: - foo
|
||||
8:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 foo
|
||||
2 bar
|
||||
|
||||
processing releases in group 1/2: foo
|
||||
processing releases in group 2/2: bar
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
46
pkg/app/testdata/app_diff_test_2/upgrade_when_bar_needs_foo,_with_ns_override
vendored
Normal file
46
pkg/app/testdata/app_diff_test_2/upgrade_when_bar_needs_foo,_with_ns_override
vendored
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: - name: bar
|
||||
5: chart: mychart2
|
||||
6: needs:
|
||||
7: - foo
|
||||
8:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: mychart1
|
||||
4: - name: bar
|
||||
5: chart: mychart2
|
||||
6: needs:
|
||||
7: - foo
|
||||
8:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 testNamespace/foo
|
||||
2 testNamespace/bar
|
||||
|
||||
processing releases in group 1/2: testNamespace/foo
|
||||
processing releases in group 2/2: testNamespace/bar
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: - name: foo
|
||||
5: chart: mychart1
|
||||
6: needs:
|
||||
7: - bar
|
||||
8:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: - name: foo
|
||||
5: chart: mychart1
|
||||
6: needs:
|
||||
7: - bar
|
||||
8:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 bar
|
||||
2 foo
|
||||
|
||||
processing releases in group 1/2: bar
|
||||
processing releases in group 2/2: foo
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
46
pkg/app/testdata/app_diff_test_2/upgrade_when_foo_needs_bar,_with_ns_override
vendored
Normal file
46
pkg/app/testdata/app_diff_test_2/upgrade_when_foo_needs_bar,_with_ns_override
vendored
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: - name: foo
|
||||
5: chart: mychart1
|
||||
6: needs:
|
||||
7: - bar
|
||||
8:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: mychart2
|
||||
4: - name: foo
|
||||
5: chart: mychart1
|
||||
6: needs:
|
||||
7: - bar
|
||||
8:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 testNamespace/bar
|
||||
2 testNamespace/foo
|
||||
|
||||
processing releases in group 1/2: testNamespace/bar
|
||||
processing releases in group 2/2: testNamespace/foo
|
||||
Affected releases are:
|
||||
bar (mychart2) UPDATED
|
||||
foo (mychart1) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
76
pkg/app/testdata/app_diff_test_2/upgrades_with_good_selector_with_--skip-needs=true
vendored
Normal file
76
pkg/app/testdata/app_diff_test_2/upgrades_with_good_selector_with_--skip-needs=true
vendored
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1:
|
||||
2:
|
||||
3: releases:
|
||||
4: - name: kubernetes-external-secrets
|
||||
5: chart: incubator/raw
|
||||
6: namespace: kube-system
|
||||
7:
|
||||
8: - name: external-secrets
|
||||
9: chart: incubator/raw
|
||||
10: namespace: default
|
||||
11: labels:
|
||||
12: app: test
|
||||
13: needs:
|
||||
14: - kube-system/kubernetes-external-secrets
|
||||
15:
|
||||
16: - name: my-release
|
||||
17: chart: incubator/raw
|
||||
18: namespace: default
|
||||
19: labels:
|
||||
20: app: test
|
||||
21: needs:
|
||||
22: - default/external-secrets
|
||||
23:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1:
|
||||
2:
|
||||
3: releases:
|
||||
4: - name: kubernetes-external-secrets
|
||||
5: chart: incubator/raw
|
||||
6: namespace: kube-system
|
||||
7:
|
||||
8: - name: external-secrets
|
||||
9: chart: incubator/raw
|
||||
10: namespace: default
|
||||
11: labels:
|
||||
12: app: test
|
||||
13: needs:
|
||||
14: - kube-system/kubernetes-external-secrets
|
||||
15:
|
||||
16: - name: my-release
|
||||
17: chart: incubator/raw
|
||||
18: namespace: default
|
||||
19: labels:
|
||||
20: app: test
|
||||
21: needs:
|
||||
22: - default/external-secrets
|
||||
23:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) matching app=test found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/external-secrets
|
||||
2 default/my-release
|
||||
|
||||
processing releases in group 1/2: default/external-secrets
|
||||
processing releases in group 2/2: default/my-release
|
||||
Affected releases are:
|
||||
external-secrets (incubator/raw) UPDATED
|
||||
my-release (incubator/raw) UPDATED
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,107 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
0 release(s) matching app=test_non_existent found in helmfile.yaml
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) matching app=test found in helmfile.yaml
|
||||
|
||||
err: release "default/default/external-secrets" depends on "default/kube-system/kubernetes-external-secrets" which does not match the selectors. Please add a selector like "--selector name=kubernetes-external-secrets", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) matching app=test found in helmfile.yaml
|
||||
|
||||
processing 4 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/kube-system/logging
|
||||
2 default/kube-system/kubernetes-external-secrets
|
||||
3 default/default/external-secrets
|
||||
4 default/default/my-release
|
||||
|
||||
processing releases in group 1/4: default/kube-system/logging
|
||||
processing releases in group 2/4: default/kube-system/kubernetes-external-secrets
|
||||
processing releases in group 3/4: default/default/external-secrets
|
||||
processing releases in group 4/4: default/default/my-release
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
1 release(s) matching name=test2 found in helmfile.yaml
|
||||
|
||||
err: release "default//test2" depends on "default/kube-system/disabled" which does not match the selectors. Please add a selector like "--selector name=disabled", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies
|
||||
changing working directory back to "/path/to"
|
||||
108
pkg/app/testdata/app_lint_test/include-needs_fail_on_disabled_transitive_need
vendored
Normal file
108
pkg/app/testdata/app_lint_test/include-needs_fail_on_disabled_transitive_need
vendored
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
1 release(s) matching name=test3 found in helmfile.yaml
|
||||
|
||||
err: release "default//test2" depends on "default/kube-system/disabled" which does not match the selectors. Please add a selector like "--selector name=disabled", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies
|
||||
changing working directory back to "/path/to"
|
||||
114
pkg/app/testdata/app_lint_test/include-needs_should_not_fail_on_disabled_direct_need
vendored
Normal file
114
pkg/app/testdata/app_lint_test/include-needs_should_not_fail_on_disabled_direct_need
vendored
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
1 release(s) matching name=test2 found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/kube-system/disabled
|
||||
2 default//test2
|
||||
|
||||
processing releases in group 1/2: default/kube-system/disabled
|
||||
processing releases in group 2/2: default//test2
|
||||
changing working directory back to "/path/to"
|
||||
116
pkg/app/testdata/app_lint_test/include-needs_should_not_fail_on_disabled_transitive_need
vendored
Normal file
116
pkg/app/testdata/app_lint_test/include-needs_should_not_fail_on_disabled_transitive_need
vendored
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
1 release(s) matching name=test3 found in helmfile.yaml
|
||||
|
||||
processing 3 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/kube-system/disabled
|
||||
2 default//test2
|
||||
3 default//test3
|
||||
|
||||
processing releases in group 1/3: default/kube-system/disabled
|
||||
processing releases in group 2/3: default//test2
|
||||
processing releases in group 3/3: default//test3
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) matching name=test2 found in helmfile.yaml
|
||||
|
||||
err: release "default//test2" depends on "default/kube-system/disabled" which does not match the selectors. Please add a selector like "--selector name=disabled", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
3 release(s) matching name=test3 found in helmfile.yaml
|
||||
|
||||
err: release "default//test2" depends on "default/kube-system/disabled" which does not match the selectors. Please add a selector like "--selector name=disabled", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,114 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
1 release(s) matching name=test2 found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/kube-system/disabled
|
||||
2 default//test2
|
||||
|
||||
processing releases in group 1/2: default/kube-system/disabled
|
||||
processing releases in group 2/2: default//test2
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,116 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
1 release(s) matching name=test3 found in helmfile.yaml
|
||||
|
||||
processing 3 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/kube-system/disabled
|
||||
2 default//test2
|
||||
3 default//test3
|
||||
|
||||
processing releases in group 1/3: default/kube-system/disabled
|
||||
processing releases in group 2/3: default//test2
|
||||
processing releases in group 3/3: default//test3
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) matching app=test found in helmfile.yaml
|
||||
|
||||
processing 4 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/kube-system/logging
|
||||
2 default/kube-system/kubernetes-external-secrets
|
||||
3 default/default/external-secrets
|
||||
4 default/default/my-release
|
||||
|
||||
processing releases in group 1/4: default/kube-system/logging
|
||||
processing releases in group 2/4: default/kube-system/kubernetes-external-secrets
|
||||
processing releases in group 3/4: default/default/external-secrets
|
||||
processing releases in group 4/4: default/default/my-release
|
||||
changing working directory back to "/path/to"
|
||||
116
pkg/app/testdata/app_lint_test/include-transitive-needs_should_not_fail_on_disabled_transitive_need
vendored
Normal file
116
pkg/app/testdata/app_lint_test/include-transitive-needs_should_not_fail_on_disabled_transitive_need
vendored
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
1 release(s) matching name=test3 found in helmfile.yaml
|
||||
|
||||
processing 3 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/kube-system/disabled
|
||||
2 default//test2
|
||||
3 default//test3
|
||||
|
||||
processing releases in group 1/3: default/kube-system/disabled
|
||||
processing releases in group 2/3: default//test2
|
||||
processing releases in group 3/3: default//test3
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,114 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) matching app=test found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/default/external-secrets
|
||||
2 default/default/my-release
|
||||
|
||||
processing releases in group 1/2: default/default/external-secrets
|
||||
processing releases in group 2/2: default/default/my-release
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,107 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
0 release(s) matching app=test_non_existent found in helmfile.yaml
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) matching app=test found in helmfile.yaml
|
||||
|
||||
err: release "default/default/external-secrets" depends on "default/kube-system/kubernetes-external-secrets" which does not match the selectors. Please add a selector like "--selector name=kubernetes-external-secrets", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) matching app=test found in helmfile.yaml
|
||||
|
||||
processing 4 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/kube-system/logging
|
||||
2 default/kube-system/kubernetes-external-secrets
|
||||
3 default/default/external-secrets
|
||||
4 default/default/my-release
|
||||
|
||||
processing releases in group 1/4: default/kube-system/logging
|
||||
processing releases in group 2/4: default/kube-system/kubernetes-external-secrets
|
||||
processing releases in group 3/4: default/default/external-secrets
|
||||
processing releases in group 4/4: default/default/my-release
|
||||
changing working directory back to "/path/to"
|
||||
108
pkg/app/testdata/app_template_test/include-needs_fail_on_disabled_direct_need
vendored
Normal file
108
pkg/app/testdata/app_template_test/include-needs_fail_on_disabled_direct_need
vendored
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
1 release(s) matching name=test2 found in helmfile.yaml
|
||||
|
||||
err: release "default//test2" depends on "default/kube-system/disabled" which does not match the selectors. Please add a selector like "--selector name=disabled", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies
|
||||
changing working directory back to "/path/to"
|
||||
108
pkg/app/testdata/app_template_test/include-needs_fail_on_disabled_transitive_need
vendored
Normal file
108
pkg/app/testdata/app_template_test/include-needs_fail_on_disabled_transitive_need
vendored
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
1 release(s) matching name=test3 found in helmfile.yaml
|
||||
|
||||
err: release "default//test2" depends on "default/kube-system/disabled" which does not match the selectors. Please add a selector like "--selector name=disabled", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies
|
||||
changing working directory back to "/path/to"
|
||||
114
pkg/app/testdata/app_template_test/include-needs_should_not_fail_on_disabled_direct_need
vendored
Normal file
114
pkg/app/testdata/app_template_test/include-needs_should_not_fail_on_disabled_direct_need
vendored
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
1 release(s) matching name=test2 found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/kube-system/disabled
|
||||
2 default//test2
|
||||
|
||||
processing releases in group 1/2: default/kube-system/disabled
|
||||
processing releases in group 2/2: default//test2
|
||||
changing working directory back to "/path/to"
|
||||
116
pkg/app/testdata/app_template_test/include-needs_should_not_fail_on_disabled_transitive_need
vendored
Normal file
116
pkg/app/testdata/app_template_test/include-needs_should_not_fail_on_disabled_transitive_need
vendored
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
1 release(s) matching name=test3 found in helmfile.yaml
|
||||
|
||||
processing 3 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/kube-system/disabled
|
||||
2 default//test2
|
||||
3 default//test3
|
||||
|
||||
processing releases in group 1/3: default/kube-system/disabled
|
||||
processing releases in group 2/3: default//test2
|
||||
processing releases in group 3/3: default//test3
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) matching name=test2 found in helmfile.yaml
|
||||
|
||||
err: release "default//test2" depends on "default/kube-system/disabled" which does not match the selectors. Please add a selector like "--selector name=disabled", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
3 release(s) matching name=test3 found in helmfile.yaml
|
||||
|
||||
err: release "default//test2" depends on "default/kube-system/disabled" which does not match the selectors. Please add a selector like "--selector name=disabled", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,114 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
1 release(s) matching name=test2 found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/kube-system/disabled
|
||||
2 default//test2
|
||||
|
||||
processing releases in group 1/2: default/kube-system/disabled
|
||||
processing releases in group 2/2: default//test2
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,116 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
1 release(s) matching name=test3 found in helmfile.yaml
|
||||
|
||||
processing 3 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/kube-system/disabled
|
||||
2 default//test2
|
||||
3 default//test3
|
||||
|
||||
processing releases in group 1/3: default/kube-system/disabled
|
||||
processing releases in group 2/3: default//test2
|
||||
processing releases in group 3/3: default//test3
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) matching app=test found in helmfile.yaml
|
||||
|
||||
processing 4 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/kube-system/logging
|
||||
2 default/kube-system/kubernetes-external-secrets
|
||||
3 default/default/external-secrets
|
||||
4 default/default/my-release
|
||||
|
||||
processing releases in group 1/4: default/kube-system/logging
|
||||
processing releases in group 2/4: default/kube-system/kubernetes-external-secrets
|
||||
processing releases in group 3/4: default/default/external-secrets
|
||||
processing releases in group 4/4: default/default/my-release
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,116 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
1 release(s) matching name=test3 found in helmfile.yaml
|
||||
|
||||
processing 3 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/kube-system/disabled
|
||||
2 default//test2
|
||||
3 default//test3
|
||||
|
||||
processing releases in group 1/3: default/kube-system/disabled
|
||||
processing releases in group 2/3: default//test2
|
||||
processing releases in group 3/3: default//test3
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,114 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: logging
|
||||
3: chart: incubator/raw
|
||||
4: namespace: kube-system
|
||||
5:
|
||||
6: - name: kubernetes-external-secrets
|
||||
7: chart: incubator/raw
|
||||
8: namespace: kube-system
|
||||
9: needs:
|
||||
10: - kube-system/logging
|
||||
11:
|
||||
12: - name: external-secrets
|
||||
13: chart: incubator/raw
|
||||
14: namespace: default
|
||||
15: labels:
|
||||
16: app: test
|
||||
17: needs:
|
||||
18: - kube-system/kubernetes-external-secrets
|
||||
19:
|
||||
20: - name: my-release
|
||||
21: chart: incubator/raw
|
||||
22: namespace: default
|
||||
23: labels:
|
||||
24: app: test
|
||||
25: needs:
|
||||
26: - default/external-secrets
|
||||
27:
|
||||
28:
|
||||
29: # Disabled releases are treated as missing
|
||||
30: - name: disabled
|
||||
31: chart: incubator/raw
|
||||
32: namespace: kube-system
|
||||
33: installed: false
|
||||
34:
|
||||
35: - name: test2
|
||||
36: chart: incubator/raw
|
||||
37: needs:
|
||||
38: - kube-system/disabled
|
||||
39:
|
||||
40: - name: test3
|
||||
41: chart: incubator/raw
|
||||
42: needs:
|
||||
43: - test2
|
||||
44:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) matching app=test found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/default/external-secrets
|
||||
2 default/default/my-release
|
||||
|
||||
processing releases in group 1/2: default/default/external-secrets
|
||||
processing releases in group 2/2: default/default/my-release
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: stable/mychart1
|
||||
4: - name: bar
|
||||
5: chart: stable/mychart2
|
||||
6: installed: false
|
||||
7: needs:
|
||||
8: - foo
|
||||
9:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: stable/mychart1
|
||||
4: - name: bar
|
||||
5: chart: stable/mychart2
|
||||
6: installed: false
|
||||
7: needs:
|
||||
8: - foo
|
||||
9:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
Affected releases are:
|
||||
bar (stable/mychart2) DELETED
|
||||
foo (stable/mychart1) UPDATED
|
||||
|
||||
processing 1 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default//bar
|
||||
|
||||
processing releases in group 1/1: default//bar
|
||||
processing 1 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default//foo
|
||||
|
||||
processing releases in group 1/1: default//foo
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
foo stable/mychart1 3.1.0
|
||||
|
||||
|
||||
DELETED RELEASES:
|
||||
NAME
|
||||
bar
|
||||
changing working directory back to "/path/to"
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: stable/mychart2
|
||||
4: installed: false
|
||||
5: - name: foo
|
||||
6: chart: stable/mychart1
|
||||
7: needs:
|
||||
8: - bar
|
||||
9:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: bar
|
||||
3: chart: stable/mychart2
|
||||
4: installed: false
|
||||
5: - name: foo
|
||||
6: chart: stable/mychart1
|
||||
7: needs:
|
||||
8: - bar
|
||||
9:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) found in helmfile.yaml
|
||||
|
||||
Affected releases are:
|
||||
bar (stable/mychart2) DELETED
|
||||
foo (stable/mychart1) UPDATED
|
||||
|
||||
processing 1 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default//bar
|
||||
|
||||
processing releases in group 1/1: default//bar
|
||||
processing 1 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default//foo
|
||||
|
||||
processing releases in group 1/1: default//foo
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
foo stable/mychart1 3.1.0
|
||||
|
||||
|
||||
DELETED RELEASES:
|
||||
NAME
|
||||
bar
|
||||
changing working directory back to "/path/to"
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue