All Projects → tutumcloud → Ruby Tutum

tutumcloud / Ruby Tutum

Licence: other
Ruby bindings for accessing the Tutum HTTP API docker host.

Programming Languages

ruby
36898 projects - #4 most used programming language

Build Status Gem Version

Introduction

This library implements Tutum's API. Tutum is a docker host PaaS. See the tutum documentation for a full list of parameters for each method call.

##Installation

$ gem install tutum

Authentication

To make requests, you must secure your username and API key.

  require 'tutum'
  session = Tutum.new(username: username, api_key: api_key)

or by using API Roles.

  require 'tutum'
  session = Tutum.new(tutum_auth: tutum_auth)

you can specify extra json options, such as such switching on :symbolize_name for all response hashes.

  session = Tutum.new(username: username, api_key: api_key, json_opts: {:symbolize_names => true}

Containers

Create a new container

  tutum.containers.create({
    :image_name => "tutum/hello-world", 
    :name => "my-awesome-app", 
    :container_size => "XS", 
    :web_public_dns => "awesome-app.example.com"
  })

List all containers

  tutum.containers.list({})

Get container details

  container_uuid = "7eaf7fff-882c-4f3d-9a8f-a22317ac00ce"
  tutum.containers.get(container_uuid)

Start a container

  container_uuid = "7eaf7fff-882c-4f3d-9a8f-a22317ac00ce"
  tutum.containers.start(container_uuid)

Stop a container

  container_uuid = "7eaf7fff-882c-4f3d-9a8f-a22317ac00ce"
  tutum.containers.stop(container_uuid)

Get the logs of a container

  container_uuid = "7eaf7fff-882c-4f3d-9a8f-a22317ac00ce"
  tutum.containers.logs(container_uuid)

Redeploy a container

  container_uuid = "7eaf7fff-882c-4f3d-9a8f-a22317ac00ce"
  tutum.containers.redeploy(container_uuid, {})

Terminate a container

  container_uuid = "7eaf7fff-882c-4f3d-9a8f-a22317ac00ce"
  tutum.containers.delete(container_uuid)

Actions

List all actions

  tutum.actions.list({})

Get an action by UUID

  action = tutum.actions.get(ACTION_UUID)

Providers

List all providers

  tutum.providers.list({})

Get a provider

  tutum.providers.get(PROVIDER_NAME)

Regions

List all regions

  tutum.regions.list({})

Get an individual region

  tutum.regions.get(REGION_NAME)

Availability Zones

TODO: Not implemented on tutum yet

Node Types

List all node types

  tutum.node_types.list({})

Get an individual node type

  node_type = tutum.node_types.get("digitalocean/1gb")

Node Clusters

List all node clusters

  node_clusters = tutum.node_clusters.list({})

Create a node cluster

  region = tutum.regions.get("digitalocean/lon1")
  node_type = tutum.node_types.get("digitalocean/1gb")
  number_of_nodes = 1
  node_cluster = tutum.node_cluster.create( "my_cluster", node_type, region, number_of_nodes)

Get a node cluster

  service = tutum.node_clusters.get(NODE_CLUSTER_UUID)

Deploy a node cluster

  tutum.node_clusters.deploy(NODE_CLUSTER_UUID)

Update an existing node cluster

  tutum.node_clusters.update(NODE_CLUSTER_UUID, :target_num_nodes => 3)

Terminate a node cluster

  tutum.node_clusters.delete!(NODE_CLUSTER_UUID)

Nodes

List all nodes

tutum.nodes.list({})

Get an existing node

tutum.nodes.get(NODE_UUID)

Deploy a node

tutum.nodes.deploy(NODE_UUID)

Terminate a node

tutum.nodes.terminate(NODE_UUID)

Services

List all services

tutum.services.list({})

Create a new service

service = tutum.services.create(:image => "tutum.co/tutum/hello-world", :name => "my-new-app", :target_num_containers => 1)

Get an existing service

service_uuid = "7eaf7fff-882c-4f3d-9a8f-a22317ac00ce"

service = tutum.services.get(service_uuid)

Get the logs of a service

service_uuid = "7eaf7fff-882c-4f3d-9a8f-a22317ac00ce"

tutum.services.logs(service_uuid)

Update an existing service

service_uuid = "7eaf7fff-882c-4f3d-9a8f-a22317ac00ce"

tutum.services.update(service_uuid, :target_num_containers => 3)

Start a service

service_uuid = "7eaf7fff-882c-4f3d-9a8f-a22317ac00ce"

tutum.services.start(service_uuid)

Stop a service

service_uuid = "7eaf7fff-882c-4f3d-9a8f-a22317ac00ce"

tutum.services.stop(service_uuid)

Redeploy a service

service_uuid = "7eaf7fff-882c-4f3d-9a8f-a22317ac00ce"

tutum.services.redeploy(service_uuid)

Terminate a service

service_uuid = "7eaf7fff-882c-4f3d-9a8f-a22317ac00ce"

tutum.services.terminate(service_uuid)

Stacks

List all stacks

tutum.stacks.list({})

Create a new stack

stack = tutum.stacks.create(name: "my-new-stack",
  services: [
    {
      name: "hello-word",
      image: "tutum/hello-world",
      target_num_containers: 2,
      linked_to_service: [
        {
          to_service: "database",
          name: "DB"
        }
      ]
    },
    {
      name: "database",
      image: "tutum/mysql"
    }
  ]
})

Get an existing stack

stack_uuid = "7eaf7fff-882c-4f3d-9a8f-a22317ac00ce"

stack = tutum.stacks.get(stack_uuid)

Export an existing stack

stack_uuid = "7eaf7fff-882c-4f3d-9a8f-a22317ac00ce"

tutum.stacks.export(stack_uuid)

Update an existing stack

stack_uuid = "7eaf7fff-882c-4f3d-9a8f-a22317ac00ce"

tutum.stacks.update(stack_uuid, services: [
    {
      name: "hello-word",
      image: "tutum/hello-world",
      target_num_containers: 2,
      linked_to_service: [
        {
          to_service: "database",
          name: "DB"
        }
      ]
    },
    {
      name: "database",
      image: "tutum/mysql"
    }
  ]
})

Start a stack

stack_uuid = "7eaf7fff-882c-4f3d-9a8f-a22317ac00ce"

tutum.stacks.start(stack_uuid)

Stop a stack

stack_uuid = "7eaf7fff-882c-4f3d-9a8f-a22317ac00ce"

tutum.stacks.stop(stack_uuid)

Redeploy a stack

stack_uuid = "7eaf7fff-882c-4f3d-9a8f-a22317ac00ce"

tutum.stacks.redeploy(stack_uuid)

Terminate a stack

stack_uuid = "7eaf7fff-882c-4f3d-9a8f-a22317ac00ce"

tutum.stacks.terminate(stack_uuid)

##Testing

To test locally, you must set two environmental variables.

$ export TUTUM_USERNAME=<your_username>
$ export TUTUM_API_KEY=<your_api_key>

Then, bundle and run the tests.

$ bundle
$ rake

About

The ruby tutum API is provided by 255 BITS LLC. Please star it if you like it.

License

MIT

Changelog

v0.2.7 Stacks api and api role support v0.2.6 Bug fixes v0.2.0 Support for tutum 2.0 + new example v0.1.1 Fix runtime dependency v0.1.0 Initial release

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].