godo

package module
v1.14.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 14, 2019 License: BSD-3-Clause, MIT Imports: 16 Imported by: 0

README

Build Status

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/

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 (
	"context"
	"github.com/digitalocean/godo"
	"golang.org/x/oauth2"
)

const (
    pat = "mytoken"
)

type TokenSource struct {
	AccessToken string
}

func (t *TokenSource) Token() (*oauth2.Token, error) {
	token := &oauth2.Token{
		AccessToken: t.AccessToken,
	}
	return token, nil
}

func main() {
	tokenSource := &TokenSource{
		AccessToken: pat,
	}

	oauthClient := oauth2.NewClient(context.Background(), tokenSource)
	client := godo.NewClient(oauthClient)
}

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
        for _, d := range droplets {
            list = append(list, d)
        }

        // 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.

Since Go does not have a built-in versioning, a package management tool is recommended - a good one that works with git tags is gopkg.in.

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.

Documentation

Overview

Package godo is the DigtalOcean API v2 client for Go

Databases

The Databases service provides access to the DigitalOcean managed database suite of products. Customers can create new database clusters, migrate them between regions, create replicas and interact with their configurations. Each database service is refered to as a Database. A SQL database service can have multiple databases residing in the system. To help make these entities distinct from Databases in godo, we refer to them here as DatabaseDBs.

Index

Constants

View Source
const (

	// ActionInProgress is an in progress action status
	ActionInProgress = "in-progress"

	//ActionCompleted is a completed action status
	ActionCompleted = "completed"
)
View Source
const (
	KubernetesClusterStatusProvisioning = KubernetesClusterStatusState("provisioning")
	KubernetesClusterStatusRunning      = KubernetesClusterStatusState("running")
	KubernetesClusterStatusDegraded     = KubernetesClusterStatusState("degraded")
	KubernetesClusterStatusError        = KubernetesClusterStatusState("error")
	KubernetesClusterStatusDeleted      = KubernetesClusterStatusState("deleted")
	KubernetesClusterStatusUpgrading    = KubernetesClusterStatusState("upgrading")
	KubernetesClusterStatusInvalid      = KubernetesClusterStatusState("invalid")
)

Possible states for a cluster.

View Source
const (
	// DefaultProject is the ID you should use if you are working with your
	// default project.
	DefaultProject = "default"
)

Variables

This section is empty.

Functions

func Bool

func Bool(v bool) *bool

Bool is a helper routine that allocates a new bool value to store v and returns a pointer to it.

func CheckResponse

func CheckResponse(r *http.Response) error

CheckResponse checks the API response for errors, and returns them if present. A response is considered an error if it has a status code outside the 200 range. API error responses are expected to have either no response body, or a JSON response body that maps to ErrorResponse. Any other response body will be silently ignored.

func DoRequest added in v1.2.0

func DoRequest(ctx context.Context, req *http.Request) (*http.Response, error)

DoRequest submits an HTTP request.

func DoRequestWithClient added in v1.2.0

func DoRequestWithClient(
	ctx context.Context,
	client *http.Client,
	req *http.Request) (*http.Response, error)

DoRequestWithClient submits an HTTP request using the specified client.

func Int

func Int(v int) *int

Int is a helper routine that allocates a new int32 value to store v and returns a pointer to it, but unlike Int32 its argument value is an int.

func StreamToString

func StreamToString(stream io.Reader) string

StreamToString converts a reader to a string

func String

func String(v string) *string

String is a helper routine that allocates a new string value to store v and returns a pointer to it.

func Stringify

func Stringify(message interface{}) string

Stringify attempts to create a string representation of DigitalOcean types

func ToURN added in v1.6.0

func ToURN(resourceType string, id interface{}) string

ToURN converts the resource type and ID to a valid DO API URN.

Types

type Account added in v0.9.0

type Account struct {
	DropletLimit    int    `json:"droplet_limit,omitempty"`
	FloatingIPLimit int    `json:"floating_ip_limit,omitempty"`
	VolumeLimit     int    `json:"volume_limit,omitempty"`
	Email           string `json:"email,omitempty"`
	UUID            string `json:"uuid,omitempty"`
	EmailVerified   bool   `json:"email_verified,omitempty"`
	Status          string `json:"status,omitempty"`
	StatusMessage   string `json:"status_message,omitempty"`
}

Account represents a DigitalOcean Account

func (Account) String added in v0.9.0

func (r Account) String() string

type AccountService added in v0.9.0

type AccountService interface {
	Get(context.Context) (*Account, *Response, error)
}

AccountService is an interface for interfacing with the Account endpoints of the DigitalOcean API See: https://developers.digitalocean.com/documentation/v2/#account

type AccountServiceOp added in v0.9.0

type AccountServiceOp struct {
	// contains filtered or unexported fields
}

AccountServiceOp handles communication with the Account related methods of the DigitalOcean API.

func (*AccountServiceOp) Get added in v0.9.0

Get DigitalOcean account info

type Action

type Action struct {
	ID           int        `json:"id"`
	Status       string     `json:"status"`
	Type         string     `json:"type"`
	StartedAt    *Timestamp `json:"started_at"`
	CompletedAt  *Timestamp `json:"completed_at"`
	ResourceID   int        `json:"resource_id"`
	ResourceType string     `json:"resource_type"`
	Region       *Region    `json:"region,omitempty"`
	RegionSlug   string     `json:"region_slug,omitempty"`
}

Action represents a DigitalOcean Action

func (Action) String

func (a Action) String() string

type ActionRequest

type ActionRequest map[string]interface{}

ActionRequest reprents DigitalOcean Action Request

type ActionsService

type ActionsService interface {
	List(context.Context, *ListOptions) ([]Action, *Response, error)
	Get(context.Context, int) (*Action, *Response, error)
}

ActionsService handles communction with action related methods of the DigitalOcean API: https://developers.digitalocean.com/documentation/v2#actions

type ActionsServiceOp added in v0.3.0

type ActionsServiceOp struct {
	// contains filtered or unexported fields
}

ActionsServiceOp handles communition with the image action related methods of the DigitalOcean API.

func (*ActionsServiceOp) Get added in v0.3.0

func (s *ActionsServiceOp) Get(ctx context.Context, id int) (*Action, *Response, error)

Get an action by ID.

func (*ActionsServiceOp) List added in v0.3.0

func (s *ActionsServiceOp) List(ctx context.Context, opt *ListOptions) ([]Action, *Response, error)

List all actions

type ArgError added in v0.9.0

type ArgError struct {
	// contains filtered or unexported fields
}

ArgError is an error that represents an error with an input to godo. It identifies the argument and the cause (if possible).

func NewArgError added in v0.9.0

func NewArgError(arg, reason string) *ArgError

NewArgError creates an InputError.

func (*ArgError) Error added in v0.9.0

func (e *ArgError) Error() string

type BackupWindow added in v1.0.0

type BackupWindow struct {
	Start *Timestamp `json:"start,omitempty"`
	End   *Timestamp `json:"end,omitempty"`
}

BackupWindow object

type CDN added in v1.4.0

type CDN struct {
	ID            string    `json:"id"`
	Origin        string    `json:"origin"`
	Endpoint      string    `json:"endpoint"`
	CreatedAt     time.Time `json:"created_at"`
	TTL           uint32    `json:"ttl"`
	CertificateID string    `json:"certificate_id,omitempty"`
	CustomDomain  string    `json:"custom_domain,omitempty"`
}

CDN represents a DigitalOcean CDN

type CDNCreateRequest added in v1.4.0

type CDNCreateRequest struct {
	Origin        string `json:"origin"`
	TTL           uint32 `json:"ttl"`
	CustomDomain  string `json:"custom_domain,omitempty"`
	CertificateID string `json:"certificate_id,omitempty"`
}

CDNCreateRequest represents a request to create a CDN.

type CDNFlushCacheRequest added in v1.4.0

type CDNFlushCacheRequest struct {
	Files []string `json:"files"`
}

CDNFlushCacheRequest represents a request to flush cache of a CDN.

type CDNService added in v1.4.0

CDNService is an interface for managing Spaces CDN with the DigitalOcean API.

type CDNServiceOp added in v1.4.0

type CDNServiceOp struct {
	// contains filtered or unexported fields
}

CDNServiceOp handles communication with the CDN related methods of the DigitalOcean API.

func (CDNServiceOp) Create added in v1.4.0

func (c CDNServiceOp) Create(ctx context.Context, createRequest *CDNCreateRequest) (*CDN, *Response, error)

Create a new CDN

func (CDNServiceOp) Delete added in v1.4.0

func (c CDNServiceOp) Delete(ctx context.Context, id string) (*Response, error)

Delete an individual CDN

func (CDNServiceOp) FlushCache added in v1.4.0

func (c CDNServiceOp) FlushCache(ctx context.Context, id string, flushCacheRequest *CDNFlushCacheRequest) (*Response, error)

FlushCache flushes the cache of an individual CDN. Requires a non-empty slice of file paths and/or wildcards

func (CDNServiceOp) Get added in v1.4.0

func (c CDNServiceOp) Get(ctx context.Context, id string) (*CDN, *Response, error)

Get individual CDN. It requires a non-empty cdn id.

func (CDNServiceOp) List added in v1.4.0

func (c CDNServiceOp) List(ctx context.Context, opt *ListOptions) ([]CDN, *Response, error)

List all CDN endpoints

func (CDNServiceOp) UpdateCustomDomain added in v1.7.5

func (c CDNServiceOp) UpdateCustomDomain(ctx context.Context, id string, updateRequest *CDNUpdateCustomDomainRequest) (*CDN, *Response, error)

UpdateCustomDomain sets or removes the custom domain of an individual CDN

func (CDNServiceOp) UpdateTTL added in v1.4.0

func (c CDNServiceOp) UpdateTTL(ctx context.Context, id string, updateRequest *CDNUpdateTTLRequest) (*CDN, *Response, error)

UpdateTTL updates the ttl of an individual CDN

type CDNUpdateCustomDomainRequest added in v1.7.5

type CDNUpdateCustomDomainRequest struct {
	CustomDomain  string `json:"custom_domain"`
	CertificateID string `json:"certificate_id"`
}

CDNUpdateCustomDomainRequest represents a request to update the custom domain of a CDN.

type CDNUpdateTTLRequest added in v1.7.5

type CDNUpdateTTLRequest struct {
	TTL uint32 `json:"ttl"`
}

CDNUpdateTTLRequest represents a request to update the ttl of a CDN.

type Certificate added in v1.0.0

type Certificate struct {
	ID              string   `json:"id,omitempty"`
	Name            string   `json:"name,omitempty"`
	DNSNames        []string `json:"dns_names,omitempty"`
	NotAfter        string   `json:"not_after,omitempty"`
	SHA1Fingerprint string   `json:"sha1_fingerprint,omitempty"`
	Created         string   `json:"created_at,omitempty"`
	State           string   `json:"state,omitempty"`
	Type            string   `json:"type,omitempty"`
}

Certificate represents a DigitalOcean certificate configuration.

type CertificateRequest added in v1.0.0

type CertificateRequest struct {
	Name             string   `json:"name,omitempty"`
	DNSNames         []string `json:"dns_names,omitempty"`
	PrivateKey       string   `json:"private_key,omitempty"`
	LeafCertificate  string   `json:"leaf_certificate,omitempty"`
	CertificateChain string   `json:"certificate_chain,omitempty"`
	Type             string   `json:"type,omitempty"`
}

CertificateRequest represents configuration for a new certificate.

type CertificatesService added in v1.0.0

CertificatesService is an interface for managing certificates with the DigitalOcean API. See: https://developers.digitalocean.com/documentation/v2/#certificates

type CertificatesServiceOp added in v1.0.0

type CertificatesServiceOp struct {
	// contains filtered or unexported fields
}

CertificatesServiceOp handles communication with certificates methods of the DigitalOcean API.

func (*CertificatesServiceOp) Create added in v1.0.0

Create a new certificate with provided configuration.

func (*CertificatesServiceOp) Delete added in v1.0.0

func (c *CertificatesServiceOp) Delete(ctx context.Context, cID string) (*Response, error)

Delete a certificate by its identifier.

func (*CertificatesServiceOp) Get added in v1.0.0

Get an existing certificate by its identifier.

func (*CertificatesServiceOp) List added in v1.0.0

List all certificates.

type Client

type Client struct {

	// Base URL for API requests.
	BaseURL *url.URL

	// User agent for client
	UserAgent string

	// Rate contains the current rate limit for the client as determined by the most recent
	// API call.
	Rate Rate

	// Services used for communicating with the API
	Account           AccountService
	Actions           ActionsService
	CDNs              CDNService
	Domains           DomainsService
	Droplets          DropletsService
	DropletActions    DropletActionsService
	Images            ImagesService
	ImageActions      ImageActionsService
	Keys              KeysService
	Regions           RegionsService
	Sizes             SizesService
	FloatingIPs       FloatingIPsService
	FloatingIPActions FloatingIPActionsService
	Snapshots         SnapshotsService
	Storage           StorageService
	StorageActions    StorageActionsService
	Tags              TagsService
	LoadBalancers     LoadBalancersService
	Certificates      CertificatesService
	Firewalls         FirewallsService
	Projects          ProjectsService
	Kubernetes        KubernetesService
	Databases         DatabasesService
	VPCs              VPCsService
	// contains filtered or unexported fields
}

Client manages communication with DigitalOcean V2 API.

func New added in v1.0.0

func New(httpClient *http.Client, opts ...ClientOpt) (*Client, error)

New returns a new DIgitalOcean API client instance.

func NewClient

func NewClient(httpClient *http.Client) *Client

NewClient returns a new DigitalOcean API client.

func (*Client) Do

func (c *Client) Do(ctx context.Context, req *http.Request, v interface{}) (*Response, error)

Do sends an API request and returns the API response. The API response is JSON decoded and stored in the value pointed to by v, or returned as an error if an API error has occurred. If v implements the io.Writer interface, the raw response will be written to v, without attempting to decode it.

func (*Client) NewRequest

func (c *Client) NewRequest(ctx context.Context, method, urlStr string, body interface{}) (*http.Request, error)

NewRequest creates an API request. A relative URL can be provided in urlStr, which will be resolved to the BaseURL of the Client. Relative URLS should always be specified without a preceding slash. If specified, the value pointed to by body is JSON encoded and included in as the request body.

func (*Client) OnRequestCompleted added in v0.9.0

func (c *Client) OnRequestCompleted(rc RequestCompletionCallback)

OnRequestCompleted sets the DO API request completion callback

type ClientOpt added in v1.0.0

type ClientOpt func(*Client) error

