wbem 0.2.6 → 0.2.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,12 @@
1
+ == 0.2.8
2
+
3
+ * Client#class_names accepts an ObjectPath now
4
+
5
+ == 0.2.7
6
+
7
+ * Adapt to sfcb 1.3.15 root/interop:CIM_Namespace
8
+ * Assume cimxml is via https and wsman requires basic auth
9
+
1
10
  == 0.2.6
2
11
 
3
12
  * Honor iAMT when choosing classnames
@@ -41,13 +41,13 @@ module Wbem
41
41
  u = uri
42
42
  protocol_given = uri.port
43
43
  end
44
- case protocol.to_sym
45
- when :wsman
44
+ case protocol.to_s
45
+ when "wsman"
46
46
  unless protocol_given
47
47
  u.port = (u.scheme == "http") ? 5985 : 5986
48
48
  end
49
49
  return WsmanClient.new u, auth_scheme
50
- when :cimxml
50
+ when "cimxml"
51
51
  unless protocol_given
52
52
  u.port = (u.scheme == "http") ? 5988 : 5989
53
53
  end
@@ -14,7 +14,7 @@ module Sfcc
14
14
  class ObjectPath
15
15
  def keys
16
16
  res = []
17
- each_key { |key| res << key }
17
+ each_key { |key,value| res << key }
18
18
  res
19
19
  end
20
20
  end
@@ -33,7 +33,6 @@ private
33
33
  def _identify
34
34
  # sfcb has /root/interop:CIM_ObjectManager
35
35
  sfcb_op = objectpath "root/interop", "CIM_ObjectManager"
36
- STDERR.puts "Looking for #{sfcb_op}"
37
36
  begin
38
37
  @client.instances(sfcb_op).each do |inst|
39
38
  @product = inst.Description
@@ -44,6 +43,7 @@ private
44
43
  raise "Unknown CIMOM"
45
44
  end
46
45
  end
46
+
47
47
  public
48
48
 
49
49
  #
@@ -54,19 +54,38 @@ public
54
54
  @client = Sfcc::Cim::Client.connect( { :uri => url, :verify => false } )
55
55
  _identify
56
56
  end
57
-
57
+
58
58
  #
59
- # Create ObjectPath from namespace and classname
59
+ # return list of namespaces
60
60
  #
61
- def objectpath namespace, classname = nil
62
- Sfcc::Cim::ObjectPath.new(namespace, classname)
61
+ def namespaces
62
+ result = []
63
+ each_instance( "root/interop", "CIM_Namespace" ) do |inst|
64
+ result << inst.Name
65
+ end
66
+ result.uniq
67
+ end
68
+
69
+ #
70
+ # Create ObjectPath from namespace, classname, and properties
71
+ #
72
+ def objectpath namespace, classname = nil, properties = {}
73
+ op = Sfcc::Cim::ObjectPath.new(namespace, classname, @client)
74
+ properties.each do |k,v|
75
+ op.add_key k,v
76
+ end
77
+ op
63
78
  end
64
79
 
65
80
  #
66
81
  # Return instances for namespace and classname
67
82
  #
68
- def each_instance( ns, cn )
69
- op = objectpath ns, cn
83
+ def each_instance( namespace_or_objectpath, classname = nil )
84
+ op = if namespace_or_objectpath.is_a? Sfcc::Cim::ObjectPath
85
+ namespace_or_objectpath
86
+ else
87
+ objectpath namespace_or_objectpath, classname
88
+ end
70
89
  begin
71
90
  @client.instances(op).each do |inst|
72
91
  yield inst
@@ -76,15 +95,16 @@ public
76
95
  end
77
96
 
78
97
  #
79
- # Return list of classnames for given namespace
98
+ # Return list of classnames for given object_path
80
99
  #
81
- def class_names namespace, deep_inheritance = false
82
- STDERR.puts "#{@client}.class_names(#{namespace})"
100
+ def class_names op, deep_inheritance = false
83
101
  ret = []
84
- op = Sfcc::Cim::ObjectPath.new(namespace)
102
+ unless op.is_a? Sfcc::Cim::ObjectPath
103
+ op = Sfcc::Cim::ObjectPath.new(op.to_s, nil) # assume namespace
104
+ end
85
105
  flags = deep_inheritance ? Sfcc::Flags::DeepInheritance : 0
86
106
  begin
87
- @client.class_names(op,flags).each do |name|
107
+ @client.class_names(op, flags).each do |name|
88
108
  ret << name.to_s
