mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-14 06:15:45 +00:00
Cleanup setting non-nil Items field
This commit is contained in:
parent
ff56d3b691
commit
172a41192c
@ -55,20 +55,12 @@ func transformObject(ctx context.Context, obj runtime.Object, opts interface{},
|
|||||||
return doTransformObject(ctx, obj, opts, mediaType, scope, req)
|
return doTransformObject(ctx, obj, opts, mediaType, scope, req)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// doTransformResponseObject is used for handling all requests, including watch.
|
||||||
func doTransformObject(ctx context.Context, obj runtime.Object, opts interface{}, mediaType negotiation.MediaTypeOptions, scope *RequestScope, req *http.Request) (runtime.Object, error) {
|
func doTransformObject(ctx context.Context, obj runtime.Object, opts interface{}, mediaType negotiation.MediaTypeOptions, scope *RequestScope, req *http.Request) (runtime.Object, error) {
|
||||||
if _, ok := obj.(*metav1.Status); ok {
|
if _, ok := obj.(*metav1.Status); ok {
|
||||||
return obj, nil
|
return obj, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ensure that for empty lists we don't return <nil> items.
|
|
||||||
// This is safe to modify without deep-copying the object, as
|
|
||||||
// List objects themselves are never cached.
|
|
||||||
if meta.IsListType(obj) && meta.LenList(obj) == 0 {
|
|
||||||
if err := meta.SetList(obj, []runtime.Object{}); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
switch target := mediaType.Convert; {
|
switch target := mediaType.Convert; {
|
||||||
case target == nil:
|
case target == nil:
|
||||||
return obj, nil
|
return obj, nil
|
||||||
@ -128,6 +120,7 @@ func targetEncodingForTransform(scope *RequestScope, mediaType negotiation.Media
|
|||||||
|
|
||||||
// transformResponseObject takes an object loaded from storage and performs any necessary transformations.
|
// transformResponseObject takes an object loaded from storage and performs any necessary transformations.
|
||||||
// Will write the complete response object.
|
// Will write the complete response object.
|
||||||
|
// transformResponseObject is used only for handling non-streaming requests.
|
||||||
func transformResponseObject(ctx context.Context, scope *RequestScope, req *http.Request, w http.ResponseWriter, statusCode int, mediaType negotiation.MediaTypeOptions, result runtime.Object) {
|
func transformResponseObject(ctx context.Context, scope *RequestScope, req *http.Request, w http.ResponseWriter, statusCode int, mediaType negotiation.MediaTypeOptions, result runtime.Object) {
|
||||||
options, err := optionsForTransform(mediaType, req)
|
options, err := optionsForTransform(mediaType, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -135,6 +128,16 @@ func transformResponseObject(ctx context.Context, scope *RequestScope, req *http
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ensure that for empty lists we don't return <nil> items.
|
||||||
|
// This is safe to modify without deep-copying the object, as
|
||||||
|
// List objects themselves are never cached.
|
||||||
|
if meta.IsListType(result) && meta.LenList(result) == 0 {
|
||||||
|
if err := meta.SetList(result, []runtime.Object{}); err != nil {
|
||||||
|
scope.err(err, w, req)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var obj runtime.Object
|
var obj runtime.Object
|
||||||
do := func() {
|
do := func() {
|
||||||
obj, err = transformObject(ctx, result, options, mediaType, scope, req)
|
obj, err = transformObject(ctx, result, options, mediaType, scope, req)
|
||||||
|
Loading…
Reference in New Issue
Block a user