Merge pull request #361 from highb/2020-03-05_update_rubocop_exceptions

Manual Rubocop Fixes
This commit is contained in:
mattkirby 2020-03-10 13:44:48 -07:00 committed by GitHub
commit 339f1db045
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 93 additions and 83 deletions

View file

@ -80,3 +80,17 @@ Style/HashTransformKeys:
# Added in 0.80, don't really care about the change # Added in 0.80, don't really care about the change
Style/HashTransformValues: Style/HashTransformValues:
Enabled: false Enabled: false
# These short variable names make sense as exceptions to the rule, but generally I think short variable names do hurt readability
Naming/MethodParameterName:
AllowedNames:
- vm
- dc
- s
- x
- f
# Standard comparisons seem more readable
Style/NumericPredicate:
Enabled: true
EnforcedStyle: comparison

View file

@ -16,9 +16,6 @@ matrix:
- rvm: jruby-9.2.9.0 - rvm: jruby-9.2.9.0
env: "CHECK=test" env: "CHECK=test"
# Remove the allow_failures section once
# Rubocop is required for Travis to pass a build
allow_failures:
- rvm: 2.4.9 - rvm: 2.4.9
env: "CHECK=rubocop" env: "CHECK=rubocop"

View file

@ -198,7 +198,7 @@ module Vmpooler
obj.to_s.downcase == 'true' obj.to_s.downcase == 'true'
end end
def self.set_linked_clone(parsed_config) def self.set_linked_clone(parsed_config) # rubocop:disable Naming/AccessorMethodName
parsed_config[:config]['create_linked_clones'] = parsed_config[:config]['create_linked_clones'] || true parsed_config[:config]['create_linked_clones'] = parsed_config[:config]['create_linked_clones'] || true
parsed_config[:config]['create_linked_clones'] = ENV['CREATE_LINKED_CLONES'] if ENV['CREATE_LINKED_CLONES'] =~ /true|false/ parsed_config[:config]['create_linked_clones'] = ENV['CREATE_LINKED_CLONES'] if ENV['CREATE_LINKED_CLONES'] =~ /true|false/
parsed_config[:config]['create_linked_clones'] = true?(parsed_config[:config]['create_linked_clones']) if parsed_config[:config]['create_linked_clones'] parsed_config[:config]['create_linked_clones'] = true?(parsed_config[:config]['create_linked_clones']) if parsed_config[:config]['create_linked_clones']

View file

@ -83,7 +83,7 @@ module Vmpooler
history ||= {} history ||= {}
begin begin
buffer = open(graph_link('.ready.*&from=-1hour&format=json')).read buffer = URI.parse(graph_link('.ready.*&from=-1hour&format=json')).read
history = JSON.parse(buffer) history = JSON.parse(buffer)
history.each do |pool| history.each do |pool|
@ -136,7 +136,7 @@ module Vmpooler
if params[:history] if params[:history]
if graph_url if graph_url
begin begin
buffer = open(graph_link('.running.*&from=-1hour&format=json')).read buffer = URI.parse(graph_link('.running.*&from=-1hour&format=json')).read
JSON.parse(buffer).each do |pool| JSON.parse(buffer).each do |pool|
if pool['target'] =~ /.*\.(.*)$/ if pool['target'] =~ /.*\.(.*)$/
pool['name'] = Regexp.last_match[1] pool['name'] = Regexp.last_match[1]

View file

