使用 libvirt-go 绑定定义域
Defining a domain using libvirt-go bindings
我正在尝试使用 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 字段,它似乎是指向自身的指针,是否可以将字段嵌入结构定义本身的结构中
是的,这是在 Go 中定义 XML 配置内联的正确方法。要定义域,您可以执行
xml, err := domcfg.Marshal()
if err != nil {
...
}
dom, err := conn.DomainDefineXML(xml)
if err != nil {
...
}
磁盘后备存储是提供有关完整磁盘链信息的一种方式。通常您可以将此设置保留为 nil,因为 libvirt 会自动为您检测链。可以有多个级别的支持链,因此结构再次包含一个具有自己类型的字段。
我正在尝试使用 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 字段,它似乎是指向自身的指针,是否可以将字段嵌入结构定义本身的结构中
是的,这是在 Go 中定义 XML 配置内联的正确方法。要定义域,您可以执行
xml, err := domcfg.Marshal()
if err != nil {
...
}
dom, err := conn.DomainDefineXML(xml)
if err != nil {
...
}
磁盘后备存储是提供有关完整磁盘链信息的一种方式。通常您可以将此设置保留为 nil,因为 libvirt 会自动为您检测链。可以有多个级别的支持链,因此结构再次包含一个具有自己类型的字段。