如何使用 libvirt-java 创建持久网络

问题描述 投票:0回答:1

我想创建一个网络,并使用

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()
。但我可以在哪里设置该标志呢?

java qemu kvm libvirt
1个回答
0
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.