Commit 67a0b331 authored by Stan Hu's avatar Stan Hu

Merge branch '222253-save-prometheus-alert-on-alert' into 'master'

Save Prometheus Alert and Environment on Alert

See merge request gitlab-org/gitlab!35105
parents 74448448 b1d1c02d
...@@ -34,7 +34,9 @@ module Gitlab ...@@ -34,7 +34,9 @@ module Gitlab
payload: parsed_alert.payload, payload: parsed_alert.payload,
started_at: parsed_alert.starts_at, started_at: parsed_alert.starts_at,
ended_at: parsed_alert.ends_at, ended_at: parsed_alert.ends_at,
fingerprint: parsed_alert.gitlab_fingerprint fingerprint: parsed_alert.gitlab_fingerprint,
environment: parsed_alert.environment,
prometheus_alert: parsed_alert.gitlab_alert
} }
end end
end end
......
...@@ -88,7 +88,9 @@ RSpec.describe Gitlab::AlertManagement::AlertParams do ...@@ -88,7 +88,9 @@ RSpec.describe Gitlab::AlertManagement::AlertParams do
payload: payload, payload: payload,
started_at: parsed_alert.starts_at, started_at: parsed_alert.starts_at,
ended_at: parsed_alert.ends_at, ended_at: parsed_alert.ends_at,
fingerprint: parsed_alert.gitlab_fingerprint fingerprint: parsed_alert.gitlab_fingerprint,
environment: parsed_alert.environment,
prometheus_alert: parsed_alert.gitlab_alert
) )
end end
end end
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
require 'spec_helper' require 'spec_helper'
RSpec.describe AlertManagement::ProcessPrometheusAlertService do RSpec.describe AlertManagement::ProcessPrometheusAlertService do
let_it_be(:project) { create(:project) } let_it_be(:project) { create(:project, :repository) }
before do before do
allow(ProjectServiceWorker).to receive(:perform_async) allow(ProjectServiceWorker).to receive(:perform_async)
...@@ -35,9 +35,9 @@ RSpec.describe AlertManagement::ProcessPrometheusAlertService do ...@@ -35,9 +35,9 @@ RSpec.describe AlertManagement::ProcessPrometheusAlertService do
} }
end end
context 'when Prometheus alert status is firing' do let(:status) { 'firing' }
let(:status) { 'firing' }
context 'when Prometheus alert status is firing' do
context 'when alert with the same fingerprint already exists' do context 'when alert with the same fingerprint already exists' do
let!(:alert) { create(:alert_management_alert, :resolved, project: project, fingerprint: parsed_alert.gitlab_fingerprint) } let!(:alert) { create(:alert_management_alert, :resolved, project: project, fingerprint: parsed_alert.gitlab_fingerprint) }
...@@ -144,6 +144,33 @@ RSpec.describe AlertManagement::ProcessPrometheusAlertService do ...@@ -144,6 +144,33 @@ RSpec.describe AlertManagement::ProcessPrometheusAlertService do
it { is_expected.to be_success } it { is_expected.to be_success }
end end
context 'environment given' do
let(:environment) { create(:environment, project: project) }
it 'sets the environment' do
payload['labels']['gitlab_environment_name'] = environment.name
execute
alert = project.alert_management_alerts.last
expect(alert.environment).to eq(environment)
end
end
context 'prometheus alert given' do
let(:prometheus_alert) { create(:prometheus_alert, project: project) }
it 'sets the prometheus alert and environment' do
payload['labels']['gitlab_alert_id'] = prometheus_alert.prometheus_metric_id
execute
alert = project.alert_management_alerts.last
expect(alert.prometheus_alert).to eq(prometheus_alert)
expect(alert.environment).to eq(prometheus_alert.environment)
end
end
end end
context 'when alert payload is invalid' do context 'when alert payload is invalid' do
......
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