1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
# frozen_string_literal: true
module Types
module AlertManagement
class AlertType < BaseObject
graphql_name 'AlertManagementAlert'
description "Describes an alert from the project's Alert Management"
present_using ::AlertManagement::AlertPresenter
implements(Types::Notes::NoteableInterface)
authorize :read_alert_management_alert
field :iid,
GraphQL::Types::ID,
null: false,
description: 'Internal ID of the alert.'
field :issue_iid,
GraphQL::Types::ID,
null: true,
deprecated: { reason: 'Use issue field', milestone: '13.10' },
description: 'Internal ID of the GitLab issue attached to the alert.'
field :issue,
Types::IssueType,
null: true,
description: 'Issue attached to the alert.'
field :title,
GraphQL::Types::String,
null: true,
description: 'Title of the alert.'
field :description,
GraphQL::Types::String,
null: true,
description: 'Description of the alert.'
field :severity,
AlertManagement::SeverityEnum,
null: true,
description: 'Severity of the alert.'
field :status,
AlertManagement::StatusEnum,
null: true,
description: 'Status of the alert.',
method: :status_name
field :service,
GraphQL::Types::String,
null: true,
description: 'Service the alert came from.'
field :monitoring_tool,
GraphQL::Types::String,
null: true,
description: 'Monitoring tool the alert came from.'
field :hosts,
[GraphQL::Types::String],
null: true,
description: 'List of hosts the alert came from.'
field :started_at,
Types::TimeType,
null: true,
description: 'Timestamp the alert was raised.'
field :ended_at,
Types::TimeType,
null: true,
description: 'Timestamp the alert ended.'
field :environment,
Types::EnvironmentType,
null: true,
description: 'Environment for the alert.'
field :event_count,
GraphQL::Types::Int,
null: true,
description: 'Number of events of this alert.',
method: :events
field :details, # rubocop:disable Graphql/JSONType
GraphQL::Types::JSON,
null: true,
description: 'Alert details.'
field :created_at,
Types::TimeType,
null: true,
description: 'Timestamp the alert was created.'
field :updated_at,
Types::TimeType,
null: true,
description: 'Timestamp the alert was last updated.'
field :assignees,
Types::UserType.connection_type,
null: true,
description: 'Assignees of the alert.'
field :metrics_dashboard_url,
GraphQL::Types::String,
null: true,
description: 'URL for metrics embed for the alert.'
field :runbook,
GraphQL::Types::String,
null: true,
description: 'Runbook for the alert as defined in alert details.'
field :todos, description: 'To-do items of the current user for the alert.', resolver: Resolvers::TodoResolver do
extension(::Gitlab::Graphql::TodosProjectPermissionPreloader::FieldExtension)
end
field :details_url,
GraphQL::Types::String,
null: false,
description: 'The URL of the alert detail page.'
field :prometheus_alert,
Types::PrometheusAlertType,
null: true,
description: 'The alert condition for Prometheus.'
def notes
object.ordered_notes
end
end
end
end
|