35 lines
1.1 KiB
Ruby
35 lines
1.1 KiB
Ruby
|
# 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
|
||
|
PanelNotFoundError = Class.new(StandardError)
|
||
|
|
||
|
PROCESSING_ERROR = Gitlab::Metrics::Dashboard::Stages::BaseStage::DashboardProcessingError
|
||
|
NOT_FOUND_ERROR = Gitlab::Template::Finders::RepoTemplateFinder::FileNotFoundError
|
||
|
|
||
|
def handle_errors(error)
|
||
|
case error
|
||
|
when PROCESSING_ERROR
|
||
|
error(error.message, :unprocessable_entity)
|
||
|
when NOT_FOUND_ERROR
|
||
|
error("#{dashboard_path} could not be found.", :not_found)
|
||
|
when PanelNotFoundError
|
||
|
error(error.message, :not_found)
|
||
|
else
|
||
|
raise error
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def panels_not_found!(opts)
|
||
|
raise PanelNotFoundError.new("No panels matching properties #{opts}")
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|