@pagerduty/backstage-plugin-entity-processor 0.3.0-next.19 → 0.3.0-next.20

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 CHANGED
@@ -66,6 +66,7 @@ class PagerDutyClient {
66
66
  if (this.baseUrl === "") {
67
67
  this.baseUrl = await this.discovery.getBaseUrl("pagerduty");
68
68
  }
69
+ this.logger.info(`Adding mapping for ${mapping.entityRef} to database with payload: ${JSON.stringify(mapping)}`);
69
70
  const options = {
70
71
  method: "POST",
71
72
  headers: {
@@ -181,7 +182,7 @@ class PagerDutyEntityProcessor {
181
182
  return "PagerDutyEntityProcessor";
182
183
  }
183
184
  async postProcessEntity(entity) {
184
- var _a, _b, _c;
185
+ var _a, _b, _c, _d;
185
186
  if (this.shouldProcessEntity(entity)) {
186
187
  try {
187
188
  const mapping = await client.findServiceMapping({
@@ -228,7 +229,7 @@ class PagerDutyEntityProcessor {
228
229
  if (serviceId && (dependencyAnnotations == null ? void 0 : dependencyAnnotations.length) > 0) {
229
230
  const entityDependencies = await buildExistingDependencies(dependencyAnnotations);
230
231
  this.logger.info(`Dependencies from Annotations in ${serviceId}: ${JSON.stringify(entityDependencies)}`);
231
- const account = entity.metadata.annotations["pagerduty.com/account"];
232
+ const account = (_c = entity.metadata.annotations) == null ? void 0 : _c["pagerduty.com/account"];
232
233
  const dependencies = await client.getServiceDependencies(serviceId, account);
233
234
  const filteredDependencies = dependencies.filter((x) => x.dependent_service.id === serviceId);
234
235
  const dependencyIds = filteredDependencies.map((x) => x.supporting_service.id);
@@ -247,7 +248,7 @@ class PagerDutyEntityProcessor {
247
248
  } else {
248
249
  this.logger.info(`No dependencies found for entity: ${entity.metadata.name}`);
249
250
  }
250
- if ((_c = entity.spec) == null ? void 0 : _c.dependencyOf) {
251
+ if ((_d = entity.spec) == null ? void 0 : _d.dependencyOf) {
251
252
  this.logger.info(`Processing dependents for entity: ${entity.metadata.name}. Dependents: ${JSON.stringify(entity.spec.dependencyOf)}`);
252
253
  }
253
254
  } catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/apis/client.ts","../src/processor/PagerDutyEntityProcessor.ts","../src/module.ts"],"sourcesContent":["import fetch from 'node-fetch';\nimport type { RequestInit, Response } from 'node-fetch';\nimport type { EntityMapping } from '../types';\nimport { DiscoveryService, LoggerService } from '@backstage/backend-plugin-api';\nimport { PagerDutyEntityMapping, PagerDutyEntityMappingResponse, PagerDutyServiceDependency, PagerDutyServiceDependencyResponse } from '@pagerduty/backstage-plugin-common';\n\nexport interface PagerDutyClientOptions {\n discovery: DiscoveryService;\n logger: LoggerService;\n};\n\nexport type BackstageEntityRef = {\n type: string;\n namespace: string;\n name: string;\n}\n\nexport class PagerDutyClient {\n private discovery: DiscoveryService;\n private logger: LoggerService;\n private baseUrl: string = \"\";\n \n constructor({ discovery, logger }: PagerDutyClientOptions) {\n this.discovery = discovery;\n this.logger = logger;\n }\n\n async findServiceMapping({ type, namespace, name }: BackstageEntityRef): Promise<EntityMapping> {\n let response: Response;\n\n if (this.baseUrl === \"\") {\n this.baseUrl = await this.discovery.getBaseUrl('pagerduty');\n }\n\n const options: RequestInit = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json; charset=UTF-8',\n Accept: 'application/json, text/plain, */*',\n },\n };\n\n const url = `${await this.discovery.getBaseUrl(\n 'pagerduty',\n )}/mapping/entity/${type}/${namespace}/${name}`;\n\n try {\n response = await fetch(url, options);\n\n const foundMapping: PagerDutyEntityMappingResponse = await response.json(); \n\n switch (response.status) {\n case 400: \n throw new Error(await response.text());\n case 404:\n return {};\n default: // 200\n this.logger.debug(`Found mapping for ${type}:${namespace}/${name}: ${JSON.stringify(foundMapping.mapping)}`);\n\n return {\n serviceId: foundMapping.mapping.serviceId,\n integrationKey: foundMapping.mapping.integrationKey,\n entityRef: foundMapping.mapping.entityRef,\n account: foundMapping.mapping.account,\n }\n }\n } catch (error) {\n this.logger.error(`Failed to retrieve mapping for ${type}:${namespace}/${name}: ${error}`);\n throw new Error(`Failed to retrieve mapping for ${type}:${namespace}/${name}: ${error}`);\n }\n }\n\n async insertServiceMapping(mapping: PagerDutyEntityMapping): Promise<void> {\n let response: Response;\n\n if (this.baseUrl === \"\") {\n this.baseUrl = await this.discovery.getBaseUrl('pagerduty');\n }\n\n const options: RequestInit = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json; charset=UTF-8',\n Accept: 'application/json, text/plain, */*',\n },\n body: JSON.stringify(mapping),\n };\n\n const url = `${await this.discovery.getBaseUrl(\n 'pagerduty',\n )}/mapping/entity`;\n\n try {\n response = await fetch(url, options);\n\n if(!response.ok) {\n throw new Error(await response.text());\n }\n\n this.logger.info(`Mapping for ${mapping.entityRef} added to database.`); \n } catch (error) {\n this.logger.error(`Failed to add mapping for ${mapping.entityRef}: ${error}`);\n throw new Error(`Failed to add mapping for ${mapping.entityRef}: ${error}`);\n }\n }\n\n async getServiceDependencies(serviceId: string, account?: string): Promise<PagerDutyServiceDependency[]> {\n let response: Response;\n\n if (this.baseUrl === \"\") {\n this.baseUrl = await this.discovery.getBaseUrl('pagerduty');\n }\n\n const options: RequestInit = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json; charset=UTF-8',\n Accept: 'application/json, text/plain, */*',\n },\n };\n\n let url = `${await this.discovery.getBaseUrl(\n 'pagerduty',\n )}/dependencies/service/${serviceId}`;\n\n if (account) {\n url = url.concat(`?account=${account}`);\n }\n\n try {\n response = await fetch(url, options);\n\n const foundDependencies: PagerDutyServiceDependencyResponse = await response.json();\n\n switch (response.status) {\n case 400:\n throw new Error(await response.text());\n case 404:\n return [];\n default: // 200\n this.logger.info(`Found dependencies for ${serviceId}: ${JSON.stringify(foundDependencies.relationships)}`);\n return foundDependencies.relationships;\n }\n } catch (error) {\n this.logger.error(`Failed to retrieve mapping for ${serviceId}: ${error}`);\n throw new Error(`Failed to retrieve mapping for ${serviceId}: ${error}`);\n }\n }\n\n async getServiceIdAnnotationFromCatalog(entityRef: string): Promise<string> {\n let response: Response;\n\n if (this.baseUrl === \"\") {\n this.baseUrl = await this.discovery.getBaseUrl('pagerduty');\n }\n\n const options: RequestInit = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json; charset=UTF-8',\n Accept: 'application/json, text/plain, */*',\n },\n };\n\n // extract type, namespace and name from type:namespace/name\n const [type, rest] = entityRef.split(':');\n const [namespace, name] = rest.split('/');\n\n const url = `${await this.discovery.getBaseUrl(\n 'pagerduty',\n )}/catalog/entity/${type}/${namespace}/${name}`;\n\n try {\n response = await fetch(url, options);\n\n const foundServiceId: string = await response.json();\n\n switch (response.status) {\n case 400:\n throw new Error(await response.text());\n case 404:\n return \"\";\n default: // 200\n this.logger.info(`Found serviceId for ${entityRef}: ${JSON.stringify(foundServiceId)}`);\n\n return foundServiceId;\n }\n } catch (error) {\n this.logger.error(`Failed to retrieve a PagerDuty service id for ${entityRef}: ${error}`);\n throw new Error(`Failed to retrieve a PagerDuty service id for ${entityRef}: ${error}`);\n }\n }\n\n}","import { DiscoveryService, LoggerService } from \"@backstage/backend-plugin-api\";\nimport { Entity } from \"@backstage/catalog-model\";\nimport { CatalogProcessor } from \"@backstage/plugin-catalog-node\";\nimport { PagerDutyClient } from \"../apis/client\";\n\n/**\n * A function which given an entity, determines if it should be processed for linguist tags.\n * @public\n */\nexport type ShouldProcessEntity = (entity: Entity) => boolean;\n\nexport interface PagerDutyEntityProcessorOptions {\n logger: LoggerService;\n discovery: DiscoveryService;\n};\n\nlet client : PagerDutyClient;\n\nexport class PagerDutyEntityProcessor implements CatalogProcessor {\n private logger: LoggerService;\n private discovery: DiscoveryService;\n\n private shouldProcessEntity: ShouldProcessEntity = (entity: Entity) => {\n return entity.kind === 'Component';\n }\n\n constructor({ logger, discovery }: PagerDutyEntityProcessorOptions) {\n this.logger = logger;\n this.discovery = discovery;\n\n client = new PagerDutyClient({ discovery: this.discovery, logger: this.logger });\n }\n\n getProcessorName(): string {\n return \"PagerDutyEntityProcessor\";\n }\n\n async postProcessEntity(entity: Entity): Promise<Entity> {\n if (this.shouldProcessEntity(entity)) {\n try {\n // Process service mapping overrides\n // Find the service mapping for the entity in database\n const mapping = await client.findServiceMapping({\n type: entity.kind.toLowerCase(),\n namespace: entity.metadata.namespace!.toLowerCase(),\n name: entity.metadata.name.toLowerCase(),\n });\n\n // If mapping exists add the annotations to the entity\n if (mapping.serviceId) { \n \n // If serviceId is present, add the annotations to the entity\n if (mapping.serviceId && mapping.serviceId !== \"\") {\n entity.metadata.annotations![\"pagerduty.com/service-id\"] = mapping.serviceId;\n }\n else {\n delete entity.metadata.annotations![\"pagerduty.com/service-id\"];\n }\n\n // If integrationKey is present, add the annotations to the entity\n if (mapping.integrationKey && mapping.integrationKey !== \"\") {\n entity.metadata.annotations![\"pagerduty.com/integration-key\"] = mapping.integrationKey;\n }\n else {\n delete entity.metadata.annotations![\"pagerduty.com/integration-key\"];\n }\n\n // If account is present, add the annotations to the entity\n if (mapping.account && mapping.account !== \"\") {\n entity.metadata.annotations![\"pagerduty.com/account\"] = mapping.account;\n }\n else {\n delete entity.metadata.annotations![\"pagerduty.com/account\"];\n }\n\n this.logger.debug(`Added annotations to entity ${entity.metadata.name} with service id: ${mapping.serviceId}, integration key: ${mapping.integrationKey} and account: ${mapping.account}`);\n } else {\n this.logger.debug(`No mapping found for entity: ${entity.metadata.name}. Adding annotations to the database.`);\n\n // Add the mapping to the database based on entity annotations\n const serviceId = entity.metadata.annotations![\"pagerduty.com/service-id\"];\n const integrationKey = entity.metadata.annotations![\"pagerduty.com/integration-key\"];\n const account = entity.metadata.annotations![\"pagerduty.com/account\"];\n\n if (serviceId) {\n // Build the entityRef string\n const entityRef = `${entity.kind.toLowerCase()}:${entity.metadata.namespace!.toLowerCase()}/${entity.metadata.name.toLowerCase()}`;\n\n await client.insertServiceMapping({\n entityRef,\n serviceId,\n integrationKey,\n account,\n });\n }\n }\n\n // Process service dependencies\n if(entity.spec?.dependsOn){\n // Check if ServiceId exists get service dependencies from PagerDuty \n const serviceId = entity.metadata.annotations![\"pagerduty.com/service-id\"];\n\n // Check if service has dependencies configured\n const dependencyAnnotations: string[] = JSON.parse(JSON.stringify(entity.spec?.dependsOn));\n this.logger.info(`Existing dependencies for entity: ${entity.metadata.name}. Dependencies: ${JSON.stringify(dependencyAnnotations)}`);\n\n if (serviceId && dependencyAnnotations?.length > 0) {\n const entityDependencies: string[] = await buildExistingDependencies(dependencyAnnotations);\n this.logger.info(`Dependencies from Annotations in ${serviceId}: ${JSON.stringify(entityDependencies)}`);\n\n // Get dependencies from PagerDuty for the service\n const account = entity.metadata.annotations![\"pagerduty.com/account\"];\n const dependencies = await client.getServiceDependencies(serviceId, account);\n const filteredDependencies = dependencies.filter(x => x.dependent_service.id === serviceId);\n const dependencyIds = filteredDependencies.map(x => x.supporting_service.id);\n\n this.logger.info(`Filtered dependencies from PagerDuty service ${serviceId}: ${JSON.stringify(filteredDependencies)}`);\n this.logger.info(`Dependencies from PagerDuty service ${serviceId}: ${JSON.stringify(dependencyIds)}`);\n\n // compare dependencies with existing dependencies defined on the entity\n // const newDependencies = dependencies.filter((dependency) => existingDependencies.includes(dependency.dependent_service.id) && !existingDependencies.includes(dependency.dependent_service.id) && dependency.dependent_service.id !== serviceId);\n const dependenciesToAdd = dependencyIds.filter(x => !entityDependencies.includes(x));\n this.logger.info(`Dependencies missing in PagerDuty: ${JSON.stringify(dependenciesToAdd)}`);\n const dependenciesToRemove = entityDependencies.filter(x => !dependencyIds.includes(x));\n this.logger.info(`Dependencies missing in Backstage: ${JSON.stringify(dependenciesToRemove)}`);\n\n const newDependencies = [...dependenciesToAdd, ...dependenciesToRemove];\n \n this.logger.info(`Updated dependencies for service: ${serviceId}. New dependencies: ${JSON.stringify(newDependencies)}`);\n\n // Update dependencies on PagerDuty\n if (newDependencies.length > 0){\n // await client.updateServiceDependencies(serviceId, newDependencies);\n this.logger.info(`Updated dependencies for service: ${serviceId}. New dependencies: ${JSON.stringify(newDependencies)}`);\n }\n }\n }\n else {\n this.logger.info(`No dependencies found for entity: ${entity.metadata.name}`);\n }\n\n if(entity.spec?.dependencyOf){\n this.logger.info(`Processing dependents for entity: ${entity.metadata.name}. Dependents: ${JSON.stringify(entity.spec.dependencyOf)}`);\n }\n\n } catch (error) {\n this.logger.error(`Error processing entity: ${entity.metadata.name}`);\n this.logger.error(`${error}`);\n }\n }\n\n return entity;\n }\n}\n\nasync function buildExistingDependencies(dependencyAnnotations: string[]): Promise<string[]> {\n const dependencies: string[] = [];\n\n // Get all service ids matching the dependency annotations\n await Promise.all(\n dependencyAnnotations.map(async (dependency) => {\n const foundServiceId = await client.getServiceIdAnnotationFromCatalog(dependency);\n console.log(`Found service id for ${dependency}: ${foundServiceId}`);\n\n if (foundServiceId !== \"\") {\n dependencies.push(foundServiceId);\n }\n })\n );\n\n return dependencies;\n\n}","import { coreServices, createBackendModule } from \"@backstage/backend-plugin-api\";\nimport { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';\nimport { PagerDutyEntityProcessor } from \"./processor\";\n\n/** @public */\nexport const pagerDutyEntityProcessor = createBackendModule({\n pluginId: 'catalog',\n moduleId: 'pagerduty-entity-processor',\n register(env) {\n env.registerInit({\n deps: {\n logger: coreServices.logger,\n catalog: catalogProcessingExtensionPoint,\n discovery: coreServices.discovery,\n },\n async init({ logger, discovery, catalog }) {\n catalog.addProcessor(new PagerDutyEntityProcessor({ logger, discovery}));\n },\n });\n },\n});\n"],"names":["__publicField","fetch","createBackendModule","coreServices","catalogProcessingExtensionPoint"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/apis/client.ts","../src/processor/PagerDutyEntityProcessor.ts","../src/module.ts"],"sourcesContent":["import fetch from 'node-fetch';\nimport type { RequestInit, Response } from 'node-fetch';\nimport type { EntityMapping } from '../types';\nimport { DiscoveryService, LoggerService } from '@backstage/backend-plugin-api';\nimport { PagerDutyEntityMapping, PagerDutyEntityMappingResponse, PagerDutyServiceDependency, PagerDutyServiceDependencyResponse } from '@pagerduty/backstage-plugin-common';\n\nexport interface PagerDutyClientOptions {\n discovery: DiscoveryService;\n logger: LoggerService;\n};\n\nexport type BackstageEntityRef = {\n type: string;\n namespace: string;\n name: string;\n}\n\nexport class PagerDutyClient {\n private discovery: DiscoveryService;\n private logger: LoggerService;\n private baseUrl: string = \"\";\n \n constructor({ discovery, logger }: PagerDutyClientOptions) {\n this.discovery = discovery;\n this.logger = logger;\n }\n\n async findServiceMapping({ type, namespace, name }: BackstageEntityRef): Promise<EntityMapping> {\n let response: Response;\n\n if (this.baseUrl === \"\") {\n this.baseUrl = await this.discovery.getBaseUrl('pagerduty');\n }\n\n const options: RequestInit = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json; charset=UTF-8',\n Accept: 'application/json, text/plain, */*',\n },\n };\n\n const url = `${await this.discovery.getBaseUrl(\n 'pagerduty',\n )}/mapping/entity/${type}/${namespace}/${name}`;\n\n try {\n response = await fetch(url, options);\n\n const foundMapping: PagerDutyEntityMappingResponse = await response.json(); \n\n switch (response.status) {\n case 400: \n throw new Error(await response.text());\n case 404:\n return {};\n default: // 200\n this.logger.debug(`Found mapping for ${type}:${namespace}/${name}: ${JSON.stringify(foundMapping.mapping)}`);\n\n return {\n serviceId: foundMapping.mapping.serviceId,\n integrationKey: foundMapping.mapping.integrationKey,\n entityRef: foundMapping.mapping.entityRef,\n account: foundMapping.mapping.account,\n }\n }\n } catch (error) {\n this.logger.error(`Failed to retrieve mapping for ${type}:${namespace}/${name}: ${error}`);\n throw new Error(`Failed to retrieve mapping for ${type}:${namespace}/${name}: ${error}`);\n }\n }\n\n async insertServiceMapping(mapping: PagerDutyEntityMapping): Promise<void> {\n let response: Response;\n\n if (this.baseUrl === \"\") {\n this.baseUrl = await this.discovery.getBaseUrl('pagerduty');\n }\n\n this.logger.info(`Adding mapping for ${mapping.entityRef} to database with payload: ${JSON.stringify(mapping)}`);\n\n const options: RequestInit = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json; charset=UTF-8',\n Accept: 'application/json, text/plain, */*',\n },\n body: JSON.stringify(mapping),\n };\n\n const url = `${await this.discovery.getBaseUrl(\n 'pagerduty',\n )}/mapping/entity`;\n\n try {\n response = await fetch(url, options);\n\n if(!response.ok) {\n throw new Error(await response.text());\n }\n\n this.logger.info(`Mapping for ${mapping.entityRef} added to database.`); \n } catch (error) {\n this.logger.error(`Failed to add mapping for ${mapping.entityRef}: ${error}`);\n throw new Error(`Failed to add mapping for ${mapping.entityRef}: ${error}`);\n }\n }\n\n async getServiceDependencies(serviceId: string, account?: string): Promise<PagerDutyServiceDependency[]> {\n let response: Response;\n\n if (this.baseUrl === \"\") {\n this.baseUrl = await this.discovery.getBaseUrl('pagerduty');\n }\n\n const options: RequestInit = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json; charset=UTF-8',\n Accept: 'application/json, text/plain, */*',\n },\n };\n\n let url = `${await this.discovery.getBaseUrl(\n 'pagerduty',\n )}/dependencies/service/${serviceId}`;\n\n if (account) {\n url = url.concat(`?account=${account}`);\n }\n\n try {\n response = await fetch(url, options);\n\n const foundDependencies: PagerDutyServiceDependencyResponse = await response.json();\n\n switch (response.status) {\n case 400:\n throw new Error(await response.text());\n case 404:\n return [];\n default: // 200\n this.logger.info(`Found dependencies for ${serviceId}: ${JSON.stringify(foundDependencies.relationships)}`);\n return foundDependencies.relationships;\n }\n } catch (error) {\n this.logger.error(`Failed to retrieve mapping for ${serviceId}: ${error}`);\n throw new Error(`Failed to retrieve mapping for ${serviceId}: ${error}`);\n }\n }\n\n async getServiceIdAnnotationFromCatalog(entityRef: string): Promise<string> {\n let response: Response;\n\n if (this.baseUrl === \"\") {\n this.baseUrl = await this.discovery.getBaseUrl('pagerduty');\n }\n\n const options: RequestInit = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json; charset=UTF-8',\n Accept: 'application/json, text/plain, */*',\n },\n };\n\n // extract type, namespace and name from type:namespace/name\n const [type, rest] = entityRef.split(':');\n const [namespace, name] = rest.split('/');\n\n const url = `${await this.discovery.getBaseUrl(\n 'pagerduty',\n )}/catalog/entity/${type}/${namespace}/${name}`;\n\n try {\n response = await fetch(url, options);\n\n const foundServiceId: string = await response.json();\n\n switch (response.status) {\n case 400:\n throw new Error(await response.text());\n case 404:\n return \"\";\n default: // 200\n this.logger.info(`Found serviceId for ${entityRef}: ${JSON.stringify(foundServiceId)}`);\n\n return foundServiceId;\n }\n } catch (error) {\n this.logger.error(`Failed to retrieve a PagerDuty service id for ${entityRef}: ${error}`);\n throw new Error(`Failed to retrieve a PagerDuty service id for ${entityRef}: ${error}`);\n }\n }\n\n}","import { DiscoveryService, LoggerService } from \"@backstage/backend-plugin-api\";\nimport { Entity } from \"@backstage/catalog-model\";\nimport { CatalogProcessor } from \"@backstage/plugin-catalog-node\";\nimport { PagerDutyClient } from \"../apis/client\";\n\n/**\n * A function which given an entity, determines if it should be processed for linguist tags.\n * @public\n */\nexport type ShouldProcessEntity = (entity: Entity) => boolean;\n\nexport interface PagerDutyEntityProcessorOptions {\n logger: LoggerService;\n discovery: DiscoveryService;\n};\n\nlet client : PagerDutyClient;\n\nexport class PagerDutyEntityProcessor implements CatalogProcessor {\n private logger: LoggerService;\n private discovery: DiscoveryService;\n\n private shouldProcessEntity: ShouldProcessEntity = (entity: Entity) => {\n return entity.kind === 'Component';\n }\n\n constructor({ logger, discovery }: PagerDutyEntityProcessorOptions) {\n this.logger = logger;\n this.discovery = discovery;\n\n client = new PagerDutyClient({ discovery: this.discovery, logger: this.logger });\n }\n\n getProcessorName(): string {\n return \"PagerDutyEntityProcessor\";\n }\n\n async postProcessEntity(entity: Entity): Promise<Entity> {\n if (this.shouldProcessEntity(entity)) {\n try {\n // Process service mapping overrides\n // Find the service mapping for the entity in database\n const mapping = await client.findServiceMapping({\n type: entity.kind.toLowerCase(),\n namespace: entity.metadata.namespace!.toLowerCase(),\n name: entity.metadata.name.toLowerCase(),\n });\n\n // If mapping exists add the annotations to the entity\n if (mapping.serviceId) { \n \n // If serviceId is present, add the annotations to the entity\n if (mapping.serviceId && mapping.serviceId !== \"\") {\n entity.metadata.annotations![\"pagerduty.com/service-id\"] = mapping.serviceId;\n }\n else {\n delete entity.metadata.annotations![\"pagerduty.com/service-id\"];\n }\n\n // If integrationKey is present, add the annotations to the entity\n if (mapping.integrationKey && mapping.integrationKey !== \"\") {\n entity.metadata.annotations![\"pagerduty.com/integration-key\"] = mapping.integrationKey;\n }\n else {\n delete entity.metadata.annotations![\"pagerduty.com/integration-key\"];\n }\n\n // If account is present, add the annotations to the entity\n if (mapping.account && mapping.account !== \"\") {\n entity.metadata.annotations![\"pagerduty.com/account\"] = mapping.account;\n }\n else {\n delete entity.metadata.annotations![\"pagerduty.com/account\"];\n }\n\n this.logger.debug(`Added annotations to entity ${entity.metadata.name} with service id: ${mapping.serviceId}, integration key: ${mapping.integrationKey} and account: ${mapping.account}`);\n } else {\n this.logger.debug(`No mapping found for entity: ${entity.metadata.name}. Adding annotations to the database.`);\n\n // Add the mapping to the database based on entity annotations\n const serviceId = entity.metadata.annotations![\"pagerduty.com/service-id\"];\n const integrationKey = entity.metadata.annotations![\"pagerduty.com/integration-key\"];\n const account = entity.metadata.annotations![\"pagerduty.com/account\"];\n\n if (serviceId) {\n // Build the entityRef string\n const entityRef = `${entity.kind.toLowerCase()}:${entity.metadata.namespace!.toLowerCase()}/${entity.metadata.name.toLowerCase()}`;\n\n await client.insertServiceMapping({\n entityRef,\n serviceId,\n integrationKey,\n account,\n });\n }\n }\n\n // Process service dependencies\n if(entity.spec?.dependsOn){\n // Check if ServiceId exists get service dependencies from PagerDuty \n const serviceId = entity.metadata.annotations![\"pagerduty.com/service-id\"];\n\n // Check if service has dependencies configured\n const dependencyAnnotations: string[] = JSON.parse(JSON.stringify(entity.spec?.dependsOn));\n this.logger.info(`Existing dependencies for entity: ${entity.metadata.name}. Dependencies: ${JSON.stringify(dependencyAnnotations)}`);\n\n if (serviceId && dependencyAnnotations?.length > 0) {\n const entityDependencies: string[] = await buildExistingDependencies(dependencyAnnotations);\n this.logger.info(`Dependencies from Annotations in ${serviceId}: ${JSON.stringify(entityDependencies)}`);\n\n // Get dependencies from PagerDuty for the service\n const account = entity.metadata.annotations?.[\"pagerduty.com/account\"];\n const dependencies = await client.getServiceDependencies(serviceId, account);\n const filteredDependencies = dependencies.filter(x => x.dependent_service.id === serviceId);\n const dependencyIds = filteredDependencies.map(x => x.supporting_service.id);\n\n this.logger.info(`Filtered dependencies from PagerDuty service ${serviceId}: ${JSON.stringify(filteredDependencies)}`);\n this.logger.info(`Dependencies from PagerDuty service ${serviceId}: ${JSON.stringify(dependencyIds)}`);\n\n // compare dependencies with existing dependencies defined on the entity\n // const newDependencies = dependencies.filter((dependency) => existingDependencies.includes(dependency.dependent_service.id) && !existingDependencies.includes(dependency.dependent_service.id) && dependency.dependent_service.id !== serviceId);\n const dependenciesToAdd = dependencyIds.filter(x => !entityDependencies.includes(x));\n this.logger.info(`Dependencies missing in PagerDuty: ${JSON.stringify(dependenciesToAdd)}`);\n const dependenciesToRemove = entityDependencies.filter(x => !dependencyIds.includes(x));\n this.logger.info(`Dependencies missing in Backstage: ${JSON.stringify(dependenciesToRemove)}`);\n\n const newDependencies = [...dependenciesToAdd, ...dependenciesToRemove];\n \n this.logger.info(`Updated dependencies for service: ${serviceId}. New dependencies: ${JSON.stringify(newDependencies)}`);\n\n // Update dependencies on PagerDuty\n if (newDependencies.length > 0){\n // await client.updateServiceDependencies(serviceId, newDependencies);\n this.logger.info(`Updated dependencies for service: ${serviceId}. New dependencies: ${JSON.stringify(newDependencies)}`);\n }\n }\n }\n else {\n this.logger.info(`No dependencies found for entity: ${entity.metadata.name}`);\n }\n\n if(entity.spec?.dependencyOf){\n this.logger.info(`Processing dependents for entity: ${entity.metadata.name}. Dependents: ${JSON.stringify(entity.spec.dependencyOf)}`);\n }\n\n } catch (error) {\n this.logger.error(`Error processing entity: ${entity.metadata.name}`);\n this.logger.error(`${error}`);\n }\n }\n\n return entity;\n }\n}\n\nasync function buildExistingDependencies(dependencyAnnotations: string[]): Promise<string[]> {\n const dependencies: string[] = [];\n\n // Get all service ids matching the dependency annotations\n await Promise.all(\n dependencyAnnotations.map(async (dependency) => {\n const foundServiceId = await client.getServiceIdAnnotationFromCatalog(dependency);\n console.log(`Found service id for ${dependency}: ${foundServiceId}`);\n\n if (foundServiceId !== \"\") {\n dependencies.push(foundServiceId);\n }\n })\n );\n\n return dependencies;\n\n}","import { coreServices, createBackendModule } from \"@backstage/backend-plugin-api\";\nimport { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';\nimport { PagerDutyEntityProcessor } from \"./processor\";\n\n/** @public */\nexport const pagerDutyEntityProcessor = createBackendModule({\n pluginId: 'catalog',\n moduleId: 'pagerduty-entity-processor',\n register(env) {\n env.registerInit({\n deps: {\n logger: coreServices.logger,\n catalog: catalogProcessingExtensionPoint,\n discovery: coreServices.discovery,\n },\n async init({ logger, discovery, catalog }) {\n catalog.addProcessor(new PagerDutyEntityProcessor({ logger, discovery}));\n },\n });\n },\n});\n"],"names":["__publicField","fetch","createBackendModule","coreServices","catalogProcessingExtensionPoint"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pagerduty/backstage-plugin-entity-processor",
3
- "version": "0.3.0-next.19",
3
+ "version": "0.3.0-next.20",
4
4
  "main": "dist/index.cjs.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "license": "Apache-2.0",