mirror of https://github.com/k3s-io/k3s
Simplify the resource_encoding_config.go, since we don't need per group override at all
parent
a76c266693
commit
4ea07084dd
|
@ -34,37 +34,27 @@ type ResourceEncodingConfig interface {
|
||||||
}
|
}
|
||||||
|
|
||||||
type DefaultResourceEncodingConfig struct {
|
type DefaultResourceEncodingConfig struct {
|
||||||
groups map[string]*GroupResourceEncodingConfig
|
// resources records the overriding encoding configs for individual resources.
|
||||||
scheme *runtime.Scheme
|
resources map[schema.GroupResource]*OverridingResourceEncoding
|
||||||
|
scheme *runtime.Scheme
|
||||||
}
|
}
|
||||||
|
|
||||||
type GroupResourceEncodingConfig struct {
|
type OverridingResourceEncoding struct {
|
||||||
ExternalResourceEncodings map[string]schema.GroupVersion
|
ExternalResourceEncoding schema.GroupVersion
|
||||||
InternalResourceEncodings map[string]schema.GroupVersion
|
InternalResourceEncoding schema.GroupVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ ResourceEncodingConfig = &DefaultResourceEncodingConfig{}
|
var _ ResourceEncodingConfig = &DefaultResourceEncodingConfig{}
|
||||||
|
|
||||||
func NewDefaultResourceEncodingConfig(scheme *runtime.Scheme) *DefaultResourceEncodingConfig {
|
func NewDefaultResourceEncodingConfig(scheme *runtime.Scheme) *DefaultResourceEncodingConfig {
|
||||||
return &DefaultResourceEncodingConfig{groups: map[string]*GroupResourceEncodingConfig{}, scheme: scheme}
|
return &DefaultResourceEncodingConfig{resources: map[schema.GroupResource]*OverridingResourceEncoding{}, scheme: scheme}
|
||||||
}
|
|
||||||
|
|
||||||
func newGroupResourceEncodingConfig() *GroupResourceEncodingConfig {
|
|
||||||
return &GroupResourceEncodingConfig{
|
|
||||||
ExternalResourceEncodings: map[string]schema.GroupVersion{},
|
|
||||||
InternalResourceEncodings: map[string]schema.GroupVersion{},
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *DefaultResourceEncodingConfig) SetResourceEncoding(resourceBeingStored schema.GroupResource, externalEncodingVersion, internalVersion schema.GroupVersion) {
|
func (o *DefaultResourceEncodingConfig) SetResourceEncoding(resourceBeingStored schema.GroupResource, externalEncodingVersion, internalVersion schema.GroupVersion) {
|
||||||
group := resourceBeingStored.Group
|
o.resources[resourceBeingStored] = &OverridingResourceEncoding{
|
||||||
_, groupExists := o.groups[group]
|
ExternalResourceEncoding: externalEncodingVersion,
|
||||||
if !groupExists {
|
InternalResourceEncoding: internalVersion,
|
||||||
o.groups[group] = newGroupResourceEncodingConfig()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
o.groups[group].ExternalResourceEncodings[resourceBeingStored.Resource] = externalEncodingVersion
|
|
||||||
o.groups[group].InternalResourceEncodings[resourceBeingStored.Resource] = internalVersion
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *DefaultResourceEncodingConfig) StorageEncodingFor(resource schema.GroupResource) (schema.GroupVersion, error) {
|
func (o *DefaultResourceEncodingConfig) StorageEncodingFor(resource schema.GroupResource) (schema.GroupVersion, error) {
|
||||||
|
@ -72,20 +62,13 @@ func (o *DefaultResourceEncodingConfig) StorageEncodingFor(resource schema.Group
|
||||||
return schema.GroupVersion{}, fmt.Errorf("group %q is not registered in scheme", resource.Group)
|
return schema.GroupVersion{}, fmt.Errorf("group %q is not registered in scheme", resource.Group)
|
||||||
}
|
}
|
||||||
|
|
||||||
groupEncoding, groupExists := o.groups[resource.Group]
|
resourceOverride, resourceExists := o.resources[resource]
|
||||||
|
if resourceExists {
|
||||||
if !groupExists {
|
return resourceOverride.ExternalResourceEncoding, nil
|
||||||
// return the most preferred external version for the group
|
|
||||||
return o.scheme.PrioritizedVersionsForGroup(resource.Group)[0], nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
resourceOverride, resourceExists := groupEncoding.ExternalResourceEncodings[resource.Resource]
|
// return the most preferred external version for the group
|
||||||
if !resourceExists {
|
return o.scheme.PrioritizedVersionsForGroup(resource.Group)[0], nil
|
||||||
// return the most preferred external version for the group
|
|
||||||
return o.scheme.PrioritizedVersionsForGroup(resource.Group)[0], nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return resourceOverride, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *DefaultResourceEncodingConfig) InMemoryEncodingFor(resource schema.GroupResource) (schema.GroupVersion, error) {
|
func (o *DefaultResourceEncodingConfig) InMemoryEncodingFor(resource schema.GroupResource) (schema.GroupVersion, error) {
|
||||||
|
@ -93,15 +76,9 @@ func (o *DefaultResourceEncodingConfig) InMemoryEncodingFor(resource schema.Grou
|
||||||
return schema.GroupVersion{}, fmt.Errorf("group %q is not registered in scheme", resource.Group)
|
return schema.GroupVersion{}, fmt.Errorf("group %q is not registered in scheme", resource.Group)
|
||||||
}
|
}
|
||||||
|
|
||||||
groupEncoding, groupExists := o.groups[resource.Group]
|
resourceOverride, resourceExists := o.resources[resource]
|
||||||
if !groupExists {
|
if resourceExists {
|
||||||
return schema.GroupVersion{Group: resource.Group, Version: runtime.APIVersionInternal}, nil
|
return resourceOverride.InternalResourceEncoding, nil
|
||||||
}
|
}
|
||||||
|
return schema.GroupVersion{Group: resource.Group, Version: runtime.APIVersionInternal}, nil
|
||||||
resourceOverride, resourceExists := groupEncoding.InternalResourceEncodings[resource.Resource]
|
|
||||||
if !resourceExists {
|
|
||||||
return schema.GroupVersion{Group: resource.Group, Version: runtime.APIVersionInternal}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return resourceOverride, nil
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue