ManageIQ/manageiq-providers-ovirt

View on GitHub
app/models/manageiq/providers/ovirt/infra_manager/metrics_capture.rb

Summary

Maintainability
A
0 mins
Test Coverage
B
82%
class ManageIQ::Providers::Ovirt::InfraManager::MetricsCapture < ManageIQ::Providers::InfraManager::MetricsCapture
#
# Connect / Disconnect / Intialize methods
#
 
def perf_init_rhevm
raise "no metrics credentials defined" unless target.ext_management_system.has_authentication_type?(:metrics)
 
username, password = target.ext_management_system.auth_user_pwd(:metrics)
metrics_hostname = target.ext_management_system.connection_configuration_by_role('metrics')
.try(:endpoint)
.try(:hostname)
host = metrics_hostname || target.ext_management_system.hostname
 
conn_info = {
:host => host,
:database => target.ext_management_system.history_database_name,
:username => username,
:password => password
}
 
require 'ovirt_metrics'
OvirtMetrics.establish_connection(conn_info)
end
 
def perf_release_rhevm
end
 
#
# Capture methods
#
 
def perf_collect_metrics(interval_name, start_time = nil, end_time = nil)
require 'ovirt_metrics'
target_description = "[#{target.class.name}], [#{target.id}], [#{target.name}]"
unless target.ext_management_system.has_authentication_type?(:metrics)
_log.warn("No C&U credentials defined for: #{target_description} returning empty stats")
return {}, {}
end
 
log_header = "[#{interval_name}] for: #{target_description}"
start_time ||= Metric::Capture.historical_start_time
 
begin
Benchmark.realtime_block(:rhevm_connect) { perf_init_rhevm }
counters, = Benchmark.realtime_block(:collect_data) do
case target
when Host then OvirtMetrics.host_realtime(target.uid_ems, start_time, end_time)
when Vm then OvirtMetrics.vm_realtime(target.uid_ems, start_time, end_time)
end
end
return counters
Avoid rescuing the `Exception` class. Perhaps you meant to rescue `StandardError`?
rescue Exception => err
_log.error("#{log_header} Unhandled exception during perf data collection: [#{err}], class: [#{err.class}]")
_log.error("#{log_header} Timings at time of error: #{Benchmark.current_realtime.inspect}")
_log.log_backtrace(err)
raise
ensure
perf_release_rhevm
end
end
end