From 09ae32e0f0810d7d5a90d406b15fc88d1da7ab4d Mon Sep 17 00:00:00 2001 From: Viliam Lorinc <viliam.lorinc@t-systems.com> Date: Mon, 18 Sep 2023 16:07:10 +0200 Subject: [PATCH 1/5] change the handling of ignored errors --- client/client.go | 238 +++++++++++++++++++++++------------------------ errors/errors.go | 17 ++-- 2 files changed, 130 insertions(+), 125 deletions(-) diff --git a/client/client.go b/client/client.go index 1a48ac3..255f433 100644 --- a/client/client.go +++ b/client/client.go @@ -26,55 +26,55 @@ import ( ) type Client interface { - GetLoadBalancer(ctx context.Context, id string, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancer, error) - CreateLoadBalancer(ctx context.Context, lb *api.LoadBalancer, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancer, error) - DeleteLoadBalancer(ctx context.Context, id string, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancer, error) - - ListLoadBalancerPrefixes(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.PrefixList, error) - CreateLoadBalancerPrefix(ctx context.Context, prefix *api.LoadBalancerPrefix, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancerPrefix, error) - DeleteLoadBalancerPrefix(ctx context.Context, interfaceID string, prefix *netip.Prefix, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancerPrefix, error) - - ListLoadBalancerTargets(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancerTargetList, error) - CreateLoadBalancerTarget(ctx context.Context, lbtarget *api.LoadBalancerTarget, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancerTarget, error) - DeleteLoadBalancerTarget(ctx context.Context, id string, targetIP *netip.Addr, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancerTarget, error) - - GetInterface(ctx context.Context, id string, ignoredErrors ...errors.IgnoredErrors) (*api.Interface, error) - ListInterfaces(ctx context.Context, ignoredErrors ...errors.IgnoredErrors) (*api.InterfaceList, error) - CreateInterface(ctx context.Context, iface *api.Interface, ignoredErrors ...errors.IgnoredErrors) (*api.Interface, error) - DeleteInterface(ctx context.Context, id string, ignoredErrors ...errors.IgnoredErrors) (*api.Interface, error) - - GetVirtualIP(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.VirtualIP, error) - CreateVirtualIP(ctx context.Context, virtualIP *api.VirtualIP, ignoredErrors ...errors.IgnoredErrors) (*api.VirtualIP, error) - DeleteVirtualIP(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.VirtualIP, error) - - ListPrefixes(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.PrefixList, error) - CreatePrefix(ctx context.Context, prefix *api.Prefix, ignoredErrors ...errors.IgnoredErrors) (*api.Prefix, error) - DeletePrefix(ctx context.Context, interfaceID string, prefix *netip.Prefix, ignoredErrors ...errors.IgnoredErrors) (*api.Prefix, error) - - ListRoutes(ctx context.Context, vni uint32, ignoredErrors ...errors.IgnoredErrors) (*api.RouteList, error) - CreateRoute(ctx context.Context, route *api.Route, ignoredErrors ...errors.IgnoredErrors) (*api.Route, error) - DeleteRoute(ctx context.Context, vni uint32, prefix *netip.Prefix, ignoredErrors ...errors.IgnoredErrors) (*api.Route, error) - - GetNat(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.Nat, error) - CreateNat(ctx context.Context, nat *api.Nat, ignoredErrors ...errors.IgnoredErrors) (*api.Nat, error) - DeleteNat(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.Nat, error) - ListLocalNats(ctx context.Context, natIP *netip.Addr, ignoredErrors ...errors.IgnoredErrors) (*api.NatList, error) - - CreateNeighborNat(ctx context.Context, nat *api.NeighborNat, ignoredErrors ...errors.IgnoredErrors) (*api.NeighborNat, error) - ListNats(ctx context.Context, natIP *netip.Addr, natType string, ignoredErrors ...errors.IgnoredErrors) (*api.NatList, error) - DeleteNeighborNat(ctx context.Context, neigbhorNat *api.NeighborNat, ignoredErrors ...errors.IgnoredErrors) (*api.NeighborNat, error) - ListNeighborNats(ctx context.Context, natIP *netip.Addr, ignoredErrors ...errors.IgnoredErrors) (*api.NatList, error) - - ListFirewallRules(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.FirewallRuleList, error) - CreateFirewallRule(ctx context.Context, fwRule *api.FirewallRule, ignoredErrors ...errors.IgnoredErrors) (*api.FirewallRule, error) - GetFirewallRule(ctx context.Context, interfaceID string, ruleID string, ignoredErrors ...errors.IgnoredErrors) (*api.FirewallRule, error) - DeleteFirewallRule(ctx context.Context, interfaceID string, ruleID string, ignoredErrors ...errors.IgnoredErrors) (*api.FirewallRule, error) - - CheckInitialized(ctx context.Context, ignoredErrors ...errors.IgnoredErrors) (*api.Initialized, error) - Initialize(ctx context.Context, ignoredErrors ...errors.IgnoredErrors) (*api.Initialized, error) - GetVni(ctx context.Context, vni uint32, vniType uint8, ignoredErrors ...errors.IgnoredErrors) (*api.Vni, error) - ResetVni(ctx context.Context, vni uint32, vniType uint8, ignoredErrors ...errors.IgnoredErrors) (*api.Vni, error) - GetVersion(ctx context.Context, version *api.Version, ignoredErrors ...errors.IgnoredErrors) (*api.Version, error) + GetLoadBalancer(ctx context.Context, id string, ignoredErrors ...[]int32) (*api.LoadBalancer, error) + CreateLoadBalancer(ctx context.Context, lb *api.LoadBalancer, ignoredErrors ...[]int32) (*api.LoadBalancer, error) + DeleteLoadBalancer(ctx context.Context, id string, ignoredErrors ...[]int32) (*api.LoadBalancer, error) + + ListLoadBalancerPrefixes(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.PrefixList, error) + CreateLoadBalancerPrefix(ctx context.Context, prefix *api.LoadBalancerPrefix, ignoredErrors ...[]int32) (*api.LoadBalancerPrefix, error) + DeleteLoadBalancerPrefix(ctx context.Context, interfaceID string, prefix *netip.Prefix, ignoredErrors ...[]int32) (*api.LoadBalancerPrefix, error) + + ListLoadBalancerTargets(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.LoadBalancerTargetList, error) + CreateLoadBalancerTarget(ctx context.Context, lbtarget *api.LoadBalancerTarget, ignoredErrors ...[]int32) (*api.LoadBalancerTarget, error) + DeleteLoadBalancerTarget(ctx context.Context, id string, targetIP *netip.Addr, ignoredErrors ...[]int32) (*api.LoadBalancerTarget, error) + + GetInterface(ctx context.Context, id string, ignoredErrors ...[]int32) (*api.Interface, error) + ListInterfaces(ctx context.Context, ignoredErrors ...[]int32) (*api.InterfaceList, error) + CreateInterface(ctx context.Context, iface *api.Interface, ignoredErrors ...[]int32) (*api.Interface, error) + DeleteInterface(ctx context.Context, id string, ignoredErrors ...[]int32) (*api.Interface, error) + + GetVirtualIP(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.VirtualIP, error) + CreateVirtualIP(ctx context.Context, virtualIP *api.VirtualIP, ignoredErrors ...[]int32) (*api.VirtualIP, error) + DeleteVirtualIP(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.VirtualIP, error) + + ListPrefixes(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.PrefixList, error) + CreatePrefix(ctx context.Context, prefix *api.Prefix, ignoredErrors ...[]int32) (*api.Prefix, error) + DeletePrefix(ctx context.Context, interfaceID string, prefix *netip.Prefix, ignoredErrors ...[]int32) (*api.Prefix, error) + + ListRoutes(ctx context.Context, vni uint32, ignoredErrors ...[]int32) (*api.RouteList, error) + CreateRoute(ctx context.Context, route *api.Route, ignoredErrors ...[]int32) (*api.Route, error) + DeleteRoute(ctx context.Context, vni uint32, prefix *netip.Prefix, ignoredErrors ...[]int32) (*api.Route, error) + + GetNat(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.Nat, error) + CreateNat(ctx context.Context, nat *api.Nat, ignoredErrors ...[]int32) (*api.Nat, error) + DeleteNat(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.Nat, error) + ListLocalNats(ctx context.Context, natIP *netip.Addr, ignoredErrors ...[]int32) (*api.NatList, error) + + CreateNeighborNat(ctx context.Context, nat *api.NeighborNat, ignoredErrors ...[]int32) (*api.NeighborNat, error) + ListNats(ctx context.Context, natIP *netip.Addr, natType string, ignoredErrors ...[]int32) (*api.NatList, error) + DeleteNeighborNat(ctx context.Context, neigbhorNat *api.NeighborNat, ignoredErrors ...[]int32) (*api.NeighborNat, error) + ListNeighborNats(ctx context.Context, natIP *netip.Addr, ignoredErrors ...[]int32) (*api.NatList, error) + + ListFirewallRules(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.FirewallRuleList, error) + CreateFirewallRule(ctx context.Context, fwRule *api.FirewallRule, ignoredErrors ...[]int32) (*api.FirewallRule, error) + GetFirewallRule(ctx context.Context, interfaceID string, ruleID string, ignoredErrors ...[]int32) (*api.FirewallRule, error) + DeleteFirewallRule(ctx context.Context, interfaceID string, ruleID string, ignoredErrors ...[]int32) (*api.FirewallRule, error) + + CheckInitialized(ctx context.Context, ignoredErrors ...[]int32) (*api.Initialized, error) + Initialize(ctx context.Context, ignoredErrors ...[]int32) (*api.Initialized, error) + GetVni(ctx context.Context, vni uint32, vniType uint8, ignoredErrors ...[]int32) (*api.Vni, error) + ResetVni(ctx context.Context, vni uint32, vniType uint8, ignoredErrors ...[]int32) (*api.Vni, error) + GetVersion(ctx context.Context, version *api.Version, ignoredErrors ...[]int32) (*api.Version, error) } type client struct { @@ -85,7 +85,7 @@ func NewClient(protoClient dpdkproto.DPDKonmetalClient) Client { return &client{protoClient} } -func (c *client) GetLoadBalancer(ctx context.Context, id string, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancer, error) { +func (c *client) GetLoadBalancer(ctx context.Context, id string, ignoredErrors ...[]int32) (*api.LoadBalancer, error) { res, err := c.DPDKonmetalClient.GetLoadBalancer(ctx, &dpdkproto.GetLoadBalancerRequest{ LoadbalancerId: []byte(id), }) @@ -98,12 +98,12 @@ func (c *client) GetLoadBalancer(ctx context.Context, id string, ignoredErrors . Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retLoadBalancer, errors.GetError(res.Status, ignoredErrors) + return retLoadBalancer, errors.GetError(res.Status, ignoredErrors[0]) } return api.ProtoLoadBalancerToLoadBalancer(res, id) } -func (c *client) CreateLoadBalancer(ctx context.Context, lb *api.LoadBalancer, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancer, error) { +func (c *client) CreateLoadBalancer(ctx context.Context, lb *api.LoadBalancer, ignoredErrors ...[]int32) (*api.LoadBalancer, error) { var lbPorts = make([]*dpdkproto.LbPort, 0, len(lb.Spec.Lbports)) for _, p := range lb.Spec.Lbports { lbPort := &dpdkproto.LbPort{Port: p.Port, Protocol: dpdkproto.Protocol(p.Protocol)} @@ -124,7 +124,7 @@ func (c *client) CreateLoadBalancer(ctx context.Context, lb *api.LoadBalancer, i Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retLoadBalancer, errors.GetError(res.Status, ignoredErrors) + return retLoadBalancer, errors.GetError(res.Status, ignoredErrors[0]) } underlayRoute, err := netip.ParseAddr(string(res.GetUnderlayRoute())) @@ -137,7 +137,7 @@ func (c *client) CreateLoadBalancer(ctx context.Context, lb *api.LoadBalancer, i return retLoadBalancer, nil } -func (c *client) DeleteLoadBalancer(ctx context.Context, id string, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancer, error) { +func (c *client) DeleteLoadBalancer(ctx context.Context, id string, ignoredErrors ...[]int32) (*api.LoadBalancer, error) { res, err := c.DPDKonmetalClient.DeleteLoadBalancer(ctx, &dpdkproto.DeleteLoadBalancerRequest{ LoadbalancerId: []byte(id), }) @@ -150,12 +150,12 @@ func (c *client) DeleteLoadBalancer(ctx context.Context, id string, ignoredError Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retLoadBalancer, errors.GetError(res.Status, ignoredErrors) + return retLoadBalancer, errors.GetError(res.Status, ignoredErrors[0]) } return retLoadBalancer, nil } -func (c *client) ListLoadBalancerPrefixes(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.PrefixList, error) { +func (c *client) ListLoadBalancerPrefixes(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.PrefixList, error) { res, err := c.DPDKonmetalClient.ListLoadBalancerPrefixes(ctx, &dpdkproto.ListLoadBalancerPrefixesRequest{ InterfaceId: []byte(interfaceID), }) @@ -182,7 +182,7 @@ func (c *client) ListLoadBalancerPrefixes(ctx context.Context, interfaceID strin }, nil } -func (c *client) CreateLoadBalancerPrefix(ctx context.Context, lbprefix *api.LoadBalancerPrefix, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancerPrefix, error) { +func (c *client) CreateLoadBalancerPrefix(ctx context.Context, lbprefix *api.LoadBalancerPrefix, ignoredErrors ...[]int32) (*api.LoadBalancerPrefix, error) { res, err := c.DPDKonmetalClient.CreateLoadBalancerPrefix(ctx, &dpdkproto.CreateLoadBalancerPrefixRequest{ InterfaceId: []byte(lbprefix.InterfaceID), Prefix: &dpdkproto.Prefix{ @@ -202,7 +202,7 @@ func (c *client) CreateLoadBalancerPrefix(ctx context.Context, lbprefix *api.Loa Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retLBPrefix, errors.GetError(res.Status, ignoredErrors) + return retLBPrefix, errors.GetError(res.Status, ignoredErrors[0]) } underlayRoute, err := netip.ParseAddr(string(res.GetUnderlayRoute())) if err != nil { @@ -212,7 +212,7 @@ func (c *client) CreateLoadBalancerPrefix(ctx context.Context, lbprefix *api.Loa return retLBPrefix, nil } -func (c *client) DeleteLoadBalancerPrefix(ctx context.Context, interfaceID string, prefix *netip.Prefix, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancerPrefix, error) { +func (c *client) DeleteLoadBalancerPrefix(ctx context.Context, interfaceID string, prefix *netip.Prefix, ignoredErrors ...[]int32) (*api.LoadBalancerPrefix, error) { res, err := c.DPDKonmetalClient.DeleteLoadBalancerPrefix(ctx, &dpdkproto.DeleteLoadBalancerPrefixRequest{ InterfaceId: []byte(interfaceID), Prefix: &dpdkproto.Prefix{ @@ -230,12 +230,12 @@ func (c *client) DeleteLoadBalancerPrefix(ctx context.Context, interfaceID strin Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retLBPrefix, errors.GetError(res.Status, ignoredErrors) + return retLBPrefix, errors.GetError(res.Status, ignoredErrors[0]) } return retLBPrefix, nil } -func (c *client) ListLoadBalancerTargets(ctx context.Context, loadBalancerID string, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancerTargetList, error) { +func (c *client) ListLoadBalancerTargets(ctx context.Context, loadBalancerID string, ignoredErrors ...[]int32) (*api.LoadBalancerTargetList, error) { res, err := c.DPDKonmetalClient.ListLoadBalancerTargets(ctx, &dpdkproto.ListLoadBalancerTargetsRequest{ LoadbalancerId: []byte(loadBalancerID), }) @@ -245,7 +245,7 @@ func (c *client) ListLoadBalancerTargets(ctx context.Context, loadBalancerID str if res.GetStatus().GetCode() != 0 { return &api.LoadBalancerTargetList{ TypeMeta: api.TypeMeta{Kind: api.LoadBalancerTargetListKind}, - Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors) + Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors[0]) } lbtargets := make([]api.LoadBalancerTarget, len(res.GetTargetIps())) @@ -269,7 +269,7 @@ func (c *client) ListLoadBalancerTargets(ctx context.Context, loadBalancerID str }, nil } -func (c *client) CreateLoadBalancerTarget(ctx context.Context, lbtarget *api.LoadBalancerTarget, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancerTarget, error) { +func (c *client) CreateLoadBalancerTarget(ctx context.Context, lbtarget *api.LoadBalancerTarget, ignoredErrors ...[]int32) (*api.LoadBalancerTarget, error) { res, err := c.DPDKonmetalClient.CreateLoadBalancerTarget(ctx, &dpdkproto.CreateLoadBalancerTargetRequest{ LoadbalancerId: []byte(lbtarget.LoadBalancerTargetMeta.LoadbalancerID), TargetIp: api.NetIPAddrToProtoIpAddress(*lbtarget.Spec.TargetIP), @@ -283,13 +283,13 @@ func (c *client) CreateLoadBalancerTarget(ctx context.Context, lbtarget *api.Loa Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retLBTarget, errors.GetError(res.Status, ignoredErrors) + return retLBTarget, errors.GetError(res.Status, ignoredErrors[0]) } retLBTarget.Spec = lbtarget.Spec return retLBTarget, nil } -func (c *client) DeleteLoadBalancerTarget(ctx context.Context, lbid string, targetIP *netip.Addr, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancerTarget, error) { +func (c *client) DeleteLoadBalancerTarget(ctx context.Context, lbid string, targetIP *netip.Addr, ignoredErrors ...[]int32) (*api.LoadBalancerTarget, error) { res, err := c.DPDKonmetalClient.DeleteLoadBalancerTarget(ctx, &dpdkproto.DeleteLoadBalancerTargetRequest{ LoadbalancerId: []byte(lbid), TargetIp: api.NetIPAddrToProtoIpAddress(*targetIP), @@ -303,12 +303,12 @@ func (c *client) DeleteLoadBalancerTarget(ctx context.Context, lbid string, targ Status: api.ProtoStatusToStatus(res.Status), } if res.Status.GetCode() != 0 { - return retLBTarget, errors.GetError(res.Status, ignoredErrors) + return retLBTarget, errors.GetError(res.Status, ignoredErrors[0]) } return retLBTarget, nil } -func (c *client) GetInterface(ctx context.Context, id string, ignoredErrors ...errors.IgnoredErrors) (*api.Interface, error) { +func (c *client) GetInterface(ctx context.Context, id string, ignoredErrors ...[]int32) (*api.Interface, error) { res, err := c.DPDKonmetalClient.GetInterface(ctx, &dpdkproto.GetInterfaceRequest{ InterfaceId: []byte(id), }) @@ -319,12 +319,12 @@ func (c *client) GetInterface(ctx context.Context, id string, ignoredErrors ...e return &api.Interface{ TypeMeta: api.TypeMeta{Kind: api.InterfaceKind}, InterfaceMeta: api.InterfaceMeta{ID: id}, - Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors) + Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors[0]) } return api.ProtoInterfaceToInterface(res.GetInterface()) } -func (c *client) ListInterfaces(ctx context.Context, ignoredErrors ...errors.IgnoredErrors) (*api.InterfaceList, error) { +func (c *client) ListInterfaces(ctx context.Context, ignoredErrors ...[]int32) (*api.InterfaceList, error) { res, err := c.DPDKonmetalClient.ListInterfaces(ctx, &dpdkproto.ListInterfacesRequest{}) if err != nil { return nil, err @@ -347,7 +347,7 @@ func (c *client) ListInterfaces(ctx context.Context, ignoredErrors ...errors.Ign }, nil } -func (c *client) CreateInterface(ctx context.Context, iface *api.Interface, ignoredErrors ...errors.IgnoredErrors) (*api.Interface, error) { +func (c *client) CreateInterface(ctx context.Context, iface *api.Interface, ignoredErrors ...[]int32) (*api.Interface, error) { req := dpdkproto.CreateInterfaceRequest{ InterfaceType: dpdkproto.InterfaceType_VIRTUAL, InterfaceId: []byte(iface.ID), @@ -372,7 +372,7 @@ func (c *client) CreateInterface(ctx context.Context, iface *api.Interface, igno Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retInterface, errors.GetError(res.Status, ignoredErrors) + return retInterface, errors.GetError(res.Status, ignoredErrors[0]) } underlayRoute, err := netip.ParseAddr(string(res.GetUnderlayRoute())) @@ -392,7 +392,7 @@ func (c *client) CreateInterface(ctx context.Context, iface *api.Interface, igno return retInterface, nil } -func (c *client) DeleteInterface(ctx context.Context, id string, ignoredErrors ...errors.IgnoredErrors) (*api.Interface, error) { +func (c *client) DeleteInterface(ctx context.Context, id string, ignoredErrors ...[]int32) (*api.Interface, error) { res, err := c.DPDKonmetalClient.DeleteInterface(ctx, &dpdkproto.DeleteInterfaceRequest{ InterfaceId: []byte(id), }) @@ -405,12 +405,12 @@ func (c *client) DeleteInterface(ctx context.Context, id string, ignoredErrors . Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retInterface, errors.GetError(res.Status, ignoredErrors) + return retInterface, errors.GetError(res.Status, ignoredErrors[0]) } return retInterface, nil } -func (c *client) GetVirtualIP(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.VirtualIP, error) { +func (c *client) GetVirtualIP(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.VirtualIP, error) { res, err := c.DPDKonmetalClient.GetVip(ctx, &dpdkproto.GetVipRequest{ InterfaceId: []byte(interfaceID), }) @@ -421,12 +421,12 @@ func (c *client) GetVirtualIP(ctx context.Context, interfaceID string, ignoredEr return &api.VirtualIP{ TypeMeta: api.TypeMeta{Kind: api.VirtualIPKind}, VirtualIPMeta: api.VirtualIPMeta{InterfaceID: interfaceID}, - Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors) + Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors[0]) } return api.ProtoVirtualIPToVirtualIP(interfaceID, res) } -func (c *client) CreateVirtualIP(ctx context.Context, virtualIP *api.VirtualIP, ignoredErrors ...errors.IgnoredErrors) (*api.VirtualIP, error) { +func (c *client) CreateVirtualIP(ctx context.Context, virtualIP *api.VirtualIP, ignoredErrors ...[]int32) (*api.VirtualIP, error) { res, err := c.DPDKonmetalClient.CreateVip(ctx, &dpdkproto.CreateVipRequest{ InterfaceId: []byte(virtualIP.InterfaceID), VipIp: api.NetIPAddrToProtoIpAddress(*virtualIP.Spec.IP), @@ -443,7 +443,7 @@ func (c *client) CreateVirtualIP(ctx context.Context, virtualIP *api.VirtualIP, Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retVirtualIP, errors.GetError(res.Status, ignoredErrors) + return retVirtualIP, errors.GetError(res.Status, ignoredErrors[0]) } underlayRoute, err := netip.ParseAddr(string(res.GetUnderlayRoute())) if err != nil { @@ -453,7 +453,7 @@ func (c *client) CreateVirtualIP(ctx context.Context, virtualIP *api.VirtualIP, return retVirtualIP, nil } -func (c *client) DeleteVirtualIP(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.VirtualIP, error) { +func (c *client) DeleteVirtualIP(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.VirtualIP, error) { res, err := c.DPDKonmetalClient.DeleteVip(ctx, &dpdkproto.DeleteVipRequest{ InterfaceId: []byte(interfaceID), }) @@ -466,12 +466,12 @@ func (c *client) DeleteVirtualIP(ctx context.Context, interfaceID string, ignore Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retVirtualIP, errors.GetError(res.Status, ignoredErrors) + return retVirtualIP, errors.GetError(res.Status, ignoredErrors[0]) } return retVirtualIP, nil } -func (c *client) ListPrefixes(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.PrefixList, error) { +func (c *client) ListPrefixes(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.PrefixList, error) { res, err := c.DPDKonmetalClient.ListPrefixes(ctx, &dpdkproto.ListPrefixesRequest{ InterfaceId: []byte(interfaceID), }) @@ -497,7 +497,7 @@ func (c *client) ListPrefixes(ctx context.Context, interfaceID string, ignoredEr }, nil } -func (c *client) CreatePrefix(ctx context.Context, prefix *api.Prefix, ignoredErrors ...errors.IgnoredErrors) (*api.Prefix, error) { +func (c *client) CreatePrefix(ctx context.Context, prefix *api.Prefix, ignoredErrors ...[]int32) (*api.Prefix, error) { res, err := c.DPDKonmetalClient.CreatePrefix(ctx, &dpdkproto.CreatePrefixRequest{ InterfaceId: []byte(prefix.InterfaceID), Prefix: &dpdkproto.Prefix{ @@ -516,7 +516,7 @@ func (c *client) CreatePrefix(ctx context.Context, prefix *api.Prefix, ignoredEr } if res.GetStatus().GetCode() != 0 { - return retPrefix, errors.GetError(res.Status, ignoredErrors) + return retPrefix, errors.GetError(res.Status, ignoredErrors[0]) } underlayRoute, err := netip.ParseAddr(string(res.GetUnderlayRoute())) if err != nil { @@ -526,7 +526,7 @@ func (c *client) CreatePrefix(ctx context.Context, prefix *api.Prefix, ignoredEr return retPrefix, nil } -func (c *client) DeletePrefix(ctx context.Context, interfaceID string, prefix *netip.Prefix, ignoredErrors ...errors.IgnoredErrors) (*api.Prefix, error) { +func (c *client) DeletePrefix(ctx context.Context, interfaceID string, prefix *netip.Prefix, ignoredErrors ...[]int32) (*api.Prefix, error) { res, err := c.DPDKonmetalClient.DeletePrefix(ctx, &dpdkproto.DeletePrefixRequest{ InterfaceId: []byte(interfaceID), Prefix: &dpdkproto.Prefix{ @@ -544,12 +544,12 @@ func (c *client) DeletePrefix(ctx context.Context, interfaceID string, prefix *n Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retPrefix, errors.GetError(res.Status, ignoredErrors) + return retPrefix, errors.GetError(res.Status, ignoredErrors[0]) } return retPrefix, nil } -func (c *client) CreateRoute(ctx context.Context, route *api.Route, ignoredErrors ...errors.IgnoredErrors) (*api.Route, error) { +func (c *client) CreateRoute(ctx context.Context, route *api.Route, ignoredErrors ...[]int32) (*api.Route, error) { res, err := c.DPDKonmetalClient.CreateRoute(ctx, &dpdkproto.CreateRouteRequest{ Vni: route.VNI, Route: &dpdkproto.Route{ @@ -574,13 +574,13 @@ func (c *client) CreateRoute(ctx context.Context, route *api.Route, ignoredError Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retRoute, errors.GetError(res.Status, ignoredErrors) + return retRoute, errors.GetError(res.Status, ignoredErrors[0]) } retRoute.Spec = route.Spec return retRoute, nil } -func (c *client) DeleteRoute(ctx context.Context, vni uint32, prefix *netip.Prefix, ignoredErrors ...errors.IgnoredErrors) (*api.Route, error) { +func (c *client) DeleteRoute(ctx context.Context, vni uint32, prefix *netip.Prefix, ignoredErrors ...[]int32) (*api.Route, error) { res, err := c.DPDKonmetalClient.DeleteRoute(ctx, &dpdkproto.DeleteRouteRequest{ Vni: vni, Route: &dpdkproto.Route{ @@ -604,12 +604,12 @@ func (c *client) DeleteRoute(ctx context.Context, vni uint32, prefix *netip.Pref Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retRoute, errors.GetError(res.Status, ignoredErrors) + return retRoute, errors.GetError(res.Status, ignoredErrors[0]) } return retRoute, nil } -func (c *client) ListRoutes(ctx context.Context, vni uint32, ignoredErrors ...errors.IgnoredErrors) (*api.RouteList, error) { +func (c *client) ListRoutes(ctx context.Context, vni uint32, ignoredErrors ...[]int32) (*api.RouteList, error) { res, err := c.DPDKonmetalClient.ListRoutes(ctx, &dpdkproto.ListRoutesRequest{ Vni: vni, }) @@ -635,7 +635,7 @@ func (c *client) ListRoutes(ctx context.Context, vni uint32, ignoredErrors ...er }, nil } -func (c *client) GetNat(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.Nat, error) { +func (c *client) GetNat(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.Nat, error) { res, err := c.DPDKonmetalClient.GetNat(ctx, &dpdkproto.GetNatRequest{InterfaceId: []byte(interfaceID)}) if err != nil { return &api.Nat{}, err @@ -644,12 +644,12 @@ func (c *client) GetNat(ctx context.Context, interfaceID string, ignoredErrors . return &api.Nat{ TypeMeta: api.TypeMeta{Kind: api.NatKind}, NatMeta: api.NatMeta{InterfaceID: interfaceID}, - Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors) + Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors[0]) } return api.ProtoNatToNat(res, interfaceID) } -func (c *client) CreateNat(ctx context.Context, nat *api.Nat, ignoredErrors ...errors.IgnoredErrors) (*api.Nat, error) { +func (c *client) CreateNat(ctx context.Context, nat *api.Nat, ignoredErrors ...[]int32) (*api.Nat, error) { res, err := c.DPDKonmetalClient.CreateNat(ctx, &dpdkproto.CreateNatRequest{ InterfaceId: []byte(nat.NatMeta.InterfaceID), NatIp: api.NetIPAddrToProtoIpAddress(*nat.Spec.NatIP), @@ -665,7 +665,7 @@ func (c *client) CreateNat(ctx context.Context, nat *api.Nat, ignoredErrors ...e Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retNat, errors.GetError(res.Status, ignoredErrors) + return retNat, errors.GetError(res.Status, ignoredErrors[0]) } underlayRoute, err := netip.ParseAddr(string(res.GetUnderlayRoute())) @@ -678,7 +678,7 @@ func (c *client) CreateNat(ctx context.Context, nat *api.Nat, ignoredErrors ...e return retNat, nil } -func (c *client) DeleteNat(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.Nat, error) { +func (c *client) DeleteNat(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.Nat, error) { res, err := c.DPDKonmetalClient.DeleteNat(ctx, &dpdkproto.DeleteNatRequest{ InterfaceId: []byte(interfaceID), }) @@ -691,16 +691,16 @@ func (c *client) DeleteNat(ctx context.Context, interfaceID string, ignoredError Status: api.ProtoStatusToStatus(res.Status), } if res.Status.GetCode() != 0 { - return retNat, errors.GetError(res.Status, ignoredErrors) + return retNat, errors.GetError(res.Status, ignoredErrors[0]) } return retNat, nil } -func (c *client) ListLocalNats(ctx context.Context, natIP *netip.Addr, ignoredErrors ...errors.IgnoredErrors) (*api.NatList, error) { +func (c *client) ListLocalNats(ctx context.Context, natIP *netip.Addr, ignoredErrors ...[]int32) (*api.NatList, error) { return c.ListNats(ctx, natIP, "local", ignoredErrors...) } -func (c *client) CreateNeighborNat(ctx context.Context, nNat *api.NeighborNat, ignoredErrors ...errors.IgnoredErrors) (*api.NeighborNat, error) { +func (c *client) CreateNeighborNat(ctx context.Context, nNat *api.NeighborNat, ignoredErrors ...[]int32) (*api.NeighborNat, error) { res, err := c.DPDKonmetalClient.CreateNeighborNat(ctx, &dpdkproto.CreateNeighborNatRequest{ NatIp: api.NetIPAddrToProtoIpAddress(*nNat.NatIP), @@ -718,13 +718,13 @@ func (c *client) CreateNeighborNat(ctx context.Context, nNat *api.NeighborNat, i Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retnNat, errors.GetError(res.Status, ignoredErrors) + return retnNat, errors.GetError(res.Status, ignoredErrors[0]) } retnNat.Spec = nNat.Spec return retnNat, nil } -func (c *client) ListNats(ctx context.Context, natIP *netip.Addr, natType string, ignoredErrors ...errors.IgnoredErrors) (*api.NatList, error) { +func (c *client) ListNats(ctx context.Context, natIP *netip.Addr, natType string, ignoredErrors ...[]int32) (*api.NatList, error) { var nType int32 switch strings.ToLower(natType) { case "local", "1": @@ -803,7 +803,7 @@ func (c *client) ListNats(ctx context.Context, natIP *netip.Addr, natType string }, nil } -func (c *client) DeleteNeighborNat(ctx context.Context, neigbhorNat *api.NeighborNat, ignoredErrors ...errors.IgnoredErrors) (*api.NeighborNat, error) { +func (c *client) DeleteNeighborNat(ctx context.Context, neigbhorNat *api.NeighborNat, ignoredErrors ...[]int32) (*api.NeighborNat, error) { res, err := c.DPDKonmetalClient.DeleteNeighborNat(ctx, &dpdkproto.DeleteNeighborNatRequest{ NatIp: api.NetIPAddrToProtoIpAddress(*neigbhorNat.NatIP), Vni: neigbhorNat.Spec.Vni, @@ -819,16 +819,16 @@ func (c *client) DeleteNeighborNat(ctx context.Context, neigbhorNat *api.Neighbo Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return nnat, errors.GetError(res.Status, ignoredErrors) + return nnat, errors.GetError(res.Status, ignoredErrors[0]) } return nnat, nil } -func (c *client) ListNeighborNats(ctx context.Context, natIP *netip.Addr, ignoredErrors ...errors.IgnoredErrors) (*api.NatList, error) { +func (c *client) ListNeighborNats(ctx context.Context, natIP *netip.Addr, ignoredErrors ...[]int32) (*api.NatList, error) { return c.ListNats(ctx, natIP, "neigh", ignoredErrors...) } -func (c *client) ListFirewallRules(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.FirewallRuleList, error) { +func (c *client) ListFirewallRules(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.FirewallRuleList, error) { res, err := c.DPDKonmetalClient.ListFirewallRules(ctx, &dpdkproto.ListFirewallRulesRequest{ InterfaceId: []byte(interfaceID), }) @@ -853,7 +853,7 @@ func (c *client) ListFirewallRules(ctx context.Context, interfaceID string, igno }, nil } -func (c *client) CreateFirewallRule(ctx context.Context, fwRule *api.FirewallRule, ignoredErrors ...errors.IgnoredErrors) (*api.FirewallRule, error) { +func (c *client) CreateFirewallRule(ctx context.Context, fwRule *api.FirewallRule, ignoredErrors ...[]int32) (*api.FirewallRule, error) { var action, direction uint8 switch strings.ToLower(fwRule.Spec.FirewallAction) { @@ -907,13 +907,13 @@ func (c *client) CreateFirewallRule(ctx context.Context, fwRule *api.FirewallRul Spec: api.FirewallRuleSpec{RuleID: fwRule.Spec.RuleID}, Status: api.ProtoStatusToStatus(res.Status)} if res.GetStatus().GetCode() != 0 { - return retFwrule, errors.GetError(res.Status, ignoredErrors) + return retFwrule, errors.GetError(res.Status, ignoredErrors[0]) } retFwrule.Spec = fwRule.Spec return retFwrule, nil } -func (c *client) GetFirewallRule(ctx context.Context, ruleID string, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.FirewallRule, error) { +func (c *client) GetFirewallRule(ctx context.Context, ruleID string, interfaceID string, ignoredErrors ...[]int32) (*api.FirewallRule, error) { res, err := c.DPDKonmetalClient.GetFirewallRule(ctx, &dpdkproto.GetFirewallRuleRequest{ InterfaceId: []byte(interfaceID), RuleId: []byte(ruleID), @@ -927,13 +927,13 @@ func (c *client) GetFirewallRule(ctx context.Context, ruleID string, interfaceID FirewallRuleMeta: api.FirewallRuleMeta{InterfaceID: interfaceID}, Spec: api.FirewallRuleSpec{RuleID: ruleID}, Status: api.ProtoStatusToStatus(res.Status), - }, errors.GetError(res.Status, ignoredErrors) + }, errors.GetError(res.Status, ignoredErrors[0]) } return api.ProtoFwRuleToFwRule(res.Rule, interfaceID) } -func (c *client) DeleteFirewallRule(ctx context.Context, interfaceID string, ruleID string, ignoredErrors ...errors.IgnoredErrors) (*api.FirewallRule, error) { +func (c *client) DeleteFirewallRule(ctx context.Context, interfaceID string, ruleID string, ignoredErrors ...[]int32) (*api.FirewallRule, error) { res, err := c.DPDKonmetalClient.DeleteFirewallRule(ctx, &dpdkproto.DeleteFirewallRuleRequest{ InterfaceId: []byte(interfaceID), RuleId: []byte(ruleID), @@ -948,12 +948,12 @@ func (c *client) DeleteFirewallRule(ctx context.Context, interfaceID string, rul Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retFwrule, errors.GetError(res.Status, ignoredErrors) + return retFwrule, errors.GetError(res.Status, ignoredErrors[0]) } return retFwrule, nil } -func (c *client) CheckInitialized(ctx context.Context, ignoredErrors ...errors.IgnoredErrors) (*api.Initialized, error) { +func (c *client) CheckInitialized(ctx context.Context, ignoredErrors ...[]int32) (*api.Initialized, error) { res, err := c.DPDKonmetalClient.CheckInitialized(ctx, &dpdkproto.CheckInitializedRequest{}) if err != nil { return &api.Initialized{}, err @@ -963,13 +963,13 @@ func (c *client) CheckInitialized(ctx context.Context, ignoredErrors ...errors.I Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retInitialized, errors.GetError(res.Status, ignoredErrors) + return retInitialized, errors.GetError(res.Status, ignoredErrors[0]) } retInitialized.Spec.UUID = res.Uuid return retInitialized, nil } -func (c *client) Initialize(ctx context.Context, ignoredErrors ...errors.IgnoredErrors) (*api.Initialized, error) { +func (c *client) Initialize(ctx context.Context, ignoredErrors ...[]int32) (*api.Initialized, error) { res, err := c.DPDKonmetalClient.Initialize(ctx, &dpdkproto.InitializeRequest{}) if err != nil { return &api.Initialized{}, err @@ -979,13 +979,13 @@ func (c *client) Initialize(ctx context.Context, ignoredErrors ...errors.Ignored Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retInit, errors.GetError(res.Status, ignoredErrors) + return retInit, errors.GetError(res.Status, ignoredErrors[0]) } retInit.Spec.UUID = res.Uuid return retInit, nil } -func (c *client) GetVni(ctx context.Context, vni uint32, vniType uint8, ignoredErrors ...errors.IgnoredErrors) (*api.Vni, error) { +func (c *client) GetVni(ctx context.Context, vni uint32, vniType uint8, ignoredErrors ...[]int32) (*api.Vni, error) { res, err := c.DPDKonmetalClient.CheckVniInUse(ctx, &dpdkproto.CheckVniInUseRequest{ Vni: vni, Type: dpdkproto.VniType(vniType), @@ -999,13 +999,13 @@ func (c *client) GetVni(ctx context.Context, vni uint32, vniType uint8, ignoredE Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retVni, errors.GetError(res.Status, ignoredErrors) + return retVni, errors.GetError(res.Status, ignoredErrors[0]) } retVni.Spec.InUse = res.InUse return retVni, nil } -func (c *client) ResetVni(ctx context.Context, vni uint32, vniType uint8, ignoredErrors ...errors.IgnoredErrors) (*api.Vni, error) { +func (c *client) ResetVni(ctx context.Context, vni uint32, vniType uint8, ignoredErrors ...[]int32) (*api.Vni, error) { res, err := c.DPDKonmetalClient.ResetVni(ctx, &dpdkproto.ResetVniRequest{ Vni: vni, Type: dpdkproto.VniType(vniType), @@ -1019,12 +1019,12 @@ func (c *client) ResetVni(ctx context.Context, vni uint32, vniType uint8, ignore Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retVni, errors.GetError(res.Status, ignoredErrors) + return retVni, errors.GetError(res.Status, ignoredErrors[0]) } return retVni, nil } -func (c *client) GetVersion(ctx context.Context, version *api.Version, ignoredErrors ...errors.IgnoredErrors) (*api.Version, error) { +func (c *client) GetVersion(ctx context.Context, version *api.Version, ignoredErrors ...[]int32) (*api.Version, error) { version.ClientProtocol = strings.TrimSpace(dpdkproto.GeneratedFrom) res, err := c.DPDKonmetalClient.GetVersion(ctx, &dpdkproto.GetVersionRequest{ ClientProtocol: version.ClientProtocol, @@ -1036,7 +1036,7 @@ func (c *client) GetVersion(ctx context.Context, version *api.Version, ignoredEr } version.Status = api.ProtoStatusToStatus(res.Status) if res.GetStatus().GetCode() != 0 { - return version, errors.GetError(res.Status, ignoredErrors) + return version, errors.GetError(res.Status, ignoredErrors[0]) } version.Spec.ServiceProtocol = res.ServiceProtocol version.Spec.ServiceVersion = res.ServiceVersion diff --git a/errors/errors.go b/errors/errors.go index c0ad1e9..9a1798a 100644 --- a/errors/errors.go +++ b/errors/errors.go @@ -66,10 +66,6 @@ const ( StatusErrorString = "rpc error" ) -type IgnoredErrors struct { - Codes []int32 -} - type StatusError struct { errorCode int32 message string @@ -97,12 +93,13 @@ func NewStatusError(errorCode int32, message string) *StatusError { } } -func GetError(status *dpdkproto.Status, ignoredErrors []IgnoredErrors) error { +// Ignore requested status errors +func GetError(status *dpdkproto.Status, ignoredErrors []int32) error { if status.Code == 0 { return nil } if len(ignoredErrors) > 0 { - for _, ignoredError := range ignoredErrors[0].Codes { + for _, ignoredError := range ignoredErrors { if status.Code == ignoredError { return nil } @@ -131,3 +128,11 @@ func IgnoreStatusErrorCode(err error, errorCodes ...int32) error { } return err } + +// Create array of status error codes to be ignored +func Ignore(errorCodes ...int32) []int32 { + arr := make([]int32, 0, len(errorCodes)) + arr = append(arr, errorCodes...) + + return arr +} From d35c3ad0c794d55ba259955507df7f38aeb1fbe0 Mon Sep 17 00:00:00 2001 From: Viliam Lorinc <viliam.lorinc@t-systems.com> Date: Tue, 19 Sep 2023 12:51:09 +0200 Subject: [PATCH 2/5] fix empty ignoredErrors handling --- client/client.go | 62 ++++++++++++++++++++++++------------------------ errors/errors.go | 4 ++-- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/client/client.go b/client/client.go index 255f433..7154e12 100644 --- a/client/client.go +++ b/client/client.go @@ -98,7 +98,7 @@ func (c *client) GetLoadBalancer(ctx context.Context, id string, ignoredErrors . Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retLoadBalancer, errors.GetError(res.Status, ignoredErrors[0]) + return retLoadBalancer, errors.GetError(res.Status, ignoredErrors) } return api.ProtoLoadBalancerToLoadBalancer(res, id) } @@ -124,7 +124,7 @@ func (c *client) CreateLoadBalancer(ctx context.Context, lb *api.LoadBalancer, i Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retLoadBalancer, errors.GetError(res.Status, ignoredErrors[0]) + return retLoadBalancer, errors.GetError(res.Status, ignoredErrors) } underlayRoute, err := netip.ParseAddr(string(res.GetUnderlayRoute())) @@ -150,7 +150,7 @@ func (c *client) DeleteLoadBalancer(ctx context.Context, id string, ignoredError Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retLoadBalancer, errors.GetError(res.Status, ignoredErrors[0]) + return retLoadBalancer, errors.GetError(res.Status, ignoredErrors) } return retLoadBalancer, nil } @@ -202,7 +202,7 @@ func (c *client) CreateLoadBalancerPrefix(ctx context.Context, lbprefix *api.Loa Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retLBPrefix, errors.GetError(res.Status, ignoredErrors[0]) + return retLBPrefix, errors.GetError(res.Status, ignoredErrors) } underlayRoute, err := netip.ParseAddr(string(res.GetUnderlayRoute())) if err != nil { @@ -230,7 +230,7 @@ func (c *client) DeleteLoadBalancerPrefix(ctx context.Context, interfaceID strin Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retLBPrefix, errors.GetError(res.Status, ignoredErrors[0]) + return retLBPrefix, errors.GetError(res.Status, ignoredErrors) } return retLBPrefix, nil } @@ -245,7 +245,7 @@ func (c *client) ListLoadBalancerTargets(ctx context.Context, loadBalancerID str if res.GetStatus().GetCode() != 0 { return &api.LoadBalancerTargetList{ TypeMeta: api.TypeMeta{Kind: api.LoadBalancerTargetListKind}, - Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors[0]) + Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors) } lbtargets := make([]api.LoadBalancerTarget, len(res.GetTargetIps())) @@ -283,7 +283,7 @@ func (c *client) CreateLoadBalancerTarget(ctx context.Context, lbtarget *api.Loa Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retLBTarget, errors.GetError(res.Status, ignoredErrors[0]) + return retLBTarget, errors.GetError(res.Status, ignoredErrors) } retLBTarget.Spec = lbtarget.Spec return retLBTarget, nil @@ -303,7 +303,7 @@ func (c *client) DeleteLoadBalancerTarget(ctx context.Context, lbid string, targ Status: api.ProtoStatusToStatus(res.Status), } if res.Status.GetCode() != 0 { - return retLBTarget, errors.GetError(res.Status, ignoredErrors[0]) + return retLBTarget, errors.GetError(res.Status, ignoredErrors) } return retLBTarget, nil } @@ -319,7 +319,7 @@ func (c *client) GetInterface(ctx context.Context, id string, ignoredErrors ...[ return &api.Interface{ TypeMeta: api.TypeMeta{Kind: api.InterfaceKind}, InterfaceMeta: api.InterfaceMeta{ID: id}, - Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors[0]) + Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors) } return api.ProtoInterfaceToInterface(res.GetInterface()) } @@ -372,7 +372,7 @@ func (c *client) CreateInterface(ctx context.Context, iface *api.Interface, igno Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retInterface, errors.GetError(res.Status, ignoredErrors[0]) + return retInterface, errors.GetError(res.Status, ignoredErrors) } underlayRoute, err := netip.ParseAddr(string(res.GetUnderlayRoute())) @@ -405,7 +405,7 @@ func (c *client) DeleteInterface(ctx context.Context, id string, ignoredErrors . Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retInterface, errors.GetError(res.Status, ignoredErrors[0]) + return retInterface, errors.GetError(res.Status, ignoredErrors) } return retInterface, nil } @@ -421,7 +421,7 @@ func (c *client) GetVirtualIP(ctx context.Context, interfaceID string, ignoredEr return &api.VirtualIP{ TypeMeta: api.TypeMeta{Kind: api.VirtualIPKind}, VirtualIPMeta: api.VirtualIPMeta{InterfaceID: interfaceID}, - Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors[0]) + Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors) } return api.ProtoVirtualIPToVirtualIP(interfaceID, res) } @@ -443,7 +443,7 @@ func (c *client) CreateVirtualIP(ctx context.Context, virtualIP *api.VirtualIP, Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retVirtualIP, errors.GetError(res.Status, ignoredErrors[0]) + return retVirtualIP, errors.GetError(res.Status, ignoredErrors) } underlayRoute, err := netip.ParseAddr(string(res.GetUnderlayRoute())) if err != nil { @@ -466,7 +466,7 @@ func (c *client) DeleteVirtualIP(ctx context.Context, interfaceID string, ignore Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retVirtualIP, errors.GetError(res.Status, ignoredErrors[0]) + return retVirtualIP, errors.GetError(res.Status, ignoredErrors) } return retVirtualIP, nil } @@ -516,7 +516,7 @@ func (c *client) CreatePrefix(ctx context.Context, prefix *api.Prefix, ignoredEr } if res.GetStatus().GetCode() != 0 { - return retPrefix, errors.GetError(res.Status, ignoredErrors[0]) + return retPrefix, errors.GetError(res.Status, ignoredErrors) } underlayRoute, err := netip.ParseAddr(string(res.GetUnderlayRoute())) if err != nil { @@ -544,7 +544,7 @@ func (c *client) DeletePrefix(ctx context.Context, interfaceID string, prefix *n Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retPrefix, errors.GetError(res.Status, ignoredErrors[0]) + return retPrefix, errors.GetError(res.Status, ignoredErrors) } return retPrefix, nil } @@ -574,7 +574,7 @@ func (c *client) CreateRoute(ctx context.Context, route *api.Route, ignoredError Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retRoute, errors.GetError(res.Status, ignoredErrors[0]) + return retRoute, errors.GetError(res.Status, ignoredErrors) } retRoute.Spec = route.Spec return retRoute, nil @@ -604,7 +604,7 @@ func (c *client) DeleteRoute(ctx context.Context, vni uint32, prefix *netip.Pref Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retRoute, errors.GetError(res.Status, ignoredErrors[0]) + return retRoute, errors.GetError(res.Status, ignoredErrors) } return retRoute, nil } @@ -644,7 +644,7 @@ func (c *client) GetNat(ctx context.Context, interfaceID string, ignoredErrors . return &api.Nat{ TypeMeta: api.TypeMeta{Kind: api.NatKind}, NatMeta: api.NatMeta{InterfaceID: interfaceID}, - Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors[0]) + Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors) } return api.ProtoNatToNat(res, interfaceID) } @@ -665,7 +665,7 @@ func (c *client) CreateNat(ctx context.Context, nat *api.Nat, ignoredErrors ...[ Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retNat, errors.GetError(res.Status, ignoredErrors[0]) + return retNat, errors.GetError(res.Status, ignoredErrors) } underlayRoute, err := netip.ParseAddr(string(res.GetUnderlayRoute())) @@ -691,7 +691,7 @@ func (c *client) DeleteNat(ctx context.Context, interfaceID string, ignoredError Status: api.ProtoStatusToStatus(res.Status), } if res.Status.GetCode() != 0 { - return retNat, errors.GetError(res.Status, ignoredErrors[0]) + return retNat, errors.GetError(res.Status, ignoredErrors) } return retNat, nil } @@ -718,7 +718,7 @@ func (c *client) CreateNeighborNat(ctx context.Context, nNat *api.NeighborNat, i Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retnNat, errors.GetError(res.Status, ignoredErrors[0]) + return retnNat, errors.GetError(res.Status, ignoredErrors) } retnNat.Spec = nNat.Spec return retnNat, nil @@ -819,7 +819,7 @@ func (c *client) DeleteNeighborNat(ctx context.Context, neigbhorNat *api.Neighbo Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return nnat, errors.GetError(res.Status, ignoredErrors[0]) + return nnat, errors.GetError(res.Status, ignoredErrors) } return nnat, nil } @@ -907,7 +907,7 @@ func (c *client) CreateFirewallRule(ctx context.Context, fwRule *api.FirewallRul Spec: api.FirewallRuleSpec{RuleID: fwRule.Spec.RuleID}, Status: api.ProtoStatusToStatus(res.Status)} if res.GetStatus().GetCode() != 0 { - return retFwrule, errors.GetError(res.Status, ignoredErrors[0]) + return retFwrule, errors.GetError(res.Status, ignoredErrors) } retFwrule.Spec = fwRule.Spec return retFwrule, nil @@ -927,7 +927,7 @@ func (c *client) GetFirewallRule(ctx context.Context, ruleID string, interfaceID FirewallRuleMeta: api.FirewallRuleMeta{InterfaceID: interfaceID}, Spec: api.FirewallRuleSpec{RuleID: ruleID}, Status: api.ProtoStatusToStatus(res.Status), - }, errors.GetError(res.Status, ignoredErrors[0]) + }, errors.GetError(res.Status, ignoredErrors) } return api.ProtoFwRuleToFwRule(res.Rule, interfaceID) @@ -948,7 +948,7 @@ func (c *client) DeleteFirewallRule(ctx context.Context, interfaceID string, rul Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retFwrule, errors.GetError(res.Status, ignoredErrors[0]) + return retFwrule, errors.GetError(res.Status, ignoredErrors) } return retFwrule, nil } @@ -963,7 +963,7 @@ func (c *client) CheckInitialized(ctx context.Context, ignoredErrors ...[]int32) Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retInitialized, errors.GetError(res.Status, ignoredErrors[0]) + return retInitialized, errors.GetError(res.Status, ignoredErrors) } retInitialized.Spec.UUID = res.Uuid return retInitialized, nil @@ -979,7 +979,7 @@ func (c *client) Initialize(ctx context.Context, ignoredErrors ...[]int32) (*api Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retInit, errors.GetError(res.Status, ignoredErrors[0]) + return retInit, errors.GetError(res.Status, ignoredErrors) } retInit.Spec.UUID = res.Uuid return retInit, nil @@ -999,7 +999,7 @@ func (c *client) GetVni(ctx context.Context, vni uint32, vniType uint8, ignoredE Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retVni, errors.GetError(res.Status, ignoredErrors[0]) + return retVni, errors.GetError(res.Status, ignoredErrors) } retVni.Spec.InUse = res.InUse return retVni, nil @@ -1019,7 +1019,7 @@ func (c *client) ResetVni(ctx context.Context, vni uint32, vniType uint8, ignore Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retVni, errors.GetError(res.Status, ignoredErrors[0]) + return retVni, errors.GetError(res.Status, ignoredErrors) } return retVni, nil } @@ -1036,7 +1036,7 @@ func (c *client) GetVersion(ctx context.Context, version *api.Version, ignoredEr } version.Status = api.ProtoStatusToStatus(res.Status) if res.GetStatus().GetCode() != 0 { - return version, errors.GetError(res.Status, ignoredErrors[0]) + return version, errors.GetError(res.Status, ignoredErrors) } version.Spec.ServiceProtocol = res.ServiceProtocol version.Spec.ServiceVersion = res.ServiceVersion diff --git a/errors/errors.go b/errors/errors.go index 9a1798a..0d7fb6a 100644 --- a/errors/errors.go +++ b/errors/errors.go @@ -94,12 +94,12 @@ func NewStatusError(errorCode int32, message string) *StatusError { } // Ignore requested status errors -func GetError(status *dpdkproto.Status, ignoredErrors []int32) error { +func GetError(status *dpdkproto.Status, ignoredErrors [][]int32) error { if status.Code == 0 { return nil } if len(ignoredErrors) > 0 { - for _, ignoredError := range ignoredErrors { + for _, ignoredError := range ignoredErrors[0] { if status.Code == ignoredError { return nil } From 8f2829d757a5b3af5bb8dfffc637c87f1a1b382b Mon Sep 17 00:00:00 2001 From: Viliam Lorinc <viliam.lorinc@t-systems.com> Date: Mon, 18 Sep 2023 16:07:10 +0200 Subject: [PATCH 3/5] change the handling of ignored errors --- client/client.go | 236 +++++++++++++++++++++++------------------------ errors/errors.go | 17 ++-- 2 files changed, 129 insertions(+), 124 deletions(-) diff --git a/client/client.go b/client/client.go index 2a86d76..995d5cb 100644 --- a/client/client.go +++ b/client/client.go @@ -26,55 +26,55 @@ import ( ) type Client interface { - GetLoadBalancer(ctx context.Context, id string, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancer, error) - CreateLoadBalancer(ctx context.Context, lb *api.LoadBalancer, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancer, error) - DeleteLoadBalancer(ctx context.Context, id string, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancer, error) - - ListLoadBalancerPrefixes(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.PrefixList, error) - CreateLoadBalancerPrefix(ctx context.Context, prefix *api.LoadBalancerPrefix, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancerPrefix, error) - DeleteLoadBalancerPrefix(ctx context.Context, interfaceID string, prefix *netip.Prefix, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancerPrefix, error) - - ListLoadBalancerTargets(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancerTargetList, error) - CreateLoadBalancerTarget(ctx context.Context, lbtarget *api.LoadBalancerTarget, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancerTarget, error) - DeleteLoadBalancerTarget(ctx context.Context, id string, targetIP *netip.Addr, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancerTarget, error) - - GetInterface(ctx context.Context, id string, ignoredErrors ...errors.IgnoredErrors) (*api.Interface, error) - ListInterfaces(ctx context.Context, ignoredErrors ...errors.IgnoredErrors) (*api.InterfaceList, error) - CreateInterface(ctx context.Context, iface *api.Interface, ignoredErrors ...errors.IgnoredErrors) (*api.Interface, error) - DeleteInterface(ctx context.Context, id string, ignoredErrors ...errors.IgnoredErrors) (*api.Interface, error) - - GetVirtualIP(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.VirtualIP, error) - CreateVirtualIP(ctx context.Context, virtualIP *api.VirtualIP, ignoredErrors ...errors.IgnoredErrors) (*api.VirtualIP, error) - DeleteVirtualIP(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.VirtualIP, error) - - ListPrefixes(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.PrefixList, error) - CreatePrefix(ctx context.Context, prefix *api.Prefix, ignoredErrors ...errors.IgnoredErrors) (*api.Prefix, error) - DeletePrefix(ctx context.Context, interfaceID string, prefix *netip.Prefix, ignoredErrors ...errors.IgnoredErrors) (*api.Prefix, error) - - ListRoutes(ctx context.Context, vni uint32, ignoredErrors ...errors.IgnoredErrors) (*api.RouteList, error) - CreateRoute(ctx context.Context, route *api.Route, ignoredErrors ...errors.IgnoredErrors) (*api.Route, error) - DeleteRoute(ctx context.Context, vni uint32, prefix *netip.Prefix, ignoredErrors ...errors.IgnoredErrors) (*api.Route, error) - - GetNat(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.Nat, error) - CreateNat(ctx context.Context, nat *api.Nat, ignoredErrors ...errors.IgnoredErrors) (*api.Nat, error) - DeleteNat(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.Nat, error) - ListLocalNats(ctx context.Context, natIP *netip.Addr, ignoredErrors ...errors.IgnoredErrors) (*api.NatList, error) - - CreateNeighborNat(ctx context.Context, nat *api.NeighborNat, ignoredErrors ...errors.IgnoredErrors) (*api.NeighborNat, error) - ListNats(ctx context.Context, natIP *netip.Addr, natType string, ignoredErrors ...errors.IgnoredErrors) (*api.NatList, error) - DeleteNeighborNat(ctx context.Context, neigbhorNat *api.NeighborNat, ignoredErrors ...errors.IgnoredErrors) (*api.NeighborNat, error) - ListNeighborNats(ctx context.Context, natIP *netip.Addr, ignoredErrors ...errors.IgnoredErrors) (*api.NatList, error) - - ListFirewallRules(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.FirewallRuleList, error) - CreateFirewallRule(ctx context.Context, fwRule *api.FirewallRule, ignoredErrors ...errors.IgnoredErrors) (*api.FirewallRule, error) - GetFirewallRule(ctx context.Context, interfaceID string, ruleID string, ignoredErrors ...errors.IgnoredErrors) (*api.FirewallRule, error) - DeleteFirewallRule(ctx context.Context, interfaceID string, ruleID string, ignoredErrors ...errors.IgnoredErrors) (*api.FirewallRule, error) - - CheckInitialized(ctx context.Context, ignoredErrors ...errors.IgnoredErrors) (*api.Initialized, error) - Initialize(ctx context.Context, ignoredErrors ...errors.IgnoredErrors) (*api.Initialized, error) - GetVni(ctx context.Context, vni uint32, vniType uint8, ignoredErrors ...errors.IgnoredErrors) (*api.Vni, error) - ResetVni(ctx context.Context, vni uint32, vniType uint8, ignoredErrors ...errors.IgnoredErrors) (*api.Vni, error) - GetVersion(ctx context.Context, version *api.Version, ignoredErrors ...errors.IgnoredErrors) (*api.Version, error) + GetLoadBalancer(ctx context.Context, id string, ignoredErrors ...[]int32) (*api.LoadBalancer, error) + CreateLoadBalancer(ctx context.Context, lb *api.LoadBalancer, ignoredErrors ...[]int32) (*api.LoadBalancer, error) + DeleteLoadBalancer(ctx context.Context, id string, ignoredErrors ...[]int32) (*api.LoadBalancer, error) + + ListLoadBalancerPrefixes(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.PrefixList, error) + CreateLoadBalancerPrefix(ctx context.Context, prefix *api.LoadBalancerPrefix, ignoredErrors ...[]int32) (*api.LoadBalancerPrefix, error) + DeleteLoadBalancerPrefix(ctx context.Context, interfaceID string, prefix *netip.Prefix, ignoredErrors ...[]int32) (*api.LoadBalancerPrefix, error) + + ListLoadBalancerTargets(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.LoadBalancerTargetList, error) + CreateLoadBalancerTarget(ctx context.Context, lbtarget *api.LoadBalancerTarget, ignoredErrors ...[]int32) (*api.LoadBalancerTarget, error) + DeleteLoadBalancerTarget(ctx context.Context, id string, targetIP *netip.Addr, ignoredErrors ...[]int32) (*api.LoadBalancerTarget, error) + + GetInterface(ctx context.Context, id string, ignoredErrors ...[]int32) (*api.Interface, error) + ListInterfaces(ctx context.Context, ignoredErrors ...[]int32) (*api.InterfaceList, error) + CreateInterface(ctx context.Context, iface *api.Interface, ignoredErrors ...[]int32) (*api.Interface, error) + DeleteInterface(ctx context.Context, id string, ignoredErrors ...[]int32) (*api.Interface, error) + + GetVirtualIP(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.VirtualIP, error) + CreateVirtualIP(ctx context.Context, virtualIP *api.VirtualIP, ignoredErrors ...[]int32) (*api.VirtualIP, error) + DeleteVirtualIP(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.VirtualIP, error) + + ListPrefixes(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.PrefixList, error) + CreatePrefix(ctx context.Context, prefix *api.Prefix, ignoredErrors ...[]int32) (*api.Prefix, error) + DeletePrefix(ctx context.Context, interfaceID string, prefix *netip.Prefix, ignoredErrors ...[]int32) (*api.Prefix, error) + + ListRoutes(ctx context.Context, vni uint32, ignoredErrors ...[]int32) (*api.RouteList, error) + CreateRoute(ctx context.Context, route *api.Route, ignoredErrors ...[]int32) (*api.Route, error) + DeleteRoute(ctx context.Context, vni uint32, prefix *netip.Prefix, ignoredErrors ...[]int32) (*api.Route, error) + + GetNat(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.Nat, error) + CreateNat(ctx context.Context, nat *api.Nat, ignoredErrors ...[]int32) (*api.Nat, error) + DeleteNat(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.Nat, error) + ListLocalNats(ctx context.Context, natIP *netip.Addr, ignoredErrors ...[]int32) (*api.NatList, error) + + CreateNeighborNat(ctx context.Context, nat *api.NeighborNat, ignoredErrors ...[]int32) (*api.NeighborNat, error) + ListNats(ctx context.Context, natIP *netip.Addr, natType string, ignoredErrors ...[]int32) (*api.NatList, error) + DeleteNeighborNat(ctx context.Context, neigbhorNat *api.NeighborNat, ignoredErrors ...[]int32) (*api.NeighborNat, error) + ListNeighborNats(ctx context.Context, natIP *netip.Addr, ignoredErrors ...[]int32) (*api.NatList, error) + + ListFirewallRules(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.FirewallRuleList, error) + CreateFirewallRule(ctx context.Context, fwRule *api.FirewallRule, ignoredErrors ...[]int32) (*api.FirewallRule, error) + GetFirewallRule(ctx context.Context, interfaceID string, ruleID string, ignoredErrors ...[]int32) (*api.FirewallRule, error) + DeleteFirewallRule(ctx context.Context, interfaceID string, ruleID string, ignoredErrors ...[]int32) (*api.FirewallRule, error) + + CheckInitialized(ctx context.Context, ignoredErrors ...[]int32) (*api.Initialized, error) + Initialize(ctx context.Context, ignoredErrors ...[]int32) (*api.Initialized, error) + GetVni(ctx context.Context, vni uint32, vniType uint8, ignoredErrors ...[]int32) (*api.Vni, error) + ResetVni(ctx context.Context, vni uint32, vniType uint8, ignoredErrors ...[]int32) (*api.Vni, error) + GetVersion(ctx context.Context, version *api.Version, ignoredErrors ...[]int32) (*api.Version, error) } type client struct { @@ -85,7 +85,7 @@ func NewClient(protoClient dpdkproto.DPDKonmetalClient) Client { return &client{protoClient} } -func (c *client) GetLoadBalancer(ctx context.Context, id string, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancer, error) { +func (c *client) GetLoadBalancer(ctx context.Context, id string, ignoredErrors ...[]int32) (*api.LoadBalancer, error) { res, err := c.DPDKonmetalClient.GetLoadBalancer(ctx, &dpdkproto.GetLoadBalancerRequest{ LoadbalancerId: []byte(id), }) @@ -98,12 +98,12 @@ func (c *client) GetLoadBalancer(ctx context.Context, id string, ignoredErrors . Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retLoadBalancer, errors.GetError(res.Status, ignoredErrors) + return retLoadBalancer, errors.GetError(res.Status, ignoredErrors[0]) } return api.ProtoLoadBalancerToLoadBalancer(res, id) } -func (c *client) CreateLoadBalancer(ctx context.Context, lb *api.LoadBalancer, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancer, error) { +func (c *client) CreateLoadBalancer(ctx context.Context, lb *api.LoadBalancer, ignoredErrors ...[]int32) (*api.LoadBalancer, error) { var lbPorts = make([]*dpdkproto.LbPort, 0, len(lb.Spec.Lbports)) for _, p := range lb.Spec.Lbports { lbPort := &dpdkproto.LbPort{Port: p.Port, Protocol: dpdkproto.Protocol(p.Protocol)} @@ -124,7 +124,7 @@ func (c *client) CreateLoadBalancer(ctx context.Context, lb *api.LoadBalancer, i Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retLoadBalancer, errors.GetError(res.Status, ignoredErrors) + return retLoadBalancer, errors.GetError(res.Status, ignoredErrors[0]) } underlayRoute, err := netip.ParseAddr(string(res.GetUnderlayRoute())) @@ -137,7 +137,7 @@ func (c *client) CreateLoadBalancer(ctx context.Context, lb *api.LoadBalancer, i return retLoadBalancer, nil } -func (c *client) DeleteLoadBalancer(ctx context.Context, id string, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancer, error) { +func (c *client) DeleteLoadBalancer(ctx context.Context, id string, ignoredErrors ...[]int32) (*api.LoadBalancer, error) { res, err := c.DPDKonmetalClient.DeleteLoadBalancer(ctx, &dpdkproto.DeleteLoadBalancerRequest{ LoadbalancerId: []byte(id), }) @@ -150,12 +150,12 @@ func (c *client) DeleteLoadBalancer(ctx context.Context, id string, ignoredError Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retLoadBalancer, errors.GetError(res.Status, ignoredErrors) + return retLoadBalancer, errors.GetError(res.Status, ignoredErrors[0]) } return retLoadBalancer, nil } -func (c *client) ListLoadBalancerPrefixes(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.PrefixList, error) { +func (c *client) ListLoadBalancerPrefixes(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.PrefixList, error) { res, err := c.DPDKonmetalClient.ListLoadBalancerPrefixes(ctx, &dpdkproto.ListLoadBalancerPrefixesRequest{ InterfaceId: []byte(interfaceID), }) @@ -182,7 +182,7 @@ func (c *client) ListLoadBalancerPrefixes(ctx context.Context, interfaceID strin }, nil } -func (c *client) CreateLoadBalancerPrefix(ctx context.Context, lbprefix *api.LoadBalancerPrefix, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancerPrefix, error) { +func (c *client) CreateLoadBalancerPrefix(ctx context.Context, lbprefix *api.LoadBalancerPrefix, ignoredErrors ...[]int32) (*api.LoadBalancerPrefix, error) { res, err := c.DPDKonmetalClient.CreateLoadBalancerPrefix(ctx, &dpdkproto.CreateLoadBalancerPrefixRequest{ InterfaceId: []byte(lbprefix.InterfaceID), Prefix: &dpdkproto.Prefix{ @@ -202,7 +202,7 @@ func (c *client) CreateLoadBalancerPrefix(ctx context.Context, lbprefix *api.Loa Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retLBPrefix, errors.GetError(res.Status, ignoredErrors) + return retLBPrefix, errors.GetError(res.Status, ignoredErrors[0]) } underlayRoute, err := netip.ParseAddr(string(res.GetUnderlayRoute())) if err != nil { @@ -212,7 +212,7 @@ func (c *client) CreateLoadBalancerPrefix(ctx context.Context, lbprefix *api.Loa return retLBPrefix, nil } -func (c *client) DeleteLoadBalancerPrefix(ctx context.Context, interfaceID string, prefix *netip.Prefix, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancerPrefix, error) { +func (c *client) DeleteLoadBalancerPrefix(ctx context.Context, interfaceID string, prefix *netip.Prefix, ignoredErrors ...[]int32) (*api.LoadBalancerPrefix, error) { res, err := c.DPDKonmetalClient.DeleteLoadBalancerPrefix(ctx, &dpdkproto.DeleteLoadBalancerPrefixRequest{ InterfaceId: []byte(interfaceID), Prefix: &dpdkproto.Prefix{ @@ -230,12 +230,12 @@ func (c *client) DeleteLoadBalancerPrefix(ctx context.Context, interfaceID strin Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retLBPrefix, errors.GetError(res.Status, ignoredErrors) + return retLBPrefix, errors.GetError(res.Status, ignoredErrors[0]) } return retLBPrefix, nil } -func (c *client) ListLoadBalancerTargets(ctx context.Context, loadBalancerID string, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancerTargetList, error) { +func (c *client) ListLoadBalancerTargets(ctx context.Context, loadBalancerID string, ignoredErrors ...[]int32) (*api.LoadBalancerTargetList, error) { res, err := c.DPDKonmetalClient.ListLoadBalancerTargets(ctx, &dpdkproto.ListLoadBalancerTargetsRequest{ LoadbalancerId: []byte(loadBalancerID), }) @@ -245,7 +245,7 @@ func (c *client) ListLoadBalancerTargets(ctx context.Context, loadBalancerID str if res.GetStatus().GetCode() != 0 { return &api.LoadBalancerTargetList{ TypeMeta: api.TypeMeta{Kind: api.LoadBalancerTargetListKind}, - Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors) + Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors[0]) } lbtargets := make([]api.LoadBalancerTarget, len(res.GetTargetIps())) @@ -269,7 +269,7 @@ func (c *client) ListLoadBalancerTargets(ctx context.Context, loadBalancerID str }, nil } -func (c *client) CreateLoadBalancerTarget(ctx context.Context, lbtarget *api.LoadBalancerTarget, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancerTarget, error) { +func (c *client) CreateLoadBalancerTarget(ctx context.Context, lbtarget *api.LoadBalancerTarget, ignoredErrors ...[]int32) (*api.LoadBalancerTarget, error) { res, err := c.DPDKonmetalClient.CreateLoadBalancerTarget(ctx, &dpdkproto.CreateLoadBalancerTargetRequest{ LoadbalancerId: []byte(lbtarget.LoadBalancerTargetMeta.LoadbalancerID), TargetIp: api.NetIPAddrToProtoIpAddress(*lbtarget.Spec.TargetIP), @@ -283,13 +283,13 @@ func (c *client) CreateLoadBalancerTarget(ctx context.Context, lbtarget *api.Loa Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retLBTarget, errors.GetError(res.Status, ignoredErrors) + return retLBTarget, errors.GetError(res.Status, ignoredErrors[0]) } retLBTarget.Spec = lbtarget.Spec return retLBTarget, nil } -func (c *client) DeleteLoadBalancerTarget(ctx context.Context, lbid string, targetIP *netip.Addr, ignoredErrors ...errors.IgnoredErrors) (*api.LoadBalancerTarget, error) { +func (c *client) DeleteLoadBalancerTarget(ctx context.Context, lbid string, targetIP *netip.Addr, ignoredErrors ...[]int32) (*api.LoadBalancerTarget, error) { res, err := c.DPDKonmetalClient.DeleteLoadBalancerTarget(ctx, &dpdkproto.DeleteLoadBalancerTargetRequest{ LoadbalancerId: []byte(lbid), TargetIp: api.NetIPAddrToProtoIpAddress(*targetIP), @@ -303,12 +303,12 @@ func (c *client) DeleteLoadBalancerTarget(ctx context.Context, lbid string, targ Status: api.ProtoStatusToStatus(res.Status), } if res.Status.GetCode() != 0 { - return retLBTarget, errors.GetError(res.Status, ignoredErrors) + return retLBTarget, errors.GetError(res.Status, ignoredErrors[0]) } return retLBTarget, nil } -func (c *client) GetInterface(ctx context.Context, id string, ignoredErrors ...errors.IgnoredErrors) (*api.Interface, error) { +func (c *client) GetInterface(ctx context.Context, id string, ignoredErrors ...[]int32) (*api.Interface, error) { res, err := c.DPDKonmetalClient.GetInterface(ctx, &dpdkproto.GetInterfaceRequest{ InterfaceId: []byte(id), }) @@ -319,12 +319,12 @@ func (c *client) GetInterface(ctx context.Context, id string, ignoredErrors ...e return &api.Interface{ TypeMeta: api.TypeMeta{Kind: api.InterfaceKind}, InterfaceMeta: api.InterfaceMeta{ID: id}, - Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors) + Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors[0]) } return api.ProtoInterfaceToInterface(res.GetInterface()) } -func (c *client) ListInterfaces(ctx context.Context, ignoredErrors ...errors.IgnoredErrors) (*api.InterfaceList, error) { +func (c *client) ListInterfaces(ctx context.Context, ignoredErrors ...[]int32) (*api.InterfaceList, error) { res, err := c.DPDKonmetalClient.ListInterfaces(ctx, &dpdkproto.ListInterfacesRequest{}) if err != nil { return nil, err @@ -347,7 +347,7 @@ func (c *client) ListInterfaces(ctx context.Context, ignoredErrors ...errors.Ign }, nil } -func (c *client) CreateInterface(ctx context.Context, iface *api.Interface, ignoredErrors ...errors.IgnoredErrors) (*api.Interface, error) { +func (c *client) CreateInterface(ctx context.Context, iface *api.Interface, ignoredErrors ...[]int32) (*api.Interface, error) { req := dpdkproto.CreateInterfaceRequest{ InterfaceType: dpdkproto.InterfaceType_VIRTUAL, InterfaceId: []byte(iface.ID), @@ -372,7 +372,7 @@ func (c *client) CreateInterface(ctx context.Context, iface *api.Interface, igno Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retInterface, errors.GetError(res.Status, ignoredErrors) + return retInterface, errors.GetError(res.Status, ignoredErrors[0]) } underlayRoute, err := netip.ParseAddr(string(res.GetUnderlayRoute())) @@ -392,7 +392,7 @@ func (c *client) CreateInterface(ctx context.Context, iface *api.Interface, igno return retInterface, nil } -func (c *client) DeleteInterface(ctx context.Context, id string, ignoredErrors ...errors.IgnoredErrors) (*api.Interface, error) { +func (c *client) DeleteInterface(ctx context.Context, id string, ignoredErrors ...[]int32) (*api.Interface, error) { res, err := c.DPDKonmetalClient.DeleteInterface(ctx, &dpdkproto.DeleteInterfaceRequest{ InterfaceId: []byte(id), }) @@ -405,12 +405,12 @@ func (c *client) DeleteInterface(ctx context.Context, id string, ignoredErrors . Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retInterface, errors.GetError(res.Status, ignoredErrors) + return retInterface, errors.GetError(res.Status, ignoredErrors[0]) } return retInterface, nil } -func (c *client) GetVirtualIP(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.VirtualIP, error) { +func (c *client) GetVirtualIP(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.VirtualIP, error) { res, err := c.DPDKonmetalClient.GetVip(ctx, &dpdkproto.GetVipRequest{ InterfaceId: []byte(interfaceID), }) @@ -421,12 +421,12 @@ func (c *client) GetVirtualIP(ctx context.Context, interfaceID string, ignoredEr return &api.VirtualIP{ TypeMeta: api.TypeMeta{Kind: api.VirtualIPKind}, VirtualIPMeta: api.VirtualIPMeta{InterfaceID: interfaceID}, - Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors) + Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors[0]) } return api.ProtoVirtualIPToVirtualIP(interfaceID, res) } -func (c *client) CreateVirtualIP(ctx context.Context, virtualIP *api.VirtualIP, ignoredErrors ...errors.IgnoredErrors) (*api.VirtualIP, error) { +func (c *client) CreateVirtualIP(ctx context.Context, virtualIP *api.VirtualIP, ignoredErrors ...[]int32) (*api.VirtualIP, error) { res, err := c.DPDKonmetalClient.CreateVip(ctx, &dpdkproto.CreateVipRequest{ InterfaceId: []byte(virtualIP.InterfaceID), VipIp: api.NetIPAddrToProtoIpAddress(*virtualIP.Spec.IP), @@ -443,7 +443,7 @@ func (c *client) CreateVirtualIP(ctx context.Context, virtualIP *api.VirtualIP, Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retVirtualIP, errors.GetError(res.Status, ignoredErrors) + return retVirtualIP, errors.GetError(res.Status, ignoredErrors[0]) } underlayRoute, err := netip.ParseAddr(string(res.GetUnderlayRoute())) if err != nil { @@ -453,7 +453,7 @@ func (c *client) CreateVirtualIP(ctx context.Context, virtualIP *api.VirtualIP, return retVirtualIP, nil } -func (c *client) DeleteVirtualIP(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.VirtualIP, error) { +func (c *client) DeleteVirtualIP(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.VirtualIP, error) { res, err := c.DPDKonmetalClient.DeleteVip(ctx, &dpdkproto.DeleteVipRequest{ InterfaceId: []byte(interfaceID), }) @@ -466,12 +466,12 @@ func (c *client) DeleteVirtualIP(ctx context.Context, interfaceID string, ignore Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retVirtualIP, errors.GetError(res.Status, ignoredErrors) + return retVirtualIP, errors.GetError(res.Status, ignoredErrors[0]) } return retVirtualIP, nil } -func (c *client) ListPrefixes(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.PrefixList, error) { +func (c *client) ListPrefixes(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.PrefixList, error) { res, err := c.DPDKonmetalClient.ListPrefixes(ctx, &dpdkproto.ListPrefixesRequest{ InterfaceId: []byte(interfaceID), }) @@ -497,7 +497,7 @@ func (c *client) ListPrefixes(ctx context.Context, interfaceID string, ignoredEr }, nil } -func (c *client) CreatePrefix(ctx context.Context, prefix *api.Prefix, ignoredErrors ...errors.IgnoredErrors) (*api.Prefix, error) { +func (c *client) CreatePrefix(ctx context.Context, prefix *api.Prefix, ignoredErrors ...[]int32) (*api.Prefix, error) { res, err := c.DPDKonmetalClient.CreatePrefix(ctx, &dpdkproto.CreatePrefixRequest{ InterfaceId: []byte(prefix.InterfaceID), Prefix: &dpdkproto.Prefix{ @@ -516,7 +516,7 @@ func (c *client) CreatePrefix(ctx context.Context, prefix *api.Prefix, ignoredEr } if res.GetStatus().GetCode() != 0 { - return retPrefix, errors.GetError(res.Status, ignoredErrors) + return retPrefix, errors.GetError(res.Status, ignoredErrors[0]) } underlayRoute, err := netip.ParseAddr(string(res.GetUnderlayRoute())) if err != nil { @@ -526,7 +526,7 @@ func (c *client) CreatePrefix(ctx context.Context, prefix *api.Prefix, ignoredEr return retPrefix, nil } -func (c *client) DeletePrefix(ctx context.Context, interfaceID string, prefix *netip.Prefix, ignoredErrors ...errors.IgnoredErrors) (*api.Prefix, error) { +func (c *client) DeletePrefix(ctx context.Context, interfaceID string, prefix *netip.Prefix, ignoredErrors ...[]int32) (*api.Prefix, error) { res, err := c.DPDKonmetalClient.DeletePrefix(ctx, &dpdkproto.DeletePrefixRequest{ InterfaceId: []byte(interfaceID), Prefix: &dpdkproto.Prefix{ @@ -544,12 +544,12 @@ func (c *client) DeletePrefix(ctx context.Context, interfaceID string, prefix *n Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retPrefix, errors.GetError(res.Status, ignoredErrors) + return retPrefix, errors.GetError(res.Status, ignoredErrors[0]) } return retPrefix, nil } -func (c *client) CreateRoute(ctx context.Context, route *api.Route, ignoredErrors ...errors.IgnoredErrors) (*api.Route, error) { +func (c *client) CreateRoute(ctx context.Context, route *api.Route, ignoredErrors ...[]int32) (*api.Route, error) { res, err := c.DPDKonmetalClient.CreateRoute(ctx, &dpdkproto.CreateRouteRequest{ Vni: route.VNI, Route: &dpdkproto.Route{ @@ -574,13 +574,13 @@ func (c *client) CreateRoute(ctx context.Context, route *api.Route, ignoredError Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retRoute, errors.GetError(res.Status, ignoredErrors) + return retRoute, errors.GetError(res.Status, ignoredErrors[0]) } retRoute.Spec = route.Spec return retRoute, nil } -func (c *client) DeleteRoute(ctx context.Context, vni uint32, prefix *netip.Prefix, ignoredErrors ...errors.IgnoredErrors) (*api.Route, error) { +func (c *client) DeleteRoute(ctx context.Context, vni uint32, prefix *netip.Prefix, ignoredErrors ...[]int32) (*api.Route, error) { res, err := c.DPDKonmetalClient.DeleteRoute(ctx, &dpdkproto.DeleteRouteRequest{ Vni: vni, Route: &dpdkproto.Route{ @@ -604,12 +604,12 @@ func (c *client) DeleteRoute(ctx context.Context, vni uint32, prefix *netip.Pref Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retRoute, errors.GetError(res.Status, ignoredErrors) + return retRoute, errors.GetError(res.Status, ignoredErrors[0]) } return retRoute, nil } -func (c *client) ListRoutes(ctx context.Context, vni uint32, ignoredErrors ...errors.IgnoredErrors) (*api.RouteList, error) { +func (c *client) ListRoutes(ctx context.Context, vni uint32, ignoredErrors ...[]int32) (*api.RouteList, error) { res, err := c.DPDKonmetalClient.ListRoutes(ctx, &dpdkproto.ListRoutesRequest{ Vni: vni, }) @@ -635,7 +635,7 @@ func (c *client) ListRoutes(ctx context.Context, vni uint32, ignoredErrors ...er }, nil } -func (c *client) GetNat(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.Nat, error) { +func (c *client) GetNat(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.Nat, error) { res, err := c.DPDKonmetalClient.GetNat(ctx, &dpdkproto.GetNatRequest{InterfaceId: []byte(interfaceID)}) if err != nil { return &api.Nat{}, err @@ -644,12 +644,12 @@ func (c *client) GetNat(ctx context.Context, interfaceID string, ignoredErrors . return &api.Nat{ TypeMeta: api.TypeMeta{Kind: api.NatKind}, NatMeta: api.NatMeta{InterfaceID: interfaceID}, - Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors) + Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors[0]) } return api.ProtoNatToNat(res, interfaceID) } -func (c *client) CreateNat(ctx context.Context, nat *api.Nat, ignoredErrors ...errors.IgnoredErrors) (*api.Nat, error) { +func (c *client) CreateNat(ctx context.Context, nat *api.Nat, ignoredErrors ...[]int32) (*api.Nat, error) { res, err := c.DPDKonmetalClient.CreateNat(ctx, &dpdkproto.CreateNatRequest{ InterfaceId: []byte(nat.NatMeta.InterfaceID), NatIp: api.NetIPAddrToProtoIpAddress(*nat.Spec.NatIP), @@ -665,7 +665,7 @@ func (c *client) CreateNat(ctx context.Context, nat *api.Nat, ignoredErrors ...e Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retNat, errors.GetError(res.Status, ignoredErrors) + return retNat, errors.GetError(res.Status, ignoredErrors[0]) } underlayRoute, err := netip.ParseAddr(string(res.GetUnderlayRoute())) @@ -678,7 +678,7 @@ func (c *client) CreateNat(ctx context.Context, nat *api.Nat, ignoredErrors ...e return retNat, nil } -func (c *client) DeleteNat(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.Nat, error) { +func (c *client) DeleteNat(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.Nat, error) { res, err := c.DPDKonmetalClient.DeleteNat(ctx, &dpdkproto.DeleteNatRequest{ InterfaceId: []byte(interfaceID), }) @@ -691,16 +691,16 @@ func (c *client) DeleteNat(ctx context.Context, interfaceID string, ignoredError Status: api.ProtoStatusToStatus(res.Status), } if res.Status.GetCode() != 0 { - return retNat, errors.GetError(res.Status, ignoredErrors) + return retNat, errors.GetError(res.Status, ignoredErrors[0]) } return retNat, nil } -func (c *client) ListLocalNats(ctx context.Context, natIP *netip.Addr, ignoredErrors ...errors.IgnoredErrors) (*api.NatList, error) { +func (c *client) ListLocalNats(ctx context.Context, natIP *netip.Addr, ignoredErrors ...[]int32) (*api.NatList, error) { return c.ListNats(ctx, natIP, "local", ignoredErrors...) } -func (c *client) CreateNeighborNat(ctx context.Context, nNat *api.NeighborNat, ignoredErrors ...errors.IgnoredErrors) (*api.NeighborNat, error) { +func (c *client) CreateNeighborNat(ctx context.Context, nNat *api.NeighborNat, ignoredErrors ...[]int32) (*api.NeighborNat, error) { res, err := c.DPDKonmetalClient.CreateNeighborNat(ctx, &dpdkproto.CreateNeighborNatRequest{ NatIp: api.NetIPAddrToProtoIpAddress(*nNat.NatIP), @@ -718,13 +718,13 @@ func (c *client) CreateNeighborNat(ctx context.Context, nNat *api.NeighborNat, i Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retnNat, errors.GetError(res.Status, ignoredErrors) + return retnNat, errors.GetError(res.Status, ignoredErrors[0]) } retnNat.Spec = nNat.Spec return retnNat, nil } -func (c *client) ListNats(ctx context.Context, natIP *netip.Addr, natType string, ignoredErrors ...errors.IgnoredErrors) (*api.NatList, error) { +func (c *client) ListNats(ctx context.Context, natIP *netip.Addr, natType string, ignoredErrors ...[]int32) (*api.NatList, error) { var nType int32 switch strings.ToLower(natType) { case "local", "1": @@ -803,7 +803,7 @@ func (c *client) ListNats(ctx context.Context, natIP *netip.Addr, natType string }, nil } -func (c *client) DeleteNeighborNat(ctx context.Context, neigbhorNat *api.NeighborNat, ignoredErrors ...errors.IgnoredErrors) (*api.NeighborNat, error) { +func (c *client) DeleteNeighborNat(ctx context.Context, neigbhorNat *api.NeighborNat, ignoredErrors ...[]int32) (*api.NeighborNat, error) { res, err := c.DPDKonmetalClient.DeleteNeighborNat(ctx, &dpdkproto.DeleteNeighborNatRequest{ NatIp: api.NetIPAddrToProtoIpAddress(*neigbhorNat.NatIP), Vni: neigbhorNat.Spec.Vni, @@ -819,16 +819,16 @@ func (c *client) DeleteNeighborNat(ctx context.Context, neigbhorNat *api.Neighbo Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return nnat, errors.GetError(res.Status, ignoredErrors) + return nnat, errors.GetError(res.Status, ignoredErrors[0]) } return nnat, nil } -func (c *client) ListNeighborNats(ctx context.Context, natIP *netip.Addr, ignoredErrors ...errors.IgnoredErrors) (*api.NatList, error) { +func (c *client) ListNeighborNats(ctx context.Context, natIP *netip.Addr, ignoredErrors ...[]int32) (*api.NatList, error) { return c.ListNats(ctx, natIP, "neigh", ignoredErrors...) } -func (c *client) ListFirewallRules(ctx context.Context, interfaceID string, ignoredErrors ...errors.IgnoredErrors) (*api.FirewallRuleList, error) { +func (c *client) ListFirewallRules(ctx context.Context, interfaceID string, ignoredErrors ...[]int32) (*api.FirewallRuleList, error) { res, err := c.DPDKonmetalClient.ListFirewallRules(ctx, &dpdkproto.ListFirewallRulesRequest{ InterfaceId: []byte(interfaceID), }) @@ -853,7 +853,7 @@ func (c *client) ListFirewallRules(ctx context.Context, interfaceID string, igno }, nil } -func (c *client) CreateFirewallRule(ctx context.Context, fwRule *api.FirewallRule, ignoredErrors ...errors.IgnoredErrors) (*api.FirewallRule, error) { +func (c *client) CreateFirewallRule(ctx context.Context, fwRule *api.FirewallRule, ignoredErrors ...[]int32) (*api.FirewallRule, error) { var action, direction uint8 switch strings.ToLower(fwRule.Spec.FirewallAction) { @@ -907,7 +907,7 @@ func (c *client) CreateFirewallRule(ctx context.Context, fwRule *api.FirewallRul Spec: api.FirewallRuleSpec{RuleID: fwRule.Spec.RuleID}, Status: api.ProtoStatusToStatus(res.Status)} if res.GetStatus().GetCode() != 0 { - return retFwrule, errors.GetError(res.Status, ignoredErrors) + return retFwrule, errors.GetError(res.Status, ignoredErrors[0]) } retFwrule.Spec = fwRule.Spec return retFwrule, nil @@ -927,13 +927,13 @@ func (c *client) GetFirewallRule(ctx context.Context, interfaceID string, ruleID FirewallRuleMeta: api.FirewallRuleMeta{InterfaceID: interfaceID}, Spec: api.FirewallRuleSpec{RuleID: ruleID}, Status: api.ProtoStatusToStatus(res.Status), - }, errors.GetError(res.Status, ignoredErrors) + }, errors.GetError(res.Status, ignoredErrors[0]) } return api.ProtoFwRuleToFwRule(res.Rule, interfaceID) } -func (c *client) DeleteFirewallRule(ctx context.Context, interfaceID string, ruleID string, ignoredErrors ...errors.IgnoredErrors) (*api.FirewallRule, error) { +func (c *client) DeleteFirewallRule(ctx context.Context, interfaceID string, ruleID string, ignoredErrors ...[]int32) (*api.FirewallRule, error) { res, err := c.DPDKonmetalClient.DeleteFirewallRule(ctx, &dpdkproto.DeleteFirewallRuleRequest{ InterfaceId: []byte(interfaceID), RuleId: []byte(ruleID), @@ -948,12 +948,12 @@ func (c *client) DeleteFirewallRule(ctx context.Context, interfaceID string, rul Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retFwrule, errors.GetError(res.Status, ignoredErrors) + return retFwrule, errors.GetError(res.Status, ignoredErrors[0]) } return retFwrule, nil } -func (c *client) CheckInitialized(ctx context.Context, ignoredErrors ...errors.IgnoredErrors) (*api.Initialized, error) { +func (c *client) CheckInitialized(ctx context.Context, ignoredErrors ...[]int32) (*api.Initialized, error) { res, err := c.DPDKonmetalClient.CheckInitialized(ctx, &dpdkproto.CheckInitializedRequest{}) if err != nil { return &api.Initialized{}, err @@ -963,13 +963,13 @@ func (c *client) CheckInitialized(ctx context.Context, ignoredErrors ...errors.I Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retInitialized, errors.GetError(res.Status, ignoredErrors) + return retInitialized, errors.GetError(res.Status, ignoredErrors[0]) } retInitialized.Spec.UUID = res.Uuid return retInitialized, nil } -func (c *client) Initialize(ctx context.Context, ignoredErrors ...errors.IgnoredErrors) (*api.Initialized, error) { +func (c *client) Initialize(ctx context.Context, ignoredErrors ...[]int32) (*api.Initialized, error) { res, err := c.DPDKonmetalClient.Initialize(ctx, &dpdkproto.InitializeRequest{}) if err != nil { return &api.Initialized{}, err @@ -979,13 +979,13 @@ func (c *client) Initialize(ctx context.Context, ignoredErrors ...errors.Ignored Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retInit, errors.GetError(res.Status, ignoredErrors) + return retInit, errors.GetError(res.Status, ignoredErrors[0]) } retInit.Spec.UUID = res.Uuid return retInit, nil } -func (c *client) GetVni(ctx context.Context, vni uint32, vniType uint8, ignoredErrors ...errors.IgnoredErrors) (*api.Vni, error) { +func (c *client) GetVni(ctx context.Context, vni uint32, vniType uint8, ignoredErrors ...[]int32) (*api.Vni, error) { res, err := c.DPDKonmetalClient.CheckVniInUse(ctx, &dpdkproto.CheckVniInUseRequest{ Vni: vni, Type: dpdkproto.VniType(vniType), @@ -999,13 +999,13 @@ func (c *client) GetVni(ctx context.Context, vni uint32, vniType uint8, ignoredE Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retVni, errors.GetError(res.Status, ignoredErrors) + return retVni, errors.GetError(res.Status, ignoredErrors[0]) } retVni.Spec.InUse = res.InUse return retVni, nil } -func (c *client) ResetVni(ctx context.Context, vni uint32, vniType uint8, ignoredErrors ...errors.IgnoredErrors) (*api.Vni, error) { +func (c *client) ResetVni(ctx context.Context, vni uint32, vniType uint8, ignoredErrors ...[]int32) (*api.Vni, error) { res, err := c.DPDKonmetalClient.ResetVni(ctx, &dpdkproto.ResetVniRequest{ Vni: vni, Type: dpdkproto.VniType(vniType), @@ -1019,12 +1019,12 @@ func (c *client) ResetVni(ctx context.Context, vni uint32, vniType uint8, ignore Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retVni, errors.GetError(res.Status, ignoredErrors) + return retVni, errors.GetError(res.Status, ignoredErrors[0]) } return retVni, nil } -func (c *client) GetVersion(ctx context.Context, version *api.Version, ignoredErrors ...errors.IgnoredErrors) (*api.Version, error) { +func (c *client) GetVersion(ctx context.Context, version *api.Version, ignoredErrors ...[]int32) (*api.Version, error) { version.ClientProtocol = strings.TrimSpace(dpdkproto.GeneratedFrom) res, err := c.DPDKonmetalClient.GetVersion(ctx, &dpdkproto.GetVersionRequest{ ClientProtocol: version.ClientProtocol, @@ -1036,7 +1036,7 @@ func (c *client) GetVersion(ctx context.Context, version *api.Version, ignoredEr } version.Status = api.ProtoStatusToStatus(res.Status) if res.GetStatus().GetCode() != 0 { - return version, errors.GetError(res.Status, ignoredErrors) + return version, errors.GetError(res.Status, ignoredErrors[0]) } version.Spec.ServiceProtocol = res.ServiceProtocol version.Spec.ServiceVersion = res.ServiceVersion diff --git a/errors/errors.go b/errors/errors.go index c0ad1e9..9a1798a 100644 --- a/errors/errors.go +++ b/errors/errors.go @@ -66,10 +66,6 @@ const ( StatusErrorString = "rpc error" ) -type IgnoredErrors struct { - Codes []int32 -} - type StatusError struct { errorCode int32 message string @@ -97,12 +93,13 @@ func NewStatusError(errorCode int32, message string) *StatusError { } } -func GetError(status *dpdkproto.Status, ignoredErrors []IgnoredErrors) error { +// Ignore requested status errors +func GetError(status *dpdkproto.Status, ignoredErrors []int32) error { if status.Code == 0 { return nil } if len(ignoredErrors) > 0 { - for _, ignoredError := range ignoredErrors[0].Codes { + for _, ignoredError := range ignoredErrors { if status.Code == ignoredError { return nil } @@ -131,3 +128,11 @@ func IgnoreStatusErrorCode(err error, errorCodes ...int32) error { } return err } + +// Create array of status error codes to be ignored +func Ignore(errorCodes ...int32) []int32 { + arr := make([]int32, 0, len(errorCodes)) + arr = append(arr, errorCodes...) + + return arr +} From acaf916180438a36481147e2e1496870fef796f5 Mon Sep 17 00:00:00 2001 From: Viliam Lorinc <viliam.lorinc@t-systems.com> Date: Tue, 19 Sep 2023 12:51:09 +0200 Subject: [PATCH 4/5] fix empty ignoredErrors handling --- client/client.go | 62 ++++++++++++++++++++++++------------------------ errors/errors.go | 4 ++-- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/client/client.go b/client/client.go index 995d5cb..82d57ec 100644 --- a/client/client.go +++ b/client/client.go @@ -98,7 +98,7 @@ func (c *client) GetLoadBalancer(ctx context.Context, id string, ignoredErrors . Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retLoadBalancer, errors.GetError(res.Status, ignoredErrors[0]) + return retLoadBalancer, errors.GetError(res.Status, ignoredErrors) } return api.ProtoLoadBalancerToLoadBalancer(res, id) } @@ -124,7 +124,7 @@ func (c *client) CreateLoadBalancer(ctx context.Context, lb *api.LoadBalancer, i Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retLoadBalancer, errors.GetError(res.Status, ignoredErrors[0]) + return retLoadBalancer, errors.GetError(res.Status, ignoredErrors) } underlayRoute, err := netip.ParseAddr(string(res.GetUnderlayRoute())) @@ -150,7 +150,7 @@ func (c *client) DeleteLoadBalancer(ctx context.Context, id string, ignoredError Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retLoadBalancer, errors.GetError(res.Status, ignoredErrors[0]) + return retLoadBalancer, errors.GetError(res.Status, ignoredErrors) } return retLoadBalancer, nil } @@ -202,7 +202,7 @@ func (c *client) CreateLoadBalancerPrefix(ctx context.Context, lbprefix *api.Loa Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retLBPrefix, errors.GetError(res.Status, ignoredErrors[0]) + return retLBPrefix, errors.GetError(res.Status, ignoredErrors) } underlayRoute, err := netip.ParseAddr(string(res.GetUnderlayRoute())) if err != nil { @@ -230,7 +230,7 @@ func (c *client) DeleteLoadBalancerPrefix(ctx context.Context, interfaceID strin Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retLBPrefix, errors.GetError(res.Status, ignoredErrors[0]) + return retLBPrefix, errors.GetError(res.Status, ignoredErrors) } return retLBPrefix, nil } @@ -245,7 +245,7 @@ func (c *client) ListLoadBalancerTargets(ctx context.Context, loadBalancerID str if res.GetStatus().GetCode() != 0 { return &api.LoadBalancerTargetList{ TypeMeta: api.TypeMeta{Kind: api.LoadBalancerTargetListKind}, - Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors[0]) + Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors) } lbtargets := make([]api.LoadBalancerTarget, len(res.GetTargetIps())) @@ -283,7 +283,7 @@ func (c *client) CreateLoadBalancerTarget(ctx context.Context, lbtarget *api.Loa Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retLBTarget, errors.GetError(res.Status, ignoredErrors[0]) + return retLBTarget, errors.GetError(res.Status, ignoredErrors) } retLBTarget.Spec = lbtarget.Spec return retLBTarget, nil @@ -303,7 +303,7 @@ func (c *client) DeleteLoadBalancerTarget(ctx context.Context, lbid string, targ Status: api.ProtoStatusToStatus(res.Status), } if res.Status.GetCode() != 0 { - return retLBTarget, errors.GetError(res.Status, ignoredErrors[0]) + return retLBTarget, errors.GetError(res.Status, ignoredErrors) } return retLBTarget, nil } @@ -319,7 +319,7 @@ func (c *client) GetInterface(ctx context.Context, id string, ignoredErrors ...[ return &api.Interface{ TypeMeta: api.TypeMeta{Kind: api.InterfaceKind}, InterfaceMeta: api.InterfaceMeta{ID: id}, - Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors[0]) + Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors) } return api.ProtoInterfaceToInterface(res.GetInterface()) } @@ -372,7 +372,7 @@ func (c *client) CreateInterface(ctx context.Context, iface *api.Interface, igno Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retInterface, errors.GetError(res.Status, ignoredErrors[0]) + return retInterface, errors.GetError(res.Status, ignoredErrors) } underlayRoute, err := netip.ParseAddr(string(res.GetUnderlayRoute())) @@ -405,7 +405,7 @@ func (c *client) DeleteInterface(ctx context.Context, id string, ignoredErrors . Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retInterface, errors.GetError(res.Status, ignoredErrors[0]) + return retInterface, errors.GetError(res.Status, ignoredErrors) } return retInterface, nil } @@ -421,7 +421,7 @@ func (c *client) GetVirtualIP(ctx context.Context, interfaceID string, ignoredEr return &api.VirtualIP{ TypeMeta: api.TypeMeta{Kind: api.VirtualIPKind}, VirtualIPMeta: api.VirtualIPMeta{InterfaceID: interfaceID}, - Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors[0]) + Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors) } return api.ProtoVirtualIPToVirtualIP(interfaceID, res) } @@ -443,7 +443,7 @@ func (c *client) CreateVirtualIP(ctx context.Context, virtualIP *api.VirtualIP, Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retVirtualIP, errors.GetError(res.Status, ignoredErrors[0]) + return retVirtualIP, errors.GetError(res.Status, ignoredErrors) } underlayRoute, err := netip.ParseAddr(string(res.GetUnderlayRoute())) if err != nil { @@ -466,7 +466,7 @@ func (c *client) DeleteVirtualIP(ctx context.Context, interfaceID string, ignore Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retVirtualIP, errors.GetError(res.Status, ignoredErrors[0]) + return retVirtualIP, errors.GetError(res.Status, ignoredErrors) } return retVirtualIP, nil } @@ -516,7 +516,7 @@ func (c *client) CreatePrefix(ctx context.Context, prefix *api.Prefix, ignoredEr } if res.GetStatus().GetCode() != 0 { - return retPrefix, errors.GetError(res.Status, ignoredErrors[0]) + return retPrefix, errors.GetError(res.Status, ignoredErrors) } underlayRoute, err := netip.ParseAddr(string(res.GetUnderlayRoute())) if err != nil { @@ -544,7 +544,7 @@ func (c *client) DeletePrefix(ctx context.Context, interfaceID string, prefix *n Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retPrefix, errors.GetError(res.Status, ignoredErrors[0]) + return retPrefix, errors.GetError(res.Status, ignoredErrors) } return retPrefix, nil } @@ -574,7 +574,7 @@ func (c *client) CreateRoute(ctx context.Context, route *api.Route, ignoredError Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retRoute, errors.GetError(res.Status, ignoredErrors[0]) + return retRoute, errors.GetError(res.Status, ignoredErrors) } retRoute.Spec = route.Spec return retRoute, nil @@ -604,7 +604,7 @@ func (c *client) DeleteRoute(ctx context.Context, vni uint32, prefix *netip.Pref Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retRoute, errors.GetError(res.Status, ignoredErrors[0]) + return retRoute, errors.GetError(res.Status, ignoredErrors) } return retRoute, nil } @@ -644,7 +644,7 @@ func (c *client) GetNat(ctx context.Context, interfaceID string, ignoredErrors . return &api.Nat{ TypeMeta: api.TypeMeta{Kind: api.NatKind}, NatMeta: api.NatMeta{InterfaceID: interfaceID}, - Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors[0]) + Status: api.ProtoStatusToStatus(res.Status)}, errors.GetError(res.Status, ignoredErrors) } return api.ProtoNatToNat(res, interfaceID) } @@ -665,7 +665,7 @@ func (c *client) CreateNat(ctx context.Context, nat *api.Nat, ignoredErrors ...[ Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retNat, errors.GetError(res.Status, ignoredErrors[0]) + return retNat, errors.GetError(res.Status, ignoredErrors) } underlayRoute, err := netip.ParseAddr(string(res.GetUnderlayRoute())) @@ -691,7 +691,7 @@ func (c *client) DeleteNat(ctx context.Context, interfaceID string, ignoredError Status: api.ProtoStatusToStatus(res.Status), } if res.Status.GetCode() != 0 { - return retNat, errors.GetError(res.Status, ignoredErrors[0]) + return retNat, errors.GetError(res.Status, ignoredErrors) } return retNat, nil } @@ -718,7 +718,7 @@ func (c *client) CreateNeighborNat(ctx context.Context, nNat *api.NeighborNat, i Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retnNat, errors.GetError(res.Status, ignoredErrors[0]) + return retnNat, errors.GetError(res.Status, ignoredErrors) } retnNat.Spec = nNat.Spec return retnNat, nil @@ -819,7 +819,7 @@ func (c *client) DeleteNeighborNat(ctx context.Context, neigbhorNat *api.Neighbo Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return nnat, errors.GetError(res.Status, ignoredErrors[0]) + return nnat, errors.GetError(res.Status, ignoredErrors) } return nnat, nil } @@ -907,7 +907,7 @@ func (c *client) CreateFirewallRule(ctx context.Context, fwRule *api.FirewallRul Spec: api.FirewallRuleSpec{RuleID: fwRule.Spec.RuleID}, Status: api.ProtoStatusToStatus(res.Status)} if res.GetStatus().GetCode() != 0 { - return retFwrule, errors.GetError(res.Status, ignoredErrors[0]) + return retFwrule, errors.GetError(res.Status, ignoredErrors) } retFwrule.Spec = fwRule.Spec return retFwrule, nil @@ -927,7 +927,7 @@ func (c *client) GetFirewallRule(ctx context.Context, interfaceID string, ruleID FirewallRuleMeta: api.FirewallRuleMeta{InterfaceID: interfaceID}, Spec: api.FirewallRuleSpec{RuleID: ruleID}, Status: api.ProtoStatusToStatus(res.Status), - }, errors.GetError(res.Status, ignoredErrors[0]) + }, errors.GetError(res.Status, ignoredErrors) } return api.ProtoFwRuleToFwRule(res.Rule, interfaceID) @@ -948,7 +948,7 @@ func (c *client) DeleteFirewallRule(ctx context.Context, interfaceID string, rul Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retFwrule, errors.GetError(res.Status, ignoredErrors[0]) + return retFwrule, errors.GetError(res.Status, ignoredErrors) } return retFwrule, nil } @@ -963,7 +963,7 @@ func (c *client) CheckInitialized(ctx context.Context, ignoredErrors ...[]int32) Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retInitialized, errors.GetError(res.Status, ignoredErrors[0]) + return retInitialized, errors.GetError(res.Status, ignoredErrors) } retInitialized.Spec.UUID = res.Uuid return retInitialized, nil @@ -979,7 +979,7 @@ func (c *client) Initialize(ctx context.Context, ignoredErrors ...[]int32) (*api Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retInit, errors.GetError(res.Status, ignoredErrors[0]) + return retInit, errors.GetError(res.Status, ignoredErrors) } retInit.Spec.UUID = res.Uuid return retInit, nil @@ -999,7 +999,7 @@ func (c *client) GetVni(ctx context.Context, vni uint32, vniType uint8, ignoredE Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retVni, errors.GetError(res.Status, ignoredErrors[0]) + return retVni, errors.GetError(res.Status, ignoredErrors) } retVni.Spec.InUse = res.InUse return retVni, nil @@ -1019,7 +1019,7 @@ func (c *client) ResetVni(ctx context.Context, vni uint32, vniType uint8, ignore Status: api.ProtoStatusToStatus(res.Status), } if res.GetStatus().GetCode() != 0 { - return retVni, errors.GetError(res.Status, ignoredErrors[0]) + return retVni, errors.GetError(res.Status, ignoredErrors) } return retVni, nil } @@ -1036,7 +1036,7 @@ func (c *client) GetVersion(ctx context.Context, version *api.Version, ignoredEr } version.Status = api.ProtoStatusToStatus(res.Status) if res.GetStatus().GetCode() != 0 { - return version, errors.GetError(res.Status, ignoredErrors[0]) + return version, errors.GetError(res.Status, ignoredErrors) } version.Spec.ServiceProtocol = res.ServiceProtocol version.Spec.ServiceVersion = res.ServiceVersion diff --git a/errors/errors.go b/errors/errors.go index 9a1798a..0d7fb6a 100644 --- a/errors/errors.go +++ b/errors/errors.go @@ -94,12 +94,12 @@ func NewStatusError(errorCode int32, message string) *StatusError { } // Ignore requested status errors -func GetError(status *dpdkproto.Status, ignoredErrors []int32) error { +func GetError(status *dpdkproto.Status, ignoredErrors [][]int32) error { if status.Code == 0 { return nil } if len(ignoredErrors) > 0 { - for _, ignoredError := range ignoredErrors { + for _, ignoredError := range ignoredErrors[0] { if status.Code == ignoredError { return nil } From eaf3ffc618d563852b50cd2bd76c16749f538f86 Mon Sep 17 00:00:00 2001 From: Viliam Lorinc <viliam.lorinc@t-systems.com> Date: Thu, 21 Sep 2023 13:09:14 +0200 Subject: [PATCH 5/5] fix after rebase --- client/client.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/client.go b/client/client.go index 82d57ec..1a557c8 100644 --- a/client/client.go +++ b/client/client.go @@ -913,7 +913,7 @@ func (c *client) CreateFirewallRule(ctx context.Context, fwRule *api.FirewallRul return retFwrule, nil } -func (c *client) GetFirewallRule(ctx context.Context, interfaceID string, ruleID string, ignoredErrors ...errors.IgnoredErrors) (*api.FirewallRule, error) { +func (c *client) GetFirewallRule(ctx context.Context, interfaceID string, ruleID string, ignoredErrors ...[]int32) (*api.FirewallRule, error) { res, err := c.DPDKonmetalClient.GetFirewallRule(ctx, &dpdkproto.GetFirewallRuleRequest{ InterfaceId: []byte(interfaceID), RuleId: []byte(ruleID),