Move storage errors to seperate package

Signed-off-by: Fabian Ruff <fabian@progra.de>
pull/4499/head
Fabian Ruff 7 years ago
parent 7e82c7fb47
commit eca7fa571b

@ -26,7 +26,7 @@ import (
"k8s.io/helm/pkg/chartutil"
"k8s.io/helm/pkg/helm"
"k8s.io/helm/pkg/renderutil"
"k8s.io/helm/pkg/storage/driver"
storageerrors "k8s.io/helm/pkg/storage/errors"
)
const upgradeDesc = `
@ -207,7 +207,7 @@ func (u *upgradeCmd) run() error {
}
}
if err != nil && strings.Contains(err.Error(), driver.ErrReleaseNotFound(u.release).Error()) {
if err != nil && strings.Contains(err.Error(), storageerrors.ErrReleaseNotFound(u.release).Error()) {
fmt.Fprintf(u.out, "Release %q does not exist. Installing it now.\n", u.release)
ic := &installCmd{
chartPath: chartPath,

@ -19,7 +19,6 @@ package helm // import "k8s.io/helm/pkg/helm"
import (
"bytes"
"errors"
"fmt"
"math/rand"
"strings"
"sync"
@ -32,11 +31,9 @@ import (
rls "k8s.io/helm/pkg/proto/hapi/services"
"k8s.io/helm/pkg/proto/hapi/version"
"k8s.io/helm/pkg/renderutil"
storageerrors "k8s.io/helm/pkg/storage/errors"
)
//copied from pkg/storage/driver/driver.go to avoid pullling in k8s.io/kubernetes
var errReleaseNotFound = func(release string) error { return fmt.Errorf("release: %q not found", release) }
// FakeClient implements Interface
type FakeClient struct {
Rels []*release.Release
@ -141,7 +138,7 @@ func (c *FakeClient) DeleteRelease(rlsName string, opts ...DeleteOption) (*rls.U
}
}
return nil, errReleaseNotFound(rlsName)
return nil, storageerrors.ErrReleaseNotFound(rlsName)
}
// GetVersion returns a fake version
@ -215,7 +212,7 @@ func (c *FakeClient) ReleaseStatus(rlsName string, opts ...StatusOption) (*rls.G
}, nil
}
}
return nil, errReleaseNotFound(rlsName)
return nil, storageerrors.ErrReleaseNotFound(rlsName)
}
// ReleaseContent returns the configuration for the matching release name in the fake release client.
@ -227,7 +224,7 @@ func (c *FakeClient) ReleaseContent(rlsName string, opts ...ContentOption) (resp
}, nil
}
}
return resp, errReleaseNotFound(rlsName)
return resp, storageerrors.ErrReleaseNotFound(rlsName)
}
// ReleaseHistory returns a release's revision history.

@ -30,6 +30,7 @@ import (
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
rspb "k8s.io/helm/pkg/proto/hapi/release"
storageerrors "k8s.io/helm/pkg/storage/errors"
)
var _ Driver = (*ConfigMaps)(nil)
@ -65,7 +66,7 @@ func (cfgmaps *ConfigMaps) Get(key string) (*rspb.Release, error) {
obj, err := cfgmaps.impl.Get(key, metav1.GetOptions{})
if err != nil {
if apierrors.IsNotFound(err) {
return nil, ErrReleaseNotFound(key)
return nil, storageerrors.ErrReleaseNotFound(key)
}
cfgmaps.Log("get: failed to get %q: %s", key, err)
@ -131,7 +132,7 @@ func (cfgmaps *ConfigMaps) Query(labels map[string]string) ([]*rspb.Release, err
}
if len(list.Items) == 0 {
return nil, ErrReleaseNotFound(labels["NAME"])
return nil, storageerrors.ErrReleaseNotFound(labels["NAME"])
}
var results []*rspb.Release
@ -164,7 +165,7 @@ func (cfgmaps *ConfigMaps) Create(key string, rls *rspb.Release) error {
// push the configmap object out into the kubiverse
if _, err := cfgmaps.impl.Create(obj); err != nil {
if apierrors.IsAlreadyExists(err) {
return ErrReleaseExists(key)
return storageerrors.ErrReleaseExists(key)
}
cfgmaps.Log("create: failed to create: %s", err)
@ -202,7 +203,7 @@ func (cfgmaps *ConfigMaps) Delete(key string) (rls *rspb.Release, err error) {
// fetch the release to check existence
if rls, err = cfgmaps.Get(key); err != nil {
if apierrors.IsNotFound(err) {
return nil, ErrReleaseExists(rls.Name)
return nil, storageerrors.ErrReleaseExists(rls.Name)
}
cfgmaps.Log("delete: failed to get release %q: %s", key, err)

@ -17,20 +17,9 @@ limitations under the License.
package driver // import "k8s.io/helm/pkg/storage/driver"
import (
"fmt"
rspb "k8s.io/helm/pkg/proto/hapi/release"
)
var (
// ErrReleaseNotFound indicates that a release is not found.
ErrReleaseNotFound = func(release string) error { return fmt.Errorf("release: %q not found", release) }
// ErrReleaseExists indicates that a release already exists.
ErrReleaseExists = func(release string) error { return fmt.Errorf("release: %q already exists", release) }
// ErrInvalidKey indicates that a release key could not be parsed.
ErrInvalidKey = func(release string) error { return fmt.Errorf("release: %q invalid key", release) }
)
// Creator is the interface that wraps the Create method.
//
// Create stores the release or returns ErrReleaseExists

@ -22,6 +22,7 @@ import (
"sync"
rspb "k8s.io/helm/pkg/proto/hapi/release"
storageerrors "k8s.io/helm/pkg/storage/errors"
)
var _ Driver = (*Memory)(nil)
@ -53,16 +54,16 @@ func (mem *Memory) Get(key string) (*rspb.Release, error) {
case 2:
name, ver := elems[0], elems[1]
if _, err := strconv.Atoi(ver); err != nil {
return nil, ErrInvalidKey(key)
return nil, storageerrors.ErrInvalidKey(key)
}
if recs, ok := mem.cache[name]; ok {
if r := recs.Get(key); r != nil {
return r.rls, nil
}
}
return nil, ErrReleaseNotFound(key)
return nil, storageerrors.ErrReleaseNotFound(key)
default:
return nil, ErrInvalidKey(key)
return nil, storageerrors.ErrInvalidKey(key)
}
}
@ -131,7 +132,7 @@ func (mem *Memory) Update(key string, rls *rspb.Release) error {
rs.Replace(key, newRecord(key, rls))
return nil
}
return ErrReleaseNotFound(rls.Name)
return storageerrors.ErrReleaseNotFound(rls.Name)
}
// Delete deletes a release or returns ErrReleaseNotFound.
@ -141,12 +142,12 @@ func (mem *Memory) Delete(key string) (*rspb.Release, error) {
elems := strings.Split(key, ".v")
if len(elems) != 2 {
return nil, ErrInvalidKey(key)
return nil, storageerrors.ErrInvalidKey(key)
}
name, ver := elems[0], elems[1]
if _, err := strconv.Atoi(ver); err != nil {
return nil, ErrInvalidKey(key)
return nil, storageerrors.ErrInvalidKey(key)
}
if recs, ok := mem.cache[name]; ok {
if r := recs.Remove(key); r != nil {
@ -155,7 +156,7 @@ func (mem *Memory) Delete(key string) (*rspb.Release, error) {
return r.rls, nil
}
}
return nil, ErrReleaseNotFound(key)
return nil, storageerrors.ErrReleaseNotFound(key)
}
// wlock locks mem for writing

@ -23,6 +23,7 @@ import (
"github.com/golang/protobuf/proto"
rspb "k8s.io/helm/pkg/proto/hapi/release"
storageerrors "k8s.io/helm/pkg/storage/errors"
)
// records holds a list of in-memory release records
@ -38,7 +39,7 @@ func (rs *records) Add(r *record) error {
}
if rs.Exists(r.key) {
return ErrReleaseExists(r.key)
return storageerrors.ErrReleaseExists(r.key)
}
*rs = append(*rs, r)

@ -30,6 +30,7 @@ import (
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
rspb "k8s.io/helm/pkg/proto/hapi/release"
storageerrors "k8s.io/helm/pkg/storage/errors"
)
var _ Driver = (*Secrets)(nil)
@ -65,7 +66,7 @@ func (secrets *Secrets) Get(key string) (*rspb.Release, error) {
obj, err := secrets.impl.Get(key, metav1.GetOptions{})
if err != nil {
if apierrors.IsNotFound(err) {
return nil, ErrReleaseNotFound(key)
return nil, storageerrors.ErrReleaseNotFound(key)
}
secrets.Log("get: failed to get %q: %s", key, err)
@ -131,7 +132,7 @@ func (secrets *Secrets) Query(labels map[string]string) ([]*rspb.Release, error)
}
if len(list.Items) == 0 {
return nil, ErrReleaseNotFound(labels["NAME"])
return nil, storageerrors.ErrReleaseNotFound(labels["NAME"])
}
var results []*rspb.Release
@ -164,7 +165,7 @@ func (secrets *Secrets) Create(key string, rls *rspb.Release) error {
// push the secret object out into the kubiverse
if _, err := secrets.impl.Create(obj); err != nil {
if apierrors.IsAlreadyExists(err) {
return ErrReleaseExists(rls.Name)
return storageerrors.ErrReleaseExists(rls.Name)
}
secrets.Log("create: failed to create: %s", err)
@ -202,7 +203,7 @@ func (secrets *Secrets) Delete(key string) (rls *rspb.Release, err error) {
// fetch the release to check existence
if rls, err = secrets.Get(key); err != nil {
if apierrors.IsNotFound(err) {
return nil, ErrReleaseExists(rls.Name)
return nil, storageerrors.ErrReleaseExists(rls.Name)
}
secrets.Log("delete: failed to get release %q: %s", key, err)

@ -0,0 +1,27 @@
/*
Copyright The Helm Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package errors // import "k8s.io/helm/pkg/storage/errors"
import "fmt"
var (
// ErrReleaseNotFound indicates that a release is not found.
ErrReleaseNotFound = func(release string) error { return fmt.Errorf("release: %q not found", release) }
// ErrReleaseExists indicates that a release already exists.
ErrReleaseExists = func(release string) error { return fmt.Errorf("release: %q already exists", release) }
// ErrInvalidKey indicates that a release key could not be parsed.
ErrInvalidKey = func(release string) error { return fmt.Errorf("release: %q invalid key", release) }
)
Loading…
Cancel
Save