89
109
  end
90
110
  rescue Sfcc::Cim::ErrorInvalidNamespace
@@ -95,10 +115,18 @@ public
95
115
  #
96
116
  # Return list of Wbem::EndpointReference (object pathes) for instances
97
117
  # of namespace, classname
118
+ # @param namespace : String or Sfcc::Cim::ObjectPath
119
+ # @param classname : String (optional)
120
+ # @param properties : Hash (optional)
98
121
  #
99
- def instance_names namespace, classname
100
- objectpath = Sfcc::Cim::ObjectPath.new(namespace,classname)
101
- STDERR.puts "#{@client}.instance_names(#{objectpath})"
122
+ def instance_names namespace, classname=nil, properties={}
123
+ case namespace
124
+ when Sfcc::Cim::ObjectPath
125
+ objectpath = namespace
126
+ namespace = objectpath.namespace
127
+ else
128
+ objectpath = objectpath namespace.to_s, classname, properties
129
+ end
102
130
  ret = []
103
131
  begin
104
132
  @client.instance_names(objectpath).each do |path|
@@ -109,5 +137,24 @@ public
109
137
  end
110
138
  ret
111
139
  end
140
+
141
+ #
142
+ # Return matching Wbem::Instance for first instance
143
+ # matching namespace, classname, properties
144
+ # @param namespace : String or Sfcc::Cim::ObjectPath
145
+ # @param classname : String (optional)
146
+ # @param properties : Hash (optional)
147
+ #
148
+ def get_instance namespace, classname=nil, properties={}
149
+ case namespace
150
+ when Sfcc::Cim::ObjectPath
151
+ objectpath = namespace
152
+ namespace = objectpath.namespace
153
+ else
154
+ objectpath = objectpath namespace.to_s, classname, properties
155
+ end
156
+ ret = []
157
+ @client.get_instance(objectpath)
158
+ end
112
159
  end # class
113
160
  end # module
@@ -1,3 +1,3 @@
1
1
  module Wbem
2
- VERSION = "0.2.6"
2
+ VERSION = "0.2.8"
3
3
  end
@@ -20,7 +20,7 @@ module Wbem
20
20
 
21
21
  def initialize url, auth_scheme = :basic
22
22
  @url = (url.is_a? URI) ? url : URI.parse(url)
23
- @auth_scheme = auth_scheme.to_s.to_sym
23
+ @auth_scheme = auth_scheme.to_s.to_sym rescue nil
24
24
  end
25
25
 
26
26
  def response_code
@@ -35,36 +35,13 @@ module Wbem
35
35
  raise "#{self.class}.objectpath not implemented"
36
36
  end
37
37
 
38
- private
39
- # assemble all namespaces
40
- def _namespaces ns, cn
41
- result = nil
42
- # each_instance is the downcall to cimxml or wsman
43
- each_instance( ns, cn ) do |inst|
44
- result ||= [ns]
45
- name = "#{ns}/#{inst.Name}"
46
- unless result.include? name
47
- result << name
48
- result.concat(_namespaces name, cn)
49
- end
50
- end
51
- result || []
52
- end
53
- public
54
- # return list of namespaces
55
- def namespaces
56
- STDERR.puts "Namespaces for #{@url}"
57
- result = []
58
- ['root', 'Interop', 'interop'].each do |ns|
59
- ["CIM_Namespace", "__Namespace", "__NAMESPACE"].each do |cn|
60
- result.concat(_namespaces ns, cn)
61
- end
62
- end
63
- result.uniq
38
+ def to_s
39
+ "#{@product}(#{@url})"
64
40
  end
65
41
 
66
- # return list of classnames for namespace ns
67
- def class_names ns, deep_inheritance=false
42
+ public
43
+ # return list of classnames for ObjectPath op
44
+ def class_names op, deep_inheritance=false
68
45
  raise "#{self.class}.class_names not implemented"
69
46
  end
70
47
 
@@ -20,27 +20,167 @@ module Openwsman
20
20
  return nil
21
21
  end
22
22
  end
