Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package helmfile for openSUSE:Factory 
checked in at 2021-03-10 08:57:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/helmfile (Old)
 and      /work/SRC/openSUSE:Factory/.helmfile.new.2378 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "helmfile"

Wed Mar 10 08:57:33 2021 rev:19 rq:878042 version:0.138.7

Changes:
--------
--- /work/SRC/openSUSE:Factory/helmfile/helmfile.changes        2021-02-15 
23:20:46.439796715 +0100
+++ /work/SRC/openSUSE:Factory/.helmfile.new.2378/helmfile.changes      
2021-03-10 08:58:44.862981411 +0100
@@ -1,0 +2,19 @@
+Tue Mar  9 16:01:14 UTC 2021 - Manfred Hollstein <manfre...@gmx.net>
+
+- v0.138.7
+  * 8ed8a9e (HEAD, tag: v0.138.7, origin/master, origin/HEAD, master)
+    allow to access oci repos without auth (#1711)
+  * 14a83e7 Update reference for helm-secrets to latest maintained
+    fork (#1676)
+  * bf9f36b refactor: simplify pull channel from #1706 (#1707)
+  * 3215eaf panic with clear message (#1709)
+  * 927bd30 Update README.md to show current CLI Output (#1712)
+
+- v0.138.6
+  * 247ae91 (HEAD, tag: v0.138.6, origin/master, origin/HEAD, master)
+    Disable darwin/386 build to avoid release failure
+
+- v0.138.5
+  * 97f0e59: Update README.md (#1677)
+
+-------------------------------------------------------------------

Old:
----
  helmfile-0.138.4.tar.gz

New:
----
  helmfile-0.138.7.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ helmfile.spec ++++++
--- /var/tmp/diff_new_pack.ly9wo2/_old  2021-03-10 08:58:45.630982204 +0100
+++ /var/tmp/diff_new_pack.ly9wo2/_new  2021-03-10 08:58:45.634982208 +0100
@@ -16,9 +16,9 @@
 # Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
-%define git_commit f24b61f1008702a71eb81d559192fc080c6132ad
+%define git_commit 8ed8a9eab3344ac2d25783b7ce2314fbe2043c37
 Name:           helmfile
-Version:        0.138.4
+Version:        0.138.7
 Release:        0
 Summary:        Deploy Kubernetes Helm Charts
 License:        MIT

++++++ _service ++++++
--- /var/tmp/diff_new_pack.ly9wo2/_old  2021-03-10 08:58:45.658982232 +0100
+++ /var/tmp/diff_new_pack.ly9wo2/_new  2021-03-10 08:58:45.658982232 +0100
@@ -5,7 +5,7 @@
     <param name="exclude">.git</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
-    <param name="revision">v0.138.4</param>
+    <param name="revision">v0.138.7</param>
     <param name="changesgenerate">enable</param>
   </service>
   <service name="recompress" mode="disabled">

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.ly9wo2/_old  2021-03-10 08:58:45.678982253 +0100
+++ /var/tmp/diff_new_pack.ly9wo2/_new  2021-03-10 08:58:45.678982253 +0100
@@ -1,4 +1,4 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/roboll/helmfile.git</param>
-              <param 
name="changesrevision">f24b61f1008702a71eb81d559192fc080c6132ad</param></service></servicedata>
+              <param 
name="changesrevision">8ed8a9eab3344ac2d25783b7ce2314fbe2043c37</param></service></servicedata>

++++++ helmfile-0.138.4.tar.gz -> helmfile-0.138.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/helmfile-0.138.4/Dockerfile.helm3 
new/helmfile-0.138.7/Dockerfile.helm3
--- old/helmfile-0.138.4/Dockerfile.helm3       2021-02-05 01:02:21.000000000 
+0100
+++ new/helmfile-0.138.7/Dockerfile.helm3       2021-03-09 02:23:36.000000000 
+0100
@@ -46,7 +46,7 @@
     mv kustomize /usr/local/bin/kustomize
 
 RUN helm plugin install https://github.com/databus23/helm-diff --version 
v3.1.3 && \
-    helm plugin install https://github.com/futuresimple/helm-secrets && \
+    helm plugin install https://github.com/jkroepke/helm-secrets && \
     helm plugin install https://github.com/hypnoglow/helm-s3.git && \
     helm plugin install https://github.com/aslafy-z/helm-git.git
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/helmfile-0.138.4/Makefile 
new/helmfile-0.138.7/Makefile
--- old/helmfile-0.138.4/Makefile       2021-02-05 01:02:21.000000000 +0100
+++ new/helmfile-0.138.7/Makefile       2021-03-09 02:23:36.000000000 +0100
@@ -30,7 +30,7 @@
 .PHONY: integration
 
 cross:
-       env CGO_ENABLED=0 gox -os 'windows darwin linux' -arch '386 amd64 
arm64' -osarch '!darwin/arm64' -output "dist/{{.Dir}}_{{.OS}}_{{.Arch}}" 
-ldflags '-X github.com/roboll/helmfile/pkg/app/version.Version=${TAG}' 
${TARGETS}
+       env CGO_ENABLED=0 gox -os 'windows darwin linux' -arch '386 amd64 
arm64' -osarch '!darwin/arm64 !darwin/386' -output 
"dist/{{.Dir}}_{{.OS}}_{{.Arch}}" -ldflags '-X 
github.com/roboll/helmfile/pkg/app/version.Version=${TAG}' ${TARGETS}
 .PHONY: cross
 
 static-linux:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/helmfile-0.138.4/README.md 
new/helmfile-0.138.7/README.md
--- old/helmfile-0.138.4/README.md      2021-02-05 01:02:21.000000000 +0100
+++ new/helmfile-0.138.7/README.md      2021-03-09 02:23:36.000000000 +0100
@@ -202,6 +202,10 @@
     # It may be helpful to deploy charts with helm api v1 CRDS
     # https://github.com/roboll/helmfile/pull/1373
     disableValidation: false
+    # passes --disable-validation to helm 3 diff plugin, this requires diff 
plugin >= 3.1.2
+    # It is useful when any release contains custom resources for CRDs that is 
not yet installed onto the cluster.
+    # https://github.com/roboll/helmfile/pull/1618
+    disableValidationOnInstall: false
     # passes --disable-openapi-validation to helm 3 diff plugin, this requires 
diff plugin >= 3.1.2
     # It may be helpful to deploy charts with helm api v1 CRDS
     # https://github.com/roboll/helmfile/pull/1373
@@ -448,33 +452,36 @@
    helmfile [global options] command [command options] [arguments...]
 
 VERSION:
-   v0.92.1
+   v0.138.6
 
 COMMANDS:
-     deps      update charts based on the contents of requirements.yaml
-     repos     sync repositories from state file (helm repo add && helm repo 
update)
-     charts    DEPRECATED: sync releases from state file (helm upgrade 
--install)
-     diff      diff releases from state file against env (helm diff)
-     template  template releases from state file against env (helm template)
-     lint      lint charts from state file (helm lint)
-     sync      sync all resources from state file (repos, releases and chart 
deps)
-     apply     apply all resources from state file only when there are changes
-     status    retrieve status of releases in state file
-     delete    DEPRECATED: delete releases from state file (helm delete)
-     destroy   uninstalls and then purges releases
-     test      test releases from state file (helm test)
-     build     output compiled helmfile state(s) as YAML
-     list      list releases defined in state file
-     help, h   Shows a list of commands or help for one command
+   deps          update charts based on their requirements
+   repos         sync repositories from state file (helm repo add && helm repo 
update)
+   charts        DEPRECATED: sync releases from state file (helm upgrade 
--install)
+   diff          diff releases from state file against env (helm diff)
+   template      template releases from state file against env (helm template)
+   write-values  write values files for releases. Similar to `helmfile 
template`, write values files instead of manifests.
+   lint          lint charts from state file (helm lint)
+   sync          sync all resources from state file (repos, releases and chart 
deps)
+   apply         apply all resources from state file only when there are 
changes
+   status        retrieve status of releases in state file
+   delete        DEPRECATED: delete releases from state file (helm delete)
+   destroy       deletes and then purges releases
+   test          test releases from state file (helm test)
+   build         output compiled helmfile state(s) as YAML
+   list          list releases defined in state file
+   version       Show the version for Helmfile.
+   help, h       Shows a list of commands or help for one command
 
 GLOBAL OPTIONS:
    --helm-binary value, -b value           path to helm binary (default: 
"helm")
    --file helmfile.yaml, -f helmfile.yaml  load config from file or directory. 
defaults to helmfile.yaml or `helmfile.d`(means `helmfile.d/*.yaml`) in this 
preference
-   --environment default, -e default       specify the environment name. 
defaults to default
+   --environment value, -e value           specify the environment name. 
defaults to "default"
    --state-values-set value                set state values on the command 
line (can specify multiple or separate values with commas: key1=val1,key2=val2)
    --state-values-file value               specify state values in a YAML file
    --quiet, -q                             Silence output. Equivalent to 
log-level warn
    --kube-context value                    Set kubectl context. Uses current 
context by default
+   --debug                                 Enable verbose output for Helm and 
set log-level to debug, this disables --quiet/-q effect
    --no-color                              Output without color
    --log-level value                       Set log level, default info
    --namespace value, -n value             Set namespace. Uses the namespace 
set in the context by default, and is available in templates as {{ .Namespace }}
@@ -486,9 +493,6 @@
    --interactive, -i                       Request confirmation before 
attempting to modify clusters
    --help, -h                              show help
    --version, -v                           print the version
-
-Environment variables:
-  HELMFILE_ENVIRONMENT                     specify the environment name, the 
command line option '-e' have precedence
 ```
 
 ### sync
@@ -547,10 +551,10 @@
 
 ### secrets
 
-The `secrets` parameter in a `helmfile.yaml` causes the 
[helm-secrets](https://github.com/futuresimple/helm-secrets) plugin to be 
executed to decrypt the file.
+The `secrets` parameter in a `helmfile.yaml` causes the 
[helm-secrets](https://github.com/jkroepke/helm-secrets) plugin to be executed 
to decrypt the file.
 
 To supply the secret functionality Helmfile needs the `helm secrets` plugin 
installed. For Helm 2.3+
-you should be able to simply execute `helm plugin install 
https://github.com/futuresimple/helm-secrets
+you should be able to simply execute `helm plugin install 
https://github.com/jkroepke/helm-secrets
 `.
 
 ### test
@@ -849,7 +853,7 @@
 You can list any number of `secrets.yaml` files created using `helm secrets` 
or `sops`, so that
 Helmfile could automatically decrypt and merge the secrets into the 
environment values.
 
-First you must have the 
[helm-secrets](https://github.com/futuresimple/helm-secrets) plugin installed 
along with a
+First you must have the 
[helm-secrets](https://github.com/jkroepke/helm-secrets) plugin installed along 
with a
 `.sops.yaml` file to configure the method of encryption (this can be in the 
same directory as your helmfile or
 in the sub-directory containing your secrets files).
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/helmfile-0.138.4/USERS.md 
new/helmfile-0.138.7/USERS.md
--- old/helmfile-0.138.4/USERS.md       2021-02-05 01:02:21.000000000 +0100
+++ new/helmfile-0.138.7/USERS.md       2021-03-09 02:23:36.000000000 +0100
@@ -27,4 +27,5 @@
 | [Jenkins OSS](https://jenkins.io) | production | 
[jenkins-infra/charts](https://github.com/jenkins-infra/charts) | * | July 2020 
|
 | [SettleMint](https://settlemint.com) | production | The SettleMint platform 
allows enterprises to spin up k8s clusters and deploy production grade 
blockchain networks and additional services. Helmfile is in charge of deploying 
these networks and services on demand out of the self service management ui. | 
Belgium, Singapore, UAE, India | October 2020 |
 | [AutoTrader (UK)](https://www.autotrader.co.uk) | production | We've used 
Helmfile for 2+ years to deploy 400+ services | UK | October 2020 |
+| [Trend Micro](https://www.trendmicro.com) | production | We manage 9 k8s 
clusters in a mono git repository with Helmfile | Taipei, Taiwan |  December 
2019 |
 <!-- TABLE_END -->
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/helmfile-0.138.4/docs/remote-secrets.md 
new/helmfile-0.138.7/docs/remote-secrets.md
--- old/helmfile-0.138.4/docs/remote-secrets.md 2021-02-05 01:02:21.000000000 
+0100
+++ new/helmfile-0.138.7/docs/remote-secrets.md 2021-03-09 02:23:36.000000000 
+0100
@@ -1,6 +1,6 @@
 # Secrets 
 
-helmfile can handle secrets using 
[helm-secrets](https://github.com/zendesk/helm-secrets) plugin or using remote 
secrets storage 
+helmfile can handle secrets using 
[helm-secrets](https://github.com/jkroepke/helm-secrets) plugin or using remote 
secrets storage 
 (everything that package [vals](https://github.com/variantdev/vals) can handle 
vault, AWS SSM etc)  
 This section will describe the second use case. 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/helmfile-0.138.4/main.go new/helmfile-0.138.7/main.go
--- old/helmfile-0.138.4/main.go        2021-02-05 01:02:21.000000000 +0100
+++ new/helmfile-0.138.7/main.go        2021-03-09 02:23:36.000000000 +0100
@@ -353,6 +353,10 @@
                                        Name:  "skip-deps",
                                        Usage: `skip running "helm repo update" 
and "helm dependency build"`,
                                },
+                               cli.BoolFlag{
+                                       Name:  "wait",
+                                       Usage: `Override helmDefaults.wait 
setting "helm upgrade --install --wait"`,
+                               },
                        },
                        Action: action(func(run *app.App, c configImpl) error {
                                return run.Sync(c)
@@ -417,6 +421,10 @@
                                        Name:  "skip-deps",
                                        Usage: `skip running "helm repo update" 
and "helm dependency build"`,
                                },
+                               cli.BoolFlag{
+                                       Name:  "wait",
+                                       Usage: `Override helmDefaults.wait 
setting "helm upgrade --install --wait"`,
+                               },
                        },
                        Action: action(func(run *app.App, c configImpl) error {
                                return run.Apply(c)
@@ -603,6 +611,10 @@
        return c.c.Bool("skip-repos")
 }
 
+func (c configImpl) Wait() bool {
+       return c.c.Bool("wait")
+}
+
 func (c configImpl) Values() []string {
        return c.c.StringSlice("values")
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/helmfile-0.138.4/pkg/app/app.go 
new/helmfile-0.138.7/pkg/app/app.go
--- old/helmfile-0.138.4/pkg/app/app.go 2021-02-05 01:02:21.000000000 +0100
+++ new/helmfile-0.138.7/pkg/app/app.go 2021-03-09 02:23:36.000000000 +0100
@@ -294,6 +294,7 @@
                prepErr := run.withPreparedCharts("sync", 
state.ChartPrepareOptions{
                        SkipRepos: c.SkipDeps(),
                        SkipDeps:  c.SkipDeps(),
+                       Wait:      c.Wait(),
                }, func() {
                        ok, errs = a.sync(run, c)
                })
@@ -319,6 +320,7 @@
                prepErr := run.withPreparedCharts("apply", 
state.ChartPrepareOptions{
                        SkipRepos: c.SkipDeps(),
                        SkipDeps:  c.SkipDeps(),
+                       Wait:      c.Wait(),
                }, func() {
                        matched, updated, es := a.apply(run, c)
 
@@ -1179,6 +1181,7 @@
                                syncOpts := state.SyncOpts{
                                        Set:         c.Set(),
                                        SkipCleanup: c.RetainValuesFiles() || 
c.SkipCleanup(),
+                                       Wait:        c.Wait(),
                                }
                                return subst.SyncReleases(&affectedReleases, 
helm, c.Values(), c.Concurrency(), &syncOpts)
                        }))
@@ -1393,7 +1396,8 @@
                        subst.Releases = rs
 
                        opts := &state.SyncOpts{
-                               Set: c.Set(),
+                               Set:  c.Set(),
+                               Wait: c.Wait(),
                        }
                        return subst.SyncReleases(&affectedReleases, helm, 
c.Values(), c.Concurrency(), opts)
                }))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/helmfile-0.138.4/pkg/app/app_test.go 
new/helmfile-0.138.7/pkg/app/app_test.go
--- old/helmfile-0.138.4/pkg/app/app_test.go    2021-02-05 01:02:21.000000000 
+0100
+++ new/helmfile-0.138.7/pkg/app/app_test.go    2021-03-09 02:23:36.000000000 
+0100
@@ -2315,12 +2315,17 @@
        interactive       bool
        skipDiffOnInstall bool
        logger            *zap.SugaredLogger
+       wait              bool
 }
 
 func (a applyConfig) Args() string {
        return a.args
 }
 
+func (a applyConfig) Wait() bool {
+       return a.wait
+}
+
 func (a applyConfig) Values() []string {
        return a.values
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/helmfile-0.138.4/pkg/app/config.go 
new/helmfile-0.138.7/pkg/app/config.go
--- old/helmfile-0.138.4/pkg/app/config.go      2021-02-05 01:02:21.000000000 
+0100
+++ new/helmfile-0.138.7/pkg/app/config.go      2021-03-09 02:23:36.000000000 
+0100
@@ -39,6 +39,7 @@
        Values() []string
        Set() []string
        SkipDeps() bool
+       Wait() bool
 
        IncludeTests() bool
 
@@ -65,6 +66,7 @@
        Values() []string
        Set() []string
        SkipDeps() bool
+       Wait() bool
 
        concurrencyConfig
        loggingConfig
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/helmfile-0.138.4/pkg/app/run.go 
new/helmfile-0.138.7/pkg/app/run.go
--- old/helmfile-0.138.4/pkg/app/run.go 2021-02-05 01:02:21.000000000 +0100
+++ new/helmfile-0.138.7/pkg/app/run.go 2021-03-09 02:23:36.000000000 +0100
@@ -16,7 +16,7 @@
        helm  helmexec.Interface
        ctx   Context
 
-       ReleaseToChart map[string]string
+       ReleaseToChart map[state.PrepareChartKey]string
 
        Ask func(string) bool
 }
@@ -68,7 +68,12 @@
        for i := range r.state.Releases {
                rel := &r.state.Releases[i]
 
-               if chart := releaseToChart[rel.Name]; chart != "" {
+               key := state.PrepareChartKey{
+                       Name:        rel.Name,
+                       Namespace:   rel.Namespace,
+                       KubeContext: rel.KubeContext,
+               }
+               if chart := releaseToChart[key]; chart != "" {
                        rel.Chart = chart
                }
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/helmfile-0.138.4/pkg/state/state.go 
new/helmfile-0.138.7/pkg/state/state.go
--- old/helmfile-0.138.4/pkg/state/state.go     2021-02-05 01:02:21.000000000 
+0100
+++ new/helmfile-0.138.7/pkg/state/state.go     2021-03-09 02:23:36.000000000 
+0100
@@ -73,6 +73,11 @@
        MissingFileHandler string `yaml:"missingFileHandler,omitempty"`
 }
 
+type PullCommand struct {
+       ChartRef     string
+       responseChan chan error
+}
+
 // HelmState structure for the helmfile
 type HelmState struct {
        basePath string
@@ -380,10 +385,9 @@
                var err error
                if repo.OCI {
                        username, password := 
gatherOCIUsernamePassword(repo.Name, repo.Username, repo.Password)
-                       if username == "" || password == "" {
-                               return nil, fmt.Errorf("username and password 
are required fields for logging in to OCI registries with helm")
+                       if username != "" && password != "" {
+                               err = helm.RegistryLogin(repo.URL, username, 
password)
                        }
-                       err = helm.RegistryLogin(repo.URL, username, password)
                } else {
                        err = helm.AddRepo(repo.Name, repo.URL, repo.CaFile, 
repo.CertFile, repo.KeyFile, repo.Username, repo.Password, repo.Managed)
                }
@@ -504,6 +508,10 @@
                                        }
                                }
 
+                               if opts.Wait {
+                                       flags = append(flags, "--wait")
+                               }
+
                                if len(errs) > 0 {
                                        results <- syncPrepareResult{errors: 
errs, files: files}
                                        continue
@@ -578,6 +586,7 @@
 type SyncOpts struct {
        Set         []string
        SkipCleanup bool
+       Wait        bool
 }
 
 type SyncOpt interface{ Apply(*SyncOpts) }
@@ -876,10 +885,13 @@
        SkipRepos     bool
        SkipDeps      bool
        SkipResolve   bool
+       Wait          bool
 }
 
 type chartPrepareResult struct {
        releaseName            string
+       releaseNamespace       string
+       releaseContext         string
        chartName              string
        chartPath              string
        err                    error
@@ -901,6 +913,10 @@
        return nil, chartName
 }
 
+type PrepareChartKey struct {
+       Namespace, Name, KubeContext string
+}
+
 // PrepareCharts creates temporary directories of charts.
 //
 // Each resulting "chart" can be one of the followings:
@@ -915,7 +931,7 @@
 // Otheriwse, if a chart is not a helm chart, it will call "chartify" to turn 
it into a chart.
 //
 // If exists, it will also patch resources by json patches, strategic-merge 
patches, and injectors.
-func (st *HelmState) PrepareCharts(helm helmexec.Interface, dir string, 
concurrency int, helmfileCommand string, opts ChartPrepareOptions) 
(map[string]string, []error) {
+func (st *HelmState) PrepareCharts(helm helmexec.Interface, dir string, 
concurrency int, helmfileCommand string, opts ChartPrepareOptions) 
(map[PrepareChartKey]string, []error) {
        var selected []ReleaseSpec
 
        if len(st.Selectors) > 0 {
@@ -933,7 +949,7 @@
 
        releases := releasesNeedCharts(selected)
 
-       temp := make(map[string]string, len(releases))
+       temp := make(map[PrepareChartKey]string, len(releases))
 
        errs := []error{}
 
@@ -955,6 +971,11 @@
        }
 
        var builds []*chartPrepareResult
+       pullChan := make(chan PullCommand)
+       defer func() {
+               close(pullChan)
+       }()
+       go st.pullChartWorker(pullChan, helm)
 
        st.scatterGather(
                concurrency,
@@ -987,7 +1008,7 @@
                                chartFetchedByGoGetter := chartPath != chartName
 
                                if !chartFetchedByGoGetter {
-                                       ociChartPath, err := 
st.getOCIChart(release, dir, helm)
+                                       ociChartPath, err := 
st.getOCIChart(pullChan, release, dir, helm)
                                        if err != nil {
                                                results <- 
&chartPrepareResult{err: fmt.Errorf("release %q: %w", release.Name, err)}
 
@@ -1123,6 +1144,8 @@
                                results <- &chartPrepareResult{
                                        releaseName:            release.Name,
                                        chartName:              chartName,
+                                       releaseNamespace:       
release.Namespace,
+                                       releaseContext:         
release.KubeContext,
                                        chartPath:              chartPath,
                                        buildDeps:              buildDeps,
                                        chartFetchedByGoGetter: 
chartFetchedByGoGetter,
@@ -1138,7 +1161,11 @@
 
                                        return
                                }
-                               temp[downloadRes.releaseName] = 
downloadRes.chartPath
+                               temp[PrepareChartKey{
+                                       Namespace:   
downloadRes.releaseNamespace,
+                                       KubeContext: downloadRes.releaseContext,
+                                       Name:        downloadRes.releaseName,
+                               }] = downloadRes.chartPath
 
                                if downloadRes.buildDeps {
                                        builds = append(builds, downloadRes)
@@ -1960,8 +1987,15 @@
                        if len(conditionSplit) != 2 {
                                return nil, fmt.Errorf("Condition value must be 
in the form 'foo.enabled' where 'foo' can be modified as necessary")
                        }
-                       if 
values[conditionSplit[0]].(map[string]interface{})["enabled"] == true {
-                               conditionMatch = true
+                       if v, ok := values[conditionSplit[0]]; ok {
+                               if v == nil {
+                                       panic(fmt.Sprintf("environment values 
field '%s' is nil", conditionSplit[0]))
+                               }
+                               if v.(map[string]interface{})["enabled"] == 
true {
+                                       conditionMatch = true
+                               }
+                       } else {
+                               panic(fmt.Sprintf("environment values does not 
contain field '%s'", conditionSplit[0]))
                        }
                }
                res := Release{
@@ -2985,7 +3019,7 @@
        }
 }
 
-func (st *HelmState) getOCIChart(release *ReleaseSpec, tempDir string, helm 
helmexec.Interface) (*string, error) {
+func (st *HelmState) getOCIChart(pullChan chan PullCommand, release 
*ReleaseSpec, tempDir string, helm helmexec.Interface) (*string, error) {
        repo, name := st.GetRepositoryAndNameFromChartName(release.Chart)
        if repo == nil {
                return nil, nil
@@ -3002,7 +3036,7 @@
 
        qualifiedChartName := fmt.Sprintf("%s/%s:%s", repo.URL, name, 
chartVersion)
 
-       err := helm.ChartPull(qualifiedChartName)
+       err := st.pullChart(pullChan, qualifiedChartName)
        if err != nil {
                return nil, err
        }
@@ -3033,3 +3067,22 @@
 
        return &chartPath, nil
 }
+
+// Pull charts one by one to prevent concurrent pull problems with Helm
+func (st *HelmState) pullChartWorker(pullChan chan PullCommand, helm 
helmexec.Interface) {
+       for pullCmd := range pullChan {
+               err := helm.ChartPull(pullCmd.ChartRef)
+               pullCmd.responseChan <- err
+       }
+}
+
+// Send a pull command to the pull worker
+func (st *HelmState) pullChart(pullChan chan PullCommand, chartRef string) 
error {
+       response := make(chan error, 1)
+       cmd := PullCommand{
+               responseChan: response,
+               ChartRef:     chartRef,
+       }
+       pullChan <- cmd
+       return <-response
+}

++++++ vendor.tar.gz ++++++

Reply via email to