summaryrefslogtreecommitdiff
path: root/addDroplet.go
diff options
context:
space:
mode:
Diffstat (limited to 'addDroplet.go')
-rw-r--r--addDroplet.go97
1 files changed, 85 insertions, 12 deletions
diff --git a/addDroplet.go b/addDroplet.go
index 215f4a4..40665ef 100644
--- a/addDroplet.go
+++ b/addDroplet.go
@@ -9,22 +9,34 @@ import (
"libvirt.org/go/libvirtxml"
)
-func addDroplet(domcfg *libvirtxml.Domain) (*DropletT, error) {
+func addDomainDroplet(domcfg *libvirtxml.Domain) (*DropletT, error) {
+ if domcfg == nil {
+ return nil, errors.New("domcfg == nil")
+ }
+
+ d, _ := findDomain(domcfg)
+ if d != nil {
+ return d, errors.New(d.pb.Hostname + " droplet exists. need to update instead")
+ }
+
+ // test add some ethernet devices
+ macs := getMacs(domcfg)
+ fmt.Printf("Virt mac addr:%s\n", macs)
+
+ fmt.Println("ADD FAILED", domcfg.Name, domcfg.UUID)
+ return nil, errors.New("not found")
+}
+
+func findDomain(domcfg *libvirtxml.Domain) (*DropletT, error) {
var found *DropletT
if domcfg == nil {
return nil, errors.New("domcfg == nil")
}
-// fmt.Printf("Virt type %s\n", domcfg.Type)
-// fmt.Printf("Virt name %s\n", domcfg.Name)
-// fmt.Printf("Virt UUID %s\n", domcfg.UUID)
-// fmt.Printf("Virt Memory %d %s\n", domcfg.Memory.Value, domcfg.Memory.Unit)
for _, d := range me.droplets {
if d.pb.Hostname == domcfg.Name {
- if d.pb.Uuid == domcfg.UUID {
- fmt.Println("FOUND NAME", domcfg.Name, domcfg.UUID)
+ if d.pb.Uuid != domcfg.UUID {
fmt.Println("CHANGED UUID", d.pb.Uuid, domcfg.UUID)
- } else {
d.pb.Uuid = domcfg.UUID
me.changed = true
}
@@ -37,17 +49,78 @@ func addDroplet(domcfg *libvirtxml.Domain) (*DropletT, error) {
}
if d.pb.Uuid == domcfg.UUID {
- if d.pb.Hostname == domcfg.Name {
- fmt.Println("FOUND UUID WITH MATCHING NAME", domcfg.Name, domcfg.UUID)
- } else {
+ if d.pb.Hostname != domcfg.Name {
fmt.Println("FOUND UUID WITH MIS-MATCHED NAME", domcfg.Name, domcfg.UUID)
return d, errors.New("UUID with mis-matched names")
}
}
}
+ return found, nil
+}
+
+func updateDroplet(d *DropletT, domcfg *libvirtxml.Domain) bool {
+ var ok bool = true
+
+ if d == nil {
+ return false
+ }
+ if domcfg == nil {
+ return false
+ }
+
+ // check memory
+ if domcfg.Memory.Unit == "KiB" {
+ var m int64
+ m = int64(domcfg.Memory.Value * 1024)
+ if d.pb.Memory != m {
+ d.pb.Memory = m
+ me.changed = true
+ fmt.Printf("Memory changed %d, %d %s\n", d.pb.Memory, domcfg.Memory.Value, domcfg.Memory.Unit)
+ }
+ } else {
+ fmt.Println("Unknown Memory Unit", domcfg.Memory.Unit)
+ ok = false
+ }
+
+ // check cpus
+ if d.pb.Cpus != int64(domcfg.VCPU.Value) {
+ fmt.Printf("cpus changed. VCPU = %+v\n", domcfg.VCPU)
+ d.pb.Cpus = int64(domcfg.VCPU.Value)
+ me.changed = true
+ }
+
+ // check type
+ if domcfg.Type != "kvm" {
+ fmt.Printf("not kvm. Virt type == %s\n", domcfg.Type)
+ ok = false
+ }
+
// test add some ethernet devices
macs := getMacs(domcfg)
fmt.Printf("Virt mac addr:%s\n", macs)
- return nil, errors.New("not found")
+
+ // fmt.Println("UPDATE FAILED", domcfg.Name, domcfg.UUID)
+ return ok
+}
+
+func updateMemory(d *DropletT, domcfg *libvirtxml.Domain) bool {
+ if (d == nil) || (domcfg == nil) {
+ return false
+ }
+
+ // check memory
+ if domcfg.Memory.Unit == "KiB" {
+ var m int64
+ m = int64(domcfg.Memory.Value * 1024)
+ if d.pb.Memory != m {
+ d.pb.Memory = m
+ me.changed = true
+ fmt.Printf("Memory changed %d, %d %s\n", d.pb.Memory, domcfg.Memory.Value, domcfg.Memory.Unit)
+ return true
+ }
+ return false
+ }
+ fmt.Println("Unknown Memory Unit", domcfg.Memory.Unit)
+ return true
}