mirror of
https://github.com/helm/helm.git
synced 2026-05-28 04:35:48 -04:00
check if resource is present before adding it to remaining or keep on deletion
This commit is contained in:
parent
15053e6750
commit
e6d907ed28
3 changed files with 17 additions and 3 deletions
|
|
@ -53,6 +53,11 @@ import (
|
|||
"k8s.io/kubernetes/pkg/printers"
|
||||
)
|
||||
|
||||
const (
|
||||
// MissingGetHeader is added to Get's outout when a resource is not found.
|
||||
MissingGetHeader = "==> MISSING\nKIND\t\tNAME\n"
|
||||
)
|
||||
|
||||
// ErrNoObjectsVisited indicates that during a visit operation, no matching objects were found.
|
||||
var ErrNoObjectsVisited = goerrors.New("no objects visited")
|
||||
|
||||
|
|
@ -217,7 +222,7 @@ func (c *Client) Get(namespace string, reader io.Reader) (string, error) {
|
|||
}
|
||||
}
|
||||
if len(missing) > 0 {
|
||||
buf.WriteString("==> MISSING\nKIND\t\tNAME\n")
|
||||
buf.WriteString(MissingGetHeader)
|
||||
for _, s := range missing {
|
||||
fmt.Fprintln(buf, s)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -159,7 +159,7 @@ func DeleteRelease(rel *release.Release, vs chartutil.VersionSet, kubeClient env
|
|||
return rel.Manifest, []error{fmt.Errorf("corrupted release record. You must manually delete the resources: %s", err)}
|
||||
}
|
||||
|
||||
filesToKeep, filesToDelete := filterManifestsToKeep(files)
|
||||
filesToKeep, filesToDelete := filterManifestsToKeep(files, kubeClient, rel.Namespace)
|
||||
if len(filesToKeep) > 0 {
|
||||
kept = summarizeKeptManifests(filesToKeep)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,7 +17,11 @@ limitations under the License.
|
|||
package tiller
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"strings"
|
||||
|
||||
"k8s.io/helm/pkg/kube"
|
||||
"k8s.io/helm/pkg/tiller/environment"
|
||||
)
|
||||
|
||||
// resourcePolicyAnno is the annotation name for a resource policy
|
||||
|
|
@ -29,11 +33,16 @@ const resourcePolicyAnno = "helm.sh/resource-policy"
|
|||
// during an uninstallRelease action.
|
||||
const keepPolicy = "keep"
|
||||
|
||||
func filterManifestsToKeep(manifests []Manifest) ([]Manifest, []Manifest) {
|
||||
func filterManifestsToKeep(manifests []Manifest, kubeClient environment.KubeClient, namespace string) ([]Manifest, []Manifest) {
|
||||
remaining := []Manifest{}
|
||||
keep := []Manifest{}
|
||||
|
||||
for _, m := range manifests {
|
||||
// check if m is in fact present from k8s client's POV.
|
||||
output, err := kubeClient.Get(namespace, bytes.NewBufferString(m.Content))
|
||||
if err != nil || strings.Contains(output, kube.MissingGetHeader) {
|
||||
continue
|
||||
}
|
||||
|
||||
if m.Head.Metadata == nil || m.Head.Metadata.Annotations == nil || len(m.Head.Metadata.Annotations) == 0 {
|
||||
remaining = append(remaining, m)
|
||||
|
|
|
|||
Loading…
Reference in a new issue