Commit d6592df6 authored by Douglas Barbosa Alexandre's avatar Douglas Barbosa Alexandre

Merge branch '7126-admin-projects-geo-status' into 'master'

Geo: Add a Geo Status Widget to Admin > Projects

See merge request gitlab-org/gitlab-ee!7789
parents 6dba97cf 5d467f01
......@@ -114,6 +114,8 @@
= visibility_level_icon(@project.visibility_level)
= visibility_level_label(@project.visibility_level)
= render_if_exists 'admin/projects/geo_status_widget', locals: { project: @project }
.card
.card-header
Transfer project
......
......@@ -177,7 +177,8 @@
}
}
.geo-admin-projects {
.geo-admin-projects,
.admin-projects {
.card-header {
.header-text-primary,
.header-text-secondary {
......
......@@ -21,11 +21,6 @@
= time_ago_with_tooltip(project_registry.last_repository_synced_at, placement: 'bottom')
- else
= s_('Geo|Waiting for scheduler')
.col-sm.project-status-container
.project-status-title.text-muted
= s_('Geo|Retry count')
.project-status-content
= project_registry.repository_retry_count.nil? ? 0 : project_registry.repository_retry_count
.project-card-errors
.card-header.bg-transparent.border-bottom-0.border-top
......@@ -41,14 +36,21 @@
'aria-labelledby' => "project-#{project_registry.project_id}-header" }
.card-body
.container.project-container
%ul.unstyled-list.errors-list
- if project_registry.last_repository_sync_failure
%li.p-0.d-flex
= sprite_icon('warning', size: 18, css_class: 'error-icon')
%span.error-text.prepend-left-5
= s_('Geo|Synchronization failed - %{error}') % { error: project_registry.last_repository_sync_failure }
- if project_registry.last_repository_verification_failure
%li.p-0.d-flex
= sprite_icon('warning', size: 18, css_class: 'error-icon')
%span.error-text.prepend-left-5
= s_('Geo|Verification failed - %{error}') % { error: project_registry.last_repository_verification_failure }
.row
.col-sm-8.project-status-container
%ul.unstyled-list.errors-list
- if project_registry.last_repository_sync_failure
%li.p-0.d-flex
= sprite_icon('warning', size: 18, css_class: 'error-icon')
%span.error-text.prepend-left-5
= s_('Geo|Synchronization failed - %{error}') % { error: project_registry.last_repository_sync_failure }
- if project_registry.last_repository_verification_failure
%li.p-0.d-flex
= sprite_icon('warning', size: 18, css_class: 'error-icon')
%span.error-text.prepend-left-5
= s_('Geo|Verification failed - %{error}') % { error: project_registry.last_repository_verification_failure }
.col-sm-4.project-status-container
.project-status-title.text-muted
= s_('Geo|Retry count')
.project-status-content
= project_registry.repository_retry_count.nil? ? 0 : project_registry.repository_retry_count
......@@ -21,11 +21,6 @@
= time_ago_with_tooltip(project_registry.last_repository_synced_at, placement: 'bottom')
- else
= s_('Geo|Waiting for scheduler')
.col-sm.project-status-container
.project-status-title.text-muted
= s_('Geo|Retry counts')
.project-status-content
= project_registry.repository_retry_count.nil? ? 0 : project_registry.repository_retry_count
- if project_registry.last_repository_sync_failure || project_registry.last_repository_verification_failure
.project-card-errors
......@@ -42,14 +37,21 @@
'aria-labelledby' => "project-#{project_registry.project_id}-header" }
.card-body
.container.project-container
%ul.unstyled-list.errors-list
- if project_registry.last_repository_sync_failure
%li.p-0.d-flex
= sprite_icon('warning', size: 18, css_class: 'error-icon')
%span.error-text.prepend-left-5
= s_('Geo|Synchronization failed - %{error}') % { error: project_registry.last_repository_sync_failure }
- if project_registry.last_repository_verification_failure
%li.p-0.d-flex
= sprite_icon('warning', size: 18, css_class: 'error-icon')
%span.error-text.prepend-left-5
= s_('Geo|Verification failed - %{error}') % { error: project_registry.last_repository_verification_failure }
.row
.col-sm-8.project-status-container
%ul.unstyled-list.errors-list
- if project_registry.last_repository_sync_failure
%li.p-0.d-flex
= sprite_icon('warning', size: 18, css_class: 'error-icon')
%span.error-text.prepend-left-5
= s_('Geo|Synchronization failed - %{error}') % { error: project_registry.last_repository_sync_failure }
- if project_registry.last_repository_verification_failure
%li.p-0.d-flex
= sprite_icon('warning', size: 18, css_class: 'error-icon')
%span.error-text.prepend-left-5
= s_('Geo|Verification failed - %{error}') % { error: project_registry.last_repository_verification_failure }
.col-sm-4.project-status-container
.project-status-title.text-muted
= s_('Geo|Retry count')
.project-status-content
= project_registry.repository_retry_count.nil? ? 0 : project_registry.repository_retry_count
......@@ -21,4 +21,3 @@
= time_ago_with_tooltip(project_registry.last_repository_synced_at, placement: 'bottom')
- else
= s_('Geo|Never')
.col-sm.d-sm-none.d-md-block
......@@ -21,4 +21,3 @@
= time_ago_with_tooltip(project_registry.last_repository_check_at, placement: 'bottom')
- else
= s_('Geo|Never')
.col-sm.d-sm-none.d-md-block
- if Gitlab::Geo.secondary? && @project.project_registry
.card
.card-header
= s_('Geo|Geo Status')
.float-right
= link_to(recheck_admin_geo_project_path(@project.project_registry), method: :post, class: 'btn btn-default btn-sm mr-2') do
= s_('Geo|Recheck')
= link_to(resync_admin_geo_project_path(@project.project_registry), method: :post, class: 'btn btn-default-primary btn-sm') do
= s_('Geo|Resync')
= render partial: "admin/geo/projects/registry_#{@project.project_registry.synchronization_state}", locals: { project_registry: @project.project_registry }
---
title: 'Geo: Add a Geo Status Widget to Admin > Projects'
merge_request: 7789
author:
type: added
# frozen_string_literal: true
require 'spec_helper'
describe Admin::ProjectsController do
include EE::GeoHelpers
let!(:project_registry) { create(:geo_project_registry) }
let(:project) { project_registry.project }
before do
sign_in(create(:admin))
end
describe 'GET /projects/:id' do
subject { get :show, namespace_id: project.namespace.path, id: project.path }
render_views
it 'includes Geo Status widget partial' do
expect(subject).to have_gitlab_http_status(200)
expect(subject.body).to match(project.name)
expect(subject).to render_template(partial: 'admin/projects/_geo_status_widget')
end
context 'when Geo is enabled and is a secondary node' do
before do
stub_current_geo_node(create(:geo_node))
end
it 'renders Geo Status widget' do
expect(subject.body).to match('Geo Status')
end
end
context 'without Geo enabled' do
it 'doesnt render Geo Status widget' do
expect(subject.body).not_to match('Geo Status')
end
end
end
end
......@@ -3658,6 +3658,9 @@ msgstr ""
msgid "Geo|File sync capacity"
msgstr ""
msgid "Geo|Geo Status"
msgstr ""
msgid "Geo|Groups to synchronize"
msgstr ""
......@@ -3718,9 +3721,6 @@ msgstr ""
msgid "Geo|Retry count"
msgstr ""
msgid "Geo|Retry counts"
msgstr ""
msgid "Geo|Select groups to replicate."
msgstr ""
......
......@@ -42,4 +42,15 @@ describe Admin::ProjectsController do
expect { get :index }.not_to exceed_query_limit(control_count)
end
end
describe 'GET /projects/:id' do
render_views
it 'renders show page' do
get :show, namespace_id: project.namespace.path, id: project.path
expect(response).to have_gitlab_http_status(200)
expect(response.body).to match(project.name)
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