rbvmomi 2.0.0 → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rbvmomi/#vim.rb# +155 -0
- data/lib/rbvmomi/version.rb +1 -1
- data/lib/rbvmomi/vmodl.rb +49 -0
- data/vmodl.db +0 -0
- metadata +5 -35
- data/.gitignore +0 -13
- data/.travis.yml +0 -11
- data/.yardopts +0 -6
- data/CONTRIBUTORS.md +0 -44
- data/Gemfile +0 -10
- data/Rakefile +0 -16
- data/devel/analyze-vim-declarations.rb +0 -217
- data/devel/analyze-xml.rb +0 -49
- data/devel/benchmark.rb +0 -121
- data/devel/collisions.rb +0 -22
- data/devel/merge-internal-vmodl.rb +0 -63
- data/devel/merge-manual-vmodl.rb +0 -36
- data/examples/annotate.rb +0 -57
- data/examples/cached_ovf_deploy.rb +0 -124
- data/examples/clone_vm.rb +0 -88
- data/examples/create_vm-1.9.rb +0 -97
- data/examples/create_vm.rb +0 -97
- data/examples/delete_disk_from_vm.rb +0 -57
- data/examples/extraConfig.rb +0 -57
- data/examples/lease_tool.rb +0 -106
- data/examples/logbundle.rb +0 -66
- data/examples/logtail.rb +0 -63
- data/examples/nfs_datastore.rb +0 -99
- data/examples/power.rb +0 -62
- data/examples/readme-1.rb +0 -38
- data/examples/readme-2.rb +0 -54
- data/examples/run.sh +0 -41
- data/examples/screenshot.rb +0 -51
- data/examples/vdf.rb +0 -84
- data/examples/vm_drs_behavior.rb +0 -80
- data/rbvmomi.gemspec +0 -33
data/examples/logbundle.rb
DELETED
@@ -1,66 +0,0 @@
|
|
1
|
-
# Copyright (c) 2011-2017 VMware, Inc. All Rights Reserved.
|
2
|
-
# SPDX-License-Identifier: MIT
|
3
|
-
|
4
|
-
# @todo Retrieve ESX log bundles when run against VC.
|
5
|
-
require 'optimist'
|
6
|
-
require 'rbvmomi'
|
7
|
-
require 'rbvmomi/optimist'
|
8
|
-
|
9
|
-
VIM = RbVmomi::VIM
|
10
|
-
DEFAULT_SERVER_PLACEHOLDER = '0.0.0.0'
|
11
|
-
|
12
|
-
opts = Optimist.options do
|
13
|
-
banner <<-EOS
|
14
|
-
Generate and retrieve a log bundle.
|
15
|
-
|
16
|
-
Usage:
|
17
|
-
logbundle.rb [options] dest
|
18
|
-
|
19
|
-
dest must be a directory.
|
20
|
-
|
21
|
-
VIM connection options:
|
22
|
-
EOS
|
23
|
-
|
24
|
-
rbvmomi_connection_opts
|
25
|
-
|
26
|
-
text <<-EOS
|
27
|
-
|
28
|
-
Other options:
|
29
|
-
EOS
|
30
|
-
end
|
31
|
-
|
32
|
-
Optimist.die("must specify host") unless opts[:host]
|
33
|
-
dest = ARGV[0] or abort("must specify destination directory")
|
34
|
-
|
35
|
-
abort "destination is not a directory" unless File.directory? dest
|
36
|
-
|
37
|
-
vim = VIM.connect opts
|
38
|
-
is_vc = vim.serviceContent.about.apiType == 'VirtualCenter'
|
39
|
-
diagMgr = vim.serviceContent.diagnosticManager
|
40
|
-
|
41
|
-
bundles =
|
42
|
-
begin
|
43
|
-
diagMgr.GenerateLogBundles_Task(includeDefault: true).wait_for_completion
|
44
|
-
rescue VIM::TaskInProgress
|
45
|
-
$!.task.wait_for_completion
|
46
|
-
end
|
47
|
-
|
48
|
-
bundles.each do |b|
|
49
|
-
uri = URI.parse(b.url.sub('*', DEFAULT_SERVER_PLACEHOLDER))
|
50
|
-
dest_path = File.join(dest, File.basename(uri.path))
|
51
|
-
puts "downloading bundle #{b.url} to #{dest_path}"
|
52
|
-
if uri.host == DEFAULT_SERVER_PLACEHOLDER
|
53
|
-
vim.http.request_get(uri.path) do |res|
|
54
|
-
File.open dest_path, 'w' do |io|
|
55
|
-
res.read_body do |data|
|
56
|
-
io.write data
|
57
|
-
$stdout.write '.'
|
58
|
-
$stdout.flush
|
59
|
-
end
|
60
|
-
end
|
61
|
-
puts
|
62
|
-
end
|
63
|
-
else
|
64
|
-
puts 'not supported yet'
|
65
|
-
end
|
66
|
-
end
|
data/examples/logtail.rb
DELETED
@@ -1,63 +0,0 @@
|
|
1
|
-
# Copyright (c) 2011-2017 VMware, Inc. All Rights Reserved.
|
2
|
-
# SPDX-License-Identifier: MIT
|
3
|
-
|
4
|
-
# Translation of example 2-2 from the vSphere SDK for Perl Programming Guide
|
5
|
-
require 'optimist'
|
6
|
-
require 'rbvmomi'
|
7
|
-
require 'rbvmomi/optimist'
|
8
|
-
|
9
|
-
VIM = RbVmomi::VIM
|
10
|
-
|
11
|
-
opts = Optimist.options do
|
12
|
-
banner <<-EOS
|
13
|
-
Follow a log file.
|
14
|
-
|
15
|
-
Usage:
|
16
|
-
logtail.rb [options] [logKey]
|
17
|
-
|
18
|
-
If logKey is not provided the list of available log keys will be printed and
|
19
|
-
the program will exit.
|
20
|
-
|
21
|
-
VIM connection options:
|
22
|
-
EOS
|
23
|
-
|
24
|
-
rbvmomi_connection_opts
|
25
|
-
|
26
|
-
text <<-EOS
|
27
|
-
|
28
|
-
Other options:
|
29
|
-
EOS
|
30
|
-
end
|
31
|
-
|
32
|
-
Optimist.die("must specify host") unless opts[:host]
|
33
|
-
logKey = ARGV[0]
|
34
|
-
|
35
|
-
vim = VIM.connect opts
|
36
|
-
diagMgr = vim.serviceContent.diagnosticManager
|
37
|
-
|
38
|
-
if not logKey
|
39
|
-
puts "Available logs:"
|
40
|
-
diagMgr.QueryDescriptions.each do |desc|
|
41
|
-
puts "#{desc.key}: #{desc.info.label}"
|
42
|
-
end
|
43
|
-
exit 0
|
44
|
-
end
|
45
|
-
|
46
|
-
# Obtain the last line of the logfile by setting an arbitrarily large
|
47
|
-
# line number as the starting point
|
48
|
-
log = diagMgr.BrowseDiagnosticLog(key: logKey, start: 999999999)
|
49
|
-
lineEnd = log.lineEnd
|
50
|
-
|
51
|
-
# Get the last 5 lines of the log first, and then check every 2 seconds
|
52
|
-
# to see if the log size has increased.
|
53
|
-
start = lineEnd - 5
|
54
|
-
while true
|
55
|
-
log = diagMgr.BrowseDiagnosticLog(key: logKey, start: start)
|
56
|
-
if log.lineStart != 0
|
57
|
-
log.lineText.each do |l|
|
58
|
-
puts l
|
59
|
-
end
|
60
|
-
end
|
61
|
-
start = log.lineEnd + 1
|
62
|
-
sleep 2
|
63
|
-
end
|
data/examples/nfs_datastore.rb
DELETED
@@ -1,99 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
# Copyright (c) 2011-2017 VMware, Inc. All Rights Reserved.
|
4
|
-
# SPDX-License-Identifier: MIT
|
5
|
-
|
6
|
-
require 'optimist'
|
7
|
-
require 'rbvmomi'
|
8
|
-
require 'rbvmomi/optimist'
|
9
|
-
|
10
|
-
VIM = RbVmomi::VIM
|
11
|
-
CMDS = %w(mount unmount)
|
12
|
-
|
13
|
-
opts = Optimist.options do
|
14
|
-
banner <<-EOS
|
15
|
-
Mount/Unmount an NFS datastore from a cluster or single host system.
|
16
|
-
|
17
|
-
Usage:
|
18
|
-
nfs_datastore.rb [options] resource mount nfs-hostname:/remote/path [name]
|
19
|
-
nfs_datastore.rb [options] resource unmount nfs-hostname:/remote/path [name]
|
20
|
-
|
21
|
-
Commands: #{CMDS * ' '}
|
22
|
-
|
23
|
-
VIM connection options:
|
24
|
-
EOS
|
25
|
-
|
26
|
-
rbvmomi_connection_opts
|
27
|
-
|
28
|
-
text <<-EOS
|
29
|
-
|
30
|
-
VM location options:
|
31
|
-
EOS
|
32
|
-
|
33
|
-
rbvmomi_datacenter_opt
|
34
|
-
|
35
|
-
text <<-EOS
|
36
|
-
|
37
|
-
Other options:
|
38
|
-
EOS
|
39
|
-
|
40
|
-
stop_on CMDS
|
41
|
-
end
|
42
|
-
|
43
|
-
Optimist.die("must specify host") unless opts[:host]
|
44
|
-
|
45
|
-
cr_path = ARGV[0] or Optimist.die("no system name given")
|
46
|
-
cmd = ARGV[1] or Optimist.die("no command given")
|
47
|
-
abort "invalid command" unless CMDS.member? cmd
|
48
|
-
nfs_spec = ARGV[2] or Optimist.die("no nfs path given")
|
49
|
-
remoteHost, remotePath = nfs_spec.split(":")
|
50
|
-
localPath = ARGV[3] || remoteHost
|
51
|
-
mode = "readOnly" #hardcoded.
|
52
|
-
|
53
|
-
vim = VIM.connect opts
|
54
|
-
dc = vim.serviceInstance.find_datacenter(opts[:datacenter]) or abort "datacenter not found"
|
55
|
-
cr = dc.find_compute_resource(cr_path) || dc.hostFolder.children.find(cr_path).first
|
56
|
-
abort "compute resource not found" unless cr
|
57
|
-
|
58
|
-
case cr
|
59
|
-
when VIM::ClusterComputeResource
|
60
|
-
hosts = cr.host
|
61
|
-
when VIM::ComputeResource
|
62
|
-
hosts = [cr]
|
63
|
-
else
|
64
|
-
abort "invalid resource"
|
65
|
-
end
|
66
|
-
|
67
|
-
hosts.each do |host|
|
68
|
-
hds = host.configManager.datastoreSystem
|
69
|
-
|
70
|
-
ds = hds.datastore.select {|ds|
|
71
|
-
ds.info.respond_to?(:nas) and
|
72
|
-
ds.info.name == localPath and
|
73
|
-
ds.info.nas.remoteHost == remoteHost and
|
74
|
-
ds.info.nas.remotePath == remotePath
|
75
|
-
}.first
|
76
|
-
|
77
|
-
case cmd
|
78
|
-
when 'mount'
|
79
|
-
if ds
|
80
|
-
puts "already mounted on #{host.name} as #{ds.name}"
|
81
|
-
else
|
82
|
-
ds =
|
83
|
-
hds.CreateNasDatastore(:spec => VIM.HostNasVolumeSpec(:remoteHost => remoteHost,
|
84
|
-
:remotePath => remotePath,
|
85
|
-
:localPath => localPath,
|
86
|
-
:accessMode => mode))
|
87
|
-
puts "mounted on #{host.name} as #{ds.name}"
|
88
|
-
end
|
89
|
-
when 'unmount'
|
90
|
-
if ds
|
91
|
-
hds.RemoveDatastore(:datastore => ds)
|
92
|
-
puts "unmounted from #{host.name}"
|
93
|
-
else
|
94
|
-
puts "not mounted on #{host.name}"
|
95
|
-
end
|
96
|
-
else
|
97
|
-
abort "invalid command"
|
98
|
-
end
|
99
|
-
end
|
data/examples/power.rb
DELETED
@@ -1,62 +0,0 @@
|
|
1
|
-
# Copyright (c) 2011-2017 VMware, Inc. All Rights Reserved.
|
2
|
-
# SPDX-License-Identifier: MIT
|
3
|
-
|
4
|
-
require 'optimist'
|
5
|
-
require 'rbvmomi'
|
6
|
-
require 'rbvmomi/optimist'
|
7
|
-
|
8
|
-
VIM = RbVmomi::VIM
|
9
|
-
CMDS = %w(on off reset suspend destroy)
|
10
|
-
|
11
|
-
opts = Optimist.options do
|
12
|
-
banner <<-EOS
|
13
|
-
Perform VM power operations.
|
14
|
-
|
15
|
-
Usage:
|
16
|
-
power.rb [options] cmd VM
|
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
|
-
cmd = ARGV[0] or Optimist.die("no command given")
|
41
|
-
vm_name = ARGV[1] or Optimist.die("no VM name given")
|
42
|
-
Optimist.die("must specify host") unless opts[:host]
|
43
|
-
|
44
|
-
vim = VIM.connect opts
|
45
|
-
|
46
|
-
dc = vim.serviceInstance.content.rootFolder.traverse(opts[:datacenter], VIM::Datacenter) or abort "datacenter not found"
|
47
|
-
vm = dc.vmFolder.traverse(vm_name, VIM::VirtualMachine) or abort "VM not found"
|
48
|
-
|
49
|
-
case cmd
|
50
|
-
when 'on'
|
51
|
-
vm.PowerOnVM_Task.wait_for_completion
|
52
|
-
when 'off'
|
53
|
-
vm.PowerOffVM_Task.wait_for_completion
|
54
|
-
when 'reset'
|
55
|
-
vm.ResetVM_Task.wait_for_completion
|
56
|
-
when 'suspend'
|
57
|
-
vm.SuspendVM_Task.wait_for_completion
|
58
|
-
when 'destroy'
|
59
|
-
vm.Destroy_Task.wait_for_completion
|
60
|
-
else
|
61
|
-
abort "invalid command"
|
62
|
-
end
|
data/examples/readme-1.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
# Copyright (c) 2011-2017 VMware, Inc. All Rights Reserved.
|
2
|
-
# SPDX-License-Identifier: MIT
|
3
|
-
|
4
|
-
require 'rbvmomi'
|
5
|
-
require 'rbvmomi/optimist'
|
6
|
-
|
7
|
-
opts = Optimist.options do
|
8
|
-
banner <<-EOS
|
9
|
-
Example 1 from the README: Power on a VM.
|
10
|
-
|
11
|
-
Usage:
|
12
|
-
readme-1.rb [options] VM name
|
13
|
-
|
14
|
-
VIM connection options:
|
15
|
-
EOS
|
16
|
-
|
17
|
-
rbvmomi_connection_opts
|
18
|
-
|
19
|
-
text <<-EOS
|
20
|
-
|
21
|
-
VM location options:
|
22
|
-
EOS
|
23
|
-
|
24
|
-
rbvmomi_datacenter_opt
|
25
|
-
|
26
|
-
text <<-EOS
|
27
|
-
|
28
|
-
Other options:
|
29
|
-
EOS
|
30
|
-
end
|
31
|
-
|
32
|
-
Optimist.die("must specify host") unless opts[:host]
|
33
|
-
vm_name = ARGV[0] or abort "must specify VM name"
|
34
|
-
|
35
|
-
vim = RbVmomi::VIM.connect opts
|
36
|
-
dc = vim.serviceInstance.find_datacenter(opts[:datacenter]) or fail "datacenter not found"
|
37
|
-
vm = dc.find_vm(vm_name) or fail "VM not found"
|
38
|
-
vm.PowerOnVM_Task.wait_for_completion
|
data/examples/readme-2.rb
DELETED
@@ -1,54 +0,0 @@
|
|
1
|
-
# Copyright (c) 2011-2017 VMware, Inc. All Rights Reserved.
|
2
|
-
# SPDX-License-Identifier: MIT
|
3
|
-
|
4
|
-
require 'rbvmomi'
|
5
|
-
require 'rbvmomi/optimist'
|
6
|
-
|
7
|
-
opts = Optimist.options do
|
8
|
-
banner <<-EOS
|
9
|
-
Example 2 from the README: Power on a VM the hard way.
|
10
|
-
|
11
|
-
Usage:
|
12
|
-
readme-2.rb [options] VM name
|
13
|
-
|
14
|
-
VIM connection options:
|
15
|
-
EOS
|
16
|
-
|
17
|
-
rbvmomi_connection_opts
|
18
|
-
|
19
|
-
text <<-EOS
|
20
|
-
|
21
|
-
VM location options:
|
22
|
-
EOS
|
23
|
-
|
24
|
-
rbvmomi_datacenter_opt
|
25
|
-
|
26
|
-
text <<-EOS
|
27
|
-
|
28
|
-
Other options:
|
29
|
-
EOS
|
30
|
-
end
|
31
|
-
|
32
|
-
Optimist.die("must specify host") unless opts[:host]
|
33
|
-
vm_name = ARGV[0] or abort "must specify VM name"
|
34
|
-
|
35
|
-
vim = RbVmomi::VIM.connect opts
|
36
|
-
rootFolder = vim.serviceInstance.content.rootFolder
|
37
|
-
dc = rootFolder.childEntity.grep(RbVmomi::VIM::Datacenter).find { |x| x.name == opts[:datacenter] } or fail "datacenter not found"
|
38
|
-
vm = dc.vmFolder.childEntity.grep(RbVmomi::VIM::VirtualMachine).find { |x| x.name == vm_name } or fail "VM not found"
|
39
|
-
task = vm.PowerOnVM_Task
|
40
|
-
filter = vim.propertyCollector.CreateFilter(
|
41
|
-
:spec => {
|
42
|
-
:propSet => [{ :type => 'Task', :all => false, :pathSet => ['info.state']}],
|
43
|
-
:objectSet => [{ :obj => task }]
|
44
|
-
},
|
45
|
-
:partialUpdates => false
|
46
|
-
)
|
47
|
-
ver = ''
|
48
|
-
while true
|
49
|
-
result = vim.propertyCollector.WaitForUpdates(:version => ver)
|
50
|
-
ver = result.version
|
51
|
-
break if ['success', 'error'].member? task.info.state
|
52
|
-
end
|
53
|
-
filter.DestroyPropertyFilter
|
54
|
-
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,51 +0,0 @@
|
|
1
|
-
# Copyright (c) 2011-2017 VMware, Inc. All Rights Reserved.
|
2
|
-
# SPDX-License-Identifier: MIT
|
3
|
-
|
4
|
-
# Based on takeVMScreenshot.pl by William Lam
|
5
|
-
require 'optimist'
|
6
|
-
require 'rbvmomi'
|
7
|
-
require 'rbvmomi/optimist'
|
8
|
-
|
9
|
-
VIM = RbVmomi::VIM
|
10
|
-
|
11
|
-
opts = Optimist.options do
|
12
|
-
banner <<-EOS
|
13
|
-
Take a screenshot.
|
14
|
-
|
15
|
-
Usage:
|
16
|
-
screenshot.rb [options] vm filename
|
17
|
-
|
18
|
-
A PNG image will be saved to the given filename.
|
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
|
-
end
|
37
|
-
|
38
|
-
Optimist.die("must specify host") unless opts[:host]
|
39
|
-
vm_name = ARGV[0] or abort("must specify VM name")
|
40
|
-
output_path = ARGV[1] or abort("must specify output filename")
|
41
|
-
|
42
|
-
vim = VIM.connect opts
|
43
|
-
dc = vim.serviceInstance.find_datacenter(opts[:datacenter])
|
44
|
-
vm = dc.find_vm vm_name
|
45
|
-
abort "VM must be running" unless vm.runtime.powerState == 'poweredOn'
|
46
|
-
remote_path = vm.CreateScreenshot_Task.wait_for_completion
|
47
|
-
remote_path =~ /^(\/vmfs\/volumes\/[^\/]+)\// or fail
|
48
|
-
datastore_prefix = $1
|
49
|
-
datastore_path = $'
|
50
|
-
datastore = vm.datastore.find { |ds| ds.info.url == datastore_prefix }
|
51
|
-
datastore.download datastore_path, output_path
|