diff --git a/src/runtime/pkg/device/api/interface.go b/src/runtime/pkg/device/api/interface.go index 2db12f677f..074980f44f 100644 --- a/src/runtime/pkg/device/api/interface.go +++ b/src/runtime/pkg/device/api/interface.go @@ -10,7 +10,6 @@ import ( "context" "github.com/kata-containers/kata-containers/src/runtime/pkg/device/config" - persistapi "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/persist/api" "github.com/sirupsen/logrus" ) @@ -78,10 +77,10 @@ type Device interface { Dereference() uint // Save converts Device to DeviceState - Save() persistapi.DeviceState + Save() config.DeviceState // Load loads DeviceState and converts it to specific device - Load(persistapi.DeviceState) + Load(config.DeviceState) } // DeviceManager can be used to create a new device, this can be used as single @@ -94,5 +93,5 @@ type DeviceManager interface { IsDeviceAttached(string) bool GetDeviceByID(string) Device GetAllDevices() []Device - LoadDevices([]persistapi.DeviceState) + LoadDevices([]config.DeviceState) } diff --git a/src/runtime/virtcontainers/persist/api/device.go b/src/runtime/pkg/device/config/device_state.go similarity index 88% rename from src/runtime/virtcontainers/persist/api/device.go rename to src/runtime/pkg/device/config/device_state.go index dd61efbfcf..36d513fa65 100644 --- a/src/runtime/virtcontainers/persist/api/device.go +++ b/src/runtime/pkg/device/config/device_state.go @@ -4,7 +4,7 @@ // SPDX-License-Identifier: Apache-2.0 // -package persistapi +package config import vcTypes "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/types" @@ -12,7 +12,7 @@ import vcTypes "github.com/kata-containers/kata-containers/src/runtime/virtconta // BlockDrive represents a block storage drive which may be used in case the storage // driver has an underlying block storage device. -type BlockDrive struct { +type BlockDriveState struct { // File is the path to the disk-image/device which will be used with this drive File string @@ -50,7 +50,7 @@ type BlockDrive struct { } // VFIODev represents a VFIO drive used for hotplugging -type VFIODev struct { +type VFIODevState struct { // ID is used to identify this drive in the hypervisor options. ID string @@ -65,7 +65,7 @@ type VFIODev struct { } // VhostUserDeviceAttrs represents data shared by most vhost-user devices -type VhostUserDeviceAttrs struct { +type VhostUserDeviceAttrsState struct { DevID string SocketPath string Type string @@ -89,11 +89,11 @@ type DeviceState struct { // for example, for BlockDevice, we can set DriverOptions["block-driver"]="virtio-blk" DriverOptions map[string]string - // VhostUserDeviceAttrs is specific for vhost-user device driver - VhostUserDev *VhostUserDeviceAttrs `json:",omitempty"` + // VhostUserDeviceAttrsState is specific for vhost-user device driver + VhostUserDev *VhostUserDeviceAttrsState `json:",omitempty"` // BlockDrive is specific for block device driver - BlockDrive *BlockDrive `json:",omitempty"` + BlockDrive *BlockDriveState `json:",omitempty"` ID string @@ -108,8 +108,8 @@ type DeviceState struct { // More info in mknod(1). DevType string - // VFIODev is specific VFIO device driver - VFIODevs []*VFIODev `json:",omitempty"` + // VFIODevState is specific VFIO device driver + VFIODevs []*VFIODevState `json:",omitempty"` RefCount uint AttachCount uint diff --git a/src/runtime/pkg/device/drivers/block.go b/src/runtime/pkg/device/drivers/block.go index 294e8da604..6088a5c9f5 100644 --- a/src/runtime/pkg/device/drivers/block.go +++ b/src/runtime/pkg/device/drivers/block.go @@ -12,7 +12,6 @@ import ( "github.com/kata-containers/kata-containers/src/runtime/pkg/device/api" "github.com/kata-containers/kata-containers/src/runtime/pkg/device/config" - persistapi "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/persist/api" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/utils" ) @@ -159,13 +158,13 @@ func (device *BlockDevice) GetDeviceInfo() interface{} { } // Save converts Device to DeviceState -func (device *BlockDevice) Save() persistapi.DeviceState { +func (device *BlockDevice) Save() config.DeviceState { ds := device.GenericDevice.Save() ds.Type = string(device.DeviceType()) drive := device.BlockDrive if drive != nil { - ds.BlockDrive = &persistapi.BlockDrive{ + ds.BlockDrive = &config.BlockDriveState{ File: drive.File, Format: drive.Format, ID: drive.ID, @@ -183,7 +182,7 @@ func (device *BlockDevice) Save() persistapi.DeviceState { } // Load loads DeviceState and converts it to specific device -func (device *BlockDevice) Load(ds persistapi.DeviceState) { +func (device *BlockDevice) Load(ds config.DeviceState) { device.GenericDevice = &GenericDevice{} device.GenericDevice.Load(ds) diff --git a/src/runtime/pkg/device/drivers/generic.go b/src/runtime/pkg/device/drivers/generic.go index 67cf243c7b..38358ed248 100644 --- a/src/runtime/pkg/device/drivers/generic.go +++ b/src/runtime/pkg/device/drivers/generic.go @@ -12,7 +12,6 @@ import ( "github.com/kata-containers/kata-containers/src/runtime/pkg/device/api" "github.com/kata-containers/kata-containers/src/runtime/pkg/device/config" - persistapi "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/persist/api" ) // GenericDevice refers to a device that is neither a VFIO device, block device or VhostUserDevice. @@ -128,8 +127,8 @@ func (device *GenericDevice) bumpAttachCount(attach bool) (skip bool, err error) } // Save converts Device to DeviceState -func (device *GenericDevice) Save() persistapi.DeviceState { - dss := persistapi.DeviceState{ +func (device *GenericDevice) Save() config.DeviceState { + dss := config.DeviceState{ ID: device.ID, Type: string(device.DeviceType()), RefCount: device.RefCount, @@ -148,7 +147,7 @@ func (device *GenericDevice) Save() persistapi.DeviceState { } // Load loads DeviceState and converts it to specific device -func (device *GenericDevice) Load(ds persistapi.DeviceState) { +func (device *GenericDevice) Load(ds config.DeviceState) { device.ID = ds.ID device.RefCount = ds.RefCount device.AttachCount = ds.AttachCount diff --git a/src/runtime/pkg/device/drivers/vfio.go b/src/runtime/pkg/device/drivers/vfio.go index ec10cc02d1..ed791f8416 100644 --- a/src/runtime/pkg/device/drivers/vfio.go +++ b/src/runtime/pkg/device/drivers/vfio.go @@ -18,7 +18,6 @@ import ( "github.com/kata-containers/kata-containers/src/runtime/pkg/device/api" "github.com/kata-containers/kata-containers/src/runtime/pkg/device/config" - persistapi "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/persist/api" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/utils" ) @@ -174,14 +173,14 @@ func (device *VFIODevice) GetDeviceInfo() interface{} { } // Save converts Device to DeviceState -func (device *VFIODevice) Save() persistapi.DeviceState { +func (device *VFIODevice) Save() config.DeviceState { ds := device.GenericDevice.Save() ds.Type = string(device.DeviceType()) devs := device.VfioDevs for _, dev := range devs { if dev != nil { - ds.VFIODevs = append(ds.VFIODevs, &persistapi.VFIODev{ + ds.VFIODevs = append(ds.VFIODevs, &config.VFIODevState{ ID: dev.ID, Type: uint32(dev.Type), BDF: dev.BDF, @@ -193,7 +192,7 @@ func (device *VFIODevice) Save() persistapi.DeviceState { } // Load loads DeviceState and converts it to specific device -func (device *VFIODevice) Load(ds persistapi.DeviceState) { +func (device *VFIODevice) Load(ds config.DeviceState) { device.GenericDevice = &GenericDevice{} device.GenericDevice.Load(ds) diff --git a/src/runtime/pkg/device/drivers/vhost_user_blk.go b/src/runtime/pkg/device/drivers/vhost_user_blk.go index 9d6de5a05a..75d65d0a5a 100644 --- a/src/runtime/pkg/device/drivers/vhost_user_blk.go +++ b/src/runtime/pkg/device/drivers/vhost_user_blk.go @@ -11,7 +11,6 @@ import ( "github.com/kata-containers/kata-containers/src/runtime/pkg/device/api" "github.com/kata-containers/kata-containers/src/runtime/pkg/device/config" - persistapi "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/persist/api" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/utils" "github.com/sirupsen/logrus" ) @@ -156,13 +155,13 @@ func (device *VhostUserBlkDevice) GetDeviceInfo() interface{} { } // Save converts Device to DeviceState -func (device *VhostUserBlkDevice) Save() persistapi.DeviceState { +func (device *VhostUserBlkDevice) Save() config.DeviceState { ds := device.GenericDevice.Save() ds.Type = string(device.DeviceType()) vAttr := device.VhostUserDeviceAttrs if vAttr != nil { - ds.VhostUserDev = &persistapi.VhostUserDeviceAttrs{ + ds.VhostUserDev = &config.VhostUserDeviceAttrsState{ DevID: vAttr.DevID, SocketPath: vAttr.SocketPath, Type: string(vAttr.Type), @@ -174,7 +173,7 @@ func (device *VhostUserBlkDevice) Save() persistapi.DeviceState { } // Load loads DeviceState and converts it to specific device -func (device *VhostUserBlkDevice) Load(ds persistapi.DeviceState) { +func (device *VhostUserBlkDevice) Load(ds config.DeviceState) { device.GenericDevice = &GenericDevice{} device.GenericDevice.Load(ds) diff --git a/src/runtime/pkg/device/drivers/vhost_user_net.go b/src/runtime/pkg/device/drivers/vhost_user_net.go index 6ac038b02e..7441c2d892 100644 --- a/src/runtime/pkg/device/drivers/vhost_user_net.go +++ b/src/runtime/pkg/device/drivers/vhost_user_net.go @@ -12,7 +12,6 @@ import ( "github.com/kata-containers/kata-containers/src/runtime/pkg/device/api" "github.com/kata-containers/kata-containers/src/runtime/pkg/device/config" - persistapi "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/persist/api" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/utils" ) @@ -75,10 +74,10 @@ func (device *VhostUserNetDevice) GetDeviceInfo() interface{} { } // Save converts Device to DeviceState -func (device *VhostUserNetDevice) Save() persistapi.DeviceState { +func (device *VhostUserNetDevice) Save() config.DeviceState { ds := device.GenericDevice.Save() ds.Type = string(device.DeviceType()) - ds.VhostUserDev = &persistapi.VhostUserDeviceAttrs{ + ds.VhostUserDev = &config.VhostUserDeviceAttrsState{ DevID: device.DevID, SocketPath: device.SocketPath, Type: string(device.Type), @@ -88,7 +87,7 @@ func (device *VhostUserNetDevice) Save() persistapi.DeviceState { } // Load loads DeviceState and converts it to specific device -func (device *VhostUserNetDevice) Load(ds persistapi.DeviceState) { +func (device *VhostUserNetDevice) Load(ds config.DeviceState) { device.GenericDevice = &GenericDevice{} device.GenericDevice.Load(ds) diff --git a/src/runtime/pkg/device/drivers/vhost_user_scsi.go b/src/runtime/pkg/device/drivers/vhost_user_scsi.go index cd0c5f2640..7fbcc382c4 100644 --- a/src/runtime/pkg/device/drivers/vhost_user_scsi.go +++ b/src/runtime/pkg/device/drivers/vhost_user_scsi.go @@ -12,7 +12,6 @@ import ( "github.com/kata-containers/kata-containers/src/runtime/pkg/device/api" "github.com/kata-containers/kata-containers/src/runtime/pkg/device/config" - persistapi "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/persist/api" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/utils" ) @@ -75,10 +74,10 @@ func (device *VhostUserSCSIDevice) GetDeviceInfo() interface{} { } // Save converts Device to DeviceState -func (device *VhostUserSCSIDevice) Save() persistapi.DeviceState { +func (device *VhostUserSCSIDevice) Save() config.DeviceState { ds := device.GenericDevice.Save() ds.Type = string(device.DeviceType()) - ds.VhostUserDev = &persistapi.VhostUserDeviceAttrs{ + ds.VhostUserDev = &config.VhostUserDeviceAttrsState{ DevID: device.DevID, SocketPath: device.SocketPath, Type: string(device.Type), @@ -88,7 +87,7 @@ func (device *VhostUserSCSIDevice) Save() persistapi.DeviceState { } // Load loads DeviceState and converts it to specific device -func (device *VhostUserSCSIDevice) Load(ds persistapi.DeviceState) { +func (device *VhostUserSCSIDevice) Load(ds config.DeviceState) { device.GenericDevice = &GenericDevice{} device.GenericDevice.Load(ds) diff --git a/src/runtime/pkg/device/manager/manager.go b/src/runtime/pkg/device/manager/manager.go index d9e3193cb6..eed9e39f1e 100644 --- a/src/runtime/pkg/device/manager/manager.go +++ b/src/runtime/pkg/device/manager/manager.go @@ -17,7 +17,6 @@ import ( "github.com/kata-containers/kata-containers/src/runtime/pkg/device/api" "github.com/kata-containers/kata-containers/src/runtime/pkg/device/config" "github.com/kata-containers/kata-containers/src/runtime/pkg/device/drivers" - persistapi "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/persist/api" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/utils" ) @@ -242,7 +241,7 @@ func (dm *deviceManager) IsDeviceAttached(id string) bool { } // LoadDevices load devices from persist state -func (dm *deviceManager) LoadDevices(devStates []persistapi.DeviceState) { +func (dm *deviceManager) LoadDevices(devStates []config.DeviceState) { dm.Lock() defer dm.Unlock() diff --git a/src/runtime/virtcontainers/persist.go b/src/runtime/virtcontainers/persist.go index f559d82429..56a63ae59e 100644 --- a/src/runtime/virtcontainers/persist.go +++ b/src/runtime/virtcontainers/persist.go @@ -8,8 +8,9 @@ package virtcontainers import ( "errors" - hv "github.com/kata-containers/kata-containers/src/runtime/pkg/hypervisors" "github.com/kata-containers/kata-containers/src/runtime/pkg/device/api" + devconfig "github.com/kata-containers/kata-containers/src/runtime/pkg/device/config" + hv "github.com/kata-containers/kata-containers/src/runtime/pkg/hypervisors" exp "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/experimental" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/persist" persistapi "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/persist/api" @@ -65,7 +66,7 @@ func (s *Sandbox) dumpHypervisor(ss *persistapi.SandboxState) { ss.HypervisorState.BlockIndexMap = s.state.BlockIndexMap } -func deviceToDeviceState(devices []api.Device) (dss []persistapi.DeviceState) { +func deviceToDeviceState(devices []api.Device) (dss []devconfig.DeviceState) { for _, dev := range devices { dss = append(dss, dev.Save()) } @@ -323,7 +324,7 @@ func (s *Sandbox) loadAgent(as persistapi.AgentState) { } } -func (s *Sandbox) loadDevices(devStates []persistapi.DeviceState) { +func (s *Sandbox) loadDevices(devStates []devconfig.DeviceState) { s.devManager.LoadDevices(devStates) } diff --git a/src/runtime/virtcontainers/persist/api/sandbox.go b/src/runtime/virtcontainers/persist/api/sandbox.go index 09196637ca..665edd2804 100644 --- a/src/runtime/virtcontainers/persist/api/sandbox.go +++ b/src/runtime/virtcontainers/persist/api/sandbox.go @@ -7,6 +7,7 @@ package persistapi import ( + dev "github.com/kata-containers/kata-containers/src/runtime/pkg/device/config" hv "github.com/kata-containers/kata-containers/src/runtime/pkg/hypervisors" ) @@ -26,7 +27,7 @@ type SandboxState struct { CgroupPaths map[string]string // Devices plugged to sandbox(hypervisor) - Devices []DeviceState + Devices []dev.DeviceState // State is sandbox running status State string