fix(storage): use new HAPI for storage

pull/613/head
Matt Butcher 10 years ago
parent 50f4349512
commit dcfd1a4284

@ -2,8 +2,8 @@ package environment
import ( import (
"github.com/deis/tiller/pkg/engine" "github.com/deis/tiller/pkg/engine"
"github.com/deis/tiller/pkg/hapi"
"github.com/deis/tiller/pkg/proto/hapi/chart" "github.com/deis/tiller/pkg/proto/hapi/chart"
"github.com/deis/tiller/pkg/proto/hapi/release"
"github.com/deis/tiller/pkg/storage" "github.com/deis/tiller/pkg/storage"
) )
@ -65,14 +65,14 @@ type ReleaseStorage interface {
// If a release with the same name exists, this returns an error. // 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. // It may return other errors in cases where it cannot write to storage.
Create(*hapi.Release) error Create(*release.Release) error
// Read takes a name and returns a release that has that name. // 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 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 // It will return an error if no relevant release can be found, or if storage
// is not properly functioning. // is not properly functioning.
Read(name string) (*hapi.Release, error) Read(name string) (*release.Release, error)
// Update looks for a release with the same name and updates it with the // Update looks for a release with the same name and updates it with the
// present release contents. // present release contents.
@ -82,24 +82,24 @@ type ReleaseStorage interface {
// //
// It will return an error if a previous release is not found. It may also // 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. // return an error if the storage backend encounters an error.
Update(*hapi.Release) error Update(*release.Release) error
// Delete marks a Release as deleted. // Delete marks a Release as deleted.
// //
// It returns the deleted record. If the record is not found or if the // It returns the deleted record. If the record is not found or if the
// underlying storage encounters an error, this will return an error. // underlying storage encounters an error, this will return an error.
Delete(name string) (*hapi.Release, error) Delete(name string) (*release.Release, error)
// List lists all active (non-deleted, non-superseded) releases. // List lists all active (non-deleted, non-superseded) releases.
// //
// To get deleted or superseded releases, use Query. // To get deleted or superseded releases, use Query.
List() ([]*hapi.Release, error) List() ([]*release.Release, error)
// Query takes a map of labels and returns any releases that match. // Query takes a map of labels and returns any releases that match.
// //
// Query will search all releases, including deleted and superseded ones. // Query will search all releases, including deleted and superseded ones.
// The provided map will be used to filter results. // The provided map will be used to filter results.
Query(map[string]string) ([]*hapi.Release, error) Query(map[string]string) ([]*release.Release, error)
} }
// KubeClient represents a client capable of communicating with the Kubernetes API. // KubeClient represents a client capable of communicating with the Kubernetes API.

