vmpooler 0.10.3 → 0.11.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/bin/vmpooler +2 -3
- data/lib/vmpooler/api/dashboard.rb +12 -5
- data/lib/vmpooler/api/helpers.rb +47 -42
- data/lib/vmpooler/api/reroute.rb +2 -0
- data/lib/vmpooler/api/v1.rb +49 -49
- data/lib/vmpooler/api.rb +2 -0
- data/lib/vmpooler/dashboard.rb +2 -1
- data/lib/vmpooler/dummy_statsd.rb +2 -0
- data/lib/vmpooler/generic_connection_pool.rb +8 -6
- data/lib/vmpooler/graphite.rb +5 -5
- data/lib/vmpooler/logger.rb +3 -1
- data/lib/vmpooler/pool_manager.rb +133 -120
- data/lib/vmpooler/providers/base.rb +5 -3
- data/lib/vmpooler/providers/dummy.rb +16 -12
- data/lib/vmpooler/providers/vsphere.rb +114 -95
- data/lib/vmpooler/providers.rb +13 -15
- data/lib/vmpooler/statsd.rb +9 -9
- data/lib/vmpooler/version.rb +3 -1
- data/lib/vmpooler.rb +20 -11
- metadata +2 -2
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Vmpooler
|
2
4
|
class PoolManager
|
3
5
|
class Provider
|
@@ -222,7 +224,7 @@ module Vmpooler
|
|
222
224
|
# [Hash] pool : Configuration for the pool
|
223
225
|
# returns
|
224
226
|
# nil when successful. Raises error when encountered
|
225
|
-
def create_template_delta_disks(
|
227
|
+
def create_template_delta_disks(_pool)
|
226
228
|
raise("#{self.class.name} does not implement create_template_delta_disks")
|
227
229
|
end
|
228
230
|
|
@@ -230,11 +232,11 @@ module Vmpooler
|
|
230
232
|
# [String] provider_name : Name of the provider
|
231
233
|
# returns
|
232
234
|
# Hash of folders
|
233
|
-
def get_target_datacenter_from_config(
|
235
|
+
def get_target_datacenter_from_config(_provider_name)
|
234
236
|
raise("#{self.class.name} does not implement get_target_datacenter_from_config")
|
235
237
|
end
|
236
238
|
|
237
|
-
def purge_unconfigured_folders(
|
239
|
+
def purge_unconfigured_folders(_base_folders, _configured_folders, _whitelist)
|
238
240
|
raise("#{self.class.name} does not implement purge_unconfigured_folders")
|
239
241
|
end
|
240
242
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'yaml'
|
2
4
|
require 'vmpooler/providers/base'
|
3
5
|
|
@@ -73,10 +75,10 @@ module Vmpooler
|
|
73
75
|
return current_vm['vm_host'] if provider_config['migratevm_couldmove_percent'].nil?
|
74
76
|
|
75
77
|
# Only migrate if migratevm_couldmove_percent is met
|
76
|
-
return current_vm['vm_host'] if
|
78
|
+
return current_vm['vm_host'] if rand(1..100) > provider_config['migratevm_couldmove_percent']
|
77
79
|
|
78
80
|
# Simulate a 10 node cluster and randomly pick a different one
|
79
|
-
new_host = 'HOST' + (1
|
81
|
+
new_host = 'HOST' + rand(1..10).to_s while new_host == current_vm['vm_host']
|
80
82
|
|
81
83
|
new_host
|
82
84
|
end
|
@@ -93,7 +95,7 @@ module Vmpooler
|
|
93
95
|
|
94
96
|
# Inject clone failure
|
95
97
|
unless provider_config['migratevm_fail_percent'].nil?
|
96
|
-
raise('Dummy Failure for migratevm_fail_percent') if
|
98
|
+
raise('Dummy Failure for migratevm_fail_percent') if rand(1..100) <= provider_config['migratevm_fail_percent']
|
97
99
|
end
|
98
100
|
|
99
101
|
@write_lock.synchronize do
|
@@ -114,7 +116,7 @@ module Vmpooler
|
|
114
116
|
|
115
117
|
# Randomly power off the VM
|
116
118
|
unless dummy['powerstate'] != 'PoweredOn' || provider_config['getvm_poweroff_percent'].nil?
|
117
|
-
if
|
119
|
+
if rand(1..100) <= provider_config['getvm_poweroff_percent']
|
118
120
|
@write_lock.synchronize do
|
119
121
|
dummy = get_dummy_vm(pool_name, vm_name)
|
120
122
|
dummy['powerstate'] = 'PoweredOff'
|
@@ -126,7 +128,7 @@ module Vmpooler
|
|
126
128
|
|
127
129
|
# Randomly rename the host
|
128
130
|
unless dummy['hostname'] != dummy['name'] || provider_config['getvm_rename_percent'].nil?
|
129
|
-
if
|
131
|
+
if rand(1..100) <= provider_config['getvm_rename_percent']
|
130
132
|
@write_lock.synchronize do
|
131
133
|
dummy = get_dummy_vm(pool_name, vm_name)
|
132
134
|
dummy['hostname'] = 'DUMMY' + dummy['name']
|
@@ -194,7 +196,7 @@ module Vmpooler
|
|
194
196
|
begin
|
195
197
|
# Inject clone failure
|
196
198
|
unless provider_config['createvm_fail_percent'].nil?
|
197
|
-
raise('Dummy Failure for createvm_fail_percent') if
|
199
|
+
raise('Dummy Failure for createvm_fail_percent') if rand(1..100) <= provider_config['createvm_fail_percent']
|
198
200
|
end
|
199
201
|
|
200
202
|
# Assert the VM is ready for use
|
@@ -202,7 +204,7 @@ module Vmpooler
|
|
202
204
|
vm['dummy_state'] = 'RUNNING'
|
203
205
|
write_backing_file
|
204
206
|
end
|
205
|
-
rescue =>
|
207
|
+
rescue StandardError => _e
|
206
208
|
@write_lock.synchronize do
|
207
209
|
remove_dummy_vm(pool_name, dummy_hostname)
|
208
210
|
write_backing_file
|
@@ -227,7 +229,7 @@ module Vmpooler
|
|
227
229
|
|
228
230
|
# Inject create failure
|
229
231
|
unless provider_config['createdisk_fail_percent'].nil?
|
230
|
-
raise('Dummy Failure for createdisk_fail_percent') if
|
232
|
+
raise('Dummy Failure for createdisk_fail_percent') if rand(1..100) <= provider_config['createdisk_fail_percent']
|
231
233
|
end
|
232
234
|
|
233
235
|
@write_lock.synchronize do
|
@@ -253,7 +255,7 @@ module Vmpooler
|
|
253
255
|
|
254
256
|
# Inject create failure
|
255
257
|
unless provider_config['createsnapshot_fail_percent'].nil?
|
256
|
-
raise('Dummy Failure for createsnapshot_fail_percent') if
|
258
|
+
raise('Dummy Failure for createsnapshot_fail_percent') if rand(1..100) <= provider_config['createsnapshot_fail_percent']
|
257
259
|
end
|
258
260
|
|
259
261
|
@write_lock.synchronize do
|
@@ -280,7 +282,7 @@ module Vmpooler
|
|
280
282
|
|
281
283
|
# Inject create failure
|
282
284
|
unless provider_config['revertsnapshot_fail_percent'].nil?
|
283
|
-
raise('Dummy Failure for revertsnapshot_fail_percent') if
|
285
|
+
raise('Dummy Failure for revertsnapshot_fail_percent') if rand(1..100) <= provider_config['revertsnapshot_fail_percent']
|
284
286
|
end
|
285
287
|
end
|
286
288
|
|
@@ -318,7 +320,7 @@ module Vmpooler
|
|
318
320
|
|
319
321
|
# Inject destroy VM failure
|
320
322
|
unless provider_config['destroyvm_fail_percent'].nil?
|
321
|
-
raise('Dummy Failure for migratevm_fail_percent') if
|
323
|
+
raise('Dummy Failure for migratevm_fail_percent') if rand(1..100) <= provider_config['destroyvm_fail_percent']
|
322
324
|
end
|
323
325
|
|
324
326
|
# 'Destroy' the VM
|
@@ -352,7 +354,7 @@ module Vmpooler
|
|
352
354
|
sleep(2)
|
353
355
|
|
354
356
|
unless provider_config['vmready_fail_percent'].nil?
|
355
|
-
raise('Dummy Failure for vmready_fail_percent') if
|
357
|
+
raise('Dummy Failure for vmready_fail_percent') if rand(1..100) <= provider_config['vmready_fail_percent']
|
356
358
|
end
|
357
359
|
|
358
360
|
@write_lock.synchronize do
|
@@ -370,6 +372,7 @@ module Vmpooler
|
|
370
372
|
|
371
373
|
def remove_dummy_vm(pool_name, vm_name)
|
372
374
|
return if @dummylist['pool'][pool_name].nil?
|
375
|
+
|
373
376
|
new_poollist = @dummylist['pool'][pool_name].delete_if { |vm| vm['name'] == vm_name }
|
374
377
|
@dummylist['pool'][pool_name] = new_poollist
|
375
378
|
end
|
@@ -395,6 +398,7 @@ module Vmpooler
|
|
395
398
|
def write_backing_file
|
396
399
|
dummyfilename = provider_config['filename']
|
397
400
|
return if dummyfilename.nil?
|
401
|
+
|
398
402
|
File.open(dummyfilename, 'w') { |file| file.write(YAML.dump(@dummylist)) }
|
399
403
|
end
|
400
404
|
end
|