【问题标题】:Defining a domain using libvirt-go bindings使用 libvirt-go 绑定定义域
【发布时间】:2018-11-28 23:57:02
【问题描述】:

我正在尝试使用 libvirt-go api 绑定并按照示例 sn-p 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 字段,它似乎是一个指向自身的指针,是否可以在结构中嵌入一个字段,即结构定义本身

【问题讨论】:

    标签: libvirt


    【解决方案1】:

    是的,这是在 Go 中定义内联 XML 配置的正确方法。要定义域,您可以这样做

    xml, err := domcfg.Marshal()
    if err != nil {
       ...
    }
    
    dom, err := conn.DomainDefineXML(xml)
    if err != nil {
       ...
    }
    

    磁盘后备存储是提供有关完整磁盘链信息的一种方式。通常您可以将此设置保留为 nil,因为 libvirt 会自动为您检测链。可以有多个级别的后备链,因此该结构再次包含具有自己类型的字段。

    【讨论】:

    • 我似乎在未定义的源字段中出现错误:源不能使用 *libvirtxml.DomainDiskSource 文字(类型 *libvirtxml.DomainDiskSource)作为类型 libvirtxml.DomainDisk 在数组或切片文字
    • 好像没有为conn.DomainDefine定义任何方法,你的意思是conn.DomainDefineXML吗?
    • 是的,DomainDefineXML
    猜你喜欢
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 2021-10-15
    • 1970-01-01
    相关资源
    最近更新 更多