diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-04-14 15:09:44 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-04-14 15:09:44 +0000 |
commit | 874ead9c3a50de4c4ca4551eaf5b7eb976d26b50 (patch) | |
tree | 637ee9f2da5e251bc08ebf3e972209d51966bf7c /app/assets/javascripts/monitoring | |
parent | 2e4c4055181eec9186458dd5dd3219c937032ec7 (diff) | |
download | gitlab-ce-874ead9c3a50de4c4ca4551eaf5b7eb976d26b50.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/monitoring')
8 files changed, 87 insertions, 2 deletions
diff --git a/app/assets/javascripts/monitoring/components/charts/time_series.vue b/app/assets/javascripts/monitoring/components/charts/time_series.vue index 24aa8480ce4..9041b01088c 100644 --- a/app/assets/javascripts/monitoring/components/charts/time_series.vue +++ b/app/assets/javascripts/monitoring/components/charts/time_series.vue @@ -55,6 +55,11 @@ export default { required: false, default: () => [], }, + annotations: { + type: Array, + required: false, + default: () => [], + }, projectPath: { type: String, required: false, @@ -143,6 +148,7 @@ export default { return (this.option.series || []).concat( generateAnnotationsSeries({ deployments: this.recentDeployments, + annotations: this.annotations, }), ); }, diff --git a/app/assets/javascripts/monitoring/components/dashboard.vue b/app/assets/javascripts/monitoring/components/dashboard.vue index 15b17f01daf..4586ce70ad6 100644 --- a/app/assets/javascripts/monitoring/components/dashboard.vue +++ b/app/assets/javascripts/monitoring/components/dashboard.vue @@ -213,7 +213,6 @@ export default { 'dashboard', 'emptyState', 'showEmptyState', - 'deploymentData', 'useDashboardEndpoint', 'allDashboards', 'additionalPanelTypesEnabled', diff --git a/app/assets/javascripts/monitoring/components/panel_type.vue b/app/assets/javascripts/monitoring/components/panel_type.vue index d1394bca447..676fc0cca64 100644 --- a/app/assets/javascripts/monitoring/components/panel_type.vue +++ b/app/assets/javascripts/monitoring/components/panel_type.vue @@ -89,6 +89,9 @@ export default { deploymentData(state) { return state[this.namespace].deploymentData; }, + annotations(state) { + return state[this.namespace].annotations; + }, projectPath(state) { return state[this.namespace].projectPath; }, @@ -310,6 +313,7 @@ export default { ref="timeChart" :graph-data="graphData" :deployment-data="deploymentData" + :annotations="annotations" :project-path="projectPath" :thresholds="getGraphAlertValues(graphData.metrics)" :group-id="groupId" diff --git a/app/assets/javascripts/monitoring/queries/getAnnotations.query.graphql b/app/assets/javascripts/monitoring/queries/getAnnotations.query.graphql new file mode 100644 index 00000000000..e2edaa707b2 --- /dev/null +++ b/app/assets/javascripts/monitoring/queries/getAnnotations.query.graphql @@ -0,0 +1,13 @@ +query getAnnotations($projectPath: ID!) { + environment(name: $environmentName) { + metricDashboard(id: $dashboardId) { + annotations: nodes { + id + description + from + to + panelId + } + } + } +} diff --git a/app/assets/javascripts/monitoring/stores/actions.js b/app/assets/javascripts/monitoring/stores/actions.js index 06b99f572e7..5b2bd1f1493 100644 --- a/app/assets/javascripts/monitoring/stores/actions.js +++ b/app/assets/javascripts/monitoring/stores/actions.js @@ -6,8 +6,13 @@ import { convertToFixedRange } from '~/lib/utils/datetime_range'; import { gqClient, parseEnvironmentsResponse, removeLeadingSlash } from './utils'; import trackDashboardLoad from '../monitoring_tracking_helper'; import getEnvironments from '../queries/getEnvironments.query.graphql'; +import getAnnotations from '../queries/getAnnotations.query.graphql'; import statusCodes from '../../lib/utils/http_status'; -import { backOff, convertObjectPropsToCamelCase } from '../../lib/utils/common_utils'; +import { + backOff, + convertObjectPropsToCamelCase, + isFeatureFlagEnabled, +} from '../../lib/utils/common_utils'; import { s__, sprintf } from '../../locale'; import { PROMETHEUS_TIMEOUT, ENVIRONMENT_AVAILABLE_STATE } from '../constants'; @@ -80,6 +85,14 @@ export const setShowErrorBanner = ({ commit }, enabled) => { export const fetchData = ({ dispatch }) => { dispatch('fetchEnvironmentsData'); dispatch('fetchDashboard'); + /** + * Annotations data is not yet fetched. This will be + * ready after the BE piece is implemented. + * https://gitlab.com/gitlab-org/gitlab/-/issues/211330 + */ + if (isFeatureFlagEnabled('metrics_dashboard_annotations')) { + dispatch('fetchAnnotations'); + } }; // Metrics dashboard @@ -269,6 +282,40 @@ export const receiveEnvironmentsDataFailure = ({ commit }) => { commit(types.RECEIVE_ENVIRONMENTS_DATA_FAILURE); }; +export const fetchAnnotations = ({ state, dispatch }) => { + dispatch('requestAnnotations'); + + return gqClient + .mutate({ + mutation: getAnnotations, + variables: { + projectPath: removeLeadingSlash(state.projectPath), + dashboardId: state.currentDashboard, + environmentName: state.currentEnvironmentName, + }, + }) + .then(resp => resp.data?.project?.environment?.metricDashboard?.annotations) + .then(annotations => { + if (!annotations) { + createFlash(s__('Metrics|There was an error fetching annotations. Please try again.')); + } + + dispatch('receiveAnnotationsSuccess', annotations); + }) + .catch(err => { + Sentry.captureException(err); + dispatch('receiveAnnotationsFailure'); + createFlash(s__('Metrics|There was an error getting annotations information.')); + }); +}; + +// While this commit does not update the state it will +// eventually be useful to show a loading state +export const requestAnnotations = ({ commit }) => commit(types.REQUEST_ANNOTATIONS); +export const receiveAnnotationsSuccess = ({ commit }, data) => + commit(types.RECEIVE_ANNOTATIONS_SUCCESS, data); +export const receiveAnnotationsFailure = ({ commit }) => commit(types.RECEIVE_ANNOTATIONS_FAILURE); + // Dashboard manipulation /** diff --git a/app/assets/javascripts/monitoring/stores/mutation_types.js b/app/assets/javascripts/monitoring/stores/mutation_types.js index 9a3489d53d7..2f9955da1b1 100644 --- a/app/assets/javascripts/monitoring/stores/mutation_types.js +++ b/app/assets/javascripts/monitoring/stores/mutation_types.js @@ -3,6 +3,11 @@ export const REQUEST_METRICS_DASHBOARD = 'REQUEST_METRICS_DASHBOARD'; export const RECEIVE_METRICS_DASHBOARD_SUCCESS = 'RECEIVE_METRICS_DASHBOARD_SUCCESS'; export const RECEIVE_METRICS_DASHBOARD_FAILURE = 'RECEIVE_METRICS_DASHBOARD_FAILURE'; +// Annotations +export const REQUEST_ANNOTATIONS = 'REQUEST_ANNOTATIONS'; +export const RECEIVE_ANNOTATIONS_SUCCESS = 'RECEIVE_ANNOTATIONS_SUCCESS'; +export const RECEIVE_ANNOTATIONS_FAILURE = 'RECEIVE_ANNOTATIONS_FAILURE'; + // Git project deployments export const REQUEST_DEPLOYMENTS_DATA = 'REQUEST_DEPLOYMENTS_DATA'; export const RECEIVE_DEPLOYMENTS_DATA_SUCCESS = 'RECEIVE_DEPLOYMENTS_DATA_SUCCESS'; diff --git a/app/assets/javascripts/monitoring/stores/mutations.js b/app/assets/javascripts/monitoring/stores/mutations.js index 38c1524d904..aa31b6642d7 100644 --- a/app/assets/javascripts/monitoring/stores/mutations.js +++ b/app/assets/javascripts/monitoring/stores/mutations.js @@ -93,6 +93,16 @@ export default { }, /** + * Annotations + */ + [types.RECEIVE_ANNOTATIONS_SUCCESS](state, annotations) { + state.annotations = annotations; + }, + [types.RECEIVE_ANNOTATIONS_FAILURE](state) { + state.annotations = []; + }, + + /** * Individual panel/metric results */ [types.REQUEST_METRIC_RESULT](state, { metricId }) { diff --git a/app/assets/javascripts/monitoring/stores/state.js b/app/assets/javascripts/monitoring/stores/state.js index 2b1907e8df7..e60510e747b 100644 --- a/app/assets/javascripts/monitoring/stores/state.js +++ b/app/assets/javascripts/monitoring/stores/state.js @@ -20,6 +20,7 @@ export default () => ({ allDashboards: [], // Other project data + annotations: [], deploymentData: [], environments: [], environmentsSearchTerm: '', |