[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [virt-tools-list] [PATCH] virt-manager:Valid address type change in network device



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 linux vnet ibm com>
Signed-off-by: Li Zhang<zhlcindy linux vnet ibm com>
---
  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)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]