rbvmomi2 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
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: []