![]() * Bump godo version. * Initial support for app service spec. * Update godo * Add support for static sites. * Refactor to share appSpecComponentBase * Add support for workers. * Fix expandAppDomainSpec * Add database support. * Add first set of acceptance tests. * Add test excercising envs. * Add worker test. * Add import test. * Add sweeper. * Add App data source. * Add documentation for the resource. * Add data source docs. * Update health_check attributes. * Use basic plan in acceptance tests. * Test upgrading an app from basic to professional. * Update waitForAppDeployment method. * Fix env docs. * Update digitalocean/datasource_digitalocean_app_test.go Co-authored-by: Cesar Garza <scotch.neat@live.com> * Simplify expand methods. * Fix typo in sweeper log message. Co-authored-by: Cesar Garza <scotch.neat@live.com> |
||
---|---|---|
.. | ||
.gitignore | ||
.whitesource | ||
1-click.go | ||
CHANGELOG.md | ||
CONTRIBUTING.md | ||
LICENSE.txt | ||
README.md | ||
account.go | ||
action.go | ||
apps.gen.go | ||
apps.go | ||
balance.go | ||
billing_history.go | ||
cdn.go | ||
certificates.go | ||
databases.go | ||
doc.go | ||
domains.go | ||
droplet_actions.go | ||
droplets.go | ||
errors.go | ||
firewalls.go | ||
floating_ips.go | ||
floating_ips_actions.go | ||
go.mod | ||
go.sum | ||
godo.go | ||
image_actions.go | ||
images.go | ||
invoices.go | ||
keys.go | ||
kubernetes.go | ||
links.go | ||
load_balancers.go | ||
meta.go | ||
projects.go | ||
regions.go | ||
registry.go | ||
sizes.go | ||
snapshots.go | ||
storage.go | ||
storage_actions.go | ||
strings.go | ||
tags.go | ||
timestamp.go | ||
vpcs.go |
README.md
Godo
Godo is a Go client library for accessing the DigitalOcean V2 API.
You can view the client API docs here: http://godoc.org/github.com/digitalocean/godo
You can view DigitalOcean API docs here: https://developers.digitalocean.com/documentation/v2/
Install
go get github.com/digitalocean/godo@vX.Y.Z
where X.Y.Z is the version you need.
or
go get github.com/digitalocean/godo
for non Go modules usage or latest version.
Usage
import "github.com/digitalocean/godo"
Create a new DigitalOcean client, then use the exposed services to access different parts of the DigitalOcean API.
Authentication
Currently, Personal Access Token (PAT) is the only method of authenticating with the API. You can manage your tokens at the DigitalOcean Control Panel Applications Page.
You can then use your token to create a new client:
package main
import (
"github.com/digitalocean/godo"
)
func main() {
client := godo.NewFromToken("my-digitalocean-api-token")
}
If you need to provide a context.Context
to your new client, you should use godo.NewClient
to manually construct a client instead.
Examples
To create a new Droplet:
dropletName := "super-cool-droplet"
createRequest := &godo.DropletCreateRequest{
Name: dropletName,
Region: "nyc3",
Size: "s-1vcpu-1gb",
Image: godo.DropletCreateImage{
Slug: "ubuntu-14-04-x64",
},
}
ctx := context.TODO()
newDroplet, _, err := client.Droplets.Create(ctx, createRequest)
if err != nil {
fmt.Printf("Something bad happened: %s\n\n", err)
return err
}
Pagination
If a list of items is paginated by the API, you must request pages individually. For example, to fetch all Droplets:
func DropletList(ctx context.Context, client *godo.Client) ([]godo.Droplet, error) {
// create a list to hold our droplets
list := []godo.Droplet{}
// create options. initially, these will be blank
opt := &godo.ListOptions{}
for {
droplets, resp, err := client.Droplets.List(ctx, opt)
if err != nil {
return nil, err
}
// append the current page's droplets to our list
list = append(list, droplets...)
// if we are at the last page, break out the for loop
if resp.Links == nil || resp.Links.IsLastPage() {
break
}
page, err := resp.Links.CurrentPage()
if err != nil {
return nil, err
}
// set the page we want for the next request
opt.Page = page + 1
}
return list, nil
}
Versioning
Each version of the client is tagged and the version is updated accordingly.
To see the list of past versions, run git tag
.
Documentation
For a comprehensive list of examples, check out the API documentation.
For details on all the functionality in this library, see the GoDoc documentation.
Contributing
We love pull requests! Please see the contribution guidelines.