class ProjectFifo

Attributes

endpoint[R]
password[R]
ssh_keys[R]
token[R]
username[R]

Public Class Methods

new(endpoint, username, password) click to toggle source
# File lib/project-fifo.rb, line 14
def initialize(endpoint, username, password)
  @endpoint = endpoint
  @username = username
  @password = password
  @ssh_keys = nil
  @verbose = true
  @rest = RestClient::Resource.new(endpoint, :headers => { :content_type => 'application/json', :accept => :json })
end

Public Instance Methods

connect() click to toggle source
# File lib/project-fifo.rb, line 23
def connect()
  response = post('sessions', { 'user' => @username, 'password' => @password })
  @token = response["session"]
  @ssh_keys = response["metadata"]["jingles"]["ssh_keys"]
  @rest.headers[:x_snarl_token] = @token
  response
end
datasets() click to toggle source
# File lib/project-fifo.rb, line 51
def datasets
  @datasets ||= ProjectFifo::Dataset.new(self)
end
delete(path_part, additional_headers = {}, &block) click to toggle source
# File lib/project-fifo.rb, line 43
def delete(path_part, additional_headers = {}, &block)
  api_request { @rest[path_part].delete(additional_headers, &block) }
end
get(path_part, additional_headers = {}, &block) click to toggle source
# File lib/project-fifo.rb, line 35
def get(path_part, additional_headers = {}, &block)
  api_request { @rest[path_part].get(additional_headers, &block) }
end
ipranges() click to toggle source
# File lib/project-fifo.rb, line 59
def ipranges
  @ipranges ||= ProjectFifo::Iprange.new(self)
end
packages() click to toggle source
# File lib/project-fifo.rb, line 55
def packages
  @packages ||= ProjectFifo::Package.new(self)
end
post(path_part, payload, additional_headers = {}, &block) click to toggle source
# File lib/project-fifo.rb, line 31
def post(path_part, payload, additional_headers = {}, &block)
  api_request { @rest[path_part].post(payload.to_json, additional_headers, &block) }
end
put(path_part, payload, additional_headers = {}, &block) click to toggle source
# File lib/project-fifo.rb, line 39
def put(path_part, payload, additional_headers = {}, &block)
  api_request { @rest[path_part].put(payload.to_json, additional_headers, &block) }
end
vms() click to toggle source
# File lib/project-fifo.rb, line 47
def vms
  @vms ||= ProjectFifo::VM.new(self)
end

Protected Instance Methods

api_request(&block) click to toggle source

inspired by github.com/adamhjk/dynect_rest/blob/master/lib/dynect_rest.rb

# File lib/project-fifo.rb, line 66
def api_request(&block)
  response_body = begin
                    response = block.call
                    if 204 == response.code then
                      '{"success": true}'
                    else
                      response.body
                    end
                  rescue RestClient::Exception => e
                    if @verbose
                      puts "I have #{e.inspect} with #{e.http_code}"
                    end
                    e.response
                  end
  result = JSON.parse(response_body)
  return result.is_a?(Hash) ? Hashie::Mash.new(result) : result
end