mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-01 07:47:56 +00:00
registry: make rollback rest speak only api errors
This commit is contained in:
parent
85fe0f1aad
commit
eed38ca1d1
@ -19,6 +19,7 @@ go_library(
|
||||
"//pkg/api/errors:go_default_library",
|
||||
"//pkg/api/errors/storage:go_default_library",
|
||||
"//pkg/api/rest:go_default_library",
|
||||
"//pkg/api/unversioned:go_default_library",
|
||||
"//pkg/apis/extensions:go_default_library",
|
||||
"//pkg/apis/extensions/validation:go_default_library",
|
||||
"//pkg/registry/cachesize:go_default_library",
|
||||
|
@ -18,11 +18,13 @@ package etcd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/api/errors"
|
||||
storeerr "k8s.io/kubernetes/pkg/api/errors/storage"
|
||||
"k8s.io/kubernetes/pkg/api/rest"
|
||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||
extvalidation "k8s.io/kubernetes/pkg/apis/extensions/validation"
|
||||
"k8s.io/kubernetes/pkg/registry/cachesize"
|
||||
@ -142,10 +144,10 @@ func (r *RollbackREST) New() runtime.Object {
|
||||
|
||||
var _ = rest.Creater(&RollbackREST{})
|
||||
|
||||
func (r *RollbackREST) Create(ctx api.Context, obj runtime.Object) (out runtime.Object, err error) {
|
||||
func (r *RollbackREST) Create(ctx api.Context, obj runtime.Object) (runtime.Object, error) {
|
||||
rollback, ok := obj.(*extensions.DeploymentRollback)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("expected input object type to be DeploymentRollback, but %T", obj)
|
||||
return nil, errors.NewBadRequest(fmt.Sprintf("not a DeploymentRollback: %#v", obj))
|
||||
}
|
||||
|
||||
if errs := extvalidation.ValidateDeploymentRollback(rollback); len(errs) != 0 {
|
||||
@ -153,26 +155,34 @@ func (r *RollbackREST) Create(ctx api.Context, obj runtime.Object) (out runtime.
|
||||
}
|
||||
|
||||
// Update the Deployment with information in DeploymentRollback to trigger rollback
|
||||
err = r.rollbackDeployment(ctx, rollback.Name, &rollback.RollbackTo, rollback.UpdatedAnnotations)
|
||||
return
|
||||
err := r.rollbackDeployment(ctx, rollback.Name, &rollback.RollbackTo, rollback.UpdatedAnnotations)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &unversioned.Status{
|
||||
Message: fmt.Sprintf("rollback request for deployment %q succeeded", rollback.Name),
|
||||
Code: http.StatusOK,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (r *RollbackREST) rollbackDeployment(ctx api.Context, deploymentID string, config *extensions.RollbackConfig, annotations map[string]string) (err error) {
|
||||
if _, err = r.setDeploymentRollback(ctx, deploymentID, config, annotations); err != nil {
|
||||
func (r *RollbackREST) rollbackDeployment(ctx api.Context, deploymentID string, config *extensions.RollbackConfig, annotations map[string]string) error {
|
||||
if _, err := r.setDeploymentRollback(ctx, deploymentID, config, annotations); err != nil {
|
||||
err = storeerr.InterpretGetError(err, extensions.Resource("deployments"), deploymentID)
|
||||
err = storeerr.InterpretUpdateError(err, extensions.Resource("deployments"), deploymentID)
|
||||
if _, ok := err.(*errors.StatusError); !ok {
|
||||
err = errors.NewConflict(extensions.Resource("deployments/rollback"), deploymentID, err)
|
||||
err = errors.NewInternalError(err)
|
||||
}
|
||||
return err
|
||||
}
|
||||
return
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *RollbackREST) setDeploymentRollback(ctx api.Context, deploymentID string, config *extensions.RollbackConfig, annotations map[string]string) (finalDeployment *extensions.Deployment, err error) {
|
||||
func (r *RollbackREST) setDeploymentRollback(ctx api.Context, deploymentID string, config *extensions.RollbackConfig, annotations map[string]string) (*extensions.Deployment, error) {
|
||||
dKey, err := r.store.KeyFunc(ctx, deploymentID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var finalDeployment *extensions.Deployment
|
||||
err = r.store.Storage.GuaranteedUpdate(ctx, dKey, &extensions.Deployment{}, false, nil, storage.SimpleUpdate(func(obj runtime.Object) (runtime.Object, error) {
|
||||
d, ok := obj.(*extensions.Deployment)
|
||||
if !ok {
|
||||
|
Loading…
Reference in New Issue
Block a user