chore(storage-naming): update release server to update old release status to SUPERSEDED on upgrade. Update tests to fail early if error to avoid nil

pull/1092/head
fibonacci1729 9 years ago
parent e3626da41d
commit 8ffba4c0c9

@ -198,7 +198,7 @@ func (s *releaseServer) UpdateRelease(c ctx.Context, req *services.UpdateRelease
return nil, err return nil, err
} }
if err := s.env.Releases.Update(updatedRelease); err != nil { if err := s.env.Releases.Create(updatedRelease); err != nil {
return nil, err 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 updatedRelease.Info.Status.Code = release.Status_DEPLOYED
return res, nil return res, nil

@ -178,7 +178,7 @@ func TestInstallRelease(t *testing.T) {
t.Errorf("Expected release namespace 'spaced', got '%s'.", res.Release.Namespace) 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 { if err != nil {
t.Errorf("Expected release for %s (%v).", res.Release.Name, rs.env.Releases) 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) 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.") t.Errorf("Expected no stored release.")
} }
@ -317,10 +317,11 @@ func TestUpdateRelease(t *testing.T) {
{Name: "hooks", Data: []byte(manifestWithUpgradeHooks)}, {Name: "hooks", Data: []byte(manifestWithUpgradeHooks)},
}, },
}, },
Version: 1,
} }
res, err := rs.UpdateRelease(c, req) res, err := rs.UpdateRelease(c, req)
if err != nil { if err != nil {
t.Errorf("Failed updated: %s", err) t.Fatalf("Failed updated: %s", err)
} }
if res.Release.Name == "" { 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) 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 { if err != nil {
t.Errorf("Expected release for %s (%v).", res.Release.Name, rs.env.Releases) 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) res, err := rs.UpdateRelease(c, req)
if err != nil { if err != nil {
t.Errorf("Failed updated: %s", err) t.Fatalf("Failed updated: %s", err)
} }
if hl := res.Release.Hooks[0].LastRun; hl != nil { if hl := res.Release.Hooks[0].LastRun; hl != nil {
@ -412,7 +413,7 @@ func TestUninstallRelease(t *testing.T) {
res, err := rs.UninstallRelease(c, req) res, err := rs.UninstallRelease(c, req)
if err != nil { if err != nil {
t.Errorf("Failed uninstall: %s", err) t.Fatalf("Failed uninstall: %s", err)
} }
if res.Release.Name != "angry-panda" { if res.Release.Name != "angry-panda" {
@ -451,7 +452,7 @@ func TestUninstallReleaseNoHooks(t *testing.T) {
res, err := rs.UninstallRelease(c, req) res, err := rs.UninstallRelease(c, req)
if err != nil { if err != nil {
t.Errorf("Failed uninstall: %s", err) t.Fatalf("Failed uninstall: %s", err)
} }
// The default value for a protobuf timestamp is nil. // 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}) res, err := rs.GetReleaseContent(c, &services.GetReleaseContentRequest{Name: rel.Name})
if err != nil { 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 { 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}) res, err := rs.GetReleaseStatus(c, &services.GetReleaseStatusRequest{Name: rel.Name})
if err != nil { 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 { if res.Info.Status.Code != release.Status_DEPLOYED {

Loading…
Cancel
Save