Compare commits
1 Commits
Author | SHA1 | Date |
---|---|---|
|
60bb69e524 |
6
Makefile
6
Makefile
|
@ -1,14 +1,10 @@
|
||||||
# git remote add github git@github.com:wit-go/digitalocean.git
|
# git remote add github git@github.com:wit-go/digitalocean.git
|
||||||
|
|
||||||
all: vet
|
all:
|
||||||
@echo
|
@echo
|
||||||
@echo a work in progress digital ocean control panel
|
@echo a work in progress digital ocean control panel
|
||||||
@echo
|
@echo
|
||||||
|
|
||||||
vet:
|
|
||||||
@GO111MODULE=off go vet
|
|
||||||
@echo go vet: this go library package builds okay
|
|
||||||
|
|
||||||
goimports:
|
goimports:
|
||||||
goimports -w *.go
|
goimports -w *.go
|
||||||
|
|
||||||
|
|
10
args.go
10
args.go
|
@ -4,8 +4,12 @@ package digitalocean
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"go.wit.com/dev/alexflint/arg"
|
"go.wit.com/dev/alexflint/arg"
|
||||||
|
"go.wit.com/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var NOW *log.LogFlag
|
||||||
|
var INFO *log.LogFlag
|
||||||
|
var POLL *log.LogFlag
|
||||||
var argDo ArgsDo
|
var argDo ArgsDo
|
||||||
|
|
||||||
// This struct can be used with the go-arg package
|
// This struct can be used with the go-arg package
|
||||||
|
@ -15,4 +19,10 @@ type ArgsDo struct {
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
arg.Register(&argDo)
|
arg.Register(&argDo)
|
||||||
|
full := "go.wit.com/lib/gui/digitalocean"
|
||||||
|
short := "DOgui"
|
||||||
|
|
||||||
|
NOW = log.NewFlag("NOW", true, full, short, "temp debugging stuff")
|
||||||
|
INFO = log.NewFlag("INFO", false, full, short, "normal debugging stuff")
|
||||||
|
INFO = log.NewFlag("POLL", false, full, short, "show droplet status polling")
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,7 +59,7 @@ func (d *DigitalOcean) Create(name string, region string, size string, image str
|
||||||
|
|
||||||
// createDroplet creates a new droplet in the specified region with the given name.
|
// createDroplet creates a new droplet in the specified region with the given name.
|
||||||
func (d *DigitalOcean) createDropletNew(name, region, size, image string) (*godo.Droplet, error) {
|
func (d *DigitalOcean) createDropletNew(name, region, size, image string) (*godo.Droplet, error) {
|
||||||
log.Printf("digitalocean.createDropletNew() START name = %s", name)
|
log.Infof("digitalocean.createDropletNew() START name =", name)
|
||||||
// Create an OAuth2 token.
|
// Create an OAuth2 token.
|
||||||
tokenSource := oauth2.StaticTokenSource(&oauth2.Token{AccessToken: d.token})
|
tokenSource := oauth2.StaticTokenSource(&oauth2.Token{AccessToken: d.token})
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@ func (d *DigitalOcean) createDropletNew(name, region, size, image string) (*godo
|
||||||
ctx := context.TODO()
|
ctx := context.TODO()
|
||||||
log.Info("digitalocean.createDropletNew() about to do client.Create(). ctx =", ctx)
|
log.Info("digitalocean.createDropletNew() about to do client.Create(). ctx =", ctx)
|
||||||
newDroplet, _, err := client.Droplets.Create(ctx, createRequest)
|
newDroplet, _, err := client.Droplets.Create(ctx, createRequest)
|
||||||
log.Infof("digitalocean.createDropletNew() END newDroplet = %s", newDroplet)
|
log.Infof("digitalocean.createDropletNew() END newDroplet =", newDroplet)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -141,7 +141,7 @@ func InitCreateWindow() *windowCreate {
|
||||||
log.Info("Available Regions:")
|
log.Info("Available Regions:")
|
||||||
for i, region := range regions {
|
for i, region := range regions {
|
||||||
log.Infof("i: %d, Slug: %s, Name: %s, Available: %v\n", i, region.Slug, region.Name, region.Available)
|
log.Infof("i: %d, Slug: %s, Name: %s, Available: %v\n", i, region.Slug, region.Name, region.Available)
|
||||||
log.Printf("%d %+v\n", i, region)
|
log.Spew(i, region)
|
||||||
if len(region.Sizes) == 0 {
|
if len(region.Sizes) == 0 {
|
||||||
log.Info("Skipping region. No available sizes region =", region.Name)
|
log.Info("Skipping region. No available sizes region =", region.Name)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -169,7 +169,7 @@ func (d *Droplet) Update(dpoll *godo.Droplet) {
|
||||||
}
|
}
|
||||||
d.poll = dpoll
|
d.poll = dpoll
|
||||||
log.Log(POLL, "droplet", dpoll.Name, "dpoll.Status =", dpoll.Status)
|
log.Log(POLL, "droplet", dpoll.Name, "dpoll.Status =", dpoll.Status)
|
||||||
log.Printf("%+v\n", dpoll)
|
log.Spew(dpoll)
|
||||||
d.statusN.SetText(dpoll.Status)
|
d.statusN.SetText(dpoll.Status)
|
||||||
if d.Active() {
|
if d.Active() {
|
||||||
d.poweron.Disable()
|
d.poweron.Disable()
|
||||||
|
@ -245,7 +245,7 @@ func (d *Droplet) Show() {
|
||||||
log.Info("droplet: Image =", d.GetImage())
|
log.Info("droplet: Image =", d.GetImage())
|
||||||
log.Info("droplet: Status =", d.GetStatus())
|
log.Info("droplet: Status =", d.GetStatus())
|
||||||
log.Info("droplet: ", d.poll.Name, d.poll.Image.Slug, d.poll.Region.Slug)
|
log.Info("droplet: ", d.poll.Name, d.poll.Image.Slug, d.poll.Region.Slug)
|
||||||
log.Printf("%+v\n", d.poll)
|
log.Spew(d.poll)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Droplet) Hide() {
|
func (d *Droplet) Hide() {
|
||||||
|
|
20
flags.go
20
flags.go
|
@ -1,20 +0,0 @@
|
||||||
package digitalocean
|
|
||||||
|
|
||||||
// initializes logging and command line options
|
|
||||||
|
|
||||||
import (
|
|
||||||
"go.wit.com/log"
|
|
||||||
)
|
|
||||||
|
|
||||||
var NOW *log.LogFlag
|
|
||||||
var INFO *log.LogFlag
|
|
||||||
var POLL *log.LogFlag
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
full := "go.wit.com/lib/gui/digitalocean"
|
|
||||||
short := "DOgui"
|
|
||||||
|
|
||||||
NOW = log.NewFlag("NOW", true, full, short, "temp debugging stuff")
|
|
||||||
INFO = log.NewFlag("INFO", false, full, short, "normal debugging stuff")
|
|
||||||
POLL = log.NewFlag("POLL", false, full, short, "show droplet status polling")
|
|
||||||
}
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
module go.wit.com/lib/gui/digitalocean
|
||||||
|
|
||||||
|
go 1.21.4
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/digitalocean/godo v1.108.0
|
||||||
|
go.wit.com/dev/alexflint/arg v1.4.5
|
||||||
|
go.wit.com/gui v0.19.1
|
||||||
|
go.wit.com/lib/gadgets v0.19.1
|
||||||
|
go.wit.com/log v0.19.1
|
||||||
|
golang.org/x/oauth2 v0.16.0
|
||||||
|
)
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/golang/protobuf v1.5.3 // indirect
|
||||||
|
github.com/google/go-querystring v1.1.0 // indirect
|
||||||
|
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
|
||||||
|
github.com/hashicorp/go-retryablehttp v0.7.4 // indirect
|
||||||
|
go.wit.com/dev/alexflint/scalar v1.2.1 // indirect
|
||||||
|
go.wit.com/dev/davecgh/spew v1.1.4 // indirect
|
||||||
|
go.wit.com/widget v1.1.14 // indirect
|
||||||
|
golang.org/x/net v0.20.0 // indirect
|
||||||
|
golang.org/x/time v0.0.0-20220922220347-f3bd1da661af // indirect
|
||||||
|
google.golang.org/appengine v1.6.7 // indirect
|
||||||
|
google.golang.org/protobuf v1.31.0 // indirect
|
||||||
|
)
|
|
@ -0,0 +1,60 @@
|
||||||
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/digitalocean/godo v1.108.0 h1:fWyMENvtxpCpva1UbKzOFnyAS04N1FNuBWWfPeTGquQ=
|
||||||
|
github.com/digitalocean/godo v1.108.0/go.mod h1:R6EmmWI8CT1+fCtjWY9UCB+L5uufuZH13wk3YhxycCs=
|
||||||
|
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
|
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||||
|
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
|
||||||
|
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||||
|
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
||||||
|
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
|
github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
|
||||||
|
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
|
||||||
|
github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
|
||||||
|
github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
|
||||||
|
github.com/hashicorp/go-hclog v0.9.2 h1:CG6TE5H9/JXsFWJCfoIVpKFIkFe6ysEuHirp4DxCsHI=
|
||||||
|
github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
|
||||||
|
github.com/hashicorp/go-retryablehttp v0.7.4 h1:ZQgVdpTdAL7WpMIwLzCfbalOcSUdkDZnpUv3/+BxzFA=
|
||||||
|
github.com/hashicorp/go-retryablehttp v0.7.4/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||||
|
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
||||||
|
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||||
|
go.wit.com/dev/alexflint/arg v1.4.5 h1:asDx5f9IlfpknKjPBqqb2qndE91Pbo7ZDkWUgddfMhY=
|
||||||
|
go.wit.com/dev/alexflint/arg v1.4.5/go.mod h1:wnWc+c6z8kSdDKYriMf6RpM+FiXmo5RYp/t4FNi0MU0=
|
||||||
|
go.wit.com/dev/alexflint/scalar v1.2.1 h1:loXOcbVnd+8YeJRLey+XXidecBiedMDO00zQ26TvKNs=
|
||||||
|
go.wit.com/dev/alexflint/scalar v1.2.1/go.mod h1:+rYsfxqdI2cwA8kJ7GCMwWbNJvfvWUurOCXLiwdTtSs=
|
||||||
|
go.wit.com/dev/davecgh/spew v1.1.4 h1:C9hj/rjlUpdK+E6aroyLjCbS5MFcyNUOuP1ICLWdNek=
|
||||||
|
go.wit.com/dev/davecgh/spew v1.1.4/go.mod h1:sihvWmnQ/09FWplnEmozt90CCVqBtGuPXM811tgfhFA=
|
||||||
|
go.wit.com/gui v0.19.1 h1:xk6fEXfDV0sLEOfDVPb8hZ6oRZ4tss4rEcE72mXnU6M=
|
||||||
|
go.wit.com/gui v0.19.1/go.mod h1:CyMtcxVD2NTgaOdSnTKweBuGl5JdbokunMJLDATfQiw=
|
||||||
|
go.wit.com/lib/gadgets v0.19.1 h1:5DHN6WHz67DLCzODgDJTz1VaUkgc8kfmvs+1Un675bg=
|
||||||
|
go.wit.com/lib/gadgets v0.19.1/go.mod h1:qB5sl+HQp1w8jMRh6AcjL91Qrv8vhfgAaBxZepoKoD0=
|
||||||
|
go.wit.com/log v0.19.1 h1:VRgY3GLx6XG5ttj2yAvDvRzzsyXIcCu/c3p1SP2WSZI=
|
||||||
|
go.wit.com/log v0.19.1/go.mod h1:BaJBfHFqcJSJLXGQ9RHi3XVhPgsStxSMZRlaRxW4kAo=
|
||||||
|
go.wit.com/widget v1.1.14 h1:WD4JKWMUFmlB/OQ01/HVKa92f5nHe9zIO9wVMDpmqLk=
|
||||||
|
go.wit.com/widget v1.1.14/go.mod h1:I8tnD3x3ECbB/CRNnLCdC+uoyk7rK0AEkzK1bQYSqoQ=
|
||||||
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
|
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
||||||
|
golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo=
|
||||||
|
golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
|
||||||
|
golang.org/x/oauth2 v0.16.0 h1:aDkGMBSYxElaoP81NpoUoz2oo2R2wHdZpGToUxfyQrQ=
|
||||||
|
golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o=
|
||||||
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||||
|
golang.org/x/time v0.0.0-20220922220347-f3bd1da661af h1:Yx9k8YCG3dvF87UAn2tu2HQLf2dt/eR1bXxpLMWeH+Y=
|
||||||
|
golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
|
||||||
|
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||||
|
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||||
|
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||||
|
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
|
||||||
|
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
16
new.go
16
new.go
|
@ -48,7 +48,9 @@ func (d *DigitalOcean) Show() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
log.Info("digitalocean.Show() window")
|
log.Info("digitalocean.Show() window")
|
||||||
|
if d.hidden {
|
||||||
d.window.Show()
|
d.window.Show()
|
||||||
|
}
|
||||||
d.hidden = false
|
d.hidden = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,22 +59,12 @@ func (d *DigitalOcean) Hide() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
log.Info("digitalocean.Hide() window")
|
log.Info("digitalocean.Hide() window")
|
||||||
|
if !d.hidden {
|
||||||
d.window.Hide()
|
d.window.Hide()
|
||||||
|
}
|
||||||
d.hidden = true
|
d.hidden = true
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *DigitalOcean) Toggle() {
|
|
||||||
if !d.Ready() {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
log.Info("digitalocean.Hide() window")
|
|
||||||
if d.hidden {
|
|
||||||
d.Show()
|
|
||||||
} else {
|
|
||||||
d.Hide()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (d *DigitalOcean) Update() bool {
|
func (d *DigitalOcean) Update() bool {
|
||||||
if !d.Ready() {
|
if !d.Ready() {
|
||||||
return false
|
return false
|
||||||
|
|
Loading…
Reference in New Issue