vmware_web_service 2.0.3 → 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -1,17 +1,18 @@
|
|
1
1
|
require 'sync'
|
2
2
|
|
3
|
-
require 'enumerator'
|
4
3
|
require "ostruct"
|
5
4
|
|
6
5
|
require 'more_core_extensions/core_ext/hash'
|
7
6
|
require 'active_support/core_ext/object/try'
|
8
7
|
|
9
8
|
require 'VMwareWebService/exception'
|
9
|
+
require 'VMwareWebService/logging'
|
10
10
|
require 'VMwareWebService/MiqVimVdlMod'
|
11
11
|
require 'VMwareWebService/esx_thumb_print'
|
12
12
|
require 'VMwareWebService/vcenter_thumb_print'
|
13
13
|
|
14
14
|
class MiqVimVm
|
15
|
+
include VMwareWebService::Logging
|
15
16
|
include MiqVimVdlVcConnectionMod
|
16
17
|
|
17
18
|
EVM_SNAPSHOT_NAME = "EvmSnapshot".freeze # TODO: externalize - not VIM specific
|
@@ -92,53 +93,53 @@ class MiqVimVm
|
|
92
93
|
#######################
|
93
94
|
|
94
95
|
def start(wait = true)
|
95
|
-
|
96
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).start: calling powerOnVM_Task"
|
96
97
|
taskMor = @invObj.powerOnVM_Task(@vmMor)
|
97
|
-
|
98
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).start: returned from powerOnVM_Task"
|
98
99
|
return taskMor unless wait
|
99
100
|
waitForTask(taskMor)
|
100
101
|
end # def start
|
101
102
|
|
102
103
|
def stop(wait = true)
|
103
|
-
|
104
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).stop: calling powerOffVM_Task"
|
104
105
|
taskMor = @invObj.powerOffVM_Task(@vmMor)
|
105
|
-
|
106
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).stop: returned from powerOffVM_Task"
|
106
107
|
return taskMor unless wait
|
107
108
|
waitForTask(taskMor)
|
108
109
|
end # def stop
|
109
110
|
|
110
111
|
def suspend(wait = true)
|
111
|
-
|
112
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).suspend: calling suspendVM_Task"
|
112
113
|
taskMor = @invObj.suspendVM_Task(@vmMor)
|
113
|
-
|
114
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).suspend: returned from suspendVM_Task"
|
114
115
|
return taskMor unless wait
|
115
116
|
waitForTask(taskMor)
|
116
117
|
end # def suspend
|
117
118
|
|
118
119
|
def reset(wait = true)
|
119
|
-
|
120
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).reset: calling resetVM_Task"
|
120
121
|
taskMor = @invObj.resetVM_Task(@vmMor)
|
121
|
-
|
122
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).reset: returned from resetVM_Task"
|
122
123
|
return taskMor unless wait
|
123
124
|
waitForTask(taskMor)
|
124
125
|
end
|
125
126
|
|
126
127
|
def rebootGuest
|
127
|
-
|
128
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).rebootGuest: calling rebootGuest"
|
128
129
|
@invObj.rebootGuest(@vmMor)
|
129
|
-
|
130
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).rebootGuest: returned from rebootGuest"
|
130
131
|
end
|
131
132
|
|
132
133
|
def shutdownGuest
|
133
|
-
|
134
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).shutdownGuest: calling shutdownGuest"
|
134
135
|
@invObj.shutdownGuest(@vmMor)
|
135
|
-
|
136
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).shutdownGuest: returned from shutdownGuest"
|
136
137
|
end
|
137
138
|
|
138
139
|
def standbyGuest
|
139
|
-
|
140
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).standbyGuest: calling standbyGuest"
|
140
141
|
@invObj.standbyGuest(@vmMor)
|
141
|
-
|
142
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).standbyGuest: returned from standbyGuest"
|
142
143
|
end
|
143
144
|
|
144
145
|
def powerState
|
@@ -168,18 +169,18 @@ class MiqVimVm
|
|
168
169
|
############################
|
169
170
|
|
170
171
|
def markAsTemplate
|
171
|
-
|
172
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).markAsTemplate: calling markAsTemplate"
|
172
173
|
@invObj.markAsTemplate(@vmMor)
|
173
|
-
|
174
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).markAsTemplate: returned from markAsTemplate"
|
174
175
|
end
|
175
176
|
|
176
177
|
def markAsVm(pool, host = nil)
|
177
178
|
hmor = nil
|
178
179
|
hmor = (host.kind_of?(Hash) ? host['MOR'] : host) if host
|
179
180
|
pmor = (pool.kind_of?(Hash) ? pool['MOR'] : pool)
|
180
|
-
|
181
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).markAsVm: calling markAsVirtualMachine"
|
181
182
|
@invObj.markAsVirtualMachine(@vmMor, pmor, hmor)
|
182
|
-
|
183
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).markAsVm: returned from markAsVirtualMachine"
|
183
184
|
end
|
184
185
|
|
185
186
|
def template?
|
@@ -194,18 +195,18 @@ class MiqVimVm
|
|
194
195
|
hmor = (host.kind_of?(Hash) ? host['MOR'] : host)
|
195
196
|
pool = (pool.kind_of?(Hash) ? pool['MOR'] : pool) if pool
|
196
197
|
|
197
|
-
|
198
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).migrate: calling migrateVM_Task, vm=<#{@vmMor.inspect}>, host=<#{hmor.inspect}>, pool=<#{pool.inspect}>, priority=<#{priority.inspect}>, state=<#{state.inspect}>"
|
198
199
|
taskMor = @invObj.migrateVM_Task(@vmMor, pool, hmor, priority, state)
|
199
|
-
|
200
|
-
|
200
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).migrate: returned from migrateVM_Task"
|
201
|
+
logger.debug "MiqVimVm::migrate: taskMor = #{taskMor}"
|
201
202
|
waitForTask(taskMor)
|
202
203
|
end
|
203
204
|
|
204
205
|
def renameVM(newName)
|
205
|
-
|
206
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).renameVM: calling rename_Task, vm=<#{@vmMor.inspect}>, newName=<#{newName}>"
|
206
207
|
task_mor = @invObj.rename_Task(@vmMor, newName)
|
207
|
-
|
208
|
-
|
208
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).renameVM: returned from rename_Task"
|
209
|
+
logger.debug "MiqVimVm::renameVM: taskMor = #{task_mor}"
|
209
210
|
waitForTask(task_mor)
|
210
211
|
end
|
211
212
|
|
@@ -223,26 +224,26 @@ class MiqVimVm
|
|
223
224
|
rsl.transform = transform if transform
|
224
225
|
end
|
225
226
|
|
226
|
-
|
227
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).relocate: calling relocateVM_Task, vm=<#{@vmMor.inspect}>, host=<#{hmor.inspect}>, pool=<#{pool.inspect}>, datastore=<#{dsmor.inspect}>, priority=<#{priority.inspect}>"
|
227
228
|
taskMor = @invObj.relocateVM_Task(@vmMor, rspec, priority)
|
228
|
-
|
229
|
-
|
229
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).relocate: returned from relocateVM_Task"
|
230
|
+
logger.debug "MiqVimVm::relocate: taskMor = #{taskMor}"
|
230
231
|
waitForTask(taskMor)
|
231
232
|
end
|
232
233
|
|
233
234
|
def cloneVM_raw(folder, name, spec, wait = true)
|
234
|
-
|
235
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).cloneVM_raw: calling cloneVM_Task"
|
235
236
|
taskMor = @invObj.cloneVM_Task(@vmMor, folder, name, spec)
|
236
|
-
|
237
|
-
|
237
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).cloneVM_raw: returned from cloneVM_Task"
|
238
|
+
logger.debug "MiqVimVm::cloneVM_raw: taskMor = #{taskMor}"
|
238
239
|
|
239
240
|
if wait
|
240
241
|
rv = waitForTask(taskMor)
|
241
|
-
|
242
|
+
logger.debug "MiqVimVm::cloneVM_raw: rv = #{rv}"
|
242
243
|
return rv
|
243
244
|
end
|
244
245
|
|
245
|
-
|
246
|
+
logger.debug "MiqVimVm::cloneVM_raw - no wait: taskMor = #{taskMor}"
|
246
247
|
taskMor
|
247
248
|
end
|
248
249
|
|
@@ -288,15 +289,15 @@ class MiqVimVm
|
|
288
289
|
# end
|
289
290
|
|
290
291
|
def unregister
|
291
|
-
|
292
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).unregister: calling unregisterVM"
|
292
293
|
@invObj.unregisterVM(@vmMor)
|
293
|
-
|
294
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).unregister: returned from unregisterVM"
|
294
295
|
end
|
295
296
|
|
296
297
|
def destroy
|
297
|
-
|
298
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).destroy: calling destroy_Task"
|
298
299
|
taskMor = @invObj.destroy_Task(@vmMor)
|
299
|
-
|
300
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).destroy: returned from destroy_Task"
|
300
301
|
waitForTask(taskMor)
|
301
302
|
end
|
302
303
|
|
@@ -378,33 +379,33 @@ class MiqVimVm
|
|
378
379
|
end
|
379
380
|
|
380
381
|
def createSnapshot(name, desc, memory, quiesce, wait = true, free_space_percent = 100)
|
381
|
-
|
382
|
+
logger.debug "MiqVimVm::createSnapshot(#{name}, #{desc}, #{memory}, #{quiesce})"
|
382
383
|
cs = connectionState
|
383
384
|
raise "MiqVimVm(#{@invObj.server}, #{@invObj.username}).createSnapshot: VM is not connected, connectionState = #{cs}" if cs != "connected"
|
384
385
|
snapshot_free_space_check('create', free_space_percent)
|
385
|
-
|
386
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).createSnapshot: calling createSnapshot_Task"
|
386
387
|
taskMor = @invObj.createSnapshot_Task(@vmMor, name, desc, memory, quiesce)
|
387
|
-
|
388
|
-
|
388
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).createSnapshot: returned from createSnapshot_Task"
|
389
|
+
logger.debug "MiqVimVm::createSnapshot: taskMor = #{taskMor}"
|
389
390
|
|
390
391
|
if wait
|
391
392
|
snMor = waitForTask(taskMor)
|
392
|
-
|
393
|
+
logger.warn "MiqVimVm::createSnapshot: snMor = #{snMor}"
|
393
394
|
return snMor
|
394
395
|
end
|
395
396
|
|
396
|
-
|
397
|
+
logger.debug "MiqVimVm::createSnapshot - no wait: taskMor = #{taskMor}"
|
397
398
|
taskMor
|
398
399
|
end # def createSnapshot
|
399
400
|
|
400
401
|
def removeSnapshot(snMor, subTree = "false", wait = true, free_space_percent = 100)
|
401
|
-
|
402
|
+
logger.warn "MiqVimVm::removeSnapshot(#{snMor}, #{subTree})"
|
402
403
|
snMor = getSnapMor(snMor)
|
403
404
|
snapshot_free_space_check('remove', free_space_percent)
|
404
|
-
|
405
|
+
logger.warn "MiqVimVm(#{@invObj.server}, #{@invObj.username}).removeSnapshot: calling removeSnapshot_Task: snMor [#{snMor}] subtree [#{subTree}]"
|
405
406
|
taskMor = @invObj.removeSnapshot_Task(snMor, subTree)
|
406
|
-
|
407
|
-
|
407
|
+
logger.warn "MiqVimVm(#{@invObj.server}, #{@invObj.username}).removeSnapshot: returned from removeSnapshot_Task: snMor [#{snMor}]"
|
408
|
+
logger.debug "MiqVimVm::removeSnapshot: taskMor = #{taskMor}"
|
408
409
|
return taskMor unless wait
|
409
410
|
waitForTask(taskMor)
|
410
411
|
end # def removeSnapshot
|
@@ -422,40 +423,40 @@ class MiqVimVm
|
|
422
423
|
end # def removeSnapshotByDescription
|
423
424
|
|
424
425
|
def removeAllSnapshots(free_space_percent = 100)
|
425
|
-
|
426
|
-
|
426
|
+
logger.debug "MiqVimVm::removeAllSnapshots"
|
427
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).removeAllSnapshots: calling removeAllSnapshots_Task"
|
427
428
|
snapshot_free_space_check('remove_all', free_space_percent)
|
428
429
|
taskMor = @invObj.removeAllSnapshots_Task(@vmMor)
|
429
|
-
|
430
|
-
|
430
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).removeAllSnapshots: returned from removeAllSnapshots_Task"
|
431
|
+
logger.debug "MiqVimVm::removeAllSnapshots: taskMor = #{taskMor}"
|
431
432
|
waitForTask(taskMor)
|
432
433
|
end # def removeAllSnapshots
|
433
434
|
|
434
435
|
def revertToSnapshot(snMor)
|
435
|
-
|
436
|
+
logger.debug "MiqVimVm::revertToSnapshot(#{snMor})"
|
436
437
|
snMor = getSnapMor(snMor)
|
437
|
-
|
438
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).revertToSnapshot: calling revertToSnapshot_Task"
|
438
439
|
taskMor = @invObj.revertToSnapshot_Task(snMor)
|
439
|
-
|
440
|
-
|
440
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).revertToSnapshot: returned from revertToSnapshot_Task"
|
441
|
+
logger.debug "MiqVimVm::revertToSnapshot: taskMor = #{taskMor}"
|
441
442
|
waitForTask(taskMor)
|
442
443
|
end # def revertToSnapshot
|
443
444
|
|
444
445
|
def revertToCurrentSnapshot
|
445
|
-
|
446
|
-
|
446
|
+
logger.debug "MiqVimVm::revertToCurrentSnapshot"
|
447
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).revertToCurrentSnapshot: calling revertToCurrentSnapshot_Task"
|
447
448
|
taskMor = @invObj.revertToCurrentSnapshot_Task(@vmMor)
|
448
|
-
|
449
|
-
|
449
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).revertToCurrentSnapshot: returned from revertToCurrentSnapshot_Task"
|
450
|
+
logger.debug "MiqVimVm::revertToCurrentSnapshot: taskMor = #{taskMor}"
|
450
451
|
waitForTask(taskMor)
|
451
452
|
end # def revertToCurrentSnapshot
|
452
453
|
|
453
454
|
def renameSnapshot(snMor, name, desc)
|
454
|
-
|
455
|
+
logger.debug "MiqVimVm::renameSnapshot(#{snMor}, #{name}, #{desc})"
|
455
456
|
snMor = getSnapMor(snMor)
|
456
|
-
|
457
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).renameSnapshot: calling renameSnapshot"
|
457
458
|
@invObj.renameSnapshot(snMor, name, desc)
|
458
|
-
|
459
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).renameSnapshot: returned from renameSnapshot"
|
459
460
|
end # def renameSnapshot
|
460
461
|
|
461
462
|
def snapshot_free_space_check(action, free_space_percent = 100)
|
@@ -509,13 +510,13 @@ class MiqVimVm
|
|
509
510
|
|
510
511
|
def getSnapMor(snMor)
|
511
512
|
unless snMor.respond_to?(:vimType)
|
512
|
-
|
513
|
+
logger.debug "MiqVimVm::getSnapMor converting #{snMor} to MOR"
|
513
514
|
@cacheLock.synchronize(:SH) do
|
514
515
|
raise "getSnapMor: VM #{@dsPath} has no snapshots" unless (sni = snapshotInfo_locked(true))
|
515
516
|
raise "getSnapMor: snapshot #{snMor} not found" unless (snObj = sni['ssMorHash'][snMor])
|
516
517
|
snMor = snObj['snapshot']
|
517
518
|
end
|
518
|
-
|
519
|
+
logger.debug "MiqVimVm::getSnapMor new MOR: #{snMor}"
|
519
520
|
end
|
520
521
|
(snMor)
|
521
522
|
end # def getSnapMor
|
@@ -610,9 +611,9 @@ class MiqVimVm
|
|
610
611
|
end # def getCfg
|
611
612
|
|
612
613
|
def reconfig(vmConfigSpec)
|
613
|
-
|
614
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).reconfig: calling reconfigVM_Task"
|
614
615
|
taskMor = @invObj.reconfigVM_Task(@vmMor, vmConfigSpec)
|
615
|
-
|
616
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).reconfig: returned from reconfigVM_Task"
|
616
617
|
waitForTask(taskMor)
|
617
618
|
end
|
618
619
|
|
@@ -631,9 +632,9 @@ class MiqVimVm
|
|
631
632
|
|
632
633
|
def setMemory(memMB)
|
633
634
|
vmConfigSpec = VimHash.new("VirtualMachineConfigSpec") { |cs| cs.memoryMB = memMB }
|
634
|
-
|
635
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).setMemory: calling reconfigVM_Task"
|
635
636
|
taskMor = @invObj.reconfigVM_Task(@vmMor, vmConfigSpec)
|
636
|
-
|
637
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).setMemory: returned from reconfigVM_Task"
|
637
638
|
waitForTask(taskMor)
|
638
639
|
end
|
639
640
|
|
@@ -643,9 +644,9 @@ class MiqVimVm
|
|
643
644
|
|
644
645
|
def setNumCPUs(numCPUs)
|
645
646
|
vmConfigSpec = VimHash.new("VirtualMachineConfigSpec") { |cs| cs.numCPUs = numCPUs }
|
646
|
-
|
647
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).setNumCPUs: calling reconfigVM_Task"
|
647
648
|
taskMor = @invObj.reconfigVM_Task(@vmMor, vmConfigSpec)
|
648
|
-
|
649
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).setNumCPUs: returned from reconfigVM_Task"
|
649
650
|
waitForTask(taskMor)
|
650
651
|
end
|
651
652
|
|
@@ -667,9 +668,9 @@ class MiqVimVm
|
|
667
668
|
end
|
668
669
|
end
|
669
670
|
|
670
|
-
|
671
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).connectDevice: calling reconfigVM_Task"
|
671
672
|
taskMor = @invObj.reconfigVM_Task(@vmMor, vmConfigSpec)
|
672
|
-
|
673
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).connectDevice: returned from reconfigVM_Task"
|
673
674
|
waitForTask(taskMor)
|
674
675
|
end # def connectDevice
|
675
676
|
|
@@ -705,9 +706,9 @@ class MiqVimVm
|
|
705
706
|
end
|
706
707
|
end
|
707
708
|
|
708
|
-
|
709
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).attachIsoToCd: calling reconfigVM_Task"
|
709
710
|
taskMor = @invObj.reconfigVM_Task(@vmMor, vmConfigSpec)
|
710
|
-
|
711
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).attachIsoToCd: returned from reconfigVM_Task"
|
711
712
|
waitForTask(taskMor)
|
712
713
|
end
|
713
714
|
|
@@ -723,9 +724,9 @@ class MiqVimVm
|
|
723
724
|
end
|
724
725
|
end
|
725
726
|
|
726
|
-
|
727
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).resetCd: calling reconfigVM_Task"
|
727
728
|
taskMor = @invObj.reconfigVM_Task(@vmMor, vmConfigSpec)
|
728
|
-
|
729
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).resetCd: returned from reconfigVM_Task"
|
729
730
|
waitForTask(taskMor)
|
730
731
|
end
|
731
732
|
|
@@ -803,9 +804,9 @@ class MiqVimVm
|
|
803
804
|
end
|
804
805
|
end
|
805
806
|
|
806
|
-
|
807
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).addDisk: calling reconfigVM_Task"
|
807
808
|
taskMor = @invObj.reconfigVM_Task(@vmMor, vmConfigSpec)
|
808
|
-
|
809
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).addDisk: returned from reconfigVM_Task"
|
809
810
|
waitForTask(taskMor)
|
810
811
|
end # def addDisk
|
811
812
|
|
@@ -820,8 +821,8 @@ class MiqVimVm
|
|
820
821
|
raise "removeDiskByFile: false setting for deleteBacking not yet supported" if deleteBacking == false
|
821
822
|
controllerKey, key = getDeviceKeysByBacking(backingFile)
|
822
823
|
raise "removeDiskByFile: no virtual device associated with: #{backingFile}" unless key
|
823
|
-
|
824
|
-
|
824
|
+
logger.debug "MiqVimVm::MiqVimVm: backingFile = #{backingFile}"
|
825
|
+
logger.debug "MiqVimVm::MiqVimVm: controllerKey = #{controllerKey}, key = #{key}"
|
825
826
|
|
826
827
|
vmConfigSpec = VimHash.new("VirtualMachineConfigSpec") do |vmcs|
|
827
828
|
vmcs.deviceChange = VimArray.new("ArrayOfVirtualDeviceConfigSpec") do |vmcs_vca|
|
@@ -859,9 +860,9 @@ class MiqVimVm
|
|
859
860
|
end
|
860
861
|
end
|
861
862
|
|
862
|
-
|
863
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).removeDiskByFile: calling reconfigVM_Task"
|
863
864
|
taskMor = @invObj.reconfigVM_Task(@vmMor, vmConfigSpec)
|
864
|
-
|
865
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).removeDiskByFile: returned from reconfigVM_Task"
|
865
866
|
waitForTask(taskMor)
|
866
867
|
end # def removeDiskByFile
|
867
868
|
|
@@ -869,7 +870,7 @@ class MiqVimVm
|
|
869
870
|
disk = getDeviceByBacking(backingFile)
|
870
871
|
raise "resizeDisk: no virtual device associated with: #{backingFile}" unless disk
|
871
872
|
raise "resizeDisk: cannot reduce the size of a disk" unless newSizeInKb >= Integer(disk.capacityInKB)
|
872
|
-
|
873
|
+
logger.debug "MiqVimVm::resizeDisk: backingFile = #{backingFile} current size = #{device.capacityInKB} newSize = #{newSizeInKb} KB"
|
873
874
|
|
874
875
|
vmConfigSpec = VimHash.new("VirtualMachineConfigSpec") do |vmcs|
|
875
876
|
vmcs.deviceChange = VimArray.new("ArrayOfVirtualDeviceConfigSpec") do |vmcs_vca|
|
@@ -887,9 +888,9 @@ class MiqVimVm
|
|
887
888
|
end
|
888
889
|
end
|
889
890
|
|
890
|
-
|
891
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).resizeDisk: calling reconfigVM_Task"
|
891
892
|
taskMor = @invObj.reconfigVM_Task(@vmMor, vmConfigSpec)
|
892
|
-
|
893
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).resizeDisk: returned from reconfigVM_Task"
|
893
894
|
waitForTask(taskMor)
|
894
895
|
end
|
895
896
|
|
@@ -1041,9 +1042,9 @@ class MiqVimVm
|
|
1041
1042
|
else
|
1042
1043
|
aSpec = @miqAlarmSpecDisabled
|
1043
1044
|
end
|
1044
|
-
|
1045
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).addMiqAlarm_locked: calling createAlarm"
|
1045
1046
|
alarmMor = @invObj.createAlarm(alarmManager, @vmMor, aSpec)
|
1046
|
-
|
1047
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).addMiqAlarm_locked: returned from createAlarm"
|
1047
1048
|
@miqAlarmMor = alarmMor
|
1048
1049
|
ensure
|
1049
1050
|
@cacheLock.sync_unlock if unlock
|
@@ -1074,9 +1075,9 @@ class MiqVimVm
|
|
1074
1075
|
begin
|
1075
1076
|
@cacheLock.sync_lock(:EX) if (unlock = @cacheLock.sync_shared?)
|
1076
1077
|
|
1077
|
-
|
1078
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).getMiqAlarm_locked: calling getAlarm"
|
1078
1079
|
alarms = @invObj.getAlarm(@sic.alarmManager, @vmMor)
|
1079
|
-
|
1080
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).getMiqAlarm_locked: returned from getAlarm"
|
1080
1081
|
alarms.each do |aMor|
|
1081
1082
|
ap = @invObj.getMoProp(aMor, "info.name")
|
1082
1083
|
next unless ap['info']['name'][MIQ_ALARM_PFX]
|
@@ -1105,27 +1106,27 @@ class MiqVimVm
|
|
1105
1106
|
def disableMiqAlarm
|
1106
1107
|
@cacheLock.synchronize(:SH) do
|
1107
1108
|
raise "disableMiqAlarm: MiqAlarm not configured for VM #{@dsPath}" unless (aMor = getMiqAlarm_locked)
|
1108
|
-
|
1109
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).disableMiqAlarm: calling reconfigureAlarm"
|
1109
1110
|
@invObj.reconfigureAlarm(aMor, @miqAlarmSpecDisabled)
|
1110
|
-
|
1111
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).disableMiqAlarm: returned from reconfigureAlarm"
|
1111
1112
|
end
|
1112
1113
|
end
|
1113
1114
|
|
1114
1115
|
def enableMiqAlarm
|
1115
1116
|
@cacheLock.synchronize(:SH) do
|
1116
1117
|
raise "enableMiqAlarm: MiqAlarm not configured for VM #{@dsPath}" unless (aMor = getMiqAlarm_locked)
|
1117
|
-
|
1118
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).enableMiqAlarm: calling reconfigureAlarm"
|
1118
1119
|
@invObj.reconfigureAlarm(aMor, @miqAlarmSpecEnabled)
|
1119
|
-
|
1120
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).enableMiqAlarm: returned from reconfigureAlarm"
|
1120
1121
|
end
|
1121
1122
|
end
|
1122
1123
|
|
1123
1124
|
def removeMiqAlarm
|
1124
1125
|
@cacheLock.synchronize(:SH) do
|
1125
1126
|
return unless (aMor = getMiqAlarm_locked)
|
1126
|
-
|
1127
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).removeMiqAlarm: calling removeAlarm"
|
1127
1128
|
@invObj.removeAlarm(aMor)
|
1128
|
-
|
1129
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).removeMiqAlarm: returned from removeAlarm"
|
1129
1130
|
@miqAlarmMor = nil
|
1130
1131
|
end
|
1131
1132
|
end
|
@@ -1177,9 +1178,9 @@ class MiqVimVm
|
|
1177
1178
|
end
|
1178
1179
|
end
|
1179
1180
|
|
1180
|
-
|
1181
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).setExtraConfigAttributes: calling reconfigVM_Task"
|
1181
1182
|
taskMor = @invObj.reconfigVM_Task(@vmMor, vmConfigSpec)
|
1182
|
-
|
1183
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).setExtraConfigAttributes: returned from reconfigVM_Task"
|
1183
1184
|
waitForTask(taskMor)
|
1184
1185
|
|
1185
1186
|
@extraConfig = nil
|
@@ -1287,16 +1288,16 @@ class MiqVimVm
|
|
1287
1288
|
end
|
1288
1289
|
|
1289
1290
|
def acquireMksTicket
|
1290
|
-
|
1291
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).acquireMksTicket: calling acquireMksTicket"
|
1291
1292
|
rv = @invObj.acquireMksTicket(@vmMor)
|
1292
|
-
|
1293
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).acquireMksTicket: returned from acquireMksTicket"
|
1293
1294
|
(rv)
|
1294
1295
|
end # def acquireMksTicket
|
1295
1296
|
|
1296
1297
|
def acquireTicket(ticketType)
|
1297
|
-
|
1298
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).acquireTicket: calling acquireTicket"
|
1298
1299
|
rv = @invObj.acquireTicket(@vmMor, ticketType)
|
1299
|
-
|
1300
|
+
logger.info "MiqVimVm(#{@invObj.server}, #{@invObj.username}).acquireTicket: returned from acquireTicket"
|
1300
1301
|
(rv)
|
1301
1302
|
end # def acquireTicket
|
1302
1303
|
|
@@ -1,8 +1,11 @@
|
|
1
1
|
require "handsoap"
|
2
2
|
require 'active_support/core_ext/numeric/bytes'
|
3
|
+
require 'VMwareWebService/logging'
|
3
4
|
require 'VMwareWebService/VimTypes'
|
4
5
|
|
5
6
|
class VimService < Handsoap::Service
|
7
|
+
include VMwareWebService::Logging
|
8
|
+
|
6
9
|
attr_reader :sic, :about, :apiVersion, :isVirtualCenter, :v20, :v2, :v4, :v5, :v6, :serviceInstanceMor, :session_cookie
|
7
10
|
|
8
11
|
Handsoap.http_driver = :HTTPClient
|
@@ -1291,14 +1294,14 @@ class VimService < Handsoap::Service
|
|
1291
1294
|
if @xml_payload_len > @xml_payload_max
|
1292
1295
|
@xml_payload_len = 0
|
1293
1296
|
|
1294
|
-
|
1297
|
+
logger.debug("#{log_prefix} Running garbage collection")
|
1295
1298
|
|
1296
1299
|
# Force a GC, because Ruby's GC is triggered on number of objects without
|
1297
1300
|
# regard to size. The object we just freed may not be released right away.
|
1298
1301
|
gc_time = Benchmark.realtime { GC.start }
|
1299
1302
|
|
1300
1303
|
gc_log_level = gc_time >= 5 ? :warn : :debug
|
1301
|
-
|
1304
|
+
logger.send(gc_log_level, "#{log_prefix} Garbage collection took #{gc_time} seconds")
|
1302
1305
|
end
|
1303
1306
|
end
|
1304
1307
|
end
|
@@ -2,6 +2,8 @@ require 'drb/drb'
|
|
2
2
|
require 'sync'
|
3
3
|
require 'ffi-vix_disk_lib/const'
|
4
4
|
require 'ffi-vix_disk_lib/enum'
|
5
|
+
require 'VMwareWebService/logging'
|
6
|
+
|
5
7
|
#
|
6
8
|
# The path to the VixDiskLib directory to be added to the process' LD_LIBRARY_PATH
|
7
9
|
#
|
@@ -17,6 +19,8 @@ end
|
|
17
19
|
SERVER_PATH = File.expand_path(__dir__)
|
18
20
|
|
19
21
|
class VixDiskLib
|
22
|
+
include VMwareWebService::Logging
|
23
|
+
|
20
24
|
VIXDISKLIB_FLAG_OPEN_READ_ONLY = FFI::VixDiskLib::API::VIXDISKLIB_FLAG_OPEN_READ_ONLY
|
21
25
|
@initialized = nil
|
22
26
|
@drb_services = []
|
@@ -66,12 +70,12 @@ class VixDiskLib
|
|
66
70
|
i = 0
|
67
71
|
@drb_services.each do |vdl_service|
|
68
72
|
i += 1
|
69
|
-
|
73
|
+
logger.info "VixDiskLib.exit: shutting down service #{i} of #{@drb_services.size}"
|
70
74
|
unless vdl_service.nil?
|
71
75
|
begin
|
72
76
|
vdl_service.shutdown = true
|
73
77
|
rescue DRb::DRbConnError
|
74
|
-
|
78
|
+
logger.info "VixDiskLib.exit: DRb connection closed due to service shutdown. Continuing"
|
75
79
|
end
|
76
80
|
end
|
77
81
|
end
|
@@ -95,8 +99,9 @@ class VixDiskLib
|
|
95
99
|
end
|
96
100
|
|
97
101
|
my_env["LD_LIBRARY_PATH"] = (my_env["LD_LIBRARY_PATH"].to_s.split(':') << VIXDISKLIB_PATH).compact.join(":")
|
98
|
-
raise VixDiskLibError, "VixDiskLib.connect() failed: No
|
99
|
-
my_env["LOG_FILE"] =
|
102
|
+
raise VixDiskLibError, "VixDiskLib.connect() failed: No logger defined" unless logger
|
103
|
+
my_env["LOG_FILE"] = logger.logdev.filename.to_s if logger.logdev.kind_of?(Logger::LogDevice)
|
104
|
+
|
100
105
|
my_env
|
101
106
|
end
|
102
107
|
|
@@ -109,16 +114,19 @@ class VixDiskLib
|
|
109
114
|
proc_reader, @proc_writer = IO.pipe
|
110
115
|
|
111
116
|
server_cmd = "ruby #{SERVER_PATH}/VixDiskLibServer.rb"
|
112
|
-
|
117
|
+
log_target = my_env["LOG_FILE"] ? [my_env["LOG_FILE"], "a"] : $stdout
|
118
|
+
|
119
|
+
logger.info "VixDiskLib.start_service: running command = #{server_cmd}"
|
120
|
+
|
113
121
|
pid = Kernel.spawn(my_env, server_cmd,
|
114
|
-
[:out, :err] =>
|
122
|
+
[:out, :err] => log_target,
|
115
123
|
:unsetenv_others => true,
|
116
124
|
3 => uri_writer,
|
117
125
|
4 => proc_reader)
|
118
126
|
uri_writer.close
|
119
127
|
proc_reader.close
|
120
128
|
Process.detach(pid)
|
121
|
-
|
129
|
+
logger.info "VixDiskLibServer Process #{pid} started"
|
122
130
|
DRb.start_service
|
123
131
|
retry_num = 5
|
124
132
|
uri = get_uri(uri_reader)
|