refactor: storage secret and configmap keep exactly the same code impletation details in some behavior

close #8106

Signed-off-by: Liu Ming <hit_oak_tree@126.com>
pull/8076/head
Liu Ming 5 years ago
parent 512544b9ab
commit 6908e02af0

@ -68,15 +68,14 @@ func (cfgmaps *ConfigMaps) Get(key string) (*rspb.Release, error) {
if apierrors.IsNotFound(err) { if apierrors.IsNotFound(err) {
return nil, ErrReleaseNotFound return nil, ErrReleaseNotFound
} }
cfgmaps.Log("get: failed to get %q: %s", key, err) cfgmaps.Log("get: failed to get %q: %s", key, err)
return nil, err return nil, errors.Wrapf(err, "get: failed to get %q", key)
} }
// found the configmap, decode the base64 data string // found the configmap, decode the base64 data string
r, err := decodeRelease(obj.Data["release"]) r, err := decodeRelease(obj.Data["release"])
if err != nil { if err != nil {
cfgmaps.Log("get: failed to decode data %q: %s", key, err) cfgmaps.Log("get: failed to decode data %q: %s", key, err)
return nil, err return nil, errors.Wrapf(err, "get: failed to decode data %q", key)
} }
// return the release object // return the release object
return r, nil return r, nil
@ -92,7 +91,7 @@ func (cfgmaps *ConfigMaps) List(filter func(*rspb.Release) bool) ([]*rspb.Releas
list, err := cfgmaps.impl.List(context.Background(), opts) list, err := cfgmaps.impl.List(context.Background(), opts)
if err != nil { if err != nil {
cfgmaps.Log("list: failed to list: %s", err) cfgmaps.Log("list: failed to list: %s", err)
return nil, err return nil, errors.Wrap(err, "list: failed to list")
} }
var results []*rspb.Release var results []*rspb.Release
@ -128,7 +127,7 @@ func (cfgmaps *ConfigMaps) Query(labels map[string]string) ([]*rspb.Release, err
list, err := cfgmaps.impl.List(context.Background(), opts) list, err := cfgmaps.impl.List(context.Background(), opts)
if err != nil { if err != nil {
cfgmaps.Log("query: failed to query with labels: %s", err) cfgmaps.Log("query: failed to query with labels: %s", err)
return nil, err return nil, errors.Wrap(err, "query: failed to query with labels")
} }
if len(list.Items) == 0 { if len(list.Items) == 0 {
@ -160,16 +159,15 @@ func (cfgmaps *ConfigMaps) Create(key string, rls *rspb.Release) error {
obj, err := newConfigMapsObject(key, rls, lbs) obj, err := newConfigMapsObject(key, rls, lbs)
if err != nil { if err != nil {
cfgmaps.Log("create: failed to encode release %q: %s", rls.Name, err) cfgmaps.Log("create: failed to encode release %q: %s", rls.Name, err)
return err return errors.Wrapf(err, "create: failed to encode release %q", rls.Name)
} }
// push the configmap object out into the kubiverse // push the configmap object out into the kubiverse
if _, err := cfgmaps.impl.Create(context.Background(), obj, metav1.CreateOptions{}); err != nil { if _, err := cfgmaps.impl.Create(context.Background(), obj, metav1.CreateOptions{}); err != nil {
if apierrors.IsAlreadyExists(err) { if apierrors.IsAlreadyExists(err) {
return ErrReleaseExists return ErrReleaseExists
} }
cfgmaps.Log("create: failed to create: %s", err) cfgmaps.Log("create: failed to create: %s", err)
return err return errors.Wrap(err, "create: failed to create")
} }
return nil return nil
} }
@ -187,13 +185,13 @@ func (cfgmaps *ConfigMaps) Update(key string, rls *rspb.Release) error {
obj, err := newConfigMapsObject(key, rls, lbs) obj, err := newConfigMapsObject(key, rls, lbs)
if err != nil { if err != nil {
cfgmaps.Log("update: failed to encode release %q: %s", rls.Name, err) cfgmaps.Log("update: failed to encode release %q: %s", rls.Name, err)
return err return errors.Wrapf(err, "update: failed to encode release %q", rls.Name)
} }
// push the configmap object out into the kubiverse // push the configmap object out into the kubiverse
_, err = cfgmaps.impl.Update(context.Background(), obj, metav1.UpdateOptions{}) _, err = cfgmaps.impl.Update(context.Background(), obj, metav1.UpdateOptions{})
if err != nil { if err != nil {
cfgmaps.Log("update: failed to update: %s", err) cfgmaps.Log("update: failed to update: %s", err)
return err return errors.Wrap(err, "update: failed to update")
} }
return nil return nil
} }
@ -205,11 +203,9 @@ func (cfgmaps *ConfigMaps) Delete(key string) (rls *rspb.Release, err error) {
return nil, err return nil, err
} }
// delete the release // delete the release
if err = cfgmaps.impl.Delete(context.Background(), key, metav1.DeleteOptions{}); err != nil { err = cfgmaps.impl.Delete(context.Background(), key, metav1.DeleteOptions{})
return rls, err return rls, err
} }
return rls, nil
}
// newConfigMapsObject constructs a kubernetes ConfigMap object // newConfigMapsObject constructs a kubernetes ConfigMap object
// to store a release. Each configmap data entry is the base64 // to store a release. Each configmap data entry is the base64

