linodeapi

Gem Version Build Status Coverage Status Code Quality MIT Licensed

Ruby API wrapper for the Linode API

Usage

Create an API object from the LinodeAPI::Raw class, by providing it with either an API key or username and password:

require 'linodeapi'

api_one = LinodeAPI::Raw.new(apikey: 'YOUR_KEY_HERE')
api_two = LinodeAPI::Raw.new(username: 'akerl', password: 'cyberpond')

The Raw API object is a faithful representation of Linode's API spec, parsed directly from the upstream source at runtime. Calls can be made using the methods shown in Linode's API docs:

# cat list.rb
require 'linodeapi'

api = LinodeAPI::Raw.new(apikey: 'KEY')

result = api.linode.list

puts "#{result.size} Linodes found: #{result.map(&:label).join(', ')}"
p result.first
# ruby list.rb
6 Linodes found: miro, olhado, quara, grego, ela, quim
#<OpenStruct alert_cpu_enabled=0, alert_bwin_enabled=0, alert_bwquota_enabled=0, alert_diskio_threshold=1000, backupwindow=4, watchdog=1, distributionvendor="Arch", datacenterid=6, status=1, alert_diskio_enabled=0, create_dt="2014-07-30 20:09:12.0", totalhd=49152, alert_bwquota_threshold=80, totalram=2048, alert_bwin_threshold=5, linodeid=591319, alert_bwout_threshold=5, alert_bwout_enabled=0, backupsenabled=0, alert_cpu_threshold=90, planid=2, backupweeklyday=0, label="miro", lpm_displaygroup="cluster", totalxfer=3000>

Arguments passed in are named just like in the docs:

api.linode.ip.list(linodeid: 591319)

The library will raise an exception if you exclude a required parameter:

api.linode.create
# ArgumentError: linode.create requires planid

Retryable helper

The LinodeAPI::Retryable class automatically handles 429 errors (really, any HTTP error that is accompanied by a Retry-After header).

This class behaves identially to the LinodeAPI::Raw class, with 2 additional parameters at creation: max_retries sets the total number of requests it will attempt per call and max_delay sets the maximum delay between attempts. They default to 3 tries and 60 seconds, respectively.

Installation

gem install linodeapi

License

linodeapi is released under the MIT License. See the bundled LICENSE file for details.