vmware_web_service 0.1.1 → 0.1.2

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 (88) hide show
  1. checksums.yaml +4 -4
  2. data/lib/VMwareWebService/MiqVimDataStore.rb +6 -7
  3. data/lib/VMwareWebService/MiqVimHost.rb +1 -2
  4. data/lib/VMwareWebService/MiqVimVm.rb +8 -8
  5. data/lib/VMwareWebService/VixDiskLib/VixDiskLibServer.rb +0 -1
  6. data/lib/VMwareWebService/VixDiskLib/vdl_wrapper.rb +0 -1
  7. data/lib/VMwareWebService/exception.rb +14 -0
  8. data/lib/VMwareWebService/miq_fault_tolerant_vim.rb +1 -0
  9. data/lib/VMwareWebService/version.rb +1 -1
  10. metadata +21 -84
  11. data/lib/VMwareWebService/VixDiskLib/test/api_test.rb +0 -76
  12. data/lib/VMwareWebService/VixDiskLib/test/cookedTest.rb +0 -86
  13. data/lib/VMwareWebService/VixDiskLib/test/fillDisk.rb +0 -30
  14. data/lib/VMwareWebService/VixDiskLib/test/rawCloneTest.rb +0 -49
  15. data/lib/VMwareWebService/VixDiskLib/test/rawTest.rb +0 -79
  16. data/lib/VMwareWebService/VixDiskLib/test/rawTest11.rb +0 -72
  17. data/lib/VMwareWebService/VixDiskLib/test/rawWriteTest.rb +0 -33
  18. data/lib/VMwareWebService/VixDiskLib/test/vixDiskModTest.rb +0 -96
  19. data/lib/VMwareWebService/test/CustomizationSpec/sles10-x64-vanilla-cust-spec.xml +0 -56
  20. data/lib/VMwareWebService/test/CustomizationSpec/w2k8-x64-vanilla-cust-spec.xml +0 -566
  21. data/lib/VMwareWebService/test/MiqVimBrokerClient.rb +0 -116
  22. data/lib/VMwareWebService/test/MiqVimBrokerServer.rb +0 -128
  23. data/lib/VMwareWebService/test/MiqVimFolderTest.rb +0 -57
  24. data/lib/VMwareWebService/test/MiqVimPerfTest.rb +0 -129
  25. data/lib/VMwareWebService/test/MiqVimVmTest.rb +0 -127
  26. data/lib/VMwareWebService/test/addDiskTest.rb +0 -45
  27. data/lib/VMwareWebService/test/addHostToCluster.rb +0 -89
  28. data/lib/VMwareWebService/test/addNasDatastoreByName.rb +0 -45
  29. data/lib/VMwareWebService/test/addStandaloneHost.rb +0 -59
  30. data/lib/VMwareWebService/test/alarmManagerTest.rb +0 -37
  31. data/lib/VMwareWebService/test/alarmTest.rb +0 -20
  32. data/lib/VMwareWebService/test/annotation.rb +0 -33
  33. data/lib/VMwareWebService/test/brokerClientServerStats.rb +0 -78
  34. data/lib/VMwareWebService/test/brokerConnectionLockTest.rb +0 -81
  35. data/lib/VMwareWebService/test/brokerLoadTest.rb +0 -123
  36. data/lib/VMwareWebService/test/brokerObjCountTest.rb +0 -43
  37. data/lib/VMwareWebService/test/browserTest.rb +0 -141
  38. data/lib/VMwareWebService/test/cloneAsyncTest.rb +0 -140
  39. data/lib/VMwareWebService/test/cloneCsmTest.rb +0 -162
  40. data/lib/VMwareWebService/test/cloneDvsTest.rb +0 -187
  41. data/lib/VMwareWebService/test/cloneTest.rb +0 -153
  42. data/lib/VMwareWebService/test/cpuAffinity.rb +0 -35
  43. data/lib/VMwareWebService/test/cpuMemTest.rb +0 -45
  44. data/lib/VMwareWebService/test/createFolderTest.rb +0 -65
  45. data/lib/VMwareWebService/test/createNfsDatastore.rb +0 -42
  46. data/lib/VMwareWebService/test/customFieldsManagerTest.rb +0 -57
  47. data/lib/VMwareWebService/test/customizationSpecManagerTest.rb +0 -69
  48. data/lib/VMwareWebService/test/diskPerf.rb +0 -122
  49. data/lib/VMwareWebService/test/emsRefreshTest.rb +0 -78
  50. data/lib/VMwareWebService/test/enterMaintenanceMode.rb +0 -56
  51. data/lib/VMwareWebService/test/eventHistoryTest.rb +0 -139
  52. data/lib/VMwareWebService/test/hostAdvancedOptionTest.rb +0 -45
  53. data/lib/VMwareWebService/test/hostConfigSpecTest.rb +0 -51
  54. data/lib/VMwareWebService/test/hostDatastoreTest.rb +0 -51
  55. data/lib/VMwareWebService/test/hostDvsTest.rb +0 -60
  56. data/lib/VMwareWebService/test/hostFirewallTest.rb +0 -149
  57. data/lib/VMwareWebService/test/hostNetworkTest.rb +0 -63
  58. data/lib/VMwareWebService/test/hostServiceTest.rb +0 -147
  59. data/lib/VMwareWebService/test/hostSnmpSystemTest.rb +0 -58
  60. data/lib/VMwareWebService/test/hostStandByTest.rb +0 -51
  61. data/lib/VMwareWebService/test/hostStorageSystem.rb +0 -73
  62. data/lib/VMwareWebService/test/hostTest.rb +0 -50
  63. data/lib/VMwareWebService/test/hostVirtualNicManagerTest.rb +0 -83
  64. data/lib/VMwareWebService/test/linkedCloneFromTemplateTest.rb +0 -135
  65. data/lib/VMwareWebService/test/linkedCloneTest.rb +0 -132
  66. data/lib/VMwareWebService/test/list_evm_snapshots.rb +0 -38
  67. data/lib/VMwareWebService/test/logStatusTest.rb +0 -31
  68. data/lib/VMwareWebService/test/logTest.rb +0 -72
  69. data/lib/VMwareWebService/test/migrateTest.rb +0 -71
  70. data/lib/VMwareWebService/test/rebootHostTest.rb +0 -47
  71. data/lib/VMwareWebService/test/remoteDisplayVnc.rb +0 -52
  72. data/lib/VMwareWebService/test/rm_evm_snapshots.rb +0 -45
  73. data/lib/VMwareWebService/test/rtPerfTest.rb +0 -135
  74. data/lib/VMwareWebService/test/selectionSpecBrokerClassTest.rb +0 -90
  75. data/lib/VMwareWebService/test/selectionSpecBrokerInstanceTest.rb +0 -163
  76. data/lib/VMwareWebService/test/selectionSpecVimClassTest.rb +0 -249
  77. data/lib/VMwareWebService/test/selectionSpecVimTest.rb +0 -232
  78. data/lib/VMwareWebService/test/shutdownHostTest.rb +0 -47
  79. data/lib/VMwareWebService/test/snapshotTest.rb +0 -61
  80. data/lib/VMwareWebService/test/templateTest.rb +0 -67
  81. data/lib/VMwareWebService/test/thinProvisioned.rb +0 -87
  82. data/lib/VMwareWebService/test/vdlBrowserTest.rb +0 -113
  83. data/lib/VMwareWebService/test/vimCoreUpdater.rb +0 -25
  84. data/lib/VMwareWebService/test/vimEventMonitory.rb +0 -26
  85. data/lib/VMwareWebService/test/vimInventory.rb +0 -24
  86. data/lib/VMwareWebService/test/virtualApp.rb +0 -47
  87. data/lib/VMwareWebService/test/virtualDiskPerf.rb +0 -82
  88. data/lib/VMwareWebService/test/vmsafe.rb +0 -56
