@pagerduty/backstage-plugin-entity-processor 0.1.0-next.10 → 0.1.0-next.12
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 +67 -25
- package/dist/index.cjs.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.js
CHANGED
|
@@ -4,6 +4,59 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var backendPluginApi = require('@backstage/backend-plugin-api');
|
|
6
6
|
var alpha = require('@backstage/plugin-catalog-node/alpha');
|
|
7
|
+
var fetch = require('node-fetch');
|
|
8
|
+
|
|
9
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
10
|
+
|
|
11
|
+
var fetch__default = /*#__PURE__*/_interopDefaultLegacy(fetch);
|
|
12
|
+
|
|
13
|
+
var __defProp$1 = Object.defineProperty;
|
|
14
|
+
var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
15
|
+
var __publicField$1 = (obj, key, value) => {
|
|
16
|
+
__defNormalProp$1(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
17
|
+
return value;
|
|
18
|
+
};
|
|
19
|
+
class PagerDutyClient {
|
|
20
|
+
constructor({ discovery }) {
|
|
21
|
+
__publicField$1(this, "discovery");
|
|
22
|
+
__publicField$1(this, "baseUrl", "");
|
|
23
|
+
this.discovery = discovery;
|
|
24
|
+
}
|
|
25
|
+
async findServiceMapping({ type, namespace, name }) {
|
|
26
|
+
let response;
|
|
27
|
+
if (this.baseUrl === "") {
|
|
28
|
+
this.baseUrl = await this.discovery.getBaseUrl("pagerduty");
|
|
29
|
+
}
|
|
30
|
+
const options = {
|
|
31
|
+
method: "GET",
|
|
32
|
+
headers: {
|
|
33
|
+
"Content-Type": "application/json; charset=UTF-8",
|
|
34
|
+
Accept: "application/json, text/plain, */*"
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
const url = `${await this.discovery.getBaseUrl(
|
|
38
|
+
"pagerduty"
|
|
39
|
+
)}/mapping/entity/${type}/${namespace}/${name}`;
|
|
40
|
+
try {
|
|
41
|
+
response = await fetch__default["default"](url, options);
|
|
42
|
+
} catch (error) {
|
|
43
|
+
throw new Error(`Failed to retrieve mapping for ${type}:${namespace}/${name}: ${error}`);
|
|
44
|
+
}
|
|
45
|
+
switch (response.status) {
|
|
46
|
+
case 400:
|
|
47
|
+
const errorMessage = await response.text();
|
|
48
|
+
throw new Error(errorMessage);
|
|
49
|
+
case 404:
|
|
50
|
+
return {};
|
|
51
|
+
default:
|
|
52
|
+
const mapping = await response.json();
|
|
53
|
+
return {
|
|
54
|
+
serviceId: mapping.serviceId,
|
|
55
|
+
entityRef: mapping.entityRef
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
7
60
|
|
|
8
61
|
var __defProp = Object.defineProperty;
|
|
9
62
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
@@ -12,14 +65,14 @@ var __publicField = (obj, key, value) => {
|
|
|
12
65
|
return value;
|
|
13
66
|
};
|
|
14
67
|
class PagerDutyEntityProcessor {
|
|
15
|
-
constructor({ logger,
|
|
68
|
+
constructor({ logger, discovery }) {
|
|
16
69
|
__publicField(this, "logger");
|
|
17
|
-
__publicField(this, "
|
|
70
|
+
__publicField(this, "discovery");
|
|
18
71
|
__publicField(this, "shouldProcessEntity", (entity) => {
|
|
19
72
|
return entity.kind === "Component";
|
|
20
73
|
});
|
|
21
74
|
this.logger = logger;
|
|
22
|
-
this.
|
|
75
|
+
this.discovery = discovery;
|
|
23
76
|
}
|
|
24
77
|
getProcessorName() {
|
|
25
78
|
return "PagerDutyEntityProcessor";
|
|
@@ -29,11 +82,15 @@ class PagerDutyEntityProcessor {
|
|
|
29
82
|
// }
|
|
30
83
|
async postProcessEntity(entity) {
|
|
31
84
|
if (this.shouldProcessEntity(entity)) {
|
|
32
|
-
this.logger.info(`Processing entity: ${JSON.stringify(entity)}`);
|
|
33
85
|
const entityRef = `${entity.kind}:${entity.metadata.namespace}/${entity.metadata.name}`.toLowerCase();
|
|
34
86
|
this.logger.info(`Looking for entity mapping with ref: ${entityRef}`);
|
|
35
87
|
try {
|
|
36
|
-
const
|
|
88
|
+
const client = new PagerDutyClient({ discovery: this.discovery });
|
|
89
|
+
const mapping = await client.findServiceMapping({
|
|
90
|
+
type: entity.kind,
|
|
91
|
+
namespace: entity.metadata.namespace,
|
|
92
|
+
name: entity.metadata.name
|
|
93
|
+
});
|
|
37
94
|
if (mapping) {
|
|
38
95
|
this.logger.info(`Found mapping for entity: ${entity.metadata.name}`);
|
|
39
96
|
entity.metadata.annotations["pagerduty.com/service-id"] = mapping.serviceId;
|
|
@@ -42,26 +99,13 @@ class PagerDutyEntityProcessor {
|
|
|
42
99
|
}
|
|
43
100
|
} catch (error) {
|
|
44
101
|
this.logger.error(`Error processing entity: ${entity.metadata.name}`);
|
|
45
|
-
this.logger.error(
|
|
102
|
+
this.logger.error(`${error}`);
|
|
46
103
|
}
|
|
47
104
|
}
|
|
48
105
|
return entity;
|
|
49
106
|
}
|
|
50
107
|
}
|
|
51
108
|
|
|
52
|
-
class PagerDutyBackendDatabase {
|
|
53
|
-
constructor(db) {
|
|
54
|
-
this.db = db;
|
|
55
|
-
}
|
|
56
|
-
static async create(knex) {
|
|
57
|
-
return new PagerDutyBackendDatabase(knex);
|
|
58
|
-
}
|
|
59
|
-
async findEntityMappingByEntityRef(entityRef) {
|
|
60
|
-
const rawEntity = await this.db("pagerduty_entity_mapping").where("entityRef", entityRef).first();
|
|
61
|
-
return rawEntity;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
109
|
const pagerDutyEntityProcessor = backendPluginApi.createBackendModule({
|
|
66
110
|
pluginId: "catalog",
|
|
67
111
|
moduleId: "pagerduty-entity-processor",
|
|
@@ -70,13 +114,11 @@ const pagerDutyEntityProcessor = backendPluginApi.createBackendModule({
|
|
|
70
114
|
deps: {
|
|
71
115
|
logger: backendPluginApi.coreServices.logger,
|
|
72
116
|
database: backendPluginApi.coreServices.database,
|
|
73
|
-
catalog: alpha.catalogProcessingExtensionPoint
|
|
117
|
+
catalog: alpha.catalogProcessingExtensionPoint,
|
|
118
|
+
discovery: backendPluginApi.coreServices.discovery
|
|
74
119
|
},
|
|
75
|
-
async init({ logger,
|
|
76
|
-
|
|
77
|
-
await database.getClient()
|
|
78
|
-
);
|
|
79
|
-
catalog.addProcessor(new PagerDutyEntityProcessor({ logger, store }));
|
|
120
|
+
async init({ logger, discovery, catalog }) {
|
|
121
|
+
catalog.addProcessor(new PagerDutyEntityProcessor({ logger, discovery }));
|
|
80
122
|
}
|
|
81
123
|
});
|
|
82
124
|
}
|
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/
|
|
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 } from '@backstage/backend-plugin-api';\n\nexport interface PagerDutyClientOptions {\n discovery: DiscoveryService;\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 baseUrl: string = \"\";\n constructor({ discovery }: PagerDutyClientOptions) {\n this.discovery = discovery;\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 throw new Error(errorMessage);\n case 404:\n return {};\n default: // 200\n const mapping: EntityMapping = await response.json();\n\n return {\n serviceId: mapping.serviceId,\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\";\n// import { PagerDutyBackendStore } from \"../db\";\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 // static fromConfig(): PagerDutyEntityProcessor {\n // return new PagerDutyEntityProcessor();\n // }\n\n async postProcessEntity(entity: Entity): Promise<Entity> {\n if (this.shouldProcessEntity(entity)) {\n\n const entityRef = `${entity.kind}:${entity.metadata.namespace}/${entity.metadata.name}`.toLowerCase();\n this.logger.info(`Looking for entity mapping with ref: ${entityRef}`);\n\n try{\n const client = new PagerDutyClient({ discovery: this.discovery });\n const mapping = await client.findServiceMapping({\n type: entity.kind,\n namespace: entity.metadata.namespace!,\n name: entity.metadata.name\n });\n\n if (mapping) {\n this.logger.info(`Found mapping for entity: ${entity.metadata.name}`);\n entity.metadata.annotations![\"pagerduty.com/service-id\"] = mapping.serviceId!;\n } else {\n this.logger.info(`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// import { PagerDutyBackendDatabase, PagerDutyBackendStore } from \"./db/PagerDutyBackendDatabase\";\n\n\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 database: coreServices.database,\n catalog: catalogProcessingExtensionPoint,\n discovery: coreServices.discovery,\n },\n async init({ logger, discovery, catalog }) {\n\n // const store: PagerDutyBackendStore = await PagerDutyBackendDatabase.create(\n // await database.getClient(),\n // );\n\n catalog.addProcessor(new PagerDutyEntityProcessor({ logger, discovery}));\n },\n });\n },\n});\n"],"names":["__publicField","fetch","createBackendModule","coreServices","catalogProcessingExtensionPoint"],"mappings":"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"}
|