Skip to content

Commit f802d4e

Browse files
committed
config: Add generic FilterDevice function
This allows VirtioInputDevices/VirtioGPUs/… to share the same code. This commit also adds a VirtioNetDevices method which will be used in the next commit. Signed-off-by: Christophe Fergeau <[email protected]>
1 parent 0555c1c commit f802d4e

File tree

1 file changed

+14
-20
lines changed

1 file changed

+14
-20
lines changed

pkg/config/config.go

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -161,36 +161,30 @@ func (vm *VirtualMachine) AddDevicesFromCmdLine(cmdlineOpts []string) error {
161161
return nil
162162
}
163163

164-
func (vm *VirtualMachine) VirtioGPUDevices() []*VirtioGPU {
165-
gpuDevs := []*VirtioGPU{}
164+
func FilterDevices[V VMComponent](vm *VirtualMachine) []V {
165+
devs := []V{}
166166
for _, dev := range vm.Devices {
167-
if gpuDev, isVirtioGPU := dev.(*VirtioGPU); isVirtioGPU {
168-
gpuDevs = append(gpuDevs, gpuDev)
167+
if dev, isV := dev.(V); isV {
168+
devs = append(devs, dev)
169169
}
170170
}
171+
return devs
172+
}
171173

172-
return gpuDevs
174+
func (vm *VirtualMachine) VirtioGPUDevices() []*VirtioGPU {
175+
return FilterDevices[*VirtioGPU](vm)
173176
}
174177

175178
func (vm *VirtualMachine) VirtioVsockDevices() []*VirtioVsock {
176-
vsockDevs := []*VirtioVsock{}
177-
for _, dev := range vm.Devices {
178-
if vsockDev, isVirtioVsock := dev.(*VirtioVsock); isVirtioVsock {
179-
vsockDevs = append(vsockDevs, vsockDev)
180-
}
181-
}
182-
183-
return vsockDevs
179+
return FilterDevices[*VirtioVsock](vm)
184180
}
185181

186182
func (vm *VirtualMachine) VirtioInputDevices() []*VirtioInput {
187-
inputDevs := []*VirtioInput{}
188-
for _, dev := range vm.Devices {
189-
if inputDev, isVirtioInput := dev.(*VirtioInput); isVirtioInput {
190-
inputDevs = append(inputDevs, inputDev)
191-
}
192-
}
193-
return inputDevs
183+
return FilterDevices[*VirtioInput](vm)
184+
}
185+
186+
func (vm *VirtualMachine) VirtioNetDevices() []*VirtioNet {
187+
return FilterDevices[*VirtioNet](vm)
194188
}
195189

196190
func (vm *VirtualMachine) NetworkBlockDevice(deviceID string) *NetworkBlockDevice {

0 commit comments

Comments
 (0)