cli: Add basic --audio type=XXX,id=Y support

Closes: #264

Signed-off-by: Cole Robinson <crobinso@redhat.com>
This commit is contained in:
Cole Robinson 2022-02-24 13:47:59 -05:00
parent 5a6714715b
commit cd5c34a3f3
9 changed files with 59 additions and 1 deletions

View File

@ -1575,6 +1575,16 @@ Complete details at https://libvirt.org/formatdomain.html#elementsSound
``--audio``
^^^^^^^^^^^
Configure host audio output for the guest's `--sound` hardware.
Use --audio=? to see a list of all available sub options.
Complete details at https://libvirt.org/formatdomain.html#audio-backends
``--watchdog``
^^^^^^^^^^^^^^

View File

@ -235,6 +235,7 @@ XML OPTIONS
* ``--hostdev``
* ``--filesystem``
* ``--sound``
* ``--audio``
* ``--watchdog``
* ``--video``
* ``--smartcard``

View File

@ -727,6 +727,8 @@
<codec type="duplex"/>
<codec type="output"/>
</sound>
<audio type="spice" id="1"/>
<audio type="pulseaudio" id="2"/>
<video>
<model type="cirrus"/>
</video>

View File

@ -0,0 +1,10 @@
<vsock model="virtio">
<cid auto="no" address="5"/>
</vsock>
+ <audio type="none" id="1"/>
</devices>
<seclabel type="dynamic" model="selinux" relabel="yes"/>
<keywrap>
Domain 'test-for-virtxml' defined successfully.
Changes will take effect after the domain is fully powered off.

View File

@ -703,6 +703,10 @@ source.reservations.managed=no,source.reservations.source.type=unix,source.reser
--sound codec0.type=micro,codec1.type=duplex,codec2.type=output
--audio id=1,type=spice
--audio id=2,type=pulseaudio
--video cirrus
--video model=qxl,vgamem=1,ram=2,vram=3,heads=4,accel3d=yes,vram64=65
--video model=qxl,model.vgamem=1,model.ram=2,model.vram=3,model.heads=4,model.acceleration.accel3d=yes,model.vram64=65
@ -1411,6 +1415,7 @@ c = vixml.add_category("add/rm devices", "test-for-virtxml --print-diff --define
c.add_compare("--add-device --seclabel model=dac", "add-seclabel")
c.add_compare("--add-device --host-device usb_device_483_2016_noserial", "add-host-device")
c.add_compare("--add-device --sound pcspk", "add-sound")
c.add_compare("--add-device --audio type=none,id=1", "add-audio", predefine_check="7.4.0")
c.add_compare("--add-device --disk %(EXISTIMG1)s,bus=virtio,target=vdf", "add-disk-basic")
c.add_compare("--add-device --disk %(EXISTIMG1)s", "add-disk-notarget") # filling in acceptable target
c.add_compare("--add-device --disk %(NEWIMG1)s,size=.01", "add-disk-create-storage")

View File

@ -766,6 +766,10 @@ def add_device_options(devg, sound_back_compat=False):
devg.add_argument("--soundhw", action="append", dest="sound",
help=argparse.SUPPRESS)
ParserAudio.register()
devg.add_argument("--audio", action="append",
help=_("Configure host audio backend for sound devices"))
ParserWatchdog.register()
devg.add_argument("--watchdog", action="append",
help=_("Configure a guest watchdog device"))
@ -4593,6 +4597,18 @@ class ParserSound(VirtCLIParser):
find_inst_cb=cls.codec_find_inst_cb)
class ParserAudio(VirtCLIParser):
cli_arg_name = "audio"
guest_propname = "devices.audio"
@classmethod
def _init_class(cls, **kwargs):
VirtCLIParser._init_class(**kwargs)
cls.add_arg("type", "type")
cls.add_arg("id", "id")
#####################
# --hostdev parsing #
#####################

View File

@ -4,6 +4,7 @@
# See the COPYING file in the top-level directory.
from .audio import DeviceAudio
from .char import DeviceChannel, DeviceConsole, DeviceParallel, DeviceSerial
from .controller import DeviceController
from .device import Device

12
virtinst/devices/audio.py Normal file
View File

@ -0,0 +1,12 @@
# This work is licensed under the GNU GPLv2 or later.
# See the COPYING file in the top-level directory.
from .device import Device
from ..xmlbuilder import XMLProperty
class DeviceAudio(Device):
XML_NAME = "audio"
type = XMLProperty("./@type")
id = XMLProperty("./@id")

View File

@ -25,7 +25,7 @@ class _DomainDevices(XMLBuilder):
XML_NAME = "devices"
_XML_PROP_ORDER = ['disk', 'controller', 'filesystem', 'interface',
'smartcard', 'serial', 'parallel', 'console', 'channel',
'input', 'tpm', 'graphics', 'sound', 'video', 'hostdev',
'input', 'tpm', 'graphics', 'sound', 'audio', 'video', 'hostdev',
'redirdev', 'watchdog', 'memballoon', 'rng', 'panic',
'shmem', 'memory', 'vsock', 'iommu']
@ -43,6 +43,7 @@ class _DomainDevices(XMLBuilder):
tpm = XMLChildProperty(DeviceTpm)
graphics = XMLChildProperty(DeviceGraphics)
sound = XMLChildProperty(DeviceSound)
audio = XMLChildProperty(DeviceAudio)
video = XMLChildProperty(DeviceVideo)
hostdev = XMLChildProperty(DeviceHostdev)
redirdev = XMLChildProperty(DeviceRedirdev)