Change release storage name to prefix helm storage type

Signed-off-by: Martin Hickey <martin.hickey@ie.ibm.com>
pull/6500/head
Martin Hickey 6 years ago
parent fef60966f6
commit c3b565e339

@ -49,7 +49,8 @@ func (mem *Memory) Name() string {
func (mem *Memory) Get(key string) (*rspb.Release, error) { func (mem *Memory) Get(key string) (*rspb.Release, error) {
defer unlock(mem.rlock()) defer unlock(mem.rlock())
switch elems := strings.Split(key, ".v"); len(elems) { keyWithoutPrefix := strings.TrimPrefix(key, "sh.helm.release.v1.")
switch elems := strings.Split(keyWithoutPrefix, ".v"); len(elems) {
case 2: case 2:
name, ver := elems[0], elems[1] name, ver := elems[0], elems[1]
if _, err := strconv.Atoi(ver); err != nil { if _, err := strconv.Atoi(ver); err != nil {
@ -138,7 +139,8 @@ func (mem *Memory) Update(key string, rls *rspb.Release) error {
func (mem *Memory) Delete(key string) (*rspb.Release, error) { func (mem *Memory) Delete(key string) (*rspb.Release, error) {
defer unlock(mem.wlock()) defer unlock(mem.wlock())
elems := strings.Split(key, ".v") keyWithoutPrefix := strings.TrimPrefix(key, "sh.helm.release.v1.")
elems := strings.Split(keyWithoutPrefix, ".v")
if len(elems) != 2 { if len(elems) != 2 {
return nil, ErrInvalidKey return nil, ErrInvalidKey

@ -234,7 +234,7 @@ func newSecretsObject(key string, rls *rspb.Release, lbs labels) (*v1.Secret, er
Name: key, Name: key,
Labels: lbs.toMap(), Labels: lbs.toMap(),
}, },
Type: "helm.sh/release", Type: "helm.sh/release.v1",
Data: map[string][]byte{"release": []byte(s)}, Data: map[string][]byte{"release": []byte(s)},
}, nil }, nil
} }

@ -27,6 +27,8 @@ import (
"helm.sh/helm/pkg/storage/driver" "helm.sh/helm/pkg/storage/driver"
) )
const HelmStorageType = "sh.helm.release.v1"
// Storage represents a storage engine for a Release. // Storage represents a storage engine for a Release.
type Storage struct { type Storage struct {
driver.Driver driver.Driver
@ -205,11 +207,14 @@ func (s *Storage) Last(name string) (*rspb.Release, error) {
return h[0], nil return h[0], nil
} }
// makeKey concatenates a release name and version into // makeKey concatenates the helm type, a release name and version into a
// a string with format ```<release_name>#v<version>```. // string with format:```<helm_storage_type>.<release_name>.v<version>```.
// The Helm type is prepended to keep name uniqueness between different
// release storage types. An example of clash when not using the type:
// https://github.com/helm/helm/issues/6435.
// This key is used to uniquely identify storage objects. // This key is used to uniquely identify storage objects.
func makeKey(rlsname string, version int) string { func makeKey(rlsname string, version int) string {
return fmt.Sprintf("%s.v%d", rlsname, version) return fmt.Sprintf("%s.%s.v%d", HelmStorageType, rlsname, version)
} }
// Init initializes a new storage backend with the driver d. // Init initializes a new storage backend with the driver d.

Loading…
Cancel
Save