Class: OpenNebula::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/OpenNebula.rb

Overview

The client class, represents the connection with the core and handles the xml-rpc calls.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(secret = nil, endpoint = nil) ⇒ Client



122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# File 'lib/OpenNebula.rb', line 122

def initialize(secret=nil, endpoint=nil)
    if secret
        @one_auth = secret
    elsif 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")
    else
        raise "ONE_AUTH file not present"
    end

    @one_auth.rstrip!

    if endpoint
        @one_endpoint = endpoint
    elsif ENV["ONE_XMLRPC"]
        @one_endpoint = ENV["ONE_XMLRPC"]
    else
        @one_endpoint = "http://localhost:2633/RPC2"
    end

    @server = XMLRPC::Client.new2(@one_endpoint)

    if OpenNebula::NOKOGIRI
        @server.set_parser(NokogiriStreamParser.new)
    elsif XMLPARSER
        @server.set_parser(XMLRPC::XMLParser::XMLStreamParser.new)
    end
end

Instance Attribute Details

#one_authObject

Returns the value of attribute one_auth.



113
114
115
# File 'lib/OpenNebula.rb', line 113

def one_auth
  @one_auth
end

Instance Method Details

#call(action, *args) ⇒ Object



152
153
154
155
156
157
158
159
160
161
162
163
164
# File 'lib/OpenNebula.rb', line 152

def call(action, *args)
    begin
        response = @server.call_async("one."+action, @one_auth, *args)

        if response[0] == false
            Error.new(response[1], response[2])
        else
            response[1] #response[1..-1]
        end
    rescue Exception => e
        Error.new(e.message)
    end
end