23
+ #
24
+ # Capture Fault as Exception
25
+ #
26
+ class Exception < ::RuntimeError
27
+ def initialize fault
28
+ unless fault.is_a? Openwsman::Fault
29
+ raise "#{fault} is not a fault" unless fault.fault?
30
+ fault = Openwsman::Fault.new fault
31
+ end
32
+ @fault = fault
33
+ end
34
+ def to_s
35
+ "Fault code #{@fault.code}, subcode #{@fault.subcode}" +
36
+ "\n\treason #{@fault.reason}" +
37
+ "\n\tdetail #{@fault.detail}"
38
+ end
39
+ end
40
+ #
41
+ # Capture namespace, classname, and properties as ObjectPath
42
+ #
23
43
  class ObjectPath
24
- attr_reader :namespace, :classname
25
- def initialize namespace, classname = nil
44
+ attr_reader :namespace, :classname, :properties
45
+ def initialize namespace, classname = nil, properties = {}
26
46
  @namespace = namespace
27
47
  @classname = classname
48
+ @properties = properties
28
49
  end
29
50
  end
30
- # Provide Cim::ObjectPath like accessors
51
+ #
52
+ # Provide Cim::ObjectPath like accessors for EndPointReference
53
+ #
31
54
  class EndPointReference
32
- alias keys selector_names
33
- alias key_count selector_count
34
- alias add_key add_selector
55
+ alias :keys :selector_names
56
+ alias :key_count :selector_count
57
+ alias :add_key :add_selector
35
58
  def each_key
36
59
  keys.each { |key| yield key }
37
60
  end
38
61
  end
62
+ #
63
+ # Capture XmlDoc + WsmanClient as Instance
64
+ #
65
+ class Instance
66
+ def initialize node, client, epr_or_uri
67
+ @node = (node.is_a? Openwsman::XmlDoc) ? node.body : node
68
+ @epr = (epr_or_uri.is_a? Openwsman::EndPointReference) ? epr_or_uri : Openwsman::EndPointReference.new(epr_or_uri)
69
+ @client = client
70
+ end
71
+ #
72
+ #
73
+ #
74
+ def to_s
75
+ "Instance #{@client}\n\t#{@epr}\n\t#{@node.to_xml}"
76
+ end
77
+ #
78
+ # Instance#<property>
79
+ # Instance#<method>(<args>)
80
+ #
81
+ def method_missing name, *args
82
+ if args.empty?
83
+ # try property first
84
+ res = @node.send name
85
+ return res.text if res
86
+ end
87
+ # try as method invocation
88
+ options = Openwsman::ClientOptions.new
89
+ options.set_dump_request
90
+ selectors = {}
91
+ @epr.each do |k,v|
92
+ selectors[k] = v
93
+ end
94
+ options.selectors = selectors # instance key properties
95
+ uri = @epr.resource_uri
96
+
97
+ #
98
+ # get method input parameter information
99
+ #
100
+ classname = @epr.classname
101
+ s = "mof/#{classname}"
102
+ begin
103
+ require s
104
+ rescue LoadError
105
+ raise RuntimeError.new "Cannot load #{s} for type information"
106
+ end
107
+ methods = MOF.class_eval "#{classname}::METHODS"
108
+ method = methods[name.to_s]
109
+ raise RuntimeError.new("Unknown method #{name} for #{classname}") unless method
110
+ result_type = method[:type]
111
+ parameters = method[:parameters] || {}
112
+ input = parameters[:in]
113
+ output = parameters[:out]
114
+ argsin = {}
115
+ i = 0
116
+ if input
117
+ while i < input.size
118
+ value = args.shift
119
+ raise "Argument for #{input[i]} is nil, not allowed !" unless value
120
+ argsin[input[i]] = value
121
+ # FIXME more typecheck of args ?
122
+ i += 2
123
+ end
124
+ end
125
+ STDERR.puts "\n\tproperties #{argsin.inspect}\n"
126
+ options.properties = argsin
127
+ #
128
+ # output parameters ?
129
+ #
130
+ argsout = nil
131
+ if output
132
+ if args.empty?
133
+ raise "Function #{name} has output arguments, please add an empty hash to the call"
134
+ end
135
+ argsout = args.shift
136
+ unless argsout.kind_of? Hash
137
+ raise "Function #{name} has output arguments, last argument must be a Hash"
138
+ end
139
+ unless args.empty?
140
+ raise "Function call to #{name} has excess arguments"
141
+ end
142
+ end
143
+ STDERR.puts "\n\targsout #{argsout.inspect}\n"
144
+ Openwsman.debug = -1
145
+ STDERR.puts "\n\tinvoke #{uri}.#{name}\n"
146
+ res = @client.client.invoke(options, uri, name.to_s)
147
+ raise Openwsman::Exception.new(res) if res.fault?
148
+ STDERR.puts "\n\tresult #{res.to_xml}\n"
149
+ result = res.find(uri, "#{name}_OUTPUT").find(uri, "ReturnValue").text
150
+ case result_type
151
+ when :boolean
152
+ result == "true" ? true : false
153
+ when :uint8, :uint16, :uint32, :uint64
154
+ result.to_i
155
+ when :string
156
+ result
157
+ when :float
158
+ result.to_f
159
+ when :datetime
160
+ else
161
+ raise "Unsupported result_type #{result_type.inspect}"
162
+ end
163
+ end
164
+ end
39
165
  end
