blob: bbfae60adda0fb8f7d0cbdbbfa8b75f15917f64d [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 = "root/cimv2"
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
raise "No classname given" unless classname
client = Client.open
options = Openwsman::ClientOptions.new
uri = Openwsman.epr_uri_for namespace, classname
result = client.enumerate( options, nil, uri )
raise "Connection failed" unless result
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"