@ -68,11 +68,17 @@ func (secrets *Secrets) Get(key string) (*rspb.Release, error) {
if apierrors.IsNotFound(err) { if apierrors.IsNotFound(err) {
return nil, ErrReleaseNotFound return nil, ErrReleaseNotFound
} }
secrets.Log("get: failed to get %q: %s", key, err)
return nil, errors.Wrapf(err, "get: failed to get %q", key) return nil, errors.Wrapf(err, "get: failed to get %q", key)
} }
// found the secret, decode the base64 data string // found the secret, decode the base64 data string
r, err := decodeRelease(string(obj.Data["release"])) r, err := decodeRelease(string(obj.Data["release"]))
return r, errors.Wrapf(err, "get: failed to decode data %q", key) if err != nil {
secrets.Log("get: failed to decode data %q: %s", key, err)
return nil, errors.Wrapf(err, "get: failed to decode data %q", key)
}
// return the release object
return r, nil
} }
// List fetches all releases and returns the list releases such // List fetches all releases and returns the list releases such
@ -84,6 +90,7 @@ func (secrets *Secrets) List(filter func(*rspb.Release) bool) ([]*rspb.Release,
list, err := secrets.impl.List(context.Background(), opts) list, err := secrets.impl.List(context.Background(), opts)
if err != nil { if err != nil {
secrets.Log("list: failed to list: %s", err)
return nil, errors.Wrap(err, "list: failed to list") return nil, errors.Wrap(err, "list: failed to list")
} }
@ -119,6 +126,7 @@ func (secrets *Secrets) Query(labels map[string]string) ([]*rspb.Release, error)
list, err := secrets.impl.List(context.Background(), opts) list, err := secrets.impl.List(context.Background(), opts)
if err != nil { if err != nil {
secrets.Log("query: failed to query with labels: %s", err)
return nil, errors.Wrap(err, "query: failed to query with labels") return nil, errors.Wrap(err, "query: failed to query with labels")
} }
@ -150,6 +158,7 @@ func (secrets *Secrets) Create(key string, rls *rspb.Release) error {
// create a new secret to hold the release // create a new secret to hold the release
obj, err := newSecretsObject(key, rls, lbs) obj, err := newSecretsObject(key, rls, lbs)
if err != nil { if err != nil {
secrets.Log("create: failed to encode release %q: %s", rls.Name, err)
return errors.Wrapf(err, "create: failed to encode release %q", rls.Name) return errors.Wrapf(err, "create: failed to encode release %q", rls.Name)
} }
// push the secret object out into the kubiverse // push the secret object out into the kubiverse
@ -157,7 +166,7 @@ func (secrets *Secrets) Create(key string, rls *rspb.Release) error {
if apierrors.IsAlreadyExists(err) { if apierrors.IsAlreadyExists(err) {
return ErrReleaseExists return ErrReleaseExists
} }
secrets.Log("create: failed to create: %s", err)
return errors.Wrap(err, "create: failed to create") return errors.Wrap(err, "create: failed to create")
} }
return nil return nil
@ -175,12 +184,17 @@ func (secrets *Secrets) Update(key string, rls *rspb.Release) error {
// create a new secret object to hold the release // create a new secret object to hold the release
obj, err := newSecretsObject(key, rls, lbs) obj, err := newSecretsObject(key, rls, lbs)
if err != nil { if err != nil {
secrets.Log("update: failed to encode release %q: %s", rls.Name, err)
return errors.Wrapf(err, "update: failed to encode release %q", rls.Name) return errors.Wrapf(err, "update: failed to encode release %q", rls.Name)
} }
// push the secret object out into the kubiverse // push the secret object out into the kubiverse
_, err = secrets.impl.Update(context.Background(), obj, metav1.UpdateOptions{}) _, err = secrets.impl.Update(context.Background(), obj, metav1.UpdateOptions{})
if err != nil {
secrets.Log("update: failed to update: %s", err)
return errors.Wrap(err, "update: failed to update") return errors.Wrap(err, "update: failed to update")
} }
return nil
}
// Delete deletes the Secret holding the release named by key. // Delete deletes the Secret holding the release named by key.
func (secrets *Secrets) Delete(key string) (rls *rspb.Release, err error) { func (secrets *Secrets) Delete(key string) (rls *rspb.Release, err error) {

Loading…
Cancel
Save