我正在尝试使用libvirt-go api绑定,并按照示例代码段here,到目前为止,已经填充了domcfg变量:
domcfg := &libvirtxml.Domain{
Type: "kvm",
Name: "demo",
Memory: &libvirtxml.DomainMemory{
Value: 4096,
Unit: "MB",
DumpCore: "on"},
VCPU: &libvirtxml.DomainVCPU{
Value: 1},
CPU: &libvirtxml.DomainCPU{
Mode: "host-model"},
Devices: &libvirtxml.DomainDeviceList{
Disks: []libvirtxml.DomainDisk{
Source: &libvirtxml.DomainDiskSource{
File: &DomainDiskSourceFile{
File: "./vm.qcow2"}},
BackingStore: &DomainDiskBackingStore{
BackingStore: &DomainDiskBackingStore{
}
}}}
我不确定我是否完全在正确的道路上,所以这是在编组到xml之前定义变量的正确方法吗?另外,我发现在https://godoc.org/github.com/libvirt/libvirt-go-xml#DomainDiskBackingStore处定义的结构特别是BackingStore字段,该字段似乎是指向其自身的指针,是否有可能将字段嵌入到结构定义本身的结构中?
答案 0 :(得分:1)
是的,这是在Go中定义内联XML配置的正确方法。要定义域,您可以执行
xml, err := domcfg.Marshal()
if err != nil {
...
}
dom, err := conn.DomainDefineXML(xml)
if err != nil {
...
}
磁盘后备存储是一种提供有关完整磁盘链的信息的方法。通常,您可以将此设置保留为nil,因为libvirt会自动为您检测链。支撑链可以有多个级别,因此为什么该结构再次包含一个具有其自身类型的字段。