class Service::Client

Public Class Methods

new(opts={}) click to toggle source
# File lib/opennebula/oneflow_client.rb, line 302
def initialize(opts={})
    @username = opts[:username] || ENV['ONEFLOW_USER']
    @password = opts[:password] || ENV['ONEFLOW_PASSWORD']

    url = opts[:url] || ENV['ONEFLOW_URL'] || 'http://localhost:2474'

    if @username.nil? && @password.nil?
        if ENV["ONE_AUTH"] and !ENV["ONE_AUTH"].empty? and File.file?(ENV["ONE_AUTH"])
            one_auth = File.read(ENV["ONE_AUTH"])
        elsif File.file?(ENV["HOME"]+"/.one/one_auth")
            one_auth = File.read(ENV["HOME"]+"/.one/one_auth")
        end

        one_auth.rstrip!

        @username, @password = one_auth.split(':')
    end

    @uri = URI.parse(url)

    @user_agent = "OpenNebula #{CloudClient::VERSION} " <<
        "(#{opts[:user_agent]||"Ruby"})"

    @host = nil
    @port = nil

    if ENV['http_proxy']
        uri_proxy  = URI.parse(ENV['http_proxy'])
        @host = uri_proxy.host
        @port = uri_proxy.port
    end
end

Public Instance Methods

delete(path) click to toggle source
# File lib/opennebula/oneflow_client.rb, line 341
def delete(path)
    req =Net::HTTP::Proxy(@host, @port)::Delete.new(path)

    do_request(req)
end
get(path) click to toggle source
# File lib/opennebula/oneflow_client.rb, line 335
def get(path)
    req = Net::HTTP::Proxy(@host, @port)::Get.new(path)

    do_request(req)
end
login() click to toggle source
# File lib/opennebula/oneflow_client.rb, line 361
def login
    req = Net::HTTP::Proxy(@host, @port)::Post.new('/login')

    do_request(req)
end
logout() click to toggle source
# File lib/opennebula/oneflow_client.rb, line 367
def logout
    req = Net::HTTP::Proxy(@host, @port)::Post.new('/logout')

    do_request(req)
end
post(path, body) click to toggle source
# File lib/opennebula/oneflow_client.rb, line 347
def post(path, body)
    req = Net::HTTP::Proxy(@host, @port)::Post.new(path)
    req.body = body

    do_request(req)
end
put(path, body) click to toggle source
# File lib/opennebula/oneflow_client.rb, line 354
def put(path, body)
    req = Net::HTTP::Proxy(@host, @port)::Put.new(path)
    req.body = body

    do_request(req)
end

Private Instance Methods

do_request(req) click to toggle source
# File lib/opennebula/oneflow_client.rb, line 375
def do_request(req)
    req.basic_auth @username, @password

    req['User-Agent'] = @user_agent

    res = CloudClient::http_start(@uri, @timeout) do |http|
        http.request(req)
    end

    res
end