diff --git a/.golangci.yml b/.golangci.yml index 2dd22ffc7..9884ab3e7 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -15,6 +15,7 @@ linters: - deadcode - misspell - nolintlint + - gocritic issues: exclude-use-default: false diff --git a/cmd/virtual-kubelet/internal/provider/mock/mock.go b/cmd/virtual-kubelet/internal/provider/mock/mock.go index 02e5b71a7..7696588da 100644 --- a/cmd/virtual-kubelet/internal/provider/mock/mock.go +++ b/cmd/virtual-kubelet/internal/provider/mock/mock.go @@ -54,7 +54,7 @@ type MockProvider struct { } // MockConfig contains a mock virtual-kubelet's configurable parameters. -type MockConfig struct { //nolint:golint +type MockConfig struct { CPU string `json:"cpu,omitempty"` Memory string `json:"memory,omitempty"` Pods string `json:"pods,omitempty"` @@ -62,7 +62,7 @@ type MockConfig struct { //nolint:golint // NewMockProviderMockConfig creates a new MockV0Provider. Mock legacy provider does not implement the new asynchronous podnotifier interface func NewMockProviderMockConfig(config MockConfig, nodeName, operatingSystem string, internalIP string, daemonEndpointPort int32) (*MockProvider, error) { - //set defaults + // set defaults if config.CPU == "" { config.CPU = defaultCPUCapacity } diff --git a/node/api/logs_test.go b/node/api/logs_test.go index 99f2ab7cf..f2c9d9f8a 100644 --- a/node/api/logs_test.go +++ b/node/api/logs_test.go @@ -10,15 +10,15 @@ import ( is "gotest.tools/assert/cmp" ) -//func parseLogOptions(q url.Values) (opts ContainerLogOpts, err error) +// func parseLogOptions(q url.Values) (opts ContainerLogOpts, err error) func TestParseLogOptions(t *testing.T) { - //tailLines - //follow - //limitBytes - //previous - //sinceSeconds - //sinceTime - //timestamps + // tailLines + // follow + // limitBytes + // previous + // sinceSeconds + // sinceTime + // timestamps sinceTime, _ := time.Parse(time.RFC3339, "2020-03-20T21:07:34Z") fmt.Printf("%+v\n", sinceTime) testCases := []struct { diff --git a/node/node.go b/node/node.go index e371d02d6..a5db919f2 100644 --- a/node/node.go +++ b/node/node.go @@ -46,7 +46,7 @@ const ( // // Note: Implementers can choose to manage a node themselves, in which case // it is not needed to provide an implementation for this interface. -type NodeProvider interface { //nolint:golint +type NodeProvider interface { // Ping checks if the node is still active. // This is intended to be lightweight as it will be called periodically as a // heartbeat to keep the node marked as ready in Kubernetes. diff --git a/node/nodeutil/client.go b/node/nodeutil/client.go index 70d746dfe..da3d0ed7a 100644 --- a/node/nodeutil/client.go +++ b/node/nodeutil/client.go @@ -24,17 +24,7 @@ func ClientsetFromEnv(kubeConfigPath string) (*kubernetes.Clientset, error) { ) if kubeConfigPath != "" { - _, err = os.Stat(kubeConfigPath) - if err == nil { - config, err = clientcmd.NewNonInteractiveDeferredLoadingClientConfig( - &clientcmd.ClientConfigLoadingRules{ExplicitPath: kubeConfigPath}, - &clientcmd.ConfigOverrides{}, - ).ClientConfig() - } else if os.IsNotExist(err) { - config, err = rest.InClusterConfig() - } else { - return nil, err - } + config, err = clientsetFromEnvKubeConfigPath(kubeConfigPath) } else { config, err = rest.InClusterConfig() } @@ -46,6 +36,20 @@ func ClientsetFromEnv(kubeConfigPath string) (*kubernetes.Clientset, error) { return kubernetes.NewForConfig(config) } +func clientsetFromEnvKubeConfigPath(kubeConfigPath string) (*rest.Config, error) { + _, err := os.Stat(kubeConfigPath) + if os.IsNotExist(err) { + return rest.InClusterConfig() + } + if err != nil { + return nil, err + } + return clientcmd.NewNonInteractiveDeferredLoadingClientConfig( + &clientcmd.ClientConfigLoadingRules{ExplicitPath: kubeConfigPath}, + &clientcmd.ConfigOverrides{}, + ).ClientConfig() +} + // PodInformerFilter is a filter that you should use when creating a pod informer for use with the pod controller. func PodInformerFilter(node string) kubeinformers.SharedInformerOption { return kubeinformers.WithTweakListOptions(func(options *metav1.ListOptions) { diff --git a/node/podcontroller.go b/node/podcontroller.go index 79890eb75..490b4fbf6 100644 --- a/node/podcontroller.go +++ b/node/podcontroller.go @@ -303,10 +303,9 @@ func (pc *PodController) Run(ctx context.Context, podSyncWorkers int) (retErr er // At this point we know that something in .metadata or .spec has changed, so we must proceed to sync the pod. if key, err := cache.MetaNamespaceKeyFunc(newPod); err != nil { log.G(ctx).Error(err) - } else { - if podShouldEnqueue(oldPod, newPod) { - pc.k8sQ.AddRateLimited(key) - } + } else if podShouldEnqueue(oldPod, newPod) { + pc.k8sQ.AddRateLimited(key) + } }, DeleteFunc: func(pod interface{}) { diff --git a/trace/opencensus/opencensus.go b/trace/opencensus/opencensus.go index 6b2df140a..4145b5233 100644 --- a/trace/opencensus/opencensus.go +++ b/trace/opencensus/opencensus.go @@ -213,9 +213,9 @@ func (l *logger) WithError(err error) log.Logger { var a []octrace.Attribute if l.s.IsRecordingEvents() { - a = make([]octrace.Attribute, len(l.a), len(l.a)+1) + a = make([]octrace.Attribute, len(l.a)+1) copy(a, l.a) - a = append(l.a, makeAttribute("err", err)) + a[len(a)-1] = makeAttribute("err", err) } return &logger{s: l.s, l: log, a: a} @@ -227,9 +227,9 @@ func (l *logger) WithField(k string, value interface{}) log.Logger { var a []octrace.Attribute if l.s.IsRecordingEvents() { - a = make([]octrace.Attribute, len(l.a), len(l.a)+1) + a = make([]octrace.Attribute, len(l.a)+1) copy(a, l.a) - a = append(a, makeAttribute(k, value)) + a[len(a)-1] = makeAttribute(k, value) } return &logger{s: l.s, a: a, l: log}