diff --git a/pkg/cdi/mocks/CDI.go b/pkg/cdi/mocks/CDI.go index ae7390e48..9edff22cd 100644 --- a/pkg/cdi/mocks/CDI.go +++ b/pkg/cdi/mocks/CDI.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.49.1. DO NOT EDIT. package mocks diff --git a/pkg/infoprovider/rdmaInfoProvider.go b/pkg/infoprovider/rdmaInfoProvider.go index 2e4d46500..895bc32df 100644 --- a/pkg/infoprovider/rdmaInfoProvider.go +++ b/pkg/infoprovider/rdmaInfoProvider.go @@ -54,6 +54,7 @@ func (ip *rdmaInfoProvider) GetDeviceSpecs() []*pluginapi.DeviceSpec { } devsSpec := ip.rdmaSpec.GetRdmaDeviceSpec() + glog.Infof("GetDeviceSpecs(): GetRdmaDeviceSpec returned %v", devsSpec) return devsSpec } diff --git a/pkg/netdevice/netResourcePool.go b/pkg/netdevice/netResourcePool.go index f46297fd8..9ed0a5d5b 100644 --- a/pkg/netdevice/netResourcePool.go +++ b/pkg/netdevice/netResourcePool.go @@ -68,9 +68,13 @@ func (rp *netResourcePool) GetDeviceSpecs(deviceIDs []string) []*pluginapi.Devic // StoreDeviceInfoFile stores the Device Info files according to the // k8snetworkplumbingwg/device-info-spec -func (rp *netResourcePool) StoreDeviceInfoFile(resourceNamePrefix string) error { +// for the requested deviceIDs +func (rp *netResourcePool) StoreDeviceInfoFile(resourceNamePrefix string, deviceIDs []string) error { var devInfo nettypes.DeviceInfo - for id, dev := range rp.GetDevicePool() { + devicePool := rp.GetDevicePool() + + for _, id := range deviceIDs { + dev := devicePool[id] netDev, ok := dev.(types.PciNetDevice) if !ok { return fmt.Errorf("storeDeviceInfoFile: Only pciNetDevices are supported") diff --git a/pkg/netdevice/netResourcePool_test.go b/pkg/netdevice/netResourcePool_test.go index 5c0c0ce6e..082bb1c50 100644 --- a/pkg/netdevice/netResourcePool_test.go +++ b/pkg/netdevice/netResourcePool_test.go @@ -150,7 +150,7 @@ var _ = Describe("NetResourcePool", func() { return nil }) rp := netdevice.NewNetResourcePool(nadutils, rc, pcis) - err := rp.StoreDeviceInfoFile("fakeOrg.io") + err := rp.StoreDeviceInfoFile("fakeOrg.io", []string{"fake1", "fake2"}) nadutils.AssertExpectations(t) Expect(err).ToNot(HaveOccurred()) }) @@ -217,7 +217,7 @@ var _ = Describe("NetResourcePool", func() { return nil }) rp := netdevice.NewNetResourcePool(nadutils, rc, pcis) - err := rp.StoreDeviceInfoFile("fakeOrg.io") + err := rp.StoreDeviceInfoFile("fakeOrg.io", []string{"fake1", "fake2"}) Expect(err).ToNot(HaveOccurred()) nadutils.AssertExpectations(t) }) diff --git a/pkg/resources/pool_stub.go b/pkg/resources/pool_stub.go index f30b2792e..6b2362b4f 100644 --- a/pkg/resources/pool_stub.go +++ b/pkg/resources/pool_stub.go @@ -167,7 +167,7 @@ func (rp *ResourcePoolImpl) GetDevicePool() map[string]types.HostDevice { // StoreDeviceInfoFile does nothing. DeviceType-specific ResourcePools might // store information according to the k8snetworkplumbingwg/device-info-spec -func (rp *ResourcePoolImpl) StoreDeviceInfoFile(resourceNamePrefix string) error { +func (rp *ResourcePoolImpl) StoreDeviceInfoFile(resourceNamePrefix string, deviceIDs []string) error { return nil } diff --git a/pkg/resources/server.go b/pkg/resources/server.go index 5951d0cd9..dc2864ce1 100644 --- a/pkg/resources/server.go +++ b/pkg/resources/server.go @@ -145,6 +145,12 @@ func (rs *resourceServer) Allocate(ctx context.Context, rqt *pluginapi.AllocateR containerResp.Mounts = rs.resourcePool.GetMounts(container.DevicesIDs) } + err = rs.resourcePool.StoreDeviceInfoFile(rs.resourceNamePrefix, container.DevicesIDs) + if err != nil { + glog.Errorf("failed to store device info file for device IDs %v: %v", container.DevicesIDs, err) + return nil, err + } + containerResp.Envs = envs resp.ContainerResponses = append(resp.ContainerResponses, containerResp) } @@ -247,10 +253,6 @@ func (rs *resourceServer) Start() error { resourceName := rs.resourcePool.GetResourceName() _ = rs.cleanUp() // try tp clean up and continue - if err := rs.resourcePool.StoreDeviceInfoFile(rs.resourceNamePrefix); err != nil { - glog.Errorf("%s: error creating DeviceInfo File: %s", rs.resourcePool.GetResourceName(), err.Error()) - } - glog.Infof("starting %s device plugin endpoint at: %s\n", resourceName, rs.endPoint) lis, err := net.Listen(unix, rs.sockPath) if err != nil { diff --git a/pkg/resources/server_test.go b/pkg/resources/server_test.go index 5608b7413..db71c1322 100644 --- a/pkg/resources/server_test.go +++ b/pkg/resources/server_test.go @@ -61,7 +61,6 @@ var _ = Describe("Server", func() { rp := mocks.ResourcePool{} rp.On("Probe").Return(false) rp.On("GetResourceName").Return("fakename") - rp.On("StoreDeviceInfoFile", "fakeprefix").Return(nil) rp.On("CleanDeviceInfoFile", "fakeprefix").Return(nil) // Use faked dir as socket dir @@ -78,7 +77,6 @@ var _ = Describe("Server", func() { if shouldEnablePluginWatch { _ = rs.Start() rp.AssertCalled(t, "CleanDeviceInfoFile", "fakeprefix") - rp.AssertCalled(t, "StoreDeviceInfoFile", "fakeprefix") } else { _ = os.MkdirAll(pluginapi.DevicePluginPath, 0755) registrationServer.start() @@ -153,7 +151,6 @@ var _ = Describe("Server", func() { On("DiscoverDevices").Return(nil). On("GetDevices").Return(map[string]*pluginapi.Device{}). On("Probe").Return(true). - On("StoreDeviceInfoFile", "fake").Return(nil). On("CleanDeviceInfoFile", "fake").Return(nil) // Create ResourceServer with plugin watch mode disabled @@ -195,7 +192,6 @@ var _ = Describe("Server", func() { On("DiscoverDevices").Return(nil). On("GetDevices").Return(map[string]*pluginapi.Device{}). On("Probe").Return(true). - On("StoreDeviceInfoFile", "fake").Return(nil). On("CleanDeviceInfoFile", "fake").Return(nil) // Create ResourceServer with plugin watch mode enabled rs := NewResourceServer("fake", "fake", true, false, &rp).(*resourceServer) @@ -230,7 +226,6 @@ var _ = Describe("Server", func() { On("DiscoverDevices").Return(nil). On("GetDevices").Return(map[string]*pluginapi.Device{}). On("Probe").Return(true). - On("StoreDeviceInfoFile", "fake").Return(nil). On("CleanDeviceInfoFile", "fake").Return(nil) // Create ResourceServer with plugin watch mode disabled @@ -274,7 +269,9 @@ var _ = Describe("Server", func() { On("GetEnvs", "fake.com", []string{"00:00.01"}). Return(map[string]string{"PCIDEVICE_FAKE_COM_FAKE_INFO": "{\"00:00.01\":{\"netdevice\":{\"pci\":\"00:00.01\"}}}"}, nil). On("GetMounts", []string{"00:00.01"}). - Return([]*pluginapi.Mount{{ContainerPath: "/dev/fake", HostPath: "/dev/fake", ReadOnly: false}}) + Return([]*pluginapi.Mount{{ContainerPath: "/dev/fake", HostPath: "/dev/fake", ReadOnly: false}}). + On("StoreDeviceInfoFile", "fake.com", []string{"00:00.01"}). + Return(nil) rs := NewResourceServer("fake.com", "fake", true, false, &rp).(*resourceServer) @@ -318,7 +315,9 @@ var _ = Describe("Server", func() { On("GetMounts", []string{"00:00.01"}). Return([]*pluginapi.Mount{{ContainerPath: "/dev/fake", HostPath: "/dev/fake", ReadOnly: false}}). On("GetCDIName"). - Return("fake.com") + Return("fake.com"). + On("StoreDeviceInfoFile", "fake.com", []string{"00:00.01"}). + Return(nil) rs := NewResourceServer("fake.com", "fake", true, true, &rp).(*resourceServer) diff --git a/pkg/types/mocks/APIDevice.go b/pkg/types/mocks/APIDevice.go index 91dc20b7f..14669863c 100644 --- a/pkg/types/mocks/APIDevice.go +++ b/pkg/types/mocks/APIDevice.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.49.1. DO NOT EDIT. package mocks diff --git a/pkg/types/mocks/AccelDevice.go b/pkg/types/mocks/AccelDevice.go index f5cd4bf1f..6358e5570 100644 --- a/pkg/types/mocks/AccelDevice.go +++ b/pkg/types/mocks/AccelDevice.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.49.1. DO NOT EDIT. package mocks diff --git a/pkg/types/mocks/AuxNetDevice.go b/pkg/types/mocks/AuxNetDevice.go index 62aa1eff5..607a7b9c5 100644 --- a/pkg/types/mocks/AuxNetDevice.go +++ b/pkg/types/mocks/AuxNetDevice.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.49.1. DO NOT EDIT. package mocks diff --git a/pkg/types/mocks/DeviceInfoProvider.go b/pkg/types/mocks/DeviceInfoProvider.go index 080473a2d..0bed2b9a5 100644 --- a/pkg/types/mocks/DeviceInfoProvider.go +++ b/pkg/types/mocks/DeviceInfoProvider.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.49.1. DO NOT EDIT. package mocks diff --git a/pkg/types/mocks/DeviceProvider.go b/pkg/types/mocks/DeviceProvider.go index d462da7f6..40932e7e0 100644 --- a/pkg/types/mocks/DeviceProvider.go +++ b/pkg/types/mocks/DeviceProvider.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.49.1. DO NOT EDIT. package mocks diff --git a/pkg/types/mocks/DeviceSelector.go b/pkg/types/mocks/DeviceSelector.go index df55a92b4..e2a9f7eea 100644 --- a/pkg/types/mocks/DeviceSelector.go +++ b/pkg/types/mocks/DeviceSelector.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.49.1. DO NOT EDIT. package mocks diff --git a/pkg/types/mocks/HostDevice.go b/pkg/types/mocks/HostDevice.go index e29fa3634..8eab9c346 100644 --- a/pkg/types/mocks/HostDevice.go +++ b/pkg/types/mocks/HostDevice.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.49.1. DO NOT EDIT. package mocks diff --git a/pkg/types/mocks/LinkWatcher.go b/pkg/types/mocks/LinkWatcher.go index ae32c6feb..62138c061 100644 --- a/pkg/types/mocks/LinkWatcher.go +++ b/pkg/types/mocks/LinkWatcher.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.49.1. DO NOT EDIT. package mocks diff --git a/pkg/types/mocks/NadUtils.go b/pkg/types/mocks/NadUtils.go index 967e417ea..b6e8674fc 100644 --- a/pkg/types/mocks/NadUtils.go +++ b/pkg/types/mocks/NadUtils.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.49.1. DO NOT EDIT. package mocks diff --git a/pkg/types/mocks/NetDevice.go b/pkg/types/mocks/NetDevice.go index 09ae9c9ec..5a02e50f1 100644 --- a/pkg/types/mocks/NetDevice.go +++ b/pkg/types/mocks/NetDevice.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.49.1. DO NOT EDIT. package mocks diff --git a/pkg/types/mocks/PciDevice.go b/pkg/types/mocks/PciDevice.go index b84902f92..6637c6621 100644 --- a/pkg/types/mocks/PciDevice.go +++ b/pkg/types/mocks/PciDevice.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.49.1. DO NOT EDIT. package mocks diff --git a/pkg/types/mocks/PciNetDevice.go b/pkg/types/mocks/PciNetDevice.go index a7093a6a2..6ab8810ac 100644 --- a/pkg/types/mocks/PciNetDevice.go +++ b/pkg/types/mocks/PciNetDevice.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.49.1. DO NOT EDIT. package mocks @@ -255,6 +255,24 @@ func (_m *PciNetDevice) GetNetName() string { return r0 } +// GetPKey provides a mock function with given fields: +func (_m *PciNetDevice) GetPKey() string { + ret := _m.Called() + + if len(ret) == 0 { + panic("no return value specified for GetPKey") + } + + var r0 string + if rf, ok := ret.Get(0).(func() string); ok { + r0 = rf() + } else { + r0 = ret.Get(0).(string) + } + + return r0 +} + // GetPciAddr provides a mock function with given fields: func (_m *PciNetDevice) GetPciAddr() string { ret := _m.Called() @@ -365,20 +383,6 @@ func (_m *PciNetDevice) IsRdma() bool { return r0 } -// GetPKey provides a mock function with given fields: -func (_m *PciNetDevice) GetPKey() string { - ret := _m.Called() - - var r0 string - if rf, ok := ret.Get(0).(func() string); ok { - r0 = rf() - } else { - r0 = ret.Get(0).(string) - } - - return r0 -} - // NewPciNetDevice creates a new instance of PciNetDevice. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. // The first argument is typically a *testing.T value. func NewPciNetDevice(t interface { diff --git a/pkg/types/mocks/RdmaSpec.go b/pkg/types/mocks/RdmaSpec.go index 79ca8175f..b11ca1ee2 100644 --- a/pkg/types/mocks/RdmaSpec.go +++ b/pkg/types/mocks/RdmaSpec.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.49.1. DO NOT EDIT. package mocks diff --git a/pkg/types/mocks/ResourceFactory.go b/pkg/types/mocks/ResourceFactory.go index 3f7f99f7f..eb561e9ad 100644 --- a/pkg/types/mocks/ResourceFactory.go +++ b/pkg/types/mocks/ResourceFactory.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.49.1. DO NOT EDIT. package mocks diff --git a/pkg/types/mocks/ResourcePool.go b/pkg/types/mocks/ResourcePool.go index 47a95c040..58e34aebd 100644 --- a/pkg/types/mocks/ResourcePool.go +++ b/pkg/types/mocks/ResourcePool.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.49.1. DO NOT EDIT. package mocks @@ -193,17 +193,17 @@ func (_m *ResourcePool) Probe() bool { return r0 } -// StoreDeviceInfoFile provides a mock function with given fields: resourceNamePrefix -func (_m *ResourcePool) StoreDeviceInfoFile(resourceNamePrefix string) error { - ret := _m.Called(resourceNamePrefix) +// StoreDeviceInfoFile provides a mock function with given fields: resourceNamePrefix, deviceIDs +func (_m *ResourcePool) StoreDeviceInfoFile(resourceNamePrefix string, deviceIDs []string) error { + ret := _m.Called(resourceNamePrefix, deviceIDs) if len(ret) == 0 { panic("no return value specified for StoreDeviceInfoFile") } var r0 error - if rf, ok := ret.Get(0).(func(string) error); ok { - r0 = rf(resourceNamePrefix) + if rf, ok := ret.Get(0).(func(string, []string) error); ok { + r0 = rf(resourceNamePrefix, deviceIDs) } else { r0 = ret.Error(0) } diff --git a/pkg/types/mocks/ResourceServer.go b/pkg/types/mocks/ResourceServer.go index ba393c1a3..1a768e153 100644 --- a/pkg/types/mocks/ResourceServer.go +++ b/pkg/types/mocks/ResourceServer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.49.1. DO NOT EDIT. package mocks diff --git a/pkg/types/mocks/VdpaDevice.go b/pkg/types/mocks/VdpaDevice.go index fb36f2866..23f683c4d 100644 --- a/pkg/types/mocks/VdpaDevice.go +++ b/pkg/types/mocks/VdpaDevice.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.49.1. DO NOT EDIT. package mocks diff --git a/pkg/types/types.go b/pkg/types/types.go index 3b7066087..48dadc6d2 100644 --- a/pkg/types/types.go +++ b/pkg/types/types.go @@ -194,7 +194,7 @@ type ResourcePool interface { GetDeviceSpecs(deviceIDs []string) []*pluginapi.DeviceSpec GetEnvs(prefix string, deviceIDs []string) (map[string]string, error) GetMounts(deviceIDs []string) []*pluginapi.Mount - StoreDeviceInfoFile(resourceNamePrefix string) error + StoreDeviceInfoFile(resourceNamePrefix string, deviceIDs []string) error CleanDeviceInfoFile(resourceNamePrefix string) error GetCDIName() string } diff --git a/pkg/utils/mocks/NetlinkProvider.go b/pkg/utils/mocks/NetlinkProvider.go index 7c62b1ed7..9282fec17 100644 --- a/pkg/utils/mocks/NetlinkProvider.go +++ b/pkg/utils/mocks/NetlinkProvider.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.3. DO NOT EDIT. +// Code generated by mockery v2.49.1. DO NOT EDIT. package mocks @@ -43,7 +43,7 @@ func (_m *NetlinkProvider) GetDevLinkDeviceEswitchAttrs(ifName string) (*netlink } // GetDevlinkGetDeviceInfoByNameAsMap provides a mock function with given fields: bus, device -func (_m *NetlinkProvider) GetDevlinkGetDeviceInfoByNameAsMap(bus, device string) (map[string]string, error) { +func (_m *NetlinkProvider) GetDevlinkGetDeviceInfoByNameAsMap(bus string, device string) (map[string]string, error) { ret := _m.Called(bus, device) if len(ret) == 0 { @@ -133,7 +133,7 @@ func (_m *NetlinkProvider) GetLinkAttrs(ifName string) (*netlink.LinkAttrs, erro } // HasRdmaParam provides a mock function with given fields: bus, pciAddr -func (_m *NetlinkProvider) HasRdmaParam(bus, pciAddr string) (bool, error) { +func (_m *NetlinkProvider) HasRdmaParam(bus string, pciAddr string) (bool, error) { ret := _m.Called(bus, pciAddr) if len(ret) == 0 { diff --git a/pkg/utils/mocks/RdmaProvider.go b/pkg/utils/mocks/RdmaProvider.go index 8bcb896d6..14097d030 100644 --- a/pkg/utils/mocks/RdmaProvider.go +++ b/pkg/utils/mocks/RdmaProvider.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.49.1. DO NOT EDIT. package mocks diff --git a/pkg/utils/mocks/SriovnetProvider.go b/pkg/utils/mocks/SriovnetProvider.go index 9541a1621..dfc962fc4 100644 --- a/pkg/utils/mocks/SriovnetProvider.go +++ b/pkg/utils/mocks/SriovnetProvider.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.49.1. DO NOT EDIT. package mocks @@ -39,6 +39,34 @@ func (_m *SriovnetProvider) GetAuxNetDevicesFromPci(pciAddr string) ([]string, e return r0, r1 } +// GetDefaultPKeyFromPci provides a mock function with given fields: pciAddr +func (_m *SriovnetProvider) GetDefaultPKeyFromPci(pciAddr string) (string, error) { + ret := _m.Called(pciAddr) + + if len(ret) == 0 { + panic("no return value specified for GetDefaultPKeyFromPci") + } + + var r0 string + var r1 error + if rf, ok := ret.Get(0).(func(string) (string, error)); ok { + return rf(pciAddr) + } + if rf, ok := ret.Get(0).(func(string) string); ok { + r0 = rf(pciAddr) + } else { + r0 = ret.Get(0).(string) + } + + if rf, ok := ret.Get(1).(func(string) error); ok { + r1 = rf(pciAddr) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + // GetNetDevicesFromAux provides a mock function with given fields: auxDev func (_m *SriovnetProvider) GetNetDevicesFromAux(auxDev string) ([]string, error) { ret := _m.Called(auxDev) @@ -181,30 +209,6 @@ func (_m *SriovnetProvider) GetUplinkRepresentorFromAux(auxDev string) (string, return r0, r1 } -// GetDefaultPKeyFromPci provides a mock function with given fields: pciAddr -func (_m *SriovnetProvider) GetDefaultPKeyFromPci(pciAddr string) (string, error) { - ret := _m.Called(pciAddr) - - var r0 string - var r1 error - if rf, ok := ret.Get(0).(func(string) (string, error)); ok { - return rf(pciAddr) - } - if rf, ok := ret.Get(0).(func(string) string); ok { - r0 = rf(pciAddr) - } else { - r0 = ret.Get(0).(string) - } - - if rf, ok := ret.Get(1).(func(string) error); ok { - r1 = rf(pciAddr) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - // NewSriovnetProvider creates a new instance of SriovnetProvider. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. // The first argument is typically a *testing.T value. func NewSriovnetProvider(t interface { diff --git a/pkg/utils/mocks/VdpaProvider.go b/pkg/utils/mocks/VdpaProvider.go index d4d6a77c4..7a519e4f6 100644 --- a/pkg/utils/mocks/VdpaProvider.go +++ b/pkg/utils/mocks/VdpaProvider.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.49.1. DO NOT EDIT. package mocks