summaryrefslogtreecommitdiff
path: root/digitalocean/main.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2023-12-30 12:20:20 -0600
committerJeff Carr <[email protected]>2023-12-30 12:20:20 -0600
commita117923b327d0d5a74ef64b51082e2ec4bcd9cfd (patch)
treedc8987c5f9e4cd51063951618df686f000716ec8 /digitalocean/main.go
parent7532fb5ff5d0178bb9b1cf0a1cd6ba7c30bb7c2b (diff)
show droplets
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'digitalocean/main.go')
-rw-r--r--digitalocean/main.go68
1 files changed, 68 insertions, 0 deletions
diff --git a/digitalocean/main.go b/digitalocean/main.go
new file mode 100644
index 0000000..a86b150
--- /dev/null
+++ b/digitalocean/main.go
@@ -0,0 +1,68 @@
+package digitalocean
+
+import (
+ "os"
+ "go.wit.com/log"
+ "go.wit.com/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.parent = p
+
+ myDo.ready = false
+
+ // 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("data").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}
+ if ! d.ListDroplets() {
+ log.Error(d.err, "Error listing droplets")
+ return false
+ }
+ for _, droplet := range d.droplets {
+ d.NewDroplet(droplet)
+ }
+ return true
+}