diff --git a/GITLAB_PAGES_VERSION b/GITLAB_PAGES_VERSION
index 815d5ca06d530cd0884a6b81fdabdcf82bfc9b5a..398935591556811c66955d155a2cd654a9af3123 100644
--- a/GITLAB_PAGES_VERSION
+++ b/GITLAB_PAGES_VERSION
@@ -1 +1 @@
-1.19.0
+1.20.0
diff --git a/Gemfile b/Gemfile
index 18519fb17203b49585f25e9ac07de4e1d69c6394..c33975966cbebe0734aca55732efaae058bd7f63 100644
--- a/Gemfile
+++ b/Gemfile
@@ -149,7 +149,7 @@ gem 'wikicloth', '0.8.1'
gem 'asciidoctor', '~> 2.0.10'
gem 'asciidoctor-include-ext', '~> 0.3.1', require: false
gem 'asciidoctor-plantuml', '~> 0.0.12'
-gem 'rouge', '~> 3.19.0'
+gem 'rouge', '~> 3.20.0'
gem 'truncato', '~> 0.7.11'
gem 'bootstrap_form', '~> 4.2.0'
gem 'nokogiri', '~> 1.10.9'
diff --git a/Gemfile.lock b/Gemfile.lock
index fe872402b041efbabc9b362960f6a78f8a048665..be2d98cb0632ba635cfeb1093f73abc2f45be86f 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -891,7 +891,7 @@ GEM
rexml (3.2.4)
rinku (2.0.0)
rotp (2.1.2)
- rouge (3.19.0)
+ rouge (3.20.0)
rqrcode (0.7.0)
chunky_png
rqrcode-rails3 (0.1.7)
@@ -1004,11 +1004,11 @@ GEM
shellany (0.0.1)
shoulda-matchers (4.0.1)
activesupport (>= 4.2.0)
- sidekiq (5.2.7)
+ sidekiq (5.2.9)
connection_pool (~> 2.2, >= 2.2.2)
- rack (>= 1.5.0)
+ rack (~> 2.0)
rack-protection (>= 1.5.0)
- redis (>= 3.3.5, < 5)
+ redis (>= 3.3.5, < 4.2)
sidekiq-cron (1.0.4)
fugit (~> 1.1)
sidekiq (>= 4.2.1)
@@ -1356,7 +1356,7 @@ DEPENDENCIES
request_store (~> 1.5)
responders (~> 3.0)
retriable (~> 3.1.2)
- rouge (~> 3.19.0)
+ rouge (~> 3.20.0)
rqrcode-rails3 (~> 0.1.7)
rspec-parameterized
rspec-rails (~> 4.0.0)
diff --git a/app/assets/javascripts/alert_management/components/alert_management_list.vue b/app/assets/javascripts/alert_management/components/alert_management_list.vue
index 3b5af5b406b26f0cc93d2097597252de6540b801..b7cd28de8073c77f3b2812cf4916c02f5f85546a 100644
--- a/app/assets/javascripts/alert_management/components/alert_management_list.vue
+++ b/app/assets/javascripts/alert_management/components/alert_management_list.vue
@@ -32,7 +32,8 @@ import {
} from '../constants';
import AlertStatus from './alert_status.vue';
-const tdClass = 'table-col gl-display-flex d-md-table-cell gl-align-items-center';
+const tdClass =
+ 'table-col gl-display-flex d-md-table-cell gl-align-items-center gl-white-space-nowrap';
const thClass = 'gl-hover-bg-blue-50';
const bodyTrClass =
'gl-border-1 gl-border-t-solid gl-border-gray-100 gl-hover-bg-blue-50 gl-hover-cursor-pointer gl-hover-border-b-solid gl-hover-border-blue-200';
@@ -60,40 +61,34 @@ export default {
key: 'severity',
label: s__('AlertManagement|Severity'),
tdClass: `${tdClass} rounded-top text-capitalize`,
- thClass,
+ thClass: `${thClass} gl-w-eighth`,
sortable: true,
},
{
key: 'startedAt',
label: s__('AlertManagement|Start time'),
- thClass: `${thClass} js-started-at`,
- tdClass,
- sortable: true,
- },
- {
- key: 'endedAt',
- label: s__('AlertManagement|End time'),
- thClass,
+ thClass: `${thClass} js-started-at w-15p`,
tdClass,
sortable: true,
},
{
key: 'title',
label: s__('AlertManagement|Alert'),
- thClass: `${thClass} w-30p gl-pointer-events-none`,
+ thClass: `${thClass} gl-pointer-events-none`,
tdClass,
sortable: false,
},
{
key: 'eventCount',
label: s__('AlertManagement|Events'),
- thClass: `${thClass} text-right gl-pr-9 w-3rem`,
+ thClass: `${thClass} text-right gl-w-12`,
tdClass: `${tdClass} text-md-right`,
sortable: true,
},
{
key: 'assignees',
label: s__('AlertManagement|Assignees'),
+ thClass: 'gl-w-eighth',
tdClass,
},
{
@@ -377,6 +372,7 @@ export default {
:sort-desc.sync="sortDesc"
:sort-by.sync="sortBy"
sort-icon-left
+ fixed
@row-clicked="navigateToAlertDetails"
@sort-changed="fetchSortedData"
>
@@ -399,16 +395,12 @@ export default {
-
-
-
-
{{ item.eventCount }}
- {{ item.title }}
+ {{ item.title }}
diff --git a/app/assets/javascripts/alert_management/graphql/fragments/detail_item.fragment.graphql b/app/assets/javascripts/alert_management/graphql/fragments/detail_item.fragment.graphql
index cbe7e169be3a586f7ce8651ee96551747e149380..83ce79c986bc2138dd728017038ab1a1ae17acab 100644
--- a/app/assets/javascripts/alert_management/graphql/fragments/detail_item.fragment.graphql
+++ b/app/assets/javascripts/alert_management/graphql/fragments/detail_item.fragment.graphql
@@ -8,6 +8,7 @@ fragment AlertDetailItem on AlertManagementAlert {
service
description
updatedAt
+ endedAt
details
notes {
nodes {
diff --git a/app/assets/javascripts/alert_management/graphql/fragments/list_item.fragment.graphql b/app/assets/javascripts/alert_management/graphql/fragments/list_item.fragment.graphql
index 746c4435f384bc5697ab9d7da737ef140088de5d..c37f29c74fce05173b1cfffd121481dfe38d375e 100644
--- a/app/assets/javascripts/alert_management/graphql/fragments/list_item.fragment.graphql
+++ b/app/assets/javascripts/alert_management/graphql/fragments/list_item.fragment.graphql
@@ -4,7 +4,6 @@ fragment AlertListItem on AlertManagementAlert {
severity
status
startedAt
- endedAt
eventCount
issueIid
assignees {
diff --git a/app/assets/javascripts/behaviors/shortcuts/shortcuts_toggle.vue b/app/assets/javascripts/behaviors/shortcuts/shortcuts_toggle.vue
index a53b1b06be94175f718c7a02442898be775eb206..8418c0f66ac942368bb802da8b711dd40e248e00 100644
--- a/app/assets/javascripts/behaviors/shortcuts/shortcuts_toggle.vue
+++ b/app/assets/javascripts/behaviors/shortcuts/shortcuts_toggle.vue
@@ -1,11 +1,10 @@
-
diff --git a/ee/app/assets/javascripts/geo_node_form/components/geo_node_form_selective_sync.vue b/ee/app/assets/javascripts/geo_node_form/components/geo_node_form_selective_sync.vue
index 212b34820acf12a93e5183a19c22f43ae5c688ff..b97b876935e83e417e0dc22a4be29dd401709fe4 100644
--- a/ee/app/assets/javascripts/geo_node_form/components/geo_node_form_selective_sync.vue
+++ b/ee/app/assets/javascripts/geo_node_form/components/geo_node_form_selective_sync.vue
@@ -1,7 +1,8 @@
+
{{ __('Selective synchronization') }}
+
+ {{
+ __(
+ 'Set what should be replicated by choosing specific projects or groups by the secondary node.',
+ )
+ }}
+ {{ __('More information') }}
+
+
+
+
+
+ {{ content }}
+
+
+
+ {{
+ __('Allow this secondary node to replicate content on Object Storage')
+ }}
+
diff --git a/ee/app/assets/javascripts/geo_node_form/constants.js b/ee/app/assets/javascripts/geo_node_form/constants.js
index 659f42a9266ea6a0ec945a56aaa9c5784eb8af02..4716841cb52672e2412c37438afa513135ba13a4 100644
--- a/ee/app/assets/javascripts/geo_node_form/constants.js
+++ b/ee/app/assets/javascripts/geo_node_form/constants.js
@@ -9,3 +9,18 @@ export const VALIDATION_FIELD_KEYS = {
VERIFICATION_MAX_CAPACITY: 'verificationMaxCapacity',
MINIMUM_REVERIFICATION_INTERVAL: 'minimumReverificationInterval',
};
+
+export const NODE_NAME_MORE_INFO =
+ 'https://docs.gitlab.com/ee/administration/geo/replication/configuration.html#step-3-add-the-secondary-node';
+
+export const SELECTIVE_SYNC_MORE_INFO =
+ 'https://docs.gitlab.com/ee/administration/geo/replication/configuration.html#selective-synchronization';
+
+export const OBJECT_STORAGE_MORE_INFO =
+ 'https://docs.gitlab.com/ee/administration/geo/replication/object_storage.html';
+
+export const REVERIFICATION_MORE_INFO =
+ 'https://docs.gitlab.com/ee/administration/geo/disaster_recovery/background_verification.html#repository-re-verification';
+
+export const BACKFILL_MORE_INFO =
+ 'https://docs.gitlab.com/ee/user/admin_area/geo_nodes.html#geo-backfill';
diff --git a/ee/app/assets/javascripts/geo_nodes/components/geo_node_actions.vue b/ee/app/assets/javascripts/geo_nodes/components/geo_node_actions.vue
index 1acb8d50ce926d91a20c3816a27d4d8fbfbc63b8..eaddfea37baffa8d0ac062fca2ecea44db2739cd 100644
--- a/ee/app/assets/javascripts/geo_nodes/components/geo_node_actions.vue
+++ b/ee/app/assets/javascripts/geo_nodes/components/geo_node_actions.vue
@@ -36,15 +36,6 @@ export default {
},
},
computed: {
- isToggleAllowed() {
- return !this.node.primary && this.nodeEditAllowed;
- },
- nodeToggleLabel() {
- return this.node.enabled ? __('Pause replication') : __('Resume replication');
- },
- nodeToggleIcon() {
- return this.node.enabled ? 'pause' : 'play';
- },
isSecondaryNode() {
return !this.node.primary;
},
@@ -113,18 +104,6 @@ export default {
>
{{ s__('Repair authentication') }}
-
-
- {{ nodeToggleLabel }}
-
{{ __('Edit') }}
diff --git a/ee/app/assets/javascripts/geo_nodes/components/geo_node_replication_status.vue b/ee/app/assets/javascripts/geo_nodes/components/geo_node_replication_status.vue
new file mode 100644
index 0000000000000000000000000000000000000000..fd79d8aa6a0daf4a9ee33ba99203909b01220c70
--- /dev/null
+++ b/ee/app/assets/javascripts/geo_nodes/components/geo_node_replication_status.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
{{ s__('GeoNodes|Replication status') }}
+
+
+
+ {{ nodeReplicationStatusText }}
+
+
+
+ {{ __('Geo nodes are paused using a command run on the node') }}
+ {{ __('More Information') }}
+
+
+
+
diff --git a/ee/app/assets/javascripts/geo_nodes/components/node_detail_sections/node_details_section_main.vue b/ee/app/assets/javascripts/geo_nodes/components/node_detail_sections/node_details_section_main.vue
index 6ea304e000544c174cb72eefcbd5fa19e1b5f1f7..f0e23ed5e432195ebbce5da1d1b7fe387d0af719 100644
--- a/ee/app/assets/javascripts/geo_nodes/components/node_detail_sections/node_details_section_main.vue
+++ b/ee/app/assets/javascripts/geo_nodes/components/node_detail_sections/node_details_section_main.vue
@@ -3,6 +3,7 @@ import { GlLink, GlIcon } from '@gitlab/ui';
import { __, sprintf } from '~/locale';
import GeoNodeHealthStatus from '../geo_node_health_status.vue';
+import GeoNodeReplicationStatus from '../geo_node_replication_status.vue';
import GeoNodeActions from '../geo_node_actions.vue';
export default {
@@ -11,6 +12,7 @@ export default {
GlIcon,
GeoNodeHealthStatus,
GeoNodeActions,
+ GeoNodeReplicationStatus,
},
props: {
node: {
@@ -107,6 +109,9 @@ export default {
:status="nodeHealthStatus"
:status-check-timestamp="nodeDetails.statusCheckTimestamp"
/>
+
+
+
diff --git a/ee/app/assets/javascripts/geo_nodes/constants.js b/ee/app/assets/javascripts/geo_nodes/constants.js
index 73c474e923abf2da4e4fadf4e98302817e6bece3..0a0ac019f3474250be2a15bef30d55af0b81b9fb 100644
--- a/ee/app/assets/javascripts/geo_nodes/constants.js
+++ b/ee/app/assets/javascripts/geo_nodes/constants.js
@@ -31,6 +31,16 @@ export const HEALTH_STATUS_CLASS = {
offline: 'text-secondary-800 bg-secondary-100',
};
+export const REPLICATION_STATUS_CLASS = {
+ enabled: 'gl-text-green-600 gl-bg-green-100',
+ disabled: 'gl-text-orange-600 gl-bg-orange-100',
+};
+
+export const REPLICATION_STATUS_ICON = {
+ enabled: 'play',
+ disabled: 'pause',
+};
+
export const TIME_DIFF = {
FIVE_MINS: 300,
HOUR: 3600,
@@ -44,6 +54,9 @@ export const HELP_INFO_URL =
export const REPLICATION_HELP_URL =
'https://docs.gitlab.com/ee/administration/geo/replication/datatypes.html#limitations-on-replicationverification';
+export const REPLICATION_PAUSE_URL =
+ 'https://docs.gitlab.com/ee/administration/geo/replication/#pausing-and-resuming-replication';
+
export const HELP_NODE_HEALTH_URL =
'https://docs.gitlab.com/ee/administration/geo/replication/troubleshooting.html#check-the-health-of-the-secondary-node';
diff --git a/ee/app/assets/javascripts/geo_settings/components/app.vue b/ee/app/assets/javascripts/geo_settings/components/app.vue
index d5757285a7ac8bfc5ab7a60b328c32735a6e82c9..0c9558f4ca19d7a624373e0938a33020cc5345f4 100644
--- a/ee/app/assets/javascripts/geo_settings/components/app.vue
+++ b/ee/app/assets/javascripts/geo_settings/components/app.vue
@@ -1,11 +1,23 @@
@@ -19,6 +31,7 @@ export default {
)
}}
-
+
+
diff --git a/ee/app/assets/javascripts/geo_settings/components/geo_settings_form.vue b/ee/app/assets/javascripts/geo_settings/components/geo_settings_form.vue
index 0a2c2d7970c72477eddcf3777bcc239c07a35f73..c0b94f6842774b6d83d9b87f9f984517b76bd867 100644
--- a/ee/app/assets/javascripts/geo_settings/components/geo_settings_form.vue
+++ b/ee/app/assets/javascripts/geo_settings/components/geo_settings_form.vue
@@ -1,7 +1,7 @@