Skip to content
This repository has been archived by the owner on May 12, 2021. It is now read-only.

Commit

Permalink
virtcontainers: make CreateDevice func private
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
WeiZhang555 committed May 8, 2018
1 parent 366558a commit 9acbcba
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 43 deletions.
1 change: 0 additions & 1 deletion virtcontainers/device/api/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
21 changes: 11 additions & 10 deletions virtcontainers/device/manager/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
}

Expand All @@ -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)
}

Expand Down
41 changes: 10 additions & 31 deletions virtcontainers/device/manager/manager_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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)

Expand All @@ -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)
Expand All @@ -200,19 +177,21 @@ 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)
assert.Nil(t, err)

// 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)

Expand Down
4 changes: 3 additions & 1 deletion virtcontainers/sandbox_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down

0 comments on commit 9acbcba

Please sign in to comment.