diff --git a/pkg/action/hooks.go b/pkg/action/hooks.go index 26a060877..82e9a5109 100644 --- a/pkg/action/hooks.go +++ b/pkg/action/hooks.go @@ -48,7 +48,13 @@ func (cfg *Configuration) execHook(rl *release.Release, hook release.HookEvent, for i, h := range executingHooks { // Set default delete policy to before-hook-creation - cfg.hookSetDeletePolicy(h) + if h.DeletePolicies == nil || len(h.DeletePolicies) == 0 { + // TODO(jlegrone): Only apply before-hook-creation delete policy to run to completion + // resources. For all other resource types update in place if a + // resource with the same name already exists and is owned by the + // current release. + h.DeletePolicies = []release.HookDeletePolicy{release.HookBeforeHookCreation} + } if err := cfg.deleteHookByPolicy(h, release.HookBeforeHookCreation, waitStrategy, timeout); err != nil { return err diff --git a/pkg/kube/wait.go b/pkg/kube/wait.go index de6fa5199..f6dcbbfe2 100644 --- a/pkg/kube/wait.go +++ b/pkg/kube/wait.go @@ -195,7 +195,7 @@ func SelectorsForObject(object runtime.Object) (selector labels.Selector, err er case *batchv1.Job: selector, err = metav1.LabelSelectorAsSelector(t.Spec.Selector) case *corev1.Service: - if len(t.Spec.Selector) == 0 { + if t.Spec.Selector == nil || len(t.Spec.Selector) == 0 { return nil, fmt.Errorf("invalid service '%s': Service is defined without a selector", t.Name) } selector = labels.SelectorFromSet(t.Spec.Selector) diff --git a/pkg/registry/util.go b/pkg/registry/util.go index 6071c66c3..6db526a61 100644 --- a/pkg/registry/util.go +++ b/pkg/registry/util.go @@ -165,7 +165,7 @@ func generateChartOCIAnnotations(meta *chart.Metadata, creationTime string) map[ chartOCIAnnotations = addToMap(chartOCIAnnotations, ocispec.AnnotationSource, meta.Sources[0]) } - if len(meta.Maintainers) > 0 { + if meta.Maintainers != nil && len(meta.Maintainers) > 0 { var maintainerSb strings.Builder for maintainerIdx, maintainer := range meta.Maintainers {