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) {
return nil, ErrReleaseNotFound
}
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
r, err := decodeRelease(obj.Data["release"])
if err != nil {
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 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)
if err != nil {
cfgmaps.Log("list: failed to list: %s", err)
return nil, err
return nil, errors.Wrap(err, "list: failed to list")
}
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)
if err != nil {
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 {
@ -160,16 +159,15 @@ func (cfgmaps *ConfigMaps) Create(key string, rls *rspb.Release) error {
obj, err := newConfigMapsObject(key, rls, lbs)
if err != nil {
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
if _, err := cfgmaps.impl.Create(context.Background(), obj, metav1.CreateOptions{}); err != nil {
if apierrors.IsAlreadyExists(err) {
return ErrReleaseExists
}
cfgmaps.Log("create: failed to create: %s", err)
return err
return errors.Wrap(err, "create: failed to create")
}
return nil
}
@ -187,13 +185,13 @@ func (cfgmaps *ConfigMaps) Update(key string, rls *rspb.Release) error {
obj, err := newConfigMapsObject(key, rls, lbs)
if err != nil {
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
_, err = cfgmaps.impl.Update(context.Background(), obj, metav1.UpdateOptions{})
if err != nil {
cfgmaps.Log("update: failed to update: %s", err)
return err
return errors.Wrap(err, "update: failed to update")
}
return nil
}
@ -205,10 +203,8 @@ func (cfgmaps *ConfigMaps) Delete(key string) (rls *rspb.Release, err error) {
return nil, err
}
// delete the release
if err = cfgmaps.impl.Delete(context.Background(), key, metav1.DeleteOptions{}); err != nil {
return rls, err
}
return rls, nil
err = cfgmaps.impl.Delete(context.Background(), key, metav1.DeleteOptions{})
return rls, err
}
// newConfigMapsObject constructs a kubernetes ConfigMap object

@ -68,11 +68,17 @@ func (secrets *Secrets) Get(key string) (*rspb.Release, error) {
if apierrors.IsNotFound(err) {
return nil, ErrReleaseNotFound
}
secrets.Log("get: failed to get %q: %s", key, err)
return nil, errors.Wrapf(err, "get: failed to get %q", key)
}
// found the secret, decode the base64 data string
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
@ -84,6 +90,7 @@ func (secrets *Secrets) List(filter func(*rspb.Release) bool) ([]*rspb.Release,
list, err := secrets.impl.List(context.Background(), opts)
if err != nil {
secrets.Log("list: failed to list: %s", err)
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)
if err != nil {
secrets.Log("query: failed to query with labels: %s", err)
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
obj, err := newSecretsObject(key, rls, lbs)
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)
}
// 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) {
return ErrReleaseExists
}
secrets.Log("create: failed to create: %s", err)
return errors.Wrap(err, "create: failed to create")
}
return nil
@ -175,11 +184,16 @@ func (secrets *Secrets) Update(key string, rls *rspb.Release) error {
// create a new secret object to hold the release
obj, err := newSecretsObject(key, rls, lbs)
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)
}
// push the secret object out into the kubiverse
_, err = secrets.impl.Update(context.Background(), obj, metav1.UpdateOptions{})
return errors.Wrap(err, "update: failed to update")
if err != nil {
secrets.Log("update: failed to update: %s", err)
return errors.Wrap(err, "update: failed to update")
}
return nil
}
// Delete deletes the Secret holding the release named by key.

Loading…
Cancel
Save