From b3d84fac524d72ad7ea0270128f0c0883e0eda0e Mon Sep 17 00:00:00 2001 From: Carlos de Paula Date: Mon, 6 Apr 2020 12:25:24 -0300 Subject: [PATCH] Add error messages to IPVS module Signed-off-by: Carlos de Paula --- pkg/util/ipvs/BUILD | 2 ++ pkg/util/ipvs/ipvs_linux.go | 37 +++++++++++++++++++------------------ 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/pkg/util/ipvs/BUILD b/pkg/util/ipvs/BUILD index a25cae757de..99e6690a9e7 100644 --- a/pkg/util/ipvs/BUILD +++ b/pkg/util/ipvs/BUILD @@ -40,6 +40,7 @@ go_library( ] + select({ "@io_bazel_rules_go//go/platform:android": [ "//vendor/github.com/moby/ipvs:go_default_library", + "//vendor/github.com/pkg/errors:go_default_library", "//vendor/k8s.io/klog:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ], @@ -57,6 +58,7 @@ go_library( ], "@io_bazel_rules_go//go/platform:linux": [ "//vendor/github.com/moby/ipvs:go_default_library", + "//vendor/github.com/pkg/errors:go_default_library", "//vendor/k8s.io/klog:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ], diff --git a/pkg/util/ipvs/ipvs_linux.go b/pkg/util/ipvs/ipvs_linux.go index 69b0acf7d5b..3ec66637f8e 100644 --- a/pkg/util/ipvs/ipvs_linux.go +++ b/pkg/util/ipvs/ipvs_linux.go @@ -19,7 +19,6 @@ limitations under the License. package ipvs import ( - "errors" "fmt" "net" "strings" @@ -28,6 +27,8 @@ import ( "time" libipvs "github.com/moby/ipvs" + "github.com/pkg/errors" + "k8s.io/klog" utilexec "k8s.io/utils/exec" ) @@ -59,7 +60,7 @@ func New(exec utilexec.Interface) Interface { func (runner *runner) AddVirtualServer(vs *VirtualServer) error { svc, err := toIPVSService(vs) if err != nil { - return err + return errors.Wrap(err, "could not convert local virtual server to IPVS service") } runner.mu.Lock() defer runner.mu.Unlock() @@ -70,7 +71,7 @@ func (runner *runner) AddVirtualServer(vs *VirtualServer) error { func (runner *runner) UpdateVirtualServer(vs *VirtualServer) error { svc, err := toIPVSService(vs) if err != nil { - return err + return errors.Wrap(err, "could not convert local virtual server to IPVS service") } runner.mu.Lock() defer runner.mu.Unlock() @@ -81,7 +82,7 @@ func (runner *runner) UpdateVirtualServer(vs *VirtualServer) error { func (runner *runner) DeleteVirtualServer(vs *VirtualServer) error { svc, err := toIPVSService(vs) if err != nil { - return err + return errors.Wrap(err, "could not convert local virtual server to IPVS service") } runner.mu.Lock() defer runner.mu.Unlock() @@ -92,18 +93,18 @@ func (runner *runner) DeleteVirtualServer(vs *VirtualServer) error { func (runner *runner) GetVirtualServer(vs *VirtualServer) (*VirtualServer, error) { svc, err := toIPVSService(vs) if err != nil { - return nil, err + return nil, errors.Wrap(err, "could not convert local virtual server to IPVS service") } runner.mu.Lock() ipvsSvc, err := runner.ipvsHandle.GetService(svc) runner.mu.Unlock() if err != nil { - return nil, err + return nil, errors.Wrap(err, "could not get IPVS service") } vServ, err := toVirtualServer(ipvsSvc) if err != nil { - return nil, err + return nil, errors.Wrap(err, "could not convert IPVS service to local virtual server") } return vServ, nil } @@ -114,13 +115,13 @@ func (runner *runner) GetVirtualServers() ([]*VirtualServer, error) { ipvsSvcs, err := runner.ipvsHandle.GetServices() runner.mu.Unlock() if err != nil { - return nil, err + return nil, errors.Wrap(err, "could not get IPVS services") } vss := make([]*VirtualServer, 0) for _, ipvsSvc := range ipvsSvcs { vs, err := toVirtualServer(ipvsSvc) if err != nil { - return nil, err + return nil, errors.Wrap(err, "could not convert IPVS service to local virtual server") } vss = append(vss, vs) } @@ -138,11 +139,11 @@ func (runner *runner) Flush() error { func (runner *runner) AddRealServer(vs *VirtualServer, rs *RealServer) error { svc, err := toIPVSService(vs) if err != nil { - return err + return errors.Wrap(err, "could not convert local virtual server to IPVS service") } dst, err := toIPVSDestination(rs) if err != nil { - return err + return errors.Wrap(err, "could not convert local real server to IPVS destination") } runner.mu.Lock() defer runner.mu.Unlock() @@ -153,11 +154,11 @@ func (runner *runner) AddRealServer(vs *VirtualServer, rs *RealServer) error { func (runner *runner) DeleteRealServer(vs *VirtualServer, rs *RealServer) error { svc, err := toIPVSService(vs) if err != nil { - return err + return errors.Wrap(err, "could not convert local virtual server to IPVS service") } dst, err := toIPVSDestination(rs) if err != nil { - return err + return errors.Wrap(err, "could not convert local real server to IPVS destination") } runner.mu.Lock() defer runner.mu.Unlock() @@ -167,11 +168,11 @@ func (runner *runner) DeleteRealServer(vs *VirtualServer, rs *RealServer) error func (runner *runner) UpdateRealServer(vs *VirtualServer, rs *RealServer) error { svc, err := toIPVSService(vs) if err != nil { - return err + return errors.Wrap(err, "could not convert local virtual server to IPVS service") } dst, err := toIPVSDestination(rs) if err != nil { - return err + return errors.Wrap(err, "could not convert local real server to IPVS destination") } runner.mu.Lock() defer runner.mu.Unlock() @@ -182,20 +183,20 @@ func (runner *runner) UpdateRealServer(vs *VirtualServer, rs *RealServer) error func (runner *runner) GetRealServers(vs *VirtualServer) ([]*RealServer, error) { svc, err := toIPVSService(vs) if err != nil { - return nil, err + return nil, errors.Wrap(err, "could not convert local virtual server to IPVS service") } runner.mu.Lock() dsts, err := runner.ipvsHandle.GetDestinations(svc) runner.mu.Unlock() if err != nil { - return nil, err + return nil, errors.Wrap(err, "could not get IPVS destination for service") } rss := make([]*RealServer, 0) for _, dst := range dsts { dst, err := toRealServer(dst) // TODO: aggregate errors? if err != nil { - return nil, err + return nil, errors.Wrap(err, "could not convert IPVS destination to local real server") } rss = append(rss, dst) }