fix: release missing when run the 'list -A' command

Signed-off-by: shipengqi <pooky.shipengqi@gmail.com>
pull/12277/head
shipengqi 2 years ago committed by Vincent
parent 102b5629a4
commit 56bab600a2

@ -20,6 +20,7 @@ import (
"context" "context"
"sync" "sync"
"helm.sh/helm/v3/pkg/storage/driver"
v1 "k8s.io/api/core/v1" v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/types"
@ -93,7 +94,11 @@ func (s *multiSecretClient) Get(ctx context.Context, name string, opts metav1.Ge
if err := s.init(); err != nil { if err := s.init(); err != nil {
return nil, err return nil, err
} }
return s.client.CoreV1().Secrets(s.namespace).Get(ctx, name, opts) namespace := s.namespace
if v, ok := driver.GetNamespaceFromContext(ctx); ok {
namespace = v
}
return s.client.CoreV1().Secrets(namespace).Get(ctx, name, opts)
} }
func (s *multiSecretClient) List(ctx context.Context, opts metav1.ListOptions) (*v1.SecretList, error) { func (s *multiSecretClient) List(ctx context.Context, opts metav1.ListOptions) (*v1.SecretList, error) {

@ -46,6 +46,21 @@ import (
rspb "helm.sh/helm/v3/pkg/release" rspb "helm.sh/helm/v3/pkg/release"
) )
// multiSecretContextKey is defined instead of the built-in string type to avoid collisions.
type multiSecretContextKey string
var multiSecretContextNamespace = multiSecretContextKey("namespace")
// GetNamespaceFromContext gets the namespace value from the context.
func GetNamespaceFromContext(ctx context.Context) (string, bool) {
if v := ctx.Value(multiSecretContextNamespace); v != nil {
if namespace, ok := v.(string); ok {
return namespace, ok
}
}
return "", false
}
var _ Driver = (*MultiSecrets)(nil) var _ Driver = (*MultiSecrets)(nil)
// MultiSecretsDriverName is the string name of the driver. // MultiSecretsDriverName is the string name of the driver.
@ -371,7 +386,8 @@ func loadRemainingChunks(obj *v1.Secret, multiSecretImpl *MultiSecrets) ([]byte,
chunks, _ := strconv.Atoi(string(obj.Data["chunks"])) chunks, _ := strconv.Atoi(string(obj.Data["chunks"]))
for chunk := 2; chunk <= chunks; chunk++ { for chunk := 2; chunk <= chunks; chunk++ {
key := fmt.Sprintf("%s.%d", obj.ObjectMeta.Name, chunk) key := fmt.Sprintf("%s.%d", obj.ObjectMeta.Name, chunk)
chunkobj, err := multiSecretImpl.impl.Get(context.Background(), key, metav1.GetOptions{}) ctx := context.WithValue(context.Background(), multiSecretContextNamespace, obj.Namespace)
chunkobj, err := multiSecretImpl.impl.Get(ctx, key, metav1.GetOptions{})
if err != nil { if err != nil {
if apierrors.IsNotFound(err) { if apierrors.IsNotFound(err) {
return nil, ErrReleaseNotFound return nil, ErrReleaseNotFound

Loading…
Cancel
Save