From df5babf6c8acc0832d614e096dd56403c84ea1b1 Mon Sep 17 00:00:00 2001 From: ston1th Date: Sun, 7 Nov 2021 13:30:22 +0100 Subject: [PATCH] linter fixes --- pkg/api/client/client.go | 7 ++----- pkg/api/client/helper.go | 4 ++++ pkg/api/server.go | 8 ++++---- pkg/api/types/auth.go | 9 ++++----- pkg/api/types/error.go | 6 ++++++ pkg/api/v1/client/client.go | 10 +++++----- pkg/api/v1/schema/schema.go | 6 +++--- pkg/api/v1/server/handler.go | 2 -- pkg/config/ca.go | 4 ++-- pkg/config/config.go | 6 ++---- pkg/db/db.go | 2 +- pkg/etcd/etcd.go | 8 ++------ pkg/haproxy/haproxy.go | 10 +++++----- pkg/raft/raft.go | 8 ++------ pkg/vip/vip.go | 14 +++++++------- 15 files changed, 49 insertions(+), 55 deletions(-) diff --git a/pkg/api/client/client.go b/pkg/api/client/client.go index cea117a..8b4f92b 100644 --- a/pkg/api/client/client.go +++ b/pkg/api/client/client.go @@ -7,19 +7,16 @@ import ( "errors" "fmt" "io" - "io/ioutil" "net" "net/http" "net/http/httputil" "os" "strconv" "strings" - "sync" "time" ) type Client struct { - sync.Mutex endpoint string username string password string @@ -193,13 +190,13 @@ func (c *Client) Do(r *http.Request, v interface{}) (resp *http.Response, err er if err != nil { return } - body, err := ioutil.ReadAll(resp.Body) + body, err := io.ReadAll(resp.Body) if err != nil { resp.Body.Close() return } resp.Body.Close() - resp.Body = ioutil.NopCloser(bytes.NewReader(body)) + resp.Body = io.NopCloser(bytes.NewReader(body)) if c.debugWriter != nil { dumpResp, err := httputil.DumpResponse(resp, true) diff --git a/pkg/api/client/helper.go b/pkg/api/client/helper.go index e1958e6..6647e8c 100644 --- a/pkg/api/client/helper.go +++ b/pkg/api/client/helper.go @@ -14,6 +14,10 @@ func (e Error) Error() string { return e.Err } +func (e Error) Is(target error) bool { + return e.Err == target.Error() +} + func decodeResp(resp *http.Response, v interface{}) error { if resp.Body == nil { return nil diff --git a/pkg/api/server.go b/pkg/api/server.go index aa67d1e..2b21d3b 100644 --- a/pkg/api/server.go +++ b/pkg/api/server.go @@ -112,19 +112,19 @@ func NewServer(c *config.Config, log logr.Logger) (*Server, error) { return s, nil } -func (s *Server) UpdateDB(db *db.DB, leader bool) error { - s.Data.DB = db +func (s *Server) UpdateDB(kvdb *db.DB, leader bool) error { + s.Data.DB = kvdb s.Data.Leader = leader if s.store.Local != nil { if s.Data.Net == nil { - na, err := netalloc.NewGenericAlloc(db, s.prefix) + na, err := netalloc.NewGenericAlloc(kvdb, s.prefix) if err != nil { return err } s.Data.Net = na close(s.init) } else { - s.Data.Net.SetStore(db) + s.Data.Net.SetStore(kvdb) } } else { if s.Data.Net == nil { diff --git a/pkg/api/types/auth.go b/pkg/api/types/auth.go index 7b865df..094885e 100644 --- a/pkg/api/types/auth.go +++ b/pkg/api/types/auth.go @@ -1,11 +1,10 @@ package types import ( + "encoding/hex" "git.giftfish.de/ston1th/haproxy-lb/pkg/config" "golang.org/x/crypto/bcrypt" weakrand "math/rand" - //"net/http" - "encoding/hex" "strings" "sync" "time" @@ -28,11 +27,11 @@ func newCache() *cache { } } -func (c *cache) get(key string) (bool, bool) { +func (c *cache) get(key string) (v, ok bool) { c.mtx.Lock() defer c.mtx.Unlock() - v, ok := c.cache[key] - return v, ok + v, ok = c.cache[key] + return } func (c *cache) set(key string, value bool) { diff --git a/pkg/api/types/error.go b/pkg/api/types/error.go index cbe583c..f5947b7 100644 --- a/pkg/api/types/error.go +++ b/pkg/api/types/error.go @@ -8,6 +8,7 @@ import ( // Error interface is a custom api error type Error interface { Error() string + JSON() string Status() int } @@ -19,6 +20,11 @@ type Err struct { // Error returns the error string func (a Err) Error() string { + return a.err +} + +// Error returns the error string as JSON format +func (a Err) JSON() string { return `{"error":"` + a.err + `","status":` + strconv.Itoa(a.status) + `}` } diff --git a/pkg/api/v1/client/client.go b/pkg/api/v1/client/client.go index d83ed83..12a1234 100644 --- a/pkg/api/v1/client/client.go +++ b/pkg/api/v1/client/client.go @@ -27,11 +27,11 @@ func NewClient(c *apiclient.Client) (*Client, error) { return &Client{c}, nil } -func (c *Client) GetLoadBalancers(ctx context.Context) (lbs map[string]schema.LoadBalancer, err error) { +func (c *Client) GetLoadBalancers(ctx context.Context) (lbs map[string]*schema.LoadBalancer, err error) { return c.GetLoadBalancersWithCluster(ctx, "") } -func (c *Client) GetLoadBalancersWithCluster(ctx context.Context, cluster string) (lbs map[string]schema.LoadBalancer, err error) { +func (c *Client) GetLoadBalancersWithCluster(ctx context.Context, cluster string) (lbs map[string]*schema.LoadBalancer, err error) { path := base if cluster != "" { path += "/" + cluster @@ -40,12 +40,12 @@ func (c *Client) GetLoadBalancersWithCluster(ctx context.Context, cluster string if err != nil { return } - lbs = make(map[string]schema.LoadBalancer) + lbs = make(map[string]*schema.LoadBalancer) _, err = c.c.Do(req, &lbs) return } -func (c *Client) GetLoadBalancer(ctx context.Context, cluster, name string) (lb schema.LoadBalancer, err error) { +func (c *Client) GetLoadBalancer(ctx context.Context, cluster, name string) (lb *schema.LoadBalancer, err error) { path := fmt.Sprintf("%s/%s/%s", base, cluster, name) req, err := c.c.NewRequest(ctx, "GET", path, nil) if err != nil { @@ -55,7 +55,7 @@ func (c *Client) GetLoadBalancer(ctx context.Context, cluster, name string) (lb return } -func (c *Client) CreateLoadBalancer(ctx context.Context, cluster, name string, lb schema.LoadBalancer) (err error) { +func (c *Client) CreateLoadBalancer(ctx context.Context, cluster, name string, lb *schema.LoadBalancer) (err error) { buf := new(bytes.Buffer) path := fmt.Sprintf("%s/%s/%s", base, cluster, name) err = lb.ValidateClient() diff --git a/pkg/api/v1/schema/schema.go b/pkg/api/v1/schema/schema.go index 05ba1a5..37c5d1d 100644 --- a/pkg/api/v1/schema/schema.go +++ b/pkg/api/v1/schema/schema.go @@ -137,7 +137,7 @@ func (o Servers) RemoveByName(name string) Servers { return append(o[:index], o[index+1:]...) } -func (lb LoadBalancer) ValidateClient() error { +func (lb *LoadBalancer) ValidateClient() error { for i, p := range lb.Ports { if p.Port < 0 || p.Port > 65535 { return fmt.Errorf("LoadBalancer.Ports[%d].Port is invalid (range 0-65535", i) @@ -157,7 +157,7 @@ func (lb LoadBalancer) ValidateClient() error { return nil } -func (lb LoadBalancer) ValidateServer() error { +func (lb *LoadBalancer) ValidateServer() error { if lb.Name == "" { return errors.New("LoadBalancer.Name can not be empty") } @@ -183,6 +183,6 @@ func (lb LoadBalancer) ValidateServer() error { return nil } -func (lb LoadBalancer) JSON() ([]byte, error) { +func (lb *LoadBalancer) JSON() ([]byte, error) { return json.Marshal(lb) } diff --git a/pkg/api/v1/server/handler.go b/pkg/api/v1/server/handler.go index b724845..0dde352 100644 --- a/pkg/api/v1/server/handler.go +++ b/pkg/api/v1/server/handler.go @@ -1,8 +1,6 @@ package server import ( - //"golang.org/x/crypto/bcrypt" - //"net/http" "encoding/json" "errors" "net" diff --git a/pkg/config/ca.go b/pkg/config/ca.go index 2304117..4dd237a 100644 --- a/pkg/config/ca.go +++ b/pkg/config/ca.go @@ -2,14 +2,14 @@ package config import ( "crypto/x509" - "io/ioutil" + "os" ) func LoadCertPool(file string) (p *x509.CertPool, err error) { if file == "" { return } - buf, err := ioutil.ReadFile(file) + buf, err := os.ReadFile(file) if err != nil { return } diff --git a/pkg/config/config.go b/pkg/config/config.go index dc13f4f..1773c38 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -140,10 +140,8 @@ func Validate(c *Config) error { } if etcd.ClusterName == "" { return errors.New("missing etcd.clusterName config") - } else { - if strings.HasSuffix(etcd.ClusterName, "/") { - etcd.ClusterName = strings.TrimSuffix(etcd.ClusterName, "/") - } + } else if strings.HasSuffix(etcd.ClusterName, "/") { + etcd.ClusterName = strings.TrimSuffix(etcd.ClusterName, "/") } } if raft == nil && etcd == nil { diff --git a/pkg/db/db.go b/pkg/db/db.go index e4ffff6..433bf2b 100644 --- a/pkg/db/db.go +++ b/pkg/db/db.go @@ -83,7 +83,7 @@ func (db *DB) GetCIDR(name string) (cidr string, err error) { func (db *DB) GetLBs(cl string) (lbs map[string][]byte, err error) { lbs = make(map[string][]byte) if cl != "" { - cl = cl + "/" + cl += "/" } m, err := db.kv.GetPrefix(lbPrefix + cl) if err != nil { diff --git a/pkg/etcd/etcd.go b/pkg/etcd/etcd.go index fb44176..3de7f08 100644 --- a/pkg/etcd/etcd.go +++ b/pkg/etcd/etcd.go @@ -217,15 +217,11 @@ func (c *Cluster) Stop() { } func (c *Cluster) leader(ctx context.Context) { - defer func() { - util.HandleCrash() - }() + defer util.HandleCrash() c.callbacks.Leader(ctx, c) } func (c *Cluster) follower(ctx context.Context) { - defer func() { - util.HandleCrash() - }() + defer util.HandleCrash() c.callbacks.Follower(ctx, c) } diff --git a/pkg/haproxy/haproxy.go b/pkg/haproxy/haproxy.go index 9ba006c..43ae7bb 100644 --- a/pkg/haproxy/haproxy.go +++ b/pkg/haproxy/haproxy.go @@ -25,7 +25,7 @@ type ServiceManager interface { type HAProxyManager struct { // protects config update - sync.Mutex + mu sync.Mutex configFile string svc ServiceManager @@ -61,7 +61,7 @@ func (ha *HAProxyManager) checkConfig(ctx context.Context, lbs Config) (hash []b return } hash = h.Sum(nil) - err = os.Chmod(tmp.Name(), 0640) + err = os.Chmod(tmp.Name(), 0o640) if err != nil { return } @@ -95,7 +95,7 @@ func (ha *HAProxyManager) updateConfig(ctx context.Context, lbs Config) error { return nil } ha.reload = true - file, err := os.OpenFile(ha.configFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644) + file, err := os.OpenFile(ha.configFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o644) if err != nil { return err } @@ -110,8 +110,8 @@ func (ha *HAProxyManager) updateConfig(ctx context.Context, lbs Config) error { } func (ha *HAProxyManager) UpdateConfig(ctx context.Context, lbs Config) error { - ha.Lock() - defer ha.Unlock() + ha.mu.Lock() + defer ha.mu.Unlock() err := ha.updateConfig(ctx, lbs) if err != nil { return err diff --git a/pkg/raft/raft.go b/pkg/raft/raft.go index e92d0b3..4301646 100644 --- a/pkg/raft/raft.go +++ b/pkg/raft/raft.go @@ -168,16 +168,12 @@ func (c *Cluster) Start(raftcfg *config.Config) error { } func (c *Cluster) leader(ctx context.Context) { - defer func() { - util.HandleCrash() - }() + defer util.HandleCrash() c.callbacks.Leader(ctx, c) } func (c *Cluster) follower(ctx context.Context) { - defer func() { - util.HandleCrash() - }() + defer util.HandleCrash() c.callbacks.Follower(ctx, c) } diff --git a/pkg/vip/vip.go b/pkg/vip/vip.go index 6090d9f..12a8f3d 100644 --- a/pkg/vip/vip.go +++ b/pkg/vip/vip.go @@ -27,7 +27,7 @@ func DefaultInterface() (iface string, err error) { } type Network struct { - sync.Mutex + mu sync.Mutex m map[string]struct{} iface string label string @@ -76,8 +76,8 @@ func (n *Network) HasIP(a *netlink.Addr) bool { } func (n *Network) AddIP(cidr string) error { - n.Lock() - defer n.Unlock() + n.mu.Lock() + defer n.mu.Unlock() addr, err := netlink.ParseAddr(cidr) if err != nil { return err @@ -97,8 +97,8 @@ func (n *Network) AddIP(cidr string) error { } func (n *Network) DeleteIP(cidr string) error { - n.Lock() - defer n.Unlock() + n.mu.Lock() + defer n.mu.Unlock() addr, err := netlink.ParseAddr(cidr) if err != nil { return err @@ -115,8 +115,8 @@ func (n *Network) DeleteIP(cidr string) error { } func (n *Network) GetIPs() (cidrs []string) { - n.Lock() - defer n.Unlock() + n.mu.Lock() + defer n.mu.Unlock() cidrs = make([]string, len(n.m)) c := 0 for k := range n.m {