summaryrefslogtreecommitdiff
path: root/digitalocean/droplet.go
blob: 72384539578696dd78c916f7cf08fbe756b8ed24 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package digitalocean

import 	(
	"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", 5, 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()
	for _, network := range dd.Networks.V4 {
		if network.Type == "public" {
			droplet.grid4.NewLabel(network.IPAddress)
		}
	}
	droplet.box6 = d.dGrid.NewBox("hBox", true)
	droplet.grid6 = droplet.box6.NewGrid("grid", 2, 1).Pad()
	for _, network := range dd.Networks.V6 {
		if network.Type == "public" {
			droplet.grid6.NewLabel(network.IPAddress)
		}
	}

	d.dGrid.NewButton("Connect", func () {
		droplet.Connect()
	})

	d.dGrid.NewButton("Show", func () {
		droplet.Show()
	})

	droplet.ready = true
	return droplet
}

func (d *Droplet) Connect() {
	if ! d.Exists() {return}
	log.Info("droplet.Connect() ssh here")
}

/*
type Droplet struct {
	ID               int           `json:"id,float64,omitempty"`
	Name             string        `json:"name,omitempty"`
	Memory           int           `json:"memory,omitempty"`
	Vcpus            int           `json:"vcpus,omitempty"`
	Disk             int           `json:"disk,omitempty"`
	Region           *Region       `json:"region,omitempty"`
	Image            *Image        `json:"image,omitempty"`
	Size             *Size         `json:"size,omitempty"`
	SizeSlug         string        `json:"size_slug,omitempty"`
	BackupIDs        []int         `json:"backup_ids,omitempty"`
	NextBackupWindow *BackupWindow `json:"next_backup_window,omitempty"`
	SnapshotIDs      []int         `json:"snapshot_ids,omitempty"`
	Features         []string      `json:"features,omitempty"`
	Locked           bool          `json:"locked,bool,omitempty"`
	Status           string        `json:"status,omitempty"`
	Networks         *Networks     `json:"networks,omitempty"`
	Created          string        `json:"created_at,omitempty"`
	Kernel           *Kernel       `json:"kernel,omitempty"`
	Tags             []string      `json:"tags,omitempty"`
	VolumeIDs        []string      `json:"volume_ids"`
	VPCUUID          string        `json:"vpc_uuid,omitempty"`
}
*/
func (d *Droplet) Show() {
	if ! d.Exists() {return}
	log.Info("droplet:", d.name.Name)
	log.Info("droplet:", d.poll.ID, d.poll.Name, d.poll.Memory, d.poll.Disk, d.poll.Status)
	log.Spew(d.poll)
}

func (d *Droplet) Hide() {
	if ! d.Exists() {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}
	if d == nil {return false}
	if d.poll == nil {return false}
	return d.ready
}