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
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