parent
15f48a01ab
commit
4d43c36db5
|
@ -19,7 +19,10 @@ func addDomainDroplet(domcfg *libvirtxml.Domain) (*DropletT, error) {
|
||||||
return nil, errors.New("domcfg == nil")
|
return nil, errors.New("domcfg == nil")
|
||||||
}
|
}
|
||||||
|
|
||||||
d, _ := findDomain(domcfg)
|
d, err := findDomain(domcfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
if d == nil {
|
if d == nil {
|
||||||
// this is a new unknown droplet (not in the config file)
|
// this is a new unknown droplet (not in the config file)
|
||||||
d = new(DropletT)
|
d = new(DropletT)
|
||||||
|
@ -38,7 +41,7 @@ func addDomainDroplet(domcfg *libvirtxml.Domain) (*DropletT, error) {
|
||||||
me.changed = true
|
me.changed = true
|
||||||
}
|
}
|
||||||
|
|
||||||
err := updateDroplet(d, domcfg)
|
err = updateDroplet(d, domcfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Info("updateDroplet() failed for", d.pb.Hostname)
|
log.Info("updateDroplet() failed for", d.pb.Hostname)
|
||||||
return d, errors.New("update failed for " + domcfg.Name)
|
return d, errors.New("update failed for " + domcfg.Name)
|
||||||
|
|
|
@ -45,7 +45,7 @@ func convertToString(x any) string {
|
||||||
case string:
|
case string:
|
||||||
return x.(string)
|
return x.(string)
|
||||||
case int:
|
case int:
|
||||||
return fmt.Sprintf("%d", x.(int64))
|
return fmt.Sprintf("%d", x.(int))
|
||||||
case uint:
|
case uint:
|
||||||
return fmt.Sprintf("%d", x.(uint))
|
return fmt.Sprintf("%d", x.(uint))
|
||||||
case bool:
|
case bool:
|
||||||
|
|
|
@ -351,11 +351,19 @@ func dumpNonStandardXML(domcfg *libvirtxml.Domain) (string, error) {
|
||||||
var secnormal bool = true
|
var secnormal bool = true
|
||||||
if len(domcfg.SecLabel) != 0 {
|
if len(domcfg.SecLabel) != 0 {
|
||||||
for _, sec := range domcfg.SecLabel {
|
for _, sec := range domcfg.SecLabel {
|
||||||
if sec.Model == "apparmor" {
|
switch sec.Model {
|
||||||
// this should be configured in dom0
|
case "apparmor":
|
||||||
} else {
|
// log.Info("ignoring SecLabel apparmor. not supported yet")
|
||||||
fmt.Printf("? SecLabel: %+v\n", sec)
|
// log.Info("you must set this later if you need this")
|
||||||
fmt.Printf("? SecLabel.Model: %+v\n", sec.Model)
|
// xmlAny(sec)
|
||||||
|
case "dac":
|
||||||
|
// log.Info("ignoring SecLabel dac. not supported yet")
|
||||||
|
// log.Info("you must set this later if you need this")
|
||||||
|
// xmlAny(sec)
|
||||||
|
default:
|
||||||
|
fmt.Printf("unknown SecLabel: %+v\n", sec)
|
||||||
|
fmt.Printf("unknown SecLabel.Model: %+v\n", sec.Model)
|
||||||
|
xmlAny(sec)
|
||||||
secnormal = false
|
secnormal = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -371,6 +379,7 @@ func dumpNonStandardXML(domcfg *libvirtxml.Domain) (string, error) {
|
||||||
fmt.Printf("Not saving Domain.Metadata: %+v\n", domcfg.Metadata)
|
fmt.Printf("Not saving Domain.Metadata: %+v\n", domcfg.Metadata)
|
||||||
domcfg.Metadata = nil
|
domcfg.Metadata = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ignore Resource
|
// ignore Resource
|
||||||
if domcfg.Resource != nil {
|
if domcfg.Resource != nil {
|
||||||
if domcfg.Resource.Partition == "/machine" {
|
if domcfg.Resource.Partition == "/machine" {
|
||||||
|
@ -380,6 +389,12 @@ func dumpNonStandardXML(domcfg *libvirtxml.Domain) (string, error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ignore Resource
|
||||||
|
if domcfg.ID != nil {
|
||||||
|
// ignore domain id
|
||||||
|
domcfg.ID = nil
|
||||||
|
}
|
||||||
|
|
||||||
// this will move elsewhere in the protobuf someday
|
// this will move elsewhere in the protobuf someday
|
||||||
// ignore all these for now
|
// ignore all these for now
|
||||||
if domcfg.OnPoweroff != "" { // normally "destroy"
|
if domcfg.OnPoweroff != "" { // normally "destroy"
|
||||||
|
@ -677,6 +692,23 @@ func finalEmptyCheck(domcfg *libvirtxml.Domain) (string, error) {
|
||||||
return final, nil
|
return final, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func xmlAny(a any) (string, error) {
|
||||||
|
updatedXML, err := xml.MarshalIndent(a, "", " ")
|
||||||
|
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(final)
|
||||||
|
log.Info("Non-Standard XML End")
|
||||||
|
return final, nil
|
||||||
|
}
|
||||||
|
|
||||||
func warnUserOfNonStandardXML(domcfg *libvirtxml.Domain) (string, error) {
|
func warnUserOfNonStandardXML(domcfg *libvirtxml.Domain) (string, error) {
|
||||||
updatedXML, err := xml.MarshalIndent(domcfg, "", " ")
|
updatedXML, err := xml.MarshalIndent(domcfg, "", " ")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -832,7 +864,7 @@ func libvirtxmlDomainEmpty(mydom libvirtxml.Domain) bool {
|
||||||
}
|
}
|
||||||
case reflect.Struct:
|
case reflect.Struct:
|
||||||
if IsStructEmptyOrNil(value) {
|
if IsStructEmptyOrNil(value) {
|
||||||
fmt.Printf("XML Field ignore empty Struct %s\n", field)
|
// fmt.Printf("XML Field ignore empty Struct %s\n", field)
|
||||||
} else {
|
} else {
|
||||||
fmt.Printf("Field Struct is not empty %s is %+v\n", field, value)
|
fmt.Printf("Field Struct is not empty %s is %+v\n", field, value)
|
||||||
empty = false
|
empty = false
|
||||||
|
|
Loading…
Reference in New Issue