diff --git a/pkg/storage/driver/cfgmaps.go b/pkg/storage/driver/cfgmaps.go index 1d840708c..efb9bd867 100644 --- a/pkg/storage/driver/cfgmaps.go +++ b/pkg/storage/driver/cfgmaps.go @@ -244,7 +244,7 @@ func newConfigMapsObject(key string, rls *rspb.Release, lbs labels) (*v1.ConfigM } // apply user labels - lbs.fromMap(rls.Labels) + lbs.mergeUserLabels(rls.Labels) // apply internal labels lbs.set("name", rls.Name) diff --git a/pkg/storage/driver/debug.test b/pkg/storage/driver/debug.test new file mode 100755 index 000000000..f505052dc Binary files /dev/null and b/pkg/storage/driver/debug.test differ diff --git a/pkg/storage/driver/labels.go b/pkg/storage/driver/labels.go index eb7118fe5..bd6078bcf 100644 --- a/pkg/storage/driver/labels.go +++ b/pkg/storage/driver/labels.go @@ -46,3 +46,11 @@ func (lbs *labels) fromMap(kvs map[string]string) { lbs.set(k, v) } } + +func (lbs *labels) mergeUserLabels(list map[string]string) { + for k, v := range list { + if ! isSystemLabel(k) { + lbs.set(k, v) + } + } +} diff --git a/pkg/storage/driver/secrets.go b/pkg/storage/driver/secrets.go index 9b60fb8c6..6124c9c18 100644 --- a/pkg/storage/driver/secrets.go +++ b/pkg/storage/driver/secrets.go @@ -224,7 +224,7 @@ func newSecretsObject(key string, rls *rspb.Release, lbs labels) (*v1.Secret, er } // apply user labels - lbs.fromMap(rls.Labels) + lbs.mergeUserLabels(rls.Labels) // apply internal labels lbs.set("name", rls.Name) diff --git a/pkg/storage/driver/util.go b/pkg/storage/driver/util.go index 796a0c2d0..112c98c48 100644 --- a/pkg/storage/driver/util.go +++ b/pkg/storage/driver/util.go @@ -84,10 +84,24 @@ func decodeRelease(data string) (*rspb.Release, error) { return &rls, nil } +// Returns array of system labels' keys +func systemLablesKeys() []string { + return []string{"name", "owner", "status", "version"} +} + // Removes system labels func filterSystemLabels(lbs map[string]string) map[string]string { - for _, k := range []string{"name", "owner", "status", "version"} { + for _, k := range systemLablesKeys() { delete(lbs, k) } return lbs } + +func isSystemLabel(key string) bool { + for _, v := range systemLablesKeys() { + if key == v { + return true + } + } + return false +}