Merge pull request #419 from helmfile/405-helmfile-deps-cannot-create-a-lock-file-for-an-oci-repo
fix: helmfile deps issue with oci repo
This commit is contained in:
commit
ad257554c9
|
|
@ -217,16 +217,13 @@ func (st *HelmState) updateDependenciesInTempDir(shell helmexec.DependencyUpdate
|
|||
}
|
||||
|
||||
func getUnresolvedDependenciess(st *HelmState) (string, *UnresolvedDependencies, error) {
|
||||
repoToURL := map[string]string{}
|
||||
repoToURL := map[string]RepositorySpec{}
|
||||
|
||||
for _, r := range st.Repositories {
|
||||
repoToURL[r.Name] = r.URL
|
||||
repoToURL[r.Name] = r
|
||||
}
|
||||
|
||||
unresolved := &UnresolvedDependencies{deps: map[string][]unresolvedChartDependency{}}
|
||||
// if err := unresolved.Add("stable/envoy", "https://kubernetes-charts.storage.googleapis.com", ""); err != nil {
|
||||
// panic(err)
|
||||
// }
|
||||
|
||||
for _, r := range st.Releases {
|
||||
repo, chart, ok := resolveRemoteChart(r.Chart)
|
||||
|
|
@ -234,13 +231,19 @@ func getUnresolvedDependenciess(st *HelmState) (string, *UnresolvedDependencies,
|
|||
continue
|
||||
}
|
||||
|
||||
url, ok := repoToURL[repo]
|
||||
repoSpec, ok := repoToURL[repo]
|
||||
// Skip this chart from dependency management, as there's no matching `repository` in the helmfile state,
|
||||
// which may imply that this is a local chart within a directory, like `charts/myapp`
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
|
||||
url := repoSpec.URL
|
||||
|
||||
if repoSpec.OCI {
|
||||
url = fmt.Sprintf("oci://%s", url)
|
||||
}
|
||||
|
||||
if err := unresolved.Add(chart, url, r.Version); err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,66 @@
|
|||
package state
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestGetUnresolvedDependenciess(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
helmState *HelmState
|
||||
wantErr bool
|
||||
expectfile string
|
||||
expectDeps *UnresolvedDependencies
|
||||
}{
|
||||
{
|
||||
name: "oci chart",
|
||||
helmState: &HelmState{
|
||||
FilePath: "helmfile.yaml",
|
||||
ReleaseSetSpec: ReleaseSetSpec{
|
||||
Releases: []ReleaseSpec{
|
||||
{
|
||||
Name: "foo",
|
||||
Chart: "charts/abc",
|
||||
Version: "0.1.0",
|
||||
},
|
||||
},
|
||||
Repositories: []RepositorySpec{
|
||||
{
|
||||
Name: "charts",
|
||||
URL: "localhost:5000/aaa",
|
||||
OCI: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
wantErr: false,
|
||||
expectfile: "helmfile",
|
||||
expectDeps: &UnresolvedDependencies{
|
||||
deps: map[string][]unresolvedChartDependency{
|
||||
"abc": {
|
||||
{
|
||||
ChartName: "abc",
|
||||
Repository: "oci://localhost:5000/aaa",
|
||||
VersionConstraint: "0.1.0",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
f, ds, err := getUnresolvedDependenciess(tt.helmState)
|
||||
if tt.wantErr {
|
||||
require.Error(t, err, "getUnresolvedDependenciess() error = nil, wantErr")
|
||||
} else {
|
||||
require.NoErrorf(t, err, "getUnresolvedDependenciess() want no error, got %v", err)
|
||||
}
|
||||
require.Equalf(t, tt.expectfile, f, "getUnresolvedDependenciess() expect file %s, got %s", tt.expectfile, f)
|
||||
require.Equalf(t, tt.expectDeps, ds, "getUnresolvedDependenciess() expect deps %v, got %v", tt.expectDeps, ds)
|
||||
})
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue