Skip to main content

Libvirt API

核心概念

对象说明
virConnectPtrHypervisor 连接
virDomainPtr虚拟机 (运行中或已定义)
virNetworkPtr虚拟网络
virStoragePool存储池
virStorageVol存储卷

Go 示例

package main

import (
"fmt"
"net"
"time"

"github.com/digitalocean/go-libvirt"
)

func main() {
// Unix socket 连接
c, err := net.DialTimeout("unix", "/var/run/libvirt/libvirt-sock", 2*time.Second)
if err != nil {
panic(err)
}

l := libvirt.New(c)
if err := l.Connect(); err != nil {
panic(err)
}
defer l.Disconnect()

v, _ := l.Version()
fmt.Println("Version:", v)

domains, _, _ := l.ConnectListAllDomains(1, 0)
for _, d := range domains {
fmt.Printf("%d %s %x\n", d.ID, d.Name, d.UUID)
}
}

Java 示例

import org.libvirt.Connect;
import org.libvirt.ConnectAuthDefault;

public class LibvirtExample {
public static void main(String[] args) throws Exception {
Connect conn = new Connect("qemu:///system", new ConnectAuthDefault(), 0);
System.out.println("Hypervisor: " + conn.getType());
System.out.println("Version: " + conn.getLibVirVersion());
}
}

参考