rbvmomi2 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +19 -0
- data/README.md +114 -0
- data/exe/rbvmomish +138 -0
- data/lib/rbvmomi/basic_types.rb +383 -0
- data/lib/rbvmomi/connection.rb +272 -0
- data/lib/rbvmomi/deserialization.rb +249 -0
- data/lib/rbvmomi/fault.rb +19 -0
- data/lib/rbvmomi/optimist.rb +72 -0
- data/lib/rbvmomi/pbm.rb +68 -0
- data/lib/rbvmomi/sms/SmsStorageManager.rb +10 -0
- data/lib/rbvmomi/sms.rb +63 -0
- data/lib/rbvmomi/sso.rb +313 -0
- data/lib/rbvmomi/trivial_soap.rb +122 -0
- data/lib/rbvmomi/type_loader.rb +138 -0
- data/lib/rbvmomi/utils/admission_control.rb +401 -0
- data/lib/rbvmomi/utils/deploy.rb +318 -0
- data/lib/rbvmomi/utils/leases.rb +145 -0
- data/lib/rbvmomi/utils/perfdump.rb +631 -0
- data/lib/rbvmomi/version.rb +6 -0
- data/lib/rbvmomi/vim/ComputeResource.rb +54 -0
- data/lib/rbvmomi/vim/Datacenter.rb +25 -0
- data/lib/rbvmomi/vim/Datastore.rb +72 -0
- data/lib/rbvmomi/vim/DynamicTypeMgrAllTypeInfo.rb +78 -0
- data/lib/rbvmomi/vim/DynamicTypeMgrDataTypeInfo.rb +23 -0
- data/lib/rbvmomi/vim/DynamicTypeMgrManagedTypeInfo.rb +54 -0
- data/lib/rbvmomi/vim/Folder.rb +214 -0
- data/lib/rbvmomi/vim/HostSystem.rb +177 -0
- data/lib/rbvmomi/vim/ManagedEntity.rb +60 -0
- data/lib/rbvmomi/vim/ManagedObject.rb +63 -0
- data/lib/rbvmomi/vim/ObjectContent.rb +26 -0
- data/lib/rbvmomi/vim/ObjectUpdate.rb +26 -0
- data/lib/rbvmomi/vim/OvfManager.rb +204 -0
- data/lib/rbvmomi/vim/PerfCounterInfo.rb +28 -0
- data/lib/rbvmomi/vim/PerformanceManager.rb +113 -0
- data/lib/rbvmomi/vim/PropertyCollector.rb +28 -0
- data/lib/rbvmomi/vim/ReflectManagedMethodExecuter.rb +33 -0
- data/lib/rbvmomi/vim/ResourcePool.rb +58 -0
- data/lib/rbvmomi/vim/ServiceInstance.rb +58 -0
- data/lib/rbvmomi/vim/Task.rb +68 -0
- data/lib/rbvmomi/vim/VirtualMachine.rb +75 -0
- data/lib/rbvmomi/vim.rb +157 -0
- data/lib/rbvmomi.rb +16 -0
- data/lib/rbvmomi2.rb +3 -0
- data/vmodl.db +0 -0
- metadata +214 -0
@@ -0,0 +1,58 @@
|
|
1
|
+
# Copyright (c) 2011-2017 VMware, Inc. All Rights Reserved.
|
2
|
+
# SPDX-License-Identifier: MIT
|
3
|
+
|
4
|
+
class RbVmomi::VIM::ServiceInstance
|
5
|
+
# Retrieve a Datacenter.
|
6
|
+
# If no path is given the first datacenter will be returned.
|
7
|
+
# @param path (see Folder#traverse)
|
8
|
+
# @return [Datacenter]
|
9
|
+
def find_datacenter path=nil
|
10
|
+
if path
|
11
|
+
content.rootFolder.traverse path, RbVmomi::VIM::Datacenter
|
12
|
+
else
|
13
|
+
content.rootFolder.childEntity.grep(RbVmomi::VIM::Datacenter).first
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# Wait for several tasks to complete.
|
18
|
+
# @param interested [Array] Property paths to watch for updates.
|
19
|
+
# @param tasks [Array] Tasks to wait on.
|
20
|
+
# @yield [Hash] Called when a property is updated on a task.
|
21
|
+
# The parameter is a hash from tasks to hashes from
|
22
|
+
# property path to value.
|
23
|
+
# @return [void]
|
24
|
+
def wait_for_multiple_tasks interested, tasks
|
25
|
+
version = ''
|
26
|
+
interested = (interested + ['info.state']).uniq
|
27
|
+
task_props = Hash.new { |h,k| h[k] = {} }
|
28
|
+
|
29
|
+
filter = _connection.propertyCollector.CreateFilter :spec => {
|
30
|
+
:propSet => [{ :type => 'Task', :all => false, :pathSet => interested }],
|
31
|
+
:objectSet => tasks.map { |x| { :obj => x } },
|
32
|
+
}, :partialUpdates => false
|
33
|
+
|
34
|
+
begin
|
35
|
+
until task_props.size == tasks.size and task_props.all? { |k,h| %w(success error).member? h['info.state'] }
|
36
|
+
result = _connection.propertyCollector.WaitForUpdates(:version => version)
|
37
|
+
version = result.version
|
38
|
+
os = result.filterSet[0].objectSet
|
39
|
+
|
40
|
+
os.each do |o|
|
41
|
+
changes = Hash[o.changeSet.map { |x| [x.name, x.val] }]
|
42
|
+
|
43
|
+
interested.each do |k|
|
44
|
+
task = tasks.find { |x| x._ref == o.obj._ref }
|
45
|
+
task_props[task][k] = changes[k] if changes.member? k
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
yield task_props if block_given?
|
50
|
+
end
|
51
|
+
ensure
|
52
|
+
_connection.propertyCollector.CancelWaitForUpdates
|
53
|
+
filter.DestroyPropertyFilter
|
54
|
+
end
|
55
|
+
|
56
|
+
task_props
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# Copyright (c) 2011-2017 VMware, Inc. All Rights Reserved.
|
2
|
+
# SPDX-License-Identifier: MIT
|
3
|
+
|
4
|
+
class RbVmomi::VIM::Task
|
5
|
+
# Wait for a task to finish.
|
6
|
+
# @return +info.result+ on success.
|
7
|
+
# @raise +info.error+ on error.
|
8
|
+
def wait_for_completion
|
9
|
+
wait_until('info.state') { %w(success error).member? info.state }
|
10
|
+
case info.state
|
11
|
+
when 'success'
|
12
|
+
info.result
|
13
|
+
when 'error'
|
14
|
+
raise info.error
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# Wait for all child tasks to finish. If any one child task failed,
|
19
|
+
# the exception of the first failing task is thrown.
|
20
|
+
# @return [Hash] Map of tasks to their +info.result+ on success.
|
21
|
+
# @raise +info.error+ on error.
|
22
|
+
def wait_for_childtask_completion
|
23
|
+
si = _connection.serviceInstance
|
24
|
+
tasks_props = si.wait_for_multiple_tasks(
|
25
|
+
['info.state', 'info.result', 'info.error'],
|
26
|
+
self.child_tasks
|
27
|
+
)
|
28
|
+
Hash[tasks_props.map do |task, props|
|
29
|
+
case props['info.state']
|
30
|
+
when 'success'
|
31
|
+
[task, props['info.result']]
|
32
|
+
when 'error'
|
33
|
+
raise props['info.error']
|
34
|
+
end
|
35
|
+
end]
|
36
|
+
end
|
37
|
+
|
38
|
+
# Wait for a task to finish, with progress notifications.
|
39
|
+
# @return (see #wait_for_completion)
|
40
|
+
# @raise (see #wait_for_completion)
|
41
|
+
# @yield [info.progress]
|
42
|
+
def wait_for_progress
|
43
|
+
wait_until('info.state', 'info.progress') do
|
44
|
+
yield info.progress if block_given?
|
45
|
+
%w(success error).member? info.state
|
46
|
+
end
|
47
|
+
case info.state
|
48
|
+
when 'success'
|
49
|
+
info.result
|
50
|
+
when 'error'
|
51
|
+
raise info.error
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# Get child tasks of this task.
|
56
|
+
# @return [Array] List of VIM::Task objects
|
57
|
+
def child_tasks
|
58
|
+
tm = _connection.serviceContent.taskManager
|
59
|
+
col = tm.CreateCollectorForTasks(:filter => {
|
60
|
+
:rootTaskKey => [self.info.key],
|
61
|
+
})
|
62
|
+
# XXX: Likely this is not enough and we need to collect pages other
|
63
|
+
# than the latest.
|
64
|
+
tasks = col.latestPage.map{|x| x.task}
|
65
|
+
col.DestroyCollector()
|
66
|
+
tasks
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# Copyright (c) 2011-2017 VMware, Inc. All Rights Reserved.
|
2
|
+
# SPDX-License-Identifier: MIT
|
3
|
+
|
4
|
+
class RbVmomi::VIM::VirtualMachine
|
5
|
+
# Retrieve the MAC addresses for all virtual NICs.
|
6
|
+
# @return [Hash] Keyed by device label.
|
7
|
+
def macs
|
8
|
+
Hash[self.config.hardware.device.grep(RbVmomi::VIM::VirtualEthernetCard).map { |x| [x.deviceInfo.label, x.macAddress] }]
|
9
|
+
end
|
10
|
+
|
11
|
+
# Retrieve all virtual disk devices.
|
12
|
+
# @return [Array] Array of virtual disk devices.
|
13
|
+
def disks
|
14
|
+
self.config.hardware.device.grep(RbVmomi::VIM::VirtualDisk)
|
15
|
+
end
|
16
|
+
|
17
|
+
# Get the IP of the guest, but only if it is not stale
|
18
|
+
# @return [String] Current IP reported (as per VMware Tools) or nil
|
19
|
+
def guest_ip
|
20
|
+
g = self.guest
|
21
|
+
if g.ipAddress && (g.toolsStatus == "toolsOk" || g.toolsStatus == "toolsOld")
|
22
|
+
g.ipAddress
|
23
|
+
else
|
24
|
+
nil
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# Add a layer of delta disks (redo logs) in front of every disk on the VM.
|
29
|
+
# This is similar to taking a snapshot and makes the VM a valid target for
|
30
|
+
# creating a linked clone.
|
31
|
+
#
|
32
|
+
# Background: The API for linked clones is quite strange. We can't create
|
33
|
+
# a linked straight from any VM. The disks of the VM for which we can create a
|
34
|
+
# linked clone need to be read-only and thus VC demands that the VM we
|
35
|
+
# are cloning from uses delta-disks. Only then it will allow us to
|
36
|
+
# share the base disk.
|
37
|
+
def add_delta_disk_layer_on_all_disks
|
38
|
+
spec = update_spec_add_delta_disk_layer_on_all_disks
|
39
|
+
self.ReconfigVM_Task(:spec => spec).wait_for_completion
|
40
|
+
end
|
41
|
+
|
42
|
+
# Updates a passed in spec to perform the task of adding a delta disk layer
|
43
|
+
# on top of all disks. Does the same as add_delta_disk_layer_on_all_disks
|
44
|
+
# but instead of issuing the ReconfigVM_Task, it just constructs the
|
45
|
+
# spec, so that the caller can batch a couple of updates into one
|
46
|
+
# ReconfigVM_Task.
|
47
|
+
def update_spec_add_delta_disk_layer_on_all_disks spec = {}
|
48
|
+
devices, = self.collect 'config.hardware.device'
|
49
|
+
disks = devices.grep(RbVmomi::VIM::VirtualDisk)
|
50
|
+
device_change = []
|
51
|
+
disks.each do |disk|
|
52
|
+
device_change << {
|
53
|
+
:operation => :remove,
|
54
|
+
:device => disk
|
55
|
+
}
|
56
|
+
device_change << {
|
57
|
+
:operation => :add,
|
58
|
+
:fileOperation => :create,
|
59
|
+
:device => disk.dup.tap { |x|
|
60
|
+
x.backing = x.backing.dup
|
61
|
+
x.backing.fileName = "[#{disk.backing.datastore.name}]"
|
62
|
+
x.backing.parent = disk.backing
|
63
|
+
},
|
64
|
+
}
|
65
|
+
end
|
66
|
+
if spec.is_a?(RbVmomi::VIM::VirtualMachineConfigSpec)
|
67
|
+
spec.deviceChange ||= []
|
68
|
+
spec.deviceChange += device_change
|
69
|
+
else
|
70
|
+
spec[:deviceChange] ||= []
|
71
|
+
spec[:deviceChange] += device_change
|
72
|
+
end
|
73
|
+
spec
|
74
|
+
end
|
75
|
+
end
|
data/lib/rbvmomi/vim.rb
ADDED
@@ -0,0 +1,157 @@
|
|
1
|
+
# Copyright (c) 2011-2017 VMware, Inc. All Rights Reserved.
|
2
|
+
# SPDX-License-Identifier: MIT
|
3
|
+
|
4
|
+
# Win32::SSPI is part of core on Windows
|
5
|
+
begin
|
6
|
+
require 'win32/sspi'
|
7
|
+
rescue LoadError
|
8
|
+
end
|
9
|
+
WIN32 = (defined? Win32::SSPI)
|
10
|
+
|
11
|
+
module RbVmomi
|
12
|
+
|
13
|
+
# A connection to one vSphere SDK endpoint.
|
14
|
+
# @see #serviceInstance
|
15
|
+
class VIM < Connection
|
16
|
+
# Connect to a vSphere SDK endpoint
|
17
|
+
#
|
18
|
+
# @param [Hash] opts The options hash.
|
19
|
+
# @option opts [String] :host Host to connect to.
|
20
|
+
# @option opts [Numeric] :port (443) Port to connect to.
|
21
|
+
# @option opts [Boolean] :ssl (true) Whether to use SSL.
|
22
|
+
# @option opts [Boolean] :insecure (false) If true, ignore SSL certificate errors.
|
23
|
+
# @option opts [String] :cookie If set, use cookie to connect instead of user/password
|
24
|
+
# @option opts [String] :user (root) Username.
|
25
|
+
# @option opts [String] :password Password.
|
26
|
+
# @option opts [String] :path (/sdk) SDK endpoint path.
|
27
|
+
# @option opts [Boolean] :debug (false) If true, print SOAP traffic to stderr.
|
28
|
+
# @option opts [String] :operation_id If set, use for operationID
|
29
|
+
# @option opts [Boolean] :close_on_exit (true) If true, will close connection with at_exit
|
30
|
+
# @option opts [RbVmomi::SSO] :sso (nil) Use SSO token to login if set
|
31
|
+
def self.connect opts
|
32
|
+
fail unless opts.is_a? Hash
|
33
|
+
fail "host option required" unless opts[:host]
|
34
|
+
opts[:cookie] ||= nil
|
35
|
+
opts[:user] ||= (WIN32 ? ENV['USERNAME'].dup : 'root')
|
36
|
+
opts[:password] ||= ''
|
37
|
+
opts[:ssl] = true unless opts.member? :ssl or opts[:"no-ssl"]
|
38
|
+
opts[:insecure] ||= false
|
39
|
+
opts[:port] ||= (opts[:ssl] ? 443 : 80)
|
40
|
+
opts[:path] ||= '/sdk'
|
41
|
+
opts[:ns] ||= 'urn:vim25'
|
42
|
+
opts[:rev] = '6.7' if opts[:rev].nil?
|
43
|
+
opts[:debug] = (!ENV['RBVMOMI_DEBUG'].empty? rescue false) unless opts.member? :debug
|
44
|
+
|
45
|
+
conn = new(opts).tap do |vim|
|
46
|
+
unless opts[:cookie]
|
47
|
+
if WIN32 && opts[:password] == ''
|
48
|
+
# Attempt login by SSPI if no password specified on Windows
|
49
|
+
negotiation = Win32::SSPI::NegotiateAuth.new opts[:user], ENV['USERDOMAIN'].dup
|
50
|
+
begin
|
51
|
+
vim.serviceContent.sessionManager.LoginBySSPI :base64Token => negotiation.get_initial_token
|
52
|
+
rescue RbVmomi::Fault => fault
|
53
|
+
if !fault.fault.is_a?(RbVmomi::VIM::SSPIChallenge)
|
54
|
+
raise
|
55
|
+
else
|
56
|
+
vim.serviceContent.sessionManager.LoginBySSPI :base64Token => negotiation.complete_authentication(fault.base64Token)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
elsif opts[:sso]
|
60
|
+
vim.serviceContent.sessionManager.LoginByToken
|
61
|
+
else
|
62
|
+
vim.serviceContent.sessionManager.Login :userName => opts[:user], :password => opts[:password]
|
63
|
+
end
|
64
|
+
end
|
65
|
+
rev = vim.serviceContent.about.apiVersion
|
66
|
+
vim.rev = [rev, opts[:rev]].min { |a, b| Gem::Version.new(a) <=> Gem::Version.new(b) }
|
67
|
+
end
|
68
|
+
|
69
|
+
at_exit { conn.close } if opts.fetch(:close_on_exit, true)
|
70
|
+
conn
|
71
|
+
end
|
72
|
+
|
73
|
+
def close
|
74
|
+
serviceContent.sessionManager.Logout
|
75
|
+
rescue RbVmomi::Fault => e
|
76
|
+
$stderr.puts(e.message) if debug
|
77
|
+
ensure
|
78
|
+
self.cookie = nil
|
79
|
+
super
|
80
|
+
end
|
81
|
+
|
82
|
+
def rev= x
|
83
|
+
super
|
84
|
+
@serviceContent = nil
|
85
|
+
end
|
86
|
+
|
87
|
+
# Return the ServiceInstance
|
88
|
+
#
|
89
|
+
# The ServiceInstance is the root of the vSphere inventory.
|
90
|
+
# @see http://www.vmware.com/support/developer/vc-sdk/visdk41pubs/ApiReference/vim.ServiceInstance.html
|
91
|
+
def serviceInstance
|
92
|
+
VIM::ServiceInstance self, 'ServiceInstance'
|
93
|
+
end
|
94
|
+
|
95
|
+
# Alias to serviceInstance.RetrieveServiceContent
|
96
|
+
def serviceContent
|
97
|
+
@serviceContent ||= serviceInstance.RetrieveServiceContent
|
98
|
+
end
|
99
|
+
|
100
|
+
# Alias to serviceContent.rootFolder
|
101
|
+
def rootFolder
|
102
|
+
serviceContent.rootFolder
|
103
|
+
end
|
104
|
+
|
105
|
+
alias root rootFolder
|
106
|
+
|
107
|
+
# Alias to serviceContent.propertyCollector
|
108
|
+
def propertyCollector
|
109
|
+
serviceContent.propertyCollector
|
110
|
+
end
|
111
|
+
|
112
|
+
# Alias to serviceContent.searchIndex
|
113
|
+
def searchIndex
|
114
|
+
serviceContent.searchIndex
|
115
|
+
end
|
116
|
+
|
117
|
+
# @private
|
118
|
+
def pretty_print pp
|
119
|
+
pp.text "VIM(#{@opts[:host]})"
|
120
|
+
end
|
121
|
+
|
122
|
+
def instanceUuid
|
123
|
+
serviceContent.about.instanceUuid
|
124
|
+
end
|
125
|
+
|
126
|
+
def get_log_lines logKey, lines=5, start=nil, host=nil
|
127
|
+
diagMgr = self.serviceContent.diagnosticManager
|
128
|
+
if !start
|
129
|
+
log = diagMgr.BrowseDiagnosticLog(:host => host, :key => logKey, :start => 999999999)
|
130
|
+
lineEnd = log.lineEnd
|
131
|
+
start = lineEnd - lines
|
132
|
+
end
|
133
|
+
start = start < 0 ? 0 : start
|
134
|
+
log = diagMgr.BrowseDiagnosticLog(:host => host, :key => logKey, :start => start)
|
135
|
+
if log.lineText.size > 0
|
136
|
+
[log.lineText.slice(-lines, log.lineText.size), log.lineEnd]
|
137
|
+
else
|
138
|
+
[log.lineText, log.lineEnd]
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
def get_log_keys host=nil
|
143
|
+
diagMgr = self.serviceContent.diagnosticManager
|
144
|
+
keys = []
|
145
|
+
diagMgr.QueryDescriptions(:host => host).each do |desc|
|
146
|
+
keys << "#{desc.key}"
|
147
|
+
end
|
148
|
+
keys
|
149
|
+
end
|
150
|
+
|
151
|
+
add_extension_dir File.join(File.dirname(__FILE__), "vim")
|
152
|
+
(ENV['RBVMOMI_VIM_EXTENSION_PATH']||'').split(':').each { |dir| add_extension_dir dir }
|
153
|
+
|
154
|
+
load_vmodl(ENV['VMODL'] || File.join(File.dirname(__FILE__), "../../vmodl.db"))
|
155
|
+
end
|
156
|
+
|
157
|
+
end
|
data/lib/rbvmomi.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# Copyright (c) 2010-2019 VMware, Inc. All Rights Reserved.
|
2
|
+
# SPDX-License-Identifier: MIT
|
3
|
+
|
4
|
+
# RbVmomi is a Ruby interface to the vSphere management interface
|
5
|
+
module RbVmomi
|
6
|
+
# @private
|
7
|
+
# @deprecated Use +RbVmomi::VIM.connect+.
|
8
|
+
def self.connect(opts)
|
9
|
+
VIM.connect opts
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
require_relative 'rbvmomi/connection'
|
14
|
+
require_relative 'rbvmomi/sso'
|
15
|
+
require_relative 'rbvmomi/version'
|
16
|
+
require_relative 'rbvmomi/vim'
|
data/lib/rbvmomi2.rb
ADDED
data/vmodl.db
ADDED
Binary file
|
metadata
ADDED
@@ -0,0 +1,214 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rbvmomi2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 3.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Rich Lane
|
8
|
+
- Christian Dickmann
|
9
|
+
autorequire:
|
10
|
+
bindir: exe
|
11
|
+
cert_chain: []
|
12
|
+
date: 2021-09-23 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: builder
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '3.2'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '3.2'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: json
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '2.3'
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '2.3'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: nokogiri
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '1.10'
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '1.10'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: optimist
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '3.0'
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '3.0'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: pry
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - "~>"
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 0.13.1
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - "~>"
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: 0.13.1
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: rake
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - "~>"
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '13.0'
|
91
|
+
type: :development
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - "~>"
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '13.0'
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: simplecov
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - "~>"
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: 0.18.5
|
105
|
+
type: :development
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - "~>"
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: 0.18.5
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: yard
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - "~>"
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: 0.9.25
|
119
|
+
type: :development
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - "~>"
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: 0.9.25
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: test-unit
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - "~>"
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '3.3'
|
133
|
+
type: :development
|
134
|
+
prerelease: false
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - "~>"
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '3.3'
|
140
|
+
description:
|
141
|
+
email: jrg@vmware.com
|
142
|
+
executables:
|
143
|
+
- rbvmomish
|
144
|
+
extensions: []
|
145
|
+
extra_rdoc_files: []
|
146
|
+
files:
|
147
|
+
- LICENSE
|
148
|
+
- README.md
|
149
|
+
- exe/rbvmomish
|
150
|
+
- lib/rbvmomi.rb
|
151
|
+
- lib/rbvmomi/basic_types.rb
|
152
|
+
- lib/rbvmomi/connection.rb
|
153
|
+
- lib/rbvmomi/deserialization.rb
|
154
|
+
- lib/rbvmomi/fault.rb
|
155
|
+
- lib/rbvmomi/optimist.rb
|
156
|
+
- lib/rbvmomi/pbm.rb
|
157
|
+
- lib/rbvmomi/sms.rb
|
158
|
+
- lib/rbvmomi/sms/SmsStorageManager.rb
|
159
|
+
- lib/rbvmomi/sso.rb
|
160
|
+
- lib/rbvmomi/trivial_soap.rb
|
161
|
+
- lib/rbvmomi/type_loader.rb
|
162
|
+
- lib/rbvmomi/utils/admission_control.rb
|
163
|
+
- lib/rbvmomi/utils/deploy.rb
|
164
|
+
- lib/rbvmomi/utils/leases.rb
|
165
|
+
- lib/rbvmomi/utils/perfdump.rb
|
166
|
+
- lib/rbvmomi/version.rb
|
167
|
+
- lib/rbvmomi/vim.rb
|
168
|
+
- lib/rbvmomi/vim/ComputeResource.rb
|
169
|
+
- lib/rbvmomi/vim/Datacenter.rb
|
170
|
+
- lib/rbvmomi/vim/Datastore.rb
|
171
|
+
- lib/rbvmomi/vim/DynamicTypeMgrAllTypeInfo.rb
|
172
|
+
- lib/rbvmomi/vim/DynamicTypeMgrDataTypeInfo.rb
|
173
|
+
- lib/rbvmomi/vim/DynamicTypeMgrManagedTypeInfo.rb
|
174
|
+
- lib/rbvmomi/vim/Folder.rb
|
175
|
+
- lib/rbvmomi/vim/HostSystem.rb
|
176
|
+
- lib/rbvmomi/vim/ManagedEntity.rb
|
177
|
+
- lib/rbvmomi/vim/ManagedObject.rb
|
178
|
+
- lib/rbvmomi/vim/ObjectContent.rb
|
179
|
+
- lib/rbvmomi/vim/ObjectUpdate.rb
|
180
|
+
- lib/rbvmomi/vim/OvfManager.rb
|
181
|
+
- lib/rbvmomi/vim/PerfCounterInfo.rb
|
182
|
+
- lib/rbvmomi/vim/PerformanceManager.rb
|
183
|
+
- lib/rbvmomi/vim/PropertyCollector.rb
|
184
|
+
- lib/rbvmomi/vim/ReflectManagedMethodExecuter.rb
|
185
|
+
- lib/rbvmomi/vim/ResourcePool.rb
|
186
|
+
- lib/rbvmomi/vim/ServiceInstance.rb
|
187
|
+
- lib/rbvmomi/vim/Task.rb
|
188
|
+
- lib/rbvmomi/vim/VirtualMachine.rb
|
189
|
+
- lib/rbvmomi2.rb
|
190
|
+
- vmodl.db
|
191
|
+
homepage: https://github.com/vmware/rbvmomi
|
192
|
+
licenses:
|
193
|
+
- MIT
|
194
|
+
metadata: {}
|
195
|
+
post_install_message:
|
196
|
+
rdoc_options: []
|
197
|
+
require_paths:
|
198
|
+
- lib
|
199
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
200
|
+
requirements:
|
201
|
+
- - ">="
|
202
|
+
- !ruby/object:Gem::Version
|
203
|
+
version: 2.4.1
|
204
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - ">="
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
209
|
+
requirements: []
|
210
|
+
rubygems_version: 3.2.5
|
211
|
+
signing_key:
|
212
|
+
specification_version: 4
|
213
|
+
summary: Ruby interface to the VMware vSphere API
|
214
|
+
test_files: []
|