@ -79,38 +79,38 @@ module Vmpooler
def authenticate(auth, username_str, password_str) def authenticate(auth, username_str, password_str)
case auth['provider'] case auth['provider']
when 'dummy' when 'dummy'
return (username_str != password_str) return (username_str != password_str)
when 'ldap' when 'ldap'
ldap_base = auth[:ldap]['base'] ldap_base = auth[:ldap]['base']
ldap_port = auth[:ldap]['port'] || 389 ldap_port = auth[:ldap]['port'] || 389
if ldap_base.is_a? Array if ldap_base.is_a? Array
ldap_base.each do |search_base| ldap_base.each do |search_base|
result = authenticate_ldap(
ldap_port,
auth[:ldap]['host'],
auth[:ldap]['user_object'],
search_base,
username_str,
password_str
)
return true if result == true
end
else
result = authenticate_ldap( result = authenticate_ldap(
ldap_port, ldap_port,
auth[:ldap]['host'], auth[:ldap]['host'],
auth[:ldap]['user_object'], auth[:ldap]['user_object'],
ldap_base, search_base,
username_str, username_str,
password_str password_str
) )
return result return true if result == true
end end
else
return false result = authenticate_ldap(
ldap_port,
auth[:ldap]['host'],
auth[:ldap]['user_object'],
ldap_base,
username_str,
password_str
)
return result
end end
return false
end
end end
def export_tags(backend, hostname, tags) def export_tags(backend, hostname, tags)
@ -216,7 +216,7 @@ module Vmpooler
capacity[:current] = get_total_across_pools_redis_scard(pools, 'vmpooler__ready__', backend) capacity[:current] = get_total_across_pools_redis_scard(pools, 'vmpooler__ready__', backend)
if capacity[:total] > 0 if capacity[:total] > 0
capacity[:percent] = ((capacity[:current].to_f / capacity[:total].to_f) * 100.0).round(1) capacity[:percent] = (capacity[:current].fdiv(capacity[:total]) * 100.0).round(1)
end end
capacity capacity

View file

@ -225,7 +225,7 @@ module Vmpooler
payload.each do |poolname, clone_target| payload.each do |poolname, clone_target|
unless pools[pool_index[poolname]]['clone_target'] == clone_target unless pools[pool_index[poolname]]['clone_target'] == clone_target
pools[pool_index[poolname]]['clone_target'] == clone_target pools[pool_index[poolname]]['clone_target'] = clone_target
backend.hset('vmpooler__config__clone_target', poolname, clone_target) backend.hset('vmpooler__config__clone_target', poolname, clone_target)
pools_updated += 1 pools_updated += 1
status 201 status 201
@ -267,7 +267,7 @@ module Vmpooler
if pool_index.include? poolname if pool_index.include? poolname
unless pools[pool_index[poolname]]['clone_target'] == clone_target unless pools[pool_index[poolname]]['clone_target'] == clone_target
pools[pool_index[poolname]]['clone_target'] == clone_target pools[pool_index[poolname]]['clone_target'] == clone_target
end end
end end
end end
end end

View file

@ -16,7 +16,7 @@ module Vmpooler
puts "[#{stamp}] #{string}" if ENV['VMPOOLER_DEBUG'] puts "[#{stamp}] #{string}" if ENV['VMPOOLER_DEBUG']
open(@file, 'a') do |f| File.open(@file, 'a') do |f|
f.puts "[#{stamp}] #{string}" f.puts "[#{stamp}] #{string}"
end end
end end

View file

