Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
535d167d40
commit
1f1bdf54e1
9 changed files with 177 additions and 46 deletions
|
@ -355,10 +355,13 @@ $note-form-margin-left: 72px;
|
|||
}
|
||||
}
|
||||
|
||||
.timeline-icon {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.system-note,
|
||||
.discussion-filter-note {
|
||||
.timeline-icon {
|
||||
float: left;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
background-color: $white-light;
|
||||
|
|
63
app/controllers/concerns/metrics_dashboard.rb
Normal file
63
app/controllers/concerns/metrics_dashboard.rb
Normal file
|
@ -0,0 +1,63 @@
|
|||
# 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
|
|
@ -1,6 +1,8 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class Projects::EnvironmentsController < Projects::ApplicationController
|
||||
include MetricsDashboard
|
||||
|
||||
layout 'project'
|
||||
before_action :authorize_read_environment!
|
||||
before_action :authorize_create_environment!, only: [:new, :create]
|
||||
|
@ -158,42 +160,6 @@ class Projects::EnvironmentsController < Projects::ApplicationController
|
|||
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
|
||||
respond_to do |format|
|
||||
format.json do
|
||||
|
@ -231,12 +197,15 @@ class Projects::EnvironmentsController < Projects::ApplicationController
|
|||
params.require([:start, :end])
|
||||
end
|
||||
|
||||
def dashboard_params
|
||||
params.permit(:embedded, :group, :title, :y_label)
|
||||
def metrics_dashboard_params
|
||||
params
|
||||
.permit(:embedded, :group, :title, :y_label)
|
||||
.to_h.symbolize_keys
|
||||
.merge(dashboard_path: params[:dashboard], environment: environment)
|
||||
end
|
||||
|
||||
def dashboard_finder
|
||||
Gitlab::Metrics::Dashboard::Finder
|
||||
def include_all_dashboards?
|
||||
!params[:embedded]
|
||||
end
|
||||
|
||||
def search_environment_names
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Fix broken notes avatar rendering in Chrome 77
|
||||
merge_request: 18110
|
||||
author:
|
||||
type: fixed
|
|
@ -1,6 +1,6 @@
|
|||
# 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
|
||||
You've made some app changes, but didn't add any tests.
|
||||
That's OK as long as you're refactoring existing code,
|
||||
|
|
|
@ -22,8 +22,13 @@ To fix this issue, here are some possible solutions.
|
|||
|
||||
### Increase the POST buffer size in Git
|
||||
|
||||
**If pushing over HTTP**, you can try increasing the POST buffer size in Git's
|
||||
configuration. Open a terminal and enter:
|
||||
**If you're using Git over HTTP instead of SSH**, you can try increasing the POST buffer size in Git's
|
||||
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
|
||||
git config http.postBuffer 52428800
|
||||
|
|
|
@ -20,13 +20,17 @@ module Gitlab
|
|||
# @param options - dashboard_path [String] Path at which the
|
||||
# dashboard can be found. Nil values will
|
||||
# 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
|
||||
# embedded dashboards.
|
||||
# embedded dashboards. If cluster dashboard,
|
||||
# refers to the Group corresponding to the cluster.
|
||||
# @param options - title [String] Title of the panel.
|
||||
# Used by embedded dashboards.
|
||||
# @param options - y_label [String] Y-Axis label of
|
||||
# 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]
|
||||
def find(project, user, options = {})
|
||||
service_for(options)
|
||||
|
|
|
@ -14063,15 +14063,30 @@ msgstr ""
|
|||
msgid "SecurityDashboard|%{firstProject}, %{secondProject}, and %{rest}"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
msgid "SecurityDashboard|Edit dashboard"
|
||||
msgstr ""
|
||||
|
||||
msgid "SecurityDashboard|Hide dismissed"
|
||||
msgstr ""
|
||||
|
||||
msgid "SecurityDashboard|Monitor vulnerabilities in your code"
|
||||
msgstr ""
|
||||
|
||||
msgid "SecurityDashboard|More information"
|
||||
msgstr ""
|
||||
|
||||
msgid "SecurityDashboard|Pipeline %{pipelineLink} triggered"
|
||||
msgstr ""
|
||||
|
||||
|
@ -14081,9 +14096,18 @@ msgstr ""
|
|||
msgid "SecurityDashboard|Report type"
|
||||
msgstr ""
|
||||
|
||||
msgid "SecurityDashboard|Return to dashboard"
|
||||
msgstr ""
|
||||
|
||||
msgid "SecurityDashboard|Security Dashboard"
|
||||
msgstr ""
|
||||
|
||||
msgid "SecurityDashboard|Severity"
|
||||
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}"
|
||||
msgstr ""
|
||||
|
||||
|
|
58
spec/controllers/concerns/metrics_dashboard_spec.rb
Normal file
58
spec/controllers/concerns/metrics_dashboard_spec.rb
Normal file
|
@ -0,0 +1,58 @@
|
|||
# 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
|
Loading…
Reference in a new issue