Определение домена с помощью привязок libvirt-go - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь использовать привязку libvirt-go api и, следуя примеру примера здесь , заполнил переменную 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, которое кажется указателем на себя, можно ли встроить поле в структуру, которая сама является определением структуры

1 Ответ

0 голосов
/ 29 ноября 2018

Да, это правильный подход к определению встроенного XML-конфигурации в Go.Чтобы определить домен, вы можете сделать

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

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

Резервное хранилище диска - это способ предоставить информацию о полной цепочке дисков.Обычно вы можете оставить этот набор равным nil, потому что libvirt автоматически определит цепочку за вас.Может быть несколько уровней цепочки поддержки, поэтому структура снова содержит поле со своим собственным типом.

...