Azuki Ruby Client

The Azuki Ruby Client is used to interact with the Azuki API from Ruby.

For more about the Azuki API see http://api-docs.azukiapp.com.

Build Status

Usage

Start by creating a connection to Azuki with your credentials:

require 'azuki-api'

azuki = Azuki::API.new(:api_key => API_KEY)                           # use API Key
azuki = Azuki::API.new(:username => USERNAME, :password => PASSWORD)  # use username and password
azuki = Azuki::API.new(:headers => {'User-Agent' => 'custom'})        # use custom header

NOTE: You can leave out the :api_key if ENV['AZUKI_API_KEY'] is set instead.

Now you can make requests to the api.

Requests

What follows is an overview of commands you can run for the client.

For additional details about any of the commands, see the API docs.

Add-ons

azuki.delete_addon(APP, ADD_ON)    # remove the ADD_ON add-on from the app named APP
azuki.post_addon(APP, ADD_ON)      # add ADD_ON add-on to an the app named APP
azuki.put_addon(APP, ADD_ON)       # update the ADD_ON add-on on the app named APP
azuki.get_addons                   # see a listing of all available add-ons
azuki.get_addons(APP)              # see listing of installed add-ons for the app named APP

Apps

azuki.delete_app(APP)                  # delete the app named APP
azuki.get_apps                         # get a list of your apps
azuki.get_app(APP)                     # get info about the app named APP
azuki.post_app                         # create an app with a generated name and the default stack
azuki.post_app_maintenance(APP, '1')   # toggle maintenance mode for the app named APP
azuki.post_app('name' => 'app')        # create an app with a specified name, APP
azuki.put_app('name' => 'myapp')       # update an app to have a different name

Collaborators

azuki.delete_collaborator(APP, '[email protected]')   # remove '[email protected]' collaborator from APP app
azuki.get_collaborators(APP)                          # list collaborators for APP app
azuki.post_collaborator(APP, '[email protected]')     # add '[email protected]' collaborator to APP app

Config Variables

azuki.delete_config_var(APP, KEY)               # remove KEY key from APP app
azuki.get_config_vars(APP)                      # get list of config vars for APP app
azuki.put_config_vars(APP, KEY => 'value')      # set KEY key to 'value' for APP app

Domains

azuki.delete_domain(APP, 'example.com')   # remove the 'example.com' domain from the APP app
azuki.get_domains(APP)                    # list configured domains for the APP app
azuki.post_domain(APP, 'example.com')     # add 'example.com' domain to the APP app

Keys

azuki.delete_key('[email protected]') # remove the '[email protected]' key
azuki.delete_keys                       # remove all keys
azuki.get_keys                          # list configured keys
azuki.post_key('key data')              # add key defined by 'key data'

Logs

azuki.get_logs(APP) # return logs information for APP app

Processes

azuki.get_ps(APP)                               # list current processes for APP app
azuki.post_ps(APP, 'command')                   # run 'command' command in context of APP app
azuki.post_ps_restart(APP)                      # restart all processes for APP app
azuki.post_ps_scale(APP, TYPE, QTY)             # scale TYPE type processes to QTY for APP app
azuki.post_ps_stop(APP, 'ps' => 'web.1')        # stop 'web.1' process for APP app
azuki.post_ps_stop(APP, 'type' => 'web')        # stop all 'web' processes for APP app
azuki.post_ps_restart(APP, 'ps' => 'web.1')     # restart 'web.1' process for APP app
azuki.put_dynos(APP, DYNOS)                     # set number of dynos for bamboo app APP to DYNOS
azuki.put_workers(APP, WORKERS)                 # set number of workers for bamboo app APP to WORKERS
azuki.post_ps_scale(APP, 'worker', WORKERS)     # set number of workers for cedar app APP to WORKERS

Releases

azuki.get_releases(APP)       # list of releases for the APP app
azuki.get_release(APP, 'v#')  # get details of 'v#' release for APP app
azuki.post_release(APP, 'v#') # rollback APP app to 'v#' release

Stacks

azuki.get_stack(APP)          # list available stacks
azuki.put_stack(APP, STACK) # migrate APP app to STACK stack

User

azuki.get_user                  # list user info

Mock

For testing (or practice) you can also use a simulated Azuki account:

require 'azuki-api'

azuki = Azuki::API.new(:api_key => API_KEY, :mock => true)

Commands will now behave as normal, however, instead of interacting with your actual Azuki account you'll be interacting with a blank test account. Note: test accounts will have NO apps to begin with. You'll need to create one:

azuki.post_app(:name => 'my-test-app')

Tests

To run tests, first set ENV['AZUKI_API_KEY'] to your api key. Then use bundle exec rake to run mock tests or MOCK=false bundle exec rake to run integration tests.

Meta

Released under the MIT license.