diff options
| author | Jeff Carr <[email protected]> | 2024-01-01 15:33:08 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2024-01-01 15:33:08 -0600 |
| commit | f03f76bc082a245f852dcd0cc52fef9ff48cdc93 (patch) | |
| tree | 5e63087bc7cd1fe22743a4b60d120121ce0f7886 /poweron.go | |
initial commit
Diffstat (limited to 'poweron.go')
| -rw-r--r-- | poweron.go | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/poweron.go b/poweron.go new file mode 100644 index 0000000..51f8a24 --- /dev/null +++ b/poweron.go @@ -0,0 +1,82 @@ +package digitalocean + +import ( + "context" + + "golang.org/x/oauth2" + + "github.com/digitalocean/godo" + + "go.wit.com/log" +) + +func (d *DigitalOcean) PowerOn(dropletID int) error { + tokenSource := oauth2.StaticTokenSource(&oauth2.Token{AccessToken: d.token}) + oauthClient := oauth2.NewClient(context.Background(), tokenSource) + client := godo.NewClient(oauthClient) + + ctx := context.TODO() + + // Create a request to power on the droplet. + _, _, err := client.DropletActions.PowerOn(ctx, dropletID) + if err != nil { + return err + } + + log.Printf("Power-on signal sent to droplet with ID: %d\n", dropletID) + return nil +} + +func (d *DigitalOcean) PowerOff(dropletID int) error { + tokenSource := oauth2.StaticTokenSource(&oauth2.Token{AccessToken: d.token}) + oauthClient := oauth2.NewClient(context.Background(), tokenSource) + client := godo.NewClient(oauthClient) + + ctx := context.TODO() + + // Create a request to power on the droplet. + _, _, err := client.DropletActions.PowerOff(ctx, dropletID) + if err != nil { + return err + } + + log.Printf("Power-off signal sent to droplet with ID: %d\n", dropletID) + return nil +} + +/* +func (d *DigitalOcean) Destroy(dropletID int) error { + tokenSource := oauth2.StaticTokenSource(&oauth2.Token{AccessToken: d.token}) + oauthClient := oauth2.NewClient(context.Background(), tokenSource) + client := godo.NewClient(oauthClient) + + ctx := context.TODO() + + // Create a request to power on the droplet. + _, _, err := client.DropletActions.Delete(ctx, dropletID) + if err != nil { + return err + } + + log.Printf("Destroy sent to droplet with ID: %d\n", dropletID) + return nil +} +*/ + +// createDroplet creates a new droplet in the specified region with the given name. +func (d *DigitalOcean) deleteDroplet(drop *Droplet) error { + // Create an OAuth2 token. + tokenSource := oauth2.StaticTokenSource(&oauth2.Token{AccessToken: d.token}) + + // Create an OAuth2 client. + oauthClient := oauth2.NewClient(context.Background(), tokenSource) + + // Create a DigitalOcean client with the OAuth2 client. + client := godo.NewClient(oauthClient) + + ctx := context.TODO() + log.Warn("deleteDroplet() going to delete ID =", drop.ID, "Name =", drop.GetName()) + response, err := client.Droplets.Delete(ctx, drop.ID) + log.Warn(response) + return err +} |
