require 'rwsman' require 'yast' client = WsMan::Client.new( 'http', 'client.internet.org', 8889, '/wsman', 'user', 'password') options = WsMan::ClientOption.new schema = YaST::SCHEMA uri = schema + "/YCP" options.property_add( "ycp", "{ return SCR::Read( .proc.modules ); }" ) result = client.invoke( uri, "eval", options ) modhash = YaST.decode_result( result ) # hash of { modulename => { size=>1234, used=>3 } }Supported are void, bool, integer, float, string, symbol, path, term, list, and map -- should be sufficient for most of YaST. The YaST class is here. You need at least version 1.1.0 of openwsman and openwsman-yast, both available on the openSUSE build service. And, btw, source code for openwsman-yast is now hosted on svn.opensuse.org
Monday, July 02, 2007
openwsman-yast now returns proper datatypes
After five days of hacking last week, a final itch was left which needed scratching. The YaST openwsman plugin only passed strings back and forth, losing all the type information present in the YCP result value.
So I added some code to convert basic YCP types to XML (in the plugin) and from XML to Ruby (on the client side).
Now the result of a web service call to YaST can be processed directly in Ruby.
Here's a code example showing the contents of /proc/modules on a remote machine.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment