update tiller environment & release server to use new storage
This commit is contained in:
parent
0e26f20268
commit
74deac940b
|
@ -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},
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.")
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue