wbem 0.2.6 → 0.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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