fix: handle properly conditions with multilevel aliases; fixes 31187

Signed-off-by: Antoine PARIS <antoineparis77@gmail.com>
pull/31595/head
Antoine PARIS 4 weeks ago
parent 795460535b
commit b46cca83be

@ -187,7 +187,7 @@ Loop:
copy(cd, c.Dependencies()[:0])
for _, n := range c.Dependencies() {
if _, ok := rm[n.Metadata.Name]; !ok {
cd = append(cd, n)
cd = append(cd, deepCopyMetadataDependencies(n))
}
}
// don't keep disabled charts in metadata
@ -214,6 +214,25 @@ Loop:
return nil
}
func deepCopyMetadataDependencies(c *chart.Chart) *chart.Chart {
if c == nil || c.Metadata == nil {
return c
}
cCopy := *c
metadataCopy := *c.Metadata
metadataCopy.Dependencies = nil
for _, d := range c.Metadata.Dependencies {
if d == nil {
metadataCopy.Dependencies = append(metadataCopy.Dependencies, d)
} else {
depCopy := *d
metadataCopy.Dependencies = append(metadataCopy.Dependencies, &depCopy)
}
}
cCopy.Metadata = &metadataCopy
return &cCopy
}
// pathToMap creates a nested map given a YAML path in dot notation.
func pathToMap(path string, data map[string]interface{}) map[string]interface{} {
if path == "." {

@ -111,6 +111,22 @@ func TestDependencyEnabled(t *testing.T) {
"subcharts with alias also respect conditions",
M{"subchart1": M{"enabled": false}, "subchart2alias": M{"enabled": true, "subchartb": M{"enabled": true}}},
[]string{"parentchart", "parentchart.subchart2alias", "parentchart.subchart2alias.subchartb"},
}, {
"subcharts with multilevel aliases are not added when disabled",
M{
"subchart1": M{"enabled": false},
"subchart2": M{"enabled": true, "subchartbalias": M{"enabled": false}},
"subchart2alias": M{"enabled": true, "subchartbalias": M{"enabled": false}},
},
[]string{"parentchart", "parentchart.subchart2", "parentchart.subchart2alias"},
}, {
"subchart with multilevel aliases is added when enabled",
M{
"subchart1": M{"enabled": false},
"subchart2": M{"enabled": true, "subchartbalias": M{"enabled": true}},
"subchart2alias": M{"enabled": true, "subchartbalias": M{"enabled": false}},
},
[]string{"parentchart", "parentchart.subchart2", "parentchart.subchart2.subchartbalias", "parentchart.subchart2alias"},
}}
for _, tc := range tests {

@ -17,3 +17,8 @@ dependencies:
tags:
- back-end
- subchartc
- name: subchartb
alias: subchartbalias
repository: http://localhost:10191
version: 0.1.0
condition: subchartbalias.enabled

@ -19,3 +19,5 @@ resources:
cpu: 100m
memory: 128Mi
subchartbalias:
enabled: false

Loading…
Cancel
Save