如何开始"或者"激活"一个有libvirt的网络?

时间:2015-08-18 00:06:24

标签: libvirt

你如何开始&#34;使用libvirt的非活动网络?使用virsh,这将是net-start <network>

我可以创建一个virNetworkDefineXML的网络,其中包含:

  

定义非活动的持久性虚拟网络或修改XML描述中的现有持久性虚拟网络。

(相当于virsh net-deifne),但我不知道如何开始&#34;这个新创建的非活动网络。

我使用libvirt-python绑定,但知道正确的C API就足够了。

1 个答案:

答案 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()