40
166
 
167
+
41
168
  module Wbem
42
169
  class WsmanClient < WbemClient
43
170
  private
171
+ #
172
+ # create end point reference URI
173
+ #
174
+ def epr_uri_for(namespace,classname)
175
+ case @product
176
+ when :winrm
177
+ # winrm embeds namespace in resource URI
178
+ Openwsman::epr_uri_for(namespace,classname) rescue "http://schema.suse.com/wbem/wscim/1/cim-schema/2/#{namespace}/#{classname}"
179
+ else
180
+ (Openwsman::epr_prefix_for(classname)+"/#{classname}") rescue "http://schema.suse.com/wbem/wscim/1/cim-schema/2/#{classname}"
181
+ end
182
+ end
183
+
44
184
  #
45
185
  # Handle client connection or protocol fault
46
186
  #
@@ -48,15 +188,17 @@ private
48
188
  #
49
189
  def _handle_fault client, result
50
190
  if result.nil?
51
- STDERR.puts "Client connection failed:\n\tResult code #{@client.response_code}, Fault: #{@client.fault_string}"
191
+ STDERR.puts "Client connection failed:\n\tResult code #{client.response_code}, Fault: #{client.fault_string}" if Wbem.debug
52
192
  return true
53
193
  end
54
194
  if result.fault?
55
195
  fault = Openwsman::Fault.new result
56
- STDERR.puts "Client protocol failed for (#{uri})"
57
- STDERR.puts "\tFault code #{fault.code}, subcode #{fault.subcode}"
58
- STDERR.puts "\t\treason #{fault.reason}"
59
- STDERR.puts "\t\tdetail #{fault.detail}"
196
+ if Wbem.debug
197
+ STDERR.puts "Client protocol failed for (#{client})"
198
+ STDERR.puts "\tFault code #{fault.code}, subcode #{fault.subcode}"
199
+ STDERR.puts "\t\treason #{fault.reason}"
200
+ STDERR.puts "\t\tdetail #{fault.detail}"
201
+ end
60
202
  return true
61
203
  end
62
204
  false
@@ -73,13 +215,14 @@ private
73
215
  end
74
216
  if doc.fault?
75
217
  fault = doc.fault
76
- STDERR.puts "Fault: #{fault.to_xml}"
77
- raise fault.to_s
218
+ STDERR.puts "Fault: #{fault.to_xml}" if Wbem.debug
219
+ raise Openwsman::Exception.new fault
78
220
  end
79
221
  # STDERR.puts "Return #{doc.to_xml}"
80
222
  doc
81
223
  end
82
224
  public
225
+ attr_reader :client
83
226
 
84
227
  def initialize uri, auth_scheme = nil
85
228
  super uri, auth_scheme
@@ -92,7 +235,7 @@ public
92
235
  @client.transport.timeout = 5
93
236
  @client.transport.verify_peer = 0
94
237
  @client.transport.verify_host = 0
95
- case @auth_scheme
238
+ case @auth_scheme.to_s
96
239
  when nil, ""
97
240
  @client.transport.auth_method = nil # negotiate
98
241
  when /none/i
@@ -172,15 +315,40 @@ public
172
315
 
173
316
  end
174
317
 
175
- def objectpath classname, namespace
176
- Openwsman::ObjectPath.new classname, namespace
318
+ public
319
+ #
320
+ # return list of namespaces
321
+ #
322
+ def namespaces ns = "root", cn = "__Namespace"
323
+ result = []
324
+ each_instance( ns, cn ) do |inst|
325
+ name = "#{ns}/#{inst.Name}"
326
+ result << name
327
+ result.concat namespaces name, cn
328
+ end
329
+ result.uniq
330
+ end
331
+
332
+ #
333
+ # Create ObjectPath from namespace, classname, and properties
334
+ #
335
+ def objectpath namespace, classname = nil, properties = {}
336
+ Openwsman::ObjectPath.new namespace, classname, properties
177
337
  end
