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