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,71 +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-test2"
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}, HOST: #{miqVm.hostSystem}"
22
- puts
23
-
24
- targetHostName = nil
25
- targetHostObj = nil
26
- puts "Host systems:"
27
- vim.hostSystems.each do |k, v|
28
- if k != miqVm.hostSystem
29
- targetHostName = k
30
- targetHostObj = v
31
- end
32
- puts "\t#{k} (#{v['MOR']})"
33
- end
34
- puts
35
-
36
- raise "No suitable target host system found" if !targetHostName
37
-
38
- targetRp = nil
39
- vim.resourcePoolsByMor.each_value do |rp|
40
- owner = rp['owner']
41
- next if !(cr = vim.computeResourcesByMor[owner])
42
- hosts = cr['host']['ManagedObjectReference']
43
- hosts = [ hosts ] if !hosts.kind_of?(Array)
44
- hosts.each do |hmor|
45
- if hmor == targetHostObj['MOR']
46
- targetRp = rp
47
- break
48
- end
49
- end
50
- break if targetRp
51
- end
52
- puts
53
-
54
- raise "No suitable target resource pool found" if !targetRp
55
-
56
- puts "Migrating #{miqVm.name} from #{miqVm.hostSystem} to #{targetHostName}"
57
- puts
58
- miqVm.migrate(targetHostObj, targetRp)
59
-
60
- miqVm.refresh
61
- puts "VM: #{miqVm.name}, HOST: #{miqVm.hostSystem}"
62
- puts
63
- rescue => err
64
- puts err.to_s
65
- puts err.backtrace.join("\n")
66
- ensure
67
- puts
68
- puts "Exiting..."
69
- miqVm.release if miqVm
70
- vim.disconnect if vim
71
- end
@@ -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 = MiqVim.new(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.rebootSupported?
31
- puts "Host does not support reboot"
32
- exit
33
- end
34
-
35
- puts
36
- puts "Rebooting host..."
37
- miqHost.rebootHost
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,52 +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
- # $miq_wiredump = true
8
-
9
- TARGET_VM = "testxav"
10
- vim = MiqVim.new(SERVER, USERNAME, PASSWORD)
11
-
12
- begin
13
-
14
- puts "vim.class: #{vim.class}"
15
- puts "#{vim.server} is #{(vim.isVirtualCenter? ? 'VC' : 'ESX')}"
16
- puts "API version: #{vim.apiVersion}"
17
-
18
- miqVm = vim.getVimVmByFilter("config.name" => TARGET_VM)
19
-
20
- puts "VM UUID: #{miqVm.vmh['config']['uuid']}"
21
-
22
- puts
23
- if miqVm.remoteDisplayVncEnabled?
24
- vmsAttr = miqVm.getRemoteDisplayVncAttributes
25
- puts "RemoteDisplay.vnc.enabled: #{vmsAttr['enabled']}"
26
- puts "RemoteDisplay.vnc.key: #{vmsAttr['key']}"
27
- puts "RemoteDisplay.vnc.password: #{vmsAttr['password']}"
28
- puts "RemoteDisplay.vnc.port: #{vmsAttr['port']}"
29
- else
30
- puts "VM RemoveDisplay.vnc is not enabled"
31
- end
32
-
33
- miqVm.setRemoteDisplayVncAttributes('enabled' => "true", 'password' => PASSWORD, 'port' => 5901)
34
- miqVm.refresh
35
-
36
- puts
37
- if miqVm.remoteDisplayVncEnabled?
38
- vmsAttr = miqVm.getRemoteDisplayVncAttributes
39
- puts "RemoteDisplay.vnc.enabled: #{vmsAttr['enabled']}"
40
- puts "RemoteDisplay.vnc.key: #{vmsAttr['key']}"
41
- puts "RemoteDisplay.vnc.password: #{vmsAttr['password']}"
42
- puts "RemoteDisplay.vnc.port: #{vmsAttr['port']}"
43
- else
44
- puts "VM RemoveDisplay.vnc vnc is not enabled"
45
- end
46
-
47
- rescue => err
48
- puts err.to_s
49
- puts err.backtrace.join("\n")
50
- ensure
51
- vim.disconnect
52
- end
@@ -1,45 +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
- if ARGV.length != 3
8
- $stderr.puts "Usage: #{$0} server username password"
9
- exit 1
10
- end
11
-
12
- server = ARGV[0]
13
- username = ARGV[1]
14
- password = ARGV[2]
15
-
16
- begin
17
- puts "Connecting to #{server}..."
18
- vim = MiqVim.new(server, username, password)
19
- puts "Done."
20
-
21
- puts "vim.class: #{vim.class}"
22
- puts "#{vim.server} is #{(vim.isVirtualCenter? ? 'VC' : 'ESX')}"
23
- puts "API version: #{vim.apiVersion}"
24
- puts
25
-
26
- vim.virtualMachinesByMor.each_value do |vm|
27
- miqVm = vim.getVimVmByMor(vm['MOR'])
28
- if miqVm.hasSnapshot?(MiqVimVm::EVM_SNAPSHOT_NAME)
29
- sso = miqVm.searchSsTree(miqVm.snapshotInfo['rootSnapshotList'], 'name', MiqVimVm::EVM_SNAPSHOT_NAME)
30
- unless sso
31
- $stderr.puts "#{miqVm.name}: could not determine the MOR of the EVM snapshot. Skipping."
32
- next
33
- end
34
- puts "Deleting EVM snapshot for #{miqVm.name}..."
35
- miqVm.removeSnapshot(sso['snapshot']) if miqVm.name == 'rpo-mp-test'
36
- puts "done."
37
- puts
38
- end
39
- end
40
- rescue => err
41
- puts err.to_s
42
- puts err.backtrace.join("\n")
43
- ensure
44
- vim.disconnect
45
- end
@@ -1,135 +0,0 @@
1
- require 'manageiq-gems-pending'
2
- require 'enumerator'
3
- require 'VMwareWebService/MiqVim'
4
- require 'VMwareWebService/MiqVimBroker'
5
-
6
- $vim_log = Logger.new(STDOUT)
7
- $vim_log.level = Logger::WARN
8
-
9
- $stdout.sync = true
10
- $stderr.sync = true
11
-
12
- $miq_wiredump = false
13
-
14
- begin
15
- vim = MiqVim.new(SERVER, USERNAME, PASSWORD)
16
-
17
- puts "vim.class: #{vim.class}"
18
- puts "#{vim.server} is #{(vim.isVirtualCenter? ? 'VC' : 'ESX')}"
19
- puts "API version: #{vim.apiVersion}"
20
- puts
21
-
22
- miqPh = vim.getVimPerfHistory
23
-
24
- vm = "MIQ-ITUNES"
25
- # vm = "rpo-test2"
26
- host = raise "please define"
27
- host2 = raise "please define"
28
-
29
- hostMor = vim.hostSystems[host]['MOR']
30
- raise "Host #{host} not found" unless hostMor
31
-
32
- puts "*** Calling: queryProviderSummary for #{host}"
33
- psum = miqPh.queryProviderSummary(hostMor)
34
- puts "\tsummarySupported = #{psum['summarySupported']}"
35
- puts "\tcurrentSupported = #{psum['currentSupported']}"
36
- puts "\trefreshRate = #{psum['refreshRate']}"
37
- puts
38
-
39
- puts "*** Calling: availMetricsForEntity"
40
- pmids = miqPh.availMetricsForEntity(hostMor, :intervalId => psum['refreshRate'])
41
- # puts "*** Available Counters for: #{host}"
42
- # pmids.each do |pmid|
43
- # cinfo = miqPh.id2Counter[pmid.counterId]
44
- # puts "\t#{cinfo['groupInfo']['key']}.#{cinfo['nameInfo']['key']}"
45
- # puts "\t\tcounterId = #{pmid.counterId}"
46
- # puts "\t\tinstance = #{pmid.instance}"
47
- # end
48
- puts
49
-
50
- vmo = vim.virtualMachinesByFilter("config.name" => vm)
51
- if vmo.empty?
52
- puts "VM: #{vm} not found"
53
- exit
54
- end
55
- vmMor = vmo[0]['MOR']
56
-
57
- # vim.dumpObj(vmo[0])
58
- puts "*** Calling: queryProviderSummary for #{vm}"
59
- psum = miqPh.queryProviderSummary(vmMor)
60
- # vim.dumpObj(psum)
61
- puts
62
-
63
- puts "Calling: availMetricsForEntity"
64
- pmids = miqPh.availMetricsForEntity(vmMor, :intervalId => psum['refreshRate'])
65
- puts "*** Available Counters for: #{vm}"
66
- pmids.each do |pmid|
67
- cinfo = miqPh.id2Counter[pmid.counterId]
68
- puts "\t#{cinfo['groupInfo']['key']}.#{cinfo['nameInfo']['key']}"
69
- puts "\t\tcounterId = #{pmid.counterId}"
70
- puts "\t\tinstance = #{pmid.instance}"
71
- end
72
- puts
73
-
74
- cpurdyi = miqPh.getCounterInfo('cpu', 'ready', 'summation', 'delta')
75
- # cpurdyi = miqPh.getCounterInfo('cpu', 'used', 'summation', 'delta')
76
- puts "cpurdyi = #{cpurdyi['key']}"
77
- puts
78
- puts "miqPh: #{miqPh.class}, ID = 0x#{miqPh.object_id.to_s(16)}"
79
-
80
- # ma = miqPh.queryPerf(vmMor, :counterId => cpurdyi['key'], :instance => "*", :intervalId => psum['refreshRate'], :maxSample => 1)
81
- # ma.each_slice(2) { |t, v| puts ":\tValue: #{v}\t\tTIme: #{t.to_s}" }
82
- # puts
83
-
84
- vma = vim.virtualMachinesByFilter("summary.runtime.hostName" => host2)
85
-
86
- metricId = [{:counterId => cpurdyi['key'], :instance => "0"}]
87
- ea = []
88
-
89
- puts "VMs on: #{host2}"
90
- vma.each do |vmo|
91
- puts "\t#{vmo['config']['name']}"
92
- ea << {:entity => vmo['MOR'], :intervalId => psum['refreshRate'], :metricId => metricId}
93
- end
94
- puts
95
- # ea << { :entity => vmMor, :intervalId => psum['refreshRate'], :metricId => metricId }
96
-
97
- pcm = miqPh.queryPerfMulti(ea)
98
- vim.dumpObj(pcm)
99
- exit
100
-
101
- tsHash = Hash.new { |h, k| h[k] = [] }
102
- pcm.each do |pem|
103
- sInfo = pem['sampleInfo']
104
- va = pem['value']['value']
105
- sInfo.each_index do |si|
106
- ts = sInfo[si]['timestamp'].to_s
107
- tsHash[ts] << va[si]
108
- end
109
- end
110
- puts
111
-
112
- puts "*** Average VM CPU ready time by time-slice:"
113
- tsHash.keys.sort.each do |ts|
114
- va = tsHash[ts]
115
- sum = 0
116
- va.each { |v| sum += v.to_i }
117
- avg = sum / va.length
118
- print ":\t#{ts}: [NV = #{va.length}, AVG = #{avg}]"
119
- va.each { |v| print ", #{v}" }
120
- puts
121
- end
122
-
123
- # puts "**** queryPerfMulti start"
124
- # vim.dumpObj(pcm)
125
- # puts "**** queryPerfMulti end"
126
-
127
- rescue => err
128
- puts err.to_s
129
- puts err.backtrace.join("\n")
130
- ensure
131
- puts
132
- puts "Exiting..."
133
- miqPh.release if miqPh
134
- vim.disconnect if vim
135
- end
@@ -1,90 +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
-
10
- VimTestMethods = [
11
- :virtualMachines,
12
- :virtualMachinesByMor,
13
- :virtualMachineByMor,
14
- :computeResources,
15
- :computeResourcesByMor,
16
- :computeResourceByMor,
17
- :clusterComputeResources,
18
- :clusterComputeResourcesByMor,
19
- :clusterComputeResourceByMor,
20
- :resourcePools,
21
- :resourcePoolsByMor,
22
- :resourcePoolByMor,
23
- :folders,
24
- :foldersByMor,
25
- :folderByMor,
26
- :datacenters,
27
- :datacentersByMor,
28
- :datacenterByMor,
29
- :hostSystems,
30
- :hostSystemsByMor,
31
- :hostSystemByMor,
32
- :dataStores,
33
- :dataStoresByMor,
34
- :dataStoreByMor
35
- ]
36
-
37
- SelectionSpec = {}
38
-
39
- #
40
- # Set SelectionSpec for all broker instances and their connections.
41
- # Must be set in the broker server.
42
- # MiqVimBroker.setSelector(SelectionSpec)
43
-
44
- TARGET_HOST = raise "please define"
45
- hMor = nil
46
-
47
- vim = MiqVim.new(SERVER, USERNAME, PASSWORD)
48
-
49
- miqHost = nil
50
-
51
- begin
52
- puts "vim.class: #{vim.class}"
53
- puts "#{vim.server} is #{(vim.isVirtualCenter? ? 'VC' : 'ESX')}"
54
- puts "API version: #{vim.apiVersion}"
55
-
56
- VimTestMethods.each_slice(3) do |objs, objsbymor, objbymor|
57
- rv = vim.send(objsbymor, objs)
58
- next if rv.values.empty?
59
- mor = rv.values.first['MOR']
60
-
61
- puts
62
- puts "*** #{objsbymor} START"
63
- vim.dumpObj(rv)
64
- puts "*** #{objsbymor} END"
65
-
66
- rv = vim.send(objbymor, mor, objs)
67
-
68
- puts
69
- puts "*** #{objbymor} START"
70
- vim.dumpObj(rv)
71
- puts "*** #{objbymor} END"
72
-
73
- rv = vim.send(objs, objs)
74
- end
75
-
76
- miqHost = vim.getVimHost(TARGET_HOST)
77
-
78
- puts
79
- puts "*** storageDevice START"
80
- sd = miqHost.storageDevice(:storageDeviceSS)
81
- vim.dumpObj(sd)
82
- puts "*** storageDevice END"
83
-
84
- rescue => err
85
- puts err.to_s
86
- puts err.backtrace.join("\n")
87
- ensure
88
- miqHost.release if miqHost
89
- vim.disconnect
90
- end