[virt-tools-list] [virt-manager PATCH 1/3] Add support for multifunction address parameter
Martin Kletzander
mkletzan at redhat.com
Mon Sep 2 15:21:32 UTC 2013
Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
---
virtinst/device.py | 3 ++-
virtinst/xmlbuilder.py | 14 +++++++++++---
2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/virtinst/device.py b/virtinst/device.py
index 0cce561..6bcebf4 100644
--- a/virtinst/device.py
+++ b/virtinst/device.py
@@ -136,7 +136,7 @@ class VirtualDeviceAddress(XMLBuilder):
_XML_ROOT_XPATH = "/domain/devices/device/address"
_XML_PROP_ORDER = ["type", "domain", "controller", "bus", "slot",
- "function", "target", "unit"]
+ "function", "target", "unit", "multifunction"]
def set_addrstr(self, addrstr):
if addrstr is None:
@@ -165,3 +165,4 @@ class VirtualDeviceAddress(XMLBuilder):
unit = XMLProperty(xpath="./address/@unit", is_int=True)
port = XMLProperty(xpath="./address/@port", is_int=True)
target = XMLProperty(xpath="./address/@target", is_int=True)
+ multifunction = XMLProperty(xpath="./address/@multifunction", is_onoff=True)
diff --git a/virtinst/xmlbuilder.py b/virtinst/xmlbuilder.py
index 2c1f569..3e7dde8 100644
--- a/virtinst/xmlbuilder.py
+++ b/virtinst/xmlbuilder.py
@@ -1,7 +1,7 @@
#
# Base class for all VM devices
#
-# Copyright 2008 Red Hat, Inc.
+# Copyright 2008, 2013 Red Hat, Inc.
# Cole Robinson <crobinso at redhat.com>
#
# This program is free software; you can redistribute it and/or modify
@@ -251,7 +251,8 @@ class XMLProperty(property):
set_converter=None, validate_cb=None,
make_getter_xpath_cb=None, make_setter_xpath_cb=None,
is_bool=False, is_int=False, is_yesno=False,
- clear_first=None, default_cb=None, default_name=None):
+ clear_first=None, default_cb=None, default_name=None,
+ is_onoff=False):
"""
Set a XMLBuilder class property that represents a value in the
<domain> XML. For example
@@ -282,6 +283,7 @@ class XMLProperty(property):
@param is_bool: Whether this is a boolean property in the XML
@param is_int: Whethere this is an integer property in the XML
@param is_yesno: Whethere this is a yes/no property in the XML
+ @param is_onoff: Whethere this is a on/off property in the XML
@param clear_first: List of xpaths to unset before any 'set' operation.
For those weird interdependent XML props like disk source type and
path attribute.
@@ -301,6 +303,7 @@ class XMLProperty(property):
self._is_bool = is_bool
self._is_int = is_int
self._is_yesno = is_yesno
+ self._is_onoff = is_onoff
self._xpath_for_getter_cb = make_getter_xpath_cb
self._xpath_for_setter_cb = make_setter_xpath_cb
@@ -312,7 +315,8 @@ class XMLProperty(property):
self._default_name = default_name
if sum([int(bool(i)) for i in
- [self._is_bool, self._is_int, self._is_yesno]]) > 1:
+ [self._is_bool, self._is_int,
+ self._is_yesno, self._is_onoff]]) > 1:
raise RuntimeError("Conflict property converter options.")
if self._default_name and not self._default_cb:
@@ -397,6 +401,8 @@ class XMLProperty(property):
ret = int(val, **intkwargs)
elif self._is_yesno and val is not None:
ret = bool(val == "yes")
+ elif self._is_onoff and val is not None:
+ ret = bool(val == "on")
else:
ret = val
return ret
@@ -404,6 +410,8 @@ class XMLProperty(property):
def _convert_set_value(self, xmlbuilder, val):
if self._default_name and val == self._default_name:
val = self._default_cb(xmlbuilder)
+ elif self._is_onoff and val is not None:
+ val = bool(val) and "on" or "off"
elif self._is_yesno and val is not None:
val = bool(val) and "yes" or "no"
elif self._is_int and val is not None:
--
1.8.3.2
More information about the virt-tools-list
mailing list