[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



On 05/30/2012 06:58 AM, Cole Robinson wrote:
On 05/23/2012 04:05 AM, 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
              editdev.model = newmodel
          return self._redefine_device(change, devobj)

Sorry for being slow to respond, I'll be quicker going forward.

Can you give an example of where the current code is failing, and what case
this fixes for you? Before and after XML would help.
Thanks Cole.I will explain in detail.
spapr-vlan is a network  interface type that pseries  machine supported.
when we change a network interface device model in virt-manager form one to another.
the xml will be changed like:

(libvirtobject:135): Redefining 'vm1' with XML diff:
--- Original XML
+++ New XML
@@ -47,8 +47,7 @@
<interface type="network">
<mac address="9a:ea:d6:ab:b7:36"/>
<source network="default"/>
- <model type="rtl8139"/>
- <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0"/>
+ <model type="virtio"/>
</interface>

Is it fine ,except when we change a network interface device model in virt-manager form any one to spapr-vlan.

(libvirtobject:135): Redefining 'vm1' with XML diff:
--- Original XML
+++ New XML
@@ -47,8 +47,7 @@
<interface type="network">
<mac address="9a:ea:d6:ab:b7:36"/>
<source network="default"/>
- <model type="rtl8139"/>
- <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0"/>
+ <model type="spapr-vlan"/>
</interface>

The xml change is not enough .We have to set address type for spapr-vlan in xml too.What we expect is like below:

(libvirtobject:135): Redefining 'vm1' with XML diff:
--- Original XML
+++ New XML
@@ -47,8 +47,8 @@
<interface type="network">
<mac address="9a:ea:d6:ab:b7:36"/>
<source network="default"/>
- <model type="rtl8139"/>
- <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0"/>
+ <model type="spapr-vlan"/>
+ <address type="spapr-vio"/>
</interface>

That's why we add an founction call "editdev.set_address(addr)" here. Only spapr-vlan will give addr a value (addr = 'spapr-vio' ),other model just pass addr as NONE. It now only affect spapr-vlan device 's address type,it will keep other models what they origin are. But the founction call "editdev.set_address(addr)" doesn't work as we expected. The element " <address type="spapr-vio"/>" doesn't add to the xml. So we replace "editdev.set_address(addr)" with "editdev.address.type = addr" ,which will work correctly.

And I have explain why set_address(addr) doesn't work correctly in this case in the previous mail.
https://www.redhat.com/archives/virt-tools-list/2012-May/msg00103.html


Thanks,
Cole



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