app/models/manageiq/providers/ovirt/infra_manager/metrics_capture.rb
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 countersAvoid 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 endend