ClientOpt are options for New.

func SetBaseURL added in v1.0.0

func SetBaseURL(bu string) ClientOpt

SetBaseURL is a client option for setting the base URL.

func SetUserAgent added in v1.0.0

func SetUserAgent(ua string) ClientOpt

SetUserAgent is a client option for setting the user agent.

type CreateProjectRequest added in v1.6.0

type CreateProjectRequest struct {
	Name        string `json:"name"`
	Description string `json:"description"`
	Purpose     string `json:"purpose"`
	Environment string `json:"environment"`
}

CreateProjectRequest represents the request to create a new project.

type CustomImageCreateRequest added in v1.7.1

type CustomImageCreateRequest struct {
	Name         string   `json:"name"`
	Url          string   `json:"url"`
	Region       string   `json:"region"`
	Distribution string   `json:"distribution,omitempty"`
	Description  string   `json:"description,omitempty"`
	Tags         []string `json:"tags,omitempty"`
}

CustomImageCreateRequest represents a request to create a custom image.

type Database added in v1.10.0

type Database struct {
	ID                string                     `json:"id,omitempty"`
	Name              string                     `json:"name,omitempty"`
	EngineSlug        string                     `json:"engine,omitempty"`
	VersionSlug       string                     `json:"version,omitempty"`
	Connection        *DatabaseConnection        `json:"connection,omitempty"`
	Users             []DatabaseUser             `json:"users,omitempty"`
	NumNodes          int                        `json:"num_nodes,omitempty"`
	SizeSlug          string                     `json:"size,omitempty"`
	DBNames           []string                   `json:"db_names,omitempty"`
	RegionSlug        string                     `json:"region,omitempty"`
	Status            string                     `json:"status,omitempty"`
	MaintenanceWindow *DatabaseMaintenanceWindow `json:"maintenance_window,omitempty"`
	CreatedAt         time.Time                  `json:"created_at,omitempty"`
}

Database represents a DigitalOcean managed database product. These managed databases are usually comprised of a cluster of database nodes, a primary and 0 or more replicas. The EngineSlug is a string which indicates the type of database service. Some examples are "pg", "mysql" or "redis". A Database also includes connection information and other properties of the service like region, size and current status.

type DatabaseBackup added in v1.10.0

type DatabaseBackup struct {
	CreatedAt     time.Time `json:"created_at,omitempty"`
	SizeGigabytes float64   `json:"size_gigabytes,omitempty"`
}

DatabaseBackup represents a database backup.

type DatabaseConnection added in v1.10.0

type DatabaseConnection struct {
	URI      string `json:"uri,omitempty"`
	Database string `json:"database,omitempty"`
	Host     string `json:"host,omitempty"`
	Port     int    `json:"port,omitempty"`
	User     string `json:"user,omitempty"`
	Password string `json:"password,omitempty"`
	SSL      bool   `json:"ssl,omitempty"`
}

DatabaseConnection represents a database connection

type DatabaseCreateDBRequest added in v1.10.0

type DatabaseCreateDBRequest struct {
	Name string `json:"name"`
}

DatabaseCreateDBRequest is used to create a new engine-specific database within the cluster

type DatabaseCreatePoolRequest added in v1.10.0

type DatabaseCreatePoolRequest struct {
	User     string `json:"user"`
	Name     string `json:"name"`
	Size     int    `json:"size"`
	Database string `json:"db"`
	Mode     string `json:"mode"`
}

DatabaseCreatePoolRequest is used to create a new database connection pool

type DatabaseCreateReplicaRequest added in v1.10.0

type DatabaseCreateReplicaRequest struct {
	Name   string `json:"name"`
	Region string `json:"region"`
	Size   string `json:"size"`
}

DatabaseCreateReplicaRequest is used to create a new read-only replica

type DatabaseCreateRequest added in v1.10.0

type DatabaseCreateRequest struct {
	Name       string `json:"name,omitempty"`
	EngineSlug string `json:"engine,omitempty"`
	Version    string `json:"version,omitempty"`
	SizeSlug   string `json:"size,omitempty"`
	Region     string `json:"region,omitempty"`
	NumNodes   int    `json:"num_nodes,omitempty"`
}

DatabaseCreateRequest represents a request to create a database cluster

type DatabaseCreateUserRequest added in v1.10.0

type DatabaseCreateUserRequest struct {
	Name string `json:"name"`
}

DatabaseCreateUserRequest is used to create a new database user

type DatabaseDB added in v1.10.0

type DatabaseDB struct {
	Name string `json:"name"`
}

DatabaseDB represents an engine-specific database created within a database cluster. For SQL databases like PostgreSQL or MySQL, a "DB" refers to a database created on the RDBMS. For instance, a PostgreSQL database server can contain many database schemas, each with it's own settings, access permissions and data. ListDBs will return all databases present on the server.

type DatabaseMaintenanceWindow added in v1.10.0

type DatabaseMaintenanceWindow struct {
	Day         string   `json:"day,omitempty"`
	Hour        string   `json:"hour,omitempty"`
	Pending     bool     `json:"pending,omitempty"`
	Description []string `json:"description,omitempty"`
}

DatabaseMaintenanceWindow represents the maintenance_window of a database cluster

type DatabaseMigrateRequest added in v1.10.0

type DatabaseMigrateRequest struct {
	Region string `json:"region,omitempty"`
}

DatabaseMigrateRequest can be used to initiate a database migrate operation.

type DatabasePool added in v1.10.0

type DatabasePool struct {
	User       string              `json:"user"`
	Name       string              `json:"name"`
	Size       int                 `json:"size"`
	Database   string              `json:"db"`
	Mode       string              `json:"mode"`
	Connection *DatabaseConnection `json:"connection"`
}

DatabasePool represents a database connection pool

type DatabaseReplica added in v1.10.0

type DatabaseReplica struct {
	Name       string              `json:"name"`
	Connection *DatabaseConnection `json:"connection"`
	Region     string              `json:"region"`
	Status     string              `json:"status"`
	CreatedAt  time.Time           `json:"created_at"`
}

DatabaseReplica represents a read-only replica of a particular database

type DatabaseResizeRequest added in v1.10.0

type DatabaseResizeRequest struct {
	SizeSlug string `json:"size,omitempty"`
	NumNodes int    `json:"num_nodes,omitempty"`
}

DatabaseResizeRequest can be used to initiate a database resize operation.

type DatabaseUpdateMaintenanceRequest added in v1.10.0

type DatabaseUpdateMaintenanceRequest struct {
	Day  string `json:"day,omitempty"`
	Hour string `json:"hour,omitempty"`
}

DatabaseUpdateMaintenanceRequest can be used to update the database's maintenance window.

type DatabaseUser added in v1.10.0

type DatabaseUser struct {
	Name     string `json:"name,omitempty"`
	Role     string `json:"role,omitempty"`
	Password string `json:"password,omitempty"`
}

DatabaseUser represents a user in the database

type DatabasesService added in v1.10.0

type DatabasesService interface {
	List(context.Context, *ListOptions) ([]Database, *Response, error)
	Get(context.Context, string) (*Database, *Response, error)
	Create(context.Context, *DatabaseCreateRequest) (*Database, *Response, error)
	Delete(context.Context, string) (*Response, error)
	Resize(context.Context, string, *DatabaseResizeRequest) (*Response, error)
	Migrate(context.Context, string, *DatabaseMigrateRequest) (*Response, error)
	UpdateMaintenance(context.Context, string, *DatabaseUpdateMaintenanceRequest) (*Response, error)
	ListBackups(context.Context, string, *ListOptions) ([]DatabaseBackup, *Response, error)
	GetUser(context.Context, string, string) (*DatabaseUser, *Response, error)
	ListUsers(context.Context, string, *ListOptions) ([]DatabaseUser, *Response, error)
	CreateUser(context.Context, string, *DatabaseCreateUserRequest) (*DatabaseUser, *Response, error)
	DeleteUser(context.Context, string, string) (*Response, error)
	ListDBs(context.Context, string, *ListOptions) ([]DatabaseDB, *Response, error)
	CreateDB(context.Context, string, *DatabaseCreateDBRequest) (*DatabaseDB, *Response, error)
	GetDB(context.Context, string, string) (*DatabaseDB, *Response, error)
	DeleteDB(context.Context, string, string) (*Response, error)
	ListPools(context.Context, string, *ListOptions) ([]DatabasePool, *Response, error)
	CreatePool(context.Context, string, *DatabaseCreatePoolRequest) (*DatabasePool, *Response, error)
	GetPool(context.Context, string, string) (*DatabasePool, *Response, error)
	DeletePool(context.Context, string, string) (*Response, error)
	GetReplica(context.Context, string, string) (*DatabaseReplica, *Response, error)
	ListReplicas(context.Context, string, *ListOptions) ([]DatabaseReplica, *Response, error)
	CreateReplica(context.Context, string, *DatabaseCreateReplicaRequest) (*DatabaseReplica, *Response, error)
	DeleteReplica(context.Context, string, string) (*Response, error)
}

DatabasesService is an interface for interfacing with the databases endpoints of the DigitalOcean API. See: https://developers.digitalocean.com/documentation/v2#databases

type DatabasesServiceOp added in v1.10.0

type DatabasesServiceOp struct {
	// contains filtered or unexported fields
}

DatabasesServiceOp handles communication with the Databases related methods of the DigitalOcean API.

func (*DatabasesServiceOp) Create added in v1.10.0

Create creates a database cluster

func (*DatabasesServiceOp) CreateDB added in v1.10.0

func (svc *DatabasesServiceOp) CreateDB(ctx context.Context, databaseID string, createDB *DatabaseCreateDBRequest) (*DatabaseDB, *Response, error)

CreateDB will create a new database

func (*DatabasesServiceOp) CreatePool added in v1.10.0

func (svc *DatabasesServiceOp) CreatePool(ctx context.Context, databaseID string, createPool *DatabaseCreatePoolRequest) (*DatabasePool, *Response, error)

CreatePool will create a new database connection pool

func (*DatabasesServiceOp) CreateReplica added in v1.10.0

func (svc *DatabasesServiceOp) CreateReplica(ctx context.Context, databaseID string, createReplica *DatabaseCreateReplicaRequest) (*DatabaseReplica, *Response, error)

CreateReplica will create a new database connection pool

func (*DatabasesServiceOp) CreateUser added in v1.10.0

func (svc *DatabasesServiceOp) CreateUser(ctx context.Context, databaseID string, createUser *DatabaseCreateUserRequest) (*DatabaseUser, *Response, error)

CreateUser will create a new database user

func (*DatabasesServiceOp) Delete added in v1.10.0

func (svc *DatabasesServiceOp) Delete(ctx context.Context, databaseID string) (*Response, error)

Delete deletes a database cluster. There is no way to recover a cluster once it has been destroyed.

func (*DatabasesServiceOp) DeleteDB added in v1.10.0

func (svc *DatabasesServiceOp) DeleteDB(ctx context.Context, databaseID, name string) (*Response, error)

DeleteDB will delete an existing database

func (*DatabasesServiceOp) DeletePool added in v1.10.0

func (svc *DatabasesServiceOp) DeletePool(ctx context.Context, databaseID, name string) (*Response, error)

DeletePool will delete an existing database connection pool

func (*DatabasesServiceOp) DeleteReplica added in v1.10.0

func (svc *DatabasesServiceOp) DeleteReplica(ctx context.Context, databaseID, name string) (*Response, error)

DeleteReplica will delete an existing database replica

func (*DatabasesServiceOp) DeleteUser added in v1.10.0

func (svc *DatabasesServiceOp) DeleteUser(ctx context.Context, databaseID, userID string) (*Response, error)

DeleteUser will delete an existing database user

func (*DatabasesServiceOp) Get added in v1.10.0

func (svc *DatabasesServiceOp) Get(ctx context.Context, databaseID string) (*Database, *Response, error)

Get retrieves the details of a database cluster

func (*DatabasesServiceOp) GetDB added in v1.10.0

func (svc *DatabasesServiceOp) GetDB(ctx context.Context, databaseID, name string) (*DatabaseDB, *Response, error)

GetDB returns a single database by name

func (*DatabasesServiceOp) GetPool added in v1.10.0

func (svc *DatabasesServiceOp) GetPool(ctx context.Context, databaseID, name string) (*DatabasePool, *Response, error)

GetPool returns a single database connection pool by name

func (*DatabasesServiceOp) GetReplica added in v1.10.0

func (svc *DatabasesServiceOp) GetReplica(ctx context.Context, databaseID, name string) (*DatabaseReplica, *Response, error)

GetReplica returns a single database replica

func (*DatabasesServiceOp) GetUser added in v1.10.0

func (svc *DatabasesServiceOp) GetUser(ctx context.Context, databaseID, userID string) (*DatabaseUser, *Response, error)

GetUser returns the database user identified by userID

func (*DatabasesServiceOp) List added in v1.10.0

func (svc *DatabasesServiceOp) List(ctx context.Context, opts *ListOptions) ([]Database, *Response, error)

List returns a list of the Databases visible with the caller's API token

func (*DatabasesServiceOp) ListBackups added in v1.10.0

func (svc *DatabasesServiceOp) ListBackups(ctx context.Context, databaseID string, opts *ListOptions) ([]DatabaseBackup, *Response, error)

ListBackups returns a list of the current backups of a database

func (*DatabasesServiceOp) ListDBs added in v1.10.0

func (svc *DatabasesServiceOp) ListDBs(ctx context.Context, databaseID string, opts *ListOptions) ([]DatabaseDB, *Response, error)

ListDBs returns all databases for a given database cluster

func (*DatabasesServiceOp) ListPools added in v1.10.0

func (svc *DatabasesServiceOp) ListPools(ctx context.Context, databaseID string, opts *ListOptions) ([]DatabasePool, *Response, error)

ListPools returns all connection pools for a given database cluster

func (*DatabasesServiceOp) ListReplicas added in v1.10.0

func (svc *DatabasesServiceOp) ListReplicas(ctx context.Context, databaseID string, opts *ListOptions) ([]DatabaseReplica, *Response, error)

ListReplicas returns all read-only replicas for a given database cluster

func (*DatabasesServiceOp) ListUsers added in v1.10.0

func (svc *DatabasesServiceOp) ListUsers(ctx context.Context, databaseID string, opts *ListOptions) ([]DatabaseUser, *Response, error)

ListUsers returns all database users for the database

func (*DatabasesServiceOp) Migrate added in v1.10.0

func (svc *DatabasesServiceOp) Migrate(ctx context.Context, databaseID string, migrate *DatabaseMigrateRequest) (*Response, error)

Migrate migrates a database cluster to a new region

