-
-
Notifications
You must be signed in to change notification settings - Fork 36
/
build_registries.go
49 lines (39 loc) · 1.27 KB
/
build_registries.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package plan
import (
regi "github.com/helmwave/helmwave/pkg/registry"
"github.com/helmwave/helmwave/pkg/release"
log "github.com/sirupsen/logrus"
"helm.sh/helm/v3/pkg/registry"
)
func buildRegistriesMapTop(releases []release.Config) map[string][]release.Config {
m := make(map[string][]release.Config)
for _, rel := range releases {
if !registry.IsOCI(rel.Chart().Name) {
continue
}
m[rel.Repo()] = append(m[rel.Repo()], rel)
rel.Logger().Debug("🗄 This chart will download via OCI")
}
return m
}
func buildRegistries(m map[string][]release.Config, in []regi.Config) (out []regi.Config, err error) {
for reg, releases := range m {
rm := releaseNames(releases)
l := log.WithField("registry", reg)
l.WithField("releases", rm).Debug("🗄 found releases that depend on registries")
if index, found := regi.IndexOfHost(in, reg); found {
out = append(out, in[index])
l.Info("🗄 registry has been added to the plan")
} else {
l.WithField("releases", rm).Warn("🗄 some releases depend on a registry that is not defined")
return nil, regi.NewNotFoundError(reg)
}
}
return out, nil
}
func (p *Plan) buildRegistries() (out []regi.Config, err error) {
return buildRegistries(
buildRegistriesMapTop(p.body.Releases),
p.body.Registries,
)
}