Virt-Manager能够修改运行域的网络接口,例如更改连接的网络。

我想使用libvirt-API在python中编写脚本。

import libvirt
conn = libvirt.open('qemu:///system')
deb = conn.lookupByName('Testdebian')
xml = deb.XMLDesc()
xml = replace('old-network-name', 'new-network-name')
deb.undefine()
deb = conn.defineXML(xml)


但这是行不通的。网络未更改。有人可以给我一个小技巧如何使用libvirt修改正在运行的域吗?我在文档中找不到任何有关此的信息。但是它必须是可行的,因为Virt-Manager可以做到。

谢谢你的帮助。

编辑:我设法通过virsh执行网络更改:

virsh update-device 16 Testdebian.xml


Testdebian.xml必须仅包含接口设备,而不是整个域XML。

但是,如何通过libvirt-API做到这一点?似乎没有方法可以通过API执行更新设备。

最佳答案

我终于找到了解决方案:

import libvirt
conn = libvirt.open('qemu:///system')
deb = conn.lookupByName('Testdebian')

deb.updateDeviceFlags(xml)


其中xml是包含设备描述的字符串。

我在Libvirt's JavaDocs中发现了这一点,Python和C文档似乎缺少许多功能。

关于python - Libvirt:更改运行域的网络接口(interface),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40700192/

10-12 22:09