我想创建一个网络,并使用
persistent
设置 autostart
和 libvirt-java
标志:
Connect connect = new Connect("qemu:///system", false);
Network network = connect.networkCreateXML("""
<network>
<name>foo</name>
<forward mode='nat'>
<nat>
<port start='1024' end='65535'/>
</nat>
</forward>
<bridge name='virfoo' stp='on' delay='0'/>
<ip address='192.168.99.1' netmask='255.255.255.0'/>
</network>
""");
network.setAutostart(true);
执行
network.setAutostart(true)
时抛出以下错误:
命令行上的libvirt:网络驱动程序错误:请求的操作无效:无法为瞬态网络设置自动启动
virsh net-list --all
显示:
Name State Autostart Persistent
--------------------------------------------
default active yes yes
foo active no no
如何使用
libvirt-java
创建或更新持久网络?
我可以看到有一个方法
network.isPersistent()
。但我可以在哪里设置该标志呢?
API 遵循与命令行相同的约定: create 方法(如
virsh net-create
)创建临时资源;要创建持久资源,您需要使用 define 替代方案(如 virsh net-define
):
Network network = connect.networkDefineXML("""
<network>
<name>foo</name>
<forward mode='nat'>
<nat>
<port start='1024' end='65535'/>
</nat>
</forward>
<bridge name='virfoo' stp='on' delay='0'/>
<ip address='192.168.99.1' netmask='255.255.255.0'/>
</network>
""");
network.create();
network.setAutostart(true);
请注意,当您
define
某事时,它将创建持久资源,但不会启动它;这就是为什么我们需要额外致电 network.create()
。
运行上述代码的结果是:
$ virsh net-list
Name State Autostart Persistent
--------------------------------------------
default active yes yes
foo active yes yes