diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/assets/javascripts/monitoring/pages/panel_new_page.vue | 33 | ||||
-rw-r--r-- | app/assets/javascripts/monitoring/router/constants.js | 9 | ||||
-rw-r--r-- | app/assets/javascripts/monitoring/router/routes.js | 13 | ||||
-rw-r--r-- | app/assets/javascripts/sidebar/components/lock/issuable_lock_form.vue (renamed from app/assets/javascripts/sidebar/components/lock/lock_issue_sidebar.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/sidebar/mount_sidebar.js | 4 | ||||
-rw-r--r-- | app/assets/javascripts/vue_shared/components/expand_button.vue | 20 | ||||
-rw-r--r-- | app/controllers/projects/metrics_dashboard_controller.rb | 4 | ||||
-rw-r--r-- | app/services/alert_management/process_prometheus_alert_service.rb | 22 | ||||
-rw-r--r-- | app/workers/incident_management/process_alert_worker.rb | 6 |
9 files changed, 82 insertions, 29 deletions
diff --git a/app/assets/javascripts/monitoring/pages/panel_new_page.vue b/app/assets/javascripts/monitoring/pages/panel_new_page.vue new file mode 100644 index 00000000000..d2ca0bf02d4 --- /dev/null +++ b/app/assets/javascripts/monitoring/pages/panel_new_page.vue @@ -0,0 +1,33 @@ +<script> +import { GlButton, GlTooltipDirective } from '@gitlab/ui'; +import { s__ } from '~/locale'; +import routes from '../router/constants'; + +export default { + components: { + GlButton, + }, + directives: { + GlTooltip: GlTooltipDirective, + }, + i18n: { + backToDashboard: s__('Metrics|Back to dashboard'), + }, + routes, +}; +</script> +<template> + <div class="gl-display-flex gl-align-items-baseline"> + <gl-button + v-gl-tooltip + icon="go-back" + :to="{ name: $options.routes.DASHBOARD_PAGE, params: { dashboard: $route.params.dashboard } }" + :aria-label="$options.i18n.backToDashboard" + :title="$options.i18n.backToDashboard" + class="gl-mr-5" + /> + <h1 class="gl-mt-5 gl-font-size-h1">{{ s__('Metrics|Add panel') }}</h1> + + <!-- TODO: Add components. See https://gitlab.com/groups/gitlab-org/-/epics/2882 --> + </div> +</template> diff --git a/app/assets/javascripts/monitoring/router/constants.js b/app/assets/javascripts/monitoring/router/constants.js index fedfebe33e9..7834c14a65d 100644 --- a/app/assets/javascripts/monitoring/router/constants.js +++ b/app/assets/javascripts/monitoring/router/constants.js @@ -1,4 +1,7 @@ -export const BASE_DASHBOARD_PAGE = 'dashboard'; -export const CUSTOM_DASHBOARD_PAGE = 'custom_dashboard'; +export const DASHBOARD_PAGE = 'dashboard'; +export const PANEL_NEW_PAGE = 'panel_new'; -export default {}; +export default { + DASHBOARD_PAGE, + PANEL_NEW_PAGE, +}; diff --git a/app/assets/javascripts/monitoring/router/routes.js b/app/assets/javascripts/monitoring/router/routes.js index 4b82791178a..8092a5b7c0b 100644 --- a/app/assets/javascripts/monitoring/router/routes.js +++ b/app/assets/javascripts/monitoring/router/routes.js @@ -1,6 +1,7 @@ import DashboardPage from '../pages/dashboard_page.vue'; +import PanelNewPage from '../pages/panel_new_page.vue'; -import { BASE_DASHBOARD_PAGE, CUSTOM_DASHBOARD_PAGE } from './constants'; +import { DASHBOARD_PAGE, PANEL_NEW_PAGE } from './constants'; /** * Because the cluster health page uses the dashboard @@ -11,13 +12,13 @@ import { BASE_DASHBOARD_PAGE, CUSTOM_DASHBOARD_PAGE } from './constants'; */ export default [ { - name: BASE_DASHBOARD_PAGE, - path: '/', - component: DashboardPage, + name: PANEL_NEW_PAGE, + path: '/:dashboard(.*)?/panel/new', + component: PanelNewPage, }, { - name: CUSTOM_DASHBOARD_PAGE, - path: '/:dashboard(.*)', + name: DASHBOARD_PAGE, + path: '/:dashboard(.*)?', component: DashboardPage, }, ]; diff --git a/app/assets/javascripts/sidebar/components/lock/lock_issue_sidebar.vue b/app/assets/javascripts/sidebar/components/lock/issuable_lock_form.vue index 204725b29b0..204725b29b0 100644 --- a/app/assets/javascripts/sidebar/components/lock/lock_issue_sidebar.vue +++ b/app/assets/javascripts/sidebar/components/lock/issuable_lock_form.vue diff --git a/app/assets/javascripts/sidebar/mount_sidebar.js b/app/assets/javascripts/sidebar/mount_sidebar.js index c1a20bc4dcb..015219200db 100644 --- a/app/assets/javascripts/sidebar/mount_sidebar.js +++ b/app/assets/javascripts/sidebar/mount_sidebar.js @@ -5,7 +5,7 @@ import SidebarTimeTracking from './components/time_tracking/sidebar_time_trackin import SidebarAssignees from './components/assignees/sidebar_assignees.vue'; import ConfidentialIssueSidebar from './components/confidential/confidential_issue_sidebar.vue'; import SidebarMoveIssue from './lib/sidebar_move_issue'; -import LockIssueSidebar from './components/lock/lock_issue_sidebar.vue'; +import IssuableLockForm from './components/lock/issuable_lock_form.vue'; import sidebarParticipants from './components/participants/sidebar_participants.vue'; import sidebarSubscriptions from './components/subscriptions/sidebar_subscriptions.vue'; import Translate from '../vue_shared/translate'; @@ -95,7 +95,7 @@ function mountLockComponent() { fullPath, }, render: createElement => - createElement(LockIssueSidebar, { + createElement(IssuableLockForm, { props: { isEditable: initialData.is_editable, }, diff --git a/app/assets/javascripts/vue_shared/components/expand_button.vue b/app/assets/javascripts/vue_shared/components/expand_button.vue index 1f904cd3c6c..546ee56355f 100644 --- a/app/assets/javascripts/vue_shared/components/expand_button.vue +++ b/app/assets/javascripts/vue_shared/components/expand_button.vue @@ -1,7 +1,6 @@ <script> -import { GlDeprecatedButton } from '@gitlab/ui'; +import { GlButton } from '@gitlab/ui'; import { __ } from '~/locale'; -import Icon from '~/vue_shared/components/icon.vue'; /** * Port of detail_behavior expand button. @@ -16,8 +15,7 @@ import Icon from '~/vue_shared/components/icon.vue'; export default { name: 'ExpandButton', components: { - GlDeprecatedButton, - Icon, + GlButton, }, data() { return { @@ -41,25 +39,23 @@ export default { </script> <template> <span> - <gl-deprecated-button + <gl-button v-show="isCollapsed" :aria-label="ariaLabel" type="button" class="js-text-expander-prepend text-expander btn-blank" + icon="ellipsis_h" @click="onClick" - > - <icon :size="12" name="ellipsis_h" /> - </gl-deprecated-button> + /> <span v-if="isCollapsed"> <slot name="short"></slot> </span> <span v-if="!isCollapsed"> <slot name="expanded"></slot> </span> - <gl-deprecated-button + <gl-button v-show="!isCollapsed" :aria-label="ariaLabel" type="button" class="js-text-expander-append text-expander btn-blank" + icon="ellipsis_h" @click="onClick" - > - <icon :size="12" name="ellipsis_h" /> - </gl-deprecated-button> + /> </span> </template> diff --git a/app/controllers/projects/metrics_dashboard_controller.rb b/app/controllers/projects/metrics_dashboard_controller.rb index d13735f3e79..ff60d069061 100644 --- a/app/controllers/projects/metrics_dashboard_controller.rb +++ b/app/controllers/projects/metrics_dashboard_controller.rb @@ -14,6 +14,10 @@ module Projects end def show + if params[:page].present? && !Feature.enabled?(:metrics_dashboard_new_panel_page, project) + return render_404 + end + if environment render 'projects/environments/metrics' else diff --git a/app/services/alert_management/process_prometheus_alert_service.rb b/app/services/alert_management/process_prometheus_alert_service.rb index 573d3914c05..c233ea4e2e5 100644 --- a/app/services/alert_management/process_prometheus_alert_service.rb +++ b/app/services/alert_management/process_prometheus_alert_service.rb @@ -34,6 +34,8 @@ module AlertManagement else create_alert_management_alert end + + process_incident_alert end def reset_alert_management_alert_status @@ -47,16 +49,17 @@ module AlertManagement end def create_alert_management_alert - am_alert = AlertManagement::Alert.new(am_alert_params.merge(ended_at: nil)) - if am_alert.save - am_alert.execute_services + new_alert = AlertManagement::Alert.new(am_alert_params.merge(ended_at: nil)) + if new_alert.save + new_alert.execute_services + @am_alert = new_alert return end logger.warn( message: 'Unable to create AlertManagement::Alert', project_id: project.id, - alert_errors: am_alert.errors.messages + alert_errors: new_alert.errors.messages ) end @@ -89,12 +92,21 @@ module AlertManagement SystemNoteService.auto_resolve_prometheus_alert(issue, project, User.alert_bot) if issue.reset.closed? end + def process_incident_alert + return unless am_alert + return if am_alert.issue + + IncidentManagement::ProcessAlertWorker.perform_async(nil, nil, am_alert.id) + end + def logger @logger ||= Gitlab::AppLogger end def am_alert - @am_alert ||= AlertManagement::Alert.not_resolved.for_fingerprint(project, gitlab_fingerprint).first + strong_memoize(:am_alert) do + AlertManagement::Alert.not_resolved.for_fingerprint(project, gitlab_fingerprint).first + end end def bad_request diff --git a/app/workers/incident_management/process_alert_worker.rb b/app/workers/incident_management/process_alert_worker.rb index 9a8cc93c660..26c86a3aa2b 100644 --- a/app/workers/incident_management/process_alert_worker.rb +++ b/app/workers/incident_management/process_alert_worker.rb @@ -30,7 +30,11 @@ module IncidentManagement end def parsed_payload(alert) - Gitlab::Alerting::NotificationPayloadParser.call(alert.payload.to_h, alert.project) + if alert.prometheus? + alert.payload + else + Gitlab::Alerting::NotificationPayloadParser.call(alert.payload.to_h, alert.project) + end end def create_issue_for(alert) |