idcf/idcf-ilb-ruby

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# Idcf::Ilb
[![Gem Version](https://badge.fury.io/rb/idcf-ilb.svg)](http://badge.fury.io/rb/idcf-ilb)
[![Build Status](https://travis-ci.org/idcf/idcf-ilb-ruby.svg?branch=master)](https://travis-ci.org/idcf/idcf-ilb-ruby)
[![Code Climate](https://codeclimate.com/github/idcf/idcf-ilb-ruby/badges/gpa.svg)](https://codeclimate.com/github/idcf/idcf-ilb-ruby)
[![Test Coverage](https://codeclimate.com/github/idcf/idcf-ilb-ruby/badges/coverage.svg)](https://codeclimate.com/github/idcf/idcf-ilb-ruby/coverage)

A Ruby client for IDCF Cloud ILB service.

## Installation
Note: requires Ruby 2.1.0 or higher.

Add this line to your application's Gemfile:

```ruby
gem 'idcf-ilb'
```

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install idcf-ilb

## Usage
### Basic usage
#### Client
You can create a instance of client by specifying API_KEY and SECRET_KEY.  
You can get API_KEY and SECRET_KEY in [IDCF Cloud](https://console.idcfcloud.com/user/apikey).  
You can also specify HOST. If you do not specify HOST, your client send request to "ilb.jp-east.idcfcloud.com".

```ruby
require "idcf/ilb"

client =
  Idcf::Ilb::Client.new(
    api_key: ENV["IDCF_API_KEY"],
    secret_key: ENV["IDCF_SECRET_KEY"],
    host: ENV["IDCF_ILB_HOST"]
  )

# Call GET request directly
# returns Response object
response = client.get("loadbalancers")
response.success? #=> true
response.status   #=> 200

# Response#body returns HTTP response body as a hash or an array
response.body     #=> [loadbalancer1, loadbalancer2, ...]
response.body[0]  #=> loadbalancer1

# Response#[] is alias to Response#body[]
response[0]       #=> loadbalancer1
```

#### Servers
##### Add server
```ruby
# Get target config of loadbalancer
config = client.list_loadbalancers.body.first["configs"].first

# Specify of the adding target server IP address and port
adding_server =
  {
    ipaddress: "xxx.xxx.xxx.xxx",
    port: 80
  }

# Add server to config
response =
  client.add_server(
    config["loadbalancer_id"],
    config["id"],
    adding_server
  )

response #=> server array
```

##### Get servers
```ruby
loadbalancer = client.loadbalancers.body.first # Get one of the loadbalancer
config = loadbalancer["configs"].first # Get one of the loadbalancer's config hash
response = client.list_servers(loadbalancer["id"], config["id"])

response #=> server array
```

##### Delete server
```ruby
# Get one of the loadbalancer's config hash
config = client.list_loadbalancers.body.first["configs"].first

# Specify of the deletion target server IP address and port
deletion_server = config["servers"].first

response =
  client.delete_server(
    config["loadbalancer_id"],
    config["id"],
    deletion_server["id"]
  )

response #=> server array
```

## Contributing

1. Fork it ( https://github.com/idcf/idcf-ilb-ruby/fork )
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request