vmware_web_service 2.0.3 → 3.1.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.
- checksums.yaml +4 -4
- data/lib/VMwareWebService/MiqHostDatastoreSystem.rb +5 -1
- data/lib/VMwareWebService/MiqVim.rb +80 -56
- data/lib/VMwareWebService/MiqVimClientBase.rb +11 -10
- data/lib/VMwareWebService/MiqVimCluster.rb +6 -2
- data/lib/VMwareWebService/MiqVimDataStore.rb +9 -6
- data/lib/VMwareWebService/MiqVimDump.rb +1 -1
- data/lib/VMwareWebService/MiqVimEventHistoryCollector.rb +5 -1
- data/lib/VMwareWebService/MiqVimEventMonitor.rb +22 -20
- data/lib/VMwareWebService/MiqVimFolder.rb +15 -11
- data/lib/VMwareWebService/MiqVimHost.rb +15 -13
- data/lib/VMwareWebService/MiqVimInventory.rb +78 -79
- data/lib/VMwareWebService/MiqVimPerfHistory.rb +13 -10
- data/lib/VMwareWebService/MiqVimUpdate.rb +50 -50
- data/lib/VMwareWebService/MiqVimVdlMod.rb +7 -7
- data/lib/VMwareWebService/MiqVimVm.rb +102 -101
- data/lib/VMwareWebService/VimService.rb +5 -2
- data/lib/VMwareWebService/VixDiskLib/VixDiskLib.rb +15 -7
- data/lib/VMwareWebService/VixDiskLib/VixDiskLibServer.rb +15 -15
- data/lib/VMwareWebService/VixDiskLib/vdl_wrapper.rb +26 -27
- data/lib/VMwareWebService/exception.rb +0 -2
- data/lib/VMwareWebService/logging.rb +16 -0
- data/lib/VMwareWebService/version.rb +1 -1
- data/lib/vmware_web_service.rb +2 -0
- metadata +15 -48
- data/lib/VMwareWebService/DMiqVim.rb +0 -95
- data/lib/VMwareWebService/DMiqVimSync.rb +0 -45
- data/lib/VMwareWebService/MiqVimBroker.rb +0 -581
- data/lib/VMwareWebService/MiqVimBrokerMods.rb +0 -222
- data/lib/VMwareWebService/MiqVimCoreUpdater.rb +0 -269
- data/lib/VMwareWebService/miq_fault_tolerant_vim.rb +0 -246
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f5cfe645f59b74bbc745d9b8ca87f3f812ef66825ed97d1ae9e9ff90581f78b
|
4
|
+
data.tar.gz: 4159afd750db2f67f086ee758e92f30b9af934003471f6d0e7f721e352e7c1b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e6d105b56f251292a513a69f077fe65636fe54d46df9d92739c008a1d8dbfb4a793edb546bc55f67a8f7fcb2dd53f23aa90cc8234bb5c717d9a569fece53bc4
|
7
|
+
data.tar.gz: fbac5ac0d635a9233fe35195247fdca265e506c4da997f6aa072daad516c160ef9a040b87ab478e6b425b6a0728b7d7674468907abac9df2fb384a748ae81cd4
|
@@ -1,4 +1,8 @@
|
|
1
|
+
require 'VMwareWebService/logging'
|
2
|
+
|
1
3
|
class MiqHostDatastoreSystem
|
4
|
+
include VMwareWebService::Logging
|
5
|
+
|
2
6
|
attr_reader :invObj
|
3
7
|
|
4
8
|
def initialize(dssMor, invObj)
|
@@ -44,7 +48,7 @@ class MiqHostDatastoreSystem
|
|
44
48
|
localPath = dsh.info.nas.name
|
45
49
|
type = dsh.info.nas.type
|
46
50
|
|
47
|
-
|
51
|
+
logger.info "MiqHostDatastoreSystem.addNasDatastoreByName: remoteHost = #{remoteHost}, remotePath = #{remotePath}, localPath = #{localPath}"
|
48
52
|
createNasDatastore(remoteHost, remotePath, localPath, accessMode, type)
|
49
53
|
end
|
50
54
|
end # class MiqHostDatastoreSystem
|
@@ -20,49 +20,73 @@ class MiqVim < MiqVimInventory
|
|
20
20
|
|
21
21
|
attr_reader :updateThread, :monitor_updates
|
22
22
|
|
23
|
-
# @param server [String] DNS name or IP address of the vCenter Server
|
23
|
+
# @param server [String] DNS name or IP address of the vCenter Server
|
24
24
|
# @param username [String] Username to connect to the vCenter Server
|
25
25
|
# @param password [String] Password to connect to the vCenter Server
|
26
|
-
# @param
|
26
|
+
# @param port [Integer] Port to connect to the vCenter Server (default: 443)
|
27
|
+
# @param ssl_options [Hash] SSL connection options, :verify_mode and :ca_file
|
28
|
+
# @param cache_scope [Symbol] A pre-defined set of properties to cache (default: nil)
|
27
29
|
# @param monitor_updates [Bool] Should a thread be started to monitor updates (default: false)
|
28
|
-
# @param
|
29
|
-
# @param
|
30
|
-
# @param
|
31
|
-
# @param
|
32
|
-
# @param
|
33
|
-
def initialize(server
|
34
|
-
super(server, username, password,
|
30
|
+
# @param pre_load [Bool] Should the cache be built before returning the connection (default: false)
|
31
|
+
# @param debug_updates [Bool] Should we print debug info for each update (default: false)
|
32
|
+
# @param notify_method [Method] A optional method to call for each update (default: nil)
|
33
|
+
# @param max_wait [Integer] How many seconds to wait before breaking out of WaitForUpdates (default: 60)
|
34
|
+
# @param max_objects [Integer] How many objects to return from each WaitForUpdates page (default: 250)
|
35
|
+
def initialize(server:, username:, password:, port: 443, ssl_options: {}, cache_scope: nil, monitor_updates: nil, pre_load: nil, debug_updates: false, notify_method: nil, max_wait: 60, max_objects: 250)
|
36
|
+
super(:server => server, :port => port, :ssl_options => ssl_options, :username => username, :password => password, :cache_scope => cache_scope)
|
37
|
+
|
38
|
+
monitor_updates = self.class.monitor_updates if monitor_updates.nil?
|
39
|
+
pre_load = self.class.pre_load if pre_load.nil?
|
35
40
|
|
36
41
|
@monitor_updates = monitor_updates
|
37
42
|
@updateMonitorReady = false
|
38
43
|
@error = nil
|
39
|
-
@notifyMethod =
|
40
|
-
@debugUpdates =
|
41
|
-
@maxWait =
|
42
|
-
@maxObjects =
|
44
|
+
@notifyMethod = notify_method
|
45
|
+
@debugUpdates = debug_updates
|
46
|
+
@maxWait = max_wait
|
47
|
+
@maxObjects = max_objects
|
48
|
+
|
49
|
+
start_monitor_updates_thread(pre_load) if @monitor_updates
|
50
|
+
end
|
51
|
+
|
52
|
+
@@monitor_updates = false
|
53
|
+
@@pre_load = false
|
54
|
+
|
55
|
+
def self.monitor_updates
|
56
|
+
@@monitor_updates
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.monitor_updates=(val)
|
60
|
+
@@monitor_updates = val
|
61
|
+
end
|
62
|
+
|
63
|
+
def self.pre_load
|
64
|
+
@@pre_load
|
65
|
+
end
|
43
66
|
|
44
|
-
|
67
|
+
def self.pre_load=(val)
|
68
|
+
@@pre_load = val
|
45
69
|
end
|
46
70
|
|
47
71
|
def getVimVm(path)
|
48
|
-
|
72
|
+
logger.info "MiqVimMod.getVimVm: called"
|
49
73
|
miqVimVm = nil
|
50
74
|
@cacheLock.synchronize(:SH) do
|
51
75
|
raise MiqException::MiqVimResourceNotFound, "Could not find VM: #{path}" unless (vmh = virtualMachines_locked[path])
|
52
76
|
miqVimVm = MiqVimVm.new(self, conditionalCopy(vmh))
|
53
77
|
end
|
54
|
-
|
78
|
+
logger.info "MiqVimMod.getVimVm: returning object #{miqVimVm.object_id}"
|
55
79
|
(miqVimVm)
|
56
80
|
end # def getVimVm
|
57
81
|
|
58
82
|
def getVimVmByMor(vmMor)
|
59
|
-
|
83
|
+
logger.info "MiqVimMod.getVimVmByMor: called"
|
60
84
|
miqVimVm = nil
|
61
85
|
@cacheLock.synchronize(:SH) do
|
62
86
|
raise MiqException::MiqVimResourceNotFound, "Could not find VM: #{vmMor}" unless (vmh = virtualMachinesByMor_locked[vmMor])
|
63
87
|
miqVimVm = MiqVimVm.new(self, conditionalCopy(vmh))
|
64
88
|
end
|
65
|
-
|
89
|
+
logger.info "MiqVimMod.getVimVmByMor: returning object #{miqVimVm.object_id}"
|
66
90
|
(miqVimVm)
|
67
91
|
end # def getVimVmByMor
|
68
92
|
|
@@ -71,36 +95,36 @@ class MiqVim < MiqVimInventory
|
|
71
95
|
# matches the criteria defined by the filter.
|
72
96
|
#
|
73
97
|
def getVimVmByFilter(filter)
|
74
|
-
|
98
|
+
logger.info "MiqVimMod.getVimVmByFilter: called"
|
75
99
|
miqVimVm = nil
|
76
100
|
@cacheLock.synchronize(:SH) do
|
77
101
|
vms = applyFilter(virtualMachinesByMor_locked.values, filter)
|
78
102
|
raise MiqException::MiqVimResourceNotFound, "getVimVmByFilter: Could not find VM matching filter" if vms.empty?
|
79
103
|
miqVimVm = MiqVimVm.new(self, conditionalCopy(vms[0]))
|
80
104
|
end
|
81
|
-
|
105
|
+
logger.info "MiqVimMod.getVimVmByFilter: returning object #{miqVimVm.object_id}"
|
82
106
|
(miqVimVm)
|
83
107
|
end # def getVimVmByFilter
|
84
108
|
|
85
109
|
def getVimHost(name)
|
86
|
-
|
110
|
+
logger.info "MiqVimMod.getVimHost: called"
|
87
111
|
miqVimHost = nil
|
88
112
|
@cacheLock.synchronize(:SH) do
|
89
113
|
raise MiqException::MiqVimResourceNotFound, "Could not find Host: #{name}" unless (hh = hostSystems_locked[name])
|
90
114
|
miqVimHost = MiqVimHost.new(self, conditionalCopy(hh))
|
91
115
|
end
|
92
|
-
|
116
|
+
logger.info "MiqVimMod.getVimHost: returning object #{miqVimHost.object_id}"
|
93
117
|
(miqVimHost)
|
94
118
|
end # def getVimHost
|
95
119
|
|
96
120
|
def getVimHostByMor(hMor)
|
97
|
-
|
121
|
+
logger.info "MiqVimMod.getVimHostByMor: called"
|
98
122
|
miqVimHost = nil
|
99
123
|
@cacheLock.synchronize(:SH) do
|
100
124
|
raise MiqException::MiqVimResourceNotFound, "Could not find Host: #{hMor}" unless (hh = hostSystemsByMor_locked[hMor])
|
101
125
|
miqVimHost = MiqVimHost.new(self, conditionalCopy(hh))
|
102
126
|
end
|
103
|
-
|
127
|
+
logger.info "MiqVimMod.getVimHostByMor: returning object #{miqVimHost.object_id}"
|
104
128
|
(miqVimHost)
|
105
129
|
end # def getVimHostByMor
|
106
130
|
|
@@ -109,48 +133,48 @@ class MiqVim < MiqVimInventory
|
|
109
133
|
# matches the criteria defined by the filter.
|
110
134
|
#
|
111
135
|
def getVimHostByFilter(filter)
|
112
|
-
|
136
|
+
logger.info "MiqVimMod.getVimHostByFilter: called"
|
113
137
|
miqVimHost = nil
|
114
138
|
@cacheLock.synchronize(:SH) do
|
115
139
|
ha = applyFilter(hostSystemsByMor_locked.values, filter)
|
116
140
|
raise MiqException::MiqVimResourceNotFound, "getVimHostByFilter: Could not find Host matching filter" if ha.empty?
|
117
141
|
miqVimHost = MiqVimHost.new(self, conditionalCopy(ha[0]))
|
118
142
|
end
|
119
|
-
|
143
|
+
logger.info "MiqVimMod.getVimHostByFilter: returning object #{miqVimHost.object_id}"
|
120
144
|
(miqVimHost)
|
121
145
|
end # def getVimHostByFilter
|
122
146
|
|
123
147
|
def getVimFolder(name)
|
124
|
-
|
148
|
+
logger.info "MiqVimMod.getVimFolder: called"
|
125
149
|
miqVimFolder = nil
|
126
150
|
@cacheLock.synchronize(:SH) do
|
127
151
|
raise MiqException::MiqVimResourceNotFound, "Could not find Folder: #{name}" unless (fh = folders_locked[name])
|
128
152
|
miqVimFolder = MiqVimFolder.new(self, conditionalCopy(fh))
|
129
153
|
end
|
130
|
-
|
154
|
+
logger.info "MiqVimMod.getVimFolder: returning object #{miqVimFolder.object_id}"
|
131
155
|
(miqVimFolder)
|
132
156
|
end # def getVimFolder
|
133
157
|
|
134
158
|
def getVimFolderByMor(fMor)
|
135
|
-
|
159
|
+
logger.info "MiqVimMod.getVimFolderByMor: called"
|
136
160
|
miqVimFolder = nil
|
137
161
|
@cacheLock.synchronize(:SH) do
|
138
162
|
raise MiqException::MiqVimResourceNotFound, "Could not find Folder: #{fMor}" unless (fh = foldersByMor_locked[fMor])
|
139
163
|
miqVimFolder = MiqVimFolder.new(self, conditionalCopy(fh))
|
140
164
|
end
|
141
|
-
|
165
|
+
logger.info "MiqVimMod.getVimFolderByMor: returning object #{miqVimFolder.object_id}"
|
142
166
|
(miqVimFolder)
|
143
167
|
end # def getVimFolderByMor
|
144
168
|
|
145
169
|
def getVimFolderByFilter(filter)
|
146
|
-
|
170
|
+
logger.info "MiqVimMod.getVimFolderByFilter: called"
|
147
171
|
miqVimFolder = nil
|
148
172
|
@cacheLock.synchronize(:SH) do
|
149
173
|
folders = applyFilter(foldersByMor_locked.values, filter)
|
150
174
|
raise MiqException::MiqVimResourceNotFound, "getVimFolderByFilter: Could not find folder matching filter" if folders.empty?
|
151
175
|
miqVimFolder = MiqVimFolder.new(self, conditionalCopy(folders[0]))
|
152
176
|
end
|
153
|
-
|
177
|
+
logger.info "MiqVimMod.getVimFolderByFilter: returning object #{miqVimFolder.object_id}"
|
154
178
|
(miqVimFolder)
|
155
179
|
end # def getVimFolderByFilter
|
156
180
|
|
@@ -158,36 +182,36 @@ class MiqVim < MiqVimInventory
|
|
158
182
|
# Cluster
|
159
183
|
#
|
160
184
|
def getVimCluster(name)
|
161
|
-
|
185
|
+
logger.info "MiqVimMod.getVimCluster: called"
|
162
186
|
miqVimCluster = nil
|
163
187
|
@cacheLock.synchronize(:SH) do
|
164
188
|
raise MiqException::MiqVimResourceNotFound, "Could not find Cluster: #{name}" unless (ch = clusterComputeResources_locked[name])
|
165
189
|
miqVimCluster = MiqVimCluster.new(self, conditionalCopy(ch))
|
166
190
|
end
|
167
|
-
|
191
|
+
logger.info "MiqVimMod.getVimCluster: returning object #{miqVimCluster.object_id}"
|
168
192
|
(miqVimCluster)
|
169
193
|
end # def getVimCluster
|
170
194
|
|
171
195
|
def getVimClusterByMor(cMor)
|
172
|
-
|
196
|
+
logger.info "MiqVimMod.getVimClusterByMor: called"
|
173
197
|
miqVimCluster = nil
|
174
198
|
@cacheLock.synchronize(:SH) do
|
175
199
|
raise MiqException::MiqVimResourceNotFound, "Could not find Cluster: #{cMor}" unless (ch = clusterComputeResourcesByMor_locked[cMor])
|
176
200
|
miqVimCluster = MiqVimCluster.new(self, conditionalCopy(ch))
|
177
201
|
end
|
178
|
-
|
202
|
+
logger.info "MiqVimMod.getVimClusterByMor: returning object #{miqVimCluster.object_id}"
|
179
203
|
(miqVimCluster)
|
180
204
|
end # def getVimClusterByMor
|
181
205
|
|
182
206
|
def getVimClusterByFilter(filter)
|
183
|
-
|
207
|
+
logger.info "MiqVimMod.getVimClusterByFilter: called"
|
184
208
|
miqVimCluster = nil
|
185
209
|
@cacheLock.synchronize(:SH) do
|
186
210
|
clusters = applyFilter(clusterComputeResourcesByMor_locked.values, filter)
|
187
211
|
raise MiqException::MiqVimResourceNotFound, "getVimClusterByFilter: Could not find Cluster matching filter" if clusters.empty?
|
188
212
|
miqVimCluster = MiqVimCluster.new(self, conditionalCopy(clusters[0]))
|
189
213
|
end
|
190
|
-
|
214
|
+
logger.info "MiqVimMod.getVimClusterByFilter: returning object #{miqVimCluster.object_id}"
|
191
215
|
(miqVimCluster)
|
192
216
|
end # def getVimClusterByFilter
|
193
217
|
|
@@ -195,54 +219,54 @@ class MiqVim < MiqVimInventory
|
|
195
219
|
# DataStore
|
196
220
|
#
|
197
221
|
def getVimDataStore(dsName)
|
198
|
-
|
222
|
+
logger.info "MiqVimMod.getVimDataStore: called"
|
199
223
|
miqVimDs = nil
|
200
224
|
@cacheLock.synchronize(:SH) do
|
201
225
|
raise MiqException::MiqVimResourceNotFound, "Could not find datastore: #{dsName}" unless (dsh = dataStores_locked[dsName])
|
202
226
|
miqVimDs = MiqVimDataStore.new(self, conditionalCopy(dsh))
|
203
227
|
end
|
204
|
-
|
228
|
+
logger.info "MiqVimMod.getVimDataStore: returning object #{miqVimDs.object_id}"
|
205
229
|
(miqVimDs)
|
206
230
|
end
|
207
231
|
|
208
232
|
def getVimDataStoreByMor(dsMor)
|
209
|
-
|
233
|
+
logger.info "MiqVimMod.getVimDataStoreByMor: called"
|
210
234
|
miqVimDs = nil
|
211
235
|
@cacheLock.synchronize(:SH) do
|
212
236
|
raise MiqException::MiqVimResourceNotFound, "Could not find datastore: #{dsMor}" unless (dsh = dataStoresByMor_locked[dsMor])
|
213
237
|
miqVimDs = MiqVimDataStore.new(self, conditionalCopy(dsh))
|
214
238
|
end
|
215
|
-
|
239
|
+
logger.info "MiqVimMod.getVimDataStoreByMor: returning object #{miqVimDs.object_id}"
|
216
240
|
(miqVimDs)
|
217
241
|
end
|
218
242
|
|
219
243
|
def getVimPerfHistory
|
220
244
|
miqVimPh = MiqVimPerfHistory.new(self)
|
221
|
-
|
245
|
+
logger.info "MiqVimMod.getVimPerfHistory: returning object #{miqVimPh.object_id}"
|
222
246
|
(miqVimPh)
|
223
247
|
end
|
224
248
|
|
225
249
|
def getVimEventHistory(eventFilterSpec = nil, pgSize = 20)
|
226
250
|
miqVimEh = MiqVimEventHistoryCollector.new(self, eventFilterSpec, pgSize)
|
227
|
-
|
251
|
+
logger.info "MiqVimMod.getVimEventHistory: returning object #{miqVimEh.object_id}"
|
228
252
|
(miqVimEh)
|
229
253
|
end
|
230
254
|
|
231
255
|
def getMiqCustomFieldsManager
|
232
256
|
miqVimCfm = MiqCustomFieldsManager.new(self)
|
233
|
-
|
257
|
+
logger.info "MiqVimMod.getMiqCustomFieldsManager: returning object #{miqVimCfm.object_id}"
|
234
258
|
(miqVimCfm)
|
235
259
|
end
|
236
260
|
|
237
261
|
def getVimAlarmManager
|
238
262
|
miqVimAm = MiqVimAlarmManager.new(self)
|
239
|
-
|
263
|
+
logger.info "MiqVimMod.getVimAlarmManager: returning object #{miqVimAm.object_id}"
|
240
264
|
(miqVimAm)
|
241
265
|
end
|
242
266
|
|
243
267
|
def getVimCustomizationSpecManager
|
244
268
|
miqVimCsm = MiqVimCustomizationSpecManager.new(self)
|
245
|
-
|
269
|
+
logger.info "MiqVimMod.getVimCustomizationSpecManager: returning object #{miqVimCsm.object_id}"
|
246
270
|
(miqVimCsm)
|
247
271
|
end
|
248
272
|
|
@@ -257,28 +281,28 @@ class MiqVim < MiqVimInventory
|
|
257
281
|
def start_monitor_updates_thread(preLoad)
|
258
282
|
checkForOrphanedMonitors
|
259
283
|
log_prefix = "MiqVim.initialize (#{@connId})"
|
260
|
-
|
284
|
+
logger.info "#{log_prefix}: starting update monitor thread"
|
261
285
|
@updateThread = Thread.new { monitor(preLoad) }
|
262
286
|
@updateThread[:vim_connection_id] = connId
|
263
|
-
|
287
|
+
logger.info "#{log_prefix}: waiting for update monitor to become ready"
|
264
288
|
until @updateMonitorReady
|
265
289
|
raise @error unless @error.nil?
|
266
290
|
break unless @updateThread.alive?
|
267
291
|
Thread.pass
|
268
292
|
end
|
269
|
-
|
293
|
+
logger.info "#{log_prefix}: update monitor ready"
|
270
294
|
end
|
271
295
|
|
272
296
|
def checkForOrphanedMonitors
|
273
297
|
log_prefix = "MiqVim.checkForOrphanedMonitors (#{@connId})"
|
274
|
-
|
298
|
+
logger.debug "#{log_prefix}: called..."
|
275
299
|
Thread.list.each do |thr|
|
276
300
|
next unless thr[:vim_connection_id] == connId
|
277
|
-
|
301
|
+
logger.error "#{log_prefix}: Terminating orphaned update monitor <#{thr.object_id}>"
|
278
302
|
thr.raise "Orphaned update monitor (#{@connId}) <#{thr.object_id}>, terminated by <#{Thread.current.object_id}>"
|
279
303
|
thr.wakeup
|
280
304
|
end
|
281
|
-
|
305
|
+
logger.debug "#{log_prefix}: done."
|
282
306
|
end
|
283
307
|
|
284
308
|
def monitor(preLoad)
|
@@ -286,7 +310,7 @@ class MiqVim < MiqVimInventory
|
|
286
310
|
begin
|
287
311
|
monitorUpdates(preLoad)
|
288
312
|
rescue Exception => err
|
289
|
-
|
313
|
+
logger.info "#{log_prefix}: returned from monitorUpdates via #{err.class} exception"
|
290
314
|
@error = err
|
291
315
|
end
|
292
316
|
end
|
@@ -296,9 +320,9 @@ class MiqVim < MiqVimInventory
|
|
296
320
|
stopUpdateMonitor
|
297
321
|
begin
|
298
322
|
if @updateThread != Thread.current && @updateThread.alive?
|
299
|
-
|
323
|
+
logger.info "#{log_prefix}: waiting for Update Monitor Thread...Starting"
|
300
324
|
@updateThread.join
|
301
|
-
|
325
|
+
logger.info "#{log_prefix}: waiting for Update Monitor Thread...Complete"
|
302
326
|
end
|
303
327
|
rescue
|
304
328
|
end
|
@@ -8,10 +8,11 @@ require 'VMwareWebService/VimService'
|
|
8
8
|
class MiqVimClientBase < VimService
|
9
9
|
@@receiveTimeout = 120
|
10
10
|
|
11
|
-
attr_reader :server, :username, :password, :connId
|
11
|
+
attr_reader :server, :port, :username, :password, :connId
|
12
12
|
|
13
|
-
def initialize(server
|
13
|
+
def initialize(server:, username:, password:, port: 443, ssl_options: {})
|
14
14
|
@server = server
|
15
|
+
@port = port
|
15
16
|
@username = username
|
16
17
|
@password = password
|
17
18
|
@connId = "#{@server}_#{@username}"
|
@@ -19,13 +20,13 @@ class MiqVimClientBase < VimService
|
|
19
20
|
@receiveTimeout = @@receiveTimeout
|
20
21
|
|
21
22
|
on_http_client_init do |http_client, _headers|
|
22
|
-
http_client.
|
23
|
-
http_client.ssl_config.
|
24
|
-
http_client.
|
23
|
+
http_client.receive_timeout = @receiveTimeout
|
24
|
+
http_client.ssl_config.verify_mode = ssl_options[:verify_ssl] || OpenSSL::SSL::VERIFY_NONE
|
25
|
+
http_client.ssl_config.cert_store.add_cert(OpenSSL::X509::Certificate.new(ssl_options[:ca_file])) if ssl_options[:ca_file]
|
25
26
|
end
|
26
27
|
|
27
|
-
on_log_header { |msg|
|
28
|
-
on_log_body { |msg|
|
28
|
+
on_log_header { |msg| logger.info msg }
|
29
|
+
on_log_body { |msg| logger.debug msg } if $miq_wiredump
|
29
30
|
|
30
31
|
super(:uri => sdk_uri, :version => 1)
|
31
32
|
|
@@ -34,7 +35,7 @@ class MiqVimClientBase < VimService
|
|
34
35
|
end
|
35
36
|
|
36
37
|
def sdk_uri
|
37
|
-
URI::HTTPS.build(:host => server, :path => "/sdk")
|
38
|
+
URI::HTTPS.build(:host => server, :port => port, :path => "/sdk")
|
38
39
|
end
|
39
40
|
|
40
41
|
def self.receiveTimeout=(val)
|
@@ -59,7 +60,7 @@ class MiqVimClientBase < VimService
|
|
59
60
|
end
|
60
61
|
|
61
62
|
def connect
|
62
|
-
|
63
|
+
logger.debug { "#{self.class.name}.connect(#{@connId}): #{$PROGRAM_NAME} #{ARGV.join(' ')}" }
|
63
64
|
@connLock.synchronize(:EX) do
|
64
65
|
return if @connected
|
65
66
|
login(@sic.sessionManager, @username, @password)
|
@@ -68,7 +69,7 @@ class MiqVimClientBase < VimService
|
|
68
69
|
end
|
69
70
|
|
70
71
|
def disconnect
|
71
|
-
|
72
|
+
logger.debug { "#{self.class.name}.disconnect(#{@connId}): #{$PROGRAM_NAME} #{ARGV.join(' ')}" }
|
72
73
|
@connLock.synchronize(:EX) do
|
73
74
|
return unless @connected
|
74
75
|
logout(@sic.sessionManager)
|
@@ -1,4 +1,8 @@
|
|
1
|
+
require 'VMwareWebService/logging'
|
2
|
+
|
1
3
|
class MiqVimCluster
|
4
|
+
include VMwareWebService::Logging
|
5
|
+
|
2
6
|
attr_reader :name, :invObj
|
3
7
|
|
4
8
|
def initialize(invObj, ch)
|
@@ -44,9 +48,9 @@ class MiqVimCluster
|
|
44
48
|
cs.vmFolder = ah[:vmFolder] unless ah[:vmFolder].nil?
|
45
49
|
end
|
46
50
|
|
47
|
-
|
51
|
+
logger.info "MiqVimCluster(#{@invObj.server}, #{@invObj.username}).addHost: calling addHost_Task"
|
48
52
|
taskMor = @invObj.addHost_Task(@cMor, cspec, ah[:asConnected].to_s, ah[:resourcePool], ah[:license])
|
49
|
-
|
53
|
+
logger.info "MiqVimCluster(#{@invObj.server}, #{@invObj.username}).addHost: returned from addHost_Task"
|
50
54
|
return taskMor unless ah[:wait]
|
51
55
|
waitForTask(taskMor)
|
52
56
|
end # def addHost
|
@@ -1,7 +1,10 @@
|
|
1
1
|
require 'sync'
|
2
2
|
require 'util/miq-extensions' # Required patch to open-uri for get_file_content
|
3
|
+
require 'VMwareWebService/logging'
|
3
4
|
|
4
5
|
class MiqVimDataStore
|
6
|
+
include VMwareWebService::Logging
|
7
|
+
|
5
8
|
attr_reader :accessible, :multipleHostAccess, :name, :dsType, :url, :freeBytes, :capacityBytes, :uncommitted, :invObj
|
6
9
|
|
7
10
|
def initialize(invObj, dsh)
|
@@ -127,13 +130,13 @@ class MiqVimDataStore
|
|
127
130
|
|
128
131
|
taskMor = nil
|
129
132
|
if recurse
|
130
|
-
|
133
|
+
logger.info "MiqVimDataStore(#{@invObj.server}, #{@invObj.username}).dsSearch: calling searchDatastoreSubFolders_Task"
|
131
134
|
taskMor = @invObj.searchDatastoreSubFolders_Task(browserMor, dsPath, searchSpec)
|
132
|
-
|
135
|
+
logger.info "MiqVimDataStore(#{@invObj.server}, #{@invObj.username}).dsSearch: returned from searchDatastoreSubFolders_Task"
|
133
136
|
else
|
134
|
-
|
137
|
+
logger.info "MiqVimDataStore(#{@invObj.server}, #{@invObj.username}).dsSearch: calling searchDatastore_Task"
|
135
138
|
taskMor = @invObj.searchDatastore_Task(browserMor, dsPath, searchSpec)
|
136
|
-
|
139
|
+
logger.info "MiqVimDataStore(#{@invObj.server}, #{@invObj.username}).dsSearch: returned from searchDatastore_Task"
|
137
140
|
end
|
138
141
|
|
139
142
|
retObj = waitForTask(taskMor)
|
@@ -200,9 +203,9 @@ class MiqVimDataStore
|
|
200
203
|
hdbs.sortFoldersFirst = "true"
|
201
204
|
end
|
202
205
|
|
203
|
-
|
206
|
+
logger.info "MiqVimDataStore(#{@invObj.server}, #{@invObj.username}).dsHash_locked: calling searchDatastoreSubFolders_Task"
|
204
207
|
taskMor = @invObj.searchDatastoreSubFolders_Task(browser_locked, "[#{@name}]", searchSpec)
|
205
|
-
|
208
|
+
logger.info "MiqVimDataStore(#{@invObj.server}, #{@invObj.username}).dsHash_locked: returned from searchDatastoreSubFolders_Task"
|
206
209
|
|
207
210
|
retObj = waitForTask(taskMor)
|
208
211
|
retObj = [retObj] unless retObj.kind_of?(Array)
|
@@ -1,4 +1,8 @@
|
|
1
|
+
require 'VMwareWebService/logging'
|
2
|
+
|
1
3
|
class MiqVimEventHistoryCollector
|
4
|
+
include VMwareWebService::Logging
|
5
|
+
|
2
6
|
attr_reader :invObj
|
3
7
|
|
4
8
|
def initialize(invObj, eventFilterSpec = nil, pgSize = 20)
|
@@ -14,7 +18,7 @@ class MiqVimEventHistoryCollector
|
|
14
18
|
|
15
19
|
def release
|
16
20
|
return unless @eventHistoryCollector
|
17
|
-
|
21
|
+
logger.info "MiqVimEventHistoryCollector.release: destroying #{@eventHistoryCollector}"
|
18
22
|
@invObj.destroyCollector(@eventHistoryCollector)
|
19
23
|
@eventHistoryCollector = nil
|
20
24
|
end
|
@@ -1,15 +1,17 @@
|
|
1
|
-
require '
|
1
|
+
require 'VMwareWebService/logging'
|
2
2
|
require 'VMwareWebService/MiqVimInventory'
|
3
3
|
|
4
4
|
class MiqVimEventMonitor < MiqVimInventory
|
5
|
-
|
6
|
-
super(server, username, password, :cache_scope_event_monitor)
|
5
|
+
include VMwareWebService::Logging
|
7
6
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
@
|
12
|
-
@
|
7
|
+
def initialize(server:, username:, password:, port: 443, ssl_options: {}, event_filter_spec: nil, page_size: 100, max_wait: 60)
|
8
|
+
super(:server => server, :port => port, :ssl_options => ssl_options, :username => username, :password => password, :cache_scope => :cache_scope_event_monitor)
|
9
|
+
|
10
|
+
@eventFilterSpec = event_filter_spec || VimHash.new("EventFilterSpec")
|
11
|
+
@pgSize = page_size
|
12
|
+
@maxWait = max_wait
|
13
|
+
@_monitorEvents = true
|
14
|
+
@emPropCol = nil
|
13
15
|
|
14
16
|
hostSystemsByMor
|
15
17
|
# datacentersByMor
|
@@ -73,25 +75,25 @@ class MiqVimEventMonitor < MiqVimInventory
|
|
73
75
|
end
|
74
76
|
rescue HTTPClient::ReceiveTimeoutError => terr
|
75
77
|
retry if isAlive?
|
76
|
-
|
78
|
+
logger.debug "MiqVimEventMonitor.monitorEvents: connection lost"
|
77
79
|
raise
|
78
80
|
end
|
79
81
|
rescue SignalException => err
|
80
82
|
ensure
|
81
|
-
|
83
|
+
logger.info "MiqVimEventMonitor: calling destroyPropertyFilter"
|
82
84
|
destroyPropertyFilter(filterSpecRef) if filterSpecRef
|
83
|
-
|
85
|
+
logger.info "MiqVimEventMonitor: returned from destroyPropertyFilter"
|
84
86
|
disconnect
|
85
87
|
end
|
86
88
|
end # def monitorEvents
|
87
89
|
|
88
90
|
def stop
|
89
|
-
|
91
|
+
logger.info "MiqVimEventMonitor stopping..."
|
90
92
|
@_monitorEvents = false
|
91
93
|
if @emPropCol
|
92
|
-
|
94
|
+
logger.info "MiqVimEventMonitor: calling cancelWaitForUpdates"
|
93
95
|
cancelWaitForUpdates(@emPropCol)
|
94
|
-
|
96
|
+
logger.info "MiqVimEventMonitor: returned from cancelWaitForUpdates"
|
95
97
|
end
|
96
98
|
end
|
97
99
|
|
@@ -100,14 +102,14 @@ class MiqVimEventMonitor < MiqVimInventory
|
|
100
102
|
|
101
103
|
def fixupEvent(event)
|
102
104
|
unless event.kind_of?(Hash)
|
103
|
-
|
105
|
+
logger.error "MiqVimEventMonitor.fixupEvent: Expecting Hash, got #{event.class}"
|
104
106
|
if event.kind_of?(Array)
|
105
107
|
event.each_index do |i|
|
106
|
-
|
107
|
-
|
108
|
+
logger.error "MiqVimEventMonitor.fixupEvent: event[#{i}] is a #{event[i].class}"
|
109
|
+
logger.error "\tMiqVimEventMonitor.fixupEvent: event[#{i}] = #{event[i].inspect}"
|
108
110
|
end
|
109
111
|
else
|
110
|
-
|
112
|
+
logger.error "\tMiqVimEventMonitor.fixupEvent: event = #{event.inspect}"
|
111
113
|
end
|
112
114
|
raise "MiqVimEventMonitor.fixupEvent: Expecting Hash, got #{event.class}"
|
113
115
|
end
|
@@ -164,8 +166,8 @@ class MiqVimEventMonitor < MiqVimInventory
|
|
164
166
|
begin
|
165
167
|
cancelTask(String.new(e['info']['task'].to_str))
|
166
168
|
rescue => err
|
167
|
-
|
168
|
-
|
169
|
+
logger.error err.to_s
|
170
|
+
logger.error err.backtrace.join("\n")
|
169
171
|
end
|
170
172
|
end
|
171
173
|
end # module MiqVimEventMonitor
|