debian-mirror-gitlab/lib/gitlab/metrics/dashboard/errors.rb

42 lines
1.5 KiB
Ruby
Raw Normal View History

2019-10-12 21:52:04 +05:30
# frozen_string_literal: true
# Central point for managing errors from within the metrics
# dashboard module. Handles errors from dashboard retrieval
# and processing steps, as well as defines shared error classes.
module Gitlab
module Metrics
module Dashboard
module Errors
2019-12-04 20:38:33 +05:30
DashboardProcessingError = Class.new(StandardError)
2019-10-12 21:52:04 +05:30
PanelNotFoundError = Class.new(StandardError)
2019-12-26 22:10:19 +05:30
MissingIntegrationError = Class.new(StandardError)
2019-12-04 20:38:33 +05:30
LayoutError = Class.new(DashboardProcessingError)
MissingQueryError = Class.new(DashboardProcessingError)
2019-10-12 21:52:04 +05:30
NOT_FOUND_ERROR = Gitlab::Template::Finders::RepoTemplateFinder::FileNotFoundError
def handle_errors(error)
case error
2019-12-04 20:38:33 +05:30
when DashboardProcessingError
2019-10-12 21:52:04 +05:30
error(error.message, :unprocessable_entity)
when NOT_FOUND_ERROR
2020-07-28 23:09:34 +05:30
error(_("%{dashboard_path} could not be found.") % { dashboard_path: dashboard_path }, :not_found)
2019-10-12 21:52:04 +05:30
when PanelNotFoundError
error(error.message, :not_found)
2019-12-26 22:10:19 +05:30
when ::Grafana::Client::Error
error(error.message, :service_unavailable)
when MissingIntegrationError
2020-07-28 23:09:34 +05:30
error(_('Proxy support for this API is not available currently'), :bad_request)
2019-10-12 21:52:04 +05:30
else
raise error
end
end
def panels_not_found!(opts)
2020-07-28 23:09:34 +05:30
raise PanelNotFoundError.new(_("No panels matching properties %{opts}") % { opts: opts })
2019-10-12 21:52:04 +05:30
end
end
end
end
end