你如何开始"使用libvirt
的非活动网络?使用virsh
,这将是net-start <network>
。
我可以创建一个virNetworkDefineXML
的网络,其中包含:
定义非活动的持久性虚拟网络或修改XML描述中的现有持久性虚拟网络。
(相当于virsh net-deifne
),但我不知道如何开始&#34;这个新创建的非活动网络。
我使用libvirt-python
绑定,但知道正确的C API就足够了。
答案 0 :(得分:0)
API为virNetworkCreate()
:
创建并启动已定义的网络。如果呼叫成功,则网络将从定义的网络池移动到正在运行的网络池。
要找到这个,我们可以查看virsh
的来源。 &#34; net-start&#34;命令在tools/virsh-network.c
中定义:
static bool
cmdNetworkStart(vshControl *ctl, const vshCmd *cmd)
{
virNetworkPtr network;
bool ret = true;
const char *name = NULL;
if (!(network = virshCommandOptNetwork(ctl, cmd, &name)))
return false;
if (virNetworkCreate(network) == 0) {
vshPrint(ctl, _("Network %s started\n"), name);
} else {
vshError(ctl, _("Failed to start network %s"), name);
ret = false;
}
virNetworkFree(network);
return ret;
}
在libvirt-python
中,这意味着只需在.create()
返回的网络对象上调用.networkDefineXML()
:
conn = libvirt.open('qemu:///system')
# Define a new persistent, inactive network
xml = open('net.xml', 'r').read()
net = conn.networkDefineXML(xml)
# Set it to auto-start
net.setAutostart(True)
# Start it!
net.create()