diff --git a/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager/fieldmanager.go b/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager/fieldmanager.go index dde120d1502..7c9199782ad 100644 --- a/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager/fieldmanager.go +++ b/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager/fieldmanager.go @@ -123,6 +123,15 @@ func newDefaultFieldManager(f Manager, typeConverter TypeConverter, objectConver ) } +func FieldsToSet(f metav1.FieldsV1) (s fieldpath.Set, err error) { + return internal.FieldsToSet(f) +} + +// SetToFields creates a trie of fields from an input set of paths +func SetToFields(s fieldpath.Set) (f metav1.FieldsV1, err error) { + return internal.SetToFields(s) +} + // DecodeManagedFields converts ManagedFields from the wire format (api format) // to the format used by sigs.k8s.io/structured-merge-diff func DecodeManagedFields(encodedManagedFields []metav1.ManagedFieldsEntry) (Managed, error) { diff --git a/staging/src/k8s.io/client-go/util/csaupgrade/upgrade.go b/staging/src/k8s.io/client-go/util/csaupgrade/upgrade.go index e082f30e98e..33330358f1b 100644 --- a/staging/src/k8s.io/client-go/util/csaupgrade/upgrade.go +++ b/staging/src/k8s.io/client-go/util/csaupgrade/upgrade.go @@ -1,13 +1,12 @@ package csaupgrade import ( - "bytes" "fmt" "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" - "sigs.k8s.io/structured-merge-diff/v4/fieldpath" + "k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager" ) // Upgrades the Manager information for fields managed with CSA @@ -57,18 +56,18 @@ func UpgradeManagedFields( csaManager := managedFields[csaManagerIndex] // Union the csa manager with the existing SSA manager - ssaFieldSet, err := fieldsToSet(*ssaManager.FieldsV1) + ssaFieldSet, err := fieldmanager.FieldsToSet(*ssaManager.FieldsV1) if err != nil { return nil, fmt.Errorf("failed to convert fields to set: %w", err) } - csaFieldSet, err := fieldsToSet(*csaManager.FieldsV1) + csaFieldSet, err := fieldmanager.FieldsToSet(*csaManager.FieldsV1) if err != nil { return nil, fmt.Errorf("failed to convert fields to set: %w", err) } combinedFieldSet := ssaFieldSet.Union(&csaFieldSet) - combinedFieldSetEncoded, err := setToFields(*combinedFieldSet) + combinedFieldSetEncoded, err := fieldmanager.SetToFields(*combinedFieldSet) if err != nil { return nil, fmt.Errorf("failed to encode field set: %w", err) } @@ -143,15 +142,3 @@ func filter[T any]( return result } - -// FieldsToSet creates a set paths from an input trie of fields -func fieldsToSet(f metav1.FieldsV1) (s fieldpath.Set, err error) { - err = s.FromJSON(bytes.NewReader(f.Raw)) - return s, err -} - -// SetToFields creates a trie of fields from an input set of paths -func setToFields(s fieldpath.Set) (f metav1.FieldsV1, err error) { - f.Raw, err = s.ToJSON() - return f, err -}