func (*DatabasesServiceOp) Resize added in v1.10.0

func (svc *DatabasesServiceOp) Resize(ctx context.Context, databaseID string, resize *DatabaseResizeRequest) (*Response, error)

Resize resizes a database cluster by number of nodes or size

func (*DatabasesServiceOp) UpdateMaintenance added in v1.10.0

func (svc *DatabasesServiceOp) UpdateMaintenance(ctx context.Context, databaseID string, maintenance *DatabaseUpdateMaintenanceRequest) (*Response, error)

UpdateMaintenance updates the maintenance window on a cluster

type Destinations added in v1.1.0

type Destinations struct {
	Addresses        []string `json:"addresses,omitempty"`
	Tags             []string `json:"tags,omitempty"`
	DropletIDs       []int    `json:"droplet_ids,omitempty"`
	LoadBalancerUIDs []string `json:"load_balancer_uids,omitempty"`
}

Destinations represents a DigitalOcean Firewall OutboundRule destinations.

type Domain added in v0.3.0

type Domain struct {
	Name     string `json:"name"`
	TTL      int    `json:"ttl"`
	ZoneFile string `json:"zone_file"`
}

Domain represents a DigitalOcean domain

func (Domain) String added in v0.3.0

func (d Domain) String() string

func (Domain) URN added in v1.6.0

func (d Domain) URN() string

type DomainCreateRequest added in v0.3.0

type DomainCreateRequest struct {
	Name      string `json:"name"`
	IPAddress string `json:"ip_address,omitempty"`
}

DomainCreateRequest respresents a request to create a domain.

type DomainRecord

type DomainRecord struct {
	ID       int    `json:"id,float64,omitempty"`
	Type     string `json:"type,omitempty"`
	Name     string `json:"name,omitempty"`
	Data     string `json:"data,omitempty"`
	Priority int    `json:"priority"`
	Port     int    `json:"port,omitempty"`
	TTL      int    `json:"ttl,omitempty"`
	Weight   int    `json:"weight"`
	Flags    int    `json:"flags"`
	Tag      string `json:"tag,omitempty"`
}

DomainRecord represents a DigitalOcean DomainRecord

func (DomainRecord) String

func (d DomainRecord) String() string

Converts a DomainRecord to a string.

type DomainRecordEditRequest

type DomainRecordEditRequest struct {
	Type     string `json:"type,omitempty"`
	Name     string `json:"name,omitempty"`
	Data     string `json:"data,omitempty"`
	Priority int    `json:"priority"`
	Port     int    `json:"port,omitempty"`
	TTL      int    `json:"ttl,omitempty"`
	Weight   int    `json:"weight"`
	Flags    int    `json:"flags"`
	Tag      string `json:"tag,omitempty"`
}

DomainRecordEditRequest represents a request to update a domain record.

func (DomainRecordEditRequest) String

func (d DomainRecordEditRequest) String() string

Converts a DomainRecordEditRequest to a string.

type DomainsServiceOp added in v0.3.0

type DomainsServiceOp struct {
	// contains filtered or unexported fields
}

DomainsServiceOp handles communication with the domain related methods of the DigitalOcean API.

func (*DomainsServiceOp) Create added in v0.3.0

func (s *DomainsServiceOp) Create(ctx context.Context, createRequest *DomainCreateRequest) (*Domain, *Response, error)

Create a new domain

func (*DomainsServiceOp) CreateRecord added in v0.3.0

func (s *DomainsServiceOp) CreateRecord(ctx context.Context,
	domain string,
	createRequest *DomainRecordEditRequest) (*DomainRecord, *Response, error)

CreateRecord creates a record using a DomainRecordEditRequest

func (*DomainsServiceOp) Delete added in v0.3.0

func (s *DomainsServiceOp) Delete(ctx context.Context, name string) (*Response, error)

Delete domain

func (*DomainsServiceOp) DeleteRecord added in v0.3.0

func (s *DomainsServiceOp) DeleteRecord(ctx context.Context, domain string, id int) (*Response, error)

DeleteRecord deletes a record from a domain identified by id

func (*DomainsServiceOp) EditRecord added in v0.3.0

func (s *DomainsServiceOp) EditRecord(ctx context.Context,
	domain string,
	id int,
	editRequest *DomainRecordEditRequest,
) (*DomainRecord, *Response, error)

EditRecord edits a record using a DomainRecordEditRequest

func (*DomainsServiceOp) Get added in v0.3.0

func (s *DomainsServiceOp) Get(ctx context.Context, name string) (*Domain, *Response, error)

Get individual domain. It requires a non-empty domain name.

func (DomainsServiceOp) List added in v0.3.0

func (s DomainsServiceOp) List(ctx context.Context, opt *ListOptions) ([]Domain, *Response, error)

List all domains.

func (*DomainsServiceOp) Record added in v0.3.0

func (s *DomainsServiceOp) Record(ctx context.Context, domain string, id int) (*DomainRecord, *Response, error)

Record returns the record id from a domain

func (*DomainsServiceOp) Records added in v0.3.0

func (s *DomainsServiceOp) Records(ctx context.Context, domain string, opt *ListOptions) ([]DomainRecord, *Response, error)

Records returns a slice of DomainRecords for a domain

type Droplet

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"`
}

Droplet represents a DigitalOcean Droplet

func (*Droplet) PrivateIPv4 added in v1.0.0

func (d *Droplet) PrivateIPv4() (string, error)

PrivateIPv4 returns the private IPv4 address for the Droplet.

func (*Droplet) PublicIPv4 added in v1.0.0

func (d *Droplet) PublicIPv4() (string, error)

PublicIPv4 returns the public IPv4 address for the Droplet.

func (*Droplet) PublicIPv6 added in v1.0.0

func (d *Droplet) PublicIPv6() (string, error)

PublicIPv6 returns the public IPv6 address for the Droplet.

func (Droplet) String

func (d Droplet) String() string

Convert Droplet to a string

func (Droplet) URN added in v1.6.0

func (d Droplet) URN() string

type DropletActionsService

type DropletActionsService interface {
	Shutdown(context.Context, int) (*Action, *Response, error)
	ShutdownByTag(context.Context, string) ([]Action, *Response, error)
	PowerOff(context.Context, int) (*Action, *Response, error)
	PowerOffByTag(context.Context, string) ([]Action, *Response, error)
	PowerOn(context.Context, int) (*Action, *Response, error)
	PowerOnByTag(context.Context, string) ([]Action, *Response, error)
	PowerCycle(context.Context, int) (*Action, *Response, error)
	PowerCycleByTag(context.Context, string) ([]Action, *Response, error)
	Reboot(context.Context, int) (*Action, *Response, error)
	Restore(context.Context, int, int) (*Action, *Response, error)
	Resize(context.Context, int, string, bool) (*Action, *Response, error)
	Rename(context.Context, int, string) (*Action, *Response, error)
	Snapshot(context.Context, int, string) (*Action, *Response, error)
	SnapshotByTag(context.Context, string, string) ([]Action, *Response, error)
	EnableBackups(context.Context, int) (*Action, *Response, error)
	EnableBackupsByTag(context.Context, string) ([]Action, *Response, error)
	DisableBackups(context.Context, int) (*Action, *Response, error)
	DisableBackupsByTag(context.Context, string) ([]Action, *Response, error)
	PasswordReset(context.Context, int) (*Action, *Response, error)
	RebuildByImageID(context.Context, int, int) (*Action, *Response, error)
	RebuildByImageSlug(context.Context, int, string) (*Action, *Response, error)
	ChangeKernel(context.Context, int, int) (*Action, *Response, error)
	EnableIPv6(context.Context, int) (*Action, *Response, error)
	EnableIPv6ByTag(context.Context, string) ([]Action, *Response, error)
	EnablePrivateNetworking(context.Context, int) (*Action, *Response, error)
	EnablePrivateNetworkingByTag(context.Context, string) ([]Action, *Response, error)
	Get(context.Context, int, int) (*Action, *Response, error)
	GetByURI(context.Context, string) (*Action, *Response, error)
}

DropletActionsService is an interface for interfacing with the Droplet actions endpoints of the DigitalOcean API See: https://developers.digitalocean.com/documentation/v2#droplet-actions

type DropletActionsServiceOp added in v0.3.0

type DropletActionsServiceOp struct {
	// contains filtered or unexported fields
}

DropletActionsServiceOp handles communication with the Droplet action related methods of the DigitalOcean API.

func (*DropletActionsServiceOp) ChangeKernel added in v0.9.0

func (s *DropletActionsServiceOp) ChangeKernel(ctx context.Context, id, kernelID int) (*Action, *Response, error)

ChangeKernel changes the kernel for a Droplet.

func (*DropletActionsServiceOp) DisableBackups added in v0.9.0

func (s *DropletActionsServiceOp) DisableBackups(ctx context.Context, id int) (*Action, *Response, error)

DisableBackups disables backups for a Droplet.

func (*DropletActionsServiceOp) DisableBackupsByTag added in v1.0.0

func (s *DropletActionsServiceOp) DisableBackupsByTag(ctx context.Context, tag string) ([]Action, *Response, error)

DisableBackupsByTag disables backups for Droplet matched by a Tag.

func (*DropletActionsServiceOp) EnableBackups added in v1.0.0

func (s *DropletActionsServiceOp) EnableBackups(ctx context.Context, id int) (*Action, *Response, error)

EnableBackups enables backups for a Droplet.

func (*DropletActionsServiceOp) EnableBackupsByTag added in v1.0.0

func (s *DropletActionsServiceOp) EnableBackupsByTag(ctx context.Context, tag string) ([]Action, *Response, error)

EnableBackupsByTag enables backups for Droplets matched by a Tag.

func (*DropletActionsServiceOp) EnableIPv6 added in v0.9.0

func (s *DropletActionsServiceOp) EnableIPv6(ctx context.Context, id int) (*Action, *Response, error)

EnableIPv6 enables IPv6 for a Droplet.

func (*DropletActionsServiceOp) EnableIPv6ByTag added in v1.0.0

func (s *DropletActionsServiceOp) EnableIPv6ByTag(ctx context.Context, tag string) ([]Action, *Response, error)

EnableIPv6ByTag enables IPv6 for Droplets matched by a Tag.

func (*DropletActionsServiceOp) EnablePrivateNetworking added in v0.9.0

func (s *DropletActionsServiceOp) EnablePrivateNetworking(ctx context.Context, id int) (*Action, *Response, error)

EnablePrivateNetworking enables private networking for a Droplet.

func (*DropletActionsServiceOp) EnablePrivateNetworkingByTag added in v1.0.0

func (s *DropletActionsServiceOp) EnablePrivateNetworkingByTag(ctx context.Context, tag string) ([]Action, *Response, error)

EnablePrivateNetworkingByTag enables private networking for Droplets matched by a Tag.

func (*DropletActionsServiceOp) Get added in v0.3.0

func (s *DropletActionsServiceOp) Get(ctx context.Context, dropletID, actionID int) (*Action, *Response, error)

Get an action for a particular Droplet by id.

func (*DropletActionsServiceOp) GetByURI added in v0.3.0

func (s *DropletActionsServiceOp) GetByURI(ctx context.Context, rawurl string) (*Action, *Response, error)

GetByURI gets an action for a particular Droplet by id.

func (*DropletActionsServiceOp) PasswordReset added in v0.9.0

func (s *DropletActionsServiceOp) PasswordReset(ctx context.Context, id int) (*Action, *Response, error)

PasswordReset resets the password for a Droplet.

func (*DropletActionsServiceOp) PowerCycle added in v0.3.0

func (s *DropletActionsServiceOp) PowerCycle(ctx context.Context, id int) (*Action, *Response, error)

PowerCycle a Droplet

func (*DropletActionsServiceOp) PowerCycleByTag added in v1.0.0

func (s *DropletActionsServiceOp) PowerCycleByTag(ctx context.Context, tag string) ([]Action, *Response, error)

PowerCycleByTag power cycles Droplets matched by a Tag.

func (*DropletActionsServiceOp) PowerOff added in v0.3.0

func (s *DropletActionsServiceOp) PowerOff(ctx context.Context, id int) (*Action, *Response, error)

PowerOff a Droplet

func (*DropletActionsServiceOp) PowerOffByTag added in v1.0.0

func (s *DropletActionsServiceOp) PowerOffByTag(ctx context.Context, tag string) ([]Action, *Response, error)

PowerOffByTag powers off Droplets matched by a Tag.

func (*DropletActionsServiceOp) PowerOn added in v0.4.0

func (s *DropletActionsServiceOp) PowerOn(ctx context.Context, id int) (*Action, *Response, error)

PowerOn a Droplet

func (*DropletActionsServiceOp) PowerOnByTag added in v1.0.0

func (s *DropletActionsServiceOp) PowerOnByTag(ctx context.Context, tag string) ([]Action, *Response, error)

PowerOnByTag powers on Droplets matched by a Tag.

func (*DropletActionsServiceOp) Reboot added in v0.3.0

func (s *DropletActionsServiceOp) Reboot(ctx context.Context, id int) (*Action, *Response, error)

Reboot a Droplet

func (*DropletActionsServiceOp) RebuildByImageID added in v0.9.0

func (s *DropletActionsServiceOp) RebuildByImageID(ctx context.Context, id, imageID int) (*Action, *Response, error)

RebuildByImageID rebuilds a Droplet from an image with a given id.

func (*DropletActionsServiceOp) RebuildByImageSlug added in v0.9.0

func (s *DropletActionsServiceOp) RebuildByImageSlug(ctx context.Context, id int, slug string) (*Action, *Response, error)

RebuildByImageSlug rebuilds a Droplet from an Image matched by a given Slug.

func (*DropletActionsServiceOp) Rename added in v0.3.0

func (s *DropletActionsServiceOp) Rename(ctx context.Context, id int, name string) (*Action, *Response, error)

Rename a Droplet

func (*DropletActionsServiceOp) Resize added in v0.3.0

func (s *DropletActionsServiceOp) Resize(ctx context.Context, id int, sizeSlug string, resizeDisk bool) (*Action, *Response, error)

Resize a Droplet

func (*DropletActionsServiceOp) Restore added in v0.3.0

func (s *DropletActionsServiceOp) Restore(ctx context.Context, id, imageID int) (*Action, *Response, error)

Restore an image to a Droplet

func (*DropletActionsServiceOp) Shutdown added in v0.3.0

func (s *DropletActionsServiceOp) Shutdown(ctx context.Context, id int) (*Action, *Response, error)

Shutdown a Droplet

func (*DropletActionsServiceOp) ShutdownByTag added in v1.0.0

