mirror of
https://github.com/kubernetes/client-go.git
synced 2025-07-23 11:23:42 +00:00
expose FieldsToSet and SetToFields
Kubernetes-commit: a338fff435c35a4da2556a8f4c4ab059c98e909c
This commit is contained in:
parent
aa892ab1ac
commit
049ba69f2f
@ -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