fixup! fix upgrade of broken install

pull/3437/head
Soren Mathiasen 8 years ago
parent a406094436
commit 8527ebc642
No known key found for this signature in database
GPG Key ID: E298D274FA10C0E1

@ -71,17 +71,18 @@ func (s *ReleaseServer) prepareUpdate(req *services.UpdateReleaseRequest) (*rele
// finds the deployed release with the given name
currentRelease, err := s.env.Releases.Deployed(req.Name)
if err != nil {
if err == nil {
// If new values were not supplied in the upgrade, re-use the existing values.
if err := s.reuseValues(req, currentRelease); err != nil {
return nil, nil, err
}
} else {
// try to find a failed release we can upgrade
currentRelease, err = s.env.Releases.Failed(req.Name)
if err != nil {
return nil, nil, err
}
}
// If new values were not supplied in the upgrade, re-use the existing values.
if err := s.reuseValues(req, currentRelease); err != nil {
return nil, nil, err
}
// finds the non-deleted release with the given name
lastRelease, err := s.env.Releases.Last(req.Name)

@ -282,6 +282,62 @@ func TestUpdateInstalledFailure(t *testing.T) {
}
}
func TestUpdateInstalledFailureUpdateConfig(t *testing.T) {
c := helm.NewContext()
rs := rsFixture()
rel := releaseStub()
rs.env.KubeClient = newInstallFailingKubClient()
rs.Log = t.Logf
instResp, err := rs.InstallRelease(c, &services.InstallReleaseRequest{
Name: rel.Name,
DisableHooks: true,
Chart: &chart.Chart{
Metadata: &chart.Metadata{Name: "hello"},
Templates: []*chart.Template{
{Name: "templates/something", Data: []byte("hello: world")},
},
Values: &chart.Config{
Values: map[string]*chart.Value{"animal": {Value: "goat"}},
},
},
})
if err == nil {
t.Error("Expected failed install")
}
if instResp.Release.Chart.Values.Values["animal"].Value != "goat" {
t.Errorf("expected %s in the chart values got %s", "goat", instResp.Release.Chart.Values.Values["animal"].Value)
}
// check that the first release failed
_, err = rs.env.Releases.Failed(rel.Name)
if err != nil {
t.Fatalf("Failed to get failed: %s", err)
}
okReq := &services.UpdateReleaseRequest{
Name: rel.Name,
Chart: &chart.Chart{
Metadata: &chart.Metadata{Name: "hello"},
Templates: []*chart.Template{
{Name: "templates/hello", Data: []byte("hello: world")},
},
Values: &chart.Config{
Values: map[string]*chart.Value{"animal": {Value: "cow"}},
},
},
}
// try to update a release where the previous version was a failure
resp, err := rs.UpdateRelease(c, okReq)
if err != nil {
t.Fatalf("Failed updated: %s", err)
}
if resp.Release.Chart.Values.Values["animal"].Value != "cow" {
t.Errorf("should have override value in chart, after upgrading a failed release")
}
}
func TestUpdateReleaseNoHooks(t *testing.T) {
c := helm.NewContext()
rs := rsFixture()

Loading…
Cancel
Save