178
338
 
179
- def each_instance( ns, cn )
339
+ #
340
+ # Enumerate instances
341
+ #
342
+ def each_instance( namespace_or_objectpath, classname = nil )
343
+ op = if namespace_or_objectpath.is_a? Openwsman::ObjectPath
344
+ namespace_or_objectpath
345
+ else
346
+ objectpath namespace_or_objectpath, classname
347
+ end
180
348
  @options.flags = Openwsman::FLAG_ENUMERATION_OPTIMIZATION
181
349
  @options.max_elements = 999
182
- resource = "#{@prefix}#{ns}/#{cn}"
183
- result = @client.enumerate( @options, nil, resource )
350
+ uri = epr_uri_for op.namespace, op.classname
351
+ result = @client.enumerate( @options, nil, uri )
184
352
  loop do
185
353
  if _handle_fault @client, result
186
354
  break
@@ -188,34 +356,39 @@ public
188
356
  items = result.Items rescue nil
189
357
  if items
190
358
  items.each do |inst|
191
- yield inst
359
+ yield Openwsman::Instance.new(inst, self, uri)
192
360
  end
193
361
  end
194
362
  context = result.context
195
363
  break unless context
196
- result = @client.pull( @options, nil, resource, context )
364
+ result = @client.pull( @options, nil, uri, context )
197
365
  end
198
366
  end
199
367
 
200
- def class_names namespace, deep_inheritance = false
368
+ #
369
+ # Enumerate class names
370
+ #
371
+ def class_names op, deep_inheritance = false
201
372
  @options.flags = Openwsman::FLAG_ENUMERATION_OPTIMIZATION
202
373
  @options.max_elements = 999
203
- @options.cim_namespace = namespace if @product == :openwsman
374
+ namespace = (op.is_a? Sfcc::ObjectPath) ? op.namespace : op
375
+ classname = (op.is_a? Sfcc::ObjectPath) ? op.classname : nil
204
376
  case @product
205
377
  when :openwsman
206
- unless @product_version >= "2.2"
378
+ if @product_version < "2.2"
207
379
  STDERR.puts "ENUMERATE_CLASS_NAMES unsupported for #{@product_vendor} #{@product_version}, please upgrade"
208
380
  return []
209
381
  end
210
382
  method = Openwsman::CIM_ACTION_ENUMERATE_CLASS_NAMES
211
383
  uri = Openwsman::XML_NS_CIM_INTRINSIC
384
+ @options.cim_namespace = namespace
212
385
  @options.add_selector("DeepInheritance", "True") if deep_inheritance
213
386
  result = @client.invoke( @options, uri, method )
214
387
  when :winrm
215
388
  # see https://github.com/kkaempf/openwsman/blob/master/bindings/ruby/tests/winenum.rb
216
389
  filter = Openwsman::Filter.new
217
390
  query = "select * from meta_class"
218
- query << " where __SuperClass is null" unless deep_inheritance
391
+ query << " where __SuperClass is #{classname?classname:'null'}" unless deep_inheritance
219
392
  filter.wql query
220
393
  uri = "#{@prefix}#{namespace}/*"
221
394
  result = @client.enumerate( @options, filter, uri )
@@ -247,19 +420,43 @@ public
247
420
  break unless context
248
421
  # get the next chunk
249
422
  result = @client.pull( @options, nil, uri, context)
250
- break if _handle_fault
423
+ break if _handle_fault @client, result
251
424
  end
252
425
  end
253
426
  return classes
254
427
  end
255
428
 
256
- def instance_names namespace, classname
429
+ #
430
+ # Return list of Wbem::EndpointReference (object pathes) for instances
431
+ # of namespace, classname
432
+ # @param namespace : String or Sfcc::Cim::ObjectPath
433
+ # @param classname : String (optional)
434
+ # @param properties : Hash (optional)
435
+ #
436
+ def instance_names namespace, classname=nil, properties = {}
437
+ case namespace
438
+ when Openwsman::ObjectPath
439
+ classname = namespace.classname
440
+ properties = namespace.properties
441
+ namespace = namespace.namespace
442
+ uri = epr_uri_for(namespace,classname)
443
+ when Openwsman::EndPointReference
444
+ namespace.each do |k,v|
445
+ properties[k] = v
446
+ end
447
+ classname = namespace.classname
448
+ uri = namespace.resource_uri
449
+ namespace = namespace.namespace
450
+ else
451
+ uri = epr_uri_for(namespace, classname)
452
+ end
257
453
  @options.flags = Openwsman::FLAG_ENUMERATION_ENUM_EPR # get EPRs