@ -3,8 +3,8 @@ package environment
import ( import (
"testing" "testing"
"github.com/deis/tiller/pkg/hapi"
"github.com/deis/tiller/pkg/proto/hapi/chart" "github.com/deis/tiller/pkg/proto/hapi/chart"
"github.com/deis/tiller/pkg/proto/hapi/release"
) )
type mockEngine struct { type mockEngine struct {
@ -16,33 +16,33 @@ func (e *mockEngine) Render(chrt *chart.Chart, v *chart.Config) (map[string]stri
} }
type mockReleaseStorage struct { type mockReleaseStorage struct {
rel *hapi.Release rel *release.Release
} }
func (r *mockReleaseStorage) Create(v *hapi.Release) error { func (r *mockReleaseStorage) Create(v *release.Release) error {
r.rel = v r.rel = v
return nil return nil
} }
func (r *mockReleaseStorage) Read(k string) (*hapi.Release, error) { func (r *mockReleaseStorage) Read(k string) (*release.Release, error) {
return r.rel, nil return r.rel, nil
} }
func (r *mockReleaseStorage) Update(v *hapi.Release) error { func (r *mockReleaseStorage) Update(v *release.Release) error {
r.rel = v r.rel = v
return nil return nil
} }
func (r *mockReleaseStorage) Delete(k string) (*hapi.Release, error) { func (r *mockReleaseStorage) Delete(k string) (*release.Release, error) {
return r.rel, nil return r.rel, nil
} }
func (r *mockReleaseStorage) List() ([]*hapi.Release, error) { func (r *mockReleaseStorage) List() ([]*release.Release, error) {
return []*hapi.Release{}, nil return []*release.Release{}, nil
} }
func (r *mockReleaseStorage) Query(labels map[string]string) ([]*hapi.Release, error) { func (r *mockReleaseStorage) Query(labels map[string]string) ([]*release.Release, error) {
return []*hapi.Release{}, nil return []*release.Release{}, nil
} }
type mockKubeClient struct { type mockKubeClient struct {
@ -76,7 +76,7 @@ func TestReleaseStorage(t *testing.T) {
env := New() env := New()
env.Releases = rs env.Releases = rs
release := &hapi.Release{Name: "mariner"} release := &release.Release{Name: "mariner"}
if err := env.Releases.Create(release); err != nil { if err := env.Releases.Create(release); err != nil {
t.Fatalf("failed to store release: %s", err) t.Fatalf("failed to store release: %s", err)

@ -69,6 +69,10 @@ func (s *releaseServer) InstallRelease(c ctx.Context, req *services.InstallRelea
}, },
} }
if err := s.env.Releases.Create(r); err != nil {
return nil, err
}
return &services.InstallReleaseResponse{Release: r}, errNotImplemented return &services.InstallReleaseResponse{Release: r}, errNotImplemented
} }

@ -3,17 +3,17 @@ package storage
import ( import (
"errors" "errors"
"github.com/deis/tiller/pkg/hapi" "github.com/deis/tiller/pkg/proto/hapi/release"
) )
// Memory is an in-memory ReleaseStorage implementation. // Memory is an in-memory ReleaseStorage implementation.
type Memory struct { type Memory struct {
releases map[string]*hapi.Release releases map[string]*release.Release
} }
func NewMemory() *Memory { func NewMemory() *Memory {
return &Memory{ return &Memory{
releases: map[string]*hapi.Release{}, releases: map[string]*release.Release{},
} }
} }
@ -22,7 +22,7 @@ var ErrNotFound = errors.New("release not found")
// Read returns the named Release. // Read returns the named Release.
// //
// If the release is not found, an ErrNotFound error is returned. // If the release is not found, an ErrNotFound error is returned.
func (m *Memory) Read(k string) (*hapi.Release, error) { func (m *Memory) Read(k string) (*release.Release, error) {
v, ok := m.releases[k] v, ok := m.releases[k]
if !ok { if !ok {
return v, ErrNotFound return v, ErrNotFound
@ -31,7 +31,7 @@ func (m *Memory) Read(k string) (*hapi.Release, error) {
} }
// Create sets a release. // Create sets a release.
func (m *Memory) Create(rel *hapi.Release) error { func (m *Memory) Create(rel *release.Release) error {
m.releases[rel.Name] = rel m.releases[rel.Name] = rel
return nil return nil
} }
@ -39,7 +39,7 @@ func (m *Memory) Create(rel *hapi.Release) error {
var ErrNoRelease = errors.New("no release found") var ErrNoRelease = errors.New("no release found")
// Update sets a release. // Update sets a release.
func (m *Memory) Update(rel *hapi.Release) error { func (m *Memory) Update(rel *release.Release) error {
if _, ok := m.releases[rel.Name]; !ok { if _, ok := m.releases[rel.Name]; !ok {
return ErrNoRelease return ErrNoRelease
} }
@ -50,7 +50,7 @@ func (m *Memory) Update(rel *hapi.Release) error {
return nil return nil
} }
func (m *Memory) Delete(name string) (*hapi.Release, error) { func (m *Memory) Delete(name string) (*release.Release, error) {
rel, ok := m.releases[name] rel, ok := m.releases[name]
if !ok { if !ok {
return nil, ErrNoRelease return nil, ErrNoRelease
@ -60,8 +60,8 @@ func (m *Memory) Delete(name string) (*hapi.Release, error) {
} }
// List returns all releases // List returns all releases
func (m *Memory) List() ([]*hapi.Release, error) { func (m *Memory) List() ([]*release.Release, error) {
buf := make([]*hapi.Release, len(m.releases)) buf := make([]*release.Release, len(m.releases))
i := 0 i := 0
for _, v := range m.releases { for _, v := range m.releases {
buf[i] = v buf[i] = v
@ -69,6 +69,6 @@ func (m *Memory) List() ([]*hapi.Release, error) {
} }
return buf, nil return buf, nil
} }
func (m *Memory) Query(labels map[string]string) ([]*hapi.Release, error) { func (m *Memory) Query(labels map[string]string) ([]*release.Release, error) {
return []*hapi.Release{}, errors.New("Cannot implement until hapi.Release is defined.") return []*release.Release{}, errors.New("Cannot implement until release.Release is defined.")
} }

@ -3,12 +3,12 @@ package storage
import ( import (
"testing" "testing"
"github.com/deis/tiller/pkg/hapi" "github.com/deis/tiller/pkg/proto/hapi/release"
) )
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
k := "test-1" k := "test-1"
r := &hapi.Release{Name: k} r := &release.Release{Name: k}
ms := NewMemory() ms := NewMemory()
if err := ms.Create(r); err != nil { if err := ms.Create(r); err != nil {
@ -22,7 +22,7 @@ func TestCreate(t *testing.T) {
func TestRead(t *testing.T) { func TestRead(t *testing.T) {
k := "test-1" k := "test-1"
r := &hapi.Release{Name: k} r := &release.Release{Name: k}
ms := NewMemory() ms := NewMemory()
ms.Create(r) ms.Create(r)
@ -36,7 +36,7 @@ func TestRead(t *testing.T) {
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {
k := "test-1" k := "test-1"
r := &hapi.Release{Name: k} r := &release.Release{Name: k}
ms := NewMemory() ms := NewMemory()
if err := ms.Create(r); err != nil { if err := ms.Create(r); err != nil {
@ -56,7 +56,7 @@ func TestList(t *testing.T) {
rels := []string{"a", "b", "c"} rels := []string{"a", "b", "c"}
for _, k := range rels { for _, k := range rels {
ms.Create(&hapi.Release{Name: k}) ms.Create(&release.Release{Name: k})
} }
l, err := ms.List() l, err := ms.List()

Loading…
Cancel
Save