pull/11396/merge
Adam 2 weeks ago committed by GitHub
commit 9ee37300b4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -187,18 +187,25 @@ Loop:
processDependencyTags(c.Metadata.Dependencies, cvals) processDependencyTags(c.Metadata.Dependencies, cvals)
processDependencyConditions(c.Metadata.Dependencies, cvals, path) processDependencyConditions(c.Metadata.Dependencies, cvals, path)
// make a map of charts to remove // make a map of charts to remove
rm := map[string]struct{}{} rm := map[string][]string{}
for _, r := range c.Metadata.Dependencies { for _, r := range c.Metadata.Dependencies {
if !r.Enabled { if !r.Enabled {
// remove disabled chart // remove disabled chart
rm[r.Name] = struct{}{} rm[r.Name] = append(rm[r.Name], r.Version)
} }
} }
// don't keep disabled charts in new slice // don't keep disabled charts in new slice
cd := []*chart.Chart{} cd := []*chart.Chart{}
copy(cd, c.Dependencies()[:0]) copy(cd, c.Dependencies()[:0])
for _, n := range c.Dependencies() { for _, n := range c.Dependencies() {
if _, ok := rm[n.Metadata.Name]; !ok { keep := true
for _, ver := range rm[n.Metadata.Name] {
if n.Metadata.Version == ver || IsCompatibleRange(ver, n.Metadata.Version) {
keep = false
break
}
}
if keep {
cd = append(cd, n) cd = append(cd, n)
} }
} }
@ -206,11 +213,17 @@ Loop:
cdMetadata := []*chart.Dependency{} cdMetadata := []*chart.Dependency{}
copy(cdMetadata, c.Metadata.Dependencies[:0]) copy(cdMetadata, c.Metadata.Dependencies[:0])
for _, n := range c.Metadata.Dependencies { for _, n := range c.Metadata.Dependencies {
if _, ok := rm[n.Name]; !ok { keep := true
for _, ver := range rm[n.Name] {
if n.Version == ver || IsCompatibleRange(ver, n.Version) {
keep = false
break
}
}
if keep {
cdMetadata = append(cdMetadata, n) cdMetadata = append(cdMetadata, n)
} }
} }
// recursively call self to process sub dependencies // recursively call self to process sub dependencies
for _, t := range cd { for _, t := range cd {
subpath := path + t.Metadata.Name + "." subpath := path + t.Metadata.Name + "."

@ -568,3 +568,49 @@ func TestChartWithDependencyAliasedTwiceAndDoublyReferencedSubDependency(t *test
} }
validateDependencyTree(t, c) validateDependencyTree(t, c)
} }
func TestDependencyWithDifferentAliasNameSameVersion(t *testing.T) {
type M = map[string]interface{}
tests := []struct {
name string
v M
charts []string // expected dependent charts names
versions []string // expected dependent charts versions
}{
{
"Different Alias name subcharts enbale one",
M{"one": M{"enabled": true}, "two": M{"enabled": false}},
[]string{"parent-chart.test1"},
[]string{"0.1.0"},
},
{
"Different Alias name subcharts enbale another one",
M{"one": M{"enabled": false}, "two": M{"enabled": true}},
[]string{"parent-chart.test2"},
[]string{"0.1.0"},
},
{
"Different Alias name subcharts enbale all",
M{"one": M{"enabled": true}, "two": M{"enabled": true}},
[]string{"parent-chart.test1", "parent-chart.test2"},
[]string{"0.1.0", "0.1.0"},
},
}
for _, tc := range tests {
c := loadChart(t, "testdata/dependent-chart-with-different-alias-name-same-version")
t.Run(tc.name, func(t *testing.T) {
if err := processDependencyEnabled(c, tc.v, ""); err != nil {
t.Fatalf("error processing enabled dependencies %v", err)
}
if len(c.Dependencies()) != len(tc.charts) {
t.Fatalf("slice lengths do not match got %v, expected %v", len(c.Dependencies()), len(tc.charts))
}
for i, d := range c.Dependencies() {
if d.Metadata.Version != tc.versions[i] {
t.Fatalf("slice values do not match got %v, expected %v", tc.versions[i], d.Metadata.Version)
}
}
})
}
}

@ -0,0 +1,9 @@
dependencies:
- name: dev
repository: file://envs/dev
version: v0.1.0
- name: prod
repository: file://envs/prod
version: v0.1.0
digest: sha256:9403fc24f6cf9d6055820126cf7633b4bd1fed3c77e4880c674059f536346182
generated: "2020-02-03T10:38:51.180474+01:00"

@ -0,0 +1,14 @@
apiVersion: v2
name: parent-chart
version: 0.1.0
appVersion: v0.1.0
dependencies:
- name: test
alias: test1
version: "0.1.0"
condition: one.enabled
- name: test
alias: test2
version: "0.1.0"
condition: two.enabled

@ -0,0 +1,16 @@
###################################################################################################
# parent-chart horizontal pod autoscaler
###################################################################################################
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: {{ .Release.Name }}-autoscaler
namespace: {{ .Release.Namespace }}
spec:
scaleTargetRef:
apiVersion: apps/v1beta1
kind: Deployment
name: {{ .Release.Name }}
minReplicas: {{ required "A valid .Values.resources.autoscaler.minReplicas entry required!" .Values.resources.autoscaler.minReplicas }}
maxReplicas: {{ required "A valid .Values.resources.autoscaler.maxReplicas entry required!" .Values.resources.autoscaler.maxReplicas }}
targetCPUUtilizationPercentage: {{ required "A valid .Values.resources.autoscaler.targetCPUUtilizationPercentage!" .Values.resources.autoscaler.targetCPUUtilizationPercentage }}

@ -0,0 +1,11 @@
# Default values for parent-chart.
nameOverride: parent-chart
one:
enabled: false
two:
enabled: true
resources:
autoscaler:
minReplicas: 0
maxReplicas: 0
targetCPUUtilizationPercentage: 99
Loading…
Cancel
Save