User Tools

Site Tools


userspace:webservice_corner:ruby-rpc

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
userspace:webservice_corner:ruby-rpc [2014/06/20 09:04]
dkoch
userspace:webservice_corner:ruby-rpc [2015/02/06 10:29]
dkoch [Example]
Line 1: Line 1:
 ====== Ruby JSON-RPC ====== ====== Ruby JSON-RPC ======
-This is an example for a json-rpc in Ruby+This is an example of a JSON-RPC send from [[https://www.ruby-lang.org|Ruby]] code. 
 + 
 +===== Dependencies  ===== 
 +Use gem to install json first. 
 +<code>gem install json</code> 
 + 
 +===== Example ===== 
 +This is an example for a json-rpc in Ruby
 +Change **test:w00t** to match a valid user and password and **opsi-server** to your opsiconfd-server.
  
 <code ruby> <code ruby>
 require 'net/http'                                                                                                                                                                                              require 'net/http'                                                                                                                                                                                             
 require 'uri'                                                                                                                                                                                                   require 'uri'                                                                                                                                                                                                  
-require 'json'                                                                                                                                                                                                 +require 'json
 +require 'openssl                                                                                                                                                                                                
                                                                                                                                                                                                                                                                                                                                                                                                                                
 class OpsiRPC                                                                                                                                                                                                   class OpsiRPC                                                                                                                                                                                                  
Line 33: Line 42:
 end                                                                                                                                                                                                             end                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                                                                                                                                                                                
-  = OpsiRPC.new('https://test:w00t@opsi-server:4447/rpc'                                                                                                                                              +  opsirpc = OpsiRPC.new('https://test:w00t@opsi-server:4447/rpc'                                                                                                                                              
                                                                                                                                                                                                                                                                                                                                                                                                                                
-                                                                                                                                                                                                                +# Examples: 
-prodcuts=h.product_getObjects                                                                                                                                                                                   + 
-prodcuts.each do |product|                                                                                                                                                                                     +# Show all product ids 
 +opsirpc.product_getObjects.each do |product|                                                                                                                                                                                     
   puts product['id'                                                                                                                                                                                             puts product['id'                                                                                                                                                                                          
-end       +end 
 + 
 +# Query only particular fields ( "type" in this example ) 
 +# ( attributes: ) 
 +opsirpc.product_getObjects("type").each do |result| 
 +  puts result 
 +end 
 + 
 +# Get products where packageVersion=2.1 
 +# ( filter: ) 
 +opsirpc.product_getObjects(nil,packageVersion:"2.1").each do |result| 
 +  puts result 
 +end 
 + 
 +# Install Y where X is installed 
 +opsirpc.productOnClient_getHashes(['clientId'], {productId: 'X', installationStatus: "installed"}).each do |match| 
 +  opsirpc.setProductActionRequestWithDependencies('Y', match['clientId'], 'setup'
 +end
 </code> </code>
userspace/webservice_corner/ruby-rpc.txt · Last modified: 2021/08/23 08:37 (external edit)