expose FieldsToSet and SetToFields

This commit is contained in:
Alexander Zielenski 2022-08-24 10:03:16 -07:00
parent f495d7656c
commit a338fff435
No known key found for this signature in database
GPG Key ID: 754BC11B447F7843
2 changed files with 13 additions and 17 deletions

View File

@ -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) {

View File

@ -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
}