Use identityApi to provide auth token for pagerduty API calls.
Signed-off-by: Isaiah Thiessen <isaiah.thiessen@telus.com> Co-authored-by: Joel Cayne <joel.cayne@telus.com>
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-pagerduty': patch
|
||||
---
|
||||
|
||||
Use identityApi to provide auth token for pagerduty API calls.
|
||||
@@ -10,6 +10,7 @@ import { BackstagePlugin } from '@backstage/core-plugin-api';
|
||||
import { ConfigApi } from '@backstage/core-plugin-api';
|
||||
import { DiscoveryApi } from '@backstage/core-plugin-api';
|
||||
import { Entity } from '@backstage/catalog-model';
|
||||
import { IdentityApi } from '@backstage/core-plugin-api';
|
||||
import { ReactNode } from 'react';
|
||||
|
||||
// Warning: (ae-missing-release-tag) "EntityPagerDutyCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
|
||||
@@ -45,6 +46,7 @@ export class PagerDutyClient implements PagerDutyApi {
|
||||
static fromConfig(
|
||||
configApi: ConfigApi,
|
||||
discoveryApi: DiscoveryApi,
|
||||
identityApi: IdentityApi,
|
||||
): PagerDutyClient;
|
||||
// Warning: (ae-forgotten-export) The symbol "ChangeEvent" needs to be exported by the entry point index.d.ts
|
||||
//
|
||||
|
||||
@@ -29,6 +29,7 @@ import {
|
||||
createApiRef,
|
||||
DiscoveryApi,
|
||||
ConfigApi,
|
||||
IdentityApi,
|
||||
} from '@backstage/core-plugin-api';
|
||||
|
||||
export class UnauthorizedError extends Error {}
|
||||
@@ -38,13 +39,18 @@ export const pagerDutyApiRef = createApiRef<PagerDutyApi>({
|
||||
});
|
||||
|
||||
export class PagerDutyClient implements PagerDutyApi {
|
||||
static fromConfig(configApi: ConfigApi, discoveryApi: DiscoveryApi) {
|
||||
static fromConfig(
|
||||
configApi: ConfigApi,
|
||||
discoveryApi: DiscoveryApi,
|
||||
identityApi: IdentityApi,
|
||||
) {
|
||||
const eventsBaseUrl: string =
|
||||
configApi.getOptionalString('pagerDuty.eventsBaseUrl') ??
|
||||
'https://events.pagerduty.com/v2';
|
||||
return new PagerDutyClient({
|
||||
eventsBaseUrl,
|
||||
discoveryApi,
|
||||
identityApi,
|
||||
});
|
||||
}
|
||||
constructor(private readonly config: ClientApiConfig) {}
|
||||
@@ -124,11 +130,13 @@ export class PagerDutyClient implements PagerDutyApi {
|
||||
}
|
||||
|
||||
private async getByUrl<T>(url: string): Promise<T> {
|
||||
const { token: idToken } = await this.config.identityApi.getCredentials();
|
||||
const options = {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
Accept: 'application/vnd.pagerduty+json;version=2',
|
||||
'Content-Type': 'application/json',
|
||||
...(idToken && { Authorization: `Bearer ${idToken}` }),
|
||||
},
|
||||
};
|
||||
const response = await this.request(url, options);
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
*/
|
||||
|
||||
import { Incident, ChangeEvent, OnCall, Service } from '../components/types';
|
||||
import { DiscoveryApi } from '@backstage/core-plugin-api';
|
||||
import { DiscoveryApi, IdentityApi } from '@backstage/core-plugin-api';
|
||||
|
||||
export type TriggerAlarmRequest = {
|
||||
integrationKey: string;
|
||||
@@ -74,6 +74,7 @@ export type OnCallsResponse = {
|
||||
export type ClientApiConfig = {
|
||||
eventsBaseUrl?: string;
|
||||
discoveryApi: DiscoveryApi;
|
||||
identityApi: IdentityApi;
|
||||
};
|
||||
|
||||
export type RequestOptions = {
|
||||
|
||||
@@ -21,6 +21,7 @@ import {
|
||||
discoveryApiRef,
|
||||
configApiRef,
|
||||
createComponentExtension,
|
||||
identityApiRef,
|
||||
} from '@backstage/core-plugin-api';
|
||||
|
||||
export const rootRouteRef = createRouteRef({
|
||||
@@ -32,9 +33,13 @@ export const pagerDutyPlugin = createPlugin({
|
||||
apis: [
|
||||
createApiFactory({
|
||||
api: pagerDutyApiRef,
|
||||
deps: { discoveryApi: discoveryApiRef, configApi: configApiRef },
|
||||
factory: ({ configApi, discoveryApi }) =>
|
||||
PagerDutyClient.fromConfig(configApi, discoveryApi),
|
||||
deps: {
|
||||
discoveryApi: discoveryApiRef,
|
||||
configApi: configApiRef,
|
||||
identityApi: identityApiRef,
|
||||
},
|
||||
factory: ({ configApi, discoveryApi, identityApi }) =>
|
||||
PagerDutyClient.fromConfig(configApi, discoveryApi, identityApi),
|
||||
}),
|
||||
],
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user