Hi Cole:
Cole, please help to review this patch too.
On 05/23/2012 04:05 PM, Qing Lin wrote:
Function set_address(addr) will only change the value of
VirtualDeviceAddress._type,doesn't map change in xml.So,
it will cause change lost problem.Using assignment statements
will not only change the value of VirtualDeviceAddress._type
but also change the xml.
Signed-off-by: Qing Lin<qinglbj@xxxxxxxxxxxxxxxxxx>
Signed-off-by: Li Zhang<zhlcindy@xxxxxxxxxxxxxxxxxx>
---
src/virtManager/domain.py | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/src/virtManager/domain.py b/src/virtManager/domain.py
index b547f91..893c5df 100644
--- a/src/virtManager/domain.py
+++ b/src/virtManager/domain.py
@@ -626,7 +626,7 @@ class vmmDomain(vmmLibvirtObject):
def change(editdev):
if editdev.model != newmodel:
editdev.address.clear()
- editdev.set_address(addr)
+ editdev.address.type = addr
In this place,the address instance is already existing.we change the
address type in order to reflect the xml file later.But by using
function set_address(add),It will lost map in orginal xml file.
Because the we should instance address as below:
self.address = VirtualDeviceAddress(conn,
parsexml=parsexml,
parsexmlnode=parsexmlnode,
caps=caps)
but founction set_address is written this way:
def set_address(self, addrstr):
self.address = VirtualDeviceAddress(self.conn, addrstr=addrstr)
We can see ,there is lack parsexm and parsexmlnode in parameters
,which cause the below assignment statements doesn't work.
bus = _xml_property(_get_bus, _set_bus, xpath="./address/@bus")
so if we call editdev.set_address(addr),the bus type will not change as
we expect.We should just use "editdev.address.type = addr " instead here.
editdev.model = newmodel
return self._redefine_device(change, devobj)