blob: 20a188ec46937899e2ba1bdec5f7716805ef15f1 [file] [log] [blame]
# cimenum.rb
# enumerate/pull/release for any class
require 'test/unit'
require 'rexml/document'
require File.join(File.dirname(__FILE__),'_loadpath')
require 'openwsman'
require '_client'
def show_fault result
return unless result.fault?
fault = Openwsman::Fault.new result
puts "Fault code #{fault.code}, subcode #{fault.subcode}"
puts "\treason #{fault.reason}"
puts "\tdetail #{fault.detail}"
exit 1
end
debug = nil
namespace = nil
classname = nil
loop do
opt = ARGV.shift
break unless opt
case opt
when "-d" then debug = true
when "-n" then namespace = ARGV.shift
else
classname = opt
end
end
client = Client.open
options = Openwsman::ClientOptions.new
uri = "#{Openwsman.epr_prefix_for(classname,namespace)}/#{classname}"
result = client.enumerate( options, nil, uri )
STDERR.puts result.to_xml if debug
show_fault result
count = 0
context = result.context
while (context)
count += 1
result = client.pull( options, nil, uri, context )
# puts "Response ##{count}"
# puts "### #{result.to_xml}"
result.body.PullResponse.Items.each do |child|
puts "#{child.name}"
child.each do |prop|
puts "\t#{prop.name} = #{prop.text}"
end
end
context = result.context
end
client.release( options, uri, context ) if context
puts "Got #{count} responses"