feat(tiller): re-use values during upgrade

When `helm install -f foo.yaml bar` is called, and then the release is
upgraded with `helm upgrade happy-panda bar`, this will now re-use the
values that were submitted with `-f foo.yaml`. The same is true for
values specified with `--set`.

Closes #1227
reviewable/pr1278/r1
Matt Butcher 10 years ago
parent 96cdbbe6b1
commit 223e0480d1

@ -341,6 +341,12 @@ func (s *releaseServer) prepareUpdate(req *services.UpdateReleaseRequest) (*rele
return nil, nil, err
}
// If new values were not supplied in the upgrade, re-use the existing values.
if (req.Values == nil || req.Values.Raw == "") && currentRelease.Config != nil && currentRelease.Config.Raw != "" {
log.Printf("Copying values from %s (v%d) to new release.", currentRelease.Name, currentRelease.Version)
req.Values = currentRelease.Config
}
ts := timeconv.Now()
options := chartutil.ReleaseOptions{
Name: req.Name,

@ -110,7 +110,7 @@ func namedReleaseStub(name string, status release.Status_Code) *release.Release
Status: &release.Status{Code: status},
},
Chart: chartStub(),
Config: &chart.Config{Raw: `name = "value"`},
Config: &chart.Config{Raw: `name: value`},
Version: 1,
Hooks: []*release.Hook{
{
@ -568,6 +568,12 @@ func TestUpdateRelease(t *testing.T) {
t.Errorf("No manifest returned: %v", res.Release)
}
if res.Release.Config == nil {
t.Errorf("Got release without config: %#v", res.Release)
} else if res.Release.Config.Raw != rel.Config.Raw {
t.Errorf("Expected release values %q, got %q", rel.Config.Raw, res.Release.Config.Raw)
}
if len(updated.Manifest) == 0 {
t.Errorf("Expected manifest in %v", res)
}

Loading…
Cancel
Save