func (s *DropletActionsServiceOp) ShutdownByTag(ctx context.Context, tag string) ([]Action, *Response, error)

ShutdownByTag shuts down Droplets matched by a Tag.

func (*DropletActionsServiceOp) Snapshot added in v0.6.0

func (s *DropletActionsServiceOp) Snapshot(ctx context.Context, id int, name string) (*Action, *Response, error)

Snapshot a Droplet.

func (*DropletActionsServiceOp) SnapshotByTag added in v1.0.0

func (s *DropletActionsServiceOp) SnapshotByTag(ctx context.Context, tag string, name string) ([]Action, *Response, error)

SnapshotByTag snapshots Droplets matched by a Tag.

type DropletCreateImage added in v0.9.0

type DropletCreateImage struct {
	ID   int
	Slug string
}

DropletCreateImage identifies an image for the create request. It prefers slug over ID.

func (DropletCreateImage) MarshalJSON added in v0.9.0

func (d DropletCreateImage) MarshalJSON() ([]byte, error)

MarshalJSON returns either the slug or id of the image. It returns the id if the slug is empty.

type DropletCreateRequest

type DropletCreateRequest struct {
	Name              string                `json:"name"`
	Region            string                `json:"region"`
	Size              string                `json:"size"`
	Image             DropletCreateImage    `json:"image"`
	SSHKeys           []DropletCreateSSHKey `json:"ssh_keys"`
	Backups           bool                  `json:"backups"`
	IPv6              bool                  `json:"ipv6"`
	PrivateNetworking bool                  `json:"private_networking"`
	Monitoring        bool                  `json:"monitoring"`
	UserData          string                `json:"user_data,omitempty"`
	Volumes           []DropletCreateVolume `json:"volumes,omitempty"`
	Tags              []string              `json:"tags"`
	VPCUUID           string                `json:"vpc_uuid,omitempty"`
}

DropletCreateRequest represents a request to create a Droplet.

func (DropletCreateRequest) String

func (d DropletCreateRequest) String() string

type DropletCreateSSHKey added in v0.9.0

type DropletCreateSSHKey struct {
	ID          int
	Fingerprint string
}

DropletCreateSSHKey identifies a SSH Key for the create request. It prefers fingerprint over ID.

func (DropletCreateSSHKey) MarshalJSON added in v0.9.0

func (d DropletCreateSSHKey) MarshalJSON() ([]byte, error)

MarshalJSON returns either the fingerprint or id of the ssh key. It returns the id if the fingerprint is empty.

type DropletCreateVolume added in v1.0.0

type DropletCreateVolume struct {
	ID   string
	Name string
}

DropletCreateVolume identifies a volume to attach for the create request. It prefers Name over ID,

func (DropletCreateVolume) MarshalJSON added in v1.0.0

func (d DropletCreateVolume) MarshalJSON() ([]byte, error)

MarshalJSON returns an object with either the name or id of the volume. It returns the id if the name is empty.

type DropletMultiCreateRequest added in v1.0.0

type DropletMultiCreateRequest struct {
	Names             []string              `json:"names"`
	Region            string                `json:"region"`
	Size              string                `json:"size"`
	Image             DropletCreateImage    `json:"image"`
	SSHKeys           []DropletCreateSSHKey `json:"ssh_keys"`
	Backups           bool                  `json:"backups"`
	IPv6              bool                  `json:"ipv6"`
	PrivateNetworking bool                  `json:"private_networking"`
	Monitoring        bool                  `json:"monitoring"`
	UserData          string                `json:"user_data,omitempty"`
	Tags              []string              `json:"tags"`
	VPCUUID           string                `json:"vpc_uuid,omitempty"`
}

DropletMultiCreateRequest is a request to create multiple Droplets.

func (DropletMultiCreateRequest) String added in v1.0.0

func (d DropletMultiCreateRequest) String() string

type DropletsService

DropletsService is an interface for interfacing with the Droplet endpoints of the DigitalOcean API See: https://developers.digitalocean.com/documentation/v2#droplets

type DropletsServiceOp added in v0.3.0

type DropletsServiceOp struct {
	// contains filtered or unexported fields
}

DropletsServiceOp handles communication with the Droplet related methods of the DigitalOcean API.

func (*DropletsServiceOp) Actions added in v0.9.0

func (s *DropletsServiceOp) Actions(ctx context.Context, dropletID int, opt *ListOptions) ([]Action, *Response, error)

Actions lists the actions for a Droplet.

func (*DropletsServiceOp) Backups added in v0.9.0

func (s *DropletsServiceOp) Backups(ctx context.Context, dropletID int, opt *ListOptions) ([]Image, *Response, error)

Backups lists the backups for a Droplet.

func (*DropletsServiceOp) Create added in v0.3.0

func (s *DropletsServiceOp) Create(ctx context.Context, createRequest *DropletCreateRequest) (*Droplet, *Response, error)

Create Droplet

func (*DropletsServiceOp) CreateMultiple added in v1.0.0

func (s *DropletsServiceOp) CreateMultiple(ctx context.Context, createRequest *DropletMultiCreateRequest) ([]Droplet, *Response, error)

CreateMultiple creates multiple Droplets.

func (*DropletsServiceOp) Delete added in v0.3.0

func (s *DropletsServiceOp) Delete(ctx context.Context, dropletID int) (*Response, error)

Delete Droplet.

func (*DropletsServiceOp) DeleteByTag added in v1.0.0

func (s *DropletsServiceOp) DeleteByTag(ctx context.Context, tag string) (*Response, error)

DeleteByTag deletes Droplets matched by a Tag.

func (*DropletsServiceOp) Get added in v0.3.0

func (s *DropletsServiceOp) Get(ctx context.Context, dropletID int) (*Droplet, *Response, error)

Get individual Droplet.

func (*DropletsServiceOp) Kernels added in v0.9.0

func (s *DropletsServiceOp) Kernels(ctx context.Context, dropletID int, opt *ListOptions) ([]Kernel, *Response, error)

Kernels lists kernels available for a Droplet.

func (*DropletsServiceOp) List added in v0.3.0

List all Droplets.

func (*DropletsServiceOp) ListByTag added in v1.0.0

func (s *DropletsServiceOp) ListByTag(ctx context.Context, tag string, opt *ListOptions) ([]Droplet, *Response, error)

ListByTag lists all Droplets matched by a Tag.

func (*DropletsServiceOp) Neighbors added in v0.9.0

func (s *DropletsServiceOp) Neighbors(ctx context.Context, dropletID int) ([]Droplet, *Response, error)

Neighbors lists the neighbors for a Droplet.

func (*DropletsServiceOp) Snapshots added in v0.9.0

func (s *DropletsServiceOp) Snapshots(ctx context.Context, dropletID int, opt *ListOptions) ([]Image, *Response, error)

Snapshots lists the snapshots available for a Droplet.

type ErrorResponse

type ErrorResponse struct {
	// HTTP response that caused this error
	Response *http.Response

	// Error message
	Message string `json:"message"`

	// RequestID returned from the API, useful to contact support.
	RequestID string `json:"request_id"`
}

An ErrorResponse reports the error caused by an API request

func (*ErrorResponse) Error

func (r *ErrorResponse) Error() string

type Firewall added in v1.1.0

type Firewall struct {
	ID             string          `json:"id"`
	Name           string          `json:"name"`
	Status         string          `json:"status"`
	InboundRules   []InboundRule   `json:"inbound_rules"`
	OutboundRules  []OutboundRule  `json:"outbound_rules"`
	DropletIDs     []int           `json:"droplet_ids"`
	Tags           []string        `json:"tags"`
	Created        string          `json:"created_at"`
	PendingChanges []PendingChange `json:"pending_changes"`
}

Firewall represents a DigitalOcean Firewall configuration.

func (Firewall) String added in v1.1.0

func (fw Firewall) String() string

String creates a human-readable description of a Firewall.

func (Firewall) URN added in v1.6.0

func (fw Firewall) URN() string

type FirewallRequest added in v1.1.0

type FirewallRequest struct {
	Name          string         `json:"name"`
	InboundRules  []InboundRule  `json:"inbound_rules"`
	OutboundRules []OutboundRule `json:"outbound_rules"`
	DropletIDs    []int          `json:"droplet_ids"`
	Tags          []string       `json:"tags"`
}

FirewallRequest represents the configuration to be applied to an existing or a new Firewall.

type FirewallRulesRequest added in v1.1.0

type FirewallRulesRequest struct {
	InboundRules  []InboundRule  `json:"inbound_rules"`
	OutboundRules []OutboundRule `json:"outbound_rules"`
}

FirewallRulesRequest represents rules configuration to be applied to an existing Firewall.

type FirewallsService added in v1.1.0

FirewallsService is an interface for managing Firewalls with the DigitalOcean API. See: https://developers.digitalocean.com/documentation/v2/#firewalls

type FirewallsServiceOp added in v1.1.0

type FirewallsServiceOp struct {
	// contains filtered or unexported fields
}

FirewallsServiceOp handles communication with Firewalls methods of the DigitalOcean API.

func (*FirewallsServiceOp) AddDroplets added in v1.1.0

func (fw *FirewallsServiceOp) AddDroplets(ctx context.Context, fID string, dropletIDs ...int) (*Response, error)

AddDroplets to a Firewall.

func (*FirewallsServiceOp) AddRules added in v1.1.0

AddRules to a Firewall.

func (*FirewallsServiceOp) AddTags added in v1.1.0

func (fw *FirewallsServiceOp) AddTags(ctx context.Context, fID string, tags ...string) (*Response, error)

AddTags to a Firewall.

func (*FirewallsServiceOp) Create added in v1.1.0

Create a new Firewall with a given configuration.

func (*FirewallsServiceOp) Delete added in v1.1.0

func (fw *FirewallsServiceOp) Delete(ctx context.Context, fID string) (*Response, error)

Delete a Firewall by its identifier.

func (*FirewallsServiceOp) Get added in v1.1.0

Get an existing Firewall by its identifier.

func (*FirewallsServiceOp) List added in v1.1.0

List Firewalls.

func (*FirewallsServiceOp) ListByDroplet added in v1.1.0

func (fw *FirewallsServiceOp) ListByDroplet(ctx context.Context, dID int, opt *ListOptions) ([]Firewall, *Response, error)

ListByDroplet Firewalls.

func (*FirewallsServiceOp) RemoveDroplets added in v1.1.0

func (fw *FirewallsServiceOp) RemoveDroplets(ctx context.Context, fID string, dropletIDs ...int) (*Response, error)

RemoveDroplets from a Firewall.

func (*FirewallsServiceOp) RemoveRules added in v1.1.0

func (fw *FirewallsServiceOp) RemoveRules(ctx context.Context, fID string, rr *FirewallRulesRequest) (*Response, error)

RemoveRules from a Firewall.

func (*FirewallsServiceOp) RemoveTags added in v1.1.0

func (fw *FirewallsServiceOp) RemoveTags(ctx context.Context, fID string, tags ...string) (*Response, error)

RemoveTags from a Firewall.

func (*FirewallsServiceOp) Update added in v1.1.0

Update an existing Firewall with new configuration.

type FloatingIP added in v1.0.0

type FloatingIP struct {
	Region  *Region  `json:"region"`
	Droplet *Droplet `json:"droplet"`
	IP      string   `json:"ip"`
}

FloatingIP represents a Digital Ocean floating IP.

func (FloatingIP) String added in v1.0.0

func (f FloatingIP) String() string

func (FloatingIP) URN added in v1.6.0

func (f FloatingIP) URN() string

type FloatingIPActionsService added in v1.0.0

type FloatingIPActionsService interface {
	Assign(ctx context.Context, ip string, dropletID int) (*Action, *Response, error)
	Unassign(ctx context.Context, ip string) (*Action, *Response, error)
	Get(ctx context.Context, ip string, actionID int) (*Action, *Response, error)
	List(ctx context.Context, ip string, opt *ListOptions) ([]Action, *Response, error)
}

FloatingIPActionsService is an interface for interfacing with the floating IPs actions endpoints of the Digital Ocean API. See: https://developers.digitalocean.com/documentation/v2#floating-ips-action

type FloatingIPActionsServiceOp added in v1.0.0

type FloatingIPActionsServiceOp struct {
	// contains filtered or unexported fields
}

FloatingIPActionsServiceOp handles communication with the floating IPs action related methods of the DigitalOcean API.

func (*FloatingIPActionsServiceOp) Assign added in v1.0.0

func (s *FloatingIPActionsServiceOp) Assign(ctx context.Context, ip string, dropletID int) (*Action, *Response, error)

Assign a floating IP to a droplet.

func (*FloatingIPActionsServiceOp) Get added in v1.0.0

func (s *FloatingIPActionsServiceOp) Get(ctx context.Context, ip string, actionID int) (*Action, *Response, error)

Get an action for a particular floating IP by id.

func (*FloatingIPActionsServiceOp) List added in v1.0.0

List the actions for a particular floating IP.

func (*FloatingIPActionsServiceOp) Unassign added in v1.0.0

Unassign a floating IP from the droplet it is currently assigned to.

type FloatingIPCreateRequest added in v1.0.0

type FloatingIPCreateRequest struct {
	Region    string `json:"region"`
	DropletID int    `json:"droplet_id,omitempty"`
}

FloatingIPCreateRequest represents a request to create a floating IP. If DropletID is not empty, the floating IP will be assigned to the droplet.

type FloatingIPsService added in v1.0.0

FloatingIPsService is an interface for interfacing with the floating IPs endpoints of the Digital Ocean API. See: https://developers.digitalocean.com/documentation/v2#floating-ips

type FloatingIPsServiceOp added in v1.0.0

type FloatingIPsServiceOp struct {
	// contains filtered or unexported fields
}

FloatingIPsServiceOp handles communication with the floating IPs related methods of the DigitalOcean API.

func (*FloatingIPsServiceOp) Create added in v1.0.0

Create a floating IP. If the DropletID field of the request is not empty, the floating IP will also be assigned to the droplet.

func (*FloatingIPsServiceOp) Delete added in v1.0.0

func (f *FloatingIPsServiceOp) Delete(ctx context.Context, ip string) (*Response, error)

Delete a floating IP.

func (*FloatingIPsServiceOp) Get added in v1.0.0

Get an individual floating IP.

func (*FloatingIPsServiceOp) List added in v1.0.0

List all floating IPs.

type ForwardingRule added in v1.0.0

type ForwardingRule struct {
	EntryProtocol  string `json:"entry_protocol,omitempty"`
	EntryPort      int    `json:"entry_port,omitempty"`
	TargetProtocol string `json:"target_protocol,omitempty"`
	TargetPort     int    `json:"target_port,omitempty"`
	CertificateID  string `json:"certificate_id,omitempty"`
	TlsPassthrough bool   `json:"tls_passthrough,omitempty"`
}

