diff --git a/pkg/infoprovider/vdpaInfoProvider.go b/pkg/infoprovider/vdpaInfoProvider.go index e46711f40..3376e528e 100644 --- a/pkg/infoprovider/vdpaInfoProvider.go +++ b/pkg/infoprovider/vdpaInfoProvider.go @@ -39,6 +39,14 @@ func NewVdpaInfoProvider(vdpaType types.VdpaType, vdpaDev types.VdpaDevice) type dev: vdpaDev, vdpaType: vdpaType, } + if vdpaType == types.VdpaVhostType && vdpaDev != nil { + vdpaPath, err := vdpaDev.GetPath() + if err != nil { + glog.Errorf("Unexpected error when fetching the vdpa device path: %s", err) + } + vdpaInfoProvider.vdpaPath = vdpaPath + } + return vdpaInfoProvider } @@ -58,20 +66,14 @@ func (vip *vdpaInfoProvider) GetDeviceSpecs() []*pluginapi.DeviceSpec { } devSpecs := make([]*pluginapi.DeviceSpec, 0) - // DeviceSpecs only required for vhost vdpa type as the - if vip.vdpaType == types.VdpaVhostType { - vdpaPath, err := vip.dev.GetPath() - if err != nil { - glog.Errorf("Unexpected error when fetching the vdpa device path: %s", err) - return nil - } + if vip.vdpaPath != "" { devSpecs = append(devSpecs, &pluginapi.DeviceSpec{ - HostPath: vdpaPath, - ContainerPath: vdpaPath, + HostPath: vip.vdpaPath, + ContainerPath: vip.vdpaPath, Permissions: "rw", }) - vip.vdpaPath = vdpaPath } + return devSpecs } diff --git a/pkg/infoprovider/vdpaInfoProvider_test.go b/pkg/infoprovider/vdpaInfoProvider_test.go index 150860af7..b3c65b26c 100644 --- a/pkg/infoprovider/vdpaInfoProvider_test.go +++ b/pkg/infoprovider/vdpaInfoProvider_test.go @@ -86,7 +86,6 @@ var _ = Describe("vdpaInfoProvider", func() { vdpa.On("GetType").Return(types.VdpaVhostType). On("GetPath").Return("/dev/vhost-vdpa1", nil) dip := infoprovider.NewVdpaInfoProvider(types.VdpaVhostType, vdpa) - dip.GetDeviceSpecs() envs := dip.GetEnvVal() Expect(len(envs)).To(Equal(1)) mount, exist := envs["mount"]