diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-09-19 04:45:44 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-09-19 04:45:44 +0300 |
commit | 85dc423f7090da0a52c73eb66faf22ddb20efff9 (patch) | |
tree | 9160f299afd8c80c038f08e1545be119f5e3f1e1 /app/controllers/projects/metrics_dashboard_controller.rb | |
parent | 15c2c8c66dbe422588e5411eee7e68f1fa440bb8 (diff) |
Add latest changes from gitlab-org/gitlab@13-4-stable-ee
Diffstat (limited to 'app/controllers/projects/metrics_dashboard_controller.rb')
-rw-r--r-- | app/controllers/projects/metrics_dashboard_controller.rb | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/app/controllers/projects/metrics_dashboard_controller.rb b/app/controllers/projects/metrics_dashboard_controller.rb index 51307c3665c..bc0a701b9fd 100644 --- a/app/controllers/projects/metrics_dashboard_controller.rb +++ b/app/controllers/projects/metrics_dashboard_controller.rb @@ -6,6 +6,8 @@ module Projects # app/controllers/projects/environments_controller.rb # See https://gitlab.com/gitlab-org/gitlab/-/issues/226002 for more details. + include Gitlab::Utils::StrongMemoize + before_action :authorize_metrics_dashboard! before_action do push_frontend_feature_flag(:prometheus_computed_alerts) @@ -15,6 +17,15 @@ module Projects def show if environment render 'projects/environments/metrics' + elsif default_environment + redirect_to project_metrics_dashboard_path( + project, + # Reverse merge the query parameters so that a query parameter named dashboard_path doesn't + # override the dashboard_path path parameter. + **permitted_params.to_h.symbolize_keys + .merge(environment: default_environment.id) + .reverse_merge(request.query_parameters.symbolize_keys) + ) else render 'projects/environments/empty_metrics' end @@ -22,13 +33,21 @@ module Projects private + def permitted_params + @permitted_params ||= params.permit(:dashboard_path, :environment, :page) + end + def environment - @environment ||= - if params[:environment] - project.environments.find(params[:environment]) - else - project.default_environment - end + strong_memoize(:environment) do + env = permitted_params[:environment] + project.environments.find(env) if env + end + end + + def default_environment + strong_memoize(:default_environment) do + project.default_environment + end end end end |