258
454
  @options.flags = Openwsman::FLAG_ENUMERATION_OPTIMIZATION
259
455
  @options.max_elements = 999
260
456
  @options.cim_namespace = namespace if @product == :openwsman
261
457
  @options.set_dump_request
262
- uri = Openwsman::epr_prefix_for(classname, namespace) + "/#{classname}"
458
+ @options.selectors = properties unless properties.empty?
459
+ start = Time.now
263
460
  STDERR.puts "instance_names enumerate (#{uri})"
264
461
  result = @client.enumerate( @options, nil, uri )
265
462
  names = []
@@ -278,8 +475,42 @@ public
278
475
  break unless context
279
476
  result = @client.pull( @options, nil, uri, context )
280
477
  end
478
+ STDERR.puts "Enumerated #{names.size} items in #{Time.now-start} seconds"
281
479
  return names
282
480
  end
283
-
481
+
482
+ #
483
+ # Return matching Wbem::Instance for first instance
484
+ # matching namespace, classname, properties
485
+ # @param namespace : String or Sfcc::Cim::ObjectPath
486
+ # @param classname : String (optional)
487
+ # @param properties : Hash (optional)
488
+ #
489
+ def get_instance namespace, classname=nil, properties={}
490
+ case namespace
491
+ when Openwsman::ObjectPath
492
+ classname = namespace.classname
493
+ properties = namespace.properties
494
+ namespace = namespace.namespace
495
+ uri = epr_uri_for(namespace, classname)
496
+ when Openwsman::EndPointReference
497
+ namespace.each do |k,v|
498
+ properties[k] = v
499
+ end
500
+ classname = namespace.classname
501
+ uri = namespace.resource_uri
502
+ namespace = namespace.namespace
503
+ else
504
+ uri = epr_uri_for(namespace, classname)
505
+ end
506
+ @options.set_dump_request
507
+ @options.cim_namespace = namespace if @product == :openwsman
508
+ @options.selectors = properties unless properties.empty?
509
+ STDERR.puts "@client.get(namepace '#{@options.cim_namespace}', props #{properties.inspect}, uri #{uri}"
510
+ res = @client.get(@options, uri)
511
+ raise Openwsman::Exception.new res if res.fault?
512
+ Openwsman::Instance.new res, self, Openwsman::EndPointReference.new(uri, "", properties)
513
+ end
514
+
284
515
  end
285
- end # module
516
+ end # module
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wbem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-16 00:00:00.000000000 Z
12
+ date: 2013-04-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: yard
16
- requirement: &5664140 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '0.5'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *5664140
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0.5'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: sfcc
27
- requirement: &5663580 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: 0.4.1
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *5663580
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 0.4.1
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: openwsman
38
- requirement: &5662940 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,7 +53,12 @@ dependencies:
43
53
  version: 2.3.2
44
54
  type: :runtime
45
55
  prerelease: false
46
- version_requirements: *5662940
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 2.3.2
47
62
  description: ruby-wbem allows to access a CIMOM transparently through CIM/XML or WS-Management
48
63
  email:
49
64
  - kkaempf@suse.de
@@ -51,11 +66,11 @@ executables: []
51
66
  extensions: []
52
67
  extra_rdoc_files: []
53
68
  files:
54
- - lib/wbem.rb
55
- - lib/wbem/wbem.rb
56
- - lib/wbem/cimxml.rb
57
69
  - lib/wbem/version.rb
70
+ - lib/wbem/cimxml.rb
71
+ - lib/wbem/wbem.rb
58
72
  - lib/wbem/wsman.rb
73
+ - lib/wbem.rb
59
74
  - CHANGELOG.rdoc
60
75
  - README.rdoc
61
76
  homepage: http://www.github.com/kkaempf/ruby-wbem
@@ -79,7 +94,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
79
94
  version: 1.3.6
80
95
  requirements: []
81
96
  rubyforge_project:
82
- rubygems_version: 1.8.15
97
+ rubygems_version: 1.8.23
83
98
  signing_key:
84
99
  specification_version: 3
85
100
  summary: WBEM client for Ruby based on ruby-sfcc and openwsman