diff --git a/plugins/catalog-backend-module-bitbucket-server/package.json b/plugins/catalog-backend-module-bitbucket-server/package.json index 922d6aea43..0d5ba5611e 100644 --- a/plugins/catalog-backend-module-bitbucket-server/package.json +++ b/plugins/catalog-backend-module-bitbucket-server/package.json @@ -50,7 +50,6 @@ "test": "backstage-cli package test" }, "dependencies": { - "@backstage/backend-common": "workspace:^", "@backstage/backend-plugin-api": "workspace:^", "@backstage/catalog-client": "workspace:^", "@backstage/catalog-model": "workspace:^", diff --git a/plugins/catalog-backend-module-bitbucket-server/report.api.md b/plugins/catalog-backend-module-bitbucket-server/report.api.md index 040626a83d..94a0fed689 100644 --- a/plugins/catalog-backend-module-bitbucket-server/report.api.md +++ b/plugins/catalog-backend-module-bitbucket-server/report.api.md @@ -4,6 +4,7 @@ ```ts import { BackendFeature } from '@backstage/backend-plugin-api'; +import { AuthService } from '@backstage/backend-plugin-api'; import { BitbucketServerIntegrationConfig } from '@backstage/integration'; import { CatalogApi } from '@backstage/catalog-client'; import { Config } from '@backstage/config'; @@ -15,7 +16,6 @@ import { LocationSpec } from '@backstage/plugin-catalog-common'; import { LoggerService } from '@backstage/backend-plugin-api'; import { SchedulerService } from '@backstage/backend-plugin-api'; import { SchedulerServiceTaskRunner } from '@backstage/backend-plugin-api'; -import { TokenManager } from '@backstage/backend-common'; // @public export class BitbucketServerClient { @@ -55,6 +55,8 @@ export class BitbucketServerClient { }; } +// Warning: (ae-missing-release-tag) "BitbucketServerDefaultBranch" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// // @public (undocumented) export type BitbucketServerDefaultBranch = { id: string; @@ -78,7 +80,7 @@ export class BitbucketServerEntityProvider implements EntityProvider { schedule?: SchedulerServiceTaskRunner; scheduler?: SchedulerService; catalogApi?: CatalogApi; - tokenManager?: TokenManager; + auth?: AuthService; }, ): BitbucketServerEntityProvider[]; getProviderName(): string; @@ -86,6 +88,8 @@ export class BitbucketServerEntityProvider implements EntityProvider { refresh(logger: LoggerService): Promise; } +// Warning: (ae-missing-release-tag) "BitbucketServerEvents" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// // @public (undocumented) export namespace BitbucketServerEvents { // (undocumented) @@ -156,11 +160,15 @@ export type BitbucketServerPagedResponse = { nextPageStart: number; }; +// Warning: (ae-missing-release-tag) "BitbucketServerProject" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// // @public (undocumented) export type BitbucketServerProject = { key: string; }; +// Warning: (ae-missing-release-tag) "BitbucketServerRepository" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// // @public (undocumented) export type BitbucketServerRepository = { project: { diff --git a/plugins/catalog-backend-module-bitbucket-server/src/lib/types.ts b/plugins/catalog-backend-module-bitbucket-server/src/lib/types.ts index e014528791..51e014fb97 100644 --- a/plugins/catalog-backend-module-bitbucket-server/src/lib/types.ts +++ b/plugins/catalog-backend-module-bitbucket-server/src/lib/types.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -/** @public */ type BitbucketServerRepository = { project: { key: string; @@ -31,12 +30,10 @@ type BitbucketServerRepository = { defaultBranch: string; }; -/** @public */ type BitbucketServerProject = { key: string; }; -/** @public */ type BitbucketServerDefaultBranch = { id: string; displayId: string; @@ -46,7 +43,6 @@ type BitbucketServerDefaultBranch = { isDefault: boolean; }; -/** @public */ namespace BitbucketServerEvents { interface Event { eventKey: string; diff --git a/plugins/catalog-backend-module-bitbucket-server/src/module/catalogModuleBitbucketServerEntityProvider.ts b/plugins/catalog-backend-module-bitbucket-server/src/module/catalogModuleBitbucketServerEntityProvider.ts index a829428296..2d68b6ef49 100644 --- a/plugins/catalog-backend-module-bitbucket-server/src/module/catalogModuleBitbucketServerEntityProvider.ts +++ b/plugins/catalog-backend-module-bitbucket-server/src/module/catalogModuleBitbucketServerEntityProvider.ts @@ -40,13 +40,23 @@ export const catalogModuleBitbucketServerEntityProvider = createBackendModule({ events: eventsServiceRef, logger: coreServices.logger, scheduler: coreServices.scheduler, + auth: coreServices.auth, }, - async init({ catalog, catalogApi, config, events, logger, scheduler }) { + async init({ + catalog, + catalogApi, + config, + events, + logger, + scheduler, + auth, + }) { const providers = BitbucketServerEntityProvider.fromConfig(config, { catalogApi, events, logger, scheduler, + auth, }); catalog.addEntityProvider(providers); diff --git a/plugins/catalog-backend-module-bitbucket-server/src/providers/BitbucketServerEntityProvider.test.ts b/plugins/catalog-backend-module-bitbucket-server/src/providers/BitbucketServerEntityProvider.test.ts index dd2735177b..81699550bd 100644 --- a/plugins/catalog-backend-module-bitbucket-server/src/providers/BitbucketServerEntityProvider.test.ts +++ b/plugins/catalog-backend-module-bitbucket-server/src/providers/BitbucketServerEntityProvider.test.ts @@ -14,11 +14,11 @@ * limitations under the License. */ -import { TokenManager } from '@backstage/backend-common'; import { SchedulerService, SchedulerServiceTaskRunner, SchedulerServiceTaskInvocationDefinition, + AuthService, } from '@backstage/backend-plugin-api'; import { mockServices, @@ -69,6 +69,8 @@ function pagedResponse(values: any): BitbucketServerPagedResponse { const logger = mockServices.logger.mock(); +const authService = mockServices.auth.mock(); + const events = DefaultEventsService.create({ logger }); const server = setupServer(); @@ -161,11 +163,11 @@ function setupRepositoryReqHandler(defaultBranch: string) { ); } -const tokenManager = { - getToken: async () => { - return { token: 'fake-token' }; - }, -} as any as TokenManager; +// const authService = { +// getPluginRequestToken: async ({onBehalfOf, targetPluginId}) => { +// return { token: 'fake-token' }; +// }, +// } as any as AuthService; const repoPushEvent: BitbucketServerEvents.RefsChangedEvent = { eventKey: 'repo:refs_changed', date: '2017-09-19T09:45:32+1000', @@ -769,6 +771,10 @@ describe('BitbucketServerEntityProvider', () => { setupRepositoryReqHandler('master'); + authService.getPluginRequestToken.mockResolvedValue({ + token: 'fake-token', + }); + const config = new ConfigReader({ integrations: { bitbucketServer: [ @@ -809,12 +815,13 @@ describe('BitbucketServerEntityProvider', () => { }; }, }; + const provider = BitbucketServerEntityProvider.fromConfig(config, { catalogApi: catalogApi as any as CatalogApi, logger, schedule, events, - tokenManager, + auth: authService as any as AuthService, })[0]; await provider.connect(entityProviderConnection); @@ -885,7 +892,7 @@ describe('BitbucketServerEntityProvider', () => { logger, schedule, events, - tokenManager, + auth: authService as any as AuthService, })[0]; await provider.connect(entityProviderConnection); @@ -898,6 +905,9 @@ describe('BitbucketServerEntityProvider', () => { it('add onRepoPush', async () => { const schedule = new PersistingTaskRunner(); setupRepositoryReqHandler('master'); + authService.getPluginRequestToken.mockResolvedValue({ + token: 'fake-token', + }); const addedModule = createLocationEntity( test1RepoUrl, `/added-module:${targetPath}`, @@ -945,7 +955,7 @@ describe('BitbucketServerEntityProvider', () => { logger, schedule, events, - tokenManager, + auth: authService as any as AuthService, })[0]; await provider.connect(entityProviderConnection); @@ -1015,7 +1025,7 @@ describe('BitbucketServerEntityProvider', () => { logger, schedule, events, - tokenManager, + auth: authService as any as AuthService, })[0]; await provider.connect(entityProviderConnection); diff --git a/plugins/catalog-backend-module-bitbucket-server/src/providers/BitbucketServerEntityProvider.ts b/plugins/catalog-backend-module-bitbucket-server/src/providers/BitbucketServerEntityProvider.ts index aa7c3d5863..85878468cc 100644 --- a/plugins/catalog-backend-module-bitbucket-server/src/providers/BitbucketServerEntityProvider.ts +++ b/plugins/catalog-backend-module-bitbucket-server/src/providers/BitbucketServerEntityProvider.ts @@ -37,6 +37,7 @@ import { defaultBitbucketServerLocationParser, } from './BitbucketServerLocationParser'; import { + AuthService, LoggerService, SchedulerService, SchedulerServiceTaskRunner, @@ -44,7 +45,6 @@ import { import { BitbucketServerEvents } from '../lib'; import { EventsService } from '@backstage/plugin-events-node'; import { CatalogApi } from '@backstage/catalog-client'; -import { TokenManager } from '@backstage/backend-common'; const TOPIC_REPO_REFS_CHANGED = 'bitbucketServer.repo:refs_changed'; @@ -65,7 +65,7 @@ export class BitbucketServerEntityProvider implements EntityProvider { private connection?: EntityProviderConnection; private readonly catalogApi?: CatalogApi; private readonly events?: EventsService; - private readonly tokenManager?: TokenManager; + private readonly auth?: AuthService; private eventConfigErrorThrown = false; private readonly targetAnnotation: string; private readonly defaultBranchAnnotation: string; @@ -79,7 +79,7 @@ export class BitbucketServerEntityProvider implements EntityProvider { schedule?: SchedulerServiceTaskRunner; scheduler?: SchedulerService; catalogApi?: CatalogApi; - tokenManager?: TokenManager; + auth?: AuthService; }, ): BitbucketServerEntityProvider[] { const integrations = ScmIntegrations.fromConfig(config); @@ -116,7 +116,7 @@ export class BitbucketServerEntityProvider implements EntityProvider { options.parser, options.catalogApi, options.events, - options.tokenManager, + options.auth, ); }); } @@ -129,7 +129,7 @@ export class BitbucketServerEntityProvider implements EntityProvider { parser?: BitbucketServerLocationParser, catalogApi?: CatalogApi, events?: EventsService, - tokenManager?: TokenManager, + auth?: AuthService, ) { this.integration = integration; this.config = config; @@ -139,7 +139,7 @@ export class BitbucketServerEntityProvider implements EntityProvider { }); this.scheduleFn = this.createScheduleFn(taskRunner); this.catalogApi = catalogApi; - this.tokenManager = tokenManager; + this.auth = auth; this.targetAnnotation = `${this.config.host.split(':')[0]}/repo-url`; this.defaultBranchAnnotation = 'bitbucket.org/default-branch'; this.events = events; @@ -301,8 +301,8 @@ export class BitbucketServerEntityProvider implements EntityProvider { if ( this.catalogApi !== undefined && this.catalogApi !== null && - this.tokenManager !== undefined && - this.tokenManager !== null + this.auth !== undefined && + this.auth !== null ) { return true; } @@ -451,7 +451,7 @@ export class BitbucketServerEntityProvider implements EntityProvider { ): Promise { if (!this.canHandleEvents()) { this.logger.error( - 'Bitbucket Server catalog entity provider is not set up to handle events. Missing tokenManager or catalogApi.', + 'Bitbucket Server catalog entity provider is not set up to handle events. Missing authService or catalogApi.', ); return; } @@ -468,7 +468,10 @@ export class BitbucketServerEntityProvider implements EntityProvider { this.logger.error('Failed to create location entity.'); return; } - const { token } = await this.tokenManager!.getToken(); + const { token } = await this.auth!.getPluginRequestToken({ + onBehalfOf: await this.auth!.getOwnServiceCredentials(), + targetPluginId: 'catalog', // e.g. 'catalog' + }); const existing = await this.findExistingLocations(catalogRepoUrl, token); const stillExisting: LocationEntity[] = []; const removed: DeferredEntity[] = []; diff --git a/plugins/events-backend-module-bitbucket-server/api-report-alpha.md b/plugins/events-backend-module-bitbucket-server/report-alpha.api.md similarity index 97% rename from plugins/events-backend-module-bitbucket-server/api-report-alpha.md rename to plugins/events-backend-module-bitbucket-server/report-alpha.api.md index 3c4ce45a1f..61559711f3 100644 --- a/plugins/events-backend-module-bitbucket-server/api-report-alpha.md +++ b/plugins/events-backend-module-bitbucket-server/report-alpha.api.md @@ -5,7 +5,7 @@ ```ts import { BackendFeature } from '@backstage/backend-plugin-api'; -// @alpha +// @public const eventsModuleBitbucketServerEventRouter: BackendFeature; export default eventsModuleBitbucketServerEventRouter; export { eventsModuleBitbucketServerEventRouter }; diff --git a/plugins/events-backend-module-bitbucket-server/api-report.md b/plugins/events-backend-module-bitbucket-server/report.api.md similarity index 55% rename from plugins/events-backend-module-bitbucket-server/api-report.md rename to plugins/events-backend-module-bitbucket-server/report.api.md index 18292a0d11..aaf7b22293 100644 --- a/plugins/events-backend-module-bitbucket-server/api-report.md +++ b/plugins/events-backend-module-bitbucket-server/report.api.md @@ -3,6 +3,7 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts +import { BackendFeature } from '@backstage/backend-plugin-api'; import { EventParams } from '@backstage/plugin-events-node'; import { EventsService } from '@backstage/plugin-events-node'; import { SubTopicEventRouter } from '@backstage/plugin-events-node'; @@ -15,4 +16,14 @@ export class BitbucketServerEventRouter extends SubTopicEventRouter { // (undocumented) protected getSubscriberId(): string; } + +// @public +const eventsModuleBitbucketServerEventRouter: BackendFeature; +export default eventsModuleBitbucketServerEventRouter; +export { eventsModuleBitbucketServerEventRouter }; + +// Warnings were encountered during analysis: +// +// src/router/BitbucketServerEventRouter.d.ts:13:5 - (ae-undocumented) Missing documentation for "getSubscriberId". +// src/router/BitbucketServerEventRouter.d.ts:14:5 - (ae-undocumented) Missing documentation for "determineSubTopic". ``` diff --git a/plugins/events-backend-module-bitbucket-server/src/index.ts b/plugins/events-backend-module-bitbucket-server/src/index.ts index 78c97808a4..afa3e204d2 100644 --- a/plugins/events-backend-module-bitbucket-server/src/index.ts +++ b/plugins/events-backend-module-bitbucket-server/src/index.ts @@ -22,3 +22,5 @@ */ export { BitbucketServerEventRouter } from './router/BitbucketServerEventRouter'; +export { eventsModuleBitbucketServerEventRouter } from './service/eventsModuleBitbucketServerEventRouter'; +export { eventsModuleBitbucketServerEventRouter as default } from './service/eventsModuleBitbucketServerEventRouter'; diff --git a/plugins/events-backend-module-bitbucket-server/src/service/eventsModuleBitbucketServerEventRouter.ts b/plugins/events-backend-module-bitbucket-server/src/service/eventsModuleBitbucketServerEventRouter.ts index 60fc67eb4f..2a8a26358b 100644 --- a/plugins/events-backend-module-bitbucket-server/src/service/eventsModuleBitbucketServerEventRouter.ts +++ b/plugins/events-backend-module-bitbucket-server/src/service/eventsModuleBitbucketServerEventRouter.ts @@ -23,7 +23,7 @@ import { BitbucketServerEventRouter } from '../router/BitbucketServerEventRouter * * Registers the `BitbucketServerEventRouter`. * - * @alpha + * @public */ export const eventsModuleBitbucketServerEventRouter = createBackendModule({ pluginId: 'events', diff --git a/yarn.lock b/yarn.lock index b3a662a179..baddc683e1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5737,7 +5737,6 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-backend-module-bitbucket-server@workspace:plugins/catalog-backend-module-bitbucket-server" dependencies: - "@backstage/backend-common": "workspace:^" "@backstage/backend-plugin-api": "workspace:^" "@backstage/backend-test-utils": "workspace:^" "@backstage/catalog-client": "workspace:^"