movign code from the original massive libvirtxml.go
Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
parent
0d8861fa9f
commit
edb7b34092
|
@ -13,12 +13,14 @@ package virtigolib
|
||||||
import (
|
import (
|
||||||
"encoding/xml"
|
"encoding/xml"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
|
|
||||||
"go.wit.com/log"
|
"go.wit.com/log"
|
||||||
"libvirt.org/go/libvirtxml"
|
"libvirt.org/go/libvirtxml"
|
||||||
)
|
)
|
||||||
|
|
||||||
func DumpNonStandardXML(domcfg *libvirtxml.Domain) (string, error) {
|
func DumpNonStandardXML(domcfg *libvirtxml.Domain) (string, error) {
|
||||||
|
var result string
|
||||||
// dump type
|
// dump type
|
||||||
if domcfg.Type == "kvm" {
|
if domcfg.Type == "kvm" {
|
||||||
domcfg.Type = ""
|
domcfg.Type = ""
|
||||||
|
@ -188,6 +190,7 @@ func DumpNonStandardXML(domcfg *libvirtxml.Domain) (string, error) {
|
||||||
if domcfg.Metadata != nil {
|
if domcfg.Metadata != nil {
|
||||||
var s string
|
var s string
|
||||||
s = domcfg.Metadata.XML
|
s = domcfg.Metadata.XML
|
||||||
|
result += fmt.Sprintln("Not saving Domain.Metadata.XML:", s)
|
||||||
log.Info("Not saving Domain.Metadata.XML:", s)
|
log.Info("Not saving Domain.Metadata.XML:", s)
|
||||||
log.Info("todo: get this from disk image")
|
log.Info("todo: get this from disk image")
|
||||||
domcfg.Metadata = nil
|
domcfg.Metadata = nil
|
||||||
|
@ -198,6 +201,7 @@ func DumpNonStandardXML(domcfg *libvirtxml.Domain) (string, error) {
|
||||||
if domcfg.Resource.Partition == "/machine" {
|
if domcfg.Resource.Partition == "/machine" {
|
||||||
domcfg.Resource = nil
|
domcfg.Resource = nil
|
||||||
} else {
|
} else {
|
||||||
|
result += fmt.Sprintf("non-standard Domain.Resource: %+v\n", domcfg.Resource)
|
||||||
fmt.Printf("non-standard Domain.Resource: %+v\n", domcfg.Resource)
|
fmt.Printf("non-standard Domain.Resource: %+v\n", domcfg.Resource)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -506,5 +510,52 @@ func DumpNonStandardXML(domcfg *libvirtxml.Domain) (string, error) {
|
||||||
domcfg.Devices.Watchdogs = nil
|
domcfg.Devices.Watchdogs = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return finalEmptyCheck(domcfg)
|
end, err := finalEmptyCheck(domcfg)
|
||||||
|
if end != "" {
|
||||||
|
result += fmt.Sprintln(end)
|
||||||
|
}
|
||||||
|
return result, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// this tries the final zero'ing out of the XML
|
||||||
|
// todo: if this fails, put the remaining XML in the protobuf file?
|
||||||
|
func finalEmptyCheck(domcfg *libvirtxml.Domain) (string, error) {
|
||||||
|
// dumpLibvirtxmlDomainNames()
|
||||||
|
if libvirtxmlDomainDevicesEmpty(*domcfg.Devices) {
|
||||||
|
// fmt.Println("Domain Devices are empty")
|
||||||
|
domcfg.Devices = nil
|
||||||
|
} else {
|
||||||
|
return warnUserOfNonStandardXML(domcfg)
|
||||||
|
}
|
||||||
|
|
||||||
|
if libvirtxmlDomainEmpty(*domcfg) {
|
||||||
|
domcfg = nil
|
||||||
|
return warnUserOfNonStandardXML(domcfg)
|
||||||
|
}
|
||||||
|
|
||||||
|
final, err := warnUserOfNonStandardXML(domcfg)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("todo: improve this libvirtXML parsing. %v\n", err)
|
||||||
|
os.Exit(-1)
|
||||||
|
}
|
||||||
|
return final, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func warnUserOfNonStandardXML(domcfg *libvirtxml.Domain) (string, error) {
|
||||||
|
updatedXML, err := xml.MarshalIndent(domcfg, "", " ")
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Failed to marshal updated XML: %v\n", err)
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
final := string(updatedXML)
|
||||||
|
if final == "" {
|
||||||
|
// everything seems to have been parsed pretty standard
|
||||||
|
return "", nil
|
||||||
|
}
|
||||||
|
log.Info("Non-Standard XML Start")
|
||||||
|
fmt.Println(string(updatedXML))
|
||||||
|
log.Info("Non-Standard XML End")
|
||||||
|
log.Info("")
|
||||||
|
log.Info("This XML must be removed by hand. Put this in the protobuf?")
|
||||||
|
return string(updatedXML), nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -224,30 +224,6 @@ func setRandomMacs(domcfg *libvirtxml.Domain) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// this tries the final zero'ing out of the XML
|
|
||||||
// todo: if this fails, put the remaining XML in the protobuf file?
|
|
||||||
func finalEmptyCheck(domcfg *libvirtxml.Domain) (string, error) {
|
|
||||||
// dumpLibvirtxmlDomainNames()
|
|
||||||
if libvirtxmlDomainDevicesEmpty(*domcfg.Devices) {
|
|
||||||
// fmt.Println("Domain Devices are empty")
|
|
||||||
domcfg.Devices = nil
|
|
||||||
} else {
|
|
||||||
return warnUserOfNonStandardXML(domcfg)
|
|
||||||
}
|
|
||||||
|
|
||||||
if libvirtxmlDomainEmpty(*domcfg) {
|
|
||||||
domcfg = nil
|
|
||||||
return warnUserOfNonStandardXML(domcfg)
|
|
||||||
}
|
|
||||||
|
|
||||||
final, err := warnUserOfNonStandardXML(domcfg)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Printf("todo: improve this libvirtXML parsing. %v\n", err)
|
|
||||||
os.Exit(-1)
|
|
||||||
}
|
|
||||||
return final, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func xmlAny(a any) (string, error) {
|
func xmlAny(a any) (string, error) {
|
||||||
updatedXML, err := xml.MarshalIndent(a, "", " ")
|
updatedXML, err := xml.MarshalIndent(a, "", " ")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -265,25 +241,6 @@ func xmlAny(a any) (string, error) {
|
||||||
return final, nil
|
return final, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func warnUserOfNonStandardXML(domcfg *libvirtxml.Domain) (string, error) {
|
|
||||||
updatedXML, err := xml.MarshalIndent(domcfg, "", " ")
|
|
||||||
if err != nil {
|
|
||||||
fmt.Printf("Failed to marshal updated XML: %v\n", err)
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
final := string(updatedXML)
|
|
||||||
if final == "" {
|
|
||||||
// everything seems to have been parsed pretty standard
|
|
||||||
return "", nil
|
|
||||||
}
|
|
||||||
log.Info("Non-Standard XML Start")
|
|
||||||
fmt.Println(string(updatedXML))
|
|
||||||
log.Info("Non-Standard XML End")
|
|
||||||
log.Info("")
|
|
||||||
log.Info("This XML must be removed by hand. Put this in the protobuf?")
|
|
||||||
return string(updatedXML), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// dump out all the fields in libvirtxml.DomainDeviceList
|
// dump out all the fields in libvirtxml.DomainDeviceList
|
||||||
func DumpLibvirtxmlDomainNames() {
|
func DumpLibvirtxmlDomainNames() {
|
||||||
var domain libvirtxml.Domain
|
var domain libvirtxml.Domain
|
||||||
|
|
Loading…
Reference in New Issue