Skip to content

Commit dfe1703

Browse files
committed
Do not reset managedFields in status update strategy
1 parent 94cb60e commit dfe1703

File tree

5 files changed

+19
-1
lines changed

5 files changed

+19
-1
lines changed

pkg/registry/flowcontrol/flowschema/strategy.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,12 @@ var StatusStrategy = flowSchemaStatusStrategy{Strategy}
9494
func (flowSchemaStatusStrategy) PrepareForUpdate(ctx context.Context, obj, old runtime.Object) {
9595
newFlowSchema := obj.(*flowcontrol.FlowSchema)
9696
oldFlowSchema := old.(*flowcontrol.FlowSchema)
97+
98+
// managedFields must be preserved since it's been modified to
99+
// track changed fields in the status update.
100+
managedFields := newFlowSchema.ManagedFields
97101
newFlowSchema.ObjectMeta = oldFlowSchema.ObjectMeta
102+
newFlowSchema.ManagedFields = managedFields
98103
newFlowSchema.Spec = oldFlowSchema.Spec
99104
}
100105

pkg/registry/flowcontrol/prioritylevelconfiguration/strategy.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,12 @@ var StatusStrategy = priorityLevelConfigurationStatusStrategy{Strategy}
9494
func (priorityLevelConfigurationStatusStrategy) PrepareForUpdate(ctx context.Context, obj, old runtime.Object) {
9595
newPriorityLevelConfiguration := obj.(*flowcontrol.PriorityLevelConfiguration)
9696
oldPriorityLevelConfiguration := old.(*flowcontrol.PriorityLevelConfiguration)
97+
98+
// managedFields must be preserved since it's been modified to
99+
// track changed fields in the status update.
100+
managedFields := newPriorityLevelConfiguration.ManagedFields
97101
newPriorityLevelConfiguration.ObjectMeta = oldPriorityLevelConfiguration.ObjectMeta
102+
newPriorityLevelConfiguration.ManagedFields = managedFields
98103
newPriorityLevelConfiguration.Spec = oldPriorityLevelConfiguration.Spec
99104
}
100105

staging/src/k8s.io/apiextensions-apiserver/pkg/registry/customresource/status_strategy.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,18 @@ func (a statusStrategy) PrepareForUpdate(ctx context.Context, obj, old runtime.O
3838
newCustomResource := newCustomResourceObject.UnstructuredContent()
3939
status, ok := newCustomResource["status"]
4040

41+
// managedFields must be preserved since it's been modified to
42+
// track changed fields in the status update.
43+
managedFields := newCustomResourceObject.GetManagedFields()
44+
4145
// copy old object into new object
4246
oldCustomResourceObject := old.(*unstructured.Unstructured)
4347
// overridding the resourceVersion in metadata is safe here, we have already checked that
4448
// new object and old object have the same resourceVersion.
4549
*newCustomResourceObject = *oldCustomResourceObject.DeepCopy()
4650

4751
// set status
52+
newCustomResourceObject.SetManagedFields(managedFields)
4853
newCustomResource = newCustomResourceObject.UnstructuredContent()
4954
if ok {
5055
newCustomResource["status"] = status

staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/helpers.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,9 @@ func ResetObjectMetaForStatus(meta, existingMeta Object) {
252252
meta.SetAnnotations(existingMeta.GetAnnotations())
253253
meta.SetFinalizers(existingMeta.GetFinalizers())
254254
meta.SetOwnerReferences(existingMeta.GetOwnerReferences())
255-
meta.SetManagedFields(existingMeta.GetManagedFields())
255+
// managedFields must be preserved since it's been modified to
256+
// track changed fields in the status update.
257+
//meta.SetManagedFields(existingMeta.GetManagedFields())
256258
}
257259

258260
// MarshalJSON implements json.Marshaler

staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/helpers_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ func TestResetObjectMetaForStatus(t *testing.T) {
189189
existingMeta.SetCreationTimestamp(Time{})
190190
existingMeta.SetDeletionTimestamp(nil)
191191
existingMeta.SetDeletionGracePeriodSeconds(nil)
192+
existingMeta.SetManagedFields(nil)
192193

193194
if !reflect.DeepEqual(meta, existingMeta) {
194195
t.Error(diff.ObjectDiff(meta, existingMeta))

0 commit comments

Comments
 (0)