Fixed Golint errors in pkg/registry/core/pod

This commit is contained in:
Alexander Zimmermann 2020-02-06 11:40:37 +01:00
parent 641321c94c
commit 026ba54961
No known key found for this signature in database
GPG Key ID: EA628F56C895E758
6 changed files with 32 additions and 31 deletions

View File

@ -154,8 +154,6 @@ pkg/registry/core/namespace/storage
pkg/registry/core/node pkg/registry/core/node
pkg/registry/core/persistentvolume pkg/registry/core/persistentvolume
pkg/registry/core/persistentvolumeclaim pkg/registry/core/persistentvolumeclaim
pkg/registry/core/pod
pkg/registry/core/pod/rest
pkg/registry/core/replicationcontroller pkg/registry/core/replicationcontroller
pkg/registry/core/replicationcontroller/storage pkg/registry/core/replicationcontroller/storage
pkg/registry/core/rest pkg/registry/core/rest

View File

@ -27,11 +27,13 @@ import (
"k8s.io/apiserver/pkg/registry/rest" "k8s.io/apiserver/pkg/registry/rest"
utilfeature "k8s.io/apiserver/pkg/util/feature" utilfeature "k8s.io/apiserver/pkg/util/feature"
api "k8s.io/kubernetes/pkg/apis/core" api "k8s.io/kubernetes/pkg/apis/core"
_ "k8s.io/kubernetes/pkg/apis/core/install"
"k8s.io/kubernetes/pkg/apis/core/validation" "k8s.io/kubernetes/pkg/apis/core/validation"
"k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/kubelet/client" "k8s.io/kubernetes/pkg/kubelet/client"
"k8s.io/kubernetes/pkg/registry/core/pod" "k8s.io/kubernetes/pkg/registry/core/pod"
// ensure types are installed
_ "k8s.io/kubernetes/pkg/apis/core/install"
) )
// LogREST implements the log endpoint for a Pod // LogREST implements the log endpoint for a Pod
@ -49,7 +51,7 @@ func (r *LogREST) New() runtime.Object {
return &api.Pod{} return &api.Pod{}
} }
// LogREST implements StorageMetadata // ProducesMIMETypes is LogREST's implementation of the StorageMetadata interface
func (r *LogREST) ProducesMIMETypes(verb string) []string { func (r *LogREST) ProducesMIMETypes(verb string) []string {
// Since the default list does not include "plain/text", we need to // Since the default list does not include "plain/text", we need to
// explicitly override ProducesMIMETypes, so that it gets added to // explicitly override ProducesMIMETypes, so that it gets added to
@ -59,7 +61,7 @@ func (r *LogREST) ProducesMIMETypes(verb string) []string {
} }
} }
// LogREST implements StorageMetadata, return string as the generating object // ProducesObject is LogREST's implementation of the StorageMetadata interface
func (r *LogREST) ProducesObject(verb string) interface{} { func (r *LogREST) ProducesObject(verb string) interface{} {
return "" return ""
} }
@ -77,7 +79,7 @@ func (r *LogREST) Get(ctx context.Context, name string, opts runtime.Object) (ru
if errs := validation.ValidatePodLogOptions(logOpts); len(errs) > 0 { if errs := validation.ValidatePodLogOptions(logOpts); len(errs) > 0 {
return nil, errors.NewInvalid(api.Kind("PodLogOptions"), name, errs) return nil, errors.NewInvalid(api.Kind("PodLogOptions"), name, errs)
} }
location, transport, err := pod.LogLocation(r.Store, r.KubeletConn, ctx, name, logOpts) location, transport, err := pod.LogLocation(ctx, r.Store, r.KubeletConn, name, logOpts)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -67,7 +67,7 @@ func (r *ProxyREST) Connect(ctx context.Context, id string, opts runtime.Object,
if !ok { if !ok {
return nil, fmt.Errorf("Invalid options object: %#v", opts) return nil, fmt.Errorf("Invalid options object: %#v", opts)
} }
location, transport, err := pod.ResourceLocation(r.Store, r.ProxyTransport, ctx, id) location, transport, err := pod.ResourceLocation(ctx, r.Store, r.ProxyTransport, id)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -99,7 +99,7 @@ func (r *AttachREST) Connect(ctx context.Context, name string, opts runtime.Obje
if !ok { if !ok {
return nil, fmt.Errorf("Invalid options object: %#v", opts) return nil, fmt.Errorf("Invalid options object: %#v", opts)
} }
location, transport, err := pod.AttachLocation(r.Store, r.KubeletConn, ctx, name, attachOpts) location, transport, err := pod.AttachLocation(ctx, r.Store, r.KubeletConn, name, attachOpts)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -136,7 +136,7 @@ func (r *ExecREST) Connect(ctx context.Context, name string, opts runtime.Object
if !ok { if !ok {
return nil, fmt.Errorf("invalid options object: %#v", opts) return nil, fmt.Errorf("invalid options object: %#v", opts)
} }
location, transport, err := pod.ExecLocation(r.Store, r.KubeletConn, ctx, name, execOpts) location, transport, err := pod.ExecLocation(ctx, r.Store, r.KubeletConn, name, execOpts)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -184,7 +184,7 @@ func (r *PortForwardREST) Connect(ctx context.Context, name string, opts runtime
if !ok { if !ok {
return nil, fmt.Errorf("invalid options object: %#v", opts) return nil, fmt.Errorf("invalid options object: %#v", opts)
} }
location, transport, err := pod.PortForwardLocation(r.Store, r.KubeletConn, ctx, name, portForwardOpts) location, transport, err := pod.PortForwardLocation(ctx, r.Store, r.KubeletConn, name, portForwardOpts)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -118,7 +118,7 @@ var _ = rest.Redirector(&REST{})
// ResourceLocation returns a pods location from its HostIP // ResourceLocation returns a pods location from its HostIP
func (r *REST) ResourceLocation(ctx context.Context, name string) (*url.URL, http.RoundTripper, error) { func (r *REST) ResourceLocation(ctx context.Context, name string) (*url.URL, http.RoundTripper, error) {
return registrypod.ResourceLocation(r, r.proxyTransport, ctx, name) return registrypod.ResourceLocation(ctx, r, r.proxyTransport, name)
} }
// Implement ShortNamesProvider // Implement ShortNamesProvider

View File

@ -147,6 +147,7 @@ type podStatusStrategy struct {
podStrategy podStrategy
} }
// StatusStrategy wraps and exports the used podStrategy for the storage package.
var StatusStrategy = podStatusStrategy{Strategy} var StatusStrategy = podStatusStrategy{Strategy}
func (podStatusStrategy) PrepareForUpdate(ctx context.Context, obj, old runtime.Object) { func (podStatusStrategy) PrepareForUpdate(ctx context.Context, obj, old runtime.Object) {
@ -168,6 +169,7 @@ type podEphemeralContainersStrategy struct {
podStrategy podStrategy
} }
// EphemeralContainersStrategy wraps and exports the used podStrategy for the storage package.
var EphemeralContainersStrategy = podEphemeralContainersStrategy{Strategy} var EphemeralContainersStrategy = podEphemeralContainersStrategy{Strategy}
func (podEphemeralContainersStrategy) ValidateUpdate(ctx context.Context, obj, old runtime.Object) field.ErrorList { func (podEphemeralContainersStrategy) ValidateUpdate(ctx context.Context, obj, old runtime.Object) field.ErrorList {
@ -180,7 +182,7 @@ func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, error) {
if !ok { if !ok {
return nil, nil, fmt.Errorf("not a pod") return nil, nil, fmt.Errorf("not a pod")
} }
return labels.Set(pod.ObjectMeta.Labels), PodToSelectableFields(pod), nil return labels.Set(pod.ObjectMeta.Labels), ToSelectableFields(pod), nil
} }
// MatchPod returns a generic matcher for a given label and field selector. // MatchPod returns a generic matcher for a given label and field selector.
@ -198,9 +200,9 @@ func NodeNameTriggerFunc(obj runtime.Object) string {
return obj.(*api.Pod).Spec.NodeName return obj.(*api.Pod).Spec.NodeName
} }
// PodToSelectableFields returns a field set that represents the object // ToSelectableFields returns a field set that represents the object
// TODO: fields are not labels, and the validation rules for them do not apply. // TODO: fields are not labels, and the validation rules for them do not apply.
func PodToSelectableFields(pod *api.Pod) fields.Set { func ToSelectableFields(pod *api.Pod) fields.Set {
// The purpose of allocation with a given number of elements is to reduce // The purpose of allocation with a given number of elements is to reduce
// amount of allocations needed to create the fields.Set. If you add any // amount of allocations needed to create the fields.Set. If you add any
// field here or the number of object-meta related fields changes, this should // field here or the number of object-meta related fields changes, this should
@ -226,7 +228,7 @@ type ResourceGetter interface {
Get(context.Context, string, *metav1.GetOptions) (runtime.Object, error) Get(context.Context, string, *metav1.GetOptions) (runtime.Object, error)
} }
func getPod(getter ResourceGetter, ctx context.Context, name string) (*api.Pod, error) { func getPod(ctx context.Context, getter ResourceGetter, name string) (*api.Pod, error) {
obj, err := getter.Get(ctx, name, &metav1.GetOptions{}) obj, err := getter.Get(ctx, name, &metav1.GetOptions{})
if err != nil { if err != nil {
return nil, err return nil, err
@ -251,7 +253,7 @@ func getPodIP(pod *api.Pod) string {
} }
// ResourceLocation returns a URL to which one can send traffic for the specified pod. // ResourceLocation returns a URL to which one can send traffic for the specified pod.
func ResourceLocation(getter ResourceGetter, rt http.RoundTripper, ctx context.Context, id string) (*url.URL, http.RoundTripper, error) { func ResourceLocation(ctx context.Context, getter ResourceGetter, rt http.RoundTripper, id string) (*url.URL, http.RoundTripper, error) {
// Allow ID as "podname" or "podname:port" or "scheme:podname:port". // Allow ID as "podname" or "podname:port" or "scheme:podname:port".
// If port is not specified, try to use the first defined port on the pod. // If port is not specified, try to use the first defined port on the pod.
scheme, name, port, valid := utilnet.SplitSchemeNamePort(id) scheme, name, port, valid := utilnet.SplitSchemeNamePort(id)
@ -259,7 +261,7 @@ func ResourceLocation(getter ResourceGetter, rt http.RoundTripper, ctx context.C
return nil, nil, errors.NewBadRequest(fmt.Sprintf("invalid pod request %q", id)) return nil, nil, errors.NewBadRequest(fmt.Sprintf("invalid pod request %q", id))
} }
pod, err := getPod(getter, ctx, name) pod, err := getPod(ctx, getter, name)
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
@ -301,13 +303,12 @@ func getContainerNames(containers []api.Container) string {
// LogLocation returns the log URL for a pod container. If opts.Container is blank // LogLocation returns the log URL for a pod container. If opts.Container is blank
// and only one container is present in the pod, that container is used. // and only one container is present in the pod, that container is used.
func LogLocation( func LogLocation(
getter ResourceGetter, ctx context.Context, getter ResourceGetter,
connInfo client.ConnectionInfoGetter, connInfo client.ConnectionInfoGetter,
ctx context.Context,
name string, name string,
opts *api.PodLogOptions, opts *api.PodLogOptions,
) (*url.URL, http.RoundTripper, error) { ) (*url.URL, http.RoundTripper, error) {
pod, err := getPod(getter, ctx, name) pod, err := getPod(ctx, getter, name)
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
@ -423,37 +424,37 @@ func streamParams(params url.Values, opts runtime.Object) error {
// AttachLocation returns the attach URL for a pod container. If opts.Container is blank // AttachLocation returns the attach URL for a pod container. If opts.Container is blank
// and only one container is present in the pod, that container is used. // and only one container is present in the pod, that container is used.
func AttachLocation( func AttachLocation(
ctx context.Context,
getter ResourceGetter, getter ResourceGetter,
connInfo client.ConnectionInfoGetter, connInfo client.ConnectionInfoGetter,
ctx context.Context,
name string, name string,
opts *api.PodAttachOptions, opts *api.PodAttachOptions,
) (*url.URL, http.RoundTripper, error) { ) (*url.URL, http.RoundTripper, error) {
return streamLocation(getter, connInfo, ctx, name, opts, opts.Container, "attach") return streamLocation(ctx, getter, connInfo, name, opts, opts.Container, "attach")
} }
// ExecLocation returns the exec URL for a pod container. If opts.Container is blank // ExecLocation returns the exec URL for a pod container. If opts.Container is blank
// and only one container is present in the pod, that container is used. // and only one container is present in the pod, that container is used.
func ExecLocation( func ExecLocation(
ctx context.Context,
getter ResourceGetter, getter ResourceGetter,
connInfo client.ConnectionInfoGetter, connInfo client.ConnectionInfoGetter,
ctx context.Context,
name string, name string,
opts *api.PodExecOptions, opts *api.PodExecOptions,
) (*url.URL, http.RoundTripper, error) { ) (*url.URL, http.RoundTripper, error) {
return streamLocation(getter, connInfo, ctx, name, opts, opts.Container, "exec") return streamLocation(ctx, getter, connInfo, name, opts, opts.Container, "exec")
} }
func streamLocation( func streamLocation(
ctx context.Context,
getter ResourceGetter, getter ResourceGetter,
connInfo client.ConnectionInfoGetter, connInfo client.ConnectionInfoGetter,
ctx context.Context,
name string, name string,
opts runtime.Object, opts runtime.Object,
container, container,
path string, path string,
) (*url.URL, http.RoundTripper, error) { ) (*url.URL, http.RoundTripper, error) {
pod, err := getPod(getter, ctx, name) pod, err := getPod(ctx, getter, name)
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
@ -489,13 +490,13 @@ func streamLocation(
// PortForwardLocation returns the port-forward URL for a pod. // PortForwardLocation returns the port-forward URL for a pod.
func PortForwardLocation( func PortForwardLocation(
ctx context.Context,
getter ResourceGetter, getter ResourceGetter,
connInfo client.ConnectionInfoGetter, connInfo client.ConnectionInfoGetter,
ctx context.Context,
name string, name string,
opts *api.PodPortForwardOptions, opts *api.PodPortForwardOptions,
) (*url.URL, http.RoundTripper, error) { ) (*url.URL, http.RoundTripper, error) {
pod, err := getPod(getter, ctx, name) pod, err := getPod(ctx, getter, name)
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }

View File

@ -454,7 +454,7 @@ func TestCheckLogLocation(t *testing.T) {
InsecureSkipTLSVerifyTransport: fakeInsecureRoundTripper, InsecureSkipTLSVerifyTransport: fakeInsecureRoundTripper,
}} }}
_, actualTransport, err := LogLocation(getter, connectionGetter, ctx, fakePodName, tc.opts) _, actualTransport, err := LogLocation(ctx, getter, connectionGetter, fakePodName, tc.opts)
if !reflect.DeepEqual(err, tc.expectedErr) { if !reflect.DeepEqual(err, tc.expectedErr) {
t.Errorf("expected %v, got %v", tc.expectedErr, err) t.Errorf("expected %v, got %v", tc.expectedErr, err)
} }
@ -469,7 +469,7 @@ func TestSelectableFieldLabelConversions(t *testing.T) {
apitesting.TestSelectableFieldLabelConversionsOfKind(t, apitesting.TestSelectableFieldLabelConversionsOfKind(t,
"v1", "v1",
"Pod", "Pod",
PodToSelectableFields(&api.Pod{}), ToSelectableFields(&api.Pod{}),
nil, nil,
) )
} }
@ -530,7 +530,7 @@ func TestPortForwardLocation(t *testing.T) {
for _, tc := range tcs { for _, tc := range tcs {
getter := &mockPodGetter{tc.in} getter := &mockPodGetter{tc.in}
connectionGetter := &mockConnectionInfoGetter{tc.info} connectionGetter := &mockConnectionInfoGetter{tc.info}
loc, _, err := PortForwardLocation(getter, connectionGetter, ctx, "test", tc.opts) loc, _, err := PortForwardLocation(ctx, getter, connectionGetter, "test", tc.opts)
if !reflect.DeepEqual(err, tc.expectedErr) { if !reflect.DeepEqual(err, tc.expectedErr) {
t.Errorf("expected %v, got %v", tc.expectedErr, err) t.Errorf("expected %v, got %v", tc.expectedErr, err)
} }