Commit 873a8af4 authored by Jack Greenfield's avatar Jack Greenfield

Merge pull request #439 from jackgr/manager

First round of refactoring for Manager
parents 5a058775 18068bdc
......@@ -112,7 +112,7 @@ func TestGetChart(t *testing.T) {
t.Fatal(err)
}
if reflect.DeepEqual(wantFile, haveFile) {
if !reflect.DeepEqual(wantFile, haveFile) {
t.Fatalf("retrieved invalid chart\nwant:%#v\nhave:\n%#v\n", wantFile, haveFile)
}
}
......
......@@ -42,13 +42,13 @@ func NewInmemRepoService() IRepoService {
}
// List returns the list of all known chart repositories
func (rs *inmemRepoService) List() ([]IRepo, error) {
func (rs *inmemRepoService) List() ([]string, error) {
rs.RLock()
defer rs.RUnlock()
ret := []IRepo{}
ret := []string{}
for _, r := range rs.repositories {
ret = append(ret, r)
ret = append(ret, r.GetName())
}
return ret, nil
......
......@@ -32,7 +32,11 @@ func TestService(t *testing.T) {
t.Fatalf("unexpected repo count; want: %d, have %d.", 1, len(repos))
}
tr := repos[0]
tr, err := rs.Get(repos[0])
if err != nil {
t.Fatalf("cannot get repo named %s: %s", repos[0], err)
}
if err := validateRepo(tr, GCSPublicRepoName, GCSPublicRepoURL, "", GCSRepoFormat, GCSRepoType); err != nil {
t.Fatal(err)
}
......
......@@ -33,7 +33,7 @@ import (
type IRepoProvider interface {
GetRepoByURL(URL string) (IChartRepo, error)
GetRepoByName(repoName string) (IChartRepo, error)
GetChartByReference(reference string) (*chart.Chart, error)
GetChartByReference(reference string) (*chart.Chart, IChartRepo, error)
}
type repoProvider struct {
......@@ -157,25 +157,30 @@ func (rp *repoProvider) findRepoByURL(URL string) IChartRepo {
// GetChartByReference maps the supplied chart reference into a fully qualified
// URL, uses the URL to find the repository it references, queries the repository
// for the chart by URL, and returns the result.
func (rp *repoProvider) GetChartByReference(reference string) (*chart.Chart, error) {
// for the chart by URL, and returns the chart and the repository that backs it.
func (rp *repoProvider) GetChartByReference(reference string) (*chart.Chart, IChartRepo, error) {
l, err := ParseGCSChartReference(reference)
if err != nil {
return nil, err
return nil, nil, err
}
URL, err := l.Long(true)
if err != nil {
return nil, fmt.Errorf("invalid reference %s: %s", reference, err)
return nil, nil, fmt.Errorf("invalid reference %s: %s", reference, err)
}
r, err := rp.GetRepoByURL(URL)
if err != nil {
return nil, err
return nil, nil, err
}
name := fmt.Sprintf("%s-%s.tgz", l.Name, l.Version)
return r.GetChart(name)
c, err := r.GetChart(name)
if err != nil {
return nil, nil, err
}
return c, r, nil
}
// GCSRepoProvider is a factory for GCS IRepo instances.
......
......@@ -99,14 +99,14 @@ func TestGetChartByReferenceWithValidReferences(t *testing.T) {
for _, vcr := range ValidChartReferences {
t.Logf("getting chart by reference: %s", vcr)
tc, err := rp.GetChartByReference(vcr)
tc, _, err := rp.GetChartByReference(vcr)
if err != nil {
t.Error(err)
continue
}
haveFile := tc.Chartfile()
if reflect.DeepEqual(wantFile, haveFile) {
if !reflect.DeepEqual(wantFile, haveFile) {
t.Fatalf("retrieved invalid chart\nwant:%#v\nhave:\n%#v\n", wantFile, haveFile)
}
}
......@@ -130,7 +130,7 @@ func getTestRepoProvider(t *testing.T) IRepoProvider {
func TestGetChartByReferenceWithInvalidReferences(t *testing.T) {
rp := NewRepoProvider(nil, nil, nil)
for _, icr := range InvalidChartReferences {
_, err := rp.GetChartByReference(icr)
_, _, err := rp.GetChartByReference(icr)
if err == nil {
t.Fatalf("found chart using invalid reference: %s", icr)
}
......
......@@ -118,7 +118,7 @@ type IStorageRepo interface {
// repository based operations, such as search and chart reference resolution.
type IRepoService interface {
// List returns the list of all known chart repositories
List() ([]IRepo, error)
List() ([]string, error)
// Create adds a known repository to the list
Create(repository IRepo) error
// Get returns the repository with the given name
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment