summaryrefslogtreecommitdiff
path: root/importXML.go
blob: fea2bbbe7cb9f2b65b57317bfa24807b32fd02ed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// Copyright 2024 WIT.COM Inc Licensed GPL 3.0

package virtigolib

import (
	"errors"
	"fmt"

	pb "go.wit.com/lib/protobuf/virtbuf"
	"go.wit.com/log"
	"libvirt.org/go/libvirtxml"
)

// do a test import of a libvirt xml domain
func TestLibvirtDomain(domcfg *libvirtxml.Domain) (*pb.Droplet, error) {
	d := new(pb.Droplet)
	d.Current = new(pb.Current)
	if domcfg == nil {
		return d, errors.New("domcfg == nil")
	}

	_, err := MergelibvirtDomain(d, domcfg)
	if err != nil {
		return d, errors.New("Merge *libvirt.Domain failed " + domcfg.Name)
	}
	s, err := DumpNonStandardXML(domcfg)
	d.Current.FullXml = s
	if err != nil {
		reason := s + "\n"
		reason = fmt.Sprintln("DumpNonStandardXML() on", domcfg.Name, "failed for", err)
		log.Warn(reason)
		return d, err
	}
	return d, nil
}

func MergeXml(d *libvirtxml.Domain, xml string) error {
	err := d.Unmarshal(xml)
	if err != nil {
		log.Info("Marshal failed on file", xml)
	}
	return err
}