summaryrefslogtreecommitdiff
path: root/digitalocean/create.go
diff options
context:
space:
mode:
Diffstat (limited to 'digitalocean/create.go')
-rw-r--r--digitalocean/create.go48
1 files changed, 35 insertions, 13 deletions
diff --git a/digitalocean/create.go b/digitalocean/create.go
index a64ba90..b931ecf 100644
--- a/digitalocean/create.go
+++ b/digitalocean/create.go
@@ -45,12 +45,11 @@ func createDroplet(token, name, region, size, image string) (*godo.Droplet, erro
}
*/
-func (d *DigitalOcean) Create(name string, region string) {
+func (d *DigitalOcean) Create(name string, region string, size string) {
// region := "nyc1" // New York City region.
- size := "s-1vcpu-1gb" // Size of the droplet.
+ // size := "s-1vcpu-1gb" // Size of the droplet.
image := "ubuntu-20-04-x64" // Image slug for Ubuntu 20.04 (LTS) x64.
- return
// Create a new droplet.
droplet, err := d.createDropletNew(name, region, size, image)
if err != nil {
@@ -115,7 +114,10 @@ var myCreate *windowCreate
// You can only have one of these
func InitCreateWindow() *windowCreate {
if ! myDo.Ready() {return nil}
- if myCreate != nil {return myCreate}
+ if myCreate != nil {
+ myCreate.Show()
+ return myCreate
+ }
myCreate = new(windowCreate)
myCreate.ready = false
@@ -127,8 +129,7 @@ func InitCreateWindow() *windowCreate {
myCreate.name = gadgets.NewBasicEntry(myCreate.grid, "Name").Set("test.wit.com")
-
- myCreate.zone = gadgets.NewBasicDropdown(myCreate.grid, "Region")
+ myCreate.region = gadgets.NewBasicDropdown(myCreate.grid, "Region")
regions := myDo.listRegions()
@@ -137,26 +138,47 @@ func InitCreateWindow() *windowCreate {
for i, region := range regions {
log.Infof("i: %d, Slug: %s, Name: %s, Available: %v\n", i, region.Slug, region.Name, region.Available)
log.Spew(i, region)
- myCreate.zone.Add(region.Name)
+ if len(region.Sizes) == 0 {
+ log.Info("Skipping region. No available sizes region =", region.Name)
+ } else {
+ myCreate.region.Add(region.Name)
+ }
}
var zone godo.Region
- myCreate.zone.Custom = func() {
- s := myCreate.zone.Get()
+ myCreate.region.Custom = func() {
+ s := myCreate.region.Get()
log.Info("create droplet region changed to:", s)
for _, region := range regions {
if s == region.Name {
log.Info("Found region! slug =", region.Slug, region)
zone = region
+ log.Info("Found region! Now update all the sizes count =", len(region.Sizes))
+ for _, size := range region.Sizes {
+ log.Info("Size: ", size)
+ }
}
}
}
- myCreate.grid.NewLabel("makes a new droplet")
- myCreate.grid.NewButton("Create", func () {
+ myCreate.size = gadgets.NewBasicDropdown(myCreate.grid, "Size")
+ myCreate.size.Add("s-1vcpu-1gb")
+ myCreate.size.Add("s-1vcpu-1gb-amd")
+ myCreate.size.Add("s-1vcpu-1gb-intel")
+
+ myCreate.group.NewLabel("Create Droplet")
+
+ // box := myCreate.group.NewBox("vBox", false).Pad()
+ box := myCreate.group.NewBox("hBox", true).Pad()
+ box.NewButton("Cancel", func () {
+ myCreate.Hide()
+ })
+ box.NewButton("Create", func () {
name := myCreate.name.Get()
- log.Info("create droplet name =", name, "zone =", zone.Slug)
- myDo.Create(name, zone.Slug)
+ size := myCreate.size.Get()
+ log.Info("create droplet name =", name, "region =", zone.Slug, "size =", size)
+ myDo.Create(name, zone.Slug, size)
+ myCreate.Hide()
})
myCreate.ready = true