Commit 1f1bdf54 authored by GitLab Bot's avatar GitLab Bot

Add latest changes from gitlab-org/gitlab@master

parent 535d167d
...@@ -355,10 +355,13 @@ $note-form-margin-left: 72px; ...@@ -355,10 +355,13 @@ $note-form-margin-left: 72px;
} }
} }
.timeline-icon {
float: left;
}
.system-note, .system-note,
.discussion-filter-note { .discussion-filter-note {
.timeline-icon { .timeline-icon {
float: left;
display: flex; display: flex;
align-items: center; align-items: center;
background-color: $white-light; background-color: $white-light;
......
# frozen_string_literal: true
# Provides an action which fetches a metrics dashboard according
# to the parameters specified by the controller.
module MetricsDashboard
extend ActiveSupport::Concern
def metrics_dashboard
result = dashboard_finder.find(
project_for_dashboard,
current_user,
metrics_dashboard_params
)
if include_all_dashboards?
result[:all_dashboards] = dashboard_finder.find_all_paths(project_for_dashboard)
end
respond_to do |format|
if result[:status] == :success
format.json { render dashboard_success_response(result) }
else
format.json { render dashboard_error_response(result) }
end
end
end
private
# Override in class to provide arguments to the finder.
def metrics_dashboard_params
{}
end
# Override in class if response requires complete list of
# dashboards in addition to requested dashboard body.
def include_all_dashboards?
false
end
def dashboard_finder
::Gitlab::Metrics::Dashboard::Finder
end
# Project is not defined for group and admin level clusters.
def project_for_dashboard
defined?(project) ? project : nil
end
def dashboard_success_response(result)
{
status: :ok,
json: result.slice(:all_dashboards, :dashboard, :status)
}
end
def dashboard_error_response(result)
{
status: result[:http_status],
json: result.slice(:all_dashboards, :message, :status)
}
end
end
# frozen_string_literal: true # frozen_string_literal: true
class Projects::EnvironmentsController < Projects::ApplicationController class Projects::EnvironmentsController < Projects::ApplicationController
include MetricsDashboard
layout 'project' layout 'project'
before_action :authorize_read_environment! before_action :authorize_read_environment!
before_action :authorize_create_environment!, only: [:new, :create] before_action :authorize_create_environment!, only: [:new, :create]
...@@ -158,42 +160,6 @@ class Projects::EnvironmentsController < Projects::ApplicationController ...@@ -158,42 +160,6 @@ class Projects::EnvironmentsController < Projects::ApplicationController
end end
end end
def metrics_dashboard
if params[:embedded]
result = dashboard_finder.find(
project,
current_user,
environment: environment,
dashboard_path: params[:dashboard],
**dashboard_params.to_h.symbolize_keys
)
else
result = dashboard_finder.find(
project,
current_user,
environment: environment,
dashboard_path: params[:dashboard]
)
result[:all_dashboards] = dashboard_finder.find_all_paths(project)
end
respond_to do |format|
if result[:status] == :success
format.json do
render status: :ok, json: result.slice(:all_dashboards, :dashboard, :status)
end
else
format.json do
render(
status: result[:http_status],
json: result.slice(:all_dashboards, :message, :status)
)
end
end
end
end
def search def search
respond_to do |format| respond_to do |format|
format.json do format.json do
...@@ -231,12 +197,15 @@ class Projects::EnvironmentsController < Projects::ApplicationController ...@@ -231,12 +197,15 @@ class Projects::EnvironmentsController < Projects::ApplicationController
params.require([:start, :end]) params.require([:start, :end])
end end
def dashboard_params def metrics_dashboard_params
params.permit(:embedded, :group, :title, :y_label) params
.permit(:embedded, :group, :title, :y_label)
.to_h.symbolize_keys
.merge(dashboard_path: params[:dashboard], environment: environment)
end end
def dashboard_finder def include_all_dashboards?
Gitlab::Metrics::Dashboard::Finder !params[:embedded]
end end
def search_environment_names def search_environment_names
......
---
title: Fix broken notes avatar rendering in Chrome 77
merge_request: 18110
author:
type: fixed
# frozen_string_literal: true # frozen_string_literal: true
NO_SPECS_LABELS = %w[backstage Documentation QA].freeze NO_SPECS_LABELS = %w[backstage documentation QA].freeze
NO_NEW_SPEC_MESSAGE = <<~MSG.freeze NO_NEW_SPEC_MESSAGE = <<~MSG.freeze
You've made some app changes, but didn't add any tests. You've made some app changes, but didn't add any tests.
That's OK as long as you're refactoring existing code, That's OK as long as you're refactoring existing code,
......
...@@ -22,8 +22,13 @@ To fix this issue, here are some possible solutions. ...@@ -22,8 +22,13 @@ To fix this issue, here are some possible solutions.
### Increase the POST buffer size in Git ### Increase the POST buffer size in Git
**If pushing over HTTP**, you can try increasing the POST buffer size in Git's **If you're using Git over HTTP instead of SSH**, you can try increasing the POST buffer size in Git's
configuration. Open a terminal and enter: configuration.
Example of an error during a clone:
`fatal: pack has bad object at offset XXXXXXXXX: inflate returned -5`
Open a terminal and enter:
```sh ```sh
git config http.postBuffer 52428800 git config http.postBuffer 52428800
......
...@@ -20,13 +20,17 @@ module Gitlab ...@@ -20,13 +20,17 @@ module Gitlab
# @param options - dashboard_path [String] Path at which the # @param options - dashboard_path [String] Path at which the
# dashboard can be found. Nil values will # dashboard can be found. Nil values will
# default to the system dashboard. # default to the system dashboard.
# @param options - group [String] Title of the group # @param options - group [String, Group] Title of the group
# to which a panel might belong. Used by # to which a panel might belong. Used by
# embedded dashboards. # embedded dashboards. If cluster dashboard,
# refers to the Group corresponding to the cluster.
# @param options - title [String] Title of the panel. # @param options - title [String] Title of the panel.
# Used by embedded dashboards. # Used by embedded dashboards.
# @param options - y_label [String] Y-Axis label of # @param options - y_label [String] Y-Axis label of
# a panel. Used by embedded dashboards. # a panel. Used by embedded dashboards.
# @param options - cluster [Cluster]
# @param options - cluster_type [Symbol] The level of
# cluster, one of [:admin, :project, :group]
# @return [Hash] # @return [Hash]
def find(project, user, options = {}) def find(project, user, options = {})
service_for(options) service_for(options)
......
...@@ -14063,15 +14063,30 @@ msgstr "" ...@@ -14063,15 +14063,30 @@ msgstr ""
msgid "SecurityDashboard|%{firstProject}, %{secondProject}, and %{rest}" msgid "SecurityDashboard|%{firstProject}, %{secondProject}, and %{rest}"
msgstr "" msgstr ""
msgid "SecurityDashboard|Add a project to your dashboard"
msgstr ""
msgid "SecurityDashboard|Add or remove projects from your dashboard"
msgstr ""
msgid "SecurityDashboard|Add projects"
msgstr ""
msgid "SecurityDashboard|Confidence" msgid "SecurityDashboard|Confidence"
msgstr "" msgstr ""
msgid "SecurityDashboard|Edit dashboard"
msgstr ""
msgid "SecurityDashboard|Hide dismissed" msgid "SecurityDashboard|Hide dismissed"
msgstr "" msgstr ""
msgid "SecurityDashboard|Monitor vulnerabilities in your code" msgid "SecurityDashboard|Monitor vulnerabilities in your code"
msgstr "" msgstr ""
msgid "SecurityDashboard|More information"
msgstr ""
msgid "SecurityDashboard|Pipeline %{pipelineLink} triggered" msgid "SecurityDashboard|Pipeline %{pipelineLink} triggered"
msgstr "" msgstr ""
...@@ -14081,9 +14096,18 @@ msgstr "" ...@@ -14081,9 +14096,18 @@ msgstr ""
msgid "SecurityDashboard|Report type" msgid "SecurityDashboard|Report type"
msgstr "" msgstr ""
msgid "SecurityDashboard|Return to dashboard"
msgstr ""
msgid "SecurityDashboard|Security Dashboard"
msgstr ""
msgid "SecurityDashboard|Severity" msgid "SecurityDashboard|Severity"
msgstr "" msgstr ""
msgid "SecurityDashboard|The security dashboard displays the latest security findings for projects you wish to monitor. Select \"Edit dashboard\" to add and remove projects."
msgstr ""
msgid "SecurityDashboard|Unable to add %{invalidProjects}" msgid "SecurityDashboard|Unable to add %{invalidProjects}"
msgstr "" msgstr ""
......
# frozen_string_literal: true
require 'spec_helper'
describe MetricsDashboard do
describe 'GET #metrics_dashboard' do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project, :repository) }
let_it_be(:environment) { create(:environment, project: project) }
before do
sign_in(user)
project.add_maintainer(user)
end
controller(::ApplicationController) do
include MetricsDashboard # rubocop:disable RSpec/DescribedClass
end
let(:json_response) do
routes.draw { get "metrics_dashboard" => "anonymous#metrics_dashboard" }
response = get :metrics_dashboard, format: :json
JSON.parse(response.parsed_body)
end
context 'when no parameters are provided' do
it 'returns an error json_response' do
expect(json_response['status']).to eq('error')
end
end
context 'when params are provided' do
before do
allow(controller).to receive(:project).and_return(project)
allow(controller)
.to receive(:metrics_dashboard_params)
.and_return(environment: environment)
end
it 'returns the specified dashboard' do
expect(json_response['dashboard']['dashboard']).to eq('Environment metrics')
expect(json_response).not_to have_key('all_dashboards')
end
context 'when parameters are provided and the list of all dashboards is required' do
before do
allow(controller).to receive(:include_all_dashboards?).and_return(true)
end
it 'returns a dashboard in addition to the list of dashboards' do
expect(json_response['dashboard']['dashboard']).to eq('Environment metrics')
expect(json_response).to have_key('all_dashboards')
end
end
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment