X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/35bb2d98244d40106c0493385f90cdd198c91447..10fc5ae4d7c95bef5056fa06e708320b149a47d3:/apps/workbench/app/controllers/management_controller.rb diff --git a/apps/workbench/app/controllers/management_controller.rb b/apps/workbench/app/controllers/management_controller.rb new file mode 100644 index 0000000000..4c8b52f661 --- /dev/null +++ b/apps/workbench/app/controllers/management_controller.rb @@ -0,0 +1,51 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 + +require 'app_version' + +class ManagementController < ApplicationController + skip_around_action :thread_clear + skip_around_action :set_thread_api_token + skip_around_action :require_thread_api_token + skip_before_action :ensure_arvados_api_exists + skip_before_action :accept_uuid_as_id_param + skip_before_action :check_user_agreements + skip_before_action :check_user_profile + skip_before_action :load_filters_and_paging_params + skip_before_action :find_object_by_uuid + + before_action :check_auth_header + + def check_auth_header + mgmt_token = Rails.configuration.ManagementToken + auth_header = request.headers['Authorization'] + + if mgmt_token.empty? + render :json => {:errors => "disabled"}, :status => 404 + elsif !auth_header + render :json => {:errors => "authorization required"}, :status => 401 + elsif auth_header != 'Bearer '+mgmt_token + render :json => {:errors => "authorization error"}, :status => 403 + end + end + + def metrics + render content_type: 'text/plain', plain: <<~EOF +# HELP arvados_config_load_timestamp_seconds Time when config file was loaded. +# TYPE arvados_config_load_timestamp_seconds gauge +arvados_config_load_timestamp_seconds{sha256="#{Rails.configuration.SourceSHA256}"} #{Rails.configuration.LoadTimestamp.to_f} +# HELP arvados_config_source_timestamp_seconds Timestamp of config file when it was loaded. +# TYPE arvados_config_source_timestamp_seconds gauge +arvados_config_source_timestamp_seconds{sha256="#{Rails.configuration.SourceSHA256}"} #{Rails.configuration.SourceTimestamp.to_f} +# HELP arvados_version_running Indicated version is running. +# TYPE arvados_version_running gauge +arvados_version_running{version="#{AppVersion.package_version}"} 1 +EOF + end + + def health + resp = {"health" => "OK"} + render json: resp + end +end