AppManager: Cache helm charts locally during update
Change-Id: I663e923bc6560c9a75318025178d5701e969074d
diff --git a/core/installer/app_manager.go b/core/installer/app_manager.go
index 8257d27..0965507 100644
--- a/core/installer/app_manager.go
+++ b/core/installer/app_manager.go
@@ -635,11 +635,17 @@
overrides CueAppData,
opts ...InstallOption,
) (ReleaseResources, error) {
+ o := &installOptions{}
+ for _, i := range opts {
+ i(o)
+ }
+ if !o.NoLock {
+ m.l.Lock()
+ defer m.l.Unlock()
+ }
if values == nil {
values = map[string]any{}
}
- m.l.Lock()
- defer m.l.Unlock()
if err := m.repo.Pull(); err != nil {
return ReleaseResources{}, err
}
@@ -688,7 +694,13 @@
if err != nil {
return ReleaseResources{}, err
}
- rendered, err := newApp.Render(config.Release, env, networks, ToAccessConfigs(clusters), merge(config.Input, values), renderedCfg.LocalCharts, m.vpnAPIClient)
+ var lg LocalChartGenerator
+ if o.LG != nil {
+ lg = o.LG
+ } else {
+ lg = GitRepositoryLocalChartGenerator{env.Id, env.Id}
+ }
+ rendered, err := newApp.Render(config.Release, env, networks, ToAccessConfigs(clusters), merge(config.Input, values), nil, m.vpnAPIClient)
if err != nil {
return ReleaseResources{}, err
}
@@ -717,7 +729,12 @@
if err := setPortFields(values, portReservations); err != nil {
return ReleaseResources{}, err
}
- rendered, err = newApp.Render(config.Release, env, networks, ToAccessConfigs(clusters), merge(config.Input, values), renderedCfg.LocalCharts, m.vpnAPIClient)
+ charts, err := pullHelmCharts(m.hf, rendered.HelmCharts, m.repo, "/helm-charts")
+ if err != nil {
+ return ReleaseResources{}, err
+ }
+ localCharts := generateLocalCharts(lg, charts)
+ rendered, err = newApp.Render(config.Release, env, networks, ToAccessConfigs(clusters), merge(config.Input, values), localCharts, m.vpnAPIClient)
if err != nil {
return ReleaseResources{}, err
}