Skip to content

Commit

Permalink
Add latest changes from gitlab-org/gitlab@master
Browse files Browse the repository at this point in the history
  • Loading branch information
GitLab Bot committed Oct 4, 2019
1 parent 535d167 commit 1f1bdf5
Show file tree
Hide file tree
Showing 9 changed files with 177 additions and 46 deletions.
5 changes: 4 additions & 1 deletion app/assets/stylesheets/pages/notes.scss
Expand Up @@ -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;
Expand Down
63 changes: 63 additions & 0 deletions app/controllers/concerns/metrics_dashboard.rb
@@ -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
49 changes: 9 additions & 40 deletions app/controllers/projects/environments_controller.rb
@@ -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]
Expand Down Expand Up @@ -158,42 +160,6 @@ def additional_metrics
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
Expand Down Expand Up @@ -231,12 +197,15 @@ def metrics_params
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
Expand Down
@@ -0,0 +1,5 @@
---
title: Fix broken notes avatar rendering in Chrome 77
merge_request: 18110
author:
type: fixed
2 changes: 1 addition & 1 deletion danger/specs/Dangerfile
@@ -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,
Expand Down
9 changes: 7 additions & 2 deletions doc/topics/git/troubleshooting_git.md
Expand Up @@ -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
Expand Down
8 changes: 6 additions & 2 deletions lib/gitlab/metrics/dashboard/finder.rb
Expand Up @@ -20,13 +20,17 @@ class << self
# @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)
Expand Down
24 changes: 24 additions & 0 deletions locale/gitlab.pot
Expand Up @@ -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 ""

Expand All @@ -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 ""

Expand Down
58 changes: 58 additions & 0 deletions spec/controllers/concerns/metrics_dashboard_spec.rb
@@ -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

0 comments on commit 1f1bdf5

Please sign in to comment.