@pagerduty/backstage-plugin-entity-processor 0.1.0-next.23 → 0.1.0-next.24
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 +1 -0
- package/dist/index.cjs.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.js
CHANGED
|
@@ -93,6 +93,7 @@ class PagerDutyEntityProcessor {
|
|
|
93
93
|
namespace: entity.metadata.namespace.toLowerCase(),
|
|
94
94
|
name: entity.metadata.name.toLowerCase()
|
|
95
95
|
});
|
|
96
|
+
this.logger.info(`Mapping found for '${entity.metadata.name}' in database: ${JSON.stringify(mapping)}`);
|
|
96
97
|
if (mapping) {
|
|
97
98
|
if (mapping.serviceId && mapping.serviceId !== "") {
|
|
98
99
|
entity.metadata.annotations["pagerduty.com/pagerduty.com/service-id"] = mapping.serviceId;
|
package/dist/index.cjs.js.map
CHANGED
|
@@ -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';\n\n// import { getAuthToken } from '../auth/auth';\n// import {\n// CreateServiceResponse,\n// } from '../types';\n\n// import {\n// PagerDutyServiceResponse,\n// PagerDutyIntegrationResponse,\n// PagerDutyAbilitiesResponse,\n// } from '@pagerduty/backstage-plugin-common';\nimport { DiscoveryService, LoggerService } from '@backstage/backend-plugin-api';\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 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\n try {\n response = await fetch(url, options);\n } catch (error) {\n throw new Error(`Failed to retrieve mapping for ${type}:${namespace}/${name}: ${error}`);\n }\n\n switch (response.status) {\n case 400:\n const errorMessage = await response.text();\n this.logger.error(`Error retrieving mapping for ${type}:${namespace}/${name}: ${errorMessage}`);\n throw new Error(errorMessage);\n case 404:\n return {};\n default: // 200\n const foundMapping = await response.json();\n const mapping : EntityMapping = foundMapping.mapping;\n\n this.logger.debug(`Found mapping for ${type}:${namespace}/${name}: ${JSON.stringify(mapping)}`);\n\n return {\n serviceId: mapping.serviceId,\n integrationKey: mapping.integrationKey,\n entityRef: mapping.entityRef\n }\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\nexport class PagerDutyEntityProcessor implements CatalogProcessor {\n private logger: LoggerService;\n private discovery: DiscoveryService;\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\n getProcessorName(): string {\n return \"PagerDutyEntityProcessor\";\n }\n\n async postProcessEntity(entity: Entity): Promise<Entity> {\n if (this.shouldProcessEntity(entity)) {\n try{\n this.logger.info(`Processing entity: ${entity.metadata.name} with the following annotations: ${JSON.stringify(entity.metadata.annotations)}`);\n \n const client = new PagerDutyClient({ discovery: this.discovery, logger: this.logger});\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) { \n if (mapping.serviceId && mapping.serviceId !== \"\") {\n entity.metadata.annotations![\"pagerduty.com/pagerduty.com/service-id\"] = mapping.serviceId;\n }\n else {\n delete entity.metadata.annotations![\"pagerduty.com/service-id\"];\n }\n\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 this.logger.debug(`Added annotations to entity ${entity.metadata.name} with service id: ${mapping.serviceId} and integration key: ${mapping.integrationKey}`);\n } else {\n this.logger.debug(`No mapping found for entity: ${entity.metadata.name}`);\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}","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":";;;;;;;;;;;;;;;;;;AA2BO,MAAM,eAAgB,CAAA;AAAA,EAIzB,WAAY,CAAA,EAAE,SAAW,EAAA,MAAA,EAAkC,EAAA;AAH3D,IAAQA,eAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;AACR,IAAQA,eAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AACR,IAAAA,eAAA,CAAA,IAAA,EAAQ,SAAkB,EAAA,EAAA,CAAA,CAAA;AAEtB,IAAA,IAAA,CAAK,SAAY,GAAA,SAAA,CAAA;AACjB,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA,CAAA;AAAA,GAClB;AAAA,EAEA,MAAM,kBAAmB,CAAA,EAAE,IAAM,EAAA,SAAA,EAAW,MAAoD,EAAA;AAC5F,IAAI,IAAA,QAAA,CAAA;AAEJ,IAAI,IAAA,IAAA,CAAK,YAAY,EAAI,EAAA;AACrB,MAAA,IAAA,CAAK,OAAU,GAAA,MAAM,IAAK,CAAA,SAAA,CAAU,WAAW,WAAW,CAAA,CAAA;AAAA,KAC9D;AAEA,IAAA,MAAM,OAAuB,GAAA;AAAA,MACzB,MAAQ,EAAA,KAAA;AAAA,MACR,OAAS,EAAA;AAAA,QACL,cAAgB,EAAA,iCAAA;AAAA,QAChB,MAAQ,EAAA,mCAAA;AAAA,OACZ;AAAA,KACJ,CAAA;AAEA,IAAA,MAAM,GAAM,GAAA,CAAA,EAAG,MAAM,IAAA,CAAK,SAAU,CAAA,UAAA;AAAA,MAChC,WAAA;AAAA,KACH,CAAmB,gBAAA,EAAA,IAAI,CAAI,CAAA,EAAA,SAAS,IAAI,IAAI,CAAA,CAAA,CAAA;AAG7C,IAAI,IAAA;AACA,MAAW,QAAA,GAAA,MAAMC,yBAAM,CAAA,GAAA,EAAK,OAAO,CAAA,CAAA;AAAA,aAC9B,KAAO,EAAA;AACZ,MAAM,MAAA,IAAI,KAAM,CAAA,CAAA,+BAAA,EAAkC,IAAI,CAAA,CAAA,EAAI,SAAS,CAAI,CAAA,EAAA,IAAI,CAAK,EAAA,EAAA,KAAK,CAAE,CAAA,CAAA,CAAA;AAAA,KAC3F;AAEA,IAAA,QAAQ,SAAS,MAAQ;AAAA,MACrB,KAAK,GAAA;AACD,QAAM,MAAA,YAAA,GAAe,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AACzC,QAAK,IAAA,CAAA,MAAA,CAAO,KAAM,CAAA,CAAA,6BAAA,EAAgC,IAAI,CAAA,CAAA,EAAI,SAAS,CAAI,CAAA,EAAA,IAAI,CAAK,EAAA,EAAA,YAAY,CAAE,CAAA,CAAA,CAAA;AAC9F,QAAM,MAAA,IAAI,MAAM,YAAY,CAAA,CAAA;AAAA,MAChC,KAAK,GAAA;AACD,QAAA,OAAO,EAAC,CAAA;AAAA,MACZ;AACI,QAAM,MAAA,YAAA,GAAe,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AACzC,QAAA,MAAM,UAA0B,YAAa,CAAA,OAAA,CAAA;AAE7C,QAAA,IAAA,CAAK,MAAO,CAAA,KAAA,CAAM,CAAqB,kBAAA,EAAA,IAAI,CAAI,CAAA,EAAA,SAAS,CAAI,CAAA,EAAA,IAAI,CAAK,EAAA,EAAA,IAAA,CAAK,SAAU,CAAA,OAAO,CAAC,CAAE,CAAA,CAAA,CAAA;AAE9F,QAAO,OAAA;AAAA,UACH,WAAW,OAAQ,CAAA,SAAA;AAAA,UACnB,gBAAgB,OAAQ,CAAA,cAAA;AAAA,UACxB,WAAW,OAAQ,CAAA,SAAA;AAAA,SACvB,CAAA;AAAA,KACR;AAAA,GACJ;AAEJ;;;;;;;;ACnEO,MAAM,wBAAqD,CAAA;AAAA,EAO9D,WAAY,CAAA,EAAE,MAAQ,EAAA,SAAA,EAA8C,EAAA;AANpE,IAAQ,aAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AACR,IAAQ,aAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;AACR,IAAQ,aAAA,CAAA,IAAA,EAAA,qBAAA,EAA2C,CAAC,MAAmB,KAAA;AACnE,MAAA,OAAO,OAAO,IAAS,KAAA,WAAA,CAAA;AAAA,KAC3B,CAAA,CAAA;AAGI,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA,CAAA;AACd,IAAA,IAAA,CAAK,SAAY,GAAA,SAAA,CAAA;AAAA,GACrB;AAAA,EAEA,gBAA2B,GAAA;AACvB,IAAO,OAAA,0BAAA,CAAA;AAAA,GACX;AAAA,EAEA,MAAM,kBAAkB,MAAiC,EAAA;AACrD,IAAI,IAAA,IAAA,CAAK,mBAAoB,CAAA,MAAM,CAAG,EAAA;AAClC,MAAG,IAAA;AACC,QAAA,IAAA,CAAK,MAAO,CAAA,IAAA,CAAK,CAAsB,mBAAA,EAAA,MAAA,CAAO,QAAS,CAAA,IAAI,CAAoC,iCAAA,EAAA,IAAA,CAAK,SAAU,CAAA,MAAA,CAAO,QAAS,CAAA,WAAW,CAAC,CAAE,CAAA,CAAA,CAAA;AAE5I,QAAM,MAAA,MAAA,GAAS,IAAI,eAAA,CAAgB,EAAE,SAAA,EAAW,KAAK,SAAW,EAAA,MAAA,EAAQ,IAAK,CAAA,MAAA,EAAO,CAAA,CAAA;AACpF,QAAM,MAAA,OAAA,GAAU,MAAM,MAAA,CAAO,kBAAmB,CAAA;AAAA,UAC5C,IAAA,EAAM,MAAO,CAAA,IAAA,CAAK,WAAY,EAAA;AAAA,UAC9B,SAAW,EAAA,MAAA,CAAO,QAAS,CAAA,SAAA,CAAW,WAAY,EAAA;AAAA,UAClD,IAAM,EAAA,MAAA,CAAO,QAAS,CAAA,IAAA,CAAK,WAAY,EAAA;AAAA,SAC1C,CAAA,CAAA;AAED,QAAA,IAAI,OAAS,EAAA;AACT,UAAA,IAAI,OAAQ,CAAA,SAAA,IAAa,OAAQ,CAAA,SAAA,KAAc,EAAI,EAAA;AAC/C,YAAA,MAAA,CAAO,QAAS,CAAA,WAAA,CAAa,wCAAwC,CAAA,GAAI,OAAQ,CAAA,SAAA,CAAA;AAAA,WAEhF,MAAA;AACD,YAAO,OAAA,MAAA,CAAO,QAAS,CAAA,WAAA,CAAa,0BAA0B,CAAA,CAAA;AAAA,WAClE;AAEA,UAAA,IAAG,OAAQ,CAAA,cAAA,IAAkB,OAAQ,CAAA,cAAA,KAAmB,EAAI,EAAA;AAC5D,YAAA,MAAA,CAAO,QAAS,CAAA,WAAA,CAAa,+BAA+B,CAAA,GAAI,OAAQ,CAAA,cAAA,CAAA;AAAA,WAEnE,MAAA;AACD,YAAO,OAAA,MAAA,CAAO,QAAS,CAAA,WAAA,CAAa,+BAA+B,CAAA,CAAA;AAAA,WACvE;AAEA,UAAA,IAAA,CAAK,MAAO,CAAA,KAAA,CAAM,CAA+B,4BAAA,EAAA,MAAA,CAAO,QAAS,CAAA,IAAI,CAAqB,kBAAA,EAAA,OAAA,CAAQ,SAAS,CAAA,sBAAA,EAAyB,OAAQ,CAAA,cAAc,CAAE,CAAA,CAAA,CAAA;AAAA,SACzJ,MAAA;AACH,UAAA,IAAA,CAAK,OAAO,KAAM,CAAA,CAAA,6BAAA,EAAgC,MAAO,CAAA,QAAA,CAAS,IAAI,CAAE,CAAA,CAAA,CAAA;AAAA,SAC5E;AAAA,eACK,KAAO,EAAA;AACZ,QAAA,IAAA,CAAK,OAAO,KAAM,CAAA,CAAA,yBAAA,EAA4B,MAAO,CAAA,QAAA,CAAS,IAAI,CAAE,CAAA,CAAA,CAAA;AACpE,QAAA,IAAA,CAAK,MAAO,CAAA,KAAA,CAAM,CAAG,EAAA,KAAK,CAAE,CAAA,CAAA,CAAA;AAAA,OAChC;AAAA,KACJ;AAEA,IAAO,OAAA,MAAA,CAAA;AAAA,GACX;AACJ;;AClEO,MAAM,2BAA2BC,oCAAoB,CAAA;AAAA,EACxD,QAAU,EAAA,SAAA;AAAA,EACV,QAAU,EAAA,4BAAA;AAAA,EACV,SAAS,GAAK,EAAA;AACV,IAAA,GAAA,CAAI,YAAa,CAAA;AAAA,MACb,IAAM,EAAA;AAAA,QACF,QAAQC,6BAAa,CAAA,MAAA;AAAA,QACrB,OAAS,EAAAC,qCAAA;AAAA,QACT,WAAWD,6BAAa,CAAA,SAAA;AAAA,OAC5B;AAAA,MACA,MAAM,IAAK,CAAA,EAAE,MAAQ,EAAA,SAAA,EAAW,SAAW,EAAA;AACvC,QAAA,OAAA,CAAQ,aAAa,IAAI,wBAAA,CAAyB,EAAE,MAAQ,EAAA,SAAA,EAAU,CAAC,CAAA,CAAA;AAAA,OAC3E;AAAA,KACH,CAAA,CAAA;AAAA,GACL;AACJ,CAAC;;;;"}
|
|
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';\n\n// import { getAuthToken } from '../auth/auth';\n// import {\n// CreateServiceResponse,\n// } from '../types';\n\n// import {\n// PagerDutyServiceResponse,\n// PagerDutyIntegrationResponse,\n// PagerDutyAbilitiesResponse,\n// } from '@pagerduty/backstage-plugin-common';\nimport { DiscoveryService, LoggerService } from '@backstage/backend-plugin-api';\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 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\n try {\n response = await fetch(url, options);\n } catch (error) {\n throw new Error(`Failed to retrieve mapping for ${type}:${namespace}/${name}: ${error}`);\n }\n\n switch (response.status) {\n case 400:\n const errorMessage = await response.text();\n this.logger.error(`Error retrieving mapping for ${type}:${namespace}/${name}: ${errorMessage}`);\n throw new Error(errorMessage);\n case 404:\n return {};\n default: // 200\n const foundMapping = await response.json();\n const mapping : EntityMapping = foundMapping.mapping;\n\n this.logger.debug(`Found mapping for ${type}:${namespace}/${name}: ${JSON.stringify(mapping)}`);\n\n return {\n serviceId: mapping.serviceId,\n integrationKey: mapping.integrationKey,\n entityRef: mapping.entityRef\n }\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\nexport class PagerDutyEntityProcessor implements CatalogProcessor {\n private logger: LoggerService;\n private discovery: DiscoveryService;\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\n getProcessorName(): string {\n return \"PagerDutyEntityProcessor\";\n }\n\n async postProcessEntity(entity: Entity): Promise<Entity> {\n if (this.shouldProcessEntity(entity)) {\n try{\n this.logger.info(`Processing entity: ${entity.metadata.name} with the following annotations: ${JSON.stringify(entity.metadata.annotations)}`);\n\n const client = new PagerDutyClient({ discovery: this.discovery, logger: this.logger});\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 this.logger.info(`Mapping found for '${entity.metadata.name}' in database: ${JSON.stringify(mapping)}`);\n\n if (mapping) { \n if (mapping.serviceId && mapping.serviceId !== \"\") {\n entity.metadata.annotations![\"pagerduty.com/pagerduty.com/service-id\"] = mapping.serviceId;\n }\n else {\n delete entity.metadata.annotations![\"pagerduty.com/service-id\"];\n }\n\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 this.logger.debug(`Added annotations to entity ${entity.metadata.name} with service id: ${mapping.serviceId} and integration key: ${mapping.integrationKey}`);\n } else {\n this.logger.debug(`No mapping found for entity: ${entity.metadata.name}`);\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}","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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"}
|