ForwardingRule represents load balancer forwarding rules.

func (ForwardingRule) String added in v1.0.0

func (f ForwardingRule) String() string

String creates a human-readable description of a ForwardingRule.

type HealthCheck added in v1.0.0

type HealthCheck struct {
	Protocol               string `json:"protocol,omitempty"`
	Port                   int    `json:"port,omitempty"`
	Path                   string `json:"path,omitempty"`
	CheckIntervalSeconds   int    `json:"check_interval_seconds,omitempty"`
	ResponseTimeoutSeconds int    `json:"response_timeout_seconds,omitempty"`
	HealthyThreshold       int    `json:"healthy_threshold,omitempty"`
	UnhealthyThreshold     int    `json:"unhealthy_threshold,omitempty"`
}

HealthCheck represents optional load balancer health check rules.

func (HealthCheck) String added in v1.0.0

func (h HealthCheck) String() string

String creates a human-readable description of a HealthCheck.

type Image

type Image struct {
	ID            int      `json:"id,float64,omitempty"`
	Name          string   `json:"name,omitempty"`
	Type          string   `json:"type,omitempty"`
	Distribution  string   `json:"distribution,omitempty"`
	Slug          string   `json:"slug,omitempty"`
	Public        bool     `json:"public,omitempty"`
	Regions       []string `json:"regions,omitempty"`
	MinDiskSize   int      `json:"min_disk_size,omitempty"`
	SizeGigaBytes float64  `json:"size_gigabytes,omitempty"`
	Created       string   `json:"created_at,omitempty"`
	Description   string   `json:"description,omitempty"`
	Tags          []string `json:"tags,omitempty"`
	Status        string   `json:"status,omitempty"`
	ErrorMessage  string   `json:"error_message,omitempty"`
}

Image represents a DigitalOcean Image

func (Image) String

func (i Image) String() string

type ImageActionsService

type ImageActionsService interface {
	Get(context.Context, int, int) (*Action, *Response, error)
	Transfer(context.Context, int, *ActionRequest) (*Action, *Response, error)
	Convert(context.Context, int) (*Action, *Response, error)
}

ImageActionsService is an interface for interfacing with the image actions endpoints of the DigitalOcean API See: https://developers.digitalocean.com/documentation/v2#image-actions

type ImageActionsServiceOp added in v0.3.0

type ImageActionsServiceOp struct {
	// contains filtered or unexported fields
}

ImageActionsServiceOp handles communition with the image action related methods of the DigitalOcean API.

func (*ImageActionsServiceOp) Convert added in v1.0.0

func (i *ImageActionsServiceOp) Convert(ctx context.Context, imageID int) (*Action, *Response, error)

Convert an image to a snapshot

func (*ImageActionsServiceOp) Get added in v0.3.0

func (i *ImageActionsServiceOp) Get(ctx context.Context, imageID, actionID int) (*Action, *Response, error)

Get an action for a particular image by id.

func (*ImageActionsServiceOp) Transfer added in v0.3.0

func (i *ImageActionsServiceOp) Transfer(ctx context.Context, imageID int, transferRequest *ActionRequest) (*Action, *Response, error)

Transfer an image

type ImageUpdateRequest added in v0.9.0

type ImageUpdateRequest struct {
	Name string `json:"name"`
}

ImageUpdateRequest represents a request to update an image.

type ImagesService

type ImagesService interface {
	List(context.Context, *ListOptions) ([]Image, *Response, error)
	ListDistribution(ctx context.Context, opt *ListOptions) ([]Image, *Response, error)
	ListApplication(ctx context.Context, opt *ListOptions) ([]Image, *Response, error)
	ListUser(ctx context.Context, opt *ListOptions) ([]Image, *Response, error)
	ListByTag(ctx context.Context, tag string, opt *ListOptions) ([]Image, *Response, error)
	GetByID(context.Context, int) (*Image, *Response, error)
	GetBySlug(context.Context, string) (*Image, *Response, error)
	Create(context.Context, *CustomImageCreateRequest) (*Image, *Response, error)
	Update(context.Context, int, *ImageUpdateRequest) (*Image, *Response, error)
	Delete(context.Context, int) (*Response, error)
}

ImagesService is an interface for interfacing with the images endpoints of the DigitalOcean API See: https://developers.digitalocean.com/documentation/v2#images

type ImagesServiceOp added in v0.3.0

type ImagesServiceOp struct {
	// contains filtered or unexported fields
}

ImagesServiceOp handles communication with the image related methods of the DigitalOcean API.

func (*ImagesServiceOp) Create added in v1.7.1

func (s *ImagesServiceOp) Create(ctx context.Context, createRequest *CustomImageCreateRequest) (*Image, *Response, error)

func (*ImagesServiceOp) Delete added in v0.9.0

func (s *ImagesServiceOp) Delete(ctx context.Context, imageID int) (*Response, error)

Delete an image.

func (*ImagesServiceOp) GetByID added in v0.9.0

func (s *ImagesServiceOp) GetByID(ctx context.Context, imageID int) (*Image, *Response, error)

GetByID retrieves an image by id.

func (*ImagesServiceOp) GetBySlug added in v0.9.0

func (s *ImagesServiceOp) GetBySlug(ctx context.Context, slug string) (*Image, *Response, error)

GetBySlug retrieves an image by slug.

func (*ImagesServiceOp) List added in v0.3.0

func (s *ImagesServiceOp) List(ctx context.Context, opt *ListOptions) ([]Image, *Response, error)

List lists all the images available.

func (*ImagesServiceOp) ListApplication added in v0.9.0

func (s *ImagesServiceOp) ListApplication(ctx context.Context, opt *ListOptions) ([]Image, *Response, error)

ListApplication lists all the application images.

func (*ImagesServiceOp) ListByTag added in v1.7.1

func (s *ImagesServiceOp) ListByTag(ctx context.Context, tag string, opt *ListOptions) ([]Image, *Response, error)

ListByTag lists all images with a specific tag applied.

func (*ImagesServiceOp) ListDistribution added in v0.9.0

func (s *ImagesServiceOp) ListDistribution(ctx context.Context, opt *ListOptions) ([]Image, *Response, error)

ListDistribution lists all the distribution images.

func (*ImagesServiceOp) ListUser added in v0.9.0

func (s *ImagesServiceOp) ListUser(ctx context.Context, opt *ListOptions) ([]Image, *Response, error)

ListUser lists all the user images.

func (*ImagesServiceOp) Update added in v0.9.0

func (s *ImagesServiceOp) Update(ctx context.Context, imageID int, updateRequest *ImageUpdateRequest) (*Image, *Response, error)

Update an image name.

type InboundRule added in v1.1.0

type InboundRule struct {
	Protocol  string   `json:"protocol,omitempty"`
	PortRange string   `json:"ports,omitempty"`
	Sources   *Sources `json:"sources"`
}

InboundRule represents a DigitalOcean Firewall inbound rule.

type Kernel added in v0.9.0

type Kernel struct {
	ID      int    `json:"id,float64,omitempty"`
	Name    string `json:"name,omitempty"`
	Version string `json:"version,omitempty"`
}

Kernel object

type Key

type Key struct {
	ID          int    `json:"id,float64,omitempty"`
	Name        string `json:"name,omitempty"`
	Fingerprint string `json:"fingerprint,omitempty"`
	PublicKey   string `json:"public_key,omitempty"`
}

Key represents a DigitalOcean Key.

func (Key) String

func (s Key) String() string

type KeyCreateRequest

type KeyCreateRequest struct {
	Name      string `json:"name"`
	PublicKey string `json:"public_key"`
}

KeyCreateRequest represents a request to create a new key.

type KeyUpdateRequest added in v0.9.0

type KeyUpdateRequest struct {
	Name string `json:"name"`
}

KeyUpdateRequest represents a request to update a DigitalOcean key.

type KeysService

type KeysService interface {
	List(context.Context, *ListOptions) ([]Key, *Response, error)
	GetByID(context.Context, int) (*Key, *Response, error)
	GetByFingerprint(context.Context, string) (*Key, *Response, error)
	Create(context.Context, *KeyCreateRequest) (*Key, *Response, error)
	UpdateByID(context.Context, int, *KeyUpdateRequest) (*Key, *Response, error)
	UpdateByFingerprint(context.Context, string, *KeyUpdateRequest) (*Key, *Response, error)
	DeleteByID(context.Context, int) (*Response, error)
	DeleteByFingerprint(context.Context, string) (*Response, error)
}

KeysService is an interface for interfacing with the keys endpoints of the DigitalOcean API See: https://developers.digitalocean.com/documentation/v2#keys

type KeysServiceOp added in v0.3.0

type KeysServiceOp struct {
	// contains filtered or unexported fields
}

KeysServiceOp handles communication with key related method of the DigitalOcean API.

func (*KeysServiceOp) Create added in v0.3.0

func (s *KeysServiceOp) Create(ctx context.Context, createRequest *KeyCreateRequest) (*Key, *Response, error)

Create a key using a KeyCreateRequest

func (*KeysServiceOp) DeleteByFingerprint added in v0.3.0

func (s *KeysServiceOp) DeleteByFingerprint(ctx context.Context, fingerprint string) (*Response, error)

DeleteByFingerprint deletes a key by its fingerprint

func (*KeysServiceOp) DeleteByID added in v0.3.0

func (s *KeysServiceOp) DeleteByID(ctx context.Context, keyID int) (*Response, error)

DeleteByID deletes a key by its id

func (*KeysServiceOp) GetByFingerprint added in v0.3.0

func (s *KeysServiceOp) GetByFingerprint(ctx context.Context, fingerprint string) (*Key, *Response, error)

GetByFingerprint gets a Key by by fingerprint

func (*KeysServiceOp) GetByID added in v0.3.0

func (s *KeysServiceOp) GetByID(ctx context.Context, keyID int) (*Key, *Response, error)

GetByID gets a Key by id

func (*KeysServiceOp) List added in v0.3.0

func (s *KeysServiceOp) List(ctx context.Context, opt *ListOptions) ([]Key, *Response, error)

List all keys

func (*KeysServiceOp) UpdateByFingerprint added in v0.9.0

func (s *KeysServiceOp) UpdateByFingerprint(ctx context.Context, fingerprint string, updateRequest *KeyUpdateRequest) (*Key, *Response, error)

UpdateByFingerprint updates a key name by fingerprint.

func (*KeysServiceOp) UpdateByID added in v0.9.0

func (s *KeysServiceOp) UpdateByID(ctx context.Context, keyID int, updateRequest *KeyUpdateRequest) (*Key, *Response, error)

UpdateByID updates a key name by ID.

type KubernetesCluster added in v1.7.0

type KubernetesCluster struct {
	ID            string   `json:"id,omitempty"`
	Name          string   `json:"name,omitempty"`
	RegionSlug    string   `json:"region,omitempty"`
	VersionSlug   string   `json:"version,omitempty"`
	ClusterSubnet string   `json:"cluster_subnet,omitempty"`
	ServiceSubnet string   `json:"service_subnet,omitempty"`
	IPv4          string   `json:"ipv4,omitempty"`
	Endpoint      string   `json:"endpoint,omitempty"`
	Tags          []string `json:"tags,omitempty"`
	VPCUUID       string   `json:"vpc_uuid,omitempty"`

	NodePools []*KubernetesNodePool `json:"node_pools,omitempty"`

	MaintenancePolicy *KubernetesMaintenancePolicy `json:"maintenance_policy,omitempty"`
	AutoUpgrade       bool                         `json:"auto_upgrade,omitempty"`

	Status    *KubernetesClusterStatus `json:"status,omitempty"`
	CreatedAt time.Time                `json:"created_at,omitempty"`
	UpdatedAt time.Time                `json:"updated_at,omitempty"`
}

KubernetesCluster represents a Kubernetes cluster.

type KubernetesClusterConfig added in v1.7.0

type KubernetesClusterConfig struct {
	KubeconfigYAML []byte
}

KubernetesClusterConfig is the content of a Kubernetes config file, which can be used to interact with your Kubernetes cluster using `kubectl`. See: https://kubernetes.io/docs/tasks/tools/install-kubectl/

type KubernetesClusterCreateRequest added in v1.7.0

type KubernetesClusterCreateRequest struct {
	Name        string   `json:"name,omitempty"`
	RegionSlug  string   `json:"region,omitempty"`
	VersionSlug string   `json:"version,omitempty"`
	Tags        []string `json:"tags,omitempty"`
	VPCUUID     string   `json:"vpc_uuid,omitempty"`

	NodePools []*KubernetesNodePoolCreateRequest `json:"node_pools,omitempty"`

	MaintenancePolicy *KubernetesMaintenancePolicy `json:"maintenance_policy"`
	AutoUpgrade       bool                         `json:"auto_upgrade"`
}

KubernetesClusterCreateRequest represents a request to create a Kubernetes cluster.

type KubernetesClusterStatus added in v1.7.0

type KubernetesClusterStatus struct {
	State   KubernetesClusterStatusState `json:"state,omitempty"`
	Message string                       `json:"message,omitempty"`
}

KubernetesClusterStatus describes the status of a cluster.

type KubernetesClusterStatusState added in v1.7.1

type KubernetesClusterStatusState string

KubernetesClusterStatusState represents states for a cluster.

func (*KubernetesClusterStatusState) UnmarshalText added in v1.7.1

func (s *KubernetesClusterStatusState) UnmarshalText(text []byte) error

UnmarshalText unmarshals the state.

type KubernetesClusterUpdateRequest added in v1.7.0

type KubernetesClusterUpdateRequest struct {
	Name              string                       `json:"name,omitempty"`
	Tags              []string                     `json:"tags,omitempty"`
	MaintenancePolicy *KubernetesMaintenancePolicy `json:"maintenance_policy"`
	AutoUpgrade       bool                         `json:"auto_upgrade"`
}

KubernetesClusterUpdateRequest represents a request to update a Kubernetes cluster.

type KubernetesClusterUpgradeRequest added in v1.14.0

type KubernetesClusterUpgradeRequest struct {
	VersionSlug string `json:"version,omitempty"`
}

KubernetesClusterUpgradeRequest represents a request to upgrade a Kubernetes cluster.

type KubernetesMaintenancePolicy added in v1.12.0

type KubernetesMaintenancePolicy struct {
	StartTime string                         `json:"start_time"`
	Duration  string                         `json:"duration"`
	Day       KubernetesMaintenancePolicyDay `json:"day"`
}

