Class: OpenNebula::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/opennebula/client.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, options = {}) ⇒ OpenNebula::Client

Creates a new client object that will be used to call OpenNebula functions.

Parameters:

  • secret (String, nil) (defaults to: nil)

    user credentials (“user:password”) or nil to get the credentials from user auth file

  • endpoint (String, nil) (defaults to: nil)

    OpenNebula server endpoint (host:2633/RPC2) or nil to get it form the environment variable ONE_XMLRPC or use the default endpoint

  • options (Hash) (defaults to: {})
  • params (Hash)

    a customizable set of options



110
111
112
113
114
115
116
117
118
119
120
121
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
151
152
153
154
# File 'lib/opennebula/client.rb', line 110

def initialize(secret=nil, endpoint=nil, options={})
    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 ENV["HOME"] and File.file?(ENV["HOME"]+"/.one/one_auth")
        @one_auth = File.read(ENV["HOME"]+"/.one/one_auth")
    elsif File.file?("/var/lib/one/.one/one_auth")
        @one_auth = File.read("/var/lib/one/.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"]
    elsif ENV['HOME'] and File.exists?(ENV['HOME']+"/.one/one_endpoint")
        @one_endpoint = File.read(ENV['HOME']+"/.one/one_endpoint")
    elsif File.exists?("/var/lib/one/.one/one_endpoint")
        @one_endpoint = File.read("/var/lib/one/.one/one_endpoint")
    else
        @one_endpoint = "http://localhost:2633/RPC2"
    end

    timeout=nil
    timeout=options[:timeout] if options[:timeout]

    http_proxy=nil
    http_proxy=options[:http_proxy] if options[:http_proxy]

    @server = XMLRPC::Client.new2(@one_endpoint, http_proxy, timeout)
    @server.http_header_extra = {'accept-encoding' => 'identity'}

    if defined?(OxStreamParser)
        @server.set_parser(OxStreamParser.new)
    elsif 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.



85
86
87
# File 'lib/opennebula/client.rb', line 85

def one_auth
  @one_auth
end

#one_endpointObject (readonly)

Returns the value of attribute one_endpoint.



86
87
88
# File 'lib/opennebula/client.rb', line 86

def one_endpoint
  @one_endpoint
end

Instance Method Details

#call(action, *args) ⇒ Object



156
157
158
159
160
161
162
163
164
165
166
167
168
# File 'lib/opennebula/client.rb', line 156

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

#get_versionObject



170
171
172
# File 'lib/opennebula/client.rb', line 170

def get_version()
    call("system.version")
end