diff options
Diffstat (limited to 'importXML.go')
| -rw-r--r-- | importXML.go | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/importXML.go b/importXML.go new file mode 100644 index 0000000..e93102b --- /dev/null +++ b/importXML.go @@ -0,0 +1,42 @@ +// 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" +) + +// import a libvirt xml domain +func ImportXML(domcfg *libvirtxml.Domain) (*pb.Droplet, []*pb.Event, error) { + var alle []*pb.Event + var d *pb.Droplet + if domcfg == nil { + return nil, alle, errors.New("domcfg == nil") + } + + d = new(pb.Droplet) + d.Hostname = domcfg.Name + d.Uuid = domcfg.UUID + d.StartState = pb.DropletState_OFF + d.Current.State = pb.DropletState_UNKNOWN + + alle, err := updateDroplet(d, domcfg) + if err != nil { + log.Info("updateDroplet() failed for", d.Hostname) + return d, alle, errors.New("update failed for " + domcfg.Name) + } + log.Info("added new droplet", domcfg.Name, domcfg.UUID) + s, err := DumpNonStandardXML(domcfg) + if err != nil { + reason := s + "\n" + reason = fmt.Sprintln("DumpNonStandardXML() on", domcfg.Name, "failed for", err) + log.Info(reason) + return d, alle, errors.New(reason) + } + return d, alle, nil +} |
