diff --git a/cmd/tiller/release_server.go b/cmd/tiller/release_server.go index 122b370d0..69413f9e4 100644 --- a/cmd/tiller/release_server.go +++ b/cmd/tiller/release_server.go @@ -198,7 +198,7 @@ func (s *releaseServer) UpdateRelease(c ctx.Context, req *services.UpdateRelease return nil, err } - if err := s.env.Releases.Update(updatedRelease); err != nil { + if err := s.env.Releases.Create(updatedRelease); err != nil { return nil, err } @@ -234,6 +234,11 @@ func (s *releaseServer) performUpdate(originalRelease, updatedRelease *release.R } } + originalRelease.Info.Status.Code = release.Status_SUPERSEDED + if err := env.Releases.Update(originalRelease); err != nil { + return nil, fmt.Errorf("Update of %s failed: %s", originalRelease.Name, err) + } + updatedRelease.Info.Status.Code = release.Status_DEPLOYED return res, nil diff --git a/cmd/tiller/release_server_test.go b/cmd/tiller/release_server_test.go index dba2fc9db..bd1a643ad 100644 --- a/cmd/tiller/release_server_test.go +++ b/cmd/tiller/release_server_test.go @@ -178,7 +178,7 @@ func TestInstallRelease(t *testing.T) { t.Errorf("Expected release namespace 'spaced', got '%s'.", res.Release.Namespace) } - rel, err := rs.env.Releases.Get(res.Release.Name) + rel, err := rs.env.Releases.Get(res.Release.Name, res.Release.Version) if err != nil { t.Errorf("Expected release for %s (%v).", res.Release.Name, rs.env.Releases) } @@ -248,7 +248,7 @@ func TestInstallReleaseDryRun(t *testing.T) { t.Errorf("Should not contain template data for an empty file. %s", res.Release.Manifest) } - if _, err := rs.env.Releases.Get(res.Release.Name); err == nil { + if _, err := rs.env.Releases.Get(res.Release.Name, res.Release.Version); err == nil { t.Errorf("Expected no stored release.") } @@ -317,10 +317,11 @@ func TestUpdateRelease(t *testing.T) { {Name: "hooks", Data: []byte(manifestWithUpgradeHooks)}, }, }, + Version: 1, } res, err := rs.UpdateRelease(c, req) if err != nil { - t.Errorf("Failed updated: %s", err) + t.Fatalf("Failed updated: %s", err) } if res.Release.Name == "" { @@ -335,7 +336,7 @@ func TestUpdateRelease(t *testing.T) { t.Errorf("Expected release namespace '%s', got '%s'.", rel.Namespace, res.Release.Namespace) } - updated, err := rs.env.Releases.Get(res.Release.Name) + updated, err := rs.env.Releases.Get(res.Release.Name, res.Release.Version) if err != nil { t.Errorf("Expected release for %s (%v).", res.Release.Name, rs.env.Releases) } @@ -392,7 +393,7 @@ func TestUpdateReleaseNoHooks(t *testing.T) { res, err := rs.UpdateRelease(c, req) if err != nil { - t.Errorf("Failed updated: %s", err) + t.Fatalf("Failed updated: %s", err) } if hl := res.Release.Hooks[0].LastRun; hl != nil { @@ -412,7 +413,7 @@ func TestUninstallRelease(t *testing.T) { res, err := rs.UninstallRelease(c, req) if err != nil { - t.Errorf("Failed uninstall: %s", err) + t.Fatalf("Failed uninstall: %s", err) } if res.Release.Name != "angry-panda" { @@ -451,7 +452,7 @@ func TestUninstallReleaseNoHooks(t *testing.T) { res, err := rs.UninstallRelease(c, req) if err != nil { - t.Errorf("Failed uninstall: %s", err) + t.Fatalf("Failed uninstall: %s", err) } // The default value for a protobuf timestamp is nil. @@ -470,7 +471,7 @@ func TestGetReleaseContent(t *testing.T) { res, err := rs.GetReleaseContent(c, &services.GetReleaseContentRequest{Name: rel.Name}) if err != nil { - t.Errorf("Error getting release content: %s", err) + t.Fatalf("Error getting release content: %s", err) } if res.Release.Chart.Metadata.Name != rel.Chart.Metadata.Name { @@ -488,7 +489,7 @@ func TestGetReleaseStatus(t *testing.T) { res, err := rs.GetReleaseStatus(c, &services.GetReleaseStatusRequest{Name: rel.Name}) if err != nil { - t.Errorf("Error getting release content: %s", err) + t.Fatalf("Error getting release content: %s", err) } if res.Info.Status.Code != release.Status_DEPLOYED {