diff options
| author | Jeff Carr <[email protected]> | 2024-01-08 22:33:29 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2024-01-08 22:33:29 -0600 |
| commit | f3a5cd0db1575da22f4bc1d73f4acf53b7138462 (patch) | |
| tree | 11bf48ea4ebb0b4579a86701af61c63604161433 /new.go | |
| parent | 430de13fba8e50d51e46ee4adb362f2549661431 (diff) | |
go.wit.com/log changev0.3.2
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'new.go')
| -rw-r--r-- | new.go | 78 |
1 files changed, 78 insertions, 0 deletions
@@ -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 +} |
