mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-05 18:24:07 +00:00
expose FieldsToSet and SetToFields
This commit is contained in:
parent
f495d7656c
commit
a338fff435
@ -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)
|
// DecodeManagedFields converts ManagedFields from the wire format (api format)
|
||||||
// to the format used by sigs.k8s.io/structured-merge-diff
|
// to the format used by sigs.k8s.io/structured-merge-diff
|
||||||
func DecodeManagedFields(encodedManagedFields []metav1.ManagedFieldsEntry) (Managed, error) {
|
func DecodeManagedFields(encodedManagedFields []metav1.ManagedFieldsEntry) (Managed, error) {
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
package csaupgrade
|
package csaupgrade
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/api/meta"
|
"k8s.io/apimachinery/pkg/api/meta"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"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
|
// Upgrades the Manager information for fields managed with CSA
|
||||||
@ -57,18 +56,18 @@ func UpgradeManagedFields(
|
|||||||
csaManager := managedFields[csaManagerIndex]
|
csaManager := managedFields[csaManagerIndex]
|
||||||
|
|
||||||
// Union the csa manager with the existing SSA manager
|
// Union the csa manager with the existing SSA manager
|
||||||
ssaFieldSet, err := fieldsToSet(*ssaManager.FieldsV1)
|
ssaFieldSet, err := fieldmanager.FieldsToSet(*ssaManager.FieldsV1)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to convert fields to set: %w", err)
|
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 {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to convert fields to set: %w", err)
|
return nil, fmt.Errorf("failed to convert fields to set: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
combinedFieldSet := ssaFieldSet.Union(&csaFieldSet)
|
combinedFieldSet := ssaFieldSet.Union(&csaFieldSet)
|
||||||
combinedFieldSetEncoded, err := setToFields(*combinedFieldSet)
|
combinedFieldSetEncoded, err := fieldmanager.SetToFields(*combinedFieldSet)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to encode field set: %w", err)
|
return nil, fmt.Errorf("failed to encode field set: %w", err)
|
||||||
}
|
}
|
||||||
@ -143,15 +142,3 @@ func filter[T any](
|
|||||||
|
|
||||||
return result
|
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
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user