From 74deac940b6e2ad17014d2904524f6797d3f54df Mon Sep 17 00:00:00 2001 From: fibonacci1729 Date: Mon, 8 Aug 2016 09:34:19 -0600 Subject: [PATCH] update tiller environment & release server to use new storage --- cmd/tiller/environment/environment.go | 56 ++------------------------- cmd/tiller/release_server.go | 16 ++++---- cmd/tiller/release_server_test.go | 4 +- 3 files changed, 13 insertions(+), 63 deletions(-) diff --git a/cmd/tiller/environment/environment.go b/cmd/tiller/environment/environment.go index 9a966ca8a..72e57d19a 100644 --- a/cmd/tiller/environment/environment.go +++ b/cmd/tiller/environment/environment.go @@ -29,8 +29,8 @@ import ( "k8s.io/helm/pkg/engine" "k8s.io/helm/pkg/kube" "k8s.io/helm/pkg/proto/hapi/chart" - "k8s.io/helm/pkg/proto/hapi/release" "k8s.io/helm/pkg/storage" + "k8s.io/helm/pkg/storage/driver" ) // GoTplEngine is the name of the Go template engine, as registered in the EngineYard. @@ -85,56 +85,6 @@ type Engine interface { Render(*chart.Chart, chartutil.Values) (map[string]string, error) } -// ReleaseStorage represents a storage engine for a Release. -// -// Release storage must be concurrency safe. -type ReleaseStorage interface { - - // Create stores a release in the storage. - // - // If a release with the same name exists, this returns an error. - // - // It may return other errors in cases where it cannot write to storage. - Create(*release.Release) error - // Read takes a name and returns a release that has that name. - // - // It will only return releases that are not deleted and not superseded. - // - // It will return an error if no relevant release can be found, or if storage - // is not properly functioning. - Read(name string) (*release.Release, error) - - // Update looks for a release with the same name and updates it with the - // present release contents. - // - // For immutable storage backends, this may result in a new release record - // being created, and the previous release being marked as superseded. - // - // It will return an error if a previous release is not found. It may also - // return an error if the storage backend encounters an error. - Update(*release.Release) error - - // Delete marks a Release as deleted. - // - // It returns the deleted record. If the record is not found or if the - // underlying storage encounters an error, this will return an error. - Delete(name string) (*release.Release, error) - - // List lists all active (non-deleted, non-superseded) releases. - // - // To get deleted or superseded releases, use Query. - List() ([]*release.Release, error) - - // Query takes a map of labels and returns any releases that match. - // - // Query will search all releases, including deleted and superseded ones. - // The provided map will be used to filter results. - Query(map[string]string) ([]*release.Release, error) - - // History takes a release name and returns the history of releases. - History(name string) ([]*release.Release, error) -} - // KubeClient represents a client capable of communicating with the Kubernetes API. // // A KubeClient must be concurrency safe. @@ -196,7 +146,7 @@ type Environment struct { // EngineYard provides access to the known template engines. EngineYard EngineYard // Releases stores records of releases. - Releases ReleaseStorage + Releases *storage.Storage // KubeClient is a Kubernetes API client. KubeClient KubeClient } @@ -211,7 +161,7 @@ func New() *Environment { } return &Environment{ EngineYard: ey, - Releases: storage.NewMemory(), + Releases: storage.Init(driver.NewMemory()), KubeClient: kube.New(nil), //&PrintingKubeClient{Out: os.Stdout}, } } diff --git a/cmd/tiller/release_server.go b/cmd/tiller/release_server.go index 42494cff6..e49209080 100644 --- a/cmd/tiller/release_server.go +++ b/cmd/tiller/release_server.go @@ -34,7 +34,7 @@ import ( "k8s.io/helm/pkg/proto/hapi/chart" "k8s.io/helm/pkg/proto/hapi/release" "k8s.io/helm/pkg/proto/hapi/services" - "k8s.io/helm/pkg/storage" + "k8s.io/helm/pkg/storage/driver" "k8s.io/helm/pkg/timeconv" ) @@ -62,7 +62,7 @@ type releaseServer struct { } func (s *releaseServer) ListReleases(req *services.ListReleasesRequest, stream services.ReleaseService_ListReleasesServer) error { - rels, err := s.env.Releases.List() + rels, err := s.env.Releases.ListReleases() if err != nil { return err } @@ -152,7 +152,7 @@ func (s *releaseServer) GetReleaseStatus(c ctx.Context, req *services.GetRelease if req.Name == "" { return nil, errMissingRelease } - rel, err := s.env.Releases.Read(req.Name) + rel, err := s.env.Releases.Get(req.Name) if err != nil { return nil, err } @@ -166,7 +166,7 @@ func (s *releaseServer) GetReleaseContent(c ctx.Context, req *services.GetReleas if req.Name == "" { return nil, errMissingRelease } - rel, err := s.env.Releases.Read(req.Name) + rel, err := s.env.Releases.Get(req.Name) return &services.GetReleaseContentResponse{Release: rel}, err } @@ -192,7 +192,7 @@ func (s *releaseServer) prepareUpdate(req *services.UpdateReleaseRequest) (*rele } // finds the non-deleted release with the given name - rel, err := s.env.Releases.Read(req.Name) + rel, err := s.env.Releases.Get(req.Name) if err != nil { return nil, err } @@ -238,7 +238,7 @@ func (s *releaseServer) uniqName(start string, reuse bool) (string, error) { // is granted. If reuse is true and a deleted release with that name exists, // we re-grant it. Otherwise, an error is returned. if start != "" { - if rel, err := s.env.Releases.Read(start); err == storage.ErrNotFound { + if rel, err := s.env.Releases.Get(start); err == driver.ErrReleaseNotFound { return start, nil } else if reuse && rel.Info.Status.Code == release.Status_DELETED { // Allowe re-use of names if the previous release is marked deleted. @@ -253,7 +253,7 @@ func (s *releaseServer) uniqName(start string, reuse bool) (string, error) { for i := 0; i < maxTries; i++ { namer := moniker.New() name := namer.NameSep("-") - if _, err := s.env.Releases.Read(name); err == storage.ErrNotFound { + if _, err := s.env.Releases.Get(name); err == driver.ErrReleaseNotFound { return name, nil } log.Printf("info: Name %q is taken. Searching again.", name) @@ -446,7 +446,7 @@ func (s *releaseServer) UninstallRelease(c ctx.Context, req *services.UninstallR return nil, errMissingRelease } - rel, err := s.env.Releases.Read(req.Name) + rel, err := s.env.Releases.Get(req.Name) if err != nil { log.Printf("uninstall: Release not loaded: %s", req.Name) return nil, err diff --git a/cmd/tiller/release_server_test.go b/cmd/tiller/release_server_test.go index 18c36bd78..d60856698 100644 --- a/cmd/tiller/release_server_test.go +++ b/cmd/tiller/release_server_test.go @@ -165,7 +165,7 @@ func TestInstallRelease(t *testing.T) { t.Errorf("Expected release namespace 'spaced', got '%s'.", res.Release.Namespace) } - rel, err := rs.env.Releases.Read(res.Release.Name) + rel, err := rs.env.Releases.Get(res.Release.Name) if err != nil { t.Errorf("Expected release for %s (%v).", res.Release.Name, rs.env.Releases) } @@ -235,7 +235,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.Read(res.Release.Name); err == nil { + if _, err := rs.env.Releases.Get(res.Release.Name); err == nil { t.Errorf("Expected no stored release.") }