mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-07-18 04:54:54 +00:00
FieldManager: use hub version everywhere
This commit is contained in:
@@ -36,12 +36,13 @@ type FieldManager struct {
|
||||
objectConverter runtime.ObjectConvertor
|
||||
objectDefaulter runtime.ObjectDefaulter
|
||||
groupVersion schema.GroupVersion
|
||||
hubVersion schema.GroupVersion
|
||||
updater merge.Updater
|
||||
}
|
||||
|
||||
// NewFieldManager creates a new FieldManager that merges apply requests
|
||||
// and update managed fields for other types of requests.
|
||||
func NewFieldManager(models openapiproto.Models, objectConverter runtime.ObjectConvertor, objectDefaulter runtime.ObjectDefaulter, gv schema.GroupVersion) (*FieldManager, error) {
|
||||
func NewFieldManager(models openapiproto.Models, objectConverter runtime.ObjectConvertor, objectDefaulter runtime.ObjectDefaulter, gv schema.GroupVersion, hub schema.GroupVersion) (*FieldManager, error) {
|
||||
typeConverter, err := internal.NewTypeConverter(models)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -51,8 +52,9 @@ func NewFieldManager(models openapiproto.Models, objectConverter runtime.ObjectC
|
||||
objectConverter: objectConverter,
|
||||
objectDefaulter: objectDefaulter,
|
||||
groupVersion: gv,
|
||||
hubVersion: hub,
|
||||
updater: merge.Updater{
|
||||
Converter: internal.NewVersionConverter(typeConverter, objectConverter),
|
||||
Converter: internal.NewVersionConverter(typeConverter, objectConverter, hub),
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
@@ -166,5 +168,5 @@ func (f *FieldManager) toVersioned(obj runtime.Object) (runtime.Object, error) {
|
||||
}
|
||||
|
||||
func (f *FieldManager) toUnversioned(obj runtime.Object) (runtime.Object, error) {
|
||||
return f.objectConverter.ConvertToVersion(obj, schema.GroupVersion{Group: f.groupVersion.Group, Version: runtime.APIVersionInternal})
|
||||
return f.objectConverter.ConvertToVersion(obj, f.hubVersion)
|
||||
}
|
||||
|
||||
@@ -31,15 +31,17 @@ import (
|
||||
type versionConverter struct {
|
||||
typeConverter TypeConverter
|
||||
objectConvertor runtime.ObjectConvertor
|
||||
hubVersion schema.GroupVersion
|
||||
}
|
||||
|
||||
var _ merge.Converter = &versionConverter{}
|
||||
|
||||
// NewVersionConverter builds a VersionConverter from a TypeConverter and an ObjectConvertor.
|
||||
func NewVersionConverter(t TypeConverter, o runtime.ObjectConvertor) merge.Converter {
|
||||
func NewVersionConverter(t TypeConverter, o runtime.ObjectConvertor, h schema.GroupVersion) merge.Converter {
|
||||
return &versionConverter{
|
||||
typeConverter: t,
|
||||
objectConvertor: o,
|
||||
hubVersion: h,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,14 +60,10 @@ func (v *versionConverter) Convert(object typed.TypedValue, version fieldpath.AP
|
||||
}
|
||||
|
||||
// Convert to internal
|
||||
internalVersion := schema.GroupVersion{
|
||||
Group: objectToConvert.GetObjectKind().GroupVersionKind().Group,
|
||||
Version: runtime.APIVersionInternal,
|
||||
}
|
||||
internalObject, err := v.objectConvertor.ConvertToVersion(objectToConvert, internalVersion)
|
||||
internalObject, err := v.objectConvertor.ConvertToVersion(objectToConvert, v.hubVersion)
|
||||
if err != nil {
|
||||
return object, fmt.Errorf("failed to convert object (%v to %v): %v",
|
||||
objectToConvert.GetObjectKind().GroupVersionKind(), internalVersion, err)
|
||||
objectToConvert.GetObjectKind().GroupVersionKind(), v.hubVersion, err)
|
||||
}
|
||||
|
||||
// Convert the object into the target version
|
||||
|
||||
@@ -25,7 +25,6 @@ import (
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager/internal"
|
||||
|
||||
"k8s.io/kube-openapi/pkg/util/proto"
|
||||
"sigs.k8s.io/structured-merge-diff/fieldpath"
|
||||
)
|
||||
@@ -48,7 +47,7 @@ func TestVersionConverter(t *testing.T) {
|
||||
gvkForVersion("v1beta1"): objForGroupVersion("apps/v1beta1"),
|
||||
gvkForVersion("v1"): objForGroupVersion("apps/v1"),
|
||||
}
|
||||
vc := internal.NewVersionConverter(tc, oc)
|
||||
vc := internal.NewVersionConverter(tc, oc, schema.GroupVersion{Group: "apps", Version: runtime.APIVersionInternal})
|
||||
|
||||
input, err := tc.ObjectToTyped(objForGroupVersion("apps/v1beta1"))
|
||||
if err != nil {
|
||||
|
||||
@@ -521,6 +521,7 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
|
||||
a.group.UnsafeConvertor,
|
||||
a.group.Defaulter,
|
||||
fqKindToRegister.GroupVersion(),
|
||||
reqScope.HubGroupVersion,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to create field manager: %v", err)
|
||||
|
||||
Reference in New Issue
Block a user