KubernetesMaintenancePolicy is a configuration to set the maintenance window of a cluster

type KubernetesMaintenancePolicyDay added in v1.12.0

type KubernetesMaintenancePolicyDay int

KubernetesMaintenancePolicyDay represents the possible days of a maintenance window

const (
	KubernetesMaintenanceDayAny KubernetesMaintenancePolicyDay = iota
	KubernetesMaintenanceDayMonday
	KubernetesMaintenanceDayTuesday
	KubernetesMaintenanceDayWednesday
	KubernetesMaintenanceDayThursday
	KubernetesMaintenanceDayFriday
	KubernetesMaintenanceDaySaturday
	KubernetesMaintenanceDaySunday
)

func KubernetesMaintenanceToDay added in v1.12.0

func KubernetesMaintenanceToDay(day string) (KubernetesMaintenancePolicyDay, error)

KubernetesMaintenanceToDay returns the appropriate KubernetesMaintenancePolicyDay for the given string.

func (KubernetesMaintenancePolicyDay) MarshalJSON added in v1.12.0

func (k KubernetesMaintenancePolicyDay) MarshalJSON() ([]byte, error)

func (KubernetesMaintenancePolicyDay) String added in v1.12.0

func (*KubernetesMaintenancePolicyDay) UnmarshalJSON added in v1.12.0

func (k *KubernetesMaintenancePolicyDay) UnmarshalJSON(data []byte) error

type KubernetesNode added in v1.7.0

type KubernetesNode struct {
	ID     string                `json:"id,omitempty"`
	Name   string                `json:"name,omitempty"`
	Status *KubernetesNodeStatus `json:"status,omitempty"`

	CreatedAt time.Time `json:"created_at,omitempty"`
	UpdatedAt time.Time `json:"updated_at,omitempty"`
}

KubernetesNode represents a Node in a node pool in a Kubernetes cluster.

type KubernetesNodePool added in v1.7.0

type KubernetesNodePool struct {
	ID    string   `json:"id,omitempty"`
	Name  string   `json:"name,omitempty"`
	Size  string   `json:"size,omitempty"`
	Count int      `json:"count,omitempty"`
	Tags  []string `json:"tags,omitempty"`

	Nodes []*KubernetesNode `json:"nodes,omitempty"`
}

KubernetesNodePool represents a node pool in a Kubernetes cluster.

type KubernetesNodePoolCreateRequest added in v1.7.0

type KubernetesNodePoolCreateRequest struct {
	Name  string   `json:"name,omitempty"`
	Size  string   `json:"size,omitempty"`
	Count int      `json:"count,omitempty"`
	Tags  []string `json:"tags,omitempty"`
}

KubernetesNodePoolCreateRequest represents a request to create a node pool for a Kubernetes cluster.

type KubernetesNodePoolRecycleNodesRequest added in v1.7.0

type KubernetesNodePoolRecycleNodesRequest struct {
	Nodes []string `json:"nodes,omitempty"`
}

KubernetesNodePoolRecycleNodesRequest represents a request to recycle a set of nodes in a node pool. This will recycle the nodes by ID.

type KubernetesNodePoolUpdateRequest added in v1.7.0

type KubernetesNodePoolUpdateRequest struct {
	Name  string   `json:"name,omitempty"`
	Count int      `json:"count,omitempty"`
	Tags  []string `json:"tags,omitempty"`
}

KubernetesNodePoolUpdateRequest represents a request to update a node pool in a Kubernetes cluster.

type KubernetesNodeSize added in v1.7.2

type KubernetesNodeSize struct {
	Name string `json:"name"`
	Slug string `json:"slug"`
}

KubernetesNodeSize is a node sizes supported for Kubernetes clusters.

type KubernetesNodeStatus added in v1.7.0

type KubernetesNodeStatus struct {
	State   string `json:"state,omitempty"`
	Message string `json:"message,omitempty"`
}

KubernetesNodeStatus represents the status of a particular Node in a Kubernetes cluster.

type KubernetesOptions added in v1.7.0

type KubernetesOptions struct {
	Versions []*KubernetesVersion  `json:"versions,omitempty"`
	Regions  []*KubernetesRegion   `json:"regions,omitempty"`
	Sizes    []*KubernetesNodeSize `json:"sizes,omitempty"`
}

KubernetesOptions represents options available for creating Kubernetes clusters.

type KubernetesRegion added in v1.7.2

type KubernetesRegion struct {
	Name string `json:"name"`
	Slug string `json:"slug"`
}

KubernetesRegion is a region usable by Kubernetes clusters.

type KubernetesService added in v1.7.0

KubernetesService is an interface for interfacing with the Kubernetes endpoints of the DigitalOcean API. See: https://developers.digitalocean.com/documentation/v2#kubernetes

type KubernetesServiceOp added in v1.7.0

type KubernetesServiceOp struct {
	// contains filtered or unexported fields
}

KubernetesServiceOp handles communication with Kubernetes methods of the DigitalOcean API.

func (*KubernetesServiceOp) Create added in v1.7.0

Create creates a Kubernetes cluster.

func (*KubernetesServiceOp) CreateNodePool added in v1.7.0

CreateNodePool creates a new node pool in an existing Kubernetes cluster.

func (*KubernetesServiceOp) Delete added in v1.7.0

func (svc *KubernetesServiceOp) Delete(ctx context.Context, clusterID string) (*Response, error)

Delete deletes a Kubernetes cluster. There is no way to recover a cluster once it has been destroyed.

func (*KubernetesServiceOp) DeleteNodePool added in v1.7.0

func (svc *KubernetesServiceOp) DeleteNodePool(ctx context.Context, clusterID, poolID string) (*Response, error)

DeleteNodePool deletes a node pool, and subsequently all the nodes in that pool.

func (*KubernetesServiceOp) Get added in v1.7.0

func (svc *KubernetesServiceOp) Get(ctx context.Context, clusterID string) (*KubernetesCluster, *Response, error)

Get retrieves the details of a Kubernetes cluster.

func (*KubernetesServiceOp) GetKubeConfig added in v1.7.0

func (svc *KubernetesServiceOp) GetKubeConfig(ctx context.Context, clusterID string) (*KubernetesClusterConfig, *Response, error)

GetKubeConfig returns a Kubernetes config file for the specified cluster.

func (*KubernetesServiceOp) GetNodePool added in v1.7.0

func (svc *KubernetesServiceOp) GetNodePool(ctx context.Context, clusterID, poolID string) (*KubernetesNodePool, *Response, error)

GetNodePool retrieves an existing node pool in a Kubernetes cluster.

func (*KubernetesServiceOp) GetOptions added in v1.7.0

GetOptions returns options about the Kubernetes service, such as the versions available for cluster creation.

func (*KubernetesServiceOp) GetUpgrades added in v1.14.0

func (svc *KubernetesServiceOp) GetUpgrades(ctx context.Context, clusterID string) ([]*KubernetesVersion, *Response, error)

GetUpgrades retrieves versions a Kubernetes cluster can be upgraded to. An upgrade can be requested using `Upgrade`.

func (*KubernetesServiceOp) List added in v1.7.0

List returns a list of the Kubernetes clusters visible with the caller's API token.

func (*KubernetesServiceOp) ListNodePools added in v1.7.0

func (svc *KubernetesServiceOp) ListNodePools(ctx context.Context, clusterID string, opts *ListOptions) ([]*KubernetesNodePool, *Response, error)

ListNodePools lists all the node pools found in a Kubernetes cluster.

func (*KubernetesServiceOp) RecycleNodePoolNodes added in v1.7.0

func (svc *KubernetesServiceOp) RecycleNodePoolNodes(ctx context.Context, clusterID, poolID string, recycle *KubernetesNodePoolRecycleNodesRequest) (*Response, error)

RecycleNodePoolNodes schedules nodes in a node pool for recycling.

func (*KubernetesServiceOp) Update added in v1.7.0

Update updates a Kubernetes cluster's properties.

func (*KubernetesServiceOp) UpdateNodePool added in v1.7.0

func (svc *KubernetesServiceOp) UpdateNodePool(ctx context.Context, clusterID, poolID string, update *KubernetesNodePoolUpdateRequest) (*KubernetesNodePool, *Response, error)

UpdateNodePool updates the details of an existing node pool.

func (*KubernetesServiceOp) Upgrade added in v1.14.0

func (svc *KubernetesServiceOp) Upgrade(ctx context.Context, clusterID string, upgrade *KubernetesClusterUpgradeRequest) (*Response, error)

Upgrade upgrades a Kubernetes cluster to a new version. Valid upgrade versions for a given cluster can be retrieved with `GetUpgrades`.

type KubernetesVersion added in v1.7.0

type KubernetesVersion struct {
	Slug              string `json:"slug,omitempty"`
	KubernetesVersion string `json:"kubernetes_version,omitempty"`
}

KubernetesVersion is a DigitalOcean Kubernetes release.

type LinkAction added in v0.3.0

type LinkAction struct {
	ID   int    `json:"id,omitempty"`
	Rel  string `json:"rel,omitempty"`
	HREF string `json:"href,omitempty"`
}

LinkAction is a pointer to an action

func (*LinkAction) Get added in v0.3.0

func (la *LinkAction) Get(ctx context.Context, client *Client) (*Action, *Response, error)

Get a link action by id.

type Links struct {
	Pages   *Pages       `json:"pages,omitempty"`
	Actions []LinkAction `json:"actions,omitempty"`
}

Links manages links that are returned along with a List

func (*Links) CurrentPage added in v0.3.0

func (l *Links) CurrentPage() (int, error)

CurrentPage is current page of the list

func (*Links) IsLastPage added in v0.3.0

func (l *Links) IsLastPage() bool

IsLastPage returns true if the current page is the last

type ListOptions

type ListOptions struct {
	// For paginated result sets, page of results to retrieve.
	Page int `url:"page,omitempty"`

	// For paginated result sets, the number of results to include per page.
	PerPage int `url:"per_page,omitempty"`
}

ListOptions specifies the optional parameters to various List methods that support pagination.

type ListVolumeParams added in v1.0.0

type ListVolumeParams struct {
	Region      string       `json:"region"`
	Name        string       `json:"name"`
	ListOptions *ListOptions `json:"list_options,omitempty"`
}

ListVolumeParams stores the options you can set for a ListVolumeCall

type LoadBalancer added in v1.0.0

type LoadBalancer struct {
	ID                  string           `json:"id,omitempty"`
	Name                string           `json:"name,omitempty"`
	IP                  string           `json:"ip,omitempty"`
	Algorithm           string           `json:"algorithm,omitempty"`
	Status              string           `json:"status,omitempty"`
	Created             string           `json:"created_at,omitempty"`
	ForwardingRules     []ForwardingRule `json:"forwarding_rules,omitempty"`
	HealthCheck         *HealthCheck     `json:"health_check,omitempty"`
	StickySessions      *StickySessions  `json:"sticky_sessions,omitempty"`
	Region              *Region          `json:"region,omitempty"`
	DropletIDs          []int            `json:"droplet_ids,omitempty"`
	Tag                 string           `json:"tag,omitempty"`
	Tags                []string         `json:"tags,omitempty"`
	RedirectHttpToHttps bool             `json:"redirect_http_to_https,omitempty"`
	EnableProxyProtocol bool             `json:"enable_proxy_protocol,omitempty"`
	VPCUUID             string           `json:"vpc_uuid,omitempty"`
}

LoadBalancer represents a DigitalOcean load balancer configuration. Tags can only be provided upon the creation of a Load Balancer.

func (LoadBalancer) AsRequest added in v1.1.1

func (l LoadBalancer) AsRequest() *LoadBalancerRequest

AsRequest creates a LoadBalancerRequest that can be submitted to Update with the current values of the LoadBalancer. Modifying the returned LoadBalancerRequest will not modify the original LoadBalancer.

func (LoadBalancer) String added in v1.0.0

func (l LoadBalancer) String() string

String creates a human-readable description of a LoadBalancer.

func (LoadBalancer) URN added in v1.6.0

func (l LoadBalancer) URN() string

type LoadBalancerRequest added in v1.0.0

type LoadBalancerRequest struct {
	Name                string           `json:"name,omitempty"`
	Algorithm           string           `json:"algorithm,omitempty"`
	Region              string           `json:"region,omitempty"`
	ForwardingRules     []ForwardingRule `json:"forwarding_rules,omitempty"`
	HealthCheck         *HealthCheck     `json:"health_check,omitempty"`
	StickySessions      *StickySessions  `json:"sticky_sessions,omitempty"`
	DropletIDs          []int            `json:"droplet_ids,omitempty"`
	Tag                 string           `json:"tag,omitempty"`
	Tags                []string         `json:"tags,omitempty"`
	RedirectHttpToHttps bool             `json:"redirect_http_to_https,omitempty"`
	EnableProxyProtocol bool             `json:"enable_proxy_protocol,omitempty"`
	VPCUUID             string           `json:"vpc_uuid,omitempty"`
}

LoadBalancerRequest represents the configuration to be applied to an existing or a new load balancer.

func (LoadBalancerRequest) String added in v1.0.0

func (l LoadBalancerRequest) String() string

String creates a human-readable description of a LoadBalancerRequest.

type LoadBalancersService added in v1.0.0

type LoadBalancersService interface {
	Get(context.Context, string) (*LoadBalancer, *Response, error)
	List(context.Context, *ListOptions) ([]LoadBalancer, *Response, error)
	Create(context.Context, *LoadBalancerRequest) (*LoadBalancer, *Response, error)
	Update(ctx context.Context, lbID string, lbr *LoadBalancerRequest) (*LoadBalancer, *Response, error)
	Delete(ctx context.Context, lbID string) (*Response, error)
	AddDroplets(ctx context.Context, lbID string, dropletIDs ...int) (*Response, error)
	RemoveDroplets(ctx context.Context, lbID string, dropletIDs ...int) (*Response, error)
	AddForwardingRules(ctx context.Context, lbID string, rules ...ForwardingRule) (*Response, error)
	RemoveForwardingRules(ctx context.Context, lbID string, rules ...ForwardingRule) (*Response, error)
}

LoadBalancersService is an interface for managing load balancers with the DigitalOcean API. See: https://developers.digitalocean.com/documentation/v2#load-balancers

type LoadBalancersServiceOp added in v1.0.0

type LoadBalancersServiceOp struct {
	// contains filtered or unexported fields
}

LoadBalancersServiceOp handles communication with load balancer-related methods of the DigitalOcean API.

func (*LoadBalancersServiceOp) AddDroplets added in v1.0.0

