如何使用 libvirt "start" 或 "activate" 网络?
How to "start" or "activate" a network with libvirt?
如何使用 libvirt
"start" 非活动网络?对于 virsh
,这将是 net-start <network>
。
我可以用 virNetworkDefineXML
创建一个网络,它将:
Define an inactive persistent virtual network or modify an existing persistent one from the XML description.
(相当于virsh net-define
),但我不知道如何"start"这个新创建但不活动的网络。
我正在使用 libvirt-python
绑定,但知道正确的 C API 就足够了。
API是virNetworkCreate()
:
Create and start a defined network. If the call succeed the network moves from the defined to the running networks pools.
要找到它,我们可以查看 virsh
的来源。 "net-start"命令定义在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()
如何使用 libvirt
"start" 非活动网络?对于 virsh
,这将是 net-start <network>
。
我可以用 virNetworkDefineXML
创建一个网络,它将:
Define an inactive persistent virtual network or modify an existing persistent one from the XML description.
(相当于virsh net-define
),但我不知道如何"start"这个新创建但不活动的网络。
我正在使用 libvirt-python
绑定,但知道正确的 C API 就足够了。
API是virNetworkCreate()
:
Create and start a defined network. If the call succeed the network moves from the defined to the running networks pools.
要找到它,我们可以查看 virsh
的来源。 "net-start"命令定义在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()