virtcontainers: hypervisor: Add capability regarding multiqueue support

Each hypervisor is different and supports different options regarding
the network interface it creates. In particular, the multiqueue option
is not supported by Firecracker and should not be assumed by default.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
This commit is contained in:
Sebastien Boeuf 2018-12-14 15:11:44 -08:00
parent 0bcd221fad
commit a227ab852a
4 changed files with 17 additions and 0 deletions

View File

@ -8,6 +8,7 @@ package virtcontainers
const (
blockDeviceSupport = 1 << iota
blockDeviceHotplugSupport
multiQueueSupport
)
type capabilities struct {
@ -35,3 +36,14 @@ func (caps *capabilities) isBlockDeviceHotplugSupported() bool {
func (caps *capabilities) setBlockDeviceHotplugSupport() {
caps.flags |= blockDeviceHotplugSupport
}
func (caps *capabilities) isMultiQueueSupported() bool {
if caps.flags&multiQueueSupport != 0 {
return true
}
return false
}
func (caps *capabilities) setMultiQueueSupport() {
caps.flags |= multiQueueSupport
}

View File

@ -108,6 +108,8 @@ func (q *qemuAmd64) capabilities() capabilities {
caps.setBlockDeviceHotplugSupport()
}
caps.setMultiQueueSupport()
return caps
}

View File

@ -237,6 +237,7 @@ func (q *qemuArchBase) kernelParameters(debug bool) []Param {
func (q *qemuArchBase) capabilities() capabilities {
var caps capabilities
caps.setBlockDeviceHotplugSupport()
caps.setMultiQueueSupport()
return caps
}

View File

@ -94,6 +94,8 @@ func (q *qemuPPC64le) capabilities() capabilities {
caps.setBlockDeviceHotplugSupport()
}
caps.setMultiQueueSupport()
return caps
}