rbvmomi 1.8.2 → 2.4.1

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.
Files changed (79) hide show
  1. checksums.yaml +5 -13
  2. data/LICENSE +1 -1
  3. data/README.md +114 -0
  4. data/{bin → exe}/rbvmomish +5 -5
  5. data/lib/rbvmomi.rb +11 -7
  6. data/lib/rbvmomi/basic_types.rb +9 -1
  7. data/lib/rbvmomi/connection.rb +11 -9
  8. data/lib/rbvmomi/deserialization.rb +4 -3
  9. data/lib/rbvmomi/fault.rb +3 -1
  10. data/lib/rbvmomi/{trollop.rb → optimist.rb} +10 -8
  11. data/lib/rbvmomi/pbm.rb +3 -1
  12. data/lib/rbvmomi/sms.rb +3 -1
  13. data/lib/rbvmomi/sms/SmsStorageManager.rb +3 -0
  14. data/lib/rbvmomi/sso.rb +313 -0
  15. data/lib/rbvmomi/trivial_soap.rb +19 -11
  16. data/lib/rbvmomi/type_loader.rb +4 -2
  17. data/lib/rbvmomi/utils/admission_control.rb +22 -19
  18. data/lib/rbvmomi/utils/deploy.rb +18 -14
  19. data/lib/rbvmomi/utils/leases.rb +4 -1
  20. data/lib/rbvmomi/utils/perfdump.rb +4 -1
  21. data/lib/rbvmomi/version.rb +6 -0
  22. data/lib/rbvmomi/vim.rb +41 -12
  23. data/lib/rbvmomi/vim/ComputeResource.rb +3 -0
  24. data/lib/rbvmomi/vim/Datacenter.rb +8 -0
  25. data/lib/rbvmomi/vim/Datastore.rb +5 -1
  26. data/lib/rbvmomi/vim/DynamicTypeMgrAllTypeInfo.rb +3 -0
  27. data/lib/rbvmomi/vim/DynamicTypeMgrDataTypeInfo.rb +4 -1
  28. data/lib/rbvmomi/vim/DynamicTypeMgrManagedTypeInfo.rb +15 -7
  29. data/lib/rbvmomi/vim/Folder.rb +19 -12
  30. data/lib/rbvmomi/vim/HostSystem.rb +5 -2
  31. data/lib/rbvmomi/vim/ManagedEntity.rb +3 -0
  32. data/lib/rbvmomi/vim/ManagedObject.rb +4 -1
  33. data/lib/rbvmomi/vim/ObjectContent.rb +3 -0
  34. data/lib/rbvmomi/vim/ObjectUpdate.rb +3 -0
  35. data/lib/rbvmomi/vim/OvfManager.rb +6 -2
  36. data/lib/rbvmomi/vim/PerfCounterInfo.rb +3 -1
  37. data/lib/rbvmomi/vim/PerformanceManager.rb +3 -0
  38. data/lib/rbvmomi/vim/PropertyCollector.rb +3 -0
  39. data/lib/rbvmomi/vim/ReflectManagedMethodExecuter.rb +5 -2
  40. data/lib/rbvmomi/vim/ResourcePool.rb +3 -0
  41. data/lib/rbvmomi/vim/ServiceInstance.rb +3 -0
  42. data/lib/rbvmomi/vim/Task.rb +3 -0
  43. data/lib/rbvmomi/vim/VirtualMachine.rb +13 -12
  44. data/vmodl.db +0 -0
  45. metadata +100 -63
  46. data/.yardopts +0 -6
  47. data/README.rdoc +0 -78
  48. data/Rakefile +0 -45
  49. data/VERSION +0 -1
  50. data/devel/analyze-vim-declarations.rb +0 -213
  51. data/devel/analyze-xml.rb +0 -46
  52. data/devel/benchmark.rb +0 -117
  53. data/devel/collisions.rb +0 -18
  54. data/devel/merge-internal-vmodl.rb +0 -59
  55. data/devel/merge-manual-vmodl.rb +0 -32
  56. data/examples/annotate.rb +0 -54
  57. data/examples/cached_ovf_deploy.rb +0 -120
  58. data/examples/clone_vm.rb +0 -84
  59. data/examples/create_vm-1.9.rb +0 -93
  60. data/examples/create_vm.rb +0 -93
  61. data/examples/extraConfig.rb +0 -54
  62. data/examples/lease_tool.rb +0 -102
  63. data/examples/logbundle.rb +0 -63
  64. data/examples/logtail.rb +0 -60
  65. data/examples/nfs_datastore.rb +0 -95
  66. data/examples/power.rb +0 -59
  67. data/examples/readme-1.rb +0 -35
  68. data/examples/readme-2.rb +0 -51
  69. data/examples/run.sh +0 -41
  70. data/examples/screenshot.rb +0 -48
  71. data/examples/vdf.rb +0 -81
  72. data/examples/vm_drs_behavior.rb +0 -76
  73. data/test/test_deserialization.rb +0 -383
  74. data/test/test_emit_request.rb +0 -128
  75. data/test/test_exceptions.rb +0 -14
  76. data/test/test_helper.rb +0 -14
  77. data/test/test_misc.rb +0 -24
  78. data/test/test_parse_response.rb +0 -69
  79. data/test/test_serialization.rb +0 -311