@ -121,7 +121,7 @@ module Vmpooler
def move_pending_vm_to_ready(vm, pool) def move_pending_vm_to_ready(vm, pool)
clone_time = $redis.hget('vmpooler__vm__' + vm, 'clone') clone_time = $redis.hget('vmpooler__vm__' + vm, 'clone')
finish = format('%.2f', Time.now - Time.parse(clone_time)) if clone_time finish = format('%<time>.2f', time: Time.now - Time.parse(clone_time)) if clone_time
$redis.smove('vmpooler__pending__' + pool, 'vmpooler__ready__' + pool, vm) $redis.smove('vmpooler__pending__' + pool, 'vmpooler__ready__' + pool, vm)
$redis.hset('vmpooler__boot__' + Date.today.to_s, pool + ':' + vm, finish) # maybe remove as this is never used by vmpooler itself? $redis.hset('vmpooler__boot__' + Date.today.to_s, pool + ':' + vm, finish) # maybe remove as this is never used by vmpooler itself?
@ -181,13 +181,13 @@ module Vmpooler
end end
end end
return if has_mismatched_hostname?(vm, pool_name, provider) return if mismatched_hostname?(vm, pool_name, provider)
vm_still_ready?(pool_name, vm, provider) vm_still_ready?(pool_name, vm, provider)
end end
end end
def has_mismatched_hostname?(vm, pool_name, provider) def mismatched_hostname?(vm, pool_name, provider)
pool_config = $config[:pools][$config[:pool_index][pool_name]] pool_config = $config[:pools][$config[:pool_index][pool_name]]
check_hostname = pool_config['check_hostname_for_mismatch'] check_hostname = pool_config['check_hostname_for_mismatch']
check_hostname = $config[:config]['check_ready_vm_hostname_for_mismatch'] if check_hostname.nil? check_hostname = $config[:config]['check_ready_vm_hostname_for_mismatch'] if check_hostname.nil?
@ -323,18 +323,18 @@ module Vmpooler
$logger.log('d', "[ ] [#{pool_name}] Starting to clone '#{new_vmname}'") $logger.log('d', "[ ] [#{pool_name}] Starting to clone '#{new_vmname}'")
start = Time.now start = Time.now
provider.create_vm(pool_name, new_vmname) provider.create_vm(pool_name, new_vmname)
finish = format('%.2f', Time.now - start) finish = format('%<time>.2f', time: Time.now - start)
$redis.hset('vmpooler__clone__' + Date.today.to_s, pool_name + ':' + new_vmname, finish) $redis.hset('vmpooler__clone__' + Date.today.to_s, pool_name + ':' + new_vmname, finish)
$redis.hset('vmpooler__vm__' + new_vmname, 'clone_time', finish) $redis.hset('vmpooler__vm__' + new_vmname, 'clone_time', finish)
$logger.log('s', "[+] [#{pool_name}] '#{new_vmname}' cloned in #{finish} seconds") $logger.log('s', "[+] [#{pool_name}] '#{new_vmname}' cloned in #{finish} seconds")
$metrics.timing("clone.#{pool_name}", finish) $metrics.timing("clone.#{pool_name}", finish)
rescue StandardError => _e rescue StandardError
$redis.srem("vmpooler__pending__#{pool_name}", new_vmname) $redis.srem("vmpooler__pending__#{pool_name}", new_vmname)
expiration_ttl = $config[:redis]['data_ttl'].to_i * 60 * 60 expiration_ttl = $config[:redis]['data_ttl'].to_i * 60 * 60
$redis.expire("vmpooler__vm__#{new_vmname}", expiration_ttl) $redis.expire("vmpooler__vm__#{new_vmname}", expiration_ttl)
raise _e raise
ensure ensure
$redis.decr('vmpooler__tasks__clone') $redis.decr('vmpooler__tasks__clone')
end end
@ -369,7 +369,7 @@ module Vmpooler
$redis.srem('vmpooler__completed__' + pool, vm) $redis.srem('vmpooler__completed__' + pool, vm)
finish = format('%.2f', Time.now - start) finish = format('%<time>.2f', time: Time.now - start)
$logger.log('s', "[-] [#{pool}] '#{vm}' destroyed in #{finish} seconds") $logger.log('s', "[-] [#{pool}] '#{vm}' destroyed in #{finish} seconds")
$metrics.timing("destroy.#{pool}", finish) $metrics.timing("destroy.#{pool}", finish)
get_vm_usage_labels(vm) get_vm_usage_labels(vm)
@ -503,7 +503,7 @@ module Vmpooler
result = provider.create_disk(pool_name, vm_name, disk_size.to_i) result = provider.create_disk(pool_name, vm_name, disk_size.to_i)
finish = format('%.2f', Time.now - start) finish = format('%<time>.2f', time: Time.now - start)
if result if result
rdisks = $redis.hget('vmpooler__vm__' + vm_name, 'disk') rdisks = $redis.hget('vmpooler__vm__' + vm_name, 'disk')
@ -536,7 +536,7 @@ module Vmpooler
result = provider.create_snapshot(pool_name, vm_name, snapshot_name) result = provider.create_snapshot(pool_name, vm_name, snapshot_name)
finish = format('%.2f', Time.now - start) finish = format('%<time>.2f', time: Time.now - start)
if result if result
$redis.hset('vmpooler__vm__' + vm_name, 'snapshot:' + snapshot_name, Time.now.to_s) $redis.hset('vmpooler__vm__' + vm_name, 'snapshot:' + snapshot_name, Time.now.to_s)
@ -565,7 +565,7 @@ module Vmpooler
result = provider.revert_snapshot(pool_name, vm_name, snapshot_name) result = provider.revert_snapshot(pool_name, vm_name, snapshot_name)
finish = format('%.2f', Time.now - start) finish = format('%<time>.2f', time: Time.now - start)
if result if result
$logger.log('s', "[+] [snapshot_manager] '#{vm_name}' reverted to snapshot '#{snapshot_name}' in #{finish} seconds") $logger.log('s', "[+] [snapshot_manager] '#{vm_name}' reverted to snapshot '#{snapshot_name}' in #{finish} seconds")
@ -603,7 +603,7 @@ module Vmpooler
# @param pool_name [String] - the name of the pool # @param pool_name [String] - the name of the pool
# @return [Provider] - returns the provider class Object # @return [Provider] - returns the provider class Object
def get_provider_for_pool(pool_name) def get_provider_for_pool(pool_name)
pool = $config[:pools].find { |pool| pool['name'] == pool_name } pool = $config[:pools].find { |p| p['name'] == pool_name }
return nil unless pool return nil unless pool
provider_name = pool.fetch('provider', nil) provider_name = pool.fetch('provider', nil)
@ -619,7 +619,7 @@ module Vmpooler
_check_disk_queue _check_disk_queue
sleep(loop_delay) sleep(loop_delay)
unless maxloop.zero? unless maxloop == 0
break if loop_count >= maxloop break if loop_count >= maxloop
loop_count += 1 loop_count += 1
@ -655,7 +655,7 @@ module Vmpooler
_check_snapshot_queue _check_snapshot_queue
sleep(loop_delay) sleep(loop_delay)
unless maxloop.zero? unless maxloop == 0
break if loop_count >= maxloop break if loop_count >= maxloop
loop_count += 1 loop_count += 1
@ -816,7 +816,7 @@ module Vmpooler
end end
sleep_with_wakeup_events(loop_delay, loop_delay_min, pool_size_change: true, poolname: pool['name'], pool_template_change: true, clone_target_change: true, pool_reset: true) sleep_with_wakeup_events(loop_delay, loop_delay_min, pool_size_change: true, poolname: pool['name'], pool_template_change: true, clone_target_change: true, pool_reset: true)
unless maxloop.zero? unless maxloop == 0
break if loop_count >= maxloop break if loop_count >= maxloop
loop_count += 1 loop_count += 1
@ -1119,8 +1119,8 @@ module Vmpooler
$metrics.gauge("running.#{pool_name}", $redis.scard("vmpooler__running__#{pool_name}")) $metrics.gauge("running.#{pool_name}", $redis.scard("vmpooler__running__#{pool_name}"))
if $redis.get("vmpooler__empty__#{pool_name}") if $redis.get("vmpooler__empty__#{pool_name}")
$redis.del("vmpooler__empty__#{pool_name}") unless ready.zero? $redis.del("vmpooler__empty__#{pool_name}") unless ready == 0
elsif ready.zero? elsif ready == 0
$redis.set("vmpooler__empty__#{pool_name}", 'true') $redis.set("vmpooler__empty__#{pool_name}", 'true')
$logger.log('s', "[!] [#{pool_name}] is empty") $logger.log('s', "[!] [#{pool_name}] is empty")
end end
@ -1153,7 +1153,7 @@ module Vmpooler
begin begin
inventory = create_inventory(pool, provider, pool_check_response) inventory = create_inventory(pool, provider, pool_check_response)
rescue StandardError => e rescue StandardError
return(pool_check_response) return(pool_check_response)
end end
@ -1304,7 +1304,7 @@ module Vmpooler
sleep(loop_delay) sleep(loop_delay)
unless maxloop.zero? unless maxloop == 0
break if loop_count >= maxloop break if loop_count >= maxloop
loop_count += 1 loop_count += 1

