Skip to content

Commit

Permalink
Create instance of IB interface in the host object
Browse files Browse the repository at this point in the history
Signed-off-by: amaslennikov <[email protected]>
  • Loading branch information
almaslennikov committed Apr 2, 2024
1 parent 4b093e4 commit 3823ee6
Show file tree
Hide file tree
Showing 7 changed files with 59 additions and 14 deletions.
6 changes: 5 additions & 1 deletion pkg/helper/host.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,11 @@ func NewHostHelpers(utilsHelper utils.CmdInterface,
func NewDefaultHostHelpers() (HostHelpersInterface, error) {
utilsHelper := utils.New()
mlxHelper := mlx.New(utilsHelper)
hostManager := host.NewHostManager(utilsHelper)
hostManager, err := host.NewHostManager(utilsHelper)
if err != nil {
log.Log.Error(err, "failed to create host manager")
return nil, err
}
storeManager, err := store.NewManager()
if err != nil {
log.Log.Error(err, "failed to create store manager")
Expand Down
14 changes: 14 additions & 0 deletions pkg/helper/mock/mock_helper.go

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

15 changes: 7 additions & 8 deletions pkg/host/internal/sriov/sriov_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
. "github.com/onsi/gomega"

sriovnetworkv1 "github.com/k8snetworkplumbingwg/sriov-network-operator/api/v1"
infinibandMockPkg "github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/host/internal/infiniband/mock"
dputilsMockPkg "github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/host/internal/lib/dputils/mock"
netlinkMockPkg "github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/host/internal/lib/netlink/mock"
hostMockPkg "github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/host/mock"
Expand All @@ -29,8 +30,8 @@ var _ = Describe("SRIOV", func() {
dputilsLibMock *dputilsMockPkg.MockDPUtilsLib
hostMock *hostMockPkg.MockHostManagerInterface
storeManagerMode *hostStoreMockPkg.MockManagerInterface

testCtrl *gomock.Controller
infinibandMock *infinibandMockPkg.MockInfinibandInterface
testCtrl *gomock.Controller

testError = fmt.Errorf("test")
)
Expand All @@ -40,8 +41,9 @@ var _ = Describe("SRIOV", func() {
dputilsLibMock = dputilsMockPkg.NewMockDPUtilsLib(testCtrl)
hostMock = hostMockPkg.NewMockHostManagerInterface(testCtrl)
storeManagerMode = hostStoreMockPkg.NewMockManagerInterface(testCtrl)
infinibandMock = infinibandMockPkg.NewMockInfinibandInterface(testCtrl)

s = New(nil, hostMock, hostMock, hostMock, hostMock, nil, netlinkLibMock, dputilsLibMock)
s = New(nil, hostMock, hostMock, hostMock, hostMock, infinibandMock, netlinkLibMock, dputilsLibMock)
})

AfterEach(func() {
Expand Down Expand Up @@ -193,16 +195,13 @@ var _ = Describe("SRIOV", func() {
pfLinkMock.EXPECT().Attrs().Return(&netlink.LinkAttrs{OperState: netlink.OperDown})
netlinkLibMock.EXPECT().LinkSetUp(pfLinkMock).Return(nil)

dputilsLibMock.EXPECT().GetVFID("0000:d8:00.2").Return(0, nil).Times(2)
hostMock.EXPECT().Unbind("0000:d8:00.2").Return(nil)
dputilsLibMock.EXPECT().GetVFID("0000:d8:00.2").Return(0, nil).Times(1)
hostMock.EXPECT().HasDriver("0000:d8:00.2").Return(true, "test").Times(2)
hostMock.EXPECT().UnbindDriverIfNeeded("0000:d8:00.2", true).Return(nil)
hostMock.EXPECT().BindDefaultDriver("0000:d8:00.2").Return(nil)
hostMock.EXPECT().SetNetdevMTU("0000:d8:00.2", 2000).Return(nil)
vf0LinkMock := netlinkMockPkg.NewMockLink(testCtrl)
netlinkLibMock.EXPECT().LinkSetVfNodeGUID(vf0LinkMock, 0, gomock.Any()).Return(nil)
netlinkLibMock.EXPECT().LinkSetVfPortGUID(vf0LinkMock, 0, gomock.Any()).Return(nil)
netlinkLibMock.EXPECT().LinkList().Return(nil, nil).AnyTimes()
infinibandMock.EXPECT().ConfigureVfGUID(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes()

storeManagerMode.EXPECT().SaveLastPfAppliedStatus(gomock.Any()).Return(nil)

Expand Down
14 changes: 11 additions & 3 deletions pkg/host/manager.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package host

import (
"github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/host/internal/infiniband"
"github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/host/internal/kernel"
"github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/host/internal/lib/dputils"
"github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/host/internal/lib/ethtool"
Expand All @@ -24,6 +25,7 @@ type HostManagerInterface interface {
types.UdevInterface
types.SriovInterface
types.VdpaInterface
types.InfinibandInterface
}

type hostManager struct {
Expand All @@ -34,9 +36,10 @@ type hostManager struct {
types.UdevInterface
types.SriovInterface
types.VdpaInterface
types.InfinibandInterface
}

func NewHostManager(utilsInterface utils.CmdInterface) HostManagerInterface {
func NewHostManager(utilsInterface utils.CmdInterface) (HostManagerInterface, error) {
dpUtils := dputils.New()
netlinkLib := netlink.New()
ethtoolLib := ethtool.New()
Expand All @@ -45,7 +48,11 @@ func NewHostManager(utilsInterface utils.CmdInterface) HostManagerInterface {
sv := service.New(utilsInterface)
u := udev.New(utilsInterface)
v := vdpa.New(k, netlinkLib)
sr := sriov.New(utilsInterface, k, n, u, v, netlinkLib, dpUtils)
ib, err := infiniband.New(netlinkLib, k, n)
sr := sriov.New(utilsInterface, k, n, u, v, ib, netlinkLib, dpUtils)
if err != nil {
return nil, err
}

return &hostManager{
utilsInterface,
Expand All @@ -55,5 +62,6 @@ func NewHostManager(utilsInterface utils.CmdInterface) HostManagerInterface {
u,
sr,
v,
}
ib,
}, nil
}
14 changes: 14 additions & 0 deletions pkg/host/mock/mock_host.go

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

8 changes: 7 additions & 1 deletion pkg/platforms/platforms.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package platforms

import (
"sigs.k8s.io/controller-runtime/pkg/log"

"github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/host"
"github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/platforms/openshift"
"github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/platforms/openstack"
Expand All @@ -24,7 +26,11 @@ func NewDefaultPlatformHelper() (Interface, error) {
return nil, err
}
utilsHelper := utils.New()
hostManager := host.NewHostManager(utilsHelper)
hostManager, err := host.NewHostManager(utilsHelper)
if err != nil {
log.Log.Error(err, "failed to create host manager")
return nil, err
}
openstackContext := openstack.New(hostManager)

return &platformHelper{
Expand Down
2 changes: 1 addition & 1 deletion pkg/plugins/k8s/k8s_plugin_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ var _ = Describe("K8s plugin", func() {
testCtrl = gomock.NewController(GinkgoT())

hostHelper = mock_helper.NewMockHostHelpersInterface(testCtrl)
realHostMgr := host.NewHostManager(hostHelper)
realHostMgr, _ := host.NewHostManager(hostHelper)

// proxy some functions to real host manager to simplify testing and to additionally validate manifests
for _, f := range []string{
Expand Down

0 comments on commit 3823ee6

Please sign in to comment.