VirtualAudio: Convert to new style XML props

This commit is contained in:
Cole Robinson 2013-07-15 22:00:08 -04:00
parent a9296ec3ae
commit 4f7f9e2267
4 changed files with 28 additions and 42 deletions

View File

@ -658,10 +658,20 @@ class TestXMLConfig(unittest.TestCase):
i = utils.make_pxe_installer()
g = utils.get_basic_fullyvirt_guest(installer=i)
g.add_device(VirtualAudio(g.conn, "sb16"))
g.add_device(VirtualAudio(g.conn, "es1370"))
g.add_device(VirtualAudio(g.conn, "pcspk"))
g.add_device(VirtualAudio(g.conn))
d = VirtualAudio(g.conn)
d.model = "sb16"
g.add_device(d)
d = VirtualAudio(g.conn)
d.model = "es1370"
g.add_device(d)
d = VirtualAudio(g.conn)
d.model = "pcspk"
g.add_device(d)
d = VirtualAudio(g.conn)
g.add_device(d)
self._compare(g, "boot-many-sounds", False)
@ -737,8 +747,13 @@ class TestXMLConfig(unittest.TestCase):
g.add_device(dev1)
# Sound devices
g.add_device(VirtualAudio(g.conn, "sb16"))
g.add_device(VirtualAudio(g.conn, "es1370"))
d = VirtualAudio(g.conn)
d.model = "sb16"
g.add_device(d)
d = VirtualAudio(g.conn)
d.model = "es1370"
g.add_device(d)
# Disk devices
d = VirtualDisk(g.conn)

View File

@ -1434,8 +1434,8 @@ class vmmAddHardware(vmmGObjectUI):
def validate_page_sound(self):
smodel = self.get_config_sound_model()
try:
self._dev = virtinst.VirtualAudio(self.conn.get_backend(),
model=smodel)
self._dev = virtinst.VirtualAudio(self.conn.get_backend())
self._dev.model = smodel
except Exception, e:
return self.err.val_err(_("Sound device parameter error"), e)

View File

@ -22,38 +22,11 @@ from virtinst.xmlbuilder import XMLProperty
class VirtualAudio(VirtualDevice):
_virtual_device_type = VirtualDevice.VIRTUAL_DEV_AUDIO
MODEL_DEFAULT = "default"
MODELS = ["es1370", "sb16", "pcspk", "ac97", "ich6", MODEL_DEFAULT]
def __init__(self, conn, model=None, parsexml=None, parsexmlnode=None):
VirtualDevice.__init__(self, conn, parsexml, parsexmlnode)
self._model = None
if self._is_parse():
return
if model is None:
model = self.MODEL_DEFAULT
self.model = model
def get_model(self):
return self._model
def set_model(self, new_model):
if type(new_model) != str:
raise ValueError(_("'model' must be a string, "
" was '%s'." % type(new_model)))
if not self.MODELS.count(new_model):
raise ValueError(_("Unsupported sound model '%s'" % new_model))
self._model = new_model
model = XMLProperty(get_model, set_model,
xpath="./@model")
def _get_xml_config(self):
model = self.model
if model == self.MODEL_DEFAULT:
model = "es1370"
return " <sound model='%s'/>" % model
model = XMLProperty(xpath="./@model",
default_cb=lambda s: "es1370",
default_name=MODEL_DEFAULT)

View File

@ -843,7 +843,7 @@ def get_video(guest, video_models=None):
def get_sound(old_sound_bool, sound_opts, guest):
if not sound_opts:
if old_sound_bool:
guest.add_device(VirtualAudio(conn=guest.conn))
guest.add_device(VirtualAudio(guest.conn))
return
for opts in listify(sound_opts):
@ -1929,15 +1929,13 @@ def parse_video(guest, optstr, dev=None):
# --soundhw parsing #
#####################
def parse_sound(guest, optstr, dev=None):
opts = {"model" : optstr}
if not dev:
dev = virtinst.VirtualAudio(conn=guest.conn)
dev = virtinst.VirtualAudio(guest.conn)
set_param = _build_set_param(dev, opts)
set_param("model", "model")
if opts: