Skip to content

Commit cc3252d

Browse files
committed
Fix deploymentrollback to be named creator, populate object name in admission
1 parent dced88e commit cc3252d

File tree

2 files changed

+12
-9
lines changed

2 files changed

+12
-9
lines changed

pkg/registry/apps/deployment/storage/storage.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -158,24 +158,27 @@ func (r *RollbackREST) New() runtime.Object {
158158
return &apps.DeploymentRollback{}
159159
}
160160

161-
var _ = rest.Creater(&RollbackREST{})
161+
var _ = rest.NamedCreater(&RollbackREST{})
162162

163-
func (r *RollbackREST) Create(ctx context.Context, obj runtime.Object, createValidation rest.ValidateObjectFunc, options *metav1.CreateOptions) (runtime.Object, error) {
163+
func (r *RollbackREST) Create(ctx context.Context, name string, obj runtime.Object, createValidation rest.ValidateObjectFunc, options *metav1.CreateOptions) (runtime.Object, error) {
164164
rollback, ok := obj.(*apps.DeploymentRollback)
165165
if !ok {
166166
return nil, errors.NewBadRequest(fmt.Sprintf("not a DeploymentRollback: %#v", obj))
167167
}
168168

169+
if errs := appsvalidation.ValidateDeploymentRollback(rollback); len(errs) != 0 {
170+
return nil, errors.NewInvalid(apps.Kind("DeploymentRollback"), rollback.Name, errs)
171+
}
172+
if name != rollback.Name {
173+
return nil, errors.NewBadRequest("name in URL does not match name in DeploymentRollback object")
174+
}
175+
169176
if createValidation != nil {
170177
if err := createValidation(obj.DeepCopyObject()); err != nil {
171178
return nil, err
172179
}
173180
}
174181

175-
if errs := appsvalidation.ValidateDeploymentRollback(rollback); len(errs) != 0 {
176-
return nil, errors.NewInvalid(apps.Kind("DeploymentRollback"), rollback.Name, errs)
177-
}
178-
179182
// Update the Deployment with information in DeploymentRollback to trigger rollback
180183
err := r.rollbackDeployment(ctx, rollback.Name, &rollback.RollbackTo, rollback.UpdatedAnnotations, dryrun.IsDryRun(options.DryRun))
181184
if err != nil {

pkg/registry/apps/deployment/storage/storage_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ func TestEtcdCreateDeploymentRollback(t *testing.T) {
351351
if _, err := storage.Deployment.Create(ctx, validNewDeployment(), rest.ValidateAllObjectFunc, &metav1.CreateOptions{}); err != nil {
352352
t.Fatalf("%s: unexpected error: %v", k, err)
353353
}
354-
rollbackRespStatus, err := rollbackStorage.Create(ctx, &test.rollback, rest.ValidateAllObjectFunc, &metav1.CreateOptions{})
354+
rollbackRespStatus, err := rollbackStorage.Create(ctx, test.rollback.Name, &test.rollback, rest.ValidateAllObjectFunc, &metav1.CreateOptions{})
355355
if !test.errOK(err) {
356356
t.Errorf("%s: unexpected error: %v", k, err)
357357
} else if err == nil {
@@ -392,7 +392,7 @@ func TestCreateDeploymentRollbackValidation(t *testing.T) {
392392

393393
validationError := fmt.Errorf("admission deny")
394394
alwaysDenyValidationFunc := func(obj runtime.Object) error { return validationError }
395-
_, err := rollbackStorage.Create(ctx, &rollback, alwaysDenyValidationFunc, &metav1.CreateOptions{})
395+
_, err := rollbackStorage.Create(ctx, rollback.Name, &rollback, alwaysDenyValidationFunc, &metav1.CreateOptions{})
396396

397397
if err == nil || validationError != err {
398398
t.Errorf("expected: %v, got: %v", validationError, err)
@@ -411,7 +411,7 @@ func TestEtcdCreateDeploymentRollbackNoDeployment(t *testing.T) {
411411
rollbackStorage := storage.Rollback
412412
ctx := genericapirequest.WithNamespace(genericapirequest.NewContext(), namespace)
413413

414-
_, err := rollbackStorage.Create(ctx, &apps.DeploymentRollback{
414+
_, err := rollbackStorage.Create(ctx, name, &apps.DeploymentRollback{
415415
Name: name,
416416
UpdatedAnnotations: map[string]string{},
417417
RollbackTo: apps.RollbackConfig{Revision: 1},

0 commit comments

Comments
 (0)