diff options
Diffstat (limited to 'app/controllers/concerns/registry/connection_errors_handler.rb')
-rw-r--r-- | app/controllers/concerns/registry/connection_errors_handler.rb | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/app/controllers/concerns/registry/connection_errors_handler.rb b/app/controllers/concerns/registry/connection_errors_handler.rb new file mode 100644 index 00000000000..2b24f3b5b31 --- /dev/null +++ b/app/controllers/concerns/registry/connection_errors_handler.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +module Registry + module ConnectionErrorsHandler + extend ActiveSupport::Concern + + included do + rescue_from ContainerRegistry::Path::InvalidRegistryPathError, with: :invalid_registry_path + rescue_from Faraday::Error, with: :connection_error + + before_action :ping_container_registry + end + + private + + # rubocop:disable Gitlab/ModuleWithInstanceVariables + # These instance variables are only read by a view helper to pass + # them to the frontend + # See app/views/projects/registry/repositories/index.html.haml + # app/views/groups/registry/repositories/index.html.haml + def invalid_registry_path + @invalid_path_error = true + + render :index + end + + def connection_error + @connection_error = true + + render :index + end + # rubocop:enable Gitlab/ModuleWithInstanceVariables + + def ping_container_registry + ContainerRegistry::Client.registry_info + end + end +end |