summaryrefslogtreecommitdiff
path: root/new.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2024-01-08 22:33:29 -0600
committerJeff Carr <[email protected]>2024-01-08 22:33:29 -0600
commitf3a5cd0db1575da22f4bc1d73f4acf53b7138462 (patch)
tree11bf48ea4ebb0b4579a86701af61c63604161433 /new.go
parent430de13fba8e50d51e46ee4adb362f2549661431 (diff)
go.wit.com/log changev0.3.2
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'new.go')
-rw-r--r--new.go78
1 files changed, 78 insertions, 0 deletions
diff --git a/new.go b/new.go
new file mode 100644
index 0000000..2b62d12
--- /dev/null
+++ b/new.go
@@ -0,0 +1,78 @@
+package digitalocean
+
+import (
+ "os"
+ "go.wit.com/log"
+ "go.wit.com/gui/gui"
+)
+
+var myDo *DigitalOcean
+
+// This is initializes the main DO object
+// You can only have one of these
+func New(p *gui.Node) *DigitalOcean {
+ if myDo != nil {return myDo}
+ myDo = new(DigitalOcean)
+ myDo.ready = false
+ myDo.parent = p
+
+ myDo.dropMap = make(map[int]*Droplet)
+
+ // Your personal API token from DigitalOcean.
+ myDo.token = os.Getenv("DIGITALOCEAN_TOKEN")
+
+ myDo.window = p.NewWindow("DigitalOcean Control Panel")
+
+ // make a group label and a grid
+ myDo.group = myDo.window.NewGroup("droplets:").Pad()
+ myDo.grid = myDo.group.NewGrid("grid", 2, 1).Pad()
+
+ myDo.ready = true
+ myDo.Hide()
+ return myDo
+}
+
+// Returns true if the status is valid
+func (d *DigitalOcean) Ready() bool {
+ if d == nil {return false}
+ return d.ready
+}
+
+func (d *DigitalOcean) Show() {
+ if ! d.Ready() {return}
+ log.Info("digitalocean.Show() window")
+ if d.hidden {
+ d.window.Show()
+ }
+ d.hidden = false
+}
+
+func (d *DigitalOcean) Hide() {
+ if ! d.Ready() {return}
+ log.Info("digitalocean.Hide() window")
+ if ! d.hidden {
+ d.window.Hide()
+ }
+ d.hidden = true
+}
+
+func (d *DigitalOcean) Update() bool {
+ if ! d.Ready() {return false}
+ d.ListSSHKeyID()
+ if d.ListDroplets() {
+ for _, droplet := range d.dpolled {
+ // check if the droplet ID already exists
+ if (d.dropMap[droplet.ID] == nil) {
+ d.dropMap[droplet.ID] = d.NewDroplet(&droplet)
+ } else {
+ log.Log(POLL, "droplet.Update()", droplet.ID, droplet.Name, "already exists")
+ d.dropMap[droplet.ID].Update(&droplet)
+ continue
+ }
+ }
+ } else {
+ log.Error(d.err, "Error listing droplets")
+ return false
+ }
+ return true
+}