1. 18 Jun, 2020 1 commit
  2. 16 Jun, 2020 1 commit
  3. 15 Jun, 2020 1 commit
  4. 14 Jun, 2020 2 commits
  5. 12 Jun, 2020 1 commit
  6. 11 Jun, 2020 1 commit
  7. 09 Jun, 2020 2 commits
  8. 08 Jun, 2020 1 commit
  9. 04 Jun, 2020 1 commit
  10. 03 Jun, 2020 1 commit
    • Manuel Rüger's avatar
      Add golangci-lint support (#895) · 12674d5f
      Manuel Rüger authored
      
      * Makefile: Add lint using golangci-lint
      
      * build/travis-test.sh: Run lint step
      
      * metrics_controller: Lint
      
      pkg/metrics/metrics_controller.go:150:2: `mu` is unused (structcheck)
              mu          sync.Mutex
              ^
      pkg/metrics/metrics_controller.go:151:2: `nodeIP` is unused (structcheck)
              nodeIP      net.IP
              ^
      
      * network_service_graceful: Lint
      
      pkg/controllers/proxy/network_service_graceful.go:21:6: `gracefulQueueItem` is unused (deadcode)
      type gracefulQueueItem struct {
           ^
      pkg/controllers/proxy/network_service_graceful.go:22:2: `added` is unused (structcheck)
              added   time.Time
              ^
      pkg/controllers/proxy/network_service_graceful.go:23:2: `service` is unused (structcheck)
              service *ipvs.Service
              ^
      
      * network_services_controller_test: Lint
      
      pkg/controllers/proxy/network_services_controller_test.go:80:6: func `logf` is unused (unused)
      
      * ecmp_vip: Lint
      
      pkg/controllers/routing/ecmp_vip.go:208:4: S1023: redundant `return` statement (gosimple)
                              return
                              ^
      
      * bgp_peers: Lint
      
      pkg/controllers/routing/bgp_peers.go:331:4: S1023: redundant `return` statement (gosimple)
                              return
                              ^
      
      * bgp_policies: Lint
      
      pkg/controllers/routing/bgp_policies.go:80:3: S1011: should replace loop with `externalBgpPeers = append(externalBgpPeers, nrc.nodePeerRouters...)` (gosimple)
                      for _, peer := range nrc.nodePeerRouters {
                      ^
      pkg/controllers/routing/bgp_policies.go:23:20: ineffectual assignment to `err` (ineffassign)
              podCidrPrefixSet, err := table.NewPrefixSet(config.PrefixSet{
                                ^
      pkg/controllers/routing/bgp_policies.go:42:22: ineffectual assignment to `err` (ineffassign)
              clusterIPPrefixSet, err := table.NewPrefixSet(config.PrefixSet{
                                  ^
      pkg/controllers/routing/bgp_policies.go:33:30: Error return value of `nrc.bgpServer.AddDefinedSet` is not checked (errcheck)
                      nrc.bgpServer.AddDefinedSet(podCidrPrefixSet)
                                                 ^
      pkg/controllers/routing/bgp_policies.go:48:30: Error return value of `nrc.bgpServer.AddDefinedSet` is not checked (errcheck)
                      nrc.bgpServer.AddDefinedSet(clusterIPPrefixSet)
                                                 ^
      pkg/controllers/routing/bgp_policies.go:69:31: Error return value of `nrc.bgpServer.AddDefinedSet` is not checked (errcheck)
                              nrc.bgpServer.AddDefinedSet(iBGPPeerNS)
                                                         ^
      pkg/controllers/routing/bgp_policies.go:108:31: Error return value of `nrc.bgpServer.AddDefinedSet` is not checked (errcheck)
                              nrc.bgpServer.AddDefinedSet(ns)
                                                         ^
      pkg/controllers/routing/bgp_policies.go:120:30: Error return value of `nrc.bgpServer.AddDefinedSet` is not checked (errcheck)
                      nrc.bgpServer.AddDefinedSet(ns)
                                                 ^
                                                         ^
      
      * network_policy_controller: Lint
      
      pkg/controllers/netpol/network_policy_controller.go:35:2: `networkPolicyAnnotation` is unused (deadcode)
              networkPolicyAnnotation      = "net.beta.kubernetes.io/network-policy"
              ^
      pkg/controllers/netpol/network_policy_controller.go:1047:4: SA9003: empty branch (staticcheck)
                              if err != nil {
                              ^
      pkg/controllers/netpol/network_policy_controller.go:969:10: SA4006: this value of `err` is never used (staticcheck)
              chains, err := iptablesCmdHandler.ListChains("filter")
                      ^
      pkg/controllers/netpol/network_policy_controller.go:1568:4: SA4006: this value of `err` is never used (staticcheck)
                              err = iptablesCmdHandler.Delete("filter", "FORWARD", strconv.Itoa(i-realRuleNo))
                              ^
      pkg/controllers/netpol/network_policy_controller.go:1584:4: SA4006: this value of `err` is never used (staticcheck)
                              err = iptablesCmdHandler.Delete("filter", "OUTPUT", strconv.Itoa(i-realRuleNo))
                              ^
      
      * network_services_controller: Lint
      
      pkg/controllers/proxy/network_services_controller.go:66:2: `h` is unused (deadcode)
              h      *ipvs.Handle
              ^
      pkg/controllers/proxy/network_services_controller.go:879:23: SA1019: client.NewEnvClient is deprecated: use NewClientWithOpts(FromEnv)  (staticcheck)
              dockerClient, err := client.NewEnvClient()
                                   ^
      pkg/controllers/proxy/network_services_controller.go:944:5: unreachable: unreachable code (govet)
                                      glog.V(3).Infof("Waiting for tunnel interface %s to come up in the pod, retrying", KUBE_TUNNEL_IF)
                                      ^
      pkg/controllers/proxy/network_services_controller.go:1289:5: S1002: should omit comparison to bool constant, can be simplified to `!hasHairpinChain` (gosimple)
              if hasHairpinChain != true {
                 ^
      pkg/controllers/proxy/network_services_controller.go:1237:43: S1019: should use make(map[string][]string) instead (gosimple)
              rulesNeeded := make(map[string][]string, 0)
                                                       ^
      pkg/controllers/proxy/network_services_controller.go:1111:4: S1023: redundant break statement (gosimple)
                              break
                              ^
      pkg/controllers/proxy/network_services_controller.go:1114:4: S1023: redundant break statement (gosimple)
                              break
                              ^
      pkg/controllers/proxy/network_services_controller.go:1117:4: S1023: redundant break statement (gosimple)
                              break
                              ^
      pkg/controllers/proxy/network_services_controller.go:445:21: Error return value of `nsc.publishMetrics` is not checked (errcheck)
                      nsc.publishMetrics(nsc.serviceMap)
                                        ^
      pkg/controllers/proxy/network_services_controller.go:1609:9: Error return value of `h.Write` is not checked (errcheck)
              h.Write([]byte(ip + "-" + protocol + "-" + port))
                     ^
      pkg/controllers/proxy/network_services_controller.go:912:13: Error return value of `netns.Set` is not checked (errcheck)
                              netns.Set(hostNetworkNamespaceHandle)
                                       ^
      pkg/controllers/proxy/network_services_controller.go:926:13: Error return value of `netns.Set` is not checked (errcheck)
                              netns.Set(hostNetworkNamespaceHandle)
                                       ^
      pkg/controllers/proxy/network_services_controller.go:950:13: Error return value of `netns.Set` is not checked (errcheck)
                              netns.Set(hostNetworkNamespaceHandle)
                                       ^
      pkg/controllers/proxy/network_services_controller.go:641:9: SA4006: this value of `err` is never used (staticcheck)
              addrs, err := getAllLocalIPs()
                     ^
      
      * network_routes_controller: Lint
      
      pkg/controllers/routing/network_routes_controller.go:340:2: S1000: should use for range instead of for { select {} } (gosimple)
              for {
              ^
      pkg/controllers/routing/network_routes_controller.go:757:22: Error return value of `nrc.bgpServer.Stop` is not checked (errcheck)
                              nrc.bgpServer.Stop()
                                                ^
      pkg/controllers/routing/network_routes_controller.go:770:22: Error return value of `nrc.bgpServer.Stop` is not checked (errcheck)
                              nrc.bgpServer.Stop()
                                                ^
      pkg/controllers/routing/network_routes_controller.go:782:23: Error return value of `nrc.bgpServer.Stop` is not checked (errcheck)
                                      nrc.bgpServer.Stop()
                                                        ^
      pkg/controllers/routing/network_routes_controller.go:717:12: Error return value of `g.Serve` is not checked (errcheck)
              go g.Serve()
      
      * ipset: Lint
      
      pkg/utils/ipset.go:243:23: Error return value of `entry.Set.Parent.Save` is not checked (errcheck)
              entry.Set.Parent.Save()
                                   ^
      
      * pkg/cmd/kube-router: Lint
      
      pkg/cmd/kube-router.go:214:26: SA1006: printf-style function with dynamic format string and no further arguments should use print-style function instead (staticcheck)
                      fmt.Fprintf(os.Stderr, output)
                                             ^
      pkg/cmd/kube-router.go:184:15: SA1017: the channel used with signal.Notify should be buffered (staticcheck)
              signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM)
                           ^
      pkg/cmd/kube-router.go:94:17: Error return value of `hc.RunServer` is not checked (errcheck)
              go hc.RunServer(stopCh, &wg)
                             ^
      pkg/cmd/kube-router.go:112:16: Error return value of `hc.RunCheck` is not checked (errcheck)
              go hc.RunCheck(healthChan, stopCh, &wg)
                            ^
      pkg/cmd/kube-router.go:121:12: Error return value of `mc.Run` is not checked (errcheck)
                      go mc.Run(healthChan, stopCh, &wg)
                               ^
      
      * cmd/kube-router/kube-router: Lint
      
      cmd/kube-router/kube-router.go:31:24: Error return value of `flag.CommandLine.Parse` is not checked (errcheck)
              flag.CommandLine.Parse([]string{})
                                    ^
      cmd/kube-router/kube-router.go:33:10: Error return value of `flag.Set` is not checked (errcheck)
              flag.Set("logtostderr", "true")
                      ^
      cmd/kube-router/kube-router.go:34:10: Error return value of `flag.Set` is not checked (errcheck)
              flag.Set("v", config.VLevel)
                      ^
      cmd/kube-router/kube-router.go:62:27: SA1006: printf-style function with dynamic format string and no further arguments should use print-style function instead (staticcheck)
                              fmt.Fprintf(os.Stdout, http.ListenAndServe("0.0.0.0:6060", nil).Error())
                                                     ^
      
      * kube-router_test: Lint
      
      cmd/kube-router/kube-router_test.go:21:10: Error return value of `io.Copy` is not checked (errcheck)
                      io.Copy(stderrBuf, stderrR)
                             ^
      cmd/kube-router/kube-router_test.go:40:17: Error return value of `docBuf.ReadFrom` is not checked (errcheck)
              docBuf.ReadFrom(docF)
                             ^
      
      * service_endpoints_sync: Lint
      
      pkg/controllers/proxy/service_endpoints_sync.go:460:2: ineffectual assignment to `ipvsSvcs` (ineffassign)
              ipvsSvcs, err := nsc.ln.ipvsGetServices()
              ^
      pkg/controllers/proxy/service_endpoints_sync.go:311:5: SA4006: this value of `err` is never used (staticcheck)
                                      err = nsc.ln.ipAddrDel(dummyVipInterface, externalIP)
                                      ^
      
      * node: Lint
      
      pkg/utils/node.go:19:16: SA1019: clientset.Core is deprecated: please explicitly pick a version if possible.  (staticcheck)
                      node, err := clientset.Core().Nodes().Get(nodeName, metav1.GetOptions{})
                                   ^
      pkg/utils/node.go:27:15: SA1019: clientset.Core is deprecated: please explicitly pick a version if possible.  (staticcheck)
              node, err := clientset.Core().Nodes().Get(hostName, metav1.GetOptions{})
                           ^
      pkg/utils/node.go:34:15: SA1019: clientset.Core is deprecated: please explicitly pick a version if possible.  (staticcheck)
                      node, err = clientset.Core().Nodes().Get(hostnameOverride, metav1.GetOptions{})
                                  ^
      
      * aws: Lint
      
      pkg/controllers/routing/aws.go:31:8: SA4006: this value of `err` is never used (staticcheck)
                      URL, err := url.Parse(providerID)
                           ^
      
      * health_controller: Lint
      
      pkg/healthcheck/health_controller.go:54:10: Error return value of `w.Write` is not checked (errcheck)
                      w.Write([]byte("OK\n"))
                             ^
      pkg/healthcheck/health_controller.go:68:10: Error return value of `w.Write` is not checked (errcheck)
                      w.Write([]byte("Unhealthy"))
                             ^
      pkg/healthcheck/health_controller.go:159:2: S1000: should use a simple channel send/receive instead of `select` with a single case (gosimple)
              select {
              ^
      
      * network_routes_controller_test: Lint
      
      pkg/controllers/routing/network_routes_controller_test.go:1113:37: Error return value of `testcase.nrc.bgpServer.Stop` is not checked (errcheck)
                              defer testcase.nrc.bgpServer.Stop()
                                                               ^
      pkg/controllers/routing/network_routes_controller_test.go:1314:37: Error return value of `testcase.nrc.bgpServer.Stop` is not checked (errcheck)
                              defer testcase.nrc.bgpServer.Stop()
                                                               ^
      pkg/controllers/routing/network_routes_controller_test.go:2327:37: Error return value of `testcase.nrc.bgpServer.Stop` is not checked (errcheck)
                              defer testcase.nrc.bgpServer.Stop()
                                                               ^
      
      * .golangci.yml: Increase timeout
      
      Default is 1m, increase to 5m otherwise travis might fail
      
      * Makefile: Update golangci-lint to 1.27.0
      
      * kube-router_test.go: defer waitgroup
      Co-authored-by: default avatarAaron U'Ren <aauren@users.noreply.github.com>
      
      * network_routes_controller: Incorporate review
      
      * bgp_policies: Incorporate review
      
      * network_routes_controller: Incorporate review
      
      * bgp_policies: Log error instead
      
      * network_services_controller: Incorporate review
      Co-authored-by: default avatarAaron U'Ren <aauren@users.noreply.github.com>
      Unverified
      12674d5f
  11. 01 Jun, 2020 1 commit
  12. 25 May, 2020 1 commit
    • Aaron U'Ren's avatar
      fix(network_routes): missing node ip -> error log (#904) · cb48a7f8
      Aaron U'Ren authored
      Before we used to raise an error when a node was missing an IP, but it
      turns out that this is not a required attribute of a node. And while it
      is rare that a node would be missing an IP address, a node doesn't
      require an IP address or a name or really much of anything in order to
      exist.
      
      This brings us to stronger conformance with the Kubernetes API and makes
      it so that kube-router logs errors rather than changing it's health
      status and potentially causing cascading failures across the fleet if a
      user adds a node like this.
      Unverified
      cb48a7f8
  13. 24 May, 2020 1 commit
  14. 20 May, 2020 1 commit
    • Aaron U'Ren's avatar
      Fix Memory Consumption in network_policy_controller (#902) · 837554bf
      Aaron U'Ren authored
      * feat(gitignore): don't track intellij files
      
      * fact(network_policy): networkPoliciesInfo -> stack
      
      Take networkPoliciesInfo off of the npc struct and convert it to a stack
      variable that is easy to cleanup.
      
      * fix(network_policy): k8s obj memory accumulation
      
      Kubernetes informers will block on handler execution and will then begin
      to accumulate cached Kubernetes object information into the heap. This
      change moves the full sync logic into it's own goroutine where full
      syncs are triggered and gated via writing to a single item channel.
      
      This ensures that:
      - Syncs will only happen one at a time (as they are full syncs and we
        can't process multiple at once)
      - Sync requests are only ever delayed and never lost as they will be
        added to the request channel
      - After we make a sync request we return fast to ensure that the handler
        execution returns fast and that we don't block the Kubernetes
        informers
      
      * fact(network_policy): rework readyForUpdates
      
      Now that we are better managing requests for full syncs we no longer
      need to manage readyForUpdates on the npc controller. We already enforce
      not blocking the handlers and a single sync execution chain, whether it
      comes from the controller in the form of a periodic sync or whether it
      comes from a Kubernetes informer, either way the result is a
      non-blocking, single thread of execution, full sync.
      
      * fix(network_policy): address PR feedback
      Unverified
      837554bf
  15. 12 May, 2020 4 commits
  16. 07 May, 2020 1 commit
  17. 04 May, 2020 3 commits
  18. 03 May, 2020 1 commit
  19. 02 May, 2020 1 commit
  20. 26 Apr, 2020 4 commits
  21. 25 Apr, 2020 1 commit
  22. 24 Apr, 2020 1 commit
  23. 23 Apr, 2020 4 commits
  24. 21 Apr, 2020 1 commit
  25. 15 Apr, 2020 1 commit
  26. 13 Apr, 2020 2 commits
    • Murali Reddy's avatar
      handle DeletedFinalStateUnknown objects in DeleteFunc handlers (#856) · 4c764f54
      Murali Reddy authored
      * in DeleteFunc handlers across the controllers  handle the case where received object can be of
      type DeletedFinalStateUnknown
      
      fixes one of the symptoms (panic on receiving DeletedFinalStateUnknown objects) reported in #712
      
      * address review comments
      Unverified
      4c764f54
    • Aaron U'Ren's avatar
      switch --set to less ambiguous --match-set (#874) · 19e56370
      Aaron U'Ren authored
      While --set is still ambiguous it can clash with other module options,
      so it is better to be more specific and use the --match-set option. This
      also more closely aligns with all other areas of the code that already
      use --match-set.
      
      From iptables-extensions man page:
      The option --match-set can be replaced by --set if that does not clash
      with an option of other extensions.
      Unverified
      19e56370