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:
Zhang Wei 2018-05-04 17:45:55 +08:00
parent 366558ad5b
commit 9acbcba967
4 changed files with 24 additions and 43 deletions

View File

@ -57,6 +57,5 @@ type Device interface {
// DeviceManager can be used to create a new device, this can be used as single
// device management object.
type DeviceManager interface {
CreateDevice(devInfo config.DeviceInfo) Device
NewDevices(devInfos []config.DeviceInfo) ([]Device, error)
}

View File

@ -29,21 +29,25 @@ func deviceLogger() *logrus.Entry {
return api.DeviceLogger().WithField("subsystem", "device")
}
// CreateDevice creates one device based on DeviceInfo
func (dm *deviceManager) CreateDevice(devInfo config.DeviceInfo) api.Device {
path := devInfo.HostPath
// createDevice creates one device based on DeviceInfo
func (dm *deviceManager) createDevice(devInfo config.DeviceInfo) (api.Device, error) {
path, err := config.GetHostPathFunc(devInfo)
if err != nil {
return nil, err
}
devInfo.HostPath = path
if isVFIO(path) {
return drivers.NewVFIODevice(devInfo)
return drivers.NewVFIODevice(devInfo), nil
} else if isBlock(devInfo) {
if devInfo.DriverOptions == nil {
devInfo.DriverOptions = make(map[string]string)
}
devInfo.DriverOptions["block-driver"] = dm.blockDriver
return drivers.NewBlockDevice(devInfo)
return drivers.NewBlockDevice(devInfo), nil
} else {
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
for _, devInfo := range devInfos {
hostPath, err := config.GetHostPathFunc(devInfo)
device, err := dm.createDevice(devInfo)
if err != nil {
return nil, err
}
devInfo.HostPath = hostPath
device := dm.CreateDevice(devInfo)
devices = append(devices, device)
}

View File

@ -25,31 +25,6 @@ const fileMode0640 = os.FileMode(0640)
// dirMode is the permission bits used for creating a directory
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) {
dm := &deviceManager{
blockDriver: VirtioBlock,
@ -153,7 +128,8 @@ func TestAttachVFIODevice(t *testing.T) {
DevType: "c",
}
device := dm.CreateDevice(deviceInfo)
device, err := dm.createDevice(deviceInfo)
assert.Nil(t, err)
_, ok := device.(*drivers.VFIODevice)
assert.True(t, ok)
@ -176,12 +152,13 @@ func TestAttachGenericDevice(t *testing.T) {
DevType: "c",
}
device := dm.CreateDevice(deviceInfo)
device, err := dm.createDevice(deviceInfo)
assert.Nil(t, err)
_, ok := device.(*drivers.GenericDevice)
assert.True(t, ok)
devReceiver := &api.MockDeviceReceiver{}
err := device.Attach(devReceiver)
err = device.Attach(devReceiver)
assert.Nil(t, err)
err = device.Detach(devReceiver)
@ -200,11 +177,12 @@ func TestAttachBlockDevice(t *testing.T) {
}
devReceiver := &api.MockDeviceReceiver{}
device := dm.CreateDevice(deviceInfo)
device, err := dm.createDevice(deviceInfo)
assert.Nil(t, err)
_, ok := device.(*drivers.BlockDevice)
assert.True(t, ok)
err := device.Attach(devReceiver)
err = device.Attach(devReceiver)
assert.Nil(t, err)
err = device.Detach(devReceiver)
@ -212,7 +190,8 @@ func TestAttachBlockDevice(t *testing.T) {
// test virtio SCSI driver
dm.blockDriver = VirtioSCSI
device = dm.CreateDevice(deviceInfo)
device, err = dm.createDevice(deviceInfo)
assert.Nil(t, err)
err = device.Attach(devReceiver)
assert.Nil(t, err)

View File

@ -1588,7 +1588,9 @@ func TestAttachBlockDevice(t *testing.T) {
}
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)
assert.True(t, ok)