View file

@ -87,7 +87,7 @@ module Vmpooler
# Returns an Array of Pathname objects. # Returns an Array of Pathname objects.
def gem_directories def gem_directories
dirs = [] dirs = []
if has_rubygems? if rubygems?
dirs = gemspecs.map do |spec| dirs = gemspecs.map do |spec|
lib_path = File.expand_path(File.join(spec.full_gem_path, provider_path)) lib_path = File.expand_path(File.join(spec.full_gem_path, provider_path))
lib_path if File.exist? lib_path lib_path if File.exist? lib_path
@ -99,7 +99,7 @@ module Vmpooler
# Internal: Check if RubyGems is loaded and available. # Internal: Check if RubyGems is loaded and available.
# #
# Returns true if RubyGems is available, false if not. # Returns true if RubyGems is available, false if not.
def has_rubygems? def rubygems?
defined? ::Gem defined? ::Gem
end end

View file

@ -75,7 +75,7 @@ module Vmpooler
vm_object.PowerOffVM_Task.wait_for_completion if vm_object.runtime&.powerState && vm_object.runtime.powerState == 'poweredOn' vm_object.PowerOffVM_Task.wait_for_completion if vm_object.runtime&.powerState && vm_object.runtime.powerState == 'poweredOn'
vm_object.Destroy_Task.wait_for_completion vm_object.Destroy_Task.wait_for_completion
finish = format('%.2f', Time.now - start) finish = format('%<time>.2f', time: Time.now - start)
logger.log('s', "[-] [#{pool}] '#{vm_name}' destroyed in #{finish} seconds") logger.log('s', "[-] [#{pool}] '#{vm_name}' destroyed in #{finish} seconds")
metrics.timing("destroy.#{pool}", finish) metrics.timing("destroy.#{pool}", finish)
rescue RuntimeError rescue RuntimeError
@ -132,11 +132,11 @@ module Vmpooler
def get_folder_children(folder_name, connection) def get_folder_children(folder_name, connection)
folders = [] folders = []
propSpecs = { propSpecs = { # rubocop:disable Naming/VariableName
entity: self, entity: self,
inventoryPath: folder_name inventoryPath: folder_name
} }
folder_object = connection.searchIndex.FindByInventoryPath(propSpecs) folder_object = connection.searchIndex.FindByInventoryPath(propSpecs) # rubocop:disable Naming/VariableName
return folders if folder_object.nil? return folders if folder_object.nil?
@ -173,9 +173,9 @@ module Vmpooler
target[dc]['checking'] = true target[dc]['checking'] = true
hosts_hash = find_least_used_hosts(cluster, datacenter, percentage) hosts_hash = find_least_used_hosts(cluster, datacenter, percentage)
target[dc] = hosts_hash target[dc] = hosts_hash
rescue StandardError => _e rescue StandardError
target[dc] = {} target[dc] = {}
raise(_e) raise
ensure ensure
target[dc]['check_time_finished'] = Time.now target[dc]['check_time_finished'] = Time.now
end end
@ -206,7 +206,7 @@ module Vmpooler
loop_count = 1 loop_count = 1
until target.key?(dc) && target[dc].key?('check_time_finished') until target.key?(dc) && target[dc].key?('check_time_finished')
sleep(loop_delay) sleep(loop_delay)
unless maxloop.zero? unless maxloop == 0
break if loop_count >= maxloop break if loop_count >= maxloop
loop_count += 1 loop_count += 1
@ -217,7 +217,7 @@ module Vmpooler
loop_count = 1 loop_count = 1
while Time.now - target[dc]['check_time_finished'] > max_age while Time.now - target[dc]['check_time_finished'] > max_age
sleep(loop_delay) sleep(loop_delay)
unless maxloop.zero? unless maxloop == 0
break if loop_count >= maxloop break if loop_count >= maxloop
loop_count += 1 loop_count += 1
@ -242,7 +242,6 @@ module Vmpooler
target[dc]['hosts'].delete(host) target[dc]['hosts'].delete(host)
target[dc]['hosts'] << host target[dc]['hosts'] << host
end end
return host
else else
raise("there is no candidate in vcenter that meets all the required conditions, that the cluster has available hosts in a 'green' status, not in maintenance mode and not overloaded CPU and memory") unless target[dc].key?('hosts') raise("there is no candidate in vcenter that meets all the required conditions, that the cluster has available hosts in a 'green' status, not in maintenance mode and not overloaded CPU and memory") unless target[dc].key?('hosts')
@ -251,8 +250,9 @@ module Vmpooler
target[dc]['architectures'].each do |arch| target[dc]['architectures'].each do |arch|
target[dc]['architectures'][arch] = arch.partition { |v| v != host }.flatten if arch.include?(host) target[dc]['architectures'][arch] = arch.partition { |v| v != host }.flatten if arch.include?(host)
end end
return host
end end
return host
end end
end end
@ -344,11 +344,11 @@ module Vmpooler
begin begin
vm_target_folder = find_vm_folder(pool_name, connection) vm_target_folder = find_vm_folder(pool_name, connection)
vm_target_folder = create_folder(connection, target_folder_path, target_datacenter_name) if vm_target_folder.nil? && @config[:config].key?('create_folders') && (@config[:config]['create_folders'] == true) vm_target_folder = create_folder(connection, target_folder_path, target_datacenter_name) if vm_target_folder.nil? && @config[:config].key?('create_folders') && (@config[:config]['create_folders'] == true)
rescue StandardError => _e rescue StandardError
if @config[:config].key?('create_folders') && (@config[:config]['create_folders'] == true) if @config[:config].key?('create_folders') && (@config[:config]['create_folders'] == true)
vm_target_folder = create_folder(connection, target_folder_path, target_datacenter_name) vm_target_folder = create_folder(connection, target_folder_path, target_datacenter_name)
else else
raise(_e) raise
end end
end end
@ -700,12 +700,12 @@ module Vmpooler
datacenter = get_target_datacenter_from_config(pool_name) datacenter = get_target_datacenter_from_config(pool_name)
return nil if datacenter.nil? return nil if datacenter.nil?
propSpecs = { propSpecs = { # rubocop:disable Naming/VariableName
entity: self, entity: self,
inventoryPath: "#{datacenter}/vm/#{folder}" inventoryPath: "#{datacenter}/vm/#{folder}"
} }
folder_object = connection.searchIndex.FindByInventoryPath(propSpecs) folder_object = connection.searchIndex.FindByInventoryPath(propSpecs) # rubocop:disable Naming/VariableName
return nil unless folder_object.class == RbVmomi::VIM::Folder return nil unless folder_object.class == RbVmomi::VIM::Folder
folder_object folder_object
@ -759,7 +759,7 @@ module Vmpooler
return nil if cpu_usage.nil? return nil if cpu_usage.nil?
cpu_size = host.summary.hardware.cpuMhz * host.summary.hardware.numCpuCores cpu_size = host.summary.hardware.cpuMhz * host.summary.hardware.numCpuCores
(cpu_usage.to_f / cpu_size.to_f) * 100 cpu_usage.fdiv(cpu_size) * 100
end end
def memory_utilization_for(host) def memory_utilization_for(host)
@ -767,7 +767,7 @@ module Vmpooler
return nil if memory_usage.nil? return nil if memory_usage.nil?
memory_size = host.summary.hardware.memorySize / 1024 / 1024 memory_size = host.summary.hardware.memorySize / 1024 / 1024
(memory_usage.to_f / memory_size.to_f) * 100 memory_usage.fdiv(memory_size) * 100
end end
def get_average_cluster_utilization(hosts) def get_average_cluster_utilization(hosts)
@ -794,7 +794,6 @@ module Vmpooler
end end
versions.each do |version| versions.each do |version|
targets = []
targets = select_least_used_hosts(architectures[version], percentage) targets = select_least_used_hosts(architectures[version], percentage)
architectures[version] = targets architectures[version] = targets
end end
@ -891,12 +890,12 @@ module Vmpooler
get_snapshot_list(vm.snapshot.rootSnapshotList, snapshotname) if vm.snapshot get_snapshot_list(vm.snapshot.rootSnapshotList, snapshotname) if vm.snapshot
end end
def build_propSpecs(datacenter, folder, vmname) def build_propSpecs(datacenter, folder, vmname) # rubocop:disable Naming/MethodName
propSpecs = { propSpecs = { # rubocop:disable Naming/VariableName
entity => self, entity => self,
:inventoryPath => "#{datacenter}/vm/#{folder}/#{vmname}" :inventoryPath => "#{datacenter}/vm/#{folder}/#{vmname}"
} }
propSpecs propSpecs # rubocop:disable Naming/VariableName
end end
def find_vm(pool_name, vmname, connection) def find_vm(pool_name, vmname, connection)
@ -909,12 +908,12 @@ module Vmpooler
datacenter = get_target_datacenter_from_config(pool_name) datacenter = get_target_datacenter_from_config(pool_name)
return nil if datacenter.nil? return nil if datacenter.nil?
propSpecs = { propSpecs = { # rubocop:disable Naming/VariableName
entity: self, entity: self,
inventoryPath: "#{datacenter}/vm/#{folder}/#{vmname}" inventoryPath: "#{datacenter}/vm/#{folder}/#{vmname}"
} }
connection.searchIndex.FindByInventoryPath(propSpecs) connection.searchIndex.FindByInventoryPath(propSpecs) # rubocop:disable Naming/VariableName
end end
def get_base_vm_container_from(connection) def get_base_vm_container_from(connection)
@ -975,7 +974,7 @@ module Vmpooler
if migration_enabled? @config if migration_enabled? @config
if migration_count >= migration_limit if migration_count >= migration_limit
logger.log('s', "[ ] [#{pool_name}] '#{vm_name}' is running on #{vm_hash['host_name']}. No migration will be evaluated since the migration_limit has been reached") logger.log('s', "[ ] [#{pool_name}] '#{vm_name}' is running on #{vm_hash['host_name']}. No migration will be evaluated since the migration_limit has been reached")
return break
end end
run_select_hosts(pool_name, @provider_hosts) run_select_hosts(pool_name, @provider_hosts)
if vm_in_target?(pool_name, vm_hash['host_name'], vm_hash['architecture'], @provider_hosts) if vm_in_target?(pool_name, vm_hash['host_name'], vm_hash['architecture'], @provider_hosts)
@ -986,9 +985,9 @@ module Vmpooler
else else
logger.log('s', "[ ] [#{pool_name}] '#{vm_name}' is running on #{vm_hash['host_name']}") logger.log('s', "[ ] [#{pool_name}] '#{vm_name}' is running on #{vm_hash['host_name']}")
end end
rescue StandardError => _e rescue StandardError
logger.log('s', "[!] [#{pool_name}] '#{vm_name}' is running on #{vm_hash['host_name']}") logger.log('s', "[!] [#{pool_name}] '#{vm_name}' is running on #{vm_hash['host_name']}")
raise _e raise
end end
end end
end end
@ -1008,11 +1007,11 @@ module Vmpooler
def migrate_vm_and_record_timing(pool_name, vm_name, vm_hash, target_host_object, dest_host_name) def migrate_vm_and_record_timing(pool_name, vm_name, vm_hash, target_host_object, dest_host_name)
start = Time.now start = Time.now
migrate_vm_host(vm_hash['object'], target_host_object) migrate_vm_host(vm_hash['object'], target_host_object)
finish = format('%.2f', Time.now - start) finish = format('%<time>.2f', time: Time.now - start)
metrics.timing("migrate.#{pool_name}", finish) metrics.timing("migrate.#{pool_name}", finish)
metrics.increment("migrate_from.#{vm_hash['host_name']}") metrics.increment("migrate_from.#{vm_hash['host_name']}")
metrics.increment("migrate_to.#{dest_host_name}") metrics.increment("migrate_to.#{dest_host_name}")
checkout_to_migration = format('%.2f', Time.now - Time.parse($redis.hget("vmpooler__vm__#{vm_name}", 'checkout'))) checkout_to_migration = format('%<time>.2f', time: Time.now - Time.parse($redis.hget("vmpooler__vm__#{vm_name}", 'checkout')))
$redis.hset("vmpooler__vm__#{vm_name}", 'migration_time', finish) $redis.hset("vmpooler__vm__#{vm_name}", 'migration_time', finish)
$redis.hset("vmpooler__vm__#{vm_name}", 'checkout_to_migration', checkout_to_migration) $redis.hset("vmpooler__vm__#{vm_name}", 'checkout_to_migration', checkout_to_migration)
finish finish
@ -1025,7 +1024,7 @@ module Vmpooler
def create_folder(connection, new_folder, datacenter) def create_folder(connection, new_folder, datacenter)
dc = connection.serviceInstance.find_datacenter(datacenter) dc = connection.serviceInstance.find_datacenter(datacenter)
folder_object = dc.vmFolder.traverse(new_folder, type = RbVmomi::VIM::Folder, create = true) folder_object = dc.vmFolder.traverse(new_folder, RbVmomi::VIM::Folder, true)
raise("Cannot create folder #{new_folder}") if folder_object.nil? raise("Cannot create folder #{new_folder}") if folder_object.nil?
folder_object folder_object
@ -1035,12 +1034,12 @@ module Vmpooler
datacenter = get_target_datacenter_from_config(pool['name']) datacenter = get_target_datacenter_from_config(pool['name'])
raise('cannot find datacenter') if datacenter.nil? raise('cannot find datacenter') if datacenter.nil?
propSpecs = { propSpecs = { # rubocop:disable Naming/VariableName
entity: self, entity: self,
inventoryPath: "#{datacenter}/vm/#{pool['template']}" inventoryPath: "#{datacenter}/vm/#{pool['template']}"
} }
template_vm_object = connection.searchIndex.FindByInventoryPath(propSpecs) template_vm_object = connection.searchIndex.FindByInventoryPath(propSpecs) # rubocop:disable Naming/VariableName
raise("Pool #{pool['name']} specifies a template VM of #{pool['template']} which does not exist for the provider #{name}") if template_vm_object.nil? raise("Pool #{pool['name']} specifies a template VM of #{pool['template']} which does not exist for the provider #{name}") if template_vm_object.nil?
template_vm_object template_vm_object

