diff options
Diffstat (limited to 'digitalocean/droplet.go')
| -rw-r--r-- | digitalocean/droplet.go | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/digitalocean/droplet.go b/digitalocean/droplet.go new file mode 100644 index 0000000..eb4d97e --- /dev/null +++ b/digitalocean/droplet.go @@ -0,0 +1,69 @@ +package digitalocean + +import ( + "fmt" + "github.com/digitalocean/godo" + + "go.wit.com/log" + // "go.wit.com/gui" +) + +func (d *DigitalOcean) NewDroplet(dd godo.Droplet) *Droplet { + if ! myDo.Ready() {return nil} + + droplet := new(Droplet) + droplet.ready = false + droplet.poll = dd // the information polled from the digital ocean API + + if (d.dGrid == nil) { + d.dGrid = d.group.NewGrid("grid", 2, 1).Pad() + } + + droplet.name = d.dGrid.NewLabel(dd.Name) + + droplet.box4 = d.dGrid.NewBox("hBox", true) + droplet.grid4 = droplet.box4.NewGrid("grid", 2, 1).Pad() + + fmt.Printf("Droplet: %s\n", dd.Name) + for _, network := range dd.Networks.V4 { + if network.Type == "public" { + fmt.Printf("IPv4: %s\n", network.IPAddress) + droplet.grid4.NewLabel(network.IPAddress) + droplet.grid4.NewButton("Connect", func () { + log.Info("ssh here", network.IPAddress) + }) + } + } + for _, network := range dd.Networks.V6 { + if network.Type == "public" { + fmt.Printf("IPv6: %s\n", network.IPAddress) + } + } + fmt.Println("-------------------------") + + droplet.ready = true + return droplet +} + +func (d *Droplet) Show() { + if ! myDo.Ready() {return} + log.Info("droplet.Show() window") + if d.hidden { + // my.window.Show() + } + d.hidden = false +} + +func (d *Droplet) Hide() { + if ! myDo.Ready() {return} + log.Info("droplet.Hide() window") + if ! d.hidden { + // d.window.Hide() + } + d.hidden = true +} + +func (d *Droplet) Exists() bool { + if ! myDo.Ready() {return false} + return true +} |
