VirtualDevice: Raise error if parsing addrstr fails

This commit is contained in:
Cole Robinson 2013-07-16 16:05:22 -04:00
parent 524d1047b1
commit d9e82f984c
6 changed files with 21 additions and 28 deletions

View File

@ -780,7 +780,7 @@ class TestXMLConfig(unittest.TestCase):
net3.macaddr = "22:22:22:22:22:22"
net3.network = "default"
net3.model = "spapr-vlan"
net3.set_address("spapr-vio")
net3.address.set_addrstr("spapr-vio")
g.add_device(net1)
g.add_device(net2)
g.add_device(net3)

View File

@ -638,7 +638,7 @@ class vmmDomain(vmmLibvirtObject):
return
editdev.address.clear()
editdev.set_address(addr)
editdev.address.set_addrstr(addr)
if oldprefix == editdev.get_target_prefix()[0]:
return
@ -707,7 +707,7 @@ class vmmDomain(vmmLibvirtObject):
def change(editdev):
if editdev.model != newmodel:
editdev.address.clear()
editdev.set_address(addr)
editdev.address.set_addrstr(addr)
editdev.model = newmodel
return self._redefine_device(change, devobj)

View File

@ -673,7 +673,6 @@ def populate_network_list(net_list, conn, show_direct_interfaces=True):
def validate_network(err, conn, nettype, devname, macaddr, model=None):
net = None
addr = None
if nettype is None:
return None
@ -723,9 +722,8 @@ def validate_network(err, conn, nettype, devname, macaddr, model=None):
net.macaddr = macaddr
net.model = model
if net.model == "spapr-vlan":
addr = "spapr-vio"
net.address.set_addrstr("spapr-vio")
net.set_address(addr)
except Exception, e:
return err.val_err(_("Error with network parameters."), e)

View File

@ -677,7 +677,7 @@ class Guest(XMLBuilder):
def get_vscsi_ctrl_xml():
ctrl = virtinst.VirtualController(self.conn)
ctrl.type = "scsi"
ctrl.set_address("spapr-vio")
ctrl.address.set_addrstr("spapr-vio")
return ctrl.get_xml_config()
xml = self._get_emulator_xml()

View File

@ -20,7 +20,6 @@
# MA 02110-1301 USA.
from virtinst.xmlbuilder import XMLBuilder, XMLProperty
import logging
class VirtualDevice(XMLBuilder):
@ -104,9 +103,6 @@ class VirtualDevice(XMLBuilder):
ignore = meter
return
def set_address(self, addrstr):
self.address.set_addrstr(addrstr)
class VirtualDeviceAlias(XMLBuilder):
_XML_ROOT_NAME = "alias"
@ -140,22 +136,21 @@ class VirtualDeviceAddress(XMLBuilder):
_XML_PROP_ORDER = ["type", "domain", "bus", "slot", "function"]
def set_addrstr(self, addrstr):
try:
if addrstr.count(":") in [1, 2] and addrstr.count("."):
self.type = self.ADDRESS_TYPE_PCI
addrstr, self.function = addrstr.split(".", 1)
addrstr, self.slot = addrstr.rsplit(":", 1)
self.domain = "0"
if addrstr.count(":"):
self.domain, self.bus = addrstr.split(":", 1)
elif addrstr == "spapr-vio":
self.type = self.ADDRESS_TYPE_SPAPR_VIO
else:
raise ValueError(_("Could not determine or unsupported "
"format of '%s'") % addrstr)
except:
logging.exception("Error parsing address.")
return None
if addrstr is None:
return
if addrstr.count(":") in [1, 2] and addrstr.count("."):
self.type = self.ADDRESS_TYPE_PCI
addrstr, self.function = addrstr.split(".", 1)
addrstr, self.slot = addrstr.rsplit(":", 1)
self.domain = "0"
if addrstr.count(":"):
self.domain, self.bus = addrstr.split(":", 1)
elif addrstr == "spapr-vio":
self.type = self.ADDRESS_TYPE_SPAPR_VIO
else:
raise ValueError(_("Could not determine or unsupported "
"format of '%s'") % addrstr)
def clear(self):

View File

@ -1657,7 +1657,7 @@ def parse_controller(guest, optstring, dev=None):
set_param("index", "index")
set_param("master_startport", "master")
if address:
dev.set_address(address)
dev.address.set_addrstr(address)
if opts:
raise ValueError(_("Unknown options %s") % opts.keys())