Skip to content
Elixir wrapper for the DigitalOcean API
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
config
lib
test
.gitignore
LICENSE
README.md
mix.exs

README.md

Overview

Dead simple Elixir wrapper for the DigitalOcean API.

Installation

First, add DigitalOcean to your mix.exs dependencies:

def deps do
  [{:digitalocean_api_wrapper, "~> 0.1"}]
end

Then, update your dependencies:

$ mix deps.get

Configuration

See the sample configuration

Edit to taste.

Usage

The library leverages the Tesla HTTP library, and for now it simply wraps the Tesla GET/POST/etc methods directly.

The path and JSON data parameters can be figured out via DigitalOcean's API.

Examples

# Get account info.
{:ok, response} = DigitalOcean.get "/account"
IO.puts response.status
IO.inspect response.headers
IO.inspect response.body

# Get images.
{:ok, response} = DigitalOcean.get("/images", query: [per_page: 200])
Enum.each response.body["images"], fn image ->
  IO.inspect image
end

# This is a handy trick for bypassing DO's requirement to reset the root
# password on first login. Edit 'someotherpassword' to the root password you'd
# like, pass user_data in the configuration, and ignore the DO root password
# email :)
user_data = "#cloud-config\n\nruncmd:\n  - echo root:someotherpassword | chpasswd"

# Create droplet.
configuration = %{
  image: 30035107,
  name: "my-debian-stretch",
  region: "nyc3",
  size: "512mb",
  private_networking: false,
  ipv6: false,
  backups: false,
  monitoring: false,
  tags: [
    "some-server-tag",
  ],
  user_data: user_data,
}
{:ok, response} = DigitalOcean.post("/droplets", configuration)

# Rename droplet.
id = 75372859
{:ok, response} = DigitalOcean.post("/droplets/#{id}/actions", %{:type => "rename", :name => "updated-debian-stretch"})

# Delete droplet.
id = 75372859
{:ok, response} = DigitalOcean.delete("/droplets/#{id}")
You can’t perform that action at this time.