@pagerduty/backstage-plugin-backend 0.1.3-next.8 → 0.2.0
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/README.md +1 -2
- package/config.d.ts +33 -0
- package/dist/index.cjs.js +23 -9
- package/dist/index.cjs.js.map +1 -1
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -29,8 +29,7 @@ yarn add --cwd packages/backend @pagerduty/backstage-plugin-backend
|
|
|
29
29
|
|
|
30
30
|
### Configuration
|
|
31
31
|
|
|
32
|
-
To use the custom actions as part of your custom project templates follow the instructions on the `Create PagerDuty service with Software Templates` section of the project's documentation [here](https://pagerduty.github.io/backstage-plugin-docs/).
|
|
33
|
-
|
|
32
|
+
To use the custom actions as part of your custom project templates follow the instructions on the `Create PagerDuty service with Software Templates` section of the project's documentation [here](https://pagerduty.github.io/backstage-plugin-docs/advanced/create-service-software-template/).
|
|
34
33
|
|
|
35
34
|
## Support
|
|
36
35
|
|
package/config.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2023 The Backstage Authors
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
export interface Config {
|
|
17
|
+
/**
|
|
18
|
+
* Configuration for the PagerDuty plugin
|
|
19
|
+
* @visibility frontend
|
|
20
|
+
*/
|
|
21
|
+
pagerDuty?: {
|
|
22
|
+
/**
|
|
23
|
+
* Optional Events Base URL to override the default.
|
|
24
|
+
* @visibility frontend
|
|
25
|
+
*/
|
|
26
|
+
eventsBaseUrl?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Optional PagerDuty API Token used in API calls from the backend component.
|
|
29
|
+
* @visibility frontend
|
|
30
|
+
*/
|
|
31
|
+
apiToken?: string;
|
|
32
|
+
};
|
|
33
|
+
}
|
package/dist/index.cjs.js
CHANGED
|
@@ -116,9 +116,8 @@ async function createServiceIntegration(serviceId, vendorId) {
|
|
|
116
116
|
throw new Error(`Failed to parse service information: ${error}`);
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
|
-
async function
|
|
119
|
+
async function getEscalationPolicies(offset, limit) {
|
|
120
120
|
let response;
|
|
121
|
-
const baseUrl = "https://api.pagerduty.com/escalation_policies";
|
|
122
121
|
const options = {
|
|
123
122
|
method: "GET",
|
|
124
123
|
headers: {
|
|
@@ -127,8 +126,9 @@ async function getAllEscalationPolicies() {
|
|
|
127
126
|
"Content-Type": "application/json"
|
|
128
127
|
}
|
|
129
128
|
};
|
|
129
|
+
const baseUrl = "https://api.pagerduty.com/escalation_policies";
|
|
130
130
|
try {
|
|
131
|
-
response = await fetch(`${baseUrl}?total=true&sort_by=name&limit
|
|
131
|
+
response = await fetch(`${baseUrl}?total=true&sort_by=name&offset=${offset}&limit=${limit}`, options);
|
|
132
132
|
} catch (error) {
|
|
133
133
|
throw new Error(`Failed to retrieve escalation policies: ${error}`);
|
|
134
134
|
}
|
|
@@ -145,22 +145,36 @@ async function getAllEscalationPolicies() {
|
|
|
145
145
|
let result;
|
|
146
146
|
try {
|
|
147
147
|
result = await response.json();
|
|
148
|
-
return result.escalation_policies;
|
|
148
|
+
return [result.more, result.escalation_policies];
|
|
149
149
|
} catch (error) {
|
|
150
|
-
throw new
|
|
150
|
+
throw new HttpError(`Failed to parse escalation policy information: ${error}`, 500);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
async function getAllEscalationPolicies(offset = 0) {
|
|
154
|
+
const limit = 50;
|
|
155
|
+
try {
|
|
156
|
+
const res = await getEscalationPolicies(offset, limit);
|
|
157
|
+
const results = res[1];
|
|
158
|
+
if (res[0]) {
|
|
159
|
+
return results.concat(await getAllEscalationPolicies(offset + limit));
|
|
160
|
+
}
|
|
161
|
+
return results;
|
|
162
|
+
} catch (error) {
|
|
163
|
+
throw new HttpError(`${error.message}`, error.status);
|
|
151
164
|
}
|
|
152
165
|
}
|
|
153
166
|
|
|
154
167
|
async function createRouter(options) {
|
|
155
168
|
const { logger, config } = options;
|
|
156
|
-
|
|
157
|
-
|
|
169
|
+
try {
|
|
170
|
+
process.env.PAGERDUTY_TOKEN = config.getString("pagerDuty.apiToken");
|
|
171
|
+
} catch (error) {
|
|
172
|
+
logger.error(`Failed to retrieve PagerDuty API token from config file: ${error}`);
|
|
173
|
+
throw error;
|
|
158
174
|
}
|
|
159
|
-
process.env.PAGERDUTY_TOKEN = `${config.getOptionalString("pagerDuty.apiToken")}`;
|
|
160
175
|
const router = Router__default["default"]();
|
|
161
176
|
router.use(express__default["default"].json());
|
|
162
177
|
router.get("/escalation_policies", async (_, response) => {
|
|
163
|
-
logger.info("Getting escalation policies");
|
|
164
178
|
try {
|
|
165
179
|
const escalationPolicyList = await getAllEscalationPolicies();
|
|
166
180
|
const escalationPolicyDropDownOptions = escalationPolicyList.map((policy) => {
|
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/types.ts","../src/apis/pagerduty.ts","../src/service/router.ts","../src/actions/custom.ts"],"sourcesContent":["export type PagerDutyCreateServiceResponse = {\n service: PagerDutyService;\n};\n\nexport type PagerDutyService = {\n id: string;\n name: string;\n description: string;\n escalationPolicy: PagerDutyEscalationPolicy;\n alertCreation: string;\n incidentUrgencyRule: PagerDutyIncidentUrgencyRule;\n integrations: PagerDutyIntegrations[];\n teams: PagerDutyTeam[];\n status: string;\n type: string;\n summary: string;\n self: string;\n htmlUrl: string;\n};\n\nexport type PagerDutyTeam = {\n id: string;\n type: string;\n summary: string;\n self: string;\n htmlUrl: string;\n};\n\nexport type PagerDutyEscalationPolicy = {\n id: string;\n name: string;\n type: string;\n summary: string;\n self: string;\n htmlUrl: string;\n};\n\nexport type PagerDutyIncidentUrgencyRule = {\n type: string;\n urgency: string;\n};\n\nexport type PagerDutyIntegrations = {\n id: string;\n type: string;\n summary: string;\n self: string;\n htmlUrl: string;\n};\n\nexport type PagerDutyCreateIntegrationResponse = {\n integration: PagerDutyIntegration;\n};\n\nexport type PagerDutyIntegration = {\n id: string;\n type: string;\n summary: string;\n self: string;\n htmlUrl: string;\n name: string;\n service: PagerDutyService;\n createdAt: string;\n vendor: PagerDutyVendor;\n integration_key: string;\n};\n\nexport type PagerDutyVendor = {\n id: string;\n type: string;\n summary: string;\n self: string;\n htmlUrl: string;\n};\n\nexport type PagerDutyEscalationPolicyListResponse = {\n escalation_policies: PagerDutyEscalationPolicy[];\n limit: number;\n offset: number;\n more: boolean;\n total: number;\n};\n\nexport type PagerDutyEscalationPolicyDropDownOption = {\n label: string;\n value: string;\n};\n\nexport class HttpError extends Error {\n constructor(message: string, status: number) {\n super(message);\n this.status = status;\n }\n\n status: number;\n}\n\n\n","import { PagerDutyCreateIntegrationResponse, PagerDutyCreateServiceResponse, PagerDutyEscalationPolicyListResponse, PagerDutyEscalationPolicy, HttpError } from \"../types\";\n\n// Supporting custom actions\n\nexport async function createService(name: string, description: string, escalationPolicyId: string): Promise<[string, string]> { \n let response: Response;\n const baseUrl = 'https://api.pagerduty.com/services';\n const options: RequestInit = {\n method: 'POST',\n body: JSON.stringify({\n name: name,\n description: description,\n escalation_policy: {\n id: escalationPolicyId,\n type: 'escalation_policy_reference',\n },\n }),\n headers: {\n Authorization: `Token token=${process.env.PAGERDUTY_TOKEN}`, \n 'Accept': 'application/vnd.pagerduty+json;version=2',\n 'Content-Type': 'application/json',\n },\n };\n\n try {\n response = await fetch(baseUrl, options);\n } catch (error) {\n throw new Error(`Failed to create service: ${error}`);\n }\n\n switch (response.status) {\n case 400:\n throw new Error(`Failed to create service. Caller provided invalid arguments.`);\n case 401:\n throw new Error(`Failed to create service. Caller did not supply credentials or did not provide the correct credentials.`);\n case 402:\n throw new Error(`Failed to create service. Account does not have the abilities to perform the action.`);\n case 403:\n throw new Error(`Failed to create service. Caller is not authorized to view the requested resource.`);\n default: // 201\n break;\n }\n\n let result: PagerDutyCreateServiceResponse;\n try {\n result = await response.json();\n\n return [result.service.id, result.service.htmlUrl];\n } catch (error) {\n throw new Error(`Failed to parse service information: ${error}`);\n }\n}\n\nexport async function createServiceIntegration(serviceId: string, vendorId: string): Promise<string> {\n let response: Response;\n const baseUrl = 'https://api.pagerduty.com/services';\n const options: RequestInit = {\n method: 'POST',\n body: JSON.stringify({\n integration: {\n name: 'Backstage',\n service: {\n id: serviceId,\n type: 'service_reference',\n },\n vendor: {\n id: vendorId,\n type: 'vendor_reference',\n }\n }\n }),\n headers: {\n Authorization: `Token token=${process.env.PAGERDUTY_TOKEN}`,\n 'Accept': 'application/vnd.pagerduty+json;version=2',\n 'Content-Type': 'application/json',\n },\n };\n\n try {\n response = await fetch(`${baseUrl}/${serviceId}/integrations`, options);\n } catch (error) {\n throw new Error(`Failed to create service: ${error}`);\n }\n\n switch (response.status) {\n case 400:\n throw new Error(`Failed to create service integration. Caller provided invalid arguments.`);\n case 401:\n throw new Error(`Failed to create service integration. Caller did not supply credentials or did not provide the correct credentials.`);\n case 403:\n throw new Error(`Failed to create service integration. Caller is not authorized to view the requested resource.`);\n case 429:\n throw new Error(`Failed to create service integration. Rate limit exceeded.`);\n default: // 201\n break;\n }\n\n let result: PagerDutyCreateIntegrationResponse;\n try {\n result = await response.json();\n\n return result.integration.integration_key;\n\n } catch (error) {\n throw new Error(`Failed to parse service information: ${error}`);\n }\n}\n\n// Supporting router\n\nexport async function getAllEscalationPolicies(): Promise<PagerDutyEscalationPolicy[]> {\n let response: Response;\n const baseUrl = 'https://api.pagerduty.com/escalation_policies';\n const options: RequestInit = {\n method: 'GET',\n headers: {\n Authorization: `Token token=${process.env.PAGERDUTY_TOKEN}`,\n 'Accept': 'application/vnd.pagerduty+json;version=2',\n 'Content-Type': 'application/json',\n },\n };\n\n try {\n response = await fetch(`${baseUrl}?total=true&sort_by=name&limit=100`, options);\n } catch (error) {\n throw new Error(`Failed to retrieve escalation policies: ${error}`);\n }\n\n switch (response.status) {\n case 400:\n throw new HttpError(\"Failed to list escalation policies. Caller provided invalid arguments.\", 400);\n case 401:\n throw new HttpError(\"Failed to list escalation policies. Caller did not supply credentials or did not provide the correct credentials.\", 401);\n case 403:\n throw new HttpError(\"Failed to list escalation policies. Caller is not authorized to view the requested resource.\", 403);\n case 429:\n throw new HttpError(\"Failed to list escalation policies. Rate limit exceeded.\", 429);\n default: // 200\n break;\n }\n\n let result: PagerDutyEscalationPolicyListResponse;\n try {\n result = await response.json();\n\n return result.escalation_policies;\n\n } catch (error) {\n throw new Error(`Failed to parse escalation policy information: ${error}`);\n }\n}\n","import { errorHandler } from '@backstage/backend-common';\nimport { Config } from '@backstage/config';\nimport express from 'express';\nimport Router from 'express-promise-router';\nimport { Logger } from 'winston';\nimport { getAllEscalationPolicies } from '../apis/pagerduty';\nimport { HttpError } from '../types';\n\nexport interface RouterOptions {\n logger: Logger;\n config: Config;\n}\n\nexport async function createRouter(\n options: RouterOptions\n): Promise<express.Router> {\n const { logger, config } = options;\n\n // Load the PagerDuty API token from the config file\n if (config.getOptionalString('pagerDuty.apiToken') === undefined) {\n logger.error('No PagerDuty API token was provided.');\n }\n process.env.PAGERDUTY_TOKEN = `${config.getOptionalString('pagerDuty.apiToken')}`;\n\n // Create the router\n const router = Router();\n router.use(express.json());\n\n // Add routes\n // GET /escalation_policies\n router.get('/escalation_policies', async (_, response) => {\n logger.info('Getting escalation policies');\n\n try {\n const escalationPolicyList = await getAllEscalationPolicies();\n const escalationPolicyDropDownOptions = escalationPolicyList.map((policy) => {\n return {\n label: policy.name,\n value: policy.id,\n };\n });\n\n response.json(escalationPolicyDropDownOptions);\n } catch (error) {\n if (error instanceof HttpError) {\n response.status(error.status).json(`${error.message}`);\n }\n }\n });\n\n // GET /health\n router.get('/health', async (_, response) => {\n response.status(200).json({ status: 'ok' });\n });\n\n // Add error handler\n router.use(errorHandler());\n\n // Return the router\n return router;\n}","import { createTemplateAction } from '@backstage/plugin-scaffolder-node';\nimport { z } from 'zod';\nimport * as api from '../apis/pagerduty';\n\nexport const createPagerDutyServiceAction = () => {\n\n return createTemplateAction<{\n name: string;\n description: string;\n escalationPolicyId: string;\n }>({\n id: 'pagerduty:service:create',\n schema: {\n input: z.object({\n name: z.string().min(1, \"name is required\").describe('Name of the service'),\n description: z.string().min(1, \"description is required\").describe('Description of the service'),\n escalationPolicyId: z.string().min(1, \"Escalation policy is required\").describe('Escalation policy ID'),\n }),\n output: z.object({\n serviceUrl: z.string().describe('PagerDuty Service URL'),\n serviceId: z.string().describe('PagerDuty Service ID'),\n integrationKey: z.string().describe('Backstage Integration Key'),\n }),\n },\n\n async handler(ctx) {\n try {\n // Create service in PagerDuty\n const [serviceId, serviceUrl] = await api.createService(ctx.input.name, ctx.input.description, ctx.input.escalationPolicyId);\n ctx.logger.info(`Service '${ctx.input.name}' created successfully!`);\n\n ctx.output('serviceUrl', serviceUrl);\n ctx.output('serviceId', serviceId);\n\n // Create Backstage Integration in PagerDuty service\n const backstageIntegrationId = 'PRO19CT'; // ID for Backstage integration\n const integrationKey = await api.createServiceIntegration(serviceId, backstageIntegrationId);\n ctx.logger.info(`Backstage Integration for service '${ctx.input.name}' created successfully!`);\n\n ctx.output('integrationKey', integrationKey);\n } catch (error) {\n ctx.logger.error(`${error}`);\n }\n\n }\n });\n};\n"],"names":["Router","express","errorHandler","createTemplateAction","z","api.createService","api.createServiceIntegration"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/types.ts","../src/apis/pagerduty.ts","../src/service/router.ts","../src/actions/custom.ts"],"sourcesContent":["export type PagerDutyCreateServiceResponse = {\n service: PagerDutyService;\n};\n\nexport type PagerDutyService = {\n id: string;\n name: string;\n description: string;\n escalationPolicy: PagerDutyEscalationPolicy;\n alertCreation: string;\n incidentUrgencyRule: PagerDutyIncidentUrgencyRule;\n integrations: PagerDutyIntegrations[];\n teams: PagerDutyTeam[];\n status: string;\n type: string;\n summary: string;\n self: string;\n htmlUrl: string;\n};\n\nexport type PagerDutyTeam = {\n id: string;\n type: string;\n summary: string;\n self: string;\n htmlUrl: string;\n};\n\nexport type PagerDutyEscalationPolicy = {\n id: string;\n name: string;\n type: string;\n summary: string;\n self: string;\n htmlUrl: string;\n};\n\nexport type PagerDutyIncidentUrgencyRule = {\n type: string;\n urgency: string;\n};\n\nexport type PagerDutyIntegrations = {\n id: string;\n type: string;\n summary: string;\n self: string;\n htmlUrl: string;\n};\n\nexport type PagerDutyCreateIntegrationResponse = {\n integration: PagerDutyIntegration;\n};\n\nexport type PagerDutyIntegration = {\n id: string;\n type: string;\n summary: string;\n self: string;\n htmlUrl: string;\n name: string;\n service: PagerDutyService;\n createdAt: string;\n vendor: PagerDutyVendor;\n integration_key: string;\n};\n\nexport type PagerDutyVendor = {\n id: string;\n type: string;\n summary: string;\n self: string;\n htmlUrl: string;\n};\n\nexport type PagerDutyEscalationPolicyListResponse = {\n escalation_policies: PagerDutyEscalationPolicy[];\n limit: number;\n offset: number;\n more: boolean;\n total: number;\n};\n\nexport type PagerDutyEscalationPolicyDropDownOption = {\n label: string;\n value: string;\n};\n\nexport class HttpError extends Error {\n constructor(message: string, status: number) {\n super(message);\n this.status = status;\n }\n\n status: number;\n}\n\n\n","import { PagerDutyCreateIntegrationResponse, PagerDutyCreateServiceResponse, PagerDutyEscalationPolicyListResponse, PagerDutyEscalationPolicy, HttpError } from \"../types\";\n\n// Supporting custom actions\n\nexport async function createService(name: string, description: string, escalationPolicyId: string): Promise<[string, string]> { \n let response: Response;\n const baseUrl = 'https://api.pagerduty.com/services';\n const options: RequestInit = {\n method: 'POST',\n body: JSON.stringify({\n name: name,\n description: description,\n escalation_policy: {\n id: escalationPolicyId,\n type: 'escalation_policy_reference',\n },\n }),\n headers: {\n Authorization: `Token token=${process.env.PAGERDUTY_TOKEN}`, \n 'Accept': 'application/vnd.pagerduty+json;version=2',\n 'Content-Type': 'application/json',\n },\n };\n\n try {\n response = await fetch(baseUrl, options);\n } catch (error) {\n throw new Error(`Failed to create service: ${error}`);\n }\n\n switch (response.status) {\n case 400:\n throw new Error(`Failed to create service. Caller provided invalid arguments.`);\n case 401:\n throw new Error(`Failed to create service. Caller did not supply credentials or did not provide the correct credentials.`);\n case 402:\n throw new Error(`Failed to create service. Account does not have the abilities to perform the action.`);\n case 403:\n throw new Error(`Failed to create service. Caller is not authorized to view the requested resource.`);\n default: // 201\n break;\n }\n\n let result: PagerDutyCreateServiceResponse;\n try {\n result = await response.json();\n\n return [result.service.id, result.service.htmlUrl];\n } catch (error) {\n throw new Error(`Failed to parse service information: ${error}`);\n }\n}\n\nexport async function createServiceIntegration(serviceId: string, vendorId: string): Promise<string> {\n let response: Response;\n const baseUrl = 'https://api.pagerduty.com/services';\n const options: RequestInit = {\n method: 'POST',\n body: JSON.stringify({\n integration: {\n name: 'Backstage',\n service: {\n id: serviceId,\n type: 'service_reference',\n },\n vendor: {\n id: vendorId,\n type: 'vendor_reference',\n }\n }\n }),\n headers: {\n Authorization: `Token token=${process.env.PAGERDUTY_TOKEN}`,\n 'Accept': 'application/vnd.pagerduty+json;version=2',\n 'Content-Type': 'application/json',\n },\n };\n\n try {\n response = await fetch(`${baseUrl}/${serviceId}/integrations`, options);\n } catch (error) {\n throw new Error(`Failed to create service: ${error}`);\n }\n\n switch (response.status) {\n case 400:\n throw new Error(`Failed to create service integration. Caller provided invalid arguments.`);\n case 401:\n throw new Error(`Failed to create service integration. Caller did not supply credentials or did not provide the correct credentials.`);\n case 403:\n throw new Error(`Failed to create service integration. Caller is not authorized to view the requested resource.`);\n case 429:\n throw new Error(`Failed to create service integration. Rate limit exceeded.`);\n default: // 201\n break;\n }\n\n let result: PagerDutyCreateIntegrationResponse;\n try {\n result = await response.json();\n\n return result.integration.integration_key;\n\n } catch (error) {\n throw new Error(`Failed to parse service information: ${error}`);\n }\n}\n\n// Supporting router\n\nasync function getEscalationPolicies(offset: number, limit: number): Promise<[Boolean, PagerDutyEscalationPolicy[]]> {\n let response: Response;\n const options: RequestInit = {\n method: 'GET',\n headers: {\n Authorization: `Token token=${process.env.PAGERDUTY_TOKEN}`,\n 'Accept': 'application/vnd.pagerduty+json;version=2',\n 'Content-Type': 'application/json',\n },\n };\n const baseUrl = 'https://api.pagerduty.com/escalation_policies';\n\n try {\n response = await fetch(`${baseUrl}?total=true&sort_by=name&offset=${offset}&limit=${limit}`, options);\n } catch (error) {\n throw new Error(`Failed to retrieve escalation policies: ${error}`);\n }\n\n switch (response.status) {\n case 400:\n throw new HttpError(\"Failed to list escalation policies. Caller provided invalid arguments.\", 400);\n case 401:\n throw new HttpError(\"Failed to list escalation policies. Caller did not supply credentials or did not provide the correct credentials.\", 401);\n case 403:\n throw new HttpError(\"Failed to list escalation policies. Caller is not authorized to view the requested resource.\", 403);\n case 429:\n throw new HttpError(\"Failed to list escalation policies. Rate limit exceeded.\", 429);\n default: // 200\n break;\n }\n\n let result: PagerDutyEscalationPolicyListResponse;\n try {\n result = await response.json();\n\n return [result.more, result.escalation_policies];\n \n } catch (error) {\n throw new HttpError(`Failed to parse escalation policy information: ${error}`, 500);\n }\n}\n\nexport async function getAllEscalationPolicies(offset: number = 0): Promise<PagerDutyEscalationPolicy[]> {\n const limit = 50;\n\n try {\n const res = await getEscalationPolicies(offset, limit); \n const results = res[1];\n\n // if more results exist\n if (res[0]) {\n return results.concat((await getAllEscalationPolicies(offset + limit)));\n }\n \n return results;\n } catch (error) {\n \n throw new HttpError(`${((error as HttpError).message) }`, ((error as HttpError).status));\n }\n}\n","import { errorHandler } from '@backstage/backend-common';\nimport { Config } from '@backstage/config';\nimport express from 'express';\nimport Router from 'express-promise-router';\nimport { Logger } from 'winston';\nimport { getAllEscalationPolicies } from '../apis/pagerduty';\nimport { HttpError } from '../types';\n\nexport interface RouterOptions {\n logger: Logger;\n config: Config;\n}\n\nexport async function createRouter(\n options: RouterOptions\n): Promise<express.Router> {\n const { logger, config } = options;\n\n // Set the PagerDuty API token as an environment variable if it exists in the config file\n try {\n process.env.PAGERDUTY_TOKEN = config.getString('pagerDuty.apiToken');\n }\n catch (error) {\n logger.error(`Failed to retrieve PagerDuty API token from config file: ${error}`);\n throw error;\n }\n \n // Create the router\n const router = Router();\n router.use(express.json());\n\n // Add routes\n // GET /escalation_policies\n router.get('/escalation_policies', async (_, response) => { \n try {\n const escalationPolicyList = await getAllEscalationPolicies();\n const escalationPolicyDropDownOptions = escalationPolicyList.map((policy) => {\n return {\n label: policy.name,\n value: policy.id,\n };\n });\n\n response.json(escalationPolicyDropDownOptions);\n } catch (error) {\n if (error instanceof HttpError) {\n response.status(error.status).json(`${error.message}`);\n }\n }\n });\n\n // GET /health\n router.get('/health', async (_, response) => {\n response.status(200).json({ status: 'ok' });\n });\n\n // Add error handler\n router.use(errorHandler());\n\n // Return the router\n return router;\n}","import { createTemplateAction } from '@backstage/plugin-scaffolder-node';\nimport { z } from 'zod';\nimport * as api from '../apis/pagerduty';\n\nexport const createPagerDutyServiceAction = () => {\n\n return createTemplateAction<{\n name: string;\n description: string;\n escalationPolicyId: string;\n }>({\n id: 'pagerduty:service:create',\n schema: {\n input: z.object({\n name: z.string().min(1, \"name is required\").describe('Name of the service'),\n description: z.string().min(1, \"description is required\").describe('Description of the service'),\n escalationPolicyId: z.string().min(1, \"Escalation policy is required\").describe('Escalation policy ID'),\n }),\n output: z.object({\n serviceUrl: z.string().describe('PagerDuty Service URL'),\n serviceId: z.string().describe('PagerDuty Service ID'),\n integrationKey: z.string().describe('Backstage Integration Key'),\n }),\n },\n\n async handler(ctx) {\n try {\n // Create service in PagerDuty\n const [serviceId, serviceUrl] = await api.createService(ctx.input.name, ctx.input.description, ctx.input.escalationPolicyId);\n ctx.logger.info(`Service '${ctx.input.name}' created successfully!`);\n\n ctx.output('serviceUrl', serviceUrl);\n ctx.output('serviceId', serviceId);\n\n // Create Backstage Integration in PagerDuty service\n const backstageIntegrationId = 'PRO19CT'; // ID for Backstage integration\n const integrationKey = await api.createServiceIntegration(serviceId, backstageIntegrationId);\n ctx.logger.info(`Backstage Integration for service '${ctx.input.name}' created successfully!`);\n\n ctx.output('integrationKey', integrationKey);\n } catch (error) {\n ctx.logger.error(`${error}`);\n }\n\n }\n });\n};\n"],"names":["Router","express","errorHandler","createTemplateAction","z","api.createService","api.createServiceIntegration"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pagerduty/backstage-plugin-backend",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"main": "dist/index.cjs.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -46,7 +46,9 @@
|
|
|
46
46
|
"typescript": "^4.8.4"
|
|
47
47
|
},
|
|
48
48
|
"files": [
|
|
49
|
-
"dist"
|
|
49
|
+
"dist",
|
|
50
|
+
"config.d.ts"
|
|
50
51
|
],
|
|
52
|
+
"configSchema": "config.d.ts",
|
|
51
53
|
"packageManager": "yarn@3.6.3"
|
|
52
54
|
}
|