@pagerduty/backstage-plugin-scaffolder-actions 0.1.0 → 0.1.1-next.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/dist/index.cjs.js +2 -2
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/package.json +6 -1
package/dist/index.cjs.js
CHANGED
|
@@ -35,8 +35,8 @@ async function loadAuthConfig({ config, legacyConfig, logger }) {
|
|
|
35
35
|
var _a;
|
|
36
36
|
try {
|
|
37
37
|
isLegacyConfig = !config;
|
|
38
|
-
_config = config;
|
|
39
|
-
_legacyConfig = legacyConfig;
|
|
38
|
+
_config = config != null ? config : _config;
|
|
39
|
+
_legacyConfig = legacyConfig != null ? legacyConfig : _legacyConfig;
|
|
40
40
|
_logger = logger;
|
|
41
41
|
authPersistence = {
|
|
42
42
|
authToken: "",
|
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/auth/auth.ts","../src/apis/pagerduty.ts","../src/actions/custom.ts","../src/module.ts"],"sourcesContent":["import { LoggerService, RootConfigService } from \"@backstage/backend-plugin-api\";\nimport { HttpError } from \"@pagerduty/backstage-plugin-common\";\nimport { Config } from \"@backstage/config\";\n\ntype Auth = {\n authToken: string;\n authTokenExpiryDate: number;\n}\n\nexport type LoadAuthConfigProps = {\n config: RootConfigService;\n legacyConfig: Config;\n logger: LoggerService;\n}\n\ntype JsonValue = boolean | number | string | null | JsonArray | JsonObject;\n\ninterface JsonObject {\n [x: string]: JsonValue;\n}\n\ntype JsonArray = JsonValue[];\n\nlet authPersistence: Auth;\nlet isLegacyConfig: boolean;\nlet _config: RootConfigService;\nlet _legacyConfig: Config;\nlet _logger: LoggerService;\n\nexport async function getAuthToken(): Promise<string> {\n // check if token already exists and is valid\n if (\n (authPersistence?.authToken?.includes('Bearer') &&\n authPersistence.authTokenExpiryDate > Date.now()) // case where OAuth token is still valid\n ||\n (authPersistence?.authToken?.includes('Token'))) { // case where API token is used\n return authPersistence.authToken;\n }\n\n await loadAuthConfig({\n config: _config,\n legacyConfig: _legacyConfig,\n logger: _logger,\n });\n return authPersistence.authToken;\n}\n\nexport async function loadAuthConfig({config, legacyConfig, logger}: LoadAuthConfigProps) {\n try {\n // check if we are using new backend system. Fallback to legacy config if not\n isLegacyConfig = !config;\n\n // set config and logger\n _config = config;\n _legacyConfig = legacyConfig;\n _logger = logger;\n\n // initiliaze the authPersistence in-memory object\n authPersistence = {\n authToken: '',\n authTokenExpiryDate: Date.now()\n };\n\n if (!readOptionalString('pagerDuty.apiToken')) {\n logger.warn('No PagerDuty API token found in config file. Trying OAuth token instead...');\n\n if (!readOptionalObject('pagerDuty.oauth')) {\n logger.error('No PagerDuty OAuth configuration found in config file.');\n\n } else if (!readOptionalString('pagerDuty.oauth.clientId') || !readOptionalString('pagerDuty.oauth.clientSecret') || !readOptionalString('pagerDuty.oauth.subDomain')) {\n \n logger.error(\"Missing required PagerDuty OAuth parameters in config file. 'clientId', 'clientSecret', and 'subDomain' are required. 'region' is optional.\");\n\n } else {\n\n authPersistence.authToken = await getOAuthToken(\n readString('pagerDuty.oauth.clientId'),\n readString('pagerDuty.oauth.clientSecret'),\n readString('pagerDuty.oauth.subDomain'),\n readOptionalString('pagerDuty.oauth.region') ?? 'us');\n\n logger.info('PagerDuty OAuth configuration loaded successfully.');\n }\n } else {\n authPersistence.authToken = `Token token=${readString('pagerDuty.apiToken')}`;\n\n logger.info('PagerDuty API token loaded successfully.');\n }\n }\n catch (error) {\n logger.error(`Unable to retrieve valid PagerDuty AUTH configuration from config file: ${error}`);\n }\n}\n\nfunction readOptionalString(key: string) : string | undefined {\n if (isLegacyConfig) {\n return _legacyConfig.getOptionalString(key);\n } \n \n return _config.getOptionalString(key);\n}\n\nfunction readOptionalObject(key: string): JsonValue | undefined {\n if (isLegacyConfig) {\n return _legacyConfig.getOptional(key);\n }\n\n return _config.getOptional(key);\n}\n\nfunction readString(key: string) : string {\n if (isLegacyConfig) {\n return _legacyConfig.getString(key);\n } \n \n return _config.getString(key);\n}\n\n\nasync function getOAuthToken(clientId: string, clientSecret: string, subDomain: string, region: string): Promise<string> {\n // check if required parameters are provided\n if (!clientId || !clientSecret || !subDomain) {\n throw new Error('Missing required PagerDuty OAuth parameters.');\n }\n\n // define the scopes required for the OAuth token\n const scopes = `\n abilities.read \n analytics.read\n change_events.read \n escalation_policies.read \n incidents.read \n oncalls.read \n schedules.read \n services.read \n services.write \n standards.read\n teams.read \n users.read \n vendors.read\n `;\n\n // encode the parameters for the request\n const urlencoded = new URLSearchParams();\n urlencoded.append(\"grant_type\", \"client_credentials\");\n urlencoded.append(\"client_id\", clientId);\n urlencoded.append(\"client_secret\", clientSecret);\n urlencoded.append(\"scope\", `as_account-${region}.${subDomain} ${scopes}`);\n\n let response: Response;\n const options: RequestInit = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: urlencoded,\n };\n const baseUrl = 'https://identity.pagerduty.com/oauth/token';\n\n try {\n response = await fetch(baseUrl, options);\n } catch (error) {\n throw new Error(`Failed to retrieve oauth token: ${error}`);\n }\n\n switch (response.status) {\n case 400:\n throw new HttpError(\"Failed to retrieve valid token. Bad Request - Invalid arguments provided.\", 400);\n case 401:\n throw new HttpError(\"Failed to retrieve valid token. Forbidden - Invalid credentials provided.\", 401);\n default: // 200\n break;\n }\n\n const authResponse = await response.json();\n authPersistence.authTokenExpiryDate = Date.now() + (authResponse.expires_in * 1000);\n return `Bearer ${authResponse.access_token}`;\n}","import fetch from 'node-fetch';\nimport type { RequestInit, Response } from 'node-fetch';\n\nimport { getAuthToken } from '../auth/auth';\nimport {\n CreateServiceResponse,\n} from '../types';\n\nimport {\n PagerDutyServiceResponse,\n PagerDutyIntegrationResponse,\n PagerDutyAbilitiesResponse,\n} from '@pagerduty/backstage-plugin-common';\n\nlet apiBaseUrl = 'https://api.pagerduty.com';\nexport function setAPIBaseUrl(url: string): void {\n apiBaseUrl = url;\n}\n\n// Supporting custom actions\nexport async function createService(name: string, description: string, escalationPolicyId: string, alertGrouping?: string): Promise<CreateServiceResponse> {\n let alertGroupingParameters = \"null\";\n let response: Response;\n const baseUrl = `${apiBaseUrl}/services`;\n\n // Set default body\n let body = JSON.stringify({\n service: {\n type: 'service',\n name: name,\n description: description,\n alert_creation: 'create_alerts_and_incidents',\n auto_pause_notifications_parameters: {\n enabled: true,\n timeout: 300,\n },\n escalation_policy: {\n id: escalationPolicyId,\n type: 'escalation_policy_reference',\n },\n },\n });\n\n // Override body if alert grouping is enabled and passed as parameter\n if (await isEventNoiseReductionEnabled() && alertGrouping !== undefined) {\n alertGroupingParameters = alertGrouping;\n\n switch (alertGroupingParameters) {\n case \"intelligent\":\n body = JSON.stringify({\n service: {\n type: 'service',\n name: name,\n description: description,\n escalation_policy: {\n id: escalationPolicyId,\n type: 'escalation_policy_reference',\n },\n alert_creation: 'create_alerts_and_incidents',\n alert_grouping_parameters: {\n type: alertGroupingParameters,\n },\n auto_pause_notifications_parameters: {\n enabled: true,\n timeout: 300,\n },\n },\n });\n break;\n case \"time\":\n body = JSON.stringify({\n service: {\n type: 'service',\n name: name,\n description: description,\n escalation_policy: {\n id: escalationPolicyId,\n type: 'escalation_policy_reference',\n },\n alert_creation: 'create_alerts_and_incidents',\n alert_grouping_parameters: {\n type: alertGroupingParameters,\n config: {\n timeout: 0,\n },\n },\n auto_pause_notifications_parameters: {\n enabled: true,\n timeout: 300,\n },\n },\n });\n break;\n case \"content_based\":\n body = JSON.stringify({\n service: {\n type: 'service',\n name: name,\n description: description,\n escalation_policy: {\n id: escalationPolicyId,\n type: 'escalation_policy_reference',\n },\n alert_creation: 'create_alerts_and_incidents',\n alert_grouping_parameters: {\n type: alertGroupingParameters,\n config: {\n aggregate: 'all',\n time_window: 0,\n fields: [\n 'source',\n 'summary',\n ],\n },\n },\n auto_pause_notifications_parameters: {\n enabled: true,\n timeout: 300,\n },\n },\n });\n break;\n default:\n break;\n }\n }\n\n const options: RequestInit = {\n method: 'POST',\n body: body,\n headers: {\n Authorization: await getAuthToken(),\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: PagerDutyServiceResponse;\n try {\n result = await response.json() as PagerDutyServiceResponse;\n\n const createServiceResult: CreateServiceResponse = {\n url: result.service.html_url,\n id: result.service.id,\n alertGrouping: alertGroupingParameters,\n };\n\n return createServiceResult;\n\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 = `${apiBaseUrl}/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: await getAuthToken(),\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: PagerDutyIntegrationResponse;\n try {\n result = await response.json() as PagerDutyIntegrationResponse;\n\n return result.integration.integration_key ?? '';\n\n } catch (error) {\n throw new Error(`Failed to parse service information: ${error}`);\n }\n}\n\nexport async function isEventNoiseReductionEnabled(): Promise<boolean> {\n let response: Response;\n const baseUrl = 'https://api.pagerduty.com';\n const options: RequestInit = {\n method: 'GET',\n headers: {\n Authorization: await getAuthToken(),\n 'Accept': 'application/vnd.pagerduty+json;version=2',\n 'Content-Type': 'application/json',\n },\n };\n\n try {\n response = await fetch(`${baseUrl}/abilities`, options);\n } catch (error) {\n throw new Error(`Failed to read abilities: ${error}`);\n }\n\n switch (response.status) {\n case 401:\n throw new Error(`Failed to read abilities. Caller did not supply credentials or did not provide the correct credentials.`);\n case 403:\n throw new Error(`Failed to read abilities. Caller is not authorized to view the requested resource.`);\n case 429:\n throw new Error(`Failed to read abilities. Rate limit exceeded.`);\n default: // 200\n break;\n }\n\n let result: PagerDutyAbilitiesResponse;\n try {\n result = await response.json() as PagerDutyAbilitiesResponse;\n\n if (result.abilities.includes('preview_intelligent_alert_grouping')\n && result.abilities.includes('time_based_alert_grouping')) {\n return true;\n }\n\n return false;\n\n } catch (error) {\n throw new Error(`Failed to parse abilities information: ${error}`);\n }\n}\n","import { createTemplateAction } from '@backstage/plugin-scaffolder-node';\nimport { z } from 'zod';\nimport * as api from '../apis/pagerduty';\nimport { CreateServiceResponse } from '../types';\nimport { loadAuthConfig } from '../auth/auth';\nimport { LoggerService, RootConfigService } from '@backstage/backend-plugin-api';\nimport { Config } from \"@backstage/config\";\nimport { loadBackendConfig } from \"@backstage/backend-common\";\n\nexport type CreatePagerDutyServiceActionProps = {\n config: RootConfigService;\n logger: LoggerService;\n};\n\nexport const createPagerDutyServiceAction = (props : CreatePagerDutyServiceActionProps) => {\n\n let loggerService: LoggerService;\n\n return createTemplateAction<{\n name: string;\n description: string;\n escalationPolicyId: string;\n alertGrouping?: 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 alertGrouping: z.string().optional().describe('Alert grouping parameters'),\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 loggerService = props?.logger ? props.logger : ctx.logger;\n const configService = props?.config ?? props.config;\n\n const legacyConfig: Config = await loadBackendConfig({\n logger: loggerService,\n argv: [],\n });\n\n // Load the auth configuration\n await loadAuthConfig({\n config: configService, \n legacyConfig: legacyConfig,\n logger: loggerService,\n });\n\n // Create service in PagerDuty\n const service: CreateServiceResponse = await api.createService(\n ctx.input.name, \n ctx.input.description, \n ctx.input.escalationPolicyId, \n ctx.input.alertGrouping);\n loggerService.info(`Service '${ctx.input.name}' created successfully!`);\n loggerService.info(`Alert grouping set to '${service.alertGrouping}'`);\n\n ctx.output('serviceUrl', service.url);\n ctx.output('serviceId', service.id);\n\n // Create Backstage Integration in PagerDuty service\n const backstageIntegrationId = 'PRO19CT'; // ID for Backstage integration\n const integrationKey = await api.createServiceIntegration(service.id, backstageIntegrationId);\n loggerService.info(`Backstage Integration for service '${ctx.input.name}' created successfully!`);\n\n ctx.output('integrationKey', integrationKey);\n } catch (error) {\n loggerService.error(`${error}`);\n }\n\n }\n });\n};\n","import { coreServices, createBackendModule } from \"@backstage/backend-plugin-api\";\nimport { scaffolderActionsExtensionPoint } from \"@backstage/plugin-scaffolder-node/alpha\";\nimport { createPagerDutyServiceAction } from \"./actions/custom\";\n\n\n/** @public */\nexport const pagerDutyScaffolderActions = createBackendModule({\n pluginId: 'scaffolder',\n moduleId: 'custom-extensions',\n register(env) {\n env.registerInit({\n deps: {\n config: coreServices.rootConfig,\n logger: coreServices.logger,\n scaffolder: scaffolderActionsExtensionPoint,\n },\n async init({ config, logger, scaffolder }) {\n\n scaffolder.addActions(createPagerDutyServiceAction({\n config,\n logger\n }));\n },\n });\n },\n});"],"names":["HttpError","fetch","createTemplateAction","z","loadBackendConfig","api.createService","api.createServiceIntegration","createBackendModule","coreServices","scaffolderActionsExtensionPoint"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/auth/auth.ts","../src/apis/pagerduty.ts","../src/actions/custom.ts","../src/module.ts"],"sourcesContent":["import { LoggerService, RootConfigService } from \"@backstage/backend-plugin-api\";\nimport { HttpError } from \"@pagerduty/backstage-plugin-common\";\nimport { Config } from \"@backstage/config\";\n\ntype Auth = {\n authToken: string;\n authTokenExpiryDate: number;\n}\n\nexport type LoadAuthConfigProps = {\n config?: RootConfigService;\n legacyConfig?: Config;\n logger: LoggerService;\n}\n\ntype JsonValue = boolean | number | string | null | JsonArray | JsonObject;\n\ninterface JsonObject {\n [x: string]: JsonValue;\n}\n\ntype JsonArray = JsonValue[];\n\nlet authPersistence: Auth;\nlet isLegacyConfig: boolean;\nlet _config: RootConfigService;\nlet _legacyConfig: Config;\nlet _logger: LoggerService;\n\nexport async function getAuthToken(): Promise<string> {\n // check if token already exists and is valid\n if (\n (authPersistence?.authToken?.includes('Bearer') &&\n authPersistence.authTokenExpiryDate > Date.now()) // case where OAuth token is still valid\n ||\n (authPersistence?.authToken?.includes('Token'))) { // case where API token is used\n return authPersistence.authToken;\n }\n\n await loadAuthConfig({\n config: _config,\n legacyConfig: _legacyConfig,\n logger: _logger,\n });\n return authPersistence.authToken;\n}\n\nexport async function loadAuthConfig({config, legacyConfig, logger}: LoadAuthConfigProps) {\n try {\n // check if we are using new backend system. Fallback to legacy config if not\n isLegacyConfig = !config;\n\n // set config and logger\n _config = config ?? _config;\n _legacyConfig = legacyConfig ?? _legacyConfig;\n _logger = logger;\n\n // initiliaze the authPersistence in-memory object\n authPersistence = {\n authToken: '',\n authTokenExpiryDate: Date.now()\n };\n\n if (!readOptionalString('pagerDuty.apiToken')) {\n logger.warn('No PagerDuty API token found in config file. Trying OAuth token instead...');\n\n if (!readOptionalObject('pagerDuty.oauth')) {\n logger.error('No PagerDuty OAuth configuration found in config file.');\n\n } else if (!readOptionalString('pagerDuty.oauth.clientId') || !readOptionalString('pagerDuty.oauth.clientSecret') || !readOptionalString('pagerDuty.oauth.subDomain')) {\n \n logger.error(\"Missing required PagerDuty OAuth parameters in config file. 'clientId', 'clientSecret', and 'subDomain' are required. 'region' is optional.\");\n\n } else {\n\n authPersistence.authToken = await getOAuthToken(\n readString('pagerDuty.oauth.clientId'),\n readString('pagerDuty.oauth.clientSecret'),\n readString('pagerDuty.oauth.subDomain'),\n readOptionalString('pagerDuty.oauth.region') ?? 'us');\n\n logger.info('PagerDuty OAuth configuration loaded successfully.');\n }\n } else {\n authPersistence.authToken = `Token token=${readString('pagerDuty.apiToken')}`;\n\n logger.info('PagerDuty API token loaded successfully.');\n }\n }\n catch (error) {\n logger.error(`Unable to retrieve valid PagerDuty AUTH configuration from config file: ${error}`);\n }\n}\n\nfunction readOptionalString(key: string) : string | undefined {\n if (isLegacyConfig) {\n return _legacyConfig.getOptionalString(key);\n } \n \n return _config.getOptionalString(key);\n}\n\nfunction readOptionalObject(key: string): JsonValue | undefined {\n if (isLegacyConfig) {\n return _legacyConfig.getOptional(key);\n }\n\n return _config.getOptional(key);\n}\n\nfunction readString(key: string) : string {\n if (isLegacyConfig) {\n return _legacyConfig.getString(key);\n } \n \n return _config.getString(key);\n}\n\n\nasync function getOAuthToken(clientId: string, clientSecret: string, subDomain: string, region: string): Promise<string> {\n // check if required parameters are provided\n if (!clientId || !clientSecret || !subDomain) {\n throw new Error('Missing required PagerDuty OAuth parameters.');\n }\n\n // define the scopes required for the OAuth token\n const scopes = `\n abilities.read \n analytics.read\n change_events.read \n escalation_policies.read \n incidents.read \n oncalls.read \n schedules.read \n services.read \n services.write \n standards.read\n teams.read \n users.read \n vendors.read\n `;\n\n // encode the parameters for the request\n const urlencoded = new URLSearchParams();\n urlencoded.append(\"grant_type\", \"client_credentials\");\n urlencoded.append(\"client_id\", clientId);\n urlencoded.append(\"client_secret\", clientSecret);\n urlencoded.append(\"scope\", `as_account-${region}.${subDomain} ${scopes}`);\n\n let response: Response;\n const options: RequestInit = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: urlencoded,\n };\n const baseUrl = 'https://identity.pagerduty.com/oauth/token';\n\n try {\n response = await fetch(baseUrl, options);\n } catch (error) {\n throw new Error(`Failed to retrieve oauth token: ${error}`);\n }\n\n switch (response.status) {\n case 400:\n throw new HttpError(\"Failed to retrieve valid token. Bad Request - Invalid arguments provided.\", 400);\n case 401:\n throw new HttpError(\"Failed to retrieve valid token. Forbidden - Invalid credentials provided.\", 401);\n default: // 200\n break;\n }\n\n const authResponse = await response.json();\n authPersistence.authTokenExpiryDate = Date.now() + (authResponse.expires_in * 1000);\n return `Bearer ${authResponse.access_token}`;\n}","import fetch from 'node-fetch';\nimport type { RequestInit, Response } from 'node-fetch';\n\nimport { getAuthToken } from '../auth/auth';\nimport {\n CreateServiceResponse,\n} from '../types';\n\nimport {\n PagerDutyServiceResponse,\n PagerDutyIntegrationResponse,\n PagerDutyAbilitiesResponse,\n} from '@pagerduty/backstage-plugin-common';\n\nlet apiBaseUrl = 'https://api.pagerduty.com';\nexport function setAPIBaseUrl(url: string): void {\n apiBaseUrl = url;\n}\n\n// Supporting custom actions\nexport async function createService(name: string, description: string, escalationPolicyId: string, alertGrouping?: string): Promise<CreateServiceResponse> {\n let alertGroupingParameters = \"null\";\n let response: Response;\n const baseUrl = `${apiBaseUrl}/services`;\n\n // Set default body\n let body = JSON.stringify({\n service: {\n type: 'service',\n name: name,\n description: description,\n alert_creation: 'create_alerts_and_incidents',\n auto_pause_notifications_parameters: {\n enabled: true,\n timeout: 300,\n },\n escalation_policy: {\n id: escalationPolicyId,\n type: 'escalation_policy_reference',\n },\n },\n });\n\n // Override body if alert grouping is enabled and passed as parameter\n if (await isEventNoiseReductionEnabled() && alertGrouping !== undefined) {\n alertGroupingParameters = alertGrouping;\n\n switch (alertGroupingParameters) {\n case \"intelligent\":\n body = JSON.stringify({\n service: {\n type: 'service',\n name: name,\n description: description,\n escalation_policy: {\n id: escalationPolicyId,\n type: 'escalation_policy_reference',\n },\n alert_creation: 'create_alerts_and_incidents',\n alert_grouping_parameters: {\n type: alertGroupingParameters,\n },\n auto_pause_notifications_parameters: {\n enabled: true,\n timeout: 300,\n },\n },\n });\n break;\n case \"time\":\n body = JSON.stringify({\n service: {\n type: 'service',\n name: name,\n description: description,\n escalation_policy: {\n id: escalationPolicyId,\n type: 'escalation_policy_reference',\n },\n alert_creation: 'create_alerts_and_incidents',\n alert_grouping_parameters: {\n type: alertGroupingParameters,\n config: {\n timeout: 0,\n },\n },\n auto_pause_notifications_parameters: {\n enabled: true,\n timeout: 300,\n },\n },\n });\n break;\n case \"content_based\":\n body = JSON.stringify({\n service: {\n type: 'service',\n name: name,\n description: description,\n escalation_policy: {\n id: escalationPolicyId,\n type: 'escalation_policy_reference',\n },\n alert_creation: 'create_alerts_and_incidents',\n alert_grouping_parameters: {\n type: alertGroupingParameters,\n config: {\n aggregate: 'all',\n time_window: 0,\n fields: [\n 'source',\n 'summary',\n ],\n },\n },\n auto_pause_notifications_parameters: {\n enabled: true,\n timeout: 300,\n },\n },\n });\n break;\n default:\n break;\n }\n }\n\n const options: RequestInit = {\n method: 'POST',\n body: body,\n headers: {\n Authorization: await getAuthToken(),\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: PagerDutyServiceResponse;\n try {\n result = await response.json() as PagerDutyServiceResponse;\n\n const createServiceResult: CreateServiceResponse = {\n url: result.service.html_url,\n id: result.service.id,\n alertGrouping: alertGroupingParameters,\n };\n\n return createServiceResult;\n\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 = `${apiBaseUrl}/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: await getAuthToken(),\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: PagerDutyIntegrationResponse;\n try {\n result = await response.json() as PagerDutyIntegrationResponse;\n\n return result.integration.integration_key ?? '';\n\n } catch (error) {\n throw new Error(`Failed to parse service information: ${error}`);\n }\n}\n\nexport async function isEventNoiseReductionEnabled(): Promise<boolean> {\n let response: Response;\n const baseUrl = 'https://api.pagerduty.com';\n const options: RequestInit = {\n method: 'GET',\n headers: {\n Authorization: await getAuthToken(),\n 'Accept': 'application/vnd.pagerduty+json;version=2',\n 'Content-Type': 'application/json',\n },\n };\n\n try {\n response = await fetch(`${baseUrl}/abilities`, options);\n } catch (error) {\n throw new Error(`Failed to read abilities: ${error}`);\n }\n\n switch (response.status) {\n case 401:\n throw new Error(`Failed to read abilities. Caller did not supply credentials or did not provide the correct credentials.`);\n case 403:\n throw new Error(`Failed to read abilities. Caller is not authorized to view the requested resource.`);\n case 429:\n throw new Error(`Failed to read abilities. Rate limit exceeded.`);\n default: // 200\n break;\n }\n\n let result: PagerDutyAbilitiesResponse;\n try {\n result = await response.json() as PagerDutyAbilitiesResponse;\n\n if (result.abilities.includes('preview_intelligent_alert_grouping')\n && result.abilities.includes('time_based_alert_grouping')) {\n return true;\n }\n\n return false;\n\n } catch (error) {\n throw new Error(`Failed to parse abilities information: ${error}`);\n }\n}\n","import { createTemplateAction } from '@backstage/plugin-scaffolder-node';\nimport { z } from 'zod';\nimport * as api from '../apis/pagerduty';\nimport { CreateServiceResponse } from '../types';\nimport { loadAuthConfig } from '../auth/auth';\nimport { LoggerService, RootConfigService } from '@backstage/backend-plugin-api';\nimport { Config } from \"@backstage/config\";\nimport { loadBackendConfig } from \"@backstage/backend-common\";\n\nexport type CreatePagerDutyServiceActionProps = {\n config?: RootConfigService;\n logger?: LoggerService;\n};\n\nexport const createPagerDutyServiceAction = (props : CreatePagerDutyServiceActionProps) => {\n\n let loggerService: LoggerService;\n\n return createTemplateAction<{\n name: string;\n description: string;\n escalationPolicyId: string;\n alertGrouping?: 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 alertGrouping: z.string().optional().describe('Alert grouping parameters'),\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 loggerService = props?.logger ? props.logger : ctx.logger;\n const configService = props?.config ?? props.config;\n\n const legacyConfig: Config = await loadBackendConfig({\n logger: loggerService,\n argv: [],\n });\n\n // Load the auth configuration\n await loadAuthConfig({\n config: configService, \n legacyConfig: legacyConfig,\n logger: loggerService,\n });\n\n // Create service in PagerDuty\n const service: CreateServiceResponse = await api.createService(\n ctx.input.name, \n ctx.input.description, \n ctx.input.escalationPolicyId, \n ctx.input.alertGrouping);\n loggerService.info(`Service '${ctx.input.name}' created successfully!`);\n loggerService.info(`Alert grouping set to '${service.alertGrouping}'`);\n\n ctx.output('serviceUrl', service.url);\n ctx.output('serviceId', service.id);\n\n // Create Backstage Integration in PagerDuty service\n const backstageIntegrationId = 'PRO19CT'; // ID for Backstage integration\n const integrationKey = await api.createServiceIntegration(service.id, backstageIntegrationId);\n loggerService.info(`Backstage Integration for service '${ctx.input.name}' created successfully!`);\n\n ctx.output('integrationKey', integrationKey);\n } catch (error) {\n loggerService.error(`${error}`);\n }\n\n }\n });\n};\n","import { coreServices, createBackendModule } from \"@backstage/backend-plugin-api\";\nimport { scaffolderActionsExtensionPoint } from \"@backstage/plugin-scaffolder-node/alpha\";\nimport { createPagerDutyServiceAction } from \"./actions/custom\";\n\n\n/** @public */\nexport const pagerDutyScaffolderActions = createBackendModule({\n pluginId: 'scaffolder',\n moduleId: 'custom-extensions',\n register(env) {\n env.registerInit({\n deps: {\n config: coreServices.rootConfig,\n logger: coreServices.logger,\n scaffolder: scaffolderActionsExtensionPoint,\n },\n async init({ config, logger, scaffolder }) {\n\n scaffolder.addActions(createPagerDutyServiceAction({\n config,\n logger\n }));\n },\n });\n },\n});"],"names":["HttpError","fetch","createTemplateAction","z","loadBackendConfig","api.createService","api.createServiceIntegration","createBackendModule","coreServices","scaffolderActionsExtensionPoint"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,8 +7,8 @@ import * as _backstage_types from '@backstage/types';
|
|
|
7
7
|
declare const pagerDutyScaffolderActions: () => _backstage_backend_plugin_api.BackendFeature;
|
|
8
8
|
|
|
9
9
|
type CreatePagerDutyServiceActionProps = {
|
|
10
|
-
config
|
|
11
|
-
logger
|
|
10
|
+
config?: RootConfigService;
|
|
11
|
+
logger?: LoggerService;
|
|
12
12
|
};
|
|
13
13
|
declare const createPagerDutyServiceAction: (props: CreatePagerDutyServiceActionProps) => _backstage_plugin_scaffolder_node.TemplateAction<{
|
|
14
14
|
name: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pagerduty/backstage-plugin-scaffolder-actions",
|
|
3
|
-
"version": "0.1.0",
|
|
3
|
+
"version": "0.1.1-next.0",
|
|
4
4
|
"main": "dist/index.cjs.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -12,6 +12,11 @@
|
|
|
12
12
|
"backstage": {
|
|
13
13
|
"role": "backend-plugin-module"
|
|
14
14
|
},
|
|
15
|
+
"homepage": "https://github.com/pagerduty/backstage-plugin-scaffolder-actions",
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "https://github.com/pagerduty/backstage-plugin-scaffolder-actions.git"
|
|
19
|
+
},
|
|
15
20
|
"scripts": {
|
|
16
21
|
"start": "yarn tsc && backstage-cli package start",
|
|
17
22
|
"build": "yarn tsc && backstage-cli package build",
|