Update staging/src/k8s.io/client-go/util/csaupgrade/upgrade.go

Co-authored-by: Antoine Pelisse <apelisse@gmail.com>

Kubernetes-commit: 5caffef694b50168f546d7758a26de832302b541
This commit is contained in:
Alex Zielenski 2022-09-02 17:34:07 -07:00 committed by Kubernetes Publisher
parent 675ca93180
commit 703d15eff6

View File

@ -51,46 +51,39 @@ func UpgradeManagedFields(
managedFields = append(managedFields, accessor.GetManagedFields()...) managedFields = append(managedFields, accessor.GetManagedFields()...)
// Locate SSA manager // Locate SSA manager
ssaManagerIndex, ssaManagerExists := findFirstIndex(managedFields, replaceIndex, managerExists := findFirstIndex(managedFields,
func(entry metav1.ManagedFieldsEntry) bool { func(entry metav1.ManagedFieldsEntry) bool {
return entry.Manager == ssaManagerName && return entry.Manager == ssaManagerName &&
entry.Operation == metav1.ManagedFieldsOperationApply && entry.Operation == metav1.ManagedFieldsOperationApply &&
entry.Subresource == "" entry.Subresource == ""
}) })
if ssaManagerExists { if !managerExists {
err = unionManagerIntoIndex(managedFields, ssaManagerIndex, csaManagerName)
if err != nil {
return nil, err
}
} else {
// SSA manager does not exist. Find the most recent matching CSA manager, // SSA manager does not exist. Find the most recent matching CSA manager,
// convert it to an SSA manager. // convert it to an SSA manager.
// //
// (find first index, since managed fields are sorted so that most recent is // (find first index, since managed fields are sorted so that most recent is
// first in the list) // first in the list)
csaManagerIndex, csaManagerExists := findFirstIndex(managedFields, replaceIndex, managerExists = findFirstIndex(managedFields,
func(entry metav1.ManagedFieldsEntry) bool { func(entry metav1.ManagedFieldsEntry) bool {
return entry.Manager == csaManagerName && return entry.Manager == csaManagerName &&
entry.Operation == metav1.ManagedFieldsOperationUpdate && entry.Operation == metav1.ManagedFieldsOperationUpdate &&
entry.Subresource == "" entry.Subresource == ""
}) })
if !csaManagerExists { if !managerExists {
// There are no CSA managers that need to be converted. Nothing to do // There are no CSA managers that need to be converted. Nothing to do
// Return early // Return early
return obj, nil return obj, nil
} }
// Convert CSA manager into SSA manager // Convert CSA manager into SSA manager
managedFields[csaManagerIndex].Operation = metav1.ManagedFieldsOperationApply managedFields[replaceIndex].Operation = metav1.ManagedFieldsOperationApply
managedFields[csaManagerIndex].Manager = ssaManagerName managedFields[replaceIndex].Manager = ssaManagerName
}
err = unionManagerIntoIndex(managedFields, csaManagerIndex, csaManagerName) err = unionManagerIntoIndex(managedFields, replaceIndex, csaManagerName)
if err != nil { if err != nil {
return nil, err return nil, err
}
} }
// Create version of managed fields which has no CSA managers with the given name // Create version of managed fields which has no CSA managers with the given name