func (l *LoadBalancersServiceOp) AddDroplets(ctx context.Context, lbID string, dropletIDs ...int) (*Response, error)

AddDroplets adds droplets to a load balancer.

func (*LoadBalancersServiceOp) AddForwardingRules added in v1.0.0

func (l *LoadBalancersServiceOp) AddForwardingRules(ctx context.Context, lbID string, rules ...ForwardingRule) (*Response, error)

AddForwardingRules adds forwarding rules to a load balancer.

func (*LoadBalancersServiceOp) Create added in v1.0.0

Create a new load balancer with a given configuration.

func (*LoadBalancersServiceOp) Delete added in v1.0.0

func (l *LoadBalancersServiceOp) Delete(ctx context.Context, ldID string) (*Response, error)

Delete a load balancer by its identifier.

func (*LoadBalancersServiceOp) Get added in v1.0.0

Get an existing load balancer by its identifier.

func (*LoadBalancersServiceOp) List added in v1.0.0

List load balancers, with optional pagination.

func (*LoadBalancersServiceOp) RemoveDroplets added in v1.0.0

func (l *LoadBalancersServiceOp) RemoveDroplets(ctx context.Context, lbID string, dropletIDs ...int) (*Response, error)

RemoveDroplets removes droplets from a load balancer.

func (*LoadBalancersServiceOp) RemoveForwardingRules added in v1.0.0

func (l *LoadBalancersServiceOp) RemoveForwardingRules(ctx context.Context, lbID string, rules ...ForwardingRule) (*Response, error)

RemoveForwardingRules removes forwarding rules from a load balancer.

func (*LoadBalancersServiceOp) Update added in v1.0.0

Update an existing load balancer with new configuration.

type NetworkV4 added in v0.6.0

type NetworkV4 struct {
	IPAddress string `json:"ip_address,omitempty"`
	Netmask   string `json:"netmask,omitempty"`
	Gateway   string `json:"gateway,omitempty"`
	Type      string `json:"type,omitempty"`
}

NetworkV4 represents a DigitalOcean IPv4 Network.

func (NetworkV4) String added in v0.6.0

func (n NetworkV4) String() string

type NetworkV6 added in v0.6.0

type NetworkV6 struct {
	IPAddress string `json:"ip_address,omitempty"`
	Netmask   int    `json:"netmask,omitempty"`
	Gateway   string `json:"gateway,omitempty"`
	Type      string `json:"type,omitempty"`
}

NetworkV6 represents a DigitalOcean IPv6 network.

func (NetworkV6) String added in v0.6.0

func (n NetworkV6) String() string

type Networks

type Networks struct {
	V4 []NetworkV4 `json:"v4,omitempty"`
	V6 []NetworkV6 `json:"v6,omitempty"`
}

Networks represents the Droplet's Networks.

type OutboundRule added in v1.1.0

type OutboundRule struct {
	Protocol     string        `json:"protocol,omitempty"`
	PortRange    string        `json:"ports,omitempty"`
	Destinations *Destinations `json:"destinations"`
}

OutboundRule represents a DigitalOcean Firewall outbound rule.

type Pages added in v0.3.0

type Pages struct {
	First string `json:"first,omitempty"`
	Prev  string `json:"prev,omitempty"`
	Last  string `json:"last,omitempty"`
	Next  string `json:"next,omitempty"`
}

Pages are pages specified in Links

type PendingChange added in v1.1.0

type PendingChange struct {
	DropletID int    `json:"droplet_id,omitempty"`
	Removing  bool   `json:"removing,omitempty"`
	Status    string `json:"status,omitempty"`
}

PendingChange represents a DigitalOcean Firewall status details.

type Project added in v1.6.0

type Project struct {
	ID          string `json:"id"`
	OwnerUUID   string `json:"owner_uuid"`
	OwnerID     uint64 `json:"owner_id"`
	Name        string `json:"name"`
	Description string `json:"description"`
	Purpose     string `json:"purpose"`
	Environment string `json:"environment"`
	IsDefault   bool   `json:"is_default"`
	CreatedAt   string `json:"created_at"`
	UpdatedAt   string `json:"updated_at"`
}

Project represents a DigitalOcean Project configuration.

func (Project) String added in v1.6.0

func (p Project) String() string

String creates a human-readable description of a Project.

type ProjectResource added in v1.6.0

type ProjectResource struct {
	URN        string                `json:"urn"`
	AssignedAt string                `json:"assigned_at"`
	Links      *ProjectResourceLinks `json:"links"`
	Status     string                `json:"status,omitempty"`
}

ProjectResource is the projects API's representation of a resource.

type ProjectResourceLinks struct {
	Self string `json:"self"`
}

ProjetResourceLinks specify the link for more information about the resource.

type ProjectsService added in v1.6.0

ProjectsService is an interface for creating and managing Projects with the DigitalOcean API. See: https://developers.digitalocean.com/documentation/v2/#projects

type ProjectsServiceOp added in v1.6.0

type ProjectsServiceOp struct {
	// contains filtered or unexported fields
}

ProjectsServiceOp handles communication with Projects methods of the DigitalOcean API.

func (*ProjectsServiceOp) AssignResources added in v1.6.0

func (p *ProjectsServiceOp) AssignResources(ctx context.Context, projectID string, resources ...interface{}) ([]ProjectResource, *Response, error)
  1. The resource type, like `&Droplet{ID: 1}` or `&FloatingIP{IP: "1.2.3.4"}`
  2. A valid DO URN as a string, like "do:droplet:1234"

There is no unassign. To move a resource to another project, just assign it to that other project.

func (*ProjectsServiceOp) Create added in v1.6.0

Create a new project.

func (*ProjectsServiceOp) Delete added in v1.6.0

func (p *ProjectsServiceOp) Delete(ctx context.Context, projectID string) (*Response, error)

Delete an existing project. You cannot have any resources in a project before deleting it. See the API documentation for more details.

func (*ProjectsServiceOp) Get added in v1.6.0

func (p *ProjectsServiceOp) Get(ctx context.Context, projectID string) (*Project, *Response, error)

Get retrieves a single project by its ID.

func (*ProjectsServiceOp) GetDefault added in v1.6.0

func (p *ProjectsServiceOp) GetDefault(ctx context.Context) (*Project, *Response, error)

GetDefault project.

func (*ProjectsServiceOp) List added in v1.6.0

func (p *ProjectsServiceOp) List(ctx context.Context, opts *ListOptions) ([]Project, *Response, error)

List Projects.

func (*ProjectsServiceOp) ListResources added in v1.6.0

func (p *ProjectsServiceOp) ListResources(ctx context.Context, projectID string, opts *ListOptions) ([]ProjectResource, *Response, error)

ListResources lists all resources in a project.

func (*ProjectsServiceOp) Update added in v1.6.0

func (p *ProjectsServiceOp) Update(ctx context.Context, projectID string, ur *UpdateProjectRequest) (*Project, *Response, error)

Update an existing project.

type Rate

type Rate struct {
	// The number of request per hour the client is currently limited to.
	Limit int `json:"limit"`

	// The number of remaining requests the client can make this hour.
	Remaining int `json:"remaining"`

	// The time at which the current rate limit will reset.
	Reset Timestamp `json:"reset"`
}

Rate contains the rate limit for the current client.

func (Rate) String

func (r Rate) String() string

type Region

type Region struct {
	Slug      string   `json:"slug,omitempty"`
	Name      string   `json:"name,omitempty"`
	Sizes     []string `json:"sizes,omitempty"`
	Available bool     `json:"available,omitempty"`
	Features  []string `json:"features,omitempty"`
}

Region represents a DigitalOcean Region

func (Region) String

func (r Region) String() string

type RegionsService

type RegionsService interface {
	List(context.Context, *ListOptions) ([]Region, *Response, error)
}

RegionsService is an interface for interfacing with the regions endpoints of the DigitalOcean API See: https://developers.digitalocean.com/documentation/v2#regions

type RegionsServiceOp added in v0.3.0

type RegionsServiceOp struct {
	// contains filtered or unexported fields
}

RegionsServiceOp handles communication with the region related methods of the DigitalOcean API.

func (*RegionsServiceOp) List added in v0.3.0

func (s *RegionsServiceOp) List(ctx context.Context, opt *ListOptions) ([]Region, *Response, error)

List all regions

type RequestCompletionCallback added in v0.9.0

type RequestCompletionCallback func(*http.Request, *http.Response)

RequestCompletionCallback defines the type of the request callback function

type Resource added in v1.0.0

type Resource struct {
	ID   string       `json:"resource_id,omit_empty"`
	Type ResourceType `json:"resource_type,omit_empty"`
}

Resource represent a single resource for associating/disassociating with tags

type ResourceType added in v1.0.0

type ResourceType string

ResourceType represents a class of resource, currently only droplet are supported

const (
	// DropletResourceType holds the string representing our ResourceType of Droplet.
	DropletResourceType ResourceType = "droplet"
	// ImageResourceType holds the string representing our ResourceType of Image.
	ImageResourceType ResourceType = "image"
	// VolumeResourceType holds the string representing our ResourceType of Volume.
	VolumeResourceType ResourceType = "volume"
	// LoadBalancerResourceType holds the string representing our ResourceType of LoadBalancer.
	LoadBalancerResourceType ResourceType = "load_balancer"
	// VolumeSnapshotResourceType holds the string representing our ResourceType for storage Snapshots.
	VolumeSnapshotResourceType ResourceType = "volumesnapshot"
)

type ResourceWithURN added in v1.6.0

type ResourceWithURN interface {
	URN() string
}

type Response

type Response struct {
	*http.Response

	// Links that were returned with the response. These are parsed from
	// request body and not the header.
	Links *Links

	// Monitoring URI
	Monitor string

	Rate
}

Response is a DigitalOcean response. This wraps the standard http.Response returned from DigitalOcean.

type Size

type Size struct {
	Slug         string   `json:"slug,omitempty"`
	Memory       int      `json:"memory,omitempty"`
	Vcpus        int      `json:"vcpus,omitempty"`
	Disk         int      `json:"disk,omitempty"`
	PriceMonthly float64  `json:"price_monthly,omitempty"`
	PriceHourly  float64  `json:"price_hourly,omitempty"`
	Regions      []string `json:"regions,omitempty"`
	Available    bool     `json:"available,omitempty"`
	Transfer     float64  `json:"transfer,omitempty"`
}

Size represents a DigitalOcean Size

func (Size) String

func (s Size) String() string

type SizesService

type SizesService interface {
	List(context.Context, *ListOptions) ([]Size, *Response, error)
}

SizesService is an interface for interfacing with the size endpoints of the DigitalOcean API See: https://developers.digitalocean.com/documentation/v2#sizes

type SizesServiceOp added in v0.3.0

type SizesServiceOp struct {
	// contains filtered or unexported fields
}

SizesServiceOp handles communication with the size related methods of the DigitalOcean API.

func (*SizesServiceOp) List added in v0.3.0

func (s *SizesServiceOp) List(ctx context.Context, opt *ListOptions) ([]Size, *Response, error)

List all images

type Snapshot added in v1.0.0

type Snapshot struct {
	ID            string   `json:"id,omitempty"`
	Name          string   `json:"name,omitempty"`
	ResourceID    string   `json:"resource_id,omitempty"`
	ResourceType  string   `json:"resource_type,omitempty"`
	Regions       []string `json:"regions,omitempty"`
	MinDiskSize   int      `json:"min_disk_size,omitempty"`
	SizeGigaBytes float64  `json:"size_gigabytes,omitempty"`
	Created       string   `json:"created_at,omitempty"`
	Tags          []string `json:"tags,omitempty"`
}

Snapshot represents a DigitalOcean Snapshot

func (Snapshot) String added in v1.0.0

func (s Snapshot) String() string

type SnapshotCreateRequest added in v1.0.0

type SnapshotCreateRequest struct {
	VolumeID    string   `json:"volume_id"`
	Name        string   `json:"name"`
	Description string   `json:"description"`
	Tags        []string `json:"tags"`
}

SnapshotCreateRequest represents a request to create a block store volume.

type SnapshotsService added in v1.0.0

type SnapshotsService interface {
	List(context.Context, *ListOptions) ([]Snapshot, *Response, error)
	ListVolume(context.Context, *ListOptions) ([]Snapshot, *Response, error)
	ListDroplet(context.Context, *ListOptions) ([]Snapshot, *Response, error)
	Get(context.Context, string) (*Snapshot, *Response, error)
	Delete(context.Context, string) (*Response, error)
}

SnapshotsService is an interface for interfacing with the snapshots endpoints of the DigitalOcean API See: https://developers.digitalocean.com/documentation/v2#snapshots

type SnapshotsServiceOp added in v1.0.0

type SnapshotsServiceOp struct {
	// contains filtered or unexported fields
}

SnapshotsServiceOp handles communication with the snapshot related methods of the DigitalOcean API.

func (*SnapshotsServiceOp) Delete added in v1.0.0

func (s *SnapshotsServiceOp) Delete(ctx context.Context, snapshotID string) (*Response, error)

Delete an snapshot.

func (*SnapshotsServiceOp) Get added in v1.0.0

func (s *SnapshotsServiceOp) Get(ctx context.Context, snapshotID string) (*Snapshot, *Response, error)

Get retrieves an snapshot by id.

func (*SnapshotsServiceOp) List added in v1.0.0

List lists all the snapshots available.

func (*SnapshotsServiceOp) ListDroplet added in v1.0.0

func (s *SnapshotsServiceOp) ListDroplet(ctx context.Context, opt *ListOptions) ([]Snapshot, *Response, error)

ListDroplet lists all the Droplet snapshots.

func (*SnapshotsServiceOp) ListVolume added in v1.0.0

func (s *SnapshotsServiceOp) ListVolume(ctx context.Context, opt *ListOptions) ([]Snapshot, *Response, error)

ListVolume lists all the volume snapshots.

type Sources added in v1.1.0

type Sources struct {
	Addresses        []string `json:"addresses,omitempty"`
	Tags             []string `json:"tags,omitempty"`
	DropletIDs       []int    `json:"droplet_ids,omitempty"`
	LoadBalancerUIDs []string `json:"load_balancer_uids,omitempty"`
}

Sources represents a DigitalOcean Firewall InboundRule sources.

type StickySessions added in v1.0.0

type StickySessions struct {
	Type             string `json:"type,omitempty"`
	CookieName       string `json:"cookie_name,omitempty"`
	CookieTtlSeconds int    `json:"cookie_ttl_seconds,omitempty"`
}

StickySessions represents optional load balancer session affinity rules.

func (StickySessions) String added in v1.0.0

func (s StickySessions) String() string

String creates a human-readable description of a StickySessions instance.

