rbvmomi2 3.0.0

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 (46) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +19 -0
  3. data/README.md +114 -0
  4. data/exe/rbvmomish +138 -0
  5. data/lib/rbvmomi/basic_types.rb +383 -0
  6. data/lib/rbvmomi/connection.rb +272 -0
  7. data/lib/rbvmomi/deserialization.rb +249 -0
  8. data/lib/rbvmomi/fault.rb +19 -0
  9. data/lib/rbvmomi/optimist.rb +72 -0
  10. data/lib/rbvmomi/pbm.rb +68 -0
  11. data/lib/rbvmomi/sms/SmsStorageManager.rb +10 -0
  12. data/lib/rbvmomi/sms.rb +63 -0
  13. data/lib/rbvmomi/sso.rb +313 -0
  14. data/lib/rbvmomi/trivial_soap.rb +122 -0
  15. data/lib/rbvmomi/type_loader.rb +138 -0
  16. data/lib/rbvmomi/utils/admission_control.rb +401 -0
  17. data/lib/rbvmomi/utils/deploy.rb +318 -0
  18. data/lib/rbvmomi/utils/leases.rb +145 -0
  19. data/lib/rbvmomi/utils/perfdump.rb +631 -0
  20. data/lib/rbvmomi/version.rb +6 -0
  21. data/lib/rbvmomi/vim/ComputeResource.rb +54 -0
  22. data/lib/rbvmomi/vim/Datacenter.rb +25 -0
  23. data/lib/rbvmomi/vim/Datastore.rb +72 -0
  24. data/lib/rbvmomi/vim/DynamicTypeMgrAllTypeInfo.rb +78 -0
  25. data/lib/rbvmomi/vim/DynamicTypeMgrDataTypeInfo.rb +23 -0
  26. data/lib/rbvmomi/vim/DynamicTypeMgrManagedTypeInfo.rb +54 -0
  27. data/lib/rbvmomi/vim/Folder.rb +214 -0
  28. data/lib/rbvmomi/vim/HostSystem.rb +177 -0
  29. data/lib/rbvmomi/vim/ManagedEntity.rb +60 -0
  30. data/lib/rbvmomi/vim/ManagedObject.rb +63 -0
  31. data/lib/rbvmomi/vim/ObjectContent.rb +26 -0
  32. data/lib/rbvmomi/vim/ObjectUpdate.rb +26 -0
  33. data/lib/rbvmomi/vim/OvfManager.rb +204 -0
  34. data/lib/rbvmomi/vim/PerfCounterInfo.rb +28 -0
  35. data/lib/rbvmomi/vim/PerformanceManager.rb +113 -0
  36. data/lib/rbvmomi/vim/PropertyCollector.rb +28 -0
  37. data/lib/rbvmomi/vim/ReflectManagedMethodExecuter.rb +33 -0
  38. data/lib/rbvmomi/vim/ResourcePool.rb +58 -0
  39. data/lib/rbvmomi/vim/ServiceInstance.rb +58 -0
  40. data/lib/rbvmomi/vim/Task.rb +68 -0
  41. data/lib/rbvmomi/vim/VirtualMachine.rb +75 -0
  42. data/lib/rbvmomi/vim.rb +157 -0
  43. data/lib/rbvmomi.rb +16 -0
  44. data/lib/rbvmomi2.rb +3 -0
  45. data/vmodl.db +0 -0
  46. 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
@@ -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
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative './rbvmomi'
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: []