mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-08-14 22:24:14 +00:00
virtcontainers: make CreateDevice func private
CreateDevice() is only used by `NewDevices()` so we can make it private and there's no need to export it. Signed-off-by: Zhang Wei <zhangwei555@huawei.com>
This commit is contained in:
parent
366558ad5b
commit
9acbcba967
@ -57,6 +57,5 @@ type Device interface {
|
|||||||
// DeviceManager can be used to create a new device, this can be used as single
|
// DeviceManager can be used to create a new device, this can be used as single
|
||||||
// device management object.
|
// device management object.
|
||||||
type DeviceManager interface {
|
type DeviceManager interface {
|
||||||
CreateDevice(devInfo config.DeviceInfo) Device
|
|
||||||
NewDevices(devInfos []config.DeviceInfo) ([]Device, error)
|
NewDevices(devInfos []config.DeviceInfo) ([]Device, error)
|
||||||
}
|
}
|
||||||
|
@ -29,21 +29,25 @@ func deviceLogger() *logrus.Entry {
|
|||||||
return api.DeviceLogger().WithField("subsystem", "device")
|
return api.DeviceLogger().WithField("subsystem", "device")
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateDevice creates one device based on DeviceInfo
|
// createDevice creates one device based on DeviceInfo
|
||||||
func (dm *deviceManager) CreateDevice(devInfo config.DeviceInfo) api.Device {
|
func (dm *deviceManager) createDevice(devInfo config.DeviceInfo) (api.Device, error) {
|
||||||
path := devInfo.HostPath
|
path, err := config.GetHostPathFunc(devInfo)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
devInfo.HostPath = path
|
||||||
if isVFIO(path) {
|
if isVFIO(path) {
|
||||||
return drivers.NewVFIODevice(devInfo)
|
return drivers.NewVFIODevice(devInfo), nil
|
||||||
} else if isBlock(devInfo) {
|
} else if isBlock(devInfo) {
|
||||||
if devInfo.DriverOptions == nil {
|
if devInfo.DriverOptions == nil {
|
||||||
devInfo.DriverOptions = make(map[string]string)
|
devInfo.DriverOptions = make(map[string]string)
|
||||||
}
|
}
|
||||||
devInfo.DriverOptions["block-driver"] = dm.blockDriver
|
devInfo.DriverOptions["block-driver"] = dm.blockDriver
|
||||||
return drivers.NewBlockDevice(devInfo)
|
return drivers.NewBlockDevice(devInfo), nil
|
||||||
} else {
|
} else {
|
||||||
deviceLogger().WithField("device", path).Info("Device has not been passed to the container")
|
deviceLogger().WithField("device", path).Info("Device has not been passed to the container")
|
||||||
return drivers.NewGenericDevice(devInfo)
|
return drivers.NewGenericDevice(devInfo), nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,13 +56,10 @@ func (dm *deviceManager) NewDevices(devInfos []config.DeviceInfo) ([]api.Device,
|
|||||||
var devices []api.Device
|
var devices []api.Device
|
||||||
|
|
||||||
for _, devInfo := range devInfos {
|
for _, devInfo := range devInfos {
|
||||||
hostPath, err := config.GetHostPathFunc(devInfo)
|
device, err := dm.createDevice(devInfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
devInfo.HostPath = hostPath
|
|
||||||
device := dm.CreateDevice(devInfo)
|
|
||||||
devices = append(devices, device)
|
devices = append(devices, device)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,31 +25,6 @@ const fileMode0640 = os.FileMode(0640)
|
|||||||
// dirMode is the permission bits used for creating a directory
|
// dirMode is the permission bits used for creating a directory
|
||||||
const dirMode = os.FileMode(0750) | os.ModeDir
|
const dirMode = os.FileMode(0750) | os.ModeDir
|
||||||
|
|
||||||
func TestCreateDevice(t *testing.T) {
|
|
||||||
dm := &deviceManager{
|
|
||||||
blockDriver: VirtioBlock,
|
|
||||||
}
|
|
||||||
devInfo := config.DeviceInfo{
|
|
||||||
HostPath: "/dev/vfio/8",
|
|
||||||
DevType: "b",
|
|
||||||
}
|
|
||||||
|
|
||||||
device := dm.CreateDevice(devInfo)
|
|
||||||
_, ok := device.(*drivers.VFIODevice)
|
|
||||||
assert.True(t, ok)
|
|
||||||
|
|
||||||
devInfo.HostPath = "/dev/sda"
|
|
||||||
device = dm.CreateDevice(devInfo)
|
|
||||||
_, ok = device.(*drivers.BlockDevice)
|
|
||||||
assert.True(t, ok)
|
|
||||||
|
|
||||||
devInfo.HostPath = "/dev/tty"
|
|
||||||
devInfo.DevType = "c"
|
|
||||||
device = dm.CreateDevice(devInfo)
|
|
||||||
_, ok = device.(*drivers.GenericDevice)
|
|
||||||
assert.True(t, ok)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestNewDevices(t *testing.T) {
|
func TestNewDevices(t *testing.T) {
|
||||||
dm := &deviceManager{
|
dm := &deviceManager{
|
||||||
blockDriver: VirtioBlock,
|
blockDriver: VirtioBlock,
|
||||||
@ -153,7 +128,8 @@ func TestAttachVFIODevice(t *testing.T) {
|
|||||||
DevType: "c",
|
DevType: "c",
|
||||||
}
|
}
|
||||||
|
|
||||||
device := dm.CreateDevice(deviceInfo)
|
device, err := dm.createDevice(deviceInfo)
|
||||||
|
assert.Nil(t, err)
|
||||||
_, ok := device.(*drivers.VFIODevice)
|
_, ok := device.(*drivers.VFIODevice)
|
||||||
assert.True(t, ok)
|
assert.True(t, ok)
|
||||||
|
|
||||||
@ -176,12 +152,13 @@ func TestAttachGenericDevice(t *testing.T) {
|
|||||||
DevType: "c",
|
DevType: "c",
|
||||||
}
|
}
|
||||||
|
|
||||||
device := dm.CreateDevice(deviceInfo)
|
device, err := dm.createDevice(deviceInfo)
|
||||||
|
assert.Nil(t, err)
|
||||||
_, ok := device.(*drivers.GenericDevice)
|
_, ok := device.(*drivers.GenericDevice)
|
||||||
assert.True(t, ok)
|
assert.True(t, ok)
|
||||||
|
|
||||||
devReceiver := &api.MockDeviceReceiver{}
|
devReceiver := &api.MockDeviceReceiver{}
|
||||||
err := device.Attach(devReceiver)
|
err = device.Attach(devReceiver)
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
|
|
||||||
err = device.Detach(devReceiver)
|
err = device.Detach(devReceiver)
|
||||||
@ -200,11 +177,12 @@ func TestAttachBlockDevice(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
devReceiver := &api.MockDeviceReceiver{}
|
devReceiver := &api.MockDeviceReceiver{}
|
||||||
device := dm.CreateDevice(deviceInfo)
|
device, err := dm.createDevice(deviceInfo)
|
||||||
|
assert.Nil(t, err)
|
||||||
_, ok := device.(*drivers.BlockDevice)
|
_, ok := device.(*drivers.BlockDevice)
|
||||||
assert.True(t, ok)
|
assert.True(t, ok)
|
||||||
|
|
||||||
err := device.Attach(devReceiver)
|
err = device.Attach(devReceiver)
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
|
|
||||||
err = device.Detach(devReceiver)
|
err = device.Detach(devReceiver)
|
||||||
@ -212,7 +190,8 @@ func TestAttachBlockDevice(t *testing.T) {
|
|||||||
|
|
||||||
// test virtio SCSI driver
|
// test virtio SCSI driver
|
||||||
dm.blockDriver = VirtioSCSI
|
dm.blockDriver = VirtioSCSI
|
||||||
device = dm.CreateDevice(deviceInfo)
|
device, err = dm.createDevice(deviceInfo)
|
||||||
|
assert.Nil(t, err)
|
||||||
err = device.Attach(devReceiver)
|
err = device.Attach(devReceiver)
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
|
|
||||||
|
@ -1588,7 +1588,9 @@ func TestAttachBlockDevice(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dm := manager.NewDeviceManager(VirtioBlock)
|
dm := manager.NewDeviceManager(VirtioBlock)
|
||||||
device := dm.CreateDevice(deviceInfo)
|
devices, err := dm.NewDevices([]config.DeviceInfo{deviceInfo})
|
||||||
|
assert.Nil(t, err)
|
||||||
|
device := devices[0]
|
||||||
_, ok := device.(*drivers.BlockDevice)
|
_, ok := device.(*drivers.BlockDevice)
|
||||||
assert.True(t, ok)
|
assert.True(t, ok)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user