type StorageActionsService added in v1.0.0

type StorageActionsService interface {
	Attach(ctx context.Context, volumeID string, dropletID int) (*Action, *Response, error)
	DetachByDropletID(ctx context.Context, volumeID string, dropletID int) (*Action, *Response, error)
	Get(ctx context.Context, volumeID string, actionID int) (*Action, *Response, error)
	List(ctx context.Context, volumeID string, opt *ListOptions) ([]Action, *Response, error)
	Resize(ctx context.Context, volumeID string, sizeGigabytes int, regionSlug string) (*Action, *Response, error)
}

StorageActionsService is an interface for interfacing with the storage actions endpoints of the Digital Ocean API. See: https://developers.digitalocean.com/documentation/v2#storage-actions

type StorageActionsServiceOp added in v1.0.0

type StorageActionsServiceOp struct {
	// contains filtered or unexported fields
}

StorageActionsServiceOp handles communication with the storage volumes action related methods of the DigitalOcean API.

func (*StorageActionsServiceOp) Attach added in v1.0.0

func (s *StorageActionsServiceOp) Attach(ctx context.Context, volumeID string, dropletID int) (*Action, *Response, error)

Attach a storage volume to a Droplet.

func (*StorageActionsServiceOp) DetachByDropletID added in v1.0.0

func (s *StorageActionsServiceOp) DetachByDropletID(ctx context.Context, volumeID string, dropletID int) (*Action, *Response, error)

DetachByDropletID a storage volume from a Droplet by Droplet ID.

func (*StorageActionsServiceOp) Get added in v1.0.0

func (s *StorageActionsServiceOp) Get(ctx context.Context, volumeID string, actionID int) (*Action, *Response, error)

Get an action for a particular storage volume by id.

func (*StorageActionsServiceOp) List added in v1.0.0

func (s *StorageActionsServiceOp) List(ctx context.Context, volumeID string, opt *ListOptions) ([]Action, *Response, error)

List the actions for a particular storage volume.

func (*StorageActionsServiceOp) Resize added in v1.0.0

func (s *StorageActionsServiceOp) Resize(ctx context.Context, volumeID string, sizeGigabytes int, regionSlug string) (*Action, *Response, error)

Resize a storage volume.

type StorageAttachment added in v1.0.0

type StorageAttachment struct {
	DropletID int `json:"droplet_id"`
}

StorageAttachment represents the attachement of a block storage volume to a specific Droplet under the device name.

type StorageService added in v1.0.0

type StorageService interface {
	ListVolumes(context.Context, *ListVolumeParams) ([]Volume, *Response, error)
	GetVolume(context.Context, string) (*Volume, *Response, error)
	CreateVolume(context.Context, *VolumeCreateRequest) (*Volume, *Response, error)
	DeleteVolume(context.Context, string) (*Response, error)
	ListSnapshots(ctx context.Context, volumeID string, opts *ListOptions) ([]Snapshot, *Response, error)
	GetSnapshot(context.Context, string) (*Snapshot, *Response, error)
	CreateSnapshot(context.Context, *SnapshotCreateRequest) (*Snapshot, *Response, error)
	DeleteSnapshot(context.Context, string) (*Response, error)
}

StorageService is an interface for interfacing with the storage endpoints of the Digital Ocean API. See: https://developers.digitalocean.com/documentation/v2#storage

type StorageServiceOp added in v1.0.0

type StorageServiceOp struct {
	// contains filtered or unexported fields
}

StorageServiceOp handles communication with the storage volumes related methods of the DigitalOcean API.

func (*StorageServiceOp) CreateSnapshot added in v1.0.0

func (svc *StorageServiceOp) CreateSnapshot(ctx context.Context, createRequest *SnapshotCreateRequest) (*Snapshot, *Response, error)

CreateSnapshot creates a snapshot of a storage volume.

func (*StorageServiceOp) CreateVolume added in v1.0.0

func (svc *StorageServiceOp) CreateVolume(ctx context.Context, createRequest *VolumeCreateRequest) (*Volume, *Response, error)

CreateVolume creates a storage volume. The name must be unique.

func (*StorageServiceOp) DeleteSnapshot added in v1.0.0

func (svc *StorageServiceOp) DeleteSnapshot(ctx context.Context, id string) (*Response, error)

DeleteSnapshot deletes a snapshot.

func (*StorageServiceOp) DeleteVolume added in v1.0.0

func (svc *StorageServiceOp) DeleteVolume(ctx context.Context, id string) (*Response, error)

DeleteVolume deletes a storage volume.

func (*StorageServiceOp) GetSnapshot added in v1.0.0

func (svc *StorageServiceOp) GetSnapshot(ctx context.Context, id string) (*Snapshot, *Response, error)

GetSnapshot retrieves an individual snapshot.

func (*StorageServiceOp) GetVolume added in v1.0.0

func (svc *StorageServiceOp) GetVolume(ctx context.Context, id string) (*Volume, *Response, error)

GetVolume retrieves an individual storage volume.

func (*StorageServiceOp) ListSnapshots added in v1.0.0

func (svc *StorageServiceOp) ListSnapshots(ctx context.Context, volumeID string, opt *ListOptions) ([]Snapshot, *Response, error)

ListSnapshots lists all snapshots related to a storage volume.

func (*StorageServiceOp) ListVolumes added in v1.0.0

func (svc *StorageServiceOp) ListVolumes(ctx context.Context, params *ListVolumeParams) ([]Volume, *Response, error)

ListVolumes lists all storage volumes.

type Tag added in v1.0.0

type Tag struct {
	Name      string           `json:"name,omitempty"`
	Resources *TaggedResources `json:"resources,omitempty"`
}

Tag represent DigitalOcean tag

type TagCreateRequest added in v1.0.0

type TagCreateRequest struct {
	Name string `json:"name"`
}

TagCreateRequest represents the JSON structure of a request of that type.

type TagResourcesRequest added in v1.0.0

type TagResourcesRequest struct {
	Resources []Resource `json:"resources"`
}

TagResourcesRequest represents the JSON structure of a request of that type.

type TaggedDropletsResources added in v1.0.0

type TaggedDropletsResources struct {
	Count         int      `json:"count,float64,omitempty"`
	LastTagged    *Droplet `json:"last_tagged,omitempty"`
	LastTaggedURI string   `json:"last_tagged_uri,omitempty"`
}

TaggedDropletsResources represent the droplet resources a tag is attached to

type TaggedImagesResources added in v1.5.0

type TaggedImagesResources TaggedResourcesData

TaggedImagesResources represent the image resources a tag is attached to

type TaggedResources added in v1.0.0

type TaggedResources struct {
	Count         int                      `json:"count"`
	LastTaggedURI string                   `json:"last_tagged_uri,omitempty"`
	Droplets      *TaggedDropletsResources `json:"droplets,omitempty"`
	Images        *TaggedImagesResources   `json:"images"`
	Volumes       *TaggedVolumesResources  `json:"volumes"`
}

TaggedResources represent the set of resources a tag is attached to

type TaggedResourcesData added in v1.7.5

type TaggedResourcesData struct {
	Count         int    `json:"count,float64,omitempty"`
	LastTaggedURI string `json:"last_tagged_uri,omitempty"`
}

TaggedResourcesData represent the generic resources a tag is attached to

type TaggedVolumesResources added in v1.7.5

type TaggedVolumesResources TaggedResourcesData

TaggedVolumesResources represent the volume resources a tag is attached to

type TagsService added in v1.0.0

TagsService is an interface for interfacing with the tags endpoints of the DigitalOcean API See: https://developers.digitalocean.com/documentation/v2#tags

type TagsServiceOp added in v1.0.0

type TagsServiceOp struct {
	// contains filtered or unexported fields
}

TagsServiceOp handles communication with tag related method of the DigitalOcean API.

func (*TagsServiceOp) Create added in v1.0.0

func (s *TagsServiceOp) Create(ctx context.Context, createRequest *TagCreateRequest) (*Tag, *Response, error)

Create a new tag

func (*TagsServiceOp) Delete added in v1.0.0

func (s *TagsServiceOp) Delete(ctx context.Context, name string) (*Response, error)

Delete an existing tag

func (*TagsServiceOp) Get added in v1.0.0

func (s *TagsServiceOp) Get(ctx context.Context, name string) (*Tag, *Response, error)

Get a single tag

func (*TagsServiceOp) List added in v1.0.0

func (s *TagsServiceOp) List(ctx context.Context, opt *ListOptions) ([]Tag, *Response, error)

List all tags

func (*TagsServiceOp) TagResources added in v1.0.0

func (s *TagsServiceOp) TagResources(ctx context.Context, name string, tagRequest *TagResourcesRequest) (*Response, error)

TagResources associates resources with a given Tag.

func (*TagsServiceOp) UntagResources added in v1.0.0

func (s *TagsServiceOp) UntagResources(ctx context.Context, name string, untagRequest *UntagResourcesRequest) (*Response, error)

UntagResources dissociates resources with a given Tag.

type Timestamp

type Timestamp struct {
	time.Time
}

Timestamp represents a time that can be unmarshalled from a JSON string formatted as either an RFC3339 or Unix timestamp. All exported methods of time.Time can be called on Timestamp.

func (Timestamp) Equal

func (t Timestamp) Equal(u Timestamp) bool

Equal reports whether t and u are equal based on time.Equal

func (Timestamp) String

func (t Timestamp) String() string

func (*Timestamp) UnmarshalJSON

func (t *Timestamp) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the json.Unmarshaler interface. Time is expected in RFC3339 or Unix format.

type UntagResourcesRequest added in v1.0.0

type UntagResourcesRequest struct {
	Resources []Resource `json:"resources"`
}

UntagResourcesRequest represents the JSON structure of a request of that type.

type UpdateProjectRequest added in v1.6.0

type UpdateProjectRequest struct {
	Name        interface{}
	Description interface{}
	Purpose     interface{}
	Environment interface{}
	IsDefault   interface{}
}

UpdateProjectRequest represents the request to update project information. This type expects certain attribute types, but is built this way to allow nil values as well. See `updateProjectRequest` for the "real" types.

func (*UpdateProjectRequest) MarshalJSON added in v1.6.0

func (upr *UpdateProjectRequest) MarshalJSON() ([]byte, error)

MarshalJSON takes an UpdateRequest and converts it to the "typed" request which is sent to the projects API. This is a PATCH request, which allows partial attributes, so `null` values are OK.

type VPC added in v1.11.0

type VPC struct {
	ID         string    `json:"id,omitempty"`
	Name       string    `json:"name,omitempty"`
	RegionSlug string    `json:"region,omitempty"`
	CreatedAt  time.Time `json:"created_at,omitempty"`
	Default    bool      `json:"default,omitempty"`
}

VPC represents a DigitalOcean Virtual Private Cloud configuration.

type VPCCreateRequest added in v1.11.0

type VPCCreateRequest struct {
	Name       string `json:"name,omitempty"`
	RegionSlug string `json:"region,omitempty"`
}

VPCCreateRequest represents a request to create a Virtual Private Cloud.

type VPCSetField added in v1.11.0

type VPCSetField interface {
	// contains filtered or unexported methods
}

VPCSetField allows one to set individual fields within a VPC configuration.

type VPCSetName added in v1.11.0

type VPCSetName string

VPCSetName is used when one want to set the `name` field of a VPC. Ex.: VPCs.Set(..., VPCSetName("new-name"))

type VPCUpdateRequest added in v1.11.0

type VPCUpdateRequest struct {
	Name string `json:"name,omitempty"`
}

VPCUpdateRequest represents a request to update a Virtual Private Cloud.

type VPCsService added in v1.11.0

VPCsService is an interface for managing Virtual Private Cloud configurations with the DigitalOcean API. See: https://developers.digitalocean.com/documentation/v2#vpcs

type VPCsServiceOp added in v1.11.0

type VPCsServiceOp struct {
	// contains filtered or unexported fields
}

VPCsServiceOp interfaces with VPC endpoints in the DigitalOcean API.

func (*VPCsServiceOp) Create added in v1.11.0

func (v *VPCsServiceOp) Create(ctx context.Context, create *VPCCreateRequest) (*VPC, *Response, error)

Create creates a new Virtual Private Cloud.

func (*VPCsServiceOp) Delete added in v1.11.0

func (v *VPCsServiceOp) Delete(ctx context.Context, id string) (*Response, error)

Delete deletes a Virtual Private Cloud. There is no way to recover a VPC once it has been destroyed.

func (*VPCsServiceOp) Get added in v1.11.0

func (v *VPCsServiceOp) Get(ctx context.Context, id string) (*VPC, *Response, error)

Get returns the details of a Virtual Private Cloud.

func (*VPCsServiceOp) List added in v1.11.0

func (v *VPCsServiceOp) List(ctx context.Context, opt *ListOptions) ([]*VPC, *Response, error)

List returns a list of the caller's VPCs, with optional pagination.

func (*VPCsServiceOp) Set added in v1.11.0

func (v *VPCsServiceOp) Set(ctx context.Context, id string, fields ...VPCSetField) (*VPC, *Response, error)

Set updates specific properties of a Virtual Private Cloud.

func (*VPCsServiceOp) Update added in v1.11.0

func (v *VPCsServiceOp) Update(ctx context.Context, id string, update *VPCUpdateRequest) (*VPC, *Response, error)

Update updates a Virtual Private Cloud's properties.

type Volume added in v1.0.0

type Volume struct {
	ID              string    `json:"id"`
	Region          *Region   `json:"region"`
	Name            string    `json:"name"`
	SizeGigaBytes   int64     `json:"size_gigabytes"`
	Description     string    `json:"description"`
	DropletIDs      []int     `json:"droplet_ids"`
	CreatedAt       time.Time `json:"created_at"`
	FilesystemType  string    `json:"filesystem_type"`
	FilesystemLabel string    `json:"filesystem_label"`
	Tags            []string  `json:"tags"`
}

Volume represents a Digital Ocean block store volume.

func (Volume) String added in v1.0.0

func (f Volume) String() string

func (Volume) URN added in v1.6.0

func (f Volume) URN() string

type VolumeCreateRequest added in v1.0.0

type VolumeCreateRequest struct {
	Region          string   `json:"region"`
	Name            string   `json:"name"`
	Description     string   `json:"description"`
	SizeGigaBytes   int64    `json:"size_gigabytes"`
	SnapshotID      string   `json:"snapshot_id"`
	FilesystemType  string   `json:"filesystem_type"`
	FilesystemLabel string   `json:"filesystem_label"`
	Tags            []string `json:"tags"`
}

VolumeCreateRequest represents a request to create a block store volume.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL