rbvmomi 1.8.2 → 2.4.1

Sign up to get free protection for your applications and to get access to all the features.
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
data/examples/power.rb DELETED
@@ -1,59 +0,0 @@
1
- require 'trollop'
2
- require 'rbvmomi'
3
- require 'rbvmomi/trollop'
4
-
5
- VIM = RbVmomi::VIM
6
- CMDS = %w(on off reset suspend destroy)
7
-
8
- opts = Trollop.options do
9
- banner <<-EOS
10
- Perform VM power operations.
11
-
12
- Usage:
13
- power.rb [options] cmd VM
14
-
15
- Commands: #{CMDS * ' '}
16
-
17
- VIM connection options:
18
- EOS
19
-
20
- rbvmomi_connection_opts
21
-
22
- text <<-EOS
23
-
24
- VM location options:
25
- EOS
26
-
27
- rbvmomi_datacenter_opt
28
-
29
- text <<-EOS
30
-
31
- Other options:
32
- EOS
33
-
34
- stop_on CMDS
35
- end
36
-
37
- cmd = ARGV[0] or Trollop.die("no command given")
38
- vm_name = ARGV[1] or Trollop.die("no VM name given")
39
- Trollop.die("must specify host") unless opts[:host]
40
-
41
- vim = VIM.connect opts
42
-
43
- dc = vim.serviceInstance.content.rootFolder.traverse(opts[:datacenter], VIM::Datacenter) or abort "datacenter not found"
44
- vm = dc.vmFolder.traverse(vm_name, VIM::VirtualMachine) or abort "VM not found"
45
-
46
- case cmd
47
- when 'on'
48
- vm.PowerOnVM_Task.wait_for_completion
49
- when 'off'
50
- vm.PowerOffVM_Task.wait_for_completion
51
- when 'reset'
52
- vm.ResetVM_Task.wait_for_completion
53
- when 'suspend'
54
- vm.SuspendVM_Task.wait_for_completion
55
- when 'destroy'
56
- vm.Destroy_Task.wait_for_completion
57
- else
58
- abort "invalid command"
59
- end
data/examples/readme-1.rb DELETED
@@ -1,35 +0,0 @@
1
- require 'rbvmomi'
2
- require 'rbvmomi/trollop'
3
-
4
- opts = Trollop.options do
5
- banner <<-EOS
6
- Example 1 from the README: Power on a VM.
7
-
8
- Usage:
9
- readme-1.rb [options] VM name
10
-
11
- VIM connection options:
12
- EOS
13
-
14
- rbvmomi_connection_opts
15
-
16
- text <<-EOS
17
-
18
- VM location options:
19
- EOS
20
-
21
- rbvmomi_datacenter_opt
22
-
23
- text <<-EOS
24
-
25
- Other options:
26
- EOS
27
- end
28
-
29
- Trollop.die("must specify host") unless opts[:host]
30
- vm_name = ARGV[0] or abort "must specify VM name"
31
-
32
- vim = RbVmomi::VIM.connect opts
33
- dc = vim.serviceInstance.find_datacenter(opts[:datacenter]) or fail "datacenter not found"
34
- vm = dc.find_vm(vm_name) or fail "VM not found"
35
- vm.PowerOnVM_Task.wait_for_completion
data/examples/readme-2.rb DELETED
@@ -1,51 +0,0 @@
1
- require 'rbvmomi'
2
- require 'rbvmomi/trollop'
3
-
4
- opts = Trollop.options do
5
- banner <<-EOS
6
- Example 2 from the README: Power on a VM the hard way.
7
-
8
- Usage:
9
- readme-2.rb [options] VM name
10
-
11
- VIM connection options:
12
- EOS
13
-
14
- rbvmomi_connection_opts
15
-
16
- text <<-EOS
17
-
18
- VM location options:
19
- EOS
20
-
21
- rbvmomi_datacenter_opt
22
-
23
- text <<-EOS
24
-
25
- Other options:
26
- EOS
27
- end
28
-
29
- Trollop.die("must specify host") unless opts[:host]
30
- vm_name = ARGV[0] or abort "must specify VM name"
31
-
32
- vim = RbVmomi::VIM.connect opts
33
- rootFolder = vim.serviceInstance.content.rootFolder
34
- dc = rootFolder.childEntity.grep(RbVmomi::VIM::Datacenter).find { |x| x.name == opts[:datacenter] } or fail "datacenter not found"
35
- vm = dc.vmFolder.childEntity.grep(RbVmomi::VIM::VirtualMachine).find { |x| x.name == vm_name } or fail "VM not found"
36
- task = vm.PowerOnVM_Task
37
- filter = vim.propertyCollector.CreateFilter(
38
- :spec => {
39
- :propSet => [{ :type => 'Task', :all => false, :pathSet => ['info.state']}],
40
- :objectSet => [{ :obj => task }]
41
- },
42
- :partialUpdates => false
43
- )
44
- ver = ''
45
- while true
46
- result = vim.propertyCollector.WaitForUpdates(:version => ver)
47
- ver = result.version
48
- break if ['success', 'error'].member? task.info.state
49
- end
50
- filter.DestroyPropertyFilter
51
- raise task.info.error if task.info.state == 'error'
data/examples/run.sh DELETED
@@ -1,41 +0,0 @@
1
- #!/bin/bash
2
- set -e
3
-
4
- if [ -z "$RBVMOMI_HOST" ]
5
- then
6
- echo "export at least RBVMOMI_HOST"
7
- exit 1
8
- fi
9
-
10
- EXAMPLES="$(dirname $(which $0))"
11
- export RUBYOPT="-I$EXAMPLES/../lib -rubygems"
12
-
13
- source "$HOME/.rvm/scripts/rvm"
14
- rvm use 1.8.7
15
- ruby -v
16
- RUBY=ruby
17
-
18
- echo Creating VM
19
- $RUBY $EXAMPLES/create_vm.rb foo
20
- echo Powering on VM
21
- $RUBY $EXAMPLES/power.rb on foo
22
- echo Resetting VM
23
- $RUBY $EXAMPLES/power.rb reset foo
24
- echo Powering off VM
25
- $RUBY $EXAMPLES/power.rb off foo
26
- echo "Powering on VM (1)"
27
- $RUBY $EXAMPLES/readme-1.rb foo
28
- echo Powering off VM
29
- $RUBY $EXAMPLES/power.rb off foo
30
- echo "Powering on VM (2)"
31
- $RUBY $EXAMPLES/readme-2.rb foo
32
- echo "Setting extraConfig"
33
- $RUBY $EXAMPLES/extraConfig.rb foo set guestinfo.bar=baz
34
- echo "Listing extraConfig"
35
- $RUBY $EXAMPLES/extraConfig.rb foo list | grep guestinfo.bar
36
- echo Powering off VM
37
- $RUBY $EXAMPLES/power.rb off foo
38
- echo Querying datastore utilization
39
- $RUBY $EXAMPLES/vdf.rb
40
- echo Destroying VM
41
- $RUBY $EXAMPLES/power.rb destroy foo
@@ -1,48 +0,0 @@
1
- # Based on takeVMScreenshot.pl by William Lam
2
- require 'trollop'
3
- require 'rbvmomi'
4
- require 'rbvmomi/trollop'
5
-
6
- VIM = RbVmomi::VIM
7
-
8
- opts = Trollop.options do
9
- banner <<-EOS
10
- Take a screenshot.
11
-
12
- Usage:
13
- screenshot.rb [options] vm filename
14
-
15
- A PNG image will be saved to the given filename.
16
-
17
- VIM connection options:
18
- EOS
19
-
20
- rbvmomi_connection_opts
21
-
22
- text <<-EOS
23
-
24
- VM location options:
25
- EOS
26
-
27
- rbvmomi_datacenter_opt
28
-
29
- text <<-EOS
30
-
31
- Other options:
32
- EOS
33
- end
34
-
35
- Trollop.die("must specify host") unless opts[:host]
36
- vm_name = ARGV[0] or abort("must specify VM name")
37
- output_path = ARGV[1] or abort("must specify output filename")
38
-
39
- vim = VIM.connect opts
40
- dc = vim.serviceInstance.find_datacenter(opts[:datacenter])
41
- vm = dc.find_vm vm_name
42
- abort "VM must be running" unless vm.runtime.powerState == 'poweredOn'
43
- remote_path = vm.CreateScreenshot_Task.wait_for_completion
44
- remote_path =~ /^(\/vmfs\/volumes\/[^\/]+)\// or fail
45
- datastore_prefix = $1
46
- datastore_path = $'
47
- datastore = vm.datastore.find { |ds| ds.info.url == datastore_prefix }
48
- datastore.download datastore_path, output_path
data/examples/vdf.rb DELETED
@@ -1,81 +0,0 @@
1
- # Translation of vGhetto vdf, originally by William Lam
2
- require 'trollop'
3
- require 'rbvmomi'
4
- require 'rbvmomi/trollop'
5
-
6
- VIM = RbVmomi::VIM
7
-
8
- opts = Trollop.options do
9
- banner <<-EOS
10
- Display utilization of each datastore in the datacenter.
11
-
12
- Usage:
13
- vdf.rb [options]
14
-
15
- VIM connection options:
16
- EOS
17
-
18
- rbvmomi_connection_opts
19
-
20
- text <<-EOS
21
-
22
- Datacenter selection:
23
- EOS
24
-
25
- rbvmomi_datacenter_opt
26
-
27
- text <<-EOS
28
-
29
- Other options:
30
- EOS
31
- end
32
-
33
- Trollop.die("must specify host") unless opts[:host]
34
-
35
- vim = VIM.connect opts
36
-
37
- dc = vim.serviceInstance.find_datacenter(opts[:datacenter]) or abort "datacenter not found"
38
-
39
- def si n
40
- ['', 'K', 'M', 'G', 'T', 'P'].each_with_index do |x,i|
41
- v = n.to_f/(1000**i)
42
- return v,x if v < 1000 or x == 'P'
43
- end
44
- end
45
-
46
- def unit n, u, p
47
- "%.*g%s%s" % [p, si(n), u].flatten
48
- end
49
-
50
- def b n
51
- unit(n,'B',3)
52
- end
53
-
54
- puts "Filesystem#{' '*53}Size Used Avail Use% Mounted on"
55
- fmt = "%-62s %-8s %-8s %-8s %-8s %s"
56
-
57
- if false
58
- # simple version
59
- dc.datastore.sort_by { |ds| ds.info.url }.each do |ds|
60
- s = ds.summary
61
- next unless s.accessible
62
- size = s.capacity
63
- free = s.freeSpace
64
- used = size - free
65
- pct_used = used*100.0/size
66
- puts(fmt % [ds.info.url, b(size), b(used), b(free), unit(pct_used,'%',3), ds.name])
67
- end
68
- else
69
- # fast version
70
- paths = %w(name info.url summary.accessible summary.capacity summary.freeSpace)
71
- propSet = [{ :type => 'Datastore', :pathSet => paths }]
72
- filterSpec = { :objectSet => dc.datastore.map { |ds| { :obj => ds } }, :propSet => propSet }
73
- data = vim.propertyCollector.RetrieveProperties(:specSet => [filterSpec])
74
- data.select { |d| d['summary.accessible'] }.sort_by { |d| d['info.url'] }.each do |d|
75
- size = d['summary.capacity']
76
- free = d['summary.freeSpace']
77
- used = size - free
78
- pct_used = used*100.0/size
79
- puts(fmt % [d['info.url'], b(size), b(used), b(free), unit(pct_used,'%',3), d['name']])
80
- end
81
- end
@@ -1,76 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require 'trollop'
3
- require 'rbvmomi'
4
- require 'rbvmomi/trollop'
5
-
6
- VIM = RbVmomi::VIM
7
- CMDS = %w(get set)
8
- BEHAVIOR = %w(fullyAutomated manual partiallyAutomated default)
9
-
10
- opts = Trollop.options do
11
- banner <<-EOS
12
- Configure VM DRS behavior.
13
-
14
- Usage:
15
- vm_drs_behavior.rb [options] VM get
16
- vm_drs_behavior.rb [options] VM set #{BEHAVIOR.join('|')}
17
-
18
- Commands: #{CMDS * ' '}
19
-
20
- VIM connection options:
21
- EOS
22
-
23
- rbvmomi_connection_opts
24
-
25
- text <<-EOS
26
-
27
- VM location options:
28
- EOS
29
-
30
- rbvmomi_datacenter_opt
31
-
32
- text <<-EOS
33
-
34
- Other options:
35
- EOS
36
-
37
- stop_on CMDS
38
- end
39
-
40
- Trollop.die("must specify host") unless opts[:host]
41
-
42
- vm_name = ARGV[0] or Trollop.die("no VM name given")
43
- cmd = ARGV[1] or Trollop.die("no command given")
44
- abort "invalid command" unless CMDS.member? cmd
45
-
46
- vim = VIM.connect opts
47
- dc = vim.serviceInstance.find_datacenter(opts[:datacenter]) or abort "datacenter not found"
48
- vm = dc.find_vm(vm_name) or abort "VM not found"
49
-
50
- cluster = vm.runtime.host.parent
51
- config = cluster.configurationEx.drsVmConfig.select {|c| c.key.name == vm.name }.first
52
- default = cluster.configurationEx.drsConfig.defaultVmBehavior
53
-
54
- case cmd
55
- when 'get'
56
- if config
57
- behavior = config.behavior
58
- else
59
- behavior = "#{default} (default)"
60
- end
61
- puts "#{vm.name} is #{behavior}"
62
- when 'set'
63
- behavior = ARGV[2] or Trollop.die("no behavior given")
64
- abort "invalid behavior" unless BEHAVIOR.member? behavior
65
-
66
- if behavior == "default"
67
- behavior = default
68
- end
69
- vm_spec =
70
- VIM.ClusterDrsVmConfigSpec(:operation => VIM.ArrayUpdateOperation(config ? "edit" : "add"),
71
- :info => VIM.ClusterDrsVmConfigInfo(:key => vm,
72
- :behavior => VIM.DrsBehavior(behavior)))
73
- spec = VIM.ClusterConfigSpecEx(:drsVmConfigSpec => [vm_spec])
74
- cluster.ReconfigureComputeResource_Task(:spec => spec, :modify => true).wait_for_completion
75
- end
76
-
@@ -1,383 +0,0 @@
1
- require 'test_helper'
2
-
3
- class DeserializationTest < Test::Unit::TestCase
4
- def setup
5
- conn = VIM.new(:ns => 'urn:vim25', :rev => '4.0')
6
- @deserializer = RbVmomi::Deserializer.new conn
7
- end
8
-
9
- def check str, expected, type
10
- got = @deserializer.deserialize Nokogiri(str).root, type
11
- assert_equal expected, got
12
- end
13
-
14
- def test_moref
15
- check <<-EOS, VIM.Folder(nil, 'ha-folder-root'), 'Folder'
16
- <root type="Folder">ha-folder-root</root>
17
- EOS
18
-
19
- check <<-EOS, VIM.Datacenter(nil, 'ha-datacenter'), 'ManagedObjectReference'
20
- <ManagedObjectReference type="Datacenter" xsi:type="ManagedObjectReference">ha-datacenter</ManagedObjectReference>
21
- EOS
22
- end
23
-
24
- def test_dataobject
25
- obj = VIM.DatastoreSummary(
26
- :capacity => 1000,
27
- :accessible => true,
28
- :datastore => VIM.Datastore(nil, "foo"),
29
- :freeSpace => 31,
30
- :multipleHostAccess => false,
31
- :name => "baz",
32
- :type => "VMFS",
33
- :url => "http://foo/",
34
- :dynamicProperty => []
35
- )
36
-
37
- check <<-EOS, obj, 'DatastoreSummary'
38
- <root>
39
- <datastore type="Datastore">foo</datastore>
40
- <name>baz</name>
41
- <url>http://foo/</url>
42
- <capacity>1000</capacity>
43
- <freeSpace>31</freeSpace>
44
- <accessible>1</accessible>
45
- <multipleHostAccess>false</multipleHostAccess>
46
- <type>VMFS</type>
47
- </root>
48
- EOS
49
- end
50
-
51
- def test_enum
52
- check <<-EOS, 'add', 'ConfigSpecOperation'
53
- <root>add</root>
54
- EOS
55
- end
56
-
57
- def test_array
58
- obj = VIM.ObjectContent(
59
- :obj => VIM.Folder(nil, 'ha-folder-root'),
60
- :dynamicProperty => [],
61
- :missingSet => [],
62
- :propSet => [
63
- VIM.DynamicProperty(
64
- :name => 'childEntity',
65
- :val => [
66
- VIM.Datacenter(nil, 'ha-datacenter')
67
- ]
68
- )
69
- ]
70
- )
71
-
72
- check <<-EOS, obj, 'ObjectContent'
73
- <root xmlns:xsi="#{VIM::NS_XSI}">
74
- <obj type="Folder">ha-folder-root</obj>
75
- <propSet>
76
- <name>childEntity</name>
77
- <val xsi:type="ArrayOfManagedObjectReference">
78
- <ManagedObjectReference type="Datacenter" xsi:type="ManagedObjectReference">ha-datacenter</ManagedObjectReference>
79
- </val>
80
- </propSet>
81
- </root>
82
- EOS
83
- end
84
-
85
- def test_array2
86
- obj = VIM.DVPortStatus(
87
- :dynamicProperty => [],
88
- :linkUp => true,
89
- :blocked => false,
90
- :vlanIds => [
91
- VIM::NumericRange(:dynamicProperty => [], :start => 5, :end => 7),
92
- VIM::NumericRange(:dynamicProperty => [], :start => 10, :end => 20),
93
- ],
94
- :vmDirectPathGen2InactiveReasonNetwork => [],
95
- :vmDirectPathGen2InactiveReasonOther => []
96
- )
97
-
98
- check <<-EOS, obj, 'DVPortStatus'
99
- <root>
100
- <linkUp>1</linkUp>
101
- <blocked>false</blocked>
102
- <vlanIds>
103
- <start>5</start>
104
- <end>7</end>
105
- </vlanIds>
106
- <vlanIds>
107
- <start>10</start>
108
- <end>20</end>
109
- </vlanIds>
110
- </root>
111
- EOS
112
- end
113
-
114
- def test_empty_array
115
- obj = VIM.DVPortStatus(
116
- :dynamicProperty => [],
117
- :linkUp => true,
118
- :blocked => false,
119
- :vlanIds => [],
120
- :vmDirectPathGen2InactiveReasonNetwork => [],
121
- :vmDirectPathGen2InactiveReasonOther => []
122
- )
123
-
124
- check <<-EOS, obj, 'DVPortStatus'
125
- <root>
126
- <linkUp>1</linkUp>
127
- <blocked>false</blocked>
128
- </root>
129
- EOS
130
- end
131
-
132
- def test_fault
133
- obj = VIM.LocalizedMethodFault(
134
- :localizedMessage => "The attempted operation cannot be performed in the current state (Powered off).",
135
- :fault => VIM.InvalidPowerState(
136
- :requestedState => 'poweredOn',
137
- :existingState => 'poweredOff',
138
- :faultMessage => []
139
- )
140
- )
141
-
142
- check <<-EOS, obj, "LocalizedMethodFault"
143
- <error xmlns:xsi="#{VIM::NS_XSI}">
144
- <fault xsi:type="InvalidPowerState">
145
- <requestedState>poweredOn</requestedState>
146
- <existingState>poweredOff</existingState>
147
- </fault>
148
- <localizedMessage>The attempted operation cannot be performed in the current state (Powered off).</localizedMessage>
149
- </error>
150
- EOS
151
- end
152
-
153
- def test_wait_for_updates
154
- obj = VIM.UpdateSet(
155
- :version => '7',
156
- :dynamicProperty => [],
157
- :filterSet => [
158
- VIM.PropertyFilterUpdate(
159
- :dynamicProperty => [],
160
- :filter => VIM.PropertyFilter(nil, "session[528BA5EB-335B-4AF6-B49C-6160CF5E8D5B]71E3AC7E-7927-4D9E-8BC3-522769F22DAF"),
161
- :missingSet => [],
162
- :objectSet => [
163
- VIM.ObjectUpdate(
164
- :dynamicProperty => [],
165
- :kind => 'enter',
166
- :obj => VIM.VirtualMachine(nil, 'vm-1106'),
167
- :missingSet => [],
168
- :changeSet => [
169
- VIM.PropertyChange(
170
- :dynamicProperty => [],
171
- :name => 'runtime.powerState',
172
- :op => 'assign',
173
- :val => 'poweredOn'
174
- )
175
- ]
176
- )
177
- ]
178
- )
179
- ]
180
- )
181
-
182
- check <<-EOS, obj, "UpdateSet"
183
- <returnval xmlns:xsi="#{VIM::NS_XSI}">
184
- <version>7</version>
185
- <filterSet>
186
- <filter type="PropertyFilter">session[528BA5EB-335B-4AF6-B49C-6160CF5E8D5B]71E3AC7E-7927-4D9E-8BC3-522769F22DAF</filter>
187
- <objectSet>
188
- <kind>enter</kind>
189
- <obj type="VirtualMachine">vm-1106</obj>
190
- <changeSet>
191
- <name>runtime.powerState</name>
192
- <op>assign</op>
193
- <val xsi:type="VirtualMachinePowerState">poweredOn</val>
194
- </changeSet>
195
- </objectSet>
196
- </filterSet>
197
- </returnval>
198
- EOS
199
- end
200
-
201
- def test_binary
202
- obj = "\x00foo\x01bar\x02baz"
203
- check <<-EOS, obj, 'xsd:base64Binary'
204
- <root>AGZvbwFiYXICYmF6</root>
205
- EOS
206
- end
207
-
208
- def test_hba
209
- obj = VIM::HostBlockHba(
210
- :dynamicProperty => [],
211
- :key => 'key-vim.host.BlockHba-vmhba0',
212
- :device => 'vmhba0',
213
- :bus => 0,
214
- :status => 'unknown',
215
- :model => 'Virtual Machine Chipset',
216
- :driver => 'ata_piix',
217
- :pci => '00:07.1')
218
-
219
- check <<-EOS, obj, "HostBlockHba"
220
- <hostBusAdapter xsi:type="HostBlockHba">
221
- <key>key-vim.host.BlockHba-vmhba0</key>
222
- <device>vmhba0</device>
223
- <bus>0</bus>
224
- <status>unknown</status>
225
- <model>Virtual Machine Chipset</model>
226
- <driver>ata_piix</driver>
227
- <pci>00:07.1</pci>
228
- </hostBusAdapter>
229
- EOS
230
- end
231
-
232
- =begin
233
- def test_runtime_state
234
- obj = VIM::VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState(
235
- :dynamicProperty => [],
236
- vmDirectPathGen2:Active => false,
237
- vmDirectPathGen2:InactiveReasonOther => ["vmNptIncompatibleHost"],
238
- vmDirectPathGen2:InactiveReasonVm => []
239
- )
240
- check <<-EOS, obj, 'VirtualMachineDeviceRuntimeInfoDeviceRuntimeState'
241
- <runtimeState xsi:type="VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState" xmlns:xsi="#{VIM::NS_XSI}">
242
- <vmDirectPathGen2Active>false</vmDirectPathGen2Active>
243
- <vmDirectPathGen2InactiveReasonOther>vmNptIncompatibleHost</vmDirectPathGen2InactiveReasonOther>
244
- </runtimeState>
245
- EOS
246
- end
247
- =end
248
-
249
- def test_runtime_info
250
- obj = VIM::VirtualMachineRuntimeInfo(
251
- :bootTime => Time.parse('2010-08-20 05:44:35 UTC'),
252
- :connectionState => "connected",
253
- :dynamicProperty => [],
254
- :faultToleranceState => "notConfigured",
255
- :featureMask => [],
256
- :featureRequirement => [],
257
- :host => VIM::HostSystem(nil, "host-32"),
258
- :maxCpuUsage => 5612,
259
- :maxMemoryUsage => 3072,
260
- :memoryOverhead => 128671744,
261
- :numMksConnections => 1,
262
- :offlineFeatureRequirement => [],
263
- :powerState => "poweredOn",
264
- :recordReplayState => "inactive",
265
- :suspendInterval => 0,
266
- :toolsInstallerMounted => false,
267
- :device => []
268
- )
269
-
270
- check <<-EOS, obj, 'VirtualMachineRuntimeInfo'
271
- <val xsi:type="VirtualMachineRuntimeInfo" xmlns:xsi="#{VIM::NS_XSI}">
272
- <host type="HostSystem">host-32</host>
273
- <connectionState>connected</connectionState>
274
- <powerState>poweredOn</powerState>
275
- <faultToleranceState>notConfigured</faultToleranceState>
276
- <toolsInstallerMounted>false</toolsInstallerMounted>
277
- <bootTime>2010-08-20T05:44:35.0Z</bootTime>
278
- <suspendInterval>0</suspendInterval>
279
- <memoryOverhead>128671744</memoryOverhead>
280
- <maxCpuUsage>5612</maxCpuUsage>
281
- <maxMemoryUsage>3072</maxMemoryUsage>
282
- <numMksConnections>1</numMksConnections>
283
- <recordReplayState>inactive</recordReplayState>
284
- </val>
285
- EOS
286
- end
287
-
288
- def test_keyvalue
289
- obj = ['a', 'b']
290
- check <<-EOS, obj, 'KeyValue'
291
- <root>
292
- <key>a</key>
293
- <value>b</value>
294
- </root>
295
- EOS
296
- end
297
-
298
- def test_boolean
299
- check "<root>1</root>", true, 'xsd:boolean'
300
- check "<root>true</root>", true, 'xsd:boolean'
301
- check "<root>0</root>", false, 'xsd:boolean'
302
- check "<root>false</root>", false, 'xsd:boolean'
303
- end
304
-
305
- def test_int
306
- check "<root>5</root>", 5, 'xsd:byte'
307
- check "<root>5</root>", 5, 'xsd:short'
308
- check "<root>5</root>", 5, 'xsd:int'
309
- check "<root>5</root>", 5, 'xsd:long'
310
- end
311
-
312
- def test_float
313
- obj = 1.2
314
- check <<-EOS, obj, 'xsd:float'
315
- <root>1.2</root>
316
- EOS
317
- end
318
-
319
- def test_date
320
- time_str = '2010-08-20T05:44:35.0Z'
321
- obj = Time.parse(time_str)
322
- check <<-EOS, obj, 'xsd:dateTime'
323
- <root>#{time_str}</root>
324
- EOS
325
- end
326
-
327
- def test_array_mangling
328
- obj = ["foo"]
329
- check <<-EOS, obj, 'ArrayOfString'
330
- <root><e>foo</e></root>
331
- EOS
332
-
333
- time_str = '2010-08-20T05:44:35.0Z'
334
- obj = [Time.parse(time_str)]
335
- check <<-EOS, obj, 'ArrayOfDateTime'
336
- <root><e>#{time_str}</e></root>
337
- EOS
338
-
339
- obj = [1]
340
- check <<-EOS, obj, 'ArrayOfAnyType'
341
- <root xmlns:xsi="#{VIM::NS_XSI}">
342
- <e xsi:type="xsd:int">1</e>
343
- </root>
344
- EOS
345
- end
346
-
347
- def test_propertypath
348
- check "<root>foo</root>", "foo", 'PropertyPath'
349
- end
350
-
351
- def test_methodname
352
- check "<root>foo</root>", "foo", 'MethodName'
353
- end
354
-
355
- def test_typename
356
- check "<root>foo</root>", "foo", 'TypeName'
357
- end
358
-
359
- def test_new_fields
360
- obj = VIM::HostBlockHba(
361
- :dynamicProperty => [],
362
- :key => 'key-vim.host.BlockHba-vmhba0',
363
- :device => 'vmhba0',
364
- :bus => 0,
365
- :status => 'unknown',
366
- :model => 'Virtual Machine Chipset',
367
- :driver => 'ata_piix',
368
- :pci => '00:07.1')
369
-
370
- check <<-EOS, obj, "HostBlockHba"
371
- <hostBusAdapter xsi:type="HostBlockHba">
372
- <key>key-vim.host.BlockHba-vmhba0</key>
373
- <device>vmhba0</device>
374
- <bus>0</bus>
375
- <status>unknown</status>
376
- <foo>bar</foo>
377
- <model>Virtual Machine Chipset</model>
378
- <driver>ata_piix</driver>
379
- <pci>00:07.1</pci>
380
- </hostBusAdapter>
381
- EOS
382
- end
383
- end