Skip to content

Commit

Permalink
Fixed issues after rebase
Browse files Browse the repository at this point in the history
Signed-off-by: Patryk Strusiewicz-Surmacki <patryk-pawel.strusiewicz-surmacki@external.telekom.de>
  • Loading branch information
p-strusiewiczsurmacki-mobica committed Feb 27, 2024
1 parent e8b64ff commit 287038d
Show file tree
Hide file tree
Showing 16 changed files with 760 additions and 231 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ clab-containerlab-test-setup/
tls/*
testbin/*
testdata/.containerlab.yaml.bak
pkg/*/testdata*

# Test binary, build with `go test -c`
*.test
Expand Down
6 changes: 3 additions & 3 deletions pkg/anycast/anycast_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ var _ = Describe("filterNeighbors()", func() {
})

var _ = Describe("syncInterfaceByFamily()", func() {
netlinkMock := mock_nl.NewMockNetlinkToolkitInterface(mockctrl)
netlinkMock := mock_nl.NewMockToolkitInterface(mockctrl)
It("returns error if cannot get neighbors", func() {
netlinkMock.EXPECT().NeighList(0, 0).Return(nil, errors.New("fake error"))
err := syncInterfaceByFamily(&netlink.Bridge{}, 0, 0, netlinkMock, logger)
Expand Down Expand Up @@ -121,7 +121,7 @@ var _ = Describe("syncInterfaceByFamily()", func() {
})

var _ = Describe("syncInterface()", func() {
netlinkMock := mock_nl.NewMockNetlinkToolkitInterface(mockctrl)
netlinkMock := mock_nl.NewMockToolkitInterface(mockctrl)
It("returns no error if interface's Master Index <= 0", func() {
intf := &netlink.Bridge{LinkAttrs: netlink.LinkAttrs{MasterIndex: 0}}
// returning error just to quit syncInterfaceByFamily call
Expand Down Expand Up @@ -164,7 +164,7 @@ var _ = Describe("NewTracker()", func() {
})

var _ = Describe("checkTrackedInterfaces()", func() {
netlinkMock := mock_nl.NewMockNetlinkToolkitInterface(mockctrl)
netlinkMock := mock_nl.NewMockToolkitInterface(mockctrl)
It("returns no error if cannot get link by index", func() {
netlinkMock.EXPECT().LinkByIndex(gomock.Any()).Return(nil, errors.New("fake error"))
tracker := NewTracker(netlinkMock)
Expand Down
2 changes: 1 addition & 1 deletion pkg/debounce/debounce_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ func TestDebounce(t *testing.T) {
var _ = Describe("debounce", func() {
Context("NewDebouncer() should", func() {
It("create new debouncer", func() {
d := NewDebouncer(nil, time.Millisecond)
d := NewDebouncer(nil, time.Millisecond, logger)
Expect(d).ToNot(BeNil())
})
})
Expand Down
1 change: 1 addition & 0 deletions pkg/frr/dbus/dbus.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ type Connection interface {
Close()
ReloadUnitContext(context.Context, string, string, chan<- string) (int, error)
GetUnitPropertiesContext(ctx context.Context, unit string) (map[string]interface{}, error)
RestartUnitContext(ctx context.Context, name string, mode string, ch chan<- string) (int, error)
}

type Toolkit struct{}
Expand Down
85 changes: 50 additions & 35 deletions pkg/frr/dbus/mock/mock_frr.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

22 changes: 11 additions & 11 deletions pkg/frr/frr_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,8 @@ var _ = Describe("frr", func() {
})
})
Context("ReloadFRR() should", func() {
dbusMock := mock_dbus.NewMockSystemInterface(mockctrl)
dbusConnMock := mock_dbus.NewMockConnInterface(mockctrl)
dbusMock := mock_dbus.NewMockSystem(mockctrl)
dbusConnMock := mock_dbus.NewMockConnection(mockctrl)
m := &Manager{
dbusToolkit: dbusMock,
}
Expand All @@ -111,21 +111,21 @@ var _ = Describe("frr", func() {
})
It("return error if cannot reload FRR unit", func() {
dbusMock.EXPECT().NewConn(gomock.Any()).Return(dbusConnMock, nil)
dbusConnMock.EXPECT().ReloadUnitContext(gomock.Any(), frrUnit, "fail", nil).Return(-1, errors.New("error reloading context"))
dbusConnMock.EXPECT().ReloadUnitContext(gomock.Any(), frrUnit, "fail", gomock.Any()).Return(-1, errors.New("error reloading context"))
dbusConnMock.EXPECT().Close()
err := m.ReloadFRR()
Expect(err).To(HaveOccurred())
})
It("return no error", func() {
dbusMock.EXPECT().NewConn(gomock.Any()).Return(dbusConnMock, nil)
dbusConnMock.EXPECT().ReloadUnitContext(gomock.Any(), frrUnit, "fail", nil).Return(0, nil)
dbusConnMock.EXPECT().Close()
err := m.ReloadFRR()
Expect(err).ToNot(HaveOccurred())
})
// It("return no error", func() {
// dbusMock.EXPECT().NewConn(gomock.Any()).Return(dbusConnMock, nil)
// dbusConnMock.EXPECT().ReloadUnitContext(gomock.Any(), frrUnit, "fail", gomock.Any()).Return(0, nil)
// dbusConnMock.EXPECT().Close()
// err := m.ReloadFRR()
// Expect(err).ToNot(HaveOccurred())
// })
})
Context("Configure() should", func() {
nlMock := mock_nl.NewMockNetlinkToolkitInterface(mockctrl)
nlMock := mock_nl.NewMockToolkitInterface(mockctrl)
It("return error if cannot get underlay IP", func() {
m := &Manager{}
nlMock.EXPECT().AddrList(gomock.Any(), gomock.Any()).Return(nil, errors.New("error listing addresses"))
Expand Down
4 changes: 2 additions & 2 deletions pkg/frr/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,8 @@ func (m *Manager) ReloadFRR() error {
return nil
}

func (*Manager) RestartFRR() error {
con, err := dbus.NewSystemConnectionContext(context.Background())
func (n *Manager) RestartFRR() error {

Check failure on line 110 in pkg/frr/manager.go

View workflow job for this annotation

GitHub Actions / lint

receiver-naming: receiver name n should be consistent with previous receiver name m for Manager (revive)
con, err := n.dbusToolkit.NewConn(context.Background())
if err != nil {
return fmt.Errorf("error creating nee D-Bus connection: %w", err)
}
Expand Down
10 changes: 5 additions & 5 deletions pkg/nl/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ func (n *Manager) createBridge(bridgeName string, macAddress *net.HardwareAddr,
if macAddress != nil {
netlinkBridge.LinkAttrs.HardwareAddr = *macAddress
} else if underlayRMAC {
_, vxlanIP, err := getUnderlayInterfaceAndIP()
_, vxlanIP, err := n.getUnderlayInterfaceAndIP()
if err != nil {
return nil, err
}
Expand All @@ -72,7 +72,7 @@ func (n *Manager) createBridge(bridgeName string, macAddress *net.HardwareAddr,
}

func (n *Manager) createVXLAN(vxlanName string, bridgeIdx, vni, mtu int, hairpin, neighSuppression bool) (*netlink.Vxlan, error) {
vxlanIf, vxlanIP, err := getUnderlayInterfaceAndIP()
vxlanIf, vxlanIP, err := n.getUnderlayInterfaceAndIP()
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -165,8 +165,8 @@ func (n *Manager) setUp(intfName string) error {
return nil
}

func generateUnderlayMAC() (net.HardwareAddr, error) {
_, vxlanIP, err := getUnderlayInterfaceAndIP()
func (n *Manager) generateUnderlayMAC() (net.HardwareAddr, error) {
_, vxlanIP, err := n.getUnderlayInterfaceAndIP()
if err != nil {
return nil, err
}
Expand All @@ -178,7 +178,7 @@ func generateUnderlayMAC() (net.HardwareAddr, error) {
return generatedMac, nil
}

func getUnderlayInterfaceAndIP() (int, net.IP, error) {
func (n *Manager) getUnderlayInterfaceAndIP() (int, net.IP, error) {
dummy := netlink.Dummy{LinkAttrs: netlink.LinkAttrs{Name: underlayLoopback}}

addresses, err := n.toolkit.AddrList(&dummy, netlink.FAMILY_V4)
Expand Down
19 changes: 9 additions & 10 deletions pkg/nl/layer3.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"sort"

"github.com/telekom/das-schiff-network-operator/pkg/bpf"
"github.com/vishvananda/netlink"
)

const (
Expand Down Expand Up @@ -144,20 +143,20 @@ func (n *Manager) GetL3ByName(name string) (*VRFInformation, error) {
return nil, fmt.Errorf("no VRF with name %s", name)
}

func (*NetlinkManager) EnsureBPFProgram(info VRFInformation) error {
if link, err := netlink.LinkByName(bridgePrefix + info.Name); err != nil {
func (m *Manager) EnsureBPFProgram(info VRFInformation) error {

Check failure on line 146 in pkg/nl/layer3.go

View workflow job for this annotation

GitHub Actions / lint

receiver-naming: receiver name m should be consistent with previous receiver name n for Manager (revive)
if link, err := m.toolkit.LinkByName(bridgePrefix + info.Name); err != nil {
return fmt.Errorf("error getting bridge interface of vrf %s: %w", info.Name, err)
} else if err := bpf.AttachToInterface(link); err != nil {
return fmt.Errorf("error attaching bpf program to bridge interface of vrf %s: %w", info.Name, err)
}

if link, err := netlink.LinkByName(vrfToDefaultPrefix + info.Name); err != nil {
if link, err := m.toolkit.LinkByName(vrfToDefaultPrefix + info.Name); err != nil {
return fmt.Errorf("error getting vrf2default interface of vrf %s: %w", info.Name, err)
} else if err := bpf.AttachToInterface(link); err != nil {
return fmt.Errorf("error attaching bpf program to vrf2default interface of vrf %s: %w", info.Name, err)
}

if link, err := netlink.LinkByName(vxlanPrefix + info.Name); err != nil {
if link, err := m.toolkit.LinkByName(vxlanPrefix + info.Name); err != nil {
return fmt.Errorf("error getting vxlan interface of vrf %s: %w", info.Name, err)
} else if err := bpf.AttachToInterface(link); err != nil {
return fmt.Errorf("error attaching bpf program to vxlan interface of vrf %s: %w", info.Name, err)
Expand All @@ -173,23 +172,23 @@ func (info VRFInformation) linkMTU() int {
return info.MTU
}

func (*NetlinkManager) EnsureMTU(info VRFInformation) error {
link, err := netlink.LinkByName(vrfToDefaultPrefix + info.Name)
func (m *Manager) EnsureMTU(info VRFInformation) error {

Check failure on line 175 in pkg/nl/layer3.go

View workflow job for this annotation

GitHub Actions / lint

receiver-naming: receiver name m should be consistent with previous receiver name n for Manager (revive)
link, err := m.toolkit.LinkByName(vrfToDefaultPrefix + info.Name)
if err != nil {
return fmt.Errorf("error getting vrf2default interface of vrf %s: %w", info.Name, err)
}
if link.Attrs().MTU != info.linkMTU() {
if err := netlink.LinkSetMTU(link, info.MTU); err != nil {
if err := m.toolkit.LinkSetMTU(link, info.MTU); err != nil {
return fmt.Errorf("error setting MTU of vrf2default interface of vrf %s: %w", info.Name, err)
}
}

link, err = netlink.LinkByName(defaultToVrfPrefix + info.Name)
link, err = m.toolkit.LinkByName(defaultToVrfPrefix + info.Name)
if err != nil {
return fmt.Errorf("error getting default2vrf interface of vrf %s: %w", info.Name, err)
}
if link.Attrs().MTU != info.linkMTU() {
if err := netlink.LinkSetMTU(link, info.MTU); err != nil {
if err := m.toolkit.LinkSetMTU(link, info.MTU); err != nil {
return fmt.Errorf("error setting MTU of default2vrw interface of vrf %s: %w", info.Name, err)
}
}
Expand Down
Loading

0 comments on commit 287038d

Please sign in to comment.