ignore clusterName on create and update
This commit is contained in:
		@@ -71,6 +71,9 @@ func BeforeCreate(strategy RESTCreateStrategy, ctx api.Context, obj runtime.Obje
 | 
				
			|||||||
	api.FillObjectMetaSystemFields(ctx, objectMeta)
 | 
						api.FillObjectMetaSystemFields(ctx, objectMeta)
 | 
				
			||||||
	api.GenerateName(strategy, objectMeta)
 | 
						api.GenerateName(strategy, objectMeta)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// ClusterName is ignored and should not be saved
 | 
				
			||||||
 | 
						objectMeta.ClusterName = ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if errs := strategy.Validate(ctx, obj); len(errs) > 0 {
 | 
						if errs := strategy.Validate(ctx, obj); len(errs) > 0 {
 | 
				
			||||||
		return errors.NewInvalid(kind.GroupKind(), objectMeta.Name, errs)
 | 
							return errors.NewInvalid(kind.GroupKind(), objectMeta.Name, errs)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -159,6 +159,7 @@ func (t *Tester) TestCreate(valid runtime.Object, createFn CreateFunc, getFn Get
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	t.testCreateInvokesValidation(invalid...)
 | 
						t.testCreateInvokesValidation(invalid...)
 | 
				
			||||||
	t.testCreateValidatesNames(copyOrDie(valid))
 | 
						t.testCreateValidatesNames(copyOrDie(valid))
 | 
				
			||||||
 | 
						t.testCreateIgnoreClusterName(copyOrDie(valid))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Test updating an object.
 | 
					// Test updating an object.
 | 
				
			||||||
@@ -174,6 +175,7 @@ func (t *Tester) TestUpdate(valid runtime.Object, createFn CreateFunc, getFn Get
 | 
				
			|||||||
	t.testUpdateRetrievesOldObject(copyOrDie(valid), createFn, getFn)
 | 
						t.testUpdateRetrievesOldObject(copyOrDie(valid), createFn, getFn)
 | 
				
			||||||
	t.testUpdatePropagatesUpdatedObjectError(copyOrDie(valid), createFn, getFn)
 | 
						t.testUpdatePropagatesUpdatedObjectError(copyOrDie(valid), createFn, getFn)
 | 
				
			||||||
	t.testUpdateIgnoreGenerationUpdates(copyOrDie(valid), createFn, getFn)
 | 
						t.testUpdateIgnoreGenerationUpdates(copyOrDie(valid), createFn, getFn)
 | 
				
			||||||
 | 
						t.testUpdateIgnoreClusterName(copyOrDie(valid), createFn, getFn)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Test deleting an object.
 | 
					// Test deleting an object.
 | 
				
			||||||
@@ -430,6 +432,22 @@ func (t *Tester) testCreateResetsUserData(valid runtime.Object) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (t *Tester) testCreateIgnoreClusterName(valid runtime.Object) {
 | 
				
			||||||
 | 
						objectMeta := t.getObjectMetaOrFail(valid)
 | 
				
			||||||
 | 
						objectMeta.Name = t.namer(3)
 | 
				
			||||||
 | 
						objectMeta.ClusterName = "clustername-to-ignore"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						obj, err := t.storage.(rest.Creater).Create(t.TestContext(), copyOrDie(valid))
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							t.Fatalf("Unexpected error: %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						defer t.delete(t.TestContext(), obj)
 | 
				
			||||||
 | 
						createdObjectMeta := t.getObjectMetaOrFail(obj)
 | 
				
			||||||
 | 
						if len(createdObjectMeta.ClusterName) != 0 {
 | 
				
			||||||
 | 
							t.Errorf("Expected empty clusterName on created object, got '%v'", createdObjectMeta.ClusterName)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// =============================================================================
 | 
					// =============================================================================
 | 
				
			||||||
// Update tests.
 | 
					// Update tests.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -691,6 +709,41 @@ func (t *Tester) testUpdateRejectsMismatchedNamespace(obj runtime.Object, create
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (t *Tester) testUpdateIgnoreClusterName(obj runtime.Object, createFn CreateFunc, getFn GetFunc) {
 | 
				
			||||||
 | 
						ctx := t.TestContext()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						foo := copyOrDie(obj)
 | 
				
			||||||
 | 
						name := t.namer(9)
 | 
				
			||||||
 | 
						t.setObjectMeta(foo, name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if err := createFn(ctx, foo); err != nil {
 | 
				
			||||||
 | 
							t.Errorf("unexpected error: %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						storedFoo, err := getFn(ctx, foo)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							t.Errorf("unexpected error: %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						older := copyOrDie(storedFoo)
 | 
				
			||||||
 | 
						olderMeta := t.getObjectMetaOrFail(older)
 | 
				
			||||||
 | 
						olderMeta.ClusterName = "clustername-to-ignore"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_, _, err = t.storage.(rest.Updater).Update(t.TestContext(), olderMeta.Name, rest.DefaultUpdatedObjectInfo(older, api.Scheme))
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							t.Errorf("Unexpected error: %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						updatedFoo, err := getFn(ctx, older)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							t.Errorf("unexpected error: %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if clusterName := t.getObjectMetaOrFail(updatedFoo).ClusterName; len(clusterName) != 0 {
 | 
				
			||||||
 | 
							t.Errorf("Unexpected clusterName update: expected empty, got %v", clusterName)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// =============================================================================
 | 
					// =============================================================================
 | 
				
			||||||
// Deletion tests.
 | 
					// Deletion tests.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -95,6 +95,9 @@ func BeforeUpdate(strategy RESTUpdateStrategy, ctx api.Context, obj, old runtime
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	strategy.PrepareForUpdate(ctx, obj, old)
 | 
						strategy.PrepareForUpdate(ctx, obj, old)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// ClusterName is ignored and should not be saved
 | 
				
			||||||
 | 
						objectMeta.ClusterName = ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Ensure some common fields, like UID, are validated for all resources.
 | 
						// Ensure some common fields, like UID, are validated for all resources.
 | 
				
			||||||
	errs, err := validateCommonFields(obj, old)
 | 
						errs, err := validateCommonFields(obj, old)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user