Cleanup workload deletionTimestamp before write to work.

Signed-off-by: RainbowMango <renhongcai@huawei.com>
This commit is contained in:
RainbowMango 2021-03-26 11:12:07 +08:00 committed by Hongcai Ren
parent a2ca222aa4
commit 538462e74d
1 changed files with 23 additions and 3 deletions

View File

@ -68,14 +68,34 @@ func (a *MutatingAdmission) InjectDecoder(d *admission.Decoder) error {
return nil
}
// RemoveIrrelevantField will delete irrelevant field from workload. such as uid, timestamp, status
// removeIrrelevantField used to remove fields that generated by kube-apiserver and no need(or can't) propagate to
// member clusters.
func removeIrrelevantField(workload *unstructured.Unstructured) {
// populated by the kubernetes.
unstructured.RemoveNestedField(workload.Object, "metadata", "creationTimestamp")
// populated by the kubernetes.
// The kubernetes will set this fields in case of graceful deletion. This field is read-only and can't propagate to
// member clusters.
unstructured.RemoveNestedField(workload.Object, "metadata", "deletionTimestamp")
// populated by the kubernetes.
unstructured.RemoveNestedField(workload.Object, "metadata", "generation")
unstructured.RemoveNestedField(workload.Object, "metadata", "resourceVersion")
unstructured.RemoveNestedField(workload.Object, "metadata", "selfLink")
// This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field.
// Remove this field to keep 'Work' clean and tidy.
unstructured.RemoveNestedField(workload.Object, "metadata", "managedFields")
// populated by the kubernetes.
unstructured.RemoveNestedField(workload.Object, "metadata", "resourceVersion")
// populated by the kubernetes and has been deprecated by kubernetes.
unstructured.RemoveNestedField(workload.Object, "metadata", "selfLink")
// populated by the kubernetes.
unstructured.RemoveNestedField(workload.Object, "metadata", "uid")
unstructured.RemoveNestedField(workload.Object, "status")
unstructured.RemoveNestedField(workload.Object, "spec", "clusterIP")
}