@incident-io/pulumi 0.1.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +7 -0
- package/README.md +69 -0
- package/alertAttribute.d.ts +230 -0
- package/alertAttribute.d.ts.map +1 -0
- package/alertAttribute.js +219 -0
- package/alertAttribute.js.map +1 -0
- package/alertRoute.d.ts +511 -0
- package/alertRoute.d.ts.map +1 -0
- package/alertRoute.js +432 -0
- package/alertRoute.js.map +1 -0
- package/alertSource.d.ts +347 -0
- package/alertSource.d.ts.map +1 -0
- package/alertSource.js +241 -0
- package/alertSource.js.map +1 -0
- package/alertSourceAttribute.d.ts +180 -0
- package/alertSourceAttribute.d.ts.map +1 -0
- package/alertSourceAttribute.js +107 -0
- package/alertSourceAttribute.js.map +1 -0
- package/alertSourceAttributeBeta.d.ts +188 -0
- package/alertSourceAttributeBeta.d.ts.map +1 -0
- package/alertSourceAttributeBeta.js +115 -0
- package/alertSourceAttributeBeta.js.map +1 -0
- package/alertSourceBeta.d.ts +244 -0
- package/alertSourceBeta.d.ts.map +1 -0
- package/alertSourceBeta.js +138 -0
- package/alertSourceBeta.js.map +1 -0
- package/apiKey.d.ts +276 -0
- package/apiKey.d.ts.map +1 -0
- package/apiKey.js +211 -0
- package/apiKey.js.map +1 -0
- package/catalogEntries.d.ts +241 -0
- package/catalogEntries.d.ts.map +1 -0
- package/catalogEntries.js +242 -0
- package/catalogEntries.js.map +1 -0
- package/catalogEntry.d.ts +183 -0
- package/catalogEntry.d.ts.map +1 -0
- package/catalogEntry.js +159 -0
- package/catalogEntry.js.map +1 -0
- package/catalogType.d.ts +169 -0
- package/catalogType.d.ts.map +1 -0
- package/catalogType.js +132 -0
- package/catalogType.js.map +1 -0
- package/catalogTypeAttribute.d.ts +190 -0
- package/catalogTypeAttribute.d.ts.map +1 -0
- package/catalogTypeAttribute.js +153 -0
- package/catalogTypeAttribute.js.map +1 -0
- package/config/index.d.ts +2 -0
- package/config/index.d.ts.map +1 -0
- package/config/index.js +21 -0
- package/config/index.js.map +1 -0
- package/config/vars.d.ts +13 -0
- package/config/vars.d.ts.map +1 -0
- package/config/vars.js +49 -0
- package/config/vars.js.map +1 -0
- package/customField.d.ts +260 -0
- package/customField.d.ts.map +1 -0
- package/customField.js +226 -0
- package/customField.js.map +1 -0
- package/customFieldOption.d.ts +107 -0
- package/customFieldOption.d.ts.map +1 -0
- package/customFieldOption.js +116 -0
- package/customFieldOption.js.map +1 -0
- package/escalationPath.d.ts +257 -0
- package/escalationPath.d.ts.map +1 -0
- package/escalationPath.js +228 -0
- package/escalationPath.js.map +1 -0
- package/escalationPathBeta.d.ts +134 -0
- package/escalationPathBeta.d.ts.map +1 -0
- package/escalationPathBeta.js +105 -0
- package/escalationPathBeta.js.map +1 -0
- package/getAlertAttribute.d.ts +81 -0
- package/getAlertAttribute.d.ts.map +1 -0
- package/getAlertAttribute.js +75 -0
- package/getAlertAttribute.js.map +1 -0
- package/getAlertSource.d.ts +169 -0
- package/getAlertSource.d.ts.map +1 -0
- package/getAlertSource.js +103 -0
- package/getAlertSource.js.map +1 -0
- package/getAlertSourceAttribute.d.ts +131 -0
- package/getAlertSourceAttribute.d.ts.map +1 -0
- package/getAlertSourceAttribute.js +85 -0
- package/getAlertSourceAttribute.js.map +1 -0
- package/getAlertSourceAttributeBeta.d.ts +131 -0
- package/getAlertSourceAttributeBeta.d.ts.map +1 -0
- package/getAlertSourceAttributeBeta.js +85 -0
- package/getAlertSourceAttributeBeta.js.map +1 -0
- package/getApiKey.d.ts +167 -0
- package/getApiKey.d.ts.map +1 -0
- package/getApiKey.js +145 -0
- package/getApiKey.js.map +1 -0
- package/getCatalogEntry.d.ts +77 -0
- package/getCatalogEntry.d.ts.map +1 -0
- package/getCatalogEntry.js +59 -0
- package/getCatalogEntry.js.map +1 -0
- package/getCatalogType.d.ts +163 -0
- package/getCatalogType.d.ts.map +1 -0
- package/getCatalogType.js +135 -0
- package/getCatalogType.js.map +1 -0
- package/getCatalogTypeAttribute.d.ts +73 -0
- package/getCatalogTypeAttribute.d.ts.map +1 -0
- package/getCatalogTypeAttribute.js +53 -0
- package/getCatalogTypeAttribute.js.map +1 -0
- package/getCustomField.d.ts +67 -0
- package/getCustomField.d.ts.map +1 -0
- package/getCustomField.js +51 -0
- package/getCustomField.js.map +1 -0
- package/getCustomFieldOption.d.ts +65 -0
- package/getCustomFieldOption.d.ts.map +1 -0
- package/getCustomFieldOption.js +55 -0
- package/getCustomFieldOption.js.map +1 -0
- package/getEscalationPath.d.ts +100 -0
- package/getEscalationPath.d.ts.map +1 -0
- package/getEscalationPath.js +83 -0
- package/getEscalationPath.js.map +1 -0
- package/getEscalationPathBeta.d.ts +100 -0
- package/getEscalationPathBeta.d.ts.map +1 -0
- package/getEscalationPathBeta.js +83 -0
- package/getEscalationPathBeta.js.map +1 -0
- package/getIncidentRole.d.ts +111 -0
- package/getIncidentRole.d.ts.map +1 -0
- package/getIncidentRole.js +105 -0
- package/getIncidentRole.js.map +1 -0
- package/getIncidentTemplate.d.ts +98 -0
- package/getIncidentTemplate.d.ts.map +1 -0
- package/getIncidentTemplate.js +95 -0
- package/getIncidentTemplate.js.map +1 -0
- package/getIncidentTimestamp.d.ts +107 -0
- package/getIncidentTimestamp.d.ts.map +1 -0
- package/getIncidentTimestamp.js +109 -0
- package/getIncidentTimestamp.js.map +1 -0
- package/getIncidentType.d.ts +121 -0
- package/getIncidentType.d.ts.map +1 -0
- package/getIncidentType.js +107 -0
- package/getIncidentType.js.map +1 -0
- package/getIpAllowlist.d.ts +62 -0
- package/getIpAllowlist.d.ts.map +1 -0
- package/getIpAllowlist.js +77 -0
- package/getIpAllowlist.js.map +1 -0
- package/getPolicy.d.ts +97 -0
- package/getPolicy.d.ts.map +1 -0
- package/getPolicy.js +91 -0
- package/getPolicy.js.map +1 -0
- package/getRichText.d.ts +111 -0
- package/getRichText.d.ts.map +1 -0
- package/getRichText.js +107 -0
- package/getRichText.js.map +1 -0
- package/getSchedule.d.ts +89 -0
- package/getSchedule.d.ts.map +1 -0
- package/getSchedule.js +87 -0
- package/getSchedule.js.map +1 -0
- package/getScheduleBeta.d.ts +85 -0
- package/getScheduleBeta.d.ts.map +1 -0
- package/getScheduleBeta.js +83 -0
- package/getScheduleBeta.js.map +1 -0
- package/getScheduleReplica.d.ts +116 -0
- package/getScheduleReplica.d.ts.map +1 -0
- package/getScheduleReplica.js +79 -0
- package/getScheduleReplica.js.map +1 -0
- package/getScheduleRotation.d.ts +166 -0
- package/getScheduleRotation.d.ts.map +1 -0
- package/getScheduleRotation.js +127 -0
- package/getScheduleRotation.js.map +1 -0
- package/getScheduleRotationBeta.d.ts +122 -0
- package/getScheduleRotationBeta.d.ts.map +1 -0
- package/getScheduleRotationBeta.js +83 -0
- package/getScheduleRotationBeta.js.map +1 -0
- package/getScheduleSyncRule.d.ts +91 -0
- package/getScheduleSyncRule.d.ts.map +1 -0
- package/getScheduleSyncRule.js +79 -0
- package/getScheduleSyncRule.js.map +1 -0
- package/getScheduleSyncTarget.d.ts +100 -0
- package/getScheduleSyncTarget.d.ts.map +1 -0
- package/getScheduleSyncTarget.js +93 -0
- package/getScheduleSyncTarget.js.map +1 -0
- package/getSecret.d.ts +115 -0
- package/getSecret.d.ts.map +1 -0
- package/getSecret.js +97 -0
- package/getSecret.js.map +1 -0
- package/getSeverity.d.ts +117 -0
- package/getSeverity.d.ts.map +1 -0
- package/getSeverity.js +115 -0
- package/getSeverity.js.map +1 -0
- package/getStatus.d.ts +125 -0
- package/getStatus.d.ts.map +1 -0
- package/getStatus.js +119 -0
- package/getStatus.js.map +1 -0
- package/getUser.d.ts +52 -0
- package/getUser.d.ts.map +1 -0
- package/getUser.js +61 -0
- package/getUser.js.map +1 -0
- package/getWorkflow.d.ts +103 -0
- package/getWorkflow.d.ts.map +1 -0
- package/getWorkflow.js +77 -0
- package/getWorkflow.js.map +1 -0
- package/incidentRole.d.ts +109 -0
- package/incidentRole.d.ts.map +1 -0
- package/incidentRole.js +111 -0
- package/incidentRole.js.map +1 -0
- package/incidentTemplate.d.ts +200 -0
- package/incidentTemplate.d.ts.map +1 -0
- package/incidentTemplate.js +207 -0
- package/incidentTemplate.js.map +1 -0
- package/index.d.ts +188 -0
- package/index.d.ts.map +1 -0
- package/index.js +303 -0
- package/index.js.map +1 -0
- package/maintenanceWindow.d.ts +255 -0
- package/maintenanceWindow.d.ts.map +1 -0
- package/maintenanceWindow.js +148 -0
- package/maintenanceWindow.js.map +1 -0
- package/package.json +33 -0
- package/policy.d.ts +476 -0
- package/policy.d.ts.map +1 -0
- package/policy.js +387 -0
- package/policy.js.map +1 -0
- package/provider.d.ts +62 -0
- package/provider.d.ts.map +1 -0
- package/provider.js +80 -0
- package/provider.js.map +1 -0
- package/schedule.d.ts +120 -0
- package/schedule.d.ts.map +1 -0
- package/schedule.js +114 -0
- package/schedule.js.map +1 -0
- package/scheduleBeta.d.ts +104 -0
- package/scheduleBeta.d.ts.map +1 -0
- package/scheduleBeta.js +98 -0
- package/scheduleBeta.js.map +1 -0
- package/scheduleReplica.d.ts +178 -0
- package/scheduleReplica.d.ts.map +1 -0
- package/scheduleReplica.js +134 -0
- package/scheduleReplica.js.map +1 -0
- package/scheduleRotation.d.ts +287 -0
- package/scheduleRotation.d.ts.map +1 -0
- package/scheduleRotation.js +224 -0
- package/scheduleRotation.js.map +1 -0
- package/scheduleRotationBeta.d.ts +184 -0
- package/scheduleRotationBeta.d.ts.map +1 -0
- package/scheduleRotationBeta.js +121 -0
- package/scheduleRotationBeta.js.map +1 -0
- package/scheduleSyncRule.d.ts +154 -0
- package/scheduleSyncRule.d.ts.map +1 -0
- package/scheduleSyncRule.js +146 -0
- package/scheduleSyncRule.js.map +1 -0
- package/scheduleSyncTarget.d.ts +108 -0
- package/scheduleSyncTarget.d.ts.map +1 -0
- package/scheduleSyncTarget.js +106 -0
- package/scheduleSyncTarget.js.map +1 -0
- package/secret.d.ts +276 -0
- package/secret.d.ts.map +1 -0
- package/secret.js +234 -0
- package/secret.js.map +1 -0
- package/severity.d.ts +96 -0
- package/severity.d.ts.map +1 -0
- package/severity.js +102 -0
- package/severity.js.map +1 -0
- package/status.d.ts +121 -0
- package/status.d.ts.map +1 -0
- package/status.js +120 -0
- package/status.js.map +1 -0
- package/types/index.d.ts +4 -0
- package/types/index.d.ts.map +1 -0
- package/types/index.js +34 -0
- package/types/index.js.map +1 -0
- package/types/input.d.ts +23630 -0
- package/types/input.d.ts.map +1 -0
- package/types/input.js +5 -0
- package/types/input.js.map +1 -0
- package/types/output.d.ts +19726 -0
- package/types/output.d.ts.map +1 -0
- package/types/output.js +5 -0
- package/types/output.js.map +1 -0
- package/utilities.d.ts +5 -0
- package/utilities.d.ts.map +1 -0
- package/utilities.js +114 -0
- package/utilities.js.map +1 -0
- package/workflow.d.ts +736 -0
- package/workflow.d.ts.map +1 -0
- package/workflow.js +608 -0
- package/workflow.js.map +1 -0
package/alertSource.d.ts
ADDED
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
import * as pulumi from "@pulumi/pulumi";
|
|
2
|
+
import * as inputs from "./types/input";
|
|
3
|
+
import * as outputs from "./types/output";
|
|
4
|
+
/**
|
|
5
|
+
* Configure your alert sources, separately from the attributes they populate.
|
|
6
|
+
*
|
|
7
|
+
* An alert source, without the attributes it populates — each of those is an `incident.AlertSourceAttribute` resource. Editing one attribute therefore doesn't mean rewriting the source, and two people editing different attributes don't race each other.
|
|
8
|
+
*
|
|
9
|
+
* ## Example Usage
|
|
10
|
+
*
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
13
|
+
* import * as incident from "@incident-io/pulumi";
|
|
14
|
+
*
|
|
15
|
+
* // An alert's priority is a catalog entry, so the priorities themselves are looked up rather
|
|
16
|
+
* // than declared. Urgent and In-hours are the ones a new account starts with; use whichever
|
|
17
|
+
* // your organisation has.
|
|
18
|
+
* const alertPriority = incident.getCatalogType({
|
|
19
|
+
* typeName: "AlertPriority",
|
|
20
|
+
* });
|
|
21
|
+
* const urgentPriority = alertPriority.then(alertPriority => incident.getCatalogEntry({
|
|
22
|
+
* catalogTypeId: alertPriority.id,
|
|
23
|
+
* identifier: "Urgent",
|
|
24
|
+
* }));
|
|
25
|
+
* const inHoursPriority = alertPriority.then(alertPriority => incident.getCatalogEntry({
|
|
26
|
+
* catalogTypeId: alertPriority.id,
|
|
27
|
+
* identifier: "In-hours",
|
|
28
|
+
* }));
|
|
29
|
+
* const prometheusAlert = incident.getRichText({
|
|
30
|
+
* featureSet: "rich",
|
|
31
|
+
* markdown: `Fired by the **Prometheus alertmanager**.
|
|
32
|
+
*
|
|
33
|
+
* Runbook: {{payload.annotations.runbook_url}}
|
|
34
|
+
* `,
|
|
35
|
+
* });
|
|
36
|
+
* // An alert source, without the attributes it populates. Each of those is its own
|
|
37
|
+
* // incident_alert_source_attribute resource, so editing one attribute doesn't
|
|
38
|
+
* // mean rewriting the source.
|
|
39
|
+
* const prometheus = new incident.AlertSource("prometheus", {
|
|
40
|
+
* namedExpressions: [
|
|
41
|
+
* {
|
|
42
|
+
* operations: [{
|
|
43
|
+
* parse: {
|
|
44
|
+
* "function": "$.labels.severity",
|
|
45
|
+
* as: "String",
|
|
46
|
+
* },
|
|
47
|
+
* }],
|
|
48
|
+
* name: "severity_string",
|
|
49
|
+
* startFrom: "payload",
|
|
50
|
+
* },
|
|
51
|
+
* {
|
|
52
|
+
* fallback: {
|
|
53
|
+
* result: {
|
|
54
|
+
* valueLiteral: inHoursPriority.then(inHoursPriority => inHoursPriority.id),
|
|
55
|
+
* },
|
|
56
|
+
* },
|
|
57
|
+
* operations: [{
|
|
58
|
+
* branches: {
|
|
59
|
+
* "if": {
|
|
60
|
+
* conditions: [{
|
|
61
|
+
* subject: "expressions[\"severity_string\"]",
|
|
62
|
+
* operation: "one_of",
|
|
63
|
+
* params: [{
|
|
64
|
+
* values: [
|
|
65
|
+
* "critical",
|
|
66
|
+
* "page",
|
|
67
|
+
* ],
|
|
68
|
+
* }],
|
|
69
|
+
* }],
|
|
70
|
+
* result: {
|
|
71
|
+
* valueLiteral: urgentPriority.then(urgentPriority => urgentPriority.id),
|
|
72
|
+
* },
|
|
73
|
+
* },
|
|
74
|
+
* as: alertPriority.then(alertPriority => alertPriority.attributeType),
|
|
75
|
+
* },
|
|
76
|
+
* }],
|
|
77
|
+
* name: "severity_lookup",
|
|
78
|
+
* startFrom: ".",
|
|
79
|
+
* },
|
|
80
|
+
* ],
|
|
81
|
+
* name: "Prometheus",
|
|
82
|
+
* sourceType: "http",
|
|
83
|
+
* owningTeamIds: [platformTeam.id],
|
|
84
|
+
* title: {
|
|
85
|
+
* literal: "{{payload.labels.alertname}} on {{payload.labels.service}}",
|
|
86
|
+
* },
|
|
87
|
+
* description: {
|
|
88
|
+
* literal: prometheusAlert.then(prometheusAlert => prometheusAlert.json),
|
|
89
|
+
* },
|
|
90
|
+
* priority: {
|
|
91
|
+
* expressionRef: "severity_lookup",
|
|
92
|
+
* },
|
|
93
|
+
* });
|
|
94
|
+
* // A heartbeat source writes its own title and description, and needs the interval a
|
|
95
|
+
* // ping is expected within.
|
|
96
|
+
* const nightlyBackup = new incident.AlertSource("nightly_backup", {
|
|
97
|
+
* name: "Nightly backup",
|
|
98
|
+
* sourceType: "heartbeat",
|
|
99
|
+
* heartbeatOptions: {
|
|
100
|
+
* intervalSeconds: 86400,
|
|
101
|
+
* failureThreshold: 1,
|
|
102
|
+
* gracePeriodSeconds: 3600,
|
|
103
|
+
* },
|
|
104
|
+
* disabled: false,
|
|
105
|
+
* });
|
|
106
|
+
* // A private source's alerts are visible to nobody until you say which teams can
|
|
107
|
+
* // see them.
|
|
108
|
+
* const securityScanner = new incident.AlertSource("security_scanner", {
|
|
109
|
+
* name: "Security scanner",
|
|
110
|
+
* sourceType: "http",
|
|
111
|
+
* title: {
|
|
112
|
+
* literal: "{{payload.rule}} on {{payload.target}}",
|
|
113
|
+
* },
|
|
114
|
+
* description: {
|
|
115
|
+
* literal: "{{payload.detail}}",
|
|
116
|
+
* },
|
|
117
|
+
* isPrivate: true,
|
|
118
|
+
* visibleToTeams: {
|
|
119
|
+
* values: [securityTeam.id],
|
|
120
|
+
* },
|
|
121
|
+
* });
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
export declare class AlertSource extends pulumi.CustomResource {
|
|
125
|
+
/**
|
|
126
|
+
* Get an existing AlertSource resource's state with the given name, ID, and optional extra
|
|
127
|
+
* properties used to qualify the lookup.
|
|
128
|
+
*
|
|
129
|
+
* @param name The _unique_ name of the resulting resource.
|
|
130
|
+
* @param id The _unique_ provider ID of the resource to lookup.
|
|
131
|
+
* @param state Any extra arguments used during the lookup.
|
|
132
|
+
* @param opts Optional settings to control the behavior of the CustomResource.
|
|
133
|
+
*/
|
|
134
|
+
static get(name: string, id: pulumi.Input<pulumi.ID>, state?: AlertSourceState, opts?: pulumi.CustomResourceOptions): AlertSource;
|
|
135
|
+
/**
|
|
136
|
+
* Returns true if the given object is an instance of AlertSource. This is designed to work even
|
|
137
|
+
* when multiple copies of the Pulumi SDK have been loaded into the same process.
|
|
138
|
+
*/
|
|
139
|
+
static isInstance(obj: any): obj is AlertSource;
|
|
140
|
+
/**
|
|
141
|
+
* The URL to send alert events to
|
|
142
|
+
*/
|
|
143
|
+
readonly alertEventsUrl: pulumi.Output<string>;
|
|
144
|
+
/**
|
|
145
|
+
* Whether alerts from this source keep counting down to auto-resolve while attached to an incident. Defaults to true. Has no effect without auto*resolve*timeout_minutes.
|
|
146
|
+
*/
|
|
147
|
+
readonly autoResolveIncidentAlerts: pulumi.Output<boolean>;
|
|
148
|
+
/**
|
|
149
|
+
* How long to wait before automatically resolving alerts from this source
|
|
150
|
+
*/
|
|
151
|
+
readonly autoResolveTimeoutMinutes: pulumi.Output<number | undefined>;
|
|
152
|
+
readonly description: pulumi.Output<outputs.AlertSourceDescription | undefined>;
|
|
153
|
+
/**
|
|
154
|
+
* Whether monitoring is paused for this source. Only returned for source types that support being disabled.
|
|
155
|
+
*/
|
|
156
|
+
readonly disabled: pulumi.Output<boolean>;
|
|
157
|
+
/**
|
|
158
|
+
* Email address this alert source receives alerts to
|
|
159
|
+
*/
|
|
160
|
+
readonly emailAddress: pulumi.Output<string>;
|
|
161
|
+
readonly emailOptions: pulumi.Output<outputs.AlertSourceEmailOptions | undefined>;
|
|
162
|
+
/**
|
|
163
|
+
* Conditions an incoming event must match to be ingested from this source, evaluated against the event's payload and this source's expressions.
|
|
164
|
+
*/
|
|
165
|
+
readonly filterConditionGroups: pulumi.Output<outputs.AlertSourceFilterConditionGroup[] | undefined>;
|
|
166
|
+
/**
|
|
167
|
+
* When set, the team every alert from this source is attributed to. The team attribute is managed from this field: it is not returned by the attribute endpoints and cannot be bound directly. While set, an `incident.AlertSourceAttribute` resource binding the organisation's team attribute is rejected at apply time: the binding is managed from this field.
|
|
168
|
+
*/
|
|
169
|
+
readonly fixedTeamId: pulumi.Output<string | undefined>;
|
|
170
|
+
readonly heartbeatOptions: pulumi.Output<outputs.AlertSourceHeartbeatOptions | undefined>;
|
|
171
|
+
readonly httpCustomOptions: pulumi.Output<outputs.AlertSourceHttpCustomOptions | undefined>;
|
|
172
|
+
/**
|
|
173
|
+
* Whether alerts from this source are private
|
|
174
|
+
*/
|
|
175
|
+
readonly isPrivate: pulumi.Output<boolean>;
|
|
176
|
+
readonly jiraOptions: pulumi.Output<outputs.AlertSourceJiraOptions | undefined>;
|
|
177
|
+
/**
|
|
178
|
+
* The name of this alert source, for the user's reference
|
|
179
|
+
*/
|
|
180
|
+
readonly name: pulumi.Output<string>;
|
|
181
|
+
/**
|
|
182
|
+
* An expression this resource owns, addressed by name.
|
|
183
|
+
*/
|
|
184
|
+
readonly namedExpressions: pulumi.Output<outputs.AlertSourceNamedExpression[] | undefined>;
|
|
185
|
+
/**
|
|
186
|
+
* IDs of the teams that own this alert source
|
|
187
|
+
*/
|
|
188
|
+
readonly owningTeamIds: pulumi.Output<string[] | undefined>;
|
|
189
|
+
readonly priority: pulumi.Output<outputs.AlertSourcePriority | undefined>;
|
|
190
|
+
/**
|
|
191
|
+
* Controls how this source's ingest rate limit is split into buckets.
|
|
192
|
+
*/
|
|
193
|
+
readonly rateLimitSharding: pulumi.Output<outputs.AlertSourceRateLimitSharding | undefined>;
|
|
194
|
+
/**
|
|
195
|
+
* The token to use when sending alerts to this source. Only returned to callers with permission to update the source.
|
|
196
|
+
*/
|
|
197
|
+
readonly secretToken: pulumi.Output<string>;
|
|
198
|
+
/**
|
|
199
|
+
* Type of alert source. Possible values are: `alertmanager`, `appOptics`, `azureMonitor`, `azureDevops`, `bigPanda`, `bugsnag`, `checkly`, `chronosphere`, `cloudwatch`, `cloudflare`, `coralogix`, `cronitor`, `crowdstrikeFalcon`, `dash0`, `datadog`, `dynatrace`, `elasticsearch`, `email`, `expel`, `githubIssue`, `googleCloud`, `grafana`, `heartbeat`, `http`, `httpCustom`, `honeycomb`, `icinga2`, `incomingCalls`, `jira`, `jsm`, `monteCarlo`, `nagios`, `newRelic`, `opsgenie`, `prtg`, `pagerDuty`, `panther`, `pingdom`, `runscope`, `sns`, `salesforceCase`, `sentry`, `sentryMetric`, `serviceNow`, `splunk`, `statusCake`, `statusPageViews`, `sumoLogic`, `uptime`, `vercel`, `wiz`, `zendesk`.
|
|
200
|
+
*/
|
|
201
|
+
readonly sourceType: pulumi.Output<string>;
|
|
202
|
+
readonly title: pulumi.Output<outputs.AlertSourceTitle | undefined>;
|
|
203
|
+
/**
|
|
204
|
+
* The source's current version, which increments on every write. Pass it back as expectedVersion to reject a write built from a stale read.
|
|
205
|
+
*/
|
|
206
|
+
readonly version: pulumi.Output<number>;
|
|
207
|
+
readonly visibleToTeams: pulumi.Output<outputs.AlertSourceVisibleToTeams | undefined>;
|
|
208
|
+
/**
|
|
209
|
+
* Create a AlertSource resource with the given unique name, arguments, and options.
|
|
210
|
+
*
|
|
211
|
+
* @param name The _unique_ name of the resource.
|
|
212
|
+
* @param args The arguments to use to populate this resource's properties.
|
|
213
|
+
* @param opts A bag of options that control this resource's behavior.
|
|
214
|
+
*/
|
|
215
|
+
constructor(name: string, args: AlertSourceArgs, opts?: pulumi.CustomResourceOptions);
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Input properties used for looking up and filtering AlertSource resources.
|
|
219
|
+
*/
|
|
220
|
+
export interface AlertSourceState {
|
|
221
|
+
/**
|
|
222
|
+
* The URL to send alert events to
|
|
223
|
+
*/
|
|
224
|
+
alertEventsUrl?: pulumi.Input<string | undefined>;
|
|
225
|
+
/**
|
|
226
|
+
* Whether alerts from this source keep counting down to auto-resolve while attached to an incident. Defaults to true. Has no effect without auto*resolve*timeout_minutes.
|
|
227
|
+
*/
|
|
228
|
+
autoResolveIncidentAlerts?: pulumi.Input<boolean | undefined>;
|
|
229
|
+
/**
|
|
230
|
+
* How long to wait before automatically resolving alerts from this source
|
|
231
|
+
*/
|
|
232
|
+
autoResolveTimeoutMinutes?: pulumi.Input<number | undefined>;
|
|
233
|
+
description?: pulumi.Input<inputs.AlertSourceDescription | undefined>;
|
|
234
|
+
/**
|
|
235
|
+
* Whether monitoring is paused for this source. Only returned for source types that support being disabled.
|
|
236
|
+
*/
|
|
237
|
+
disabled?: pulumi.Input<boolean | undefined>;
|
|
238
|
+
/**
|
|
239
|
+
* Email address this alert source receives alerts to
|
|
240
|
+
*/
|
|
241
|
+
emailAddress?: pulumi.Input<string | undefined>;
|
|
242
|
+
emailOptions?: pulumi.Input<inputs.AlertSourceEmailOptions | undefined>;
|
|
243
|
+
/**
|
|
244
|
+
* Conditions an incoming event must match to be ingested from this source, evaluated against the event's payload and this source's expressions.
|
|
245
|
+
*/
|
|
246
|
+
filterConditionGroups?: pulumi.Input<pulumi.Input<inputs.AlertSourceFilterConditionGroup>[] | undefined>;
|
|
247
|
+
/**
|
|
248
|
+
* When set, the team every alert from this source is attributed to. The team attribute is managed from this field: it is not returned by the attribute endpoints and cannot be bound directly. While set, an `incident.AlertSourceAttribute` resource binding the organisation's team attribute is rejected at apply time: the binding is managed from this field.
|
|
249
|
+
*/
|
|
250
|
+
fixedTeamId?: pulumi.Input<string | undefined>;
|
|
251
|
+
heartbeatOptions?: pulumi.Input<inputs.AlertSourceHeartbeatOptions | undefined>;
|
|
252
|
+
httpCustomOptions?: pulumi.Input<inputs.AlertSourceHttpCustomOptions | undefined>;
|
|
253
|
+
/**
|
|
254
|
+
* Whether alerts from this source are private
|
|
255
|
+
*/
|
|
256
|
+
isPrivate?: pulumi.Input<boolean | undefined>;
|
|
257
|
+
jiraOptions?: pulumi.Input<inputs.AlertSourceJiraOptions | undefined>;
|
|
258
|
+
/**
|
|
259
|
+
* The name of this alert source, for the user's reference
|
|
260
|
+
*/
|
|
261
|
+
name?: pulumi.Input<string | undefined>;
|
|
262
|
+
/**
|
|
263
|
+
* An expression this resource owns, addressed by name.
|
|
264
|
+
*/
|
|
265
|
+
namedExpressions?: pulumi.Input<pulumi.Input<inputs.AlertSourceNamedExpression>[] | undefined>;
|
|
266
|
+
/**
|
|
267
|
+
* IDs of the teams that own this alert source
|
|
268
|
+
*/
|
|
269
|
+
owningTeamIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
|
|
270
|
+
priority?: pulumi.Input<inputs.AlertSourcePriority | undefined>;
|
|
271
|
+
/**
|
|
272
|
+
* Controls how this source's ingest rate limit is split into buckets.
|
|
273
|
+
*/
|
|
274
|
+
rateLimitSharding?: pulumi.Input<inputs.AlertSourceRateLimitSharding | undefined>;
|
|
275
|
+
/**
|
|
276
|
+
* The token to use when sending alerts to this source. Only returned to callers with permission to update the source.
|
|
277
|
+
*/
|
|
278
|
+
secretToken?: pulumi.Input<string | undefined>;
|
|
279
|
+
/**
|
|
280
|
+
* Type of alert source. Possible values are: `alertmanager`, `appOptics`, `azureMonitor`, `azureDevops`, `bigPanda`, `bugsnag`, `checkly`, `chronosphere`, `cloudwatch`, `cloudflare`, `coralogix`, `cronitor`, `crowdstrikeFalcon`, `dash0`, `datadog`, `dynatrace`, `elasticsearch`, `email`, `expel`, `githubIssue`, `googleCloud`, `grafana`, `heartbeat`, `http`, `httpCustom`, `honeycomb`, `icinga2`, `incomingCalls`, `jira`, `jsm`, `monteCarlo`, `nagios`, `newRelic`, `opsgenie`, `prtg`, `pagerDuty`, `panther`, `pingdom`, `runscope`, `sns`, `salesforceCase`, `sentry`, `sentryMetric`, `serviceNow`, `splunk`, `statusCake`, `statusPageViews`, `sumoLogic`, `uptime`, `vercel`, `wiz`, `zendesk`.
|
|
281
|
+
*/
|
|
282
|
+
sourceType?: pulumi.Input<string | undefined>;
|
|
283
|
+
title?: pulumi.Input<inputs.AlertSourceTitle | undefined>;
|
|
284
|
+
/**
|
|
285
|
+
* The source's current version, which increments on every write. Pass it back as expectedVersion to reject a write built from a stale read.
|
|
286
|
+
*/
|
|
287
|
+
version?: pulumi.Input<number | undefined>;
|
|
288
|
+
visibleToTeams?: pulumi.Input<inputs.AlertSourceVisibleToTeams | undefined>;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* The set of arguments for constructing a AlertSource resource.
|
|
292
|
+
*/
|
|
293
|
+
export interface AlertSourceArgs {
|
|
294
|
+
/**
|
|
295
|
+
* Whether alerts from this source keep counting down to auto-resolve while attached to an incident. Defaults to true. Has no effect without auto*resolve*timeout_minutes.
|
|
296
|
+
*/
|
|
297
|
+
autoResolveIncidentAlerts?: pulumi.Input<boolean | undefined>;
|
|
298
|
+
/**
|
|
299
|
+
* How long to wait before automatically resolving alerts from this source
|
|
300
|
+
*/
|
|
301
|
+
autoResolveTimeoutMinutes?: pulumi.Input<number | undefined>;
|
|
302
|
+
description?: pulumi.Input<inputs.AlertSourceDescription | undefined>;
|
|
303
|
+
/**
|
|
304
|
+
* Whether monitoring is paused for this source. Only returned for source types that support being disabled.
|
|
305
|
+
*/
|
|
306
|
+
disabled?: pulumi.Input<boolean | undefined>;
|
|
307
|
+
emailOptions?: pulumi.Input<inputs.AlertSourceEmailOptions | undefined>;
|
|
308
|
+
/**
|
|
309
|
+
* Conditions an incoming event must match to be ingested from this source, evaluated against the event's payload and this source's expressions.
|
|
310
|
+
*/
|
|
311
|
+
filterConditionGroups?: pulumi.Input<pulumi.Input<inputs.AlertSourceFilterConditionGroup>[] | undefined>;
|
|
312
|
+
/**
|
|
313
|
+
* When set, the team every alert from this source is attributed to. The team attribute is managed from this field: it is not returned by the attribute endpoints and cannot be bound directly. While set, an `incident.AlertSourceAttribute` resource binding the organisation's team attribute is rejected at apply time: the binding is managed from this field.
|
|
314
|
+
*/
|
|
315
|
+
fixedTeamId?: pulumi.Input<string | undefined>;
|
|
316
|
+
heartbeatOptions?: pulumi.Input<inputs.AlertSourceHeartbeatOptions | undefined>;
|
|
317
|
+
httpCustomOptions?: pulumi.Input<inputs.AlertSourceHttpCustomOptions | undefined>;
|
|
318
|
+
/**
|
|
319
|
+
* Whether alerts from this source are private
|
|
320
|
+
*/
|
|
321
|
+
isPrivate?: pulumi.Input<boolean | undefined>;
|
|
322
|
+
jiraOptions?: pulumi.Input<inputs.AlertSourceJiraOptions | undefined>;
|
|
323
|
+
/**
|
|
324
|
+
* The name of this alert source, for the user's reference
|
|
325
|
+
*/
|
|
326
|
+
name?: pulumi.Input<string | undefined>;
|
|
327
|
+
/**
|
|
328
|
+
* An expression this resource owns, addressed by name.
|
|
329
|
+
*/
|
|
330
|
+
namedExpressions?: pulumi.Input<pulumi.Input<inputs.AlertSourceNamedExpression>[] | undefined>;
|
|
331
|
+
/**
|
|
332
|
+
* IDs of the teams that own this alert source
|
|
333
|
+
*/
|
|
334
|
+
owningTeamIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
|
|
335
|
+
priority?: pulumi.Input<inputs.AlertSourcePriority | undefined>;
|
|
336
|
+
/**
|
|
337
|
+
* Controls how this source's ingest rate limit is split into buckets.
|
|
338
|
+
*/
|
|
339
|
+
rateLimitSharding?: pulumi.Input<inputs.AlertSourceRateLimitSharding | undefined>;
|
|
340
|
+
/**
|
|
341
|
+
* Type of alert source. Possible values are: `alertmanager`, `appOptics`, `azureMonitor`, `azureDevops`, `bigPanda`, `bugsnag`, `checkly`, `chronosphere`, `cloudwatch`, `cloudflare`, `coralogix`, `cronitor`, `crowdstrikeFalcon`, `dash0`, `datadog`, `dynatrace`, `elasticsearch`, `email`, `expel`, `githubIssue`, `googleCloud`, `grafana`, `heartbeat`, `http`, `httpCustom`, `honeycomb`, `icinga2`, `incomingCalls`, `jira`, `jsm`, `monteCarlo`, `nagios`, `newRelic`, `opsgenie`, `prtg`, `pagerDuty`, `panther`, `pingdom`, `runscope`, `sns`, `salesforceCase`, `sentry`, `sentryMetric`, `serviceNow`, `splunk`, `statusCake`, `statusPageViews`, `sumoLogic`, `uptime`, `vercel`, `wiz`, `zendesk`.
|
|
342
|
+
*/
|
|
343
|
+
sourceType: pulumi.Input<string>;
|
|
344
|
+
title?: pulumi.Input<inputs.AlertSourceTitle | undefined>;
|
|
345
|
+
visibleToTeams?: pulumi.Input<inputs.AlertSourceVisibleToTeams | undefined>;
|
|
346
|
+
}
|
|
347
|
+
//# sourceMappingURL=alertSource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alertSource.d.ts","sourceRoot":"","sources":["../alertSource.ts"],"names":[],"mappings":"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"}
|
package/alertSource.js
ADDED
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
|
|
3
|
+
// *** Do not edit by hand unless you're certain you know what you are doing! ***
|
|
4
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
5
|
+
if (k2 === undefined) k2 = k;
|
|
6
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
7
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
8
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
9
|
+
}
|
|
10
|
+
Object.defineProperty(o, k2, desc);
|
|
11
|
+
}) : (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
o[k2] = m[k];
|
|
14
|
+
}));
|
|
15
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
16
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
17
|
+
}) : function(o, v) {
|
|
18
|
+
o["default"] = v;
|
|
19
|
+
});
|
|
20
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
21
|
+
if (mod && mod.__esModule) return mod;
|
|
22
|
+
var result = {};
|
|
23
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
24
|
+
__setModuleDefault(result, mod);
|
|
25
|
+
return result;
|
|
26
|
+
};
|
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
+
exports.AlertSource = void 0;
|
|
29
|
+
const pulumi = __importStar(require("@pulumi/pulumi"));
|
|
30
|
+
const utilities = __importStar(require("./utilities"));
|
|
31
|
+
/**
|
|
32
|
+
* Configure your alert sources, separately from the attributes they populate.
|
|
33
|
+
*
|
|
34
|
+
* An alert source, without the attributes it populates — each of those is an `incident.AlertSourceAttribute` resource. Editing one attribute therefore doesn't mean rewriting the source, and two people editing different attributes don't race each other.
|
|
35
|
+
*
|
|
36
|
+
* ## Example Usage
|
|
37
|
+
*
|
|
38
|
+
* ```typescript
|
|
39
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
40
|
+
* import * as incident from "@incident-io/pulumi";
|
|
41
|
+
*
|
|
42
|
+
* // An alert's priority is a catalog entry, so the priorities themselves are looked up rather
|
|
43
|
+
* // than declared. Urgent and In-hours are the ones a new account starts with; use whichever
|
|
44
|
+
* // your organisation has.
|
|
45
|
+
* const alertPriority = incident.getCatalogType({
|
|
46
|
+
* typeName: "AlertPriority",
|
|
47
|
+
* });
|
|
48
|
+
* const urgentPriority = alertPriority.then(alertPriority => incident.getCatalogEntry({
|
|
49
|
+
* catalogTypeId: alertPriority.id,
|
|
50
|
+
* identifier: "Urgent",
|
|
51
|
+
* }));
|
|
52
|
+
* const inHoursPriority = alertPriority.then(alertPriority => incident.getCatalogEntry({
|
|
53
|
+
* catalogTypeId: alertPriority.id,
|
|
54
|
+
* identifier: "In-hours",
|
|
55
|
+
* }));
|
|
56
|
+
* const prometheusAlert = incident.getRichText({
|
|
57
|
+
* featureSet: "rich",
|
|
58
|
+
* markdown: `Fired by the **Prometheus alertmanager**.
|
|
59
|
+
*
|
|
60
|
+
* Runbook: {{payload.annotations.runbook_url}}
|
|
61
|
+
* `,
|
|
62
|
+
* });
|
|
63
|
+
* // An alert source, without the attributes it populates. Each of those is its own
|
|
64
|
+
* // incident_alert_source_attribute resource, so editing one attribute doesn't
|
|
65
|
+
* // mean rewriting the source.
|
|
66
|
+
* const prometheus = new incident.AlertSource("prometheus", {
|
|
67
|
+
* namedExpressions: [
|
|
68
|
+
* {
|
|
69
|
+
* operations: [{
|
|
70
|
+
* parse: {
|
|
71
|
+
* "function": "$.labels.severity",
|
|
72
|
+
* as: "String",
|
|
73
|
+
* },
|
|
74
|
+
* }],
|
|
75
|
+
* name: "severity_string",
|
|
76
|
+
* startFrom: "payload",
|
|
77
|
+
* },
|
|
78
|
+
* {
|
|
79
|
+
* fallback: {
|
|
80
|
+
* result: {
|
|
81
|
+
* valueLiteral: inHoursPriority.then(inHoursPriority => inHoursPriority.id),
|
|
82
|
+
* },
|
|
83
|
+
* },
|
|
84
|
+
* operations: [{
|
|
85
|
+
* branches: {
|
|
86
|
+
* "if": {
|
|
87
|
+
* conditions: [{
|
|
88
|
+
* subject: "expressions[\"severity_string\"]",
|
|
89
|
+
* operation: "one_of",
|
|
90
|
+
* params: [{
|
|
91
|
+
* values: [
|
|
92
|
+
* "critical",
|
|
93
|
+
* "page",
|
|
94
|
+
* ],
|
|
95
|
+
* }],
|
|
96
|
+
* }],
|
|
97
|
+
* result: {
|
|
98
|
+
* valueLiteral: urgentPriority.then(urgentPriority => urgentPriority.id),
|
|
99
|
+
* },
|
|
100
|
+
* },
|
|
101
|
+
* as: alertPriority.then(alertPriority => alertPriority.attributeType),
|
|
102
|
+
* },
|
|
103
|
+
* }],
|
|
104
|
+
* name: "severity_lookup",
|
|
105
|
+
* startFrom: ".",
|
|
106
|
+
* },
|
|
107
|
+
* ],
|
|
108
|
+
* name: "Prometheus",
|
|
109
|
+
* sourceType: "http",
|
|
110
|
+
* owningTeamIds: [platformTeam.id],
|
|
111
|
+
* title: {
|
|
112
|
+
* literal: "{{payload.labels.alertname}} on {{payload.labels.service}}",
|
|
113
|
+
* },
|
|
114
|
+
* description: {
|
|
115
|
+
* literal: prometheusAlert.then(prometheusAlert => prometheusAlert.json),
|
|
116
|
+
* },
|
|
117
|
+
* priority: {
|
|
118
|
+
* expressionRef: "severity_lookup",
|
|
119
|
+
* },
|
|
120
|
+
* });
|
|
121
|
+
* // A heartbeat source writes its own title and description, and needs the interval a
|
|
122
|
+
* // ping is expected within.
|
|
123
|
+
* const nightlyBackup = new incident.AlertSource("nightly_backup", {
|
|
124
|
+
* name: "Nightly backup",
|
|
125
|
+
* sourceType: "heartbeat",
|
|
126
|
+
* heartbeatOptions: {
|
|
127
|
+
* intervalSeconds: 86400,
|
|
128
|
+
* failureThreshold: 1,
|
|
129
|
+
* gracePeriodSeconds: 3600,
|
|
130
|
+
* },
|
|
131
|
+
* disabled: false,
|
|
132
|
+
* });
|
|
133
|
+
* // A private source's alerts are visible to nobody until you say which teams can
|
|
134
|
+
* // see them.
|
|
135
|
+
* const securityScanner = new incident.AlertSource("security_scanner", {
|
|
136
|
+
* name: "Security scanner",
|
|
137
|
+
* sourceType: "http",
|
|
138
|
+
* title: {
|
|
139
|
+
* literal: "{{payload.rule}} on {{payload.target}}",
|
|
140
|
+
* },
|
|
141
|
+
* description: {
|
|
142
|
+
* literal: "{{payload.detail}}",
|
|
143
|
+
* },
|
|
144
|
+
* isPrivate: true,
|
|
145
|
+
* visibleToTeams: {
|
|
146
|
+
* values: [securityTeam.id],
|
|
147
|
+
* },
|
|
148
|
+
* });
|
|
149
|
+
* ```
|
|
150
|
+
*/
|
|
151
|
+
class AlertSource extends pulumi.CustomResource {
|
|
152
|
+
/**
|
|
153
|
+
* Get an existing AlertSource resource's state with the given name, ID, and optional extra
|
|
154
|
+
* properties used to qualify the lookup.
|
|
155
|
+
*
|
|
156
|
+
* @param name The _unique_ name of the resulting resource.
|
|
157
|
+
* @param id The _unique_ provider ID of the resource to lookup.
|
|
158
|
+
* @param state Any extra arguments used during the lookup.
|
|
159
|
+
* @param opts Optional settings to control the behavior of the CustomResource.
|
|
160
|
+
*/
|
|
161
|
+
static get(name, id, state, opts) {
|
|
162
|
+
return new AlertSource(name, state, { ...opts, id: id });
|
|
163
|
+
}
|
|
164
|
+
/** @internal */
|
|
165
|
+
static __pulumiType = 'incident:index/alertSource:AlertSource';
|
|
166
|
+
/**
|
|
167
|
+
* Returns true if the given object is an instance of AlertSource. This is designed to work even
|
|
168
|
+
* when multiple copies of the Pulumi SDK have been loaded into the same process.
|
|
169
|
+
*/
|
|
170
|
+
static isInstance(obj) {
|
|
171
|
+
if (obj === undefined || obj === null) {
|
|
172
|
+
return false;
|
|
173
|
+
}
|
|
174
|
+
return obj['__pulumiType'] === AlertSource.__pulumiType;
|
|
175
|
+
}
|
|
176
|
+
constructor(name, argsOrState, opts) {
|
|
177
|
+
let resourceInputs = {};
|
|
178
|
+
opts = opts || {};
|
|
179
|
+
if (opts.id) {
|
|
180
|
+
const state = argsOrState;
|
|
181
|
+
resourceInputs["alertEventsUrl"] = state?.alertEventsUrl;
|
|
182
|
+
resourceInputs["autoResolveIncidentAlerts"] = state?.autoResolveIncidentAlerts;
|
|
183
|
+
resourceInputs["autoResolveTimeoutMinutes"] = state?.autoResolveTimeoutMinutes;
|
|
184
|
+
resourceInputs["description"] = state?.description;
|
|
185
|
+
resourceInputs["disabled"] = state?.disabled;
|
|
186
|
+
resourceInputs["emailAddress"] = state?.emailAddress;
|
|
187
|
+
resourceInputs["emailOptions"] = state?.emailOptions;
|
|
188
|
+
resourceInputs["filterConditionGroups"] = state?.filterConditionGroups;
|
|
189
|
+
resourceInputs["fixedTeamId"] = state?.fixedTeamId;
|
|
190
|
+
resourceInputs["heartbeatOptions"] = state?.heartbeatOptions;
|
|
191
|
+
resourceInputs["httpCustomOptions"] = state?.httpCustomOptions;
|
|
192
|
+
resourceInputs["isPrivate"] = state?.isPrivate;
|
|
193
|
+
resourceInputs["jiraOptions"] = state?.jiraOptions;
|
|
194
|
+
resourceInputs["name"] = state?.name;
|
|
195
|
+
resourceInputs["namedExpressions"] = state?.namedExpressions;
|
|
196
|
+
resourceInputs["owningTeamIds"] = state?.owningTeamIds;
|
|
197
|
+
resourceInputs["priority"] = state?.priority;
|
|
198
|
+
resourceInputs["rateLimitSharding"] = state?.rateLimitSharding;
|
|
199
|
+
resourceInputs["secretToken"] = state?.secretToken;
|
|
200
|
+
resourceInputs["sourceType"] = state?.sourceType;
|
|
201
|
+
resourceInputs["title"] = state?.title;
|
|
202
|
+
resourceInputs["version"] = state?.version;
|
|
203
|
+
resourceInputs["visibleToTeams"] = state?.visibleToTeams;
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
const args = argsOrState;
|
|
207
|
+
if (args?.sourceType === undefined && !opts.urn) {
|
|
208
|
+
throw new Error("Missing required property 'sourceType'");
|
|
209
|
+
}
|
|
210
|
+
resourceInputs["autoResolveIncidentAlerts"] = args?.autoResolveIncidentAlerts;
|
|
211
|
+
resourceInputs["autoResolveTimeoutMinutes"] = args?.autoResolveTimeoutMinutes;
|
|
212
|
+
resourceInputs["description"] = args?.description;
|
|
213
|
+
resourceInputs["disabled"] = args?.disabled;
|
|
214
|
+
resourceInputs["emailOptions"] = args?.emailOptions;
|
|
215
|
+
resourceInputs["filterConditionGroups"] = args?.filterConditionGroups;
|
|
216
|
+
resourceInputs["fixedTeamId"] = args?.fixedTeamId;
|
|
217
|
+
resourceInputs["heartbeatOptions"] = args?.heartbeatOptions;
|
|
218
|
+
resourceInputs["httpCustomOptions"] = args?.httpCustomOptions;
|
|
219
|
+
resourceInputs["isPrivate"] = args?.isPrivate;
|
|
220
|
+
resourceInputs["jiraOptions"] = args?.jiraOptions;
|
|
221
|
+
resourceInputs["name"] = args?.name;
|
|
222
|
+
resourceInputs["namedExpressions"] = args?.namedExpressions;
|
|
223
|
+
resourceInputs["owningTeamIds"] = args?.owningTeamIds;
|
|
224
|
+
resourceInputs["priority"] = args?.priority;
|
|
225
|
+
resourceInputs["rateLimitSharding"] = args?.rateLimitSharding;
|
|
226
|
+
resourceInputs["sourceType"] = args?.sourceType;
|
|
227
|
+
resourceInputs["title"] = args?.title;
|
|
228
|
+
resourceInputs["visibleToTeams"] = args?.visibleToTeams;
|
|
229
|
+
resourceInputs["alertEventsUrl"] = undefined /*out*/;
|
|
230
|
+
resourceInputs["emailAddress"] = undefined /*out*/;
|
|
231
|
+
resourceInputs["secretToken"] = undefined /*out*/;
|
|
232
|
+
resourceInputs["version"] = undefined /*out*/;
|
|
233
|
+
}
|
|
234
|
+
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
|
|
235
|
+
const secretOpts = { additionalSecretOutputs: ["secretToken"] };
|
|
236
|
+
opts = pulumi.mergeOptions(opts, secretOpts);
|
|
237
|
+
super(AlertSource.__pulumiType, name, resourceInputs, opts);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
exports.AlertSource = AlertSource;
|
|
241
|
+
//# sourceMappingURL=alertSource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alertSource.js","sourceRoot":"","sources":["../alertSource.ts"],"names":[],"mappings":"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"}
|