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.
- checksums.yaml +5 -13
- data/LICENSE +1 -1
- data/README.md +114 -0
- data/{bin → exe}/rbvmomish +5 -5
- data/lib/rbvmomi.rb +11 -7
- data/lib/rbvmomi/basic_types.rb +9 -1
- data/lib/rbvmomi/connection.rb +11 -9
- data/lib/rbvmomi/deserialization.rb +4 -3
- data/lib/rbvmomi/fault.rb +3 -1
- data/lib/rbvmomi/{trollop.rb → optimist.rb} +10 -8
- data/lib/rbvmomi/pbm.rb +3 -1
- data/lib/rbvmomi/sms.rb +3 -1
- data/lib/rbvmomi/sms/SmsStorageManager.rb +3 -0
- data/lib/rbvmomi/sso.rb +313 -0
- data/lib/rbvmomi/trivial_soap.rb +19 -11
- data/lib/rbvmomi/type_loader.rb +4 -2
- data/lib/rbvmomi/utils/admission_control.rb +22 -19
- data/lib/rbvmomi/utils/deploy.rb +18 -14
- data/lib/rbvmomi/utils/leases.rb +4 -1
- data/lib/rbvmomi/utils/perfdump.rb +4 -1
- data/lib/rbvmomi/version.rb +6 -0
- data/lib/rbvmomi/vim.rb +41 -12
- data/lib/rbvmomi/vim/ComputeResource.rb +3 -0
- data/lib/rbvmomi/vim/Datacenter.rb +8 -0
- data/lib/rbvmomi/vim/Datastore.rb +5 -1
- data/lib/rbvmomi/vim/DynamicTypeMgrAllTypeInfo.rb +3 -0
- data/lib/rbvmomi/vim/DynamicTypeMgrDataTypeInfo.rb +4 -1
- data/lib/rbvmomi/vim/DynamicTypeMgrManagedTypeInfo.rb +15 -7
- data/lib/rbvmomi/vim/Folder.rb +19 -12
- data/lib/rbvmomi/vim/HostSystem.rb +5 -2
- data/lib/rbvmomi/vim/ManagedEntity.rb +3 -0
- data/lib/rbvmomi/vim/ManagedObject.rb +4 -1
- data/lib/rbvmomi/vim/ObjectContent.rb +3 -0
- data/lib/rbvmomi/vim/ObjectUpdate.rb +3 -0
- data/lib/rbvmomi/vim/OvfManager.rb +6 -2
- data/lib/rbvmomi/vim/PerfCounterInfo.rb +3 -1
- data/lib/rbvmomi/vim/PerformanceManager.rb +3 -0
- data/lib/rbvmomi/vim/PropertyCollector.rb +3 -0
- data/lib/rbvmomi/vim/ReflectManagedMethodExecuter.rb +5 -2
- data/lib/rbvmomi/vim/ResourcePool.rb +3 -0
- data/lib/rbvmomi/vim/ServiceInstance.rb +3 -0
- data/lib/rbvmomi/vim/Task.rb +3 -0
- data/lib/rbvmomi/vim/VirtualMachine.rb +13 -12
- data/vmodl.db +0 -0
- metadata +100 -63
- data/.yardopts +0 -6
- data/README.rdoc +0 -78
- data/Rakefile +0 -45
- data/VERSION +0 -1
- data/devel/analyze-vim-declarations.rb +0 -213
- data/devel/analyze-xml.rb +0 -46
- data/devel/benchmark.rb +0 -117
- data/devel/collisions.rb +0 -18
- data/devel/merge-internal-vmodl.rb +0 -59
- data/devel/merge-manual-vmodl.rb +0 -32
- data/examples/annotate.rb +0 -54
- data/examples/cached_ovf_deploy.rb +0 -120
- data/examples/clone_vm.rb +0 -84
- data/examples/create_vm-1.9.rb +0 -93
- data/examples/create_vm.rb +0 -93
- data/examples/extraConfig.rb +0 -54
- data/examples/lease_tool.rb +0 -102
- data/examples/logbundle.rb +0 -63
- data/examples/logtail.rb +0 -60
- data/examples/nfs_datastore.rb +0 -95
- data/examples/power.rb +0 -59
- data/examples/readme-1.rb +0 -35
- data/examples/readme-2.rb +0 -51
- data/examples/run.sh +0 -41
- data/examples/screenshot.rb +0 -48
- data/examples/vdf.rb +0 -81
- data/examples/vm_drs_behavior.rb +0 -76
- data/test/test_deserialization.rb +0 -383
- data/test/test_emit_request.rb +0 -128
- data/test/test_exceptions.rb +0 -14
- data/test/test_helper.rb +0 -14
- data/test/test_misc.rb +0 -24
- data/test/test_parse_response.rb +0 -69
- 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
|
data/examples/screenshot.rb
DELETED
@@ -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
|
data/examples/vm_drs_behavior.rb
DELETED
@@ -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
|