@@ -1,128 +0,0 @@
1
- require 'test_helper'
2
-
3
- class EmitRequestTest < Test::Unit::TestCase
4
- MO = VIM::VirtualMachine(nil, "foo")
5
-
6
- def check desc, str, this, params
7
- soap = VIM.new(:ns => 'urn:vim25', :rev => '4.0')
8
- xml = Builder::XmlMarkup.new :indent => 2
9
- soap.emit_request xml, 'root', desc, this, params
10
-
11
- begin
12
- assert_equal str, xml.target!
13
- rescue MiniTest::Assertion
14
- puts "expected:"
15
- puts str
16
- puts
17
- puts "got:"
18
- puts xml.target!
19
- puts
20
- raise
21
- end
22
- end
23
-
24
- def test_string_array
25
- desc = [
26
- {
27
- 'name' => 'blah',
28
- 'is-array' => true,
29
- 'is-optional' => true,
30
- 'wsdl_type' => 'xsd:string',
31
- }
32
- ]
33
-
34
- check desc, <<-EOS, MO, :blah => ['a', 'b', 'c']
35
- <root xmlns="urn:vim25">
36
- <_this type="VirtualMachine">foo</_this>
37
- <blah>a</blah>
38
- <blah>b</blah>
39
- <blah>c</blah>
40
- </root>
41
- EOS
42
- end
43
-
44
- def test_required_param
45
- desc = [
46
- {
47
- 'name' => 'blah',
48
- 'is-array' => false,
49
- 'is-optional' => false,
50
- 'wsdl_type' => 'xsd:string',
51
- }
52
- ]
53
-
54
- check desc, <<-EOS, MO, :blah => 'a'
55
- <root xmlns="urn:vim25">
56
- <_this type="VirtualMachine">foo</_this>
57
- <blah>a</blah>
58
- </root>
59
- EOS
60
-
61
- assert_raise RuntimeError do
62
- check desc, <<-EOS, MO, {}
63
- <root xmlns="urn:vim25">
64
- <_this type="VirtualMachine">foo</_this>
65
- </root>
66
- EOS
67
- end
68
- end
69
-
70
- def test_optional_param
71
- desc = [
72
- {
73
- 'name' => 'blah',
74
- 'is-array' => false,
75
- 'is-optional' => true,
76
- 'wsdl_type' => 'xsd:string',
77
- }
78
- ]
79
-
80
- check desc, <<-EOS, MO, {}
81
- <root xmlns="urn:vim25">
82
- <_this type="VirtualMachine">foo</_this>
83
- </root>
84
- EOS
85
- end
86
-
87
- def test_nil_optional_param
88
- desc = [
89
- {
90
- 'name' => 'blah',
91
- 'is-array' => false,
92
- 'is-optional' => true,
93
- 'wsdl_type' => 'xsd:string',
94
- }
95
- ]
96
-
97
- check desc, <<-EOS, MO, :blah => nil
98
- <root xmlns="urn:vim25">
99
- <_this type="VirtualMachine">foo</_this>
100
- </root>
101
- EOS
102
- end
103
-
104
- def test_string_key
105
- desc = [
106
- {
107
- 'name' => 'blah',
108
- 'is-array' => false,
109
- 'is-optional' => false,
110
- 'wsdl_type' => 'xsd:string',
111
- }
112
- ]
113
-
114
- check desc, <<-EOS, MO, 'blah' => 'a'
115
- <root xmlns="urn:vim25">
116
- <_this type="VirtualMachine">foo</_this>
117
- <blah>a</blah>
118
- </root>
119
- EOS
120
- end
121
-
122
- def disabled_test_required_property
123
- assert_raise RuntimeError do
124
- VIM::AboutInfo()
125
- end
126
- end
127
- end
128
-
@@ -1,14 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ExceptionTest < Test::Unit::TestCase
4
- def test_fault
5
- begin
6
- fault = VIM::InvalidArgument.new :invalidProperty => 'foo'
7
- assert_raises RbVmomi::Fault do
8
- raise RbVmomi::Fault.new('A specified parameter was not correct.', fault)
9
- end
10
- rescue VIM::InvalidArgument
11
- assert_equal 'foo', $!.invalidProperty
12
- end
13
- end
14
- end
data/test/test_helper.rb DELETED
@@ -1,14 +0,0 @@
1
- coverage_tool = :simplecov if ENV['RBVMOMI_COVERAGE']
2
-
3
- case coverage_tool
4
- when :simplecov
5
- require 'simplecov'
6
- SimpleCov.start
7
- when :cover_me
8
- require 'cover_me'
9
- end
10
-
11
- require 'rbvmomi'
12
- VIM = RbVmomi::VIM
13
-
14
- require 'test/unit'
data/test/test_misc.rb DELETED
@@ -1,24 +0,0 @@
1
- require 'test_helper'
2
-
3
- class MiscTest < Test::Unit::TestCase
4
- def test_overridden_const
5
- assert(VIM::SecurityError < RbVmomi::BasicTypes::Base)
6
- assert_equal 'SecurityError', VIM::SecurityError.wsdl_name
7
- end
8
-
9
- # XXX
10
- def disabled_test_dynamically_overridden_const
11
- assert !VIM.const_defined?(:ClusterAttemptedVmInfo)
12
- Object.const_set :ClusterAttemptedVmInfo, :override
13
- assert VIM::ClusterAttemptedVmInfo.is_a?(Class)
14
- assert(VIM::ClusterAttemptedVmInfo < RbVmomi::BasicTypes::Base)
15
- assert_equal 'ClusterAttemptedVmInfo', VIM::ClusterAttemptedVmInfo.wsdl_name
16
- end
17
-
18
- def test_loader
19
- klass = VIM.loader.get('HostSystem')
20
- klass2 = VIM::HostSystem
21
- assert_equal klass, klass2
22
- end
23
- end
24
-
@@ -1,69 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ParseResponseTest < Test::Unit::TestCase
4
- def check desc, str, expected
5
- soap = VIM.new(:ns => 'urn:vim25', :rev => '4.0')
6
- got = soap.parse_response Nokogiri(str).root, desc
7
- assert_equal expected, got
8
- end
9
-
10
- def test_string_array
11
- desc = { 'wsdl_type' => 'xsd:string', 'is-array' => true, 'is-task' => false }
12
-
13
- check desc, <<-EOS, ['a', 'b', 'c']
14
- <root xmlns="urn:vim25">
15
- <blah>a</blah>
16
- <blah>b</blah>
17
- <blah>c</blah>
18
- </root>
19
- EOS
20
- end
21
-
22
- def test_missing_parameter_fault
23
- desc = { 'wsdl_type' => nil, 'is-array' => false, 'is-task' => false }
24
-
25
- assert_raise RuntimeError do
26
- check desc, <<-EOS, ['a', 'b', 'c']
27
- <soapenv:Fault xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
28
- <faultcode>ClientFaultCode</faultcode>
29
- <faultstring>Required parameter selectionSet is missing</faultstring>
30
- </soapenv:Fault>
31
- EOS
32
- end
33
- end
34
-
35
- def test_invalid_argument_fault
36
- desc = { 'wsdl_type' => nil, 'is-array' => false, 'is-task' => false }
37
-
38
- assert_raise RbVmomi::Fault do
39
- begin
40
- check desc, <<-EOS, nil
41
- <soapenv:Fault xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
42
- <faultcode>ServerFaultCode</faultcode>
43
- <faultstring>A specified parameter was not correct. ticketType</faultstring>
44
- <detail>
45
- <InvalidArgumentFault xmlns="urn:vim25" xsi:type="InvalidArgument">
46
- <invalidProperty>ticketType</invalidProperty>
47
- </InvalidArgumentFault>
48
- </detail>
49
- </soapenv:Fault>
50
- EOS
51
- rescue VIM::InvalidArgument
52
- raise
53
- rescue
54
- raise "wrong fault"
55
- end
56
- end
57
- end
58
-
59
- def test_task_array_result
60
- desc = { 'wsdl_type' => 'xsd:string', 'is-array' => true, 'is-task' => true }
61
-
62
- check desc, <<-EOS, VIM.Task(nil, 'haTask-ha-host-vim.DiagnosticManager.generateLogBundles-865')
63
- <root xmlns="urn:vim25">
64
- <returnval type="Task">haTask-ha-host-vim.DiagnosticManager.generateLogBundles-865</returnval>
65
- </root>
66
- EOS
67
- end
68
- end
69
-
@@ -1,311 +0,0 @@
1
- require 'test_helper'
2
-
3
- class SerializationTest < Test::Unit::TestCase
4
- def check str, obj, type, array=false
5
- conn = VIM.new(:ns => 'urn:vim25', :rev => '4.0')
6
- xml = Builder::XmlMarkup.new :indent => 2
7
- conn.obj2xml(xml, 'root', type, array, obj)
8
-
9
- begin
10
- assert_equal str, xml.target!
11
- rescue MiniTest::Assertion
12
- puts "expected:"
13
- puts str
14
- puts
15
- puts "got:"
16
- puts xml.target!
17
- puts
18
- raise
19
- end
20
- end
21
-
22
- def test_moref
23
- check <<-EOS, VIM.Folder(nil, "ha-folder-host"), "Folder"
24
- <root type="Folder">ha-folder-host</root>
25
- EOS
26
- end
27
-
28
- def test_config
29
- cfg = VIM.VirtualMachineConfigSpec(
30
- :name => 'vm',
31
- :files => { :vmPathName => '[datastore1]' },
32
- :guestId => 'otherGuest64',
33
- :numCPUs => 2,
34
- :memoryMB => 3072,
35
- :deviceChange => [
36
- {
37
- :operation => :add,
38
- :device => VIM.VirtualLsiLogicController(
39
- :key => 1000,
40
- :busNumber => 0,
41
- :sharedBus => :noSharing
42
- )
43
- }, VIM.VirtualDeviceConfigSpec(
44
- :operation => VIM.VirtualDeviceConfigSpecOperation(:add),
45
- :fileOperation => VIM.VirtualDeviceConfigSpecFileOperation(:create),
46
- :device => VIM.VirtualDisk(
47
- :key => 0,
48
- :backing => VIM.VirtualDiskFlatVer2BackingInfo(
49
- :fileName => '[datastore1]',
50
- :diskMode => :persistent,
51
- :thinProvisioned => true
52
- ),
53
- :controllerKey => 1000,
54
- :unitNumber => 0,
55
- :capacityInKB => 4000000
56
- )
57
- ), {
58
- :operation => :add,
59
- :device => VIM.VirtualE1000(
60
- :key => 0,
61
- :deviceInfo => {
62
- :label => 'Network Adapter 1',
63
- :summary => 'VM Network'
64
- },
65
- :backing => VIM.VirtualEthernetCardNetworkBackingInfo(
66
- :deviceName => 'VM Network'
67
- ),
68
- :addressType => 'generated'
69
- )
70
- }
71
- ],
72
- :extraConfig => [
73
- {
74
- :key => 'bios.bootOrder',
75
- :value => 'ethernet0'
76
- }
77
- ]
78
- )
79
- check <<-EOS, cfg, "VirtualMachineConfigSpec"
80
- <root xsi:type="VirtualMachineConfigSpec">
81
- <name>vm</name>
82
- <guestId>otherGuest64</guestId>
83
- <files xsi:type="VirtualMachineFileInfo">
84
- <vmPathName>[datastore1]</vmPathName>
85
- </files>
86
- <numCPUs>2</numCPUs>
87
- <memoryMB>3072</memoryMB>
88
- <deviceChange xsi:type="VirtualDeviceConfigSpec">
89
- <operation>add</operation>
90
- <device xsi:type="VirtualLsiLogicController">
91
- <key>1000</key>
92
- <busNumber>0</busNumber>
93
- <sharedBus>noSharing</sharedBus>
94
- </device>
95
- </deviceChange>
96
- <deviceChange xsi:type="VirtualDeviceConfigSpec">
97
- <operation>add</operation>
98
- <fileOperation>create</fileOperation>
99
- <device xsi:type="VirtualDisk">
100
- <key>0</key>
101
- <backing xsi:type="VirtualDiskFlatVer2BackingInfo">
102
- <fileName>[datastore1]</fileName>
103
- <diskMode>persistent</diskMode>
104
- <thinProvisioned>1</thinProvisioned>
105
- </backing>
106
- <controllerKey>1000</controllerKey>
107
- <unitNumber>0</unitNumber>
108
- <capacityInKB>4000000</capacityInKB>
109
- </device>
110
- </deviceChange>
111
- <deviceChange xsi:type="VirtualDeviceConfigSpec">
112
- <operation>add</operation>
113
- <device xsi:type="VirtualE1000">
114
- <key>0</key>
115
- <deviceInfo xsi:type="Description">
116
- <label>Network Adapter 1</label>
117
- <summary>VM Network</summary>
118
- </deviceInfo>
119
- <backing xsi:type="VirtualEthernetCardNetworkBackingInfo">
120
- <deviceName>VM Network</deviceName>
121
- </backing>
122
- <addressType>generated</addressType>
123
- </device>
124
- </deviceChange>
125
- <extraConfig xsi:type="OptionValue">
126
- <key>bios.bootOrder</key>
127
- <value xsi:type="xsd:string">ethernet0</value>
128
- </extraConfig>
129
- </root>
130
- EOS
131
- end
132
-
133
- def test_nil_field
134
- obj = VIM.OptionValue(:key => 'foo', :value => nil)
135
- check <<-EOS, obj, "OptionValue"
136
- <root xsi:type="OptionValue">
137
- <key>foo</key>
138
- </root>
139
- EOS
140
- end
141
-
142
- def test_string_array
143
- obj = ["foo", "bar", "baz"]
144
- check <<-EOS, obj, "xsd:string", true
145
- <root>foo</root>
146
- <root>bar</root>
147
- <root>baz</root>
148
- EOS
149
- end
150
-
151
- def test_int_array
152
- obj = [1,2,3]
153
- check <<-EOS, obj, "xsd:int", true
154
- <root>1</root>
155
- <root>2</root>
156
- <root>3</root>
157
- EOS
158
- end
159
-
160
- def test_boolean_array
161
- obj = [true,false,true]
162
- check <<-EOS, obj, "xsd:boolean", true
163
- <root>1</root>
164
- <root>0</root>
165
- <root>1</root>
166
- EOS
167
- end
168
-
169
- def test_float_array
170
- obj = [0.0,1.5,3.14]
171
- check <<-EOS, obj, "xsd:float", true
172
- <root>0.0</root>
173
- <root>1.5</root>
174
- <root>3.14</root>
175
- EOS
176
- end
177
-
178
- def test_binary
179
- obj = "\x00foo\x01bar\x02baz"
180
- check <<-EOS, obj, 'xsd:base64Binary'
181
- <root>AGZvbwFiYXICYmF6</root>
182
- EOS
183
- end
184
-
185
- def test_property_spec
186
- interested = %w(info.progress info.state info.entityName info.error)
187
- tasks = [VIM::Task.new(nil, 'task-11')]
188
- obj = {
189
- :propSet => [{ :type => 'Task', :all => false, :pathSet => interested }],
190
- :objectSet => tasks.map { |x| { :obj => x } },
191
- }
192
- check <<-EOS, obj, 'PropertyFilterSpec'
193
- <root xsi:type="PropertyFilterSpec">
194
- <propSet xsi:type="PropertySpec">
195
- <type>Task</type>
196
- <all>0</all>
197
- <pathSet>info.progress</pathSet>
198
- <pathSet>info.state</pathSet>
199
- <pathSet>info.entityName</pathSet>
200
- <pathSet>info.error</pathSet>
201
- </propSet>
202
- <objectSet xsi:type="ObjectSpec">
203
- <obj type="Task">task-11</obj>
204
- </objectSet>
205
- </root>
206
- EOS
207
-
208
- end
209
-
210
- def test_keyvalue
211
- obj = RbVmomi::BasicTypes::KeyValue.new('a', 'b')
212
- check <<-EOS, obj, 'KeyValue', false
213
- <root>
214
- <key>a</key>
215
- <value>b</value>
216
- </root>
217
- EOS
218
-
219
- obj = ['a', 'b']
220
- check <<-EOS, obj, 'KeyValue', false
221
- <root>
222
- <key>a</key>
223
- <value>b</value>
224
- </root>
225
- EOS
226
-
227
- obj = [['a', 'b'], ['c', 'd']]
228
- check <<-EOS, obj, 'KeyValue', true
229
- <root>
230
- <key>a</key>
231
- <value>b</value>
232
- </root>
233
- <root>
234
- <key>c</key>
235
- <value>d</value>
236
- </root>
237
- EOS
238
-
239
- obj = { 'a' => 'b', :c => 'd' }
240
- check <<-EOS, obj, 'KeyValue', true
241
- <root>
242
- <key>a</key>
243
- <value>b</value>
244
- </root>
245
- <root>
246
- <key>c</key>
247
- <value>d</value>
248
- </root>
249
- EOS
250
- end
251
-
252
- def test_ovf_import_spec_params
253
- obj = RbVmomi::VIM::OvfCreateImportSpecParams(
254
- :hostSystem => VIM::HostSystem(nil, "myhost"),
255
- :locale => "US",
256
- :entityName => "myvm",
257
- :deploymentOption => "",
258
- :networkMapping => [],
259
- :propertyMapping => [['a', 'b'], ['c', 'd']],
260
- :diskProvisioning => :thin
261
- )
262
-
263
- check <<-EOS, obj, 'OvfCreateImportSpecParams', false
264
- <root xsi:type="OvfCreateImportSpecParams">
265
- <locale>US</locale>
266
- <deploymentOption></deploymentOption>
267
- <entityName>myvm</entityName>
268
- <hostSystem type="HostSystem">myhost</hostSystem>
269
- <propertyMapping>
270
- <key>a</key>
271
- <value>b</value>
272
- </propertyMapping>
273
- <propertyMapping>
274
- <key>c</key>
275
- <value>d</value>
276
- </propertyMapping>
277
- <diskProvisioning>thin</diskProvisioning>
278
- </root>
279
- EOS
280
- end
281
-
282
- def test_datetime
283
- obj = DateTime.new(2011, 11, 16, 13, 36, 8, Rational(-8,24))
284
- check <<-EOS, obj, 'xsd:dateTime', false
285
- <root>2011-11-16T13:36:08-08:00</root>
286
- EOS
287
- end
288
-
289
- def test_time
290
- obj = Time.at(DateTime.new(2011, 11, 16, 13, 36, 8, Rational(-8,24)).strftime("%s").to_i).getgm
291
- check <<-EOS, obj, 'xsd:dateTime', false
292
- <root>2011-11-16T21:36:08Z</root>
293
- EOS
294
- end
295
-
296
- # TODO test all types
297
- def test_any_type
298
- obj = 1
299
- check <<-EOS, obj, 'xsd:anyType', false
300
- <root xsi:type="xsd:long">1</root>
301
- EOS
302
-
303
- obj = VIM::HostAccountSpec(:id => 'root', :password => 'foo')
304
- check <<-EOS, obj, 'xsd:anyType', false
305
- <root xsi:type="HostAccountSpec">
306
- <id>root</id>
307
- <password>foo</password>
308
- </root>
309
- EOS
310
- end
311
- end