View file

@ -2715,7 +2715,7 @@ EOT
it 'creates a folder' do it 'creates a folder' do
expect(connection.serviceInstance).to receive(:find_datacenter).with(datacenter).and_return(datacenter_object) expect(connection.serviceInstance).to receive(:find_datacenter).with(datacenter).and_return(datacenter_object)
expect(datacenter_object.vmFolder).to receive(:traverse).with(new_folder, type=RbVmomi::VIM::Folder, create=true).and_return(folder_object) expect(datacenter_object.vmFolder).to receive(:traverse).with(new_folder, RbVmomi::VIM::Folder, true).and_return(folder_object)
result = subject.create_folder(connection, new_folder, datacenter) result = subject.create_folder(connection, new_folder, datacenter)
expect(result).to eq(folder_object) expect(result).to eq(folder_object)
@ -2724,7 +2724,7 @@ EOT
context 'with folder_object returning nil' do context 'with folder_object returning nil' do
it 'shoud raise an error' do it 'shoud raise an error' do
expect(connection.serviceInstance).to receive(:find_datacenter).with(datacenter).and_return(datacenter_object) expect(connection.serviceInstance).to receive(:find_datacenter).with(datacenter).and_return(datacenter_object)
expect(datacenter_object.vmFolder).to receive(:traverse).with(new_folder, type=RbVmomi::VIM::Folder, create=true).and_return(nil) expect(datacenter_object.vmFolder).to receive(:traverse).with(new_folder, RbVmomi::VIM::Folder, true).and_return(nil)
expect{subject.create_folder(connection, new_folder, datacenter)}.to raise_error("Cannot create folder #{new_folder}") expect{subject.create_folder(connection, new_folder, datacenter)}.to raise_error("Cannot create folder #{new_folder}")
end end