mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-07-23 19:16:25 +00:00
fixed the CRD statusResetFields init issue
This commit is contained in:
@@ -1039,30 +1039,6 @@ func (r *crdHandler) getOrCreateServingInfoFor(uid types.UID, name string) (*crd
|
||||
|
||||
scaleScopes[v.Name] = &scaleScope
|
||||
|
||||
// override status subresource values
|
||||
// shallow copy
|
||||
statusScope := *requestScopes[v.Name]
|
||||
statusScope.Subresource = "status"
|
||||
statusScope.Namer = handlers.ContextBasedNaming{
|
||||
Namer: meta.NewAccessor(),
|
||||
ClusterScoped: clusterScoped,
|
||||
}
|
||||
|
||||
if subresources != nil && subresources.Status != nil {
|
||||
resetFields := storages[v.Name].Status.GetResetFields()
|
||||
statusScope, err = scopeWithFieldManager(
|
||||
typeConverter,
|
||||
statusScope,
|
||||
resetFields,
|
||||
"status",
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
statusScopes[v.Name] = &statusScope
|
||||
|
||||
if v.Deprecated {
|
||||
deprecated[v.Name] = true
|
||||
if v.DeprecationWarning != nil {
|
||||
@@ -1073,6 +1049,44 @@ func (r *crdHandler) getOrCreateServingInfoFor(uid types.UID, name string) (*crd
|
||||
}
|
||||
}
|
||||
|
||||
// override status subresource values
|
||||
// shallow copy
|
||||
// resetField write all version information
|
||||
for _, v := range crd.Spec.Versions {
|
||||
clusterScoped := crd.Spec.Scope == apiextensionsv1.ClusterScoped
|
||||
statusScope := *requestScopes[v.Name]
|
||||
statusScope.Subresource = "status"
|
||||
statusScope.Namer = handlers.ContextBasedNaming{
|
||||
Namer: meta.NewAccessor(),
|
||||
ClusterScoped: clusterScoped,
|
||||
}
|
||||
|
||||
subresources, err := apiextensionshelpers.GetSubresourcesForVersion(crd, v.Name)
|
||||
if err != nil {
|
||||
utilruntime.HandleError(err)
|
||||
return nil, fmt.Errorf("the server could not properly serve the CR subresources")
|
||||
}
|
||||
if subresources != nil && subresources.Status != nil {
|
||||
var statusResetFields = make(map[fieldpath.APIVersion]*fieldpath.Set)
|
||||
for _, value := range crd.Spec.Versions {
|
||||
resetField := storages[value.Name].Status.GetResetFields()
|
||||
for apiVersion, set := range resetField {
|
||||
statusResetFields[apiVersion] = set
|
||||
}
|
||||
}
|
||||
statusScope, err = scopeWithFieldManager(
|
||||
typeConverter,
|
||||
statusScope,
|
||||
statusResetFields,
|
||||
"status",
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
statusScopes[v.Name] = &statusScope
|
||||
}
|
||||
}
|
||||
|
||||
ret := &crdInfo{
|
||||
spec: &crd.Spec,
|
||||
acceptedNames: &crd.Status.AcceptedNames,
|
||||
|
||||
Reference in New Issue
Block a user