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