@@ -1,47 +0,0 @@
1
- require 'manageiq-gems-pending'
2
- require 'VMwareWebService/MiqVim'
3
- require 'VMwareWebService/MiqVimBroker'
4
-
5
- $vim_log = Logger.new(STDOUT)
6
- $vim_log.level = Logger::WARN
7
-
8
- # $miq_wiredump = true
9
- TARGET_HOST = raise "please define"
10
- HOST_USERNAME = ""
11
- HOST_PASSWORD = ""
12
- CLUSTER_NAME = ""
13
-
14
- miqCluster = nil
15
- miqHost = nil
16
-
17
- broker = MiqVimBroker.new(:client)
18
- vim = broker.getMiqVim(SERVER, USERNAME, PASSWORD)
19
-
20
- begin
21
-
22
- puts "vim.class: #{vim.class}"
23
- puts "#{vim.server} is #{(vim.isVirtualCenter? ? 'VC' : 'ESX')}"
24
- puts "API version: #{vim.apiVersion}"
25
-
26
- puts
27
- miqHost = vim.getVimHost(TARGET_HOST)
28
- puts "Got object for host: #{miqHost.name}"
29
-
30
- unless miqHost.shutdownSupported?
31
- puts "Host does not support shutdown"
32
- exit
33
- end
34
-
35
- puts
36
- puts "Shutting down host..."
37
- miqHost.shutdownHost
38
- puts "done."
39
-
40
-
41
- rescue => err
42
- puts err.to_s
43
- puts err.backtrace.join("\n")
44
- ensure
45
- miqCluster.release if miqCluster
46
- vim.disconnect
47
- end
@@ -1,61 +0,0 @@
1
- require 'manageiq-gems-pending'
2
- require 'VMwareWebService/MiqVim'
3
-
4
- $vim_log = Logger.new(STDOUT)
5
- $vim_log.level = Logger::WARN
6
-
7
- $stdout.sync = true
8
-
9
- TARGET_VM = "AAA2206"
10
- vmMor = nil
11
-
12
- begin
13
- vim = MiqVim.new(SERVER, USERNAME, PASSWORD)
14
- puts "vim.class: #{vim.class}"
15
- puts "#{vim.server} is #{(vim.isVirtualCenter? ? 'VC' : 'ESX')}"
16
- puts "API version: #{vim.apiVersion}"
17
- puts
18
-
19
- miqVm = vim.getVimVmByFilter("config.name" => TARGET_VM)
20
-
21
- puts "Has EvmSnapshot: #{miqVm.hasSnapshot?('EvmSnapshot')}"
22
- miqVm.removeAllSnapshots
23
- exit
24
-
25
- puts
26
- puts "*** START Snapshot info from vim.virtualMachines"
27
- vim.dumpObj(miqVm.vmh['snapshot'])
28
- puts "*** END Snapshot info from vim.virtualMachines"
29
- puts
30
-
31
- ssInfo = miqVm.snapshotInfo
32
-
33
- if ssInfo
34
- # vim.dumpObj(ssInfo)
35
- hasCh = miqVm.hasSnapshot?("Consolidate Helper", true)
36
- puts "Has Consolidate Helper = #{hasCh}"
37
- # exit
38
-
39
- ssHash = ssInfo['ssMorHash']
40
- curSnapshot = ssHash[ssInfo['currentSnapshot'].to_s]['snapshot']
41
- puts
42
- puts "curSnapshot = #{curSnapshot}"
43
- puts "curSnapshot name = #{ssHash[ssInfo['currentSnapshot'].to_s]['name']}"
44
- puts "++++++++++++++ snapshot props from tree +++++++++++++++++++++++++++"
45
- vim.dumpObj(ssInfo)
46
- puts "+++++++++++++++ end snapshot props from tree ++++++++++++++++++++++++++"
47
- else
48
- puts "No snapshots found"
49
- end
50
-
51
- snMor = miqVm.createSnapshot("rpoTest", "test snapshot", false, "false")
52
- puts "snMor = #{snMor}"
53
-
54
- miqVm.removeSnapshot(snMor)
55
- # miqVm.removeSnapshot(String.new(snMor.to_s))
56
- rescue => err
57
- puts err.to_s
58
- puts err.backtrace.join("\n")
59
- ensure
60
- vim.disconnect
61
- end
@@ -1,67 +0,0 @@
1
- require 'manageiq-gems-pending'
2
- require 'VMwareWebService/MiqVim'
3
-
4
- $vim_log = Logger.new(STDOUT)
5
- $vim_log.level = Logger::WARN
6
-
7
- TARGET_VM = "rpo-template-test"
8
- vmMor = nil
9
- miqVm = nil
10
-
11
- begin
12
- vim = MiqVim.new(SERVER, USERNAME, PASSWORD)
13
-
14
- puts "vim.class: #{vim.class}"
15
- puts "#{vim.server} is #{(vim.isVirtualCenter? ? 'VC' : 'ESX')}"
16
- puts "API version: #{vim.apiVersion}"
17
- puts
18
-
19
- miqVm = vim.getVimVmByFilter("config.name" => TARGET_VM)
20
-
21
- puts "VM: #{miqVm.name}"
22
- puts
23
-
24
- isTemplate = miqVm.template?
25
-
26
- puts "Template: #{isTemplate}"
27
- unless isTemplate
28
- puts "Marking VM as Template."
29
- miqVm.markAsTemplate
30
- puts "Template: #{miqVm.template?}"
31
- exit
32
- end
33
-
34
- targetHostObj = vim.hostSystems.values.first
35
- raise "No suitable target host system found" unless targetHostObj
36
-
37
- targetRp = nil
38
- vim.resourcePoolsByMor.each_value do |rp|
39
- owner = rp['owner']
40
- next unless (cr = vim.computeResourcesByMor[owner])
41
- hosts = cr['host']['ManagedObjectReference']
42
- hosts = [hosts] unless hosts.kind_of?(Array)
43
- hosts.each do |hmor|
44
- if hmor == targetHostObj['MOR']
45
- targetRp = rp
46
- break
47
- end
48
- end
49
- break if targetRp
50
- end
51
- puts
52
-
53
- raise "No suitable target resource pool found" unless targetRp
54
-
55
- puts "Marking VM as Virtual Machine."
56
- puts
57
- miqVm.markAsVm(targetRp, targetHostObj)
58
- puts "Template: #{miqVm.template?}"
59
- rescue => err
60
- puts err.to_s
61
- puts err.backtrace.join("\n")
62
- ensure
63
- puts
64
- puts "Exiting..."
65
- miqVm.release if miqVm
66
- vim.disconnect if vim
67
- end
@@ -1,87 +0,0 @@
1
- require 'manageiq-gems-pending'
2
- require 'VMwareWebService/MiqVim'
3
- require 'VMwareWebService/MiqVimBroker'
4
-
5
- $vim_log = Logger.new(STDOUT)
6
- $vim_log.level = Logger::WARN
7
-
8
- TARGET_VM = raise "please define"
9
- miqVm = nil
10
-
11
- begin
12
- vim = MiqVim.new(SERVER, USERNAME, PASSWORD)
13
-
14
- # vim.logger = $stdout
15
-
16
- puts "vim.class: #{vim.class}"
17
- puts "#{vim.server} is #{(vim.isVirtualCenter? ? 'VC' : 'ESX')}"
18
- puts "API version: #{vim.apiVersion}"
19
- puts
20
-
21
- miqVm = vim.getVimVmByFilter("config.name" => TARGET_VM)
22
-
23
- # puts miqVm.acquireMksTicket
24
-
25
- puts
26
- puts "Connection State: #{miqVm.connectionState}"
27
- puts "Power State: #{miqVm.powerState}"
28
- puts
29
-
30
- thinDevs = miqVm.devicesByFilter("backing.thinProvisioned" => "true")
31
-
32
- if thinDevs.empty?
33
- puts "#{TARGET_VM} has no thin provisioned disks."
34
- exit
35
- end
36
-
37
- vimDs = nil
38
- puts "Thin provisioned disks for #{TARGET_VM}:"
39
- thinDevs.each do |d|
40
- path = d['backing']['fileName']
41
- dsrPath = vim.dsRelativePath(path)
42
- dir, file = File.split(dsrPath)
43
-
44
- #
45
- # Just in case all the files aren't on the same datastore.
46
- #
47
- if vimDs
48
- if vimDs.dsMor != d['backing']['datastore']
49
- vimDs.release
50
- vimDs = vim.getVimDataStoreByMor(d['backing']['datastore'])
51
- end
52
- else
53
- vimDs = vim.getVimDataStoreByMor(d['backing']['datastore'])
54
- puts
55
- puts "\t(Datastore capacity: #{vimDs.capacityBytes} bytes)"
56
- puts "\t(Datastore free space: #{vimDs.freeBytes} bytes)"
57
- if vimDs.uncommitted
58
- deltaCommit = vimDs.freeBytes - vimDs.uncommitted
59
- puts "\t(Datastore uncommitted space: #{vimDs.uncommitted} bytes)"
60
- if deltaCommit >= 0
61
- puts "\t(Datastore under committed by: #{deltaCommit} bytes)"
62
- else
63
- puts "\t(Datastore over committed by: #{-deltaCommit} bytes)"
64
- end
65
- end
66
- puts
67
- end
68
-
69
- fo = vimDs.dsVmDiskFileSearch(file, dir, false, false).first
70
-
71
- puts "\tPath: #{path}"
72
- puts "\t\tFile: #{file}"
73
- puts "\t\tCapacity: #{d['capacityInKB']} KB"
74
- puts "\t\tFile size: #{fo.fileSize.to_i / 1024} KB" if fo
75
- puts
76
- end
77
-
78
- rescue => err
79
- puts err.to_s
80
- puts err.backtrace.join("\n")
81
- ensure
82
- puts
83
- puts "Exiting..."
84
- vimDs.release if vimDs
85
- miqVm.release if miqVm
86
- vim.disconnect if vim
87
- end
@@ -1,113 +0,0 @@
1
- require 'manageiq-gems-pending'
2
- require 'enumerator'
3
-
4
- require 'VMwareWebService/MiqVimBroker'
5
- require 'VMwareWebService/VixDiskLib/VixDiskLib'
6
-
7
- $vim_log = Logger.new(STDOUT)
8
- $vim_log.level = Logger::WARN
9
-
10
- $stderr.sync = true
11
- $stdout.sync = true
12
-
13
- # $DEBUG = true
14
- # MiqVimClientBase.wiredump_file = "clone.txt"
15
-
16
- SRC_VM = "rpo-test2"
17
-
18
- readRanges = [
19
- 0, 256,
20
- 0, 512,
21
- 256, 512,
22
- 512, 256,
23
- 512, 512,
24
- 256, 1024,
25
- 1280, 256,
26
- 1280, 512,
27
- 1280, 1024
28
- ]
29
-
30
- vDisk = nil
31
- vdlc = nil
32
-
33
- begin
34
- broker = MiqVimBroker.new(:client)
35
- unless broker.serverAlive?
36
- puts "Broker server isn't running"
37
- exit
38
- end
39
-
40
- t0 = Time.now
41
-
42
- vim = broker.getMiqVim.new(SERVER, USERNAME, PASSWORD)
43
-
44
- puts "vim.class: #{vim.class}"
45
- puts "#{vim.server} is #{(vim.isVirtualCenter? ? 'VC' : 'ESX')}"
46
- puts "API version: #{vim.apiVersion}"
47
- puts
48
-
49
- svm = vim.virtualMachinesByFilter("config.name" => SRC_VM)
50
- if svm.empty?
51
- puts "VM: #{SRC_VM} not found"
52
- exit
53
- end
54
-
55
- puts "#{SRC_VM} vmPathName: #{svm[0]['summary']['config']['vmPathName']}"
56
- puts "#{SRC_VM} vmLocalPathName: #{svm[0]['summary']['config']['vmLocalPathName']}"
57
-
58
- sVmMor = svm[0]['MOR']
59
- miqVm = vim.getVimVmByMor(sVmMor)
60
-
61
- puts "VM: #{miqVm.name}, HOST: #{miqVm.hostSystem}"
62
- puts
63
-
64
- diskFile = miqVm.getCfg['scsi0:0.filename']
65
- ldiskFile = vim.localVmPath(diskFile)
66
- puts "diskFile: #{diskFile}"
67
- puts "ldiskFile: #{ldiskFile}"
68
- puts
69
-
70
- if vim.isVirtualCenter?
71
- puts "Calling: miqVm.vdlVcConnection"
72
- vdlc = miqVm.vdlVcConnection
73
- vDisk = vdlc.getDisk(diskFile, VixDiskLib_raw::VIXDISKLIB_FLAG_OPEN_READ_ONLY)
74
- else
75
- vdlc = vim.vdlConnection
76
- vDisk = vdlc.getDisk(ldiskFile, VixDiskLib_raw::VIXDISKLIB_FLAG_OPEN_READ_ONLY)
77
- end
78
-
79
- dinfo = vDisk.info
80
- puts
81
- puts "Disk info:"
82
- dinfo.each { |k, v| puts "\t#{k} => #{v}" }
83
- puts
84
-
85
- readRanges.each_slice(2) do |start, len|
86
- puts "Read test: start = #{start}, len = #{len} (bytes)"
87
- startSector, startOffset = start.divmod(vDisk.sectorSize)
88
- endSector = (start + len - 1) / vDisk.sectorSize
89
- numSector = endSector - startSector + 1
90
- puts "\tstartSector = #{startSector}, numSector = #{numSector}, startOffset = #{startOffset}"
91
-
92
- rBData = vDisk.bread(startSector, numSector)
93
- puts "\tBlock read #{rBData.length} bytes of data."
94
-
95
- rCData = vDisk.read(start, len)
96
- puts "\tByte read #{rCData.length} bytes of data."
97
-
98
- if rCData != rBData[startOffset, len]
99
- puts "\t\t*** Block and byte data don't match"
100
- else
101
- puts "\t\tData check passed"
102
- end
103
- puts
104
- end
105
-
106
- rescue => err
107
- puts err
108
- puts err.class.to_s
109
- puts err.backtrace.join("\n")
110
- ensure
111
- vDisk.close if vDisk
112
- vdlc.disconnect if vdlc
113
- end
@@ -1,25 +0,0 @@
1
- require 'manageiq-gems-pending'
2
- require 'VMwareWebService/MiqVimCoreUpdater'
3
-
4
- SERVER = raise "please define SERVER"
5
- USERNAME = raise "please define USERNAME"
6
- PASSWORD = raise "please define PASSWORD"
7
-
8
- $vim_log = Logger.new(STDOUT)
9
- $vim_log.level = Logger::WARN
10
-
11
- vimEm = MiqVimCoreUpdater.new(SERVER, USERNAME, PASSWORD)
12
-
13
- Signal.trap("INT") { vimEm.stop }
14
-
15
- begin
16
- thread = Thread.new do
17
- vimEm.monitorUpdates do |mor, ph|
18
- puts "Object: #{mor} (#{mor.vimType})"
19
- ph.each { |k, v| puts "\t#{k}:\t#{v}" } unless ph.nil?
20
- end
21
- end
22
- thread.join
23
- rescue => err
24
- puts err.to_s
25
- end
@@ -1,26 +0,0 @@
1
- require 'manageiq-gems-pending'
2
- require 'VMwareWebService/MiqVimEventMonitor'
3
-
4
- SERVER = raise "please define SERVER"
5
- USERNAME = raise "please define USERNAME"
6
- PASSWORD = raise "please define PASSWORD"
7
-
8
- $vim_log = Logger.new(STDOUT)
9
- $vim_log.level = Logger::WARN
10
-
11
- vimEm = MiqVimEventMonitor.new(SERVER, USERNAME, PASSWORD)
12
-
13
- Signal.trap("INT") { vimEm.stop }
14
-
15
- puts "vimEm.class: #{vimEm.class}"
16
- puts "#{vimEm.server} is #{(vimEm.isVirtualCenter? ? 'VC' : 'ESX')}"
17
- puts "API version: #{vimEm.apiVersion}"
18
-
19
- begin
20
- thread = Thread.new { vimEm.monitorEventsToStdout }
21
- thread.join
22
- rescue => err
23
- puts err.to_s
24
- end
25
-
26
- puts "done"
@@ -1,24 +0,0 @@
1
- require 'manageiq-gems-pending'
2
- require 'VMwareWebService/MiqVimInventory'
3
-
4
- SERVER = raise "please define SERVER"
5
- USERNAME = raise "please define USERNAME"
6
- PASSWORD = raise "please define PASSWORD"
7
-
8
- $stderr.sync = true
9
- $vim_log = Logger.new(STDOUT)
10
- $vim_log.level = Logger::WARN
11
-
12
- # $miq_wiredump = true
13
- vim = MiqVimInventory.new(SERVER, USERNAME, PASSWORD)
14
-
15
- puts
16
- puts "#{vim.server} is #{(vim.isVirtualCenter? ? 'VC' : 'ESX')}"
17
- puts "API version: #{vim.apiVersion}"
18
- puts
19
-
20
- puts "folders.length: #{vim.folders.length}"
21
- puts "virtualMachines.length: #{vim.virtualMachines.length}"
22
- puts "virtualMachinesByMor.length: #{vim.virtualMachinesByMor.length}"
23
-
24
- vim.disconnect