chore: change most of plugins to use LoggerService

quite a big PR for this but the changes are pretty stright forward.
hopefully gets merged before most of these plugins move to the community
repository.

Signed-off-by: Heikki Hellgren <heikki.hellgren@op.fi>
This commit is contained in:
Heikki Hellgren
2024-04-13 01:35:47 +03:00
parent 16ef9e59e5
commit d5a1fe189b
285 changed files with 975 additions and 1050 deletions
+52
View File
@@ -0,0 +1,52 @@
---
'@backstage/plugin-search-backend-module-stack-overflow-collator': patch
'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch
'@backstage/plugin-catalog-backend-module-bitbucket-server': patch
'@backstage/plugin-tech-insights-backend-module-jsonfc': patch
'@backstage/plugin-catalog-backend-module-github-org': patch
'@backstage/plugin-scaffolder-backend-module-github': patch
'@backstage/plugin-catalog-backend-module-puppetdb': patch
'@backstage/plugin-catalog-backend-module-msgraph': patch
'@backstage/plugin-search-backend-module-techdocs': patch
'@backstage/plugin-catalog-backend-module-gerrit': patch
'@backstage/plugin-catalog-backend-module-github': patch
'@backstage/plugin-catalog-backend-module-gitlab': patch
'@backstage/plugin-search-backend-module-explore': patch
'@backstage/plugin-catalog-backend-module-azure': patch
'@backstage/plugin-catalog-backend-module-aws': patch
'@backstage/plugin-catalog-backend-module-gcp': patch
'@backstage/plugin-scaffolder-node-test-utils': patch
'@backstage/plugin-entity-feedback-backend': patch
'@backstage/plugin-code-coverage-backend': patch
'@backstage/plugin-tech-insights-backend': patch
'@backstage/plugin-azure-devops-backend': patch
'@backstage/plugin-azure-sites-backend': patch
'@backstage/plugin-search-backend-node': patch
'@backstage/plugin-kubernetes-backend': patch
'@backstage/plugin-lighthouse-backend': patch
'@backstage/plugin-permission-backend': patch
'@backstage/plugin-tech-insights-node': patch
'@backstage/plugin-sonarqube-backend': patch
'@backstage/backend-app-api': patch
'@backstage/plugin-airbrake-backend': patch
'@backstage/plugin-devtools-backend': patch
'@backstage/plugin-linguist-backend': patch
'@backstage/plugin-periskop-backend': patch
'@backstage/plugin-playlist-backend': patch
'@backstage/plugin-catalog-backend': patch
'@backstage/plugin-explore-backend': patch
'@backstage/plugin-jenkins-backend': patch
'@backstage/plugin-scaffolder-node': patch
'@backstage/backend-tasks': patch
'@backstage/plugin-badges-backend': patch
'@backstage/plugin-bazaar-backend': patch
'@backstage/plugin-search-backend': patch
'@backstage/plugin-kafka-backend': patch
'@backstage/plugin-nomad-backend': patch
'@backstage/plugin-techdocs-node': patch
'@backstage/plugin-todo-backend': patch
'@backstage/plugin-adr-backend': patch
'@backstage/plugin-app-backend': patch
---
Replaced winston logger with `LoggerService`
@@ -14,7 +14,6 @@
* limitations under the License.
*/
import { loggerToWinstonLogger } from '@backstage/backend-common';
import {
coreServices,
createServiceFactory,
@@ -33,7 +32,7 @@ export const schedulerServiceFactory = createServiceFactory({
return TaskScheduler.forPlugin({
pluginId: plugin.getId(),
databaseManager,
logger: loggerToWinstonLogger(logger),
logger,
});
},
});
@@ -14,7 +14,7 @@
* limitations under the License.
*/
import { loggerToWinstonLogger, UrlReaders } from '@backstage/backend-common';
import { UrlReaders } from '@backstage/backend-common';
import {
coreServices,
createServiceFactory,
@@ -30,7 +30,7 @@ export const urlReaderServiceFactory = createServiceFactory({
async factory({ config, logger }) {
return UrlReaders.default({
config,
logger: loggerToWinstonLogger(logger),
logger,
});
},
});
+7 -4
View File
@@ -8,7 +8,7 @@ import { Duration } from 'luxon';
import { HumanDuration as HumanDuration_2 } from '@backstage/types';
import { JsonObject } from '@backstage/types';
import { LegacyRootDatabaseService } from '@backstage/backend-common';
import { Logger } from 'winston';
import { LoggerService } from '@backstage/backend-plugin-api';
import { PluginDatabaseManager } from '@backstage/backend-common';
// @public @deprecated
@@ -83,20 +83,23 @@ export interface TaskScheduleDefinitionConfig {
// @public
export class TaskScheduler {
constructor(databaseManager: LegacyRootDatabaseService, logger: Logger);
constructor(
databaseManager: LegacyRootDatabaseService,
logger: LoggerService,
);
forPlugin(pluginId: string): PluginTaskScheduler;
// (undocumented)
static forPlugin(opts: {
pluginId: string;
databaseManager: PluginDatabaseManager;
logger: Logger;
logger: LoggerService;
}): PluginTaskScheduler;
// (undocumented)
static fromConfig(
config: Config,
options?: {
databaseManager?: LegacyRootDatabaseService;
logger?: Logger;
logger?: LoggerService;
},
): TaskScheduler;
}
+1 -1
View File
@@ -33,6 +33,7 @@
},
"dependencies": {
"@backstage/backend-common": "workspace:^",
"@backstage/backend-plugin-api": "workspace:^",
"@backstage/config": "workspace:^",
"@backstage/errors": "workspace:^",
"@backstage/types": "workspace:^",
@@ -43,7 +44,6 @@
"lodash": "^4.17.21",
"luxon": "^3.0.0",
"uuid": "^9.0.0",
"winston": "^3.2.1",
"zod": "^3.22.4"
},
"devDependencies": {
@@ -17,9 +17,9 @@
import { ConflictError } from '@backstage/errors';
import { CronTime } from 'cron';
import { DateTime, Duration } from 'luxon';
import { Logger } from 'winston';
import { TaskFunction, TaskSettingsV2 } from './types';
import { delegateAbortController, sleep } from './util';
import { LoggerService } from '@backstage/backend-plugin-api';
/**
* Implements tasks that run locally without cross-host collaboration.
@@ -32,7 +32,7 @@ export class LocalTaskWorker {
constructor(
private readonly taskId: string,
private readonly fn: TaskFunction,
private readonly logger: Logger,
private readonly logger: LoggerService,
) {}
start(settings: TaskSettingsV2, options?: { signal?: AbortSignal }) {
@@ -16,20 +16,20 @@
import { Knex } from 'knex';
import { Duration } from 'luxon';
import { Logger } from 'winston';
import { LocalTaskWorker } from './LocalTaskWorker';
import { TaskWorker } from './TaskWorker';
import {
PluginTaskScheduler,
TaskDescriptor,
TaskFunction,
TaskInvocationDefinition,
TaskRunner,
TaskScheduleDefinition,
TaskSettingsV2,
} from './types';
import { validateId } from './util';
import { TaskFunction } from './types';
import { metrics, Counter, Histogram } from '@opentelemetry/api';
import { Counter, Histogram, metrics } from '@opentelemetry/api';
import { LoggerService } from '@backstage/backend-plugin-api';
/**
* Implements the actual task management.
@@ -43,7 +43,7 @@ export class PluginTaskSchedulerImpl implements PluginTaskScheduler {
constructor(
private readonly databaseFactory: () => Promise<Knex>,
private readonly logger: Logger,
private readonly logger: LoggerService,
) {
const meter = metrics.getMeter('default');
this.counter = meter.createCounter('backend_tasks.task.runs.count', {
@@ -16,9 +16,9 @@
import { Knex } from 'knex';
import { Duration } from 'luxon';
import { Logger } from 'winston';
import { DbTasksRow, DB_TASKS_TABLE } from '../database/tables';
import { DB_TASKS_TABLE, DbTasksRow } from '../database/tables';
import { sleep } from './util';
import { LoggerService } from '@backstage/backend-plugin-api';
/**
* Makes sure to auto-expire and clean up things that time out or for other
@@ -27,12 +27,12 @@ import { sleep } from './util';
export class PluginTaskSchedulerJanitor {
private readonly knex: Knex;
private readonly waitBetweenRuns: Duration;
private readonly logger: Logger;
private readonly logger: LoggerService;
constructor(options: {
knex: Knex;
waitBetweenRuns: Duration;
logger: Logger;
logger: LoggerService;
}) {
this.knex = options.knex;
this.waitBetweenRuns = options.waitBetweenRuns;
@@ -23,11 +23,11 @@ import {
import { Config } from '@backstage/config';
import { once } from 'lodash';
import { Duration } from 'luxon';
import { Logger } from 'winston';
import { migrateBackendTasks } from '../database/migrateBackendTasks';
import { PluginTaskSchedulerImpl } from './PluginTaskSchedulerImpl';
import { PluginTaskSchedulerJanitor } from './PluginTaskSchedulerJanitor';
import { PluginTaskScheduler } from './types';
import { LoggerService } from '@backstage/backend-plugin-api';
/**
* Deals with the scheduling of distributed tasks.
@@ -39,7 +39,7 @@ export class TaskScheduler {
config: Config,
options?: {
databaseManager?: LegacyRootDatabaseService;
logger?: Logger;
logger?: LoggerService;
},
): TaskScheduler {
const databaseManager =
@@ -52,7 +52,7 @@ export class TaskScheduler {
constructor(
private readonly databaseManager: LegacyRootDatabaseService,
private readonly logger: Logger,
private readonly logger: LoggerService,
) {}
/**
@@ -72,7 +72,7 @@ export class TaskScheduler {
static forPlugin(opts: {
pluginId: string;
databaseManager: PluginDatabaseManager;
logger: Logger;
logger: LoggerService;
}): PluginTaskScheduler {
const databaseFactory = once(async () => {
const knex = await opts.databaseManager.getClient();
@@ -19,10 +19,10 @@ import { CronTime } from 'cron';
import { Knex } from 'knex';
import { DateTime, Duration } from 'luxon';
import { v4 as uuid } from 'uuid';
import { Logger } from 'winston';
import { DbTasksRow, DB_TASKS_TABLE } from '../database/tables';
import { DB_TASKS_TABLE, DbTasksRow } from '../database/tables';
import { TaskFunction, TaskSettingsV2, taskSettingsV2Schema } from './types';
import { delegateAbortController, nowPlus, sleep } from './util';
import { LoggerService } from '@backstage/backend-plugin-api';
const DEFAULT_WORK_CHECK_FREQUENCY = Duration.fromObject({ seconds: 5 });
@@ -36,7 +36,7 @@ export class TaskWorker {
private readonly taskId: string,
private readonly fn: TaskFunction,
private readonly knex: Knex,
private readonly logger: Logger,
private readonly logger: LoggerService,
private readonly workCheckFrequency: Duration = DEFAULT_WORK_CHECK_FREQUENCY,
) {}
+3 -3
View File
@@ -15,7 +15,7 @@ import { Config } from '@backstage/config';
import { DocumentCollatorFactory } from '@backstage/plugin-search-common';
import { Entity } from '@backstage/catalog-model';
import express from 'express';
import { Logger } from 'winston';
import { LoggerService } from '@backstage/backend-plugin-api';
import { PluginCacheManager } from '@backstage/backend-common';
import { PluginEndpointDiscovery } from '@backstage/backend-common';
import { Readable } from 'stream';
@@ -29,7 +29,7 @@ export type AdrCollatorFactoryOptions = {
config: Config;
catalogClient?: CatalogApi;
discovery: PluginEndpointDiscovery;
logger: Logger;
logger: LoggerService;
parser?: AdrParser;
reader: UrlReader;
tokenManager: TokenManager;
@@ -54,7 +54,7 @@ export default adrPlugin;
export type AdrRouterOptions = {
reader: UrlReader;
cacheClient: CacheClient;
logger: Logger;
logger: LoggerService;
};
// @public
-1
View File
@@ -43,7 +43,6 @@
"luxon": "^3.0.0",
"marked": "^12.0.0",
"node-fetch": "^2.6.5",
"winston": "^3.2.1",
"yn": "^4.0.0"
},
"devDependencies": {
+1 -2
View File
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { loggerToWinstonLogger } from '@backstage/backend-common';
import {
coreServices,
createBackendPlugin,
@@ -38,7 +37,7 @@ export const adrPlugin = createBackendPlugin({
async init({ httpRouter, logger, reader, cache }) {
httpRouter.use(
await createRouter({
logger: loggerToWinstonLogger(logger),
logger,
reader,
cacheClient: cache,
}),
@@ -15,19 +15,18 @@
*/
import { Readable } from 'stream';
import { Logger } from 'winston';
import {
CacheClient,
createLegacyAuthAdapters,
PluginCacheManager,
PluginEndpointDiscovery,
TokenManager,
UrlReader,
createLegacyAuthAdapters,
} from '@backstage/backend-common';
import {
CATALOG_FILTER_EXISTS,
CatalogApi,
CatalogClient,
CATALOG_FILTER_EXISTS,
} from '@backstage/catalog-client';
import { stringifyEntityRef } from '@backstage/catalog-model';
import { Config } from '@backstage/config';
@@ -47,7 +46,7 @@ import { DocumentCollatorFactory } from '@backstage/plugin-search-common';
import { createMadrParser } from './createMadrParser';
import { AdrParser } from './types';
import { AuthService } from '@backstage/backend-plugin-api';
import { AuthService, LoggerService } from '@backstage/backend-plugin-api';
/**
* Options to configure the AdrCollatorFactory
@@ -78,7 +77,7 @@ export type AdrCollatorFactoryOptions = {
/**
* Logger
*/
logger: Logger;
logger: LoggerService;
/**
* ADR content parser. Defaults to built in MADR parser.
*/
@@ -106,7 +105,7 @@ export class DefaultAdrCollatorFactory implements DocumentCollatorFactory {
private readonly adrFilePathFilterFn: AdrFilePathFilterFn;
private readonly cacheClient: CacheClient;
private readonly catalogClient: CatalogApi;
private readonly logger: Logger;
private readonly logger: LoggerService;
private readonly parser: AdrParser;
private readonly reader: UrlReader;
private readonly auth: AuthService;
@@ -24,7 +24,7 @@ import {
import express from 'express';
import request from 'supertest';
import { createRouter } from './router';
import { Logger } from 'winston';
import { LoggerService } from '@backstage/backend-plugin-api';
const listEndpointName = '/list';
const fileEndpointName = '/file';
@@ -122,7 +122,7 @@ describe('createRouter', () => {
cacheClient: new MockCacheClient(),
logger: {
error: (message: any) => message,
} as Logger,
} as LoggerService,
});
app = express().use(router);
});
+2 -2
View File
@@ -16,16 +16,16 @@
import { CacheClient, UrlReader } from '@backstage/backend-common';
import { NotModifiedError, stringifyError } from '@backstage/errors';
import { Logger } from 'winston';
import express from 'express';
import Router from 'express-promise-router';
import { madrParser } from '../search/madrParser';
import { LoggerService } from '@backstage/backend-plugin-api';
/** @public */
export type AdrRouterOptions = {
reader: UrlReader;
cacheClient: CacheClient;
logger: Logger;
logger: LoggerService;
};
/** @public */
+2 -2
View File
@@ -6,7 +6,7 @@
import { BackendFeature } from '@backstage/backend-plugin-api';
import { Config } from '@backstage/config';
import express from 'express';
import { Logger } from 'winston';
import { LoggerService } from '@backstage/backend-plugin-api';
// @public
export interface AirbrakeConfig {
@@ -26,6 +26,6 @@ export function extractAirbrakeConfig(config: Config): AirbrakeConfig;
// @public
export interface RouterOptions {
airbrakeConfig: AirbrakeConfig;
logger: Logger;
logger: LoggerService;
}
```
+1 -1
View File
@@ -35,10 +35,10 @@
"express": "^4.17.1",
"express-promise-router": "^4.1.0",
"http-proxy-middleware": "^2.0.0",
"winston": "^3.2.1",
"yn": "^4.0.0"
},
"devDependencies": {
"@backstage/backend-test-utils": "workspace:^",
"@backstage/cli": "workspace:^",
"@types/http-proxy-middleware": "^0.19.3",
"@types/supertest": "^2.0.8",
+1 -2
View File
@@ -14,7 +14,6 @@
* limitations under the License.
*/
import { loggerToWinstonLogger } from '@backstage/backend-common';
import {
coreServices,
createBackendPlugin,
@@ -40,7 +39,7 @@ export const airbrakePlugin = createBackendPlugin({
httpRouter.use(
await createRouter({
airbrakeConfig: extractAirbrakeConfig(config),
logger: loggerToWinstonLogger(logger),
logger,
}),
);
httpRouter.addAuthPolicy({
@@ -14,7 +14,6 @@
* limitations under the License.
*/
import { getVoidLogger } from '@backstage/backend-common';
import express from 'express';
import request from 'supertest';
import { ConfigReader } from '@backstage/config';
@@ -24,17 +23,18 @@ import {
RouterOptions,
} from './router';
import { AirbrakeConfig, extractAirbrakeConfig } from '../config';
import * as winston from 'winston';
import { LoggerService } from '@backstage/backend-plugin-api';
import { mockServices } from '@backstage/backend-test-utils';
describe('createRouter', () => {
let app: express.Express;
let airbrakeConfig: AirbrakeConfig;
let voidLogger: winston.Logger;
let voidLogger: LoggerService;
beforeEach(async () => {
jest.resetAllMocks();
voidLogger = getVoidLogger();
voidLogger = mockServices.logger.mock();
const config = new ConfigReader({
airbrake: {
apiKey: 'fakeApiKey',
@@ -17,10 +17,10 @@
import { errorHandler } from '@backstage/backend-common';
import express from 'express';
import Router from 'express-promise-router';
import { Logger } from 'winston';
import { createProxyMiddleware } from 'http-proxy-middleware';
import { AirbrakeConfig } from '../config';
import { Options } from 'http-proxy-middleware/dist/types';
import { LoggerService } from '@backstage/backend-plugin-api';
/**
* The router options that are needed when creating a router.
@@ -31,7 +31,7 @@ export interface RouterOptions {
/**
* A logger object
*/
logger: Logger;
logger: LoggerService;
/**
* The Airbrake config obtained from {@link extractAirbrakeConfig}
@@ -19,14 +19,14 @@ import {
loadBackendConfig,
} from '@backstage/backend-common';
import { Server } from 'http';
import { Logger } from 'winston';
import { createRouter } from './router';
import { extractAirbrakeConfig } from '../config';
import { LoggerService } from '@backstage/backend-plugin-api';
export interface ServerOptions {
port: number;
enableCors: boolean;
logger: Logger;
logger: LoggerService;
}
export async function startStandaloneServer(
+2 -2
View File
@@ -8,7 +8,7 @@ import { Config } from '@backstage/config';
import { ConfigSchema } from '@backstage/config-loader';
import express from 'express';
import { HttpAuthService } from '@backstage/backend-plugin-api';
import { Logger } from 'winston';
import { LoggerService } from '@backstage/backend-plugin-api';
import { PluginDatabaseManager } from '@backstage/backend-common';
// @public (undocumented)
@@ -26,7 +26,7 @@ export interface RouterOptions {
// (undocumented)
httpAuth?: HttpAuthService;
// (undocumented)
logger: Logger;
logger: LoggerService;
schema?: ConfigSchema;
staticFallbackHandler?: express.Handler;
}
-1
View File
@@ -62,7 +62,6 @@
"knex": "^3.0.0",
"lodash": "^4.17.21",
"luxon": "^3.0.0",
"winston": "^3.2.1",
"yn": "^4.0.0"
},
"devDependencies": {
@@ -19,10 +19,10 @@ import {
resolvePackagePath,
} from '@backstage/backend-common';
import { Knex } from 'knex';
import { Logger } from 'winston';
import { DateTime } from 'luxon';
import partition from 'lodash/partition';
import { StaticAsset, StaticAssetInput, StaticAssetProvider } from './types';
import { LoggerService } from '@backstage/backend-plugin-api';
const migrationsDir = resolvePackagePath(
'@backstage/plugin-app-backend',
@@ -39,7 +39,7 @@ interface StaticAssetRow {
/** @internal */
export interface StaticAssetsStoreOptions {
database: PluginDatabaseManager;
logger: Logger;
logger: LoggerService;
}
/**
@@ -49,7 +49,7 @@ export interface StaticAssetsStoreOptions {
*/
export class StaticAssetsStore implements StaticAssetProvider {
#db: Knex;
#logger: Logger;
#logger: LoggerService;
#namespace: string | null;
static async create(options: StaticAssetsStoreOptions) {
@@ -65,7 +65,7 @@ export class StaticAssetsStore implements StaticAssetProvider {
return new StaticAssetsStore(client, options.logger);
}
private constructor(client: Knex, logger: Logger, namespace?: string) {
private constructor(client: Knex, logger: LoggerService, namespace?: string) {
this.#db = client;
this.#logger = logger;
this.#namespace = namespace ?? null;
+2 -2
View File
@@ -16,7 +16,6 @@
import fs from 'fs-extra';
import { resolve as resolvePath } from 'path';
import { Logger } from 'winston';
import { AppConfig, Config } from '@backstage/config';
import { JsonObject } from '@backstage/types';
import {
@@ -24,12 +23,13 @@ import {
loadConfigSchema,
readEnvConfig,
} from '@backstage/config-loader';
import { LoggerService } from '@backstage/backend-plugin-api';
type InjectOptions = {
appConfigs: AppConfig[];
// Directory of the static JS files to search for file to inject
staticDir: string;
logger: Logger;
logger: LoggerService;
};
/**
+1 -4
View File
@@ -20,7 +20,6 @@ import {
createBackendPlugin,
} from '@backstage/backend-plugin-api';
import { createRouter } from './router';
import { loggerToWinstonLogger } from '@backstage/backend-common';
import {
configSchemaExtensionPoint,
staticFallbackHandlerExtensionPoint,
@@ -72,10 +71,8 @@ export const appPlugin = createBackendPlugin({
const appPackageName =
config.getOptionalString('app.packageName') ?? 'app';
const winstonLogger = loggerToWinstonLogger(logger);
const router = await createRouter({
logger: winstonLogger,
logger,
config,
database,
auth,
+9 -6
View File
@@ -25,12 +25,11 @@ import express from 'express';
import Router from 'express-promise-router';
import fs from 'fs-extra';
import { resolve as resolvePath } from 'path';
import { Logger } from 'winston';
import { injectConfig, readConfigs } from '../lib/config';
import {
StaticAssetsStore,
findStaticAssets,
createStaticAssetMiddleware,
findStaticAssets,
StaticAssetsStore,
} from '../lib/assets';
import {
CACHE_CONTROL_MAX_CACHE,
@@ -38,7 +37,11 @@ import {
CACHE_CONTROL_REVALIDATE_CACHE,
} from '../lib/headers';
import { ConfigSchema } from '@backstage/config-loader';
import { AuthService, HttpAuthService } from '@backstage/backend-plugin-api';
import {
AuthService,
HttpAuthService,
LoggerService,
} from '@backstage/backend-plugin-api';
import { AuthenticationError } from '@backstage/errors';
// express uses mime v1 while we only have types for mime v2
@@ -47,7 +50,7 @@ type Mime = { lookup(arg0: string): string };
/** @public */
export interface RouterOptions {
config: Config;
logger: Logger;
logger: LoggerService;
auth?: AuthService;
httpAuth?: HttpAuthService;
@@ -270,7 +273,7 @@ async function createEntryPointRouter({
appMode,
appConfigs,
}: {
logger: Logger;
logger: LoggerService;
rootDir: string;
assetStore?: StaticAssetsStore;
staticFallbackHandler?: express.Handler;
@@ -15,16 +15,16 @@
*/
import { Server } from 'http';
import { Logger } from 'winston';
import { createServiceBuilder } from '@backstage/backend-common';
import { Config } from '@backstage/config';
import { createRouter } from './router';
import { LoggerService } from '@backstage/backend-plugin-api';
export interface ServerOptions {
port: number;
enableCors: boolean;
config: Config;
logger: Logger;
logger: LoggerService;
}
export async function startStandaloneServer(
+3 -3
View File
@@ -15,7 +15,7 @@ import express from 'express';
import { GitRepository } from 'azure-devops-node-api/interfaces/GitInterfaces';
import { GitTag } from '@backstage/plugin-azure-devops-common';
import { LocationSpec } from '@backstage/plugin-catalog-common';
import { Logger } from 'winston';
import { LoggerService } from '@backstage/backend-plugin-api';
import { PermissionEvaluator } from '@backstage/plugin-permission-common';
import { Project } from '@backstage/plugin-azure-devops-common';
import { PullRequest } from '@backstage/plugin-azure-devops-common';
@@ -51,7 +51,7 @@ export class AzureDevOpsApi {
static fromConfig(
config: Config,
options: {
logger: Logger;
logger: LoggerService;
urlReader: UrlReader;
},
): AzureDevOpsApi;
@@ -159,7 +159,7 @@ export interface RouterOptions {
// (undocumented)
config: Config;
// (undocumented)
logger: Logger;
logger: LoggerService;
// (undocumented)
permissions: PermissionEvaluator;
// (undocumented)
@@ -47,7 +47,6 @@
"lodash": "^4.17.21",
"mime-types": "^2.1.27",
"p-limit": "^3.1.0",
"winston": "^3.2.1",
"yn": "^4.0.0"
},
"devDependencies": {
@@ -23,12 +23,12 @@ import {
DashboardPullRequest,
GitTag,
Policy,
Project,
PullRequest,
PullRequestOptions,
RepoBuild,
Team,
TeamMember,
Project,
} from '@backstage/plugin-azure-devops-common';
import {
GitPullRequest,
@@ -37,20 +37,19 @@ import {
GitRepository,
} from 'azure-devops-node-api/interfaces/GitInterfaces';
import {
buildEncodedUrl,
convertDashboardPullRequest,
convertPolicy,
getArtifactId,
replaceReadme,
buildEncodedUrl,
} from '../utils';
import { TeamMember as AdoTeamMember } from 'azure-devops-node-api/interfaces/common/VSSInterfaces';
import { Logger } from 'winston';
import { PolicyEvaluationRecord } from 'azure-devops-node-api/interfaces/PolicyInterfaces';
import {
WebApi,
getHandlerFromToken,
getPersonalAccessTokenHandler,
WebApi,
} from 'azure-devops-node-api';
import {
TeamProjectReference,
@@ -69,16 +68,17 @@ import {
mappedPullRequest,
mappedRepoBuild,
} from './mappers';
import { LoggerService } from '@backstage/backend-plugin-api';
/** @public */
export class AzureDevOpsApi {
private readonly logger: Logger;
private readonly logger: LoggerService;
private readonly urlReader: UrlReader;
private readonly config: Config;
private readonly credentialsProvider: AzureDevOpsCredentialsProvider;
private constructor(
logger: Logger,
logger: LoggerService,
urlReader: UrlReader,
config: Config,
credentialsProvider: AzureDevOpsCredentialsProvider,
@@ -91,7 +91,7 @@ export class AzureDevOpsApi {
static fromConfig(
config: Config,
options: { logger: Logger; urlReader: UrlReader },
options: { logger: LoggerService; urlReader: UrlReader },
) {
const scmIntegrations = ScmIntegrations.fromConfig(config);
const credentialsProvider =
@@ -22,8 +22,8 @@ import {
} from '@backstage/plugin-azure-devops-common';
import { AzureDevOpsApi } from './AzureDevOpsApi';
import { Logger } from 'winston';
import limiterFactory from 'p-limit';
import { LoggerService } from '@backstage/backend-plugin-api';
export const DEFAULT_TEAMS_LIMIT = 100;
@@ -33,12 +33,12 @@ export class PullRequestsDashboardProvider {
private teamMembers = new Map<string, TeamMember>();
private constructor(
private readonly logger: Logger,
private readonly logger: LoggerService,
private readonly azureDevOpsApi: AzureDevOpsApi,
) {}
public static async create(
logger: Logger,
logger: LoggerService,
azureDevOpsApi: AzureDevOpsApi,
): Promise<PullRequestsDashboardProvider> {
const provider = new PullRequestsDashboardProvider(logger, azureDevOpsApi);
+1 -2
View File
@@ -14,7 +14,6 @@
* limitations under the License.
*/
import { loggerToWinstonLogger } from '@backstage/backend-common';
import {
coreServices,
createBackendPlugin,
@@ -41,7 +40,7 @@ export const azureDevOpsPlugin = createBackendPlugin({
httpRouter.use(
await createRouter({
config,
logger: loggerToWinstonLogger(logger),
logger,
reader,
permissions,
}),
@@ -15,6 +15,11 @@
*/
import {
azureDevOpsGitTagReadPermission,
azureDevOpsPermissions,
azureDevOpsPipelineReadPermission,
azureDevOpsPullRequestDashboardReadPermission,
azureDevOpsPullRequestReadPermission,
DashboardPullRequest,
PullRequestOptions,
PullRequestStatus,
@@ -22,10 +27,9 @@ import {
import { AzureDevOpsApi } from '../api';
import { Config } from '@backstage/config';
import { Logger } from 'winston';
import {
PullRequestsDashboardProvider,
DEFAULT_TEAMS_LIMIT,
PullRequestsDashboardProvider,
} from '../api/PullRequestsDashboardProvider';
import Router from 'express-promise-router';
import { errorHandler, UrlReader } from '@backstage/backend-common';
@@ -33,24 +37,18 @@ import express from 'express';
import { InputError, NotAllowedError } from '@backstage/errors';
import { getBearerTokenFromAuthorizationHeader } from '@backstage/plugin-auth-node';
import {
PermissionEvaluator,
AuthorizeResult,
PermissionEvaluator,
} from '@backstage/plugin-permission-common';
import { createPermissionIntegrationRouter } from '@backstage/plugin-permission-node';
import {
azureDevOpsPullRequestReadPermission,
azureDevOpsPermissions,
azureDevOpsPullRequestDashboardReadPermission,
azureDevOpsGitTagReadPermission,
azureDevOpsPipelineReadPermission,
} from '@backstage/plugin-azure-devops-common';
import { LoggerService } from '@backstage/backend-plugin-api';
const DEFAULT_TOP = 10;
/** @public */
export interface RouterOptions {
azureDevOpsApi?: AzureDevOpsApi;
logger: Logger;
logger: LoggerService;
config: Config;
reader: UrlReader;
permissions: PermissionEvaluator;
@@ -16,20 +16,20 @@
import {
createServiceBuilder,
loadBackendConfig,
UrlReaders,
ServerTokenManager,
HostDiscovery,
loadBackendConfig,
ServerTokenManager,
UrlReaders,
} from '@backstage/backend-common';
import { Server } from 'http';
import { Logger } from 'winston';
import { createRouter } from './router';
import { ServerPermissionClient } from '@backstage/plugin-permission-node';
import { LoggerService } from '@backstage/backend-plugin-api';
export interface ServerOptions {
port: number;
enableCors: boolean;
logger: Logger;
logger: LoggerService;
}
export async function startStandaloneServer(
+2 -2
View File
@@ -13,7 +13,7 @@ import { Config } from '@backstage/config';
import { DiscoveryService } from '@backstage/backend-plugin-api';
import express from 'express';
import { HttpAuthService } from '@backstage/backend-plugin-api';
import { Logger } from 'winston';
import { LoggerService } from '@backstage/backend-plugin-api';
import { PermissionsService } from '@backstage/backend-plugin-api';
// @public (undocumented)
@@ -74,7 +74,7 @@ export interface RouterOptions {
// (undocumented)
httpAuth?: HttpAuthService;
// (undocumented)
logger: Logger;
logger: LoggerService;
// (undocumented)
permissions: PermissionsService;
}
-1
View File
@@ -47,7 +47,6 @@
"@types/express": "^4.17.6",
"express": "^4.17.1",
"express-promise-router": "^4.1.0",
"winston": "^3.2.1",
"yn": "^4.0.0"
},
"devDependencies": {
+1 -2
View File
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { loggerToWinstonLogger } from '@backstage/backend-common';
import {
coreServices,
createBackendPlugin,
@@ -54,7 +53,7 @@ export const azureSitesPlugin = createBackendPlugin({
const azureSitesApi = AzureSitesApi.fromConfig(config);
httpRouter.use(
await createRouter({
logger: loggerToWinstonLogger(logger),
logger,
azureSitesApi,
permissions,
catalogApi,
@@ -20,29 +20,29 @@ import {
} from '@backstage/backend-common';
import express from 'express';
import Router from 'express-promise-router';
import { Logger } from 'winston';
import { InputError, NotAllowedError, NotFoundError } from '@backstage/errors';
import { AuthorizeResult } from '@backstage/plugin-permission-common';
import {
AZURE_WEB_SITE_NAME_ANNOTATION,
azureSitesActionPermission,
azureSitesPermissions,
AZURE_WEB_SITE_NAME_ANNOTATION,
} from '@backstage/plugin-azure-sites-common';
import { createPermissionIntegrationRouter } from '@backstage/plugin-permission-node';
import { CatalogApi } from '@backstage/catalog-client';
import { AzureSitesApi } from '../api';
import {
DiscoveryService,
AuthService,
DiscoveryService,
HttpAuthService,
LoggerService,
PermissionsService,
} from '@backstage/backend-plugin-api';
/** @public */
export interface RouterOptions {
logger: Logger;
logger: LoggerService;
azureSitesApi: AzureSitesApi;
catalogApi: CatalogApi;
permissions: PermissionsService;
@@ -21,16 +21,16 @@ import {
SingleHostDiscovery,
} from '@backstage/backend-common';
import { Server } from 'http';
import { Logger } from 'winston';
import { AzureSitesApi } from '../api';
import { createRouter } from './router';
import { ServerPermissionClient } from '@backstage/plugin-permission-node';
import { CatalogClient } from '@backstage/catalog-client';
import { LoggerService } from '@backstage/backend-plugin-api';
export interface ServerOptions {
port: number;
enableCors: boolean;
logger: Logger;
logger: LoggerService;
}
export async function startStandaloneServer(
+2 -2
View File
@@ -11,7 +11,7 @@ import { Entity } from '@backstage/catalog-model';
import express from 'express';
import { HttpAuthService } from '@backstage/backend-plugin-api';
import { IdentityApi } from '@backstage/plugin-auth-node';
import { Logger } from 'winston';
import { LoggerService } from '@backstage/backend-plugin-api';
import { PluginEndpointDiscovery } from '@backstage/backend-common';
import { TokenManager } from '@backstage/backend-common';
@@ -152,7 +152,7 @@ export interface RouterOptions {
// (undocumented)
identity: IdentityApi;
// (undocumented)
logger: Logger;
logger: LoggerService;
// (undocumented)
tokenManager: TokenManager;
}
+1 -2
View File
@@ -14,7 +14,6 @@
* limitations under the License.
*/
import { loggerToWinstonLogger } from '@backstage/backend-common';
import {
coreServices,
createBackendPlugin,
@@ -54,7 +53,7 @@ export const badgesPlugin = createBackendPlugin({
httpRouter.use(
await createRouter({
config,
logger: loggerToWinstonLogger(logger),
logger,
badgeFactories: createDefaultBadgeFactories(),
discovery,
tokenManager,
+7 -4
View File
@@ -29,11 +29,14 @@ import { NotFoundError } from '@backstage/errors';
import { BadgeBuilder, DefaultBadgeBuilder } from '../lib/BadgeBuilder';
import { BadgeContext, BadgeFactories } from '../types';
import { isNil } from 'lodash';
import { Logger } from 'winston';
import { IdentityApi } from '@backstage/plugin-auth-node';
import { BadgesStore, DatabaseBadgesStore } from '../database/badgesStore';
import { createDefaultBadgeFactories } from '../badges';
import { AuthService, HttpAuthService } from '@backstage/backend-plugin-api';
import {
AuthService,
HttpAuthService,
LoggerService,
} from '@backstage/backend-plugin-api';
/** @public */
export interface RouterOptions {
@@ -45,7 +48,7 @@ export interface RouterOptions {
tokenManager: TokenManager;
auth?: AuthService;
httpAuth?: HttpAuthService;
logger: Logger;
logger: LoggerService;
identity: IdentityApi;
badgeStore?: BadgesStore;
}
@@ -95,7 +98,7 @@ async function obfuscatedRoute(
router: express.Router,
catalog: CatalogApi,
badgeBuilder: BadgeBuilder,
logger: Logger,
logger: LoggerService,
options: RouterOptions,
config: Config,
baseUrl: string,
+2 -2
View File
@@ -6,7 +6,7 @@
import { Config } from '@backstage/config';
import express from 'express';
import { IdentityApi } from '@backstage/plugin-auth-node';
import { Logger } from 'winston';
import { LoggerService } from '@backstage/backend-plugin-api';
import { PluginDatabaseManager } from '@backstage/backend-common';
// @public (undocumented)
@@ -21,7 +21,7 @@ export interface RouterOptions {
// (undocumented)
identity: IdentityApi;
// (undocumented)
logger: Logger;
logger: LoggerService;
}
// (No @packageDocumentation comment for this package)
-1
View File
@@ -54,7 +54,6 @@
"express": "^4.17.1",
"express-promise-router": "^4.1.0",
"knex": "^3.0.0",
"winston": "^3.2.1",
"yn": "^4.0.0"
},
"devDependencies": {
+1 -2
View File
@@ -14,7 +14,6 @@
* limitations under the License.
*/
import { loggerToWinstonLogger } from '@backstage/backend-common';
import {
coreServices,
createBackendPlugin,
@@ -43,7 +42,7 @@ export default createBackendPlugin({
database,
config,
identity,
logger: loggerToWinstonLogger(logger),
logger,
}),
);
},
+2 -2
View File
@@ -17,14 +17,14 @@
import { errorHandler, PluginDatabaseManager } from '@backstage/backend-common';
import express from 'express';
import Router from 'express-promise-router';
import { Logger } from 'winston';
import { Config } from '@backstage/config';
import { IdentityApi } from '@backstage/plugin-auth-node';
import { DatabaseHandler } from './DatabaseHandler';
import { LoggerService } from '@backstage/backend-plugin-api';
/** @public */
export interface RouterOptions {
logger: Logger;
logger: LoggerService;
database: PluginDatabaseManager;
config: Config;
identity: IdentityApi;
@@ -15,20 +15,20 @@
*/
import {
DatabaseManager,
createServiceBuilder,
DatabaseManager,
loadBackendConfig,
} from '@backstage/backend-common';
import { IdentityApi } from '@backstage/plugin-auth-node';
import { Server } from 'http';
import { Logger } from 'winston';
import { createRouter } from './router';
import { ConfigReader } from '@backstage/config';
import { LoggerService } from '@backstage/backend-plugin-api';
export interface ServerOptions {
port: number;
enableCors: boolean;
logger: Logger;
logger: LoggerService;
}
export async function startStandaloneServer(
@@ -14,7 +14,7 @@ import type { Entity } from '@backstage/catalog-model';
import { EntityProvider } from '@backstage/plugin-catalog-node';
import { EntityProviderConnection } from '@backstage/plugin-catalog-node';
import { LocationSpec } from '@backstage/plugin-catalog-common';
import { Logger } from 'winston';
import { LoggerService } from '@backstage/backend-plugin-api';
import { PluginTaskScheduler } from '@backstage/backend-tasks';
import { TaskRunner } from '@backstage/backend-tasks';
import { UrlReader } from '@backstage/backend-common';
@@ -60,7 +60,7 @@ export class AwsOrganizationCloudAccountProcessor implements CatalogProcessor {
static fromConfig(
config: Config,
options: {
logger: Logger;
logger: LoggerService;
},
): Promise<AwsOrganizationCloudAccountProcessor>;
// (undocumented)
@@ -95,7 +95,7 @@ export class AwsS3EntityProvider implements EntityProvider {
static fromConfig(
configRoot: Config,
options: {
logger: Logger;
logger: LoggerService;
schedule?: TaskRunner;
scheduler?: PluginTaskScheduler;
},
@@ -103,7 +103,7 @@ export class AwsS3EntityProvider implements EntityProvider {
// (undocumented)
getProviderName(): string;
// (undocumented)
refresh(logger: Logger): Promise<void>;
refresh(logger: LoggerService): Promise<void>;
}
// @public
@@ -14,7 +14,6 @@
* limitations under the License.
*/
import { loggerToWinstonLogger } from '@backstage/backend-common';
import {
coreServices,
createBackendModule,
@@ -41,7 +40,7 @@ export const catalogModuleAwsS3EntityProvider = createBackendModule({
async init({ config, catalog, logger, scheduler }) {
catalog.addEntityProvider(
AwsS3EntityProvider.fromConfig(config, {
logger: loggerToWinstonLogger(logger),
logger,
scheduler,
}),
);
@@ -27,12 +27,12 @@ import {
ListAccountsResponse,
Organizations,
} from '@aws-sdk/client-organizations';
import { Logger } from 'winston';
import { readAwsOrganizationConfig } from '../awsOrganization/config';
import {
AwsCredentialProvider,
DefaultAwsCredentialsManager,
} from '@backstage/integration-aws-node';
import { LoggerService } from '@backstage/backend-plugin-api';
const AWS_ORGANIZATION_REGION = 'us-east-1';
const LOCATION_TYPE = 'aws-cloud-accounts';
@@ -54,9 +54,9 @@ const ACCOUNT_STATUS_LABEL = 'amazonaws.com/account-status';
*/
export class AwsOrganizationCloudAccountProcessor implements CatalogProcessor {
private readonly organizations: Organizations;
private readonly logger: Logger;
private readonly logger: LoggerService;
static async fromConfig(config: Config, options: { logger: Logger }) {
static async fromConfig(config: Config, options: { logger: LoggerService }) {
const c = config.getOptionalConfig('catalog.processors.awsOrganization');
const orgConfig = c ? readAwsOrganizationConfig(c) : undefined;
const awsCredentialsManager =
@@ -72,7 +72,7 @@ export class AwsOrganizationCloudAccountProcessor implements CatalogProcessor {
private constructor(
private readonly credProvider: AwsCredentialProvider,
logger: Logger,
logger: LoggerService,
) {
this.logger = logger?.child({
target: this.getProcessorName(),
@@ -31,12 +31,12 @@ import {
S3,
} from '@aws-sdk/client-s3';
import * as uuid from 'uuid';
import { Logger } from 'winston';
import { getEndpointFromInstructions } from '@aws-sdk/middleware-endpoint';
import {
AwsCredentialsManager,
DefaultAwsCredentialsManager,
} from '@backstage/integration-aws-node';
import { LoggerService } from '@backstage/backend-plugin-api';
// TODO: event-based updates using S3 events (+ queue like SQS)?
/**
@@ -47,7 +47,7 @@ import {
* @public
*/
export class AwsS3EntityProvider implements EntityProvider {
private readonly logger: Logger;
private readonly logger: LoggerService;
private s3?: S3;
private readonly scheduleFn: () => Promise<void>;
private connection?: EntityProviderConnection;
@@ -56,7 +56,7 @@ export class AwsS3EntityProvider implements EntityProvider {
static fromConfig(
configRoot: Config,
options: {
logger: Logger;
logger: LoggerService;
schedule?: TaskRunner;
scheduler?: PluginTaskScheduler;
},
@@ -106,7 +106,7 @@ export class AwsS3EntityProvider implements EntityProvider {
private readonly config: AwsS3Config,
private readonly integration: AwsS3Integration,
private readonly awsCredentialsManager: AwsCredentialsManager,
logger: Logger,
logger: LoggerService,
taskRunner: TaskRunner,
) {
this.logger = logger.child({
@@ -176,7 +176,7 @@ export class AwsS3EntityProvider implements EntityProvider {
await this.scheduleFn();
}
async refresh(logger: Logger) {
async refresh(logger: LoggerService) {
if (!this.connection) {
throw new Error('Not initialized');
}
@@ -9,7 +9,7 @@ import { Config } from '@backstage/config';
import { EntityProvider } from '@backstage/plugin-catalog-node';
import { EntityProviderConnection } from '@backstage/plugin-catalog-node';
import { LocationSpec } from '@backstage/plugin-catalog-common';
import { Logger } from 'winston';
import { LoggerService } from '@backstage/backend-plugin-api';
import { PluginTaskScheduler } from '@backstage/backend-tasks';
import { ScmIntegrationRegistry } from '@backstage/integration';
import { TaskRunner } from '@backstage/backend-tasks';
@@ -18,13 +18,13 @@ import { TaskRunner } from '@backstage/backend-tasks';
export class AzureDevOpsDiscoveryProcessor implements CatalogProcessor {
constructor(options: {
integrations: ScmIntegrationRegistry;
logger: Logger;
logger: LoggerService;
});
// (undocumented)
static fromConfig(
config: Config,
options: {
logger: Logger;
logger: LoggerService;
},
): AzureDevOpsDiscoveryProcessor;
// (undocumented)
@@ -45,7 +45,7 @@ export class AzureDevOpsEntityProvider implements EntityProvider {
static fromConfig(
configRoot: Config,
options: {
logger: Logger;
logger: LoggerService;
schedule?: TaskRunner;
scheduler?: PluginTaskScheduler;
},
@@ -53,6 +53,6 @@ export class AzureDevOpsEntityProvider implements EntityProvider {
// (undocumented)
getProviderName(): string;
// (undocumented)
refresh(logger: Logger): Promise<void>;
refresh(logger: LoggerService): Promise<void>;
}
```
@@ -57,8 +57,7 @@
"@backstage/plugin-catalog-common": "workspace:^",
"@backstage/plugin-catalog-node": "workspace:^",
"node-fetch": "^2.6.7",
"uuid": "^9.0.0",
"winston": "^3.2.1"
"uuid": "^9.0.0"
},
"devDependencies": {
"@backstage/backend-test-utils": "workspace:^",
@@ -14,10 +14,9 @@
* limitations under the License.
*/
import { loggerToWinstonLogger } from '@backstage/backend-common';
import {
createBackendModule,
coreServices,
createBackendModule,
} from '@backstage/backend-plugin-api';
import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';
import { AzureDevOpsEntityProvider } from '../providers';
@@ -41,7 +40,7 @@ export const catalogModuleAzureDevOpsEntityProvider = createBackendModule({
async init({ config, catalog, logger, scheduler }) {
catalog.addEntityProvider(
AzureDevOpsEntityProvider.fromConfig(config, {
logger: loggerToWinstonLogger(logger),
logger,
scheduler,
}),
);
@@ -27,8 +27,8 @@ import {
processingResult,
} from '@backstage/plugin-catalog-node';
import { LocationSpec } from '@backstage/plugin-catalog-common';
import { Logger } from 'winston';
import { codeSearch } from '../lib';
import { LoggerService } from '@backstage/backend-plugin-api';
/**
* Extracts repositories out of an Azure DevOps org.
@@ -49,9 +49,9 @@ import { codeSearch } from '../lib';
export class AzureDevOpsDiscoveryProcessor implements CatalogProcessor {
private readonly integrations: ScmIntegrationRegistry;
private readonly credentialsProvider: AzureDevOpsCredentialsProvider;
private readonly logger: Logger;
private readonly logger: LoggerService;
static fromConfig(config: Config, options: { logger: Logger }) {
static fromConfig(config: Config, options: { logger: LoggerService }) {
const integrations = ScmIntegrations.fromConfig(config);
return new AzureDevOpsDiscoveryProcessor({
@@ -62,7 +62,7 @@ export class AzureDevOpsDiscoveryProcessor implements CatalogProcessor {
constructor(options: {
integrations: ScmIntegrationRegistry;
logger: Logger;
logger: LoggerService;
}) {
this.integrations = options.integrations;
this.logger = options.logger;
@@ -29,10 +29,10 @@ import {
} from '@backstage/plugin-catalog-node';
import { LocationSpec } from '@backstage/plugin-catalog-common';
import { readAzureDevOpsConfigs } from './config';
import { Logger } from 'winston';
import { AzureDevOpsConfig } from './types';
import * as uuid from 'uuid';
import { codeSearch, CodeSearchResultItem } from '../lib';
import { LoggerService } from '@backstage/backend-plugin-api';
/**
* Provider which discovers catalog files within an Azure DevOps repositories.
@@ -42,14 +42,14 @@ import { codeSearch, CodeSearchResultItem } from '../lib';
* @public
*/
export class AzureDevOpsEntityProvider implements EntityProvider {
private readonly logger: Logger;
private readonly logger: LoggerService;
private readonly scheduleFn: () => Promise<void>;
private connection?: EntityProviderConnection;
static fromConfig(
configRoot: Config,
options: {
logger: Logger;
logger: LoggerService;
schedule?: TaskRunner;
scheduler?: PluginTaskScheduler;
},
@@ -98,7 +98,7 @@ export class AzureDevOpsEntityProvider implements EntityProvider {
private readonly config: AzureDevOpsConfig,
private readonly integration: AzureIntegration,
private readonly credentialsProvider: AzureDevOpsCredentialsProvider,
logger: Logger,
logger: LoggerService,
taskRunner: TaskRunner,
) {
this.logger = logger.child({
@@ -144,7 +144,7 @@ export class AzureDevOpsEntityProvider implements EntityProvider {
await this.scheduleFn();
}
async refresh(logger: Logger) {
async refresh(logger: LoggerService) {
if (!this.connection) {
throw new Error('Not initialized');
}
@@ -9,7 +9,7 @@ import { Entity } from '@backstage/catalog-model';
import { EntityProvider } from '@backstage/plugin-catalog-node';
import { EntityProviderConnection } from '@backstage/plugin-catalog-node';
import { LocationSpec } from '@backstage/plugin-catalog-node';
import { Logger } from 'winston';
import { LoggerService } from '@backstage/backend-plugin-api';
import { PluginTaskScheduler } from '@backstage/backend-tasks';
import { Response as Response_2 } from 'node-fetch';
import { TaskRunner } from '@backstage/backend-tasks';
@@ -55,7 +55,7 @@ export class BitbucketServerEntityProvider implements EntityProvider {
static fromConfig(
config: Config,
options: {
logger: Logger;
logger: LoggerService;
parser?: BitbucketServerLocationParser;
schedule?: TaskRunner;
scheduler?: PluginTaskScheduler;
@@ -64,7 +64,7 @@ export class BitbucketServerEntityProvider implements EntityProvider {
// (undocumented)
getProviderName(): string;
// (undocumented)
refresh(logger: Logger): Promise<void>;
refresh(logger: LoggerService): Promise<void>;
}
// @public (undocumented)
@@ -78,7 +78,7 @@ export type BitbucketServerListOptions = {
export type BitbucketServerLocationParser = (options: {
client: BitbucketServerClient;
location: LocationSpec;
logger: Logger;
logger: LoggerService;
}) => AsyncIterable<Entity>;
// @public (undocumented)
@@ -54,8 +54,7 @@
"@backstage/plugin-catalog-node": "workspace:^",
"@types/node-fetch": "^2.5.12",
"node-fetch": "^2.6.7",
"uuid": "^9.0.0",
"winston": "^3.2.1"
"uuid": "^9.0.0"
},
"devDependencies": {
"@backstage/backend-test-utils": "workspace:^",
@@ -14,7 +14,6 @@
* limitations under the License.
*/
import { loggerToWinstonLogger } from '@backstage/backend-common';
import {
coreServices,
createBackendModule,
@@ -37,9 +36,8 @@ export const catalogModuleBitbucketServerEntityProvider = createBackendModule({
scheduler: coreServices.scheduler,
},
async init({ catalog, config, logger, scheduler }) {
const winstonLogger = loggerToWinstonLogger(logger);
const providers = BitbucketServerEntityProvider.fromConfig(config, {
logger: winstonLogger,
logger,
scheduler,
});
@@ -26,7 +26,6 @@ import {
EntityProvider,
EntityProviderConnection,
} from '@backstage/plugin-catalog-node';
import { Logger } from 'winston';
import * as uuid from 'uuid';
import { BitbucketServerClient, paginated } from '../lib';
import {
@@ -37,6 +36,7 @@ import {
BitbucketServerLocationParser,
defaultBitbucketServerLocationParser,
} from './BitbucketServerLocationParser';
import { LoggerService } from '@backstage/backend-plugin-api';
/**
* Discovers catalog files located in Bitbucket Server.
@@ -50,14 +50,14 @@ export class BitbucketServerEntityProvider implements EntityProvider {
private readonly integration: BitbucketServerIntegration;
private readonly config: BitbucketServerEntityProviderConfig;
private readonly parser: BitbucketServerLocationParser;
private readonly logger: Logger;
private readonly logger: LoggerService;
private readonly scheduleFn: () => Promise<void>;
private connection?: EntityProviderConnection;
static fromConfig(
config: Config,
options: {
logger: Logger;
logger: LoggerService;
parser?: BitbucketServerLocationParser;
schedule?: TaskRunner;
scheduler?: PluginTaskScheduler;
@@ -102,7 +102,7 @@ export class BitbucketServerEntityProvider implements EntityProvider {
private constructor(
config: BitbucketServerEntityProviderConfig,
integration: BitbucketServerIntegration,
logger: Logger,
logger: LoggerService,
taskRunner: TaskRunner,
parser?: BitbucketServerLocationParser,
) {
@@ -151,7 +151,7 @@ export class BitbucketServerEntityProvider implements EntityProvider {
await this.scheduleFn();
}
async refresh(logger: Logger) {
async refresh(logger: LoggerService) {
if (!this.connection) {
throw new Error('Not initialized');
}
@@ -19,8 +19,8 @@ import {
locationSpecToLocationEntity,
} from '@backstage/plugin-catalog-node';
import { Entity } from '@backstage/catalog-model';
import { Logger } from 'winston';
import { BitbucketServerClient } from '../lib';
import { LoggerService } from '@backstage/backend-plugin-api';
/**
* A custom callback that reacts to finding a location by yielding entities.
@@ -31,7 +31,7 @@ import { BitbucketServerClient } from '../lib';
export type BitbucketServerLocationParser = (options: {
client: BitbucketServerClient;
location: LocationSpec;
logger: Logger;
logger: LoggerService;
}) => AsyncIterable<Entity>;
export const defaultBitbucketServerLocationParser =
@@ -8,7 +8,7 @@ import { Config } from '@backstage/config';
import * as container from '@google-cloud/container';
import { EntityProvider } from '@backstage/plugin-catalog-node';
import { EntityProviderConnection } from '@backstage/plugin-catalog-node';
import { Logger } from 'winston';
import { LoggerService } from '@backstage/backend-plugin-api';
import { SchedulerService } from '@backstage/backend-plugin-api';
// @public
@@ -25,7 +25,7 @@ export class GkeEntityProvider implements EntityProvider {
scheduler,
config,
}: {
logger: Logger;
logger: LoggerService;
scheduler: SchedulerService;
config: Config;
}): GkeEntityProvider;
@@ -36,7 +36,7 @@ export class GkeEntityProvider implements EntityProvider {
config,
clusterManagerClient,
}: {
logger: Logger;
logger: LoggerService;
scheduler: SchedulerService;
config: Config;
clusterManagerClient: container.v1.ClusterManagerClient;
@@ -56,8 +56,7 @@
"@backstage/config": "workspace:^",
"@backstage/plugin-catalog-node": "workspace:^",
"@backstage/plugin-kubernetes-common": "workspace:^",
"@google-cloud/container": "^5.0.0",
"winston": "^3.2.1"
"@google-cloud/container": "^5.0.0"
},
"devDependencies": {
"@backstage/backend-test-utils": "workspace:^",
@@ -14,7 +14,6 @@
* limitations under the License.
*/
import { loggerToWinstonLogger } from '@backstage/backend-common';
import {
coreServices,
createBackendModule,
@@ -41,7 +40,7 @@ export const catalogModuleGcpGkeEntityProvider = createBackendModule({
async init({ config, catalog, logger, scheduler }) {
catalog.addEntityProvider(
GkeEntityProvider.fromConfig({
logger: loggerToWinstonLogger(logger),
logger,
scheduler,
config,
}),
@@ -14,16 +14,14 @@
* limitations under the License.
*/
import {
TaskRunner,
readTaskScheduleDefinitionFromConfig,
TaskRunner,
} from '@backstage/backend-tasks';
import {
DeferredEntity,
EntityProvider,
EntityProviderConnection,
} from '@backstage/plugin-catalog-node';
import { Logger } from 'winston';
import * as container from '@google-cloud/container';
import {
ANNOTATION_KUBERNETES_API_SERVER,
@@ -33,7 +31,7 @@ import {
ANNOTATION_KUBERNETES_DASHBOARD_PARAMETERS,
} from '@backstage/plugin-kubernetes-common';
import { Config } from '@backstage/config';
import { SchedulerService } from '@backstage/backend-plugin-api';
import { LoggerService, SchedulerService } from '@backstage/backend-plugin-api';
import {
ANNOTATION_LOCATION,
ANNOTATION_ORIGIN_LOCATION,
@@ -45,14 +43,14 @@ import {
* @public
*/
export class GkeEntityProvider implements EntityProvider {
private readonly logger: Logger;
private readonly logger: LoggerService;
private readonly scheduleFn: () => Promise<void>;
private readonly gkeParents: string[];
private readonly clusterManagerClient: container.v1.ClusterManagerClient;
private connection?: EntityProviderConnection;
private constructor(
logger: Logger,
logger: LoggerService,
taskRunner: TaskRunner,
gkeParents: string[],
clusterManagerClient: container.v1.ClusterManagerClient,
@@ -68,7 +66,7 @@ export class GkeEntityProvider implements EntityProvider {
scheduler,
config,
}: {
logger: Logger;
logger: LoggerService;
scheduler: SchedulerService;
config: Config;
}) {
@@ -86,7 +84,7 @@ export class GkeEntityProvider implements EntityProvider {
config,
clusterManagerClient,
}: {
logger: Logger;
logger: LoggerService;
scheduler: SchedulerService;
config: Config;
clusterManagerClient: container.v1.ClusterManagerClient;
@@ -6,7 +6,7 @@
import { Config } from '@backstage/config';
import { EntityProvider } from '@backstage/plugin-catalog-node';
import { EntityProviderConnection } from '@backstage/plugin-catalog-node';
import { Logger } from 'winston';
import { LoggerService } from '@backstage/backend-plugin-api';
import { PluginTaskScheduler } from '@backstage/backend-tasks';
import { TaskRunner } from '@backstage/backend-tasks';
@@ -18,7 +18,7 @@ export class GerritEntityProvider implements EntityProvider {
static fromConfig(
configRoot: Config,
options: {
logger: Logger;
logger: LoggerService;
schedule?: TaskRunner;
scheduler?: PluginTaskScheduler;
},
@@ -26,7 +26,7 @@ export class GerritEntityProvider implements EntityProvider {
// (undocumented)
getProviderName(): string;
// (undocumented)
refresh(logger: Logger): Promise<void>;
refresh(logger: LoggerService): Promise<void>;
}
// (No @packageDocumentation comment for this package)
@@ -54,8 +54,7 @@
"@backstage/plugin-catalog-node": "workspace:^",
"fs-extra": "^11.2.0",
"node-fetch": "^2.6.7",
"uuid": "^9.0.0",
"winston": "^3.2.1"
"uuid": "^9.0.0"
},
"devDependencies": {
"@backstage/backend-test-utils": "workspace:^",
@@ -14,7 +14,6 @@
* limitations under the License.
*/
import { loggerToWinstonLogger } from '@backstage/backend-common';
import {
coreServices,
createBackendModule,
@@ -37,9 +36,8 @@ export const catalogModuleGerritEntityProvider = createBackendModule({
scheduler: coreServices.scheduler,
},
async init({ catalog, config, logger, scheduler }) {
const winstonLogger = loggerToWinstonLogger(logger);
const providers = GerritEntityProvider.fromConfig(config, {
logger: winstonLogger,
logger,
scheduler,
});
@@ -32,23 +32,23 @@ import {
ScmIntegrations,
} from '@backstage/integration';
import * as uuid from 'uuid';
import { Logger } from 'winston';
import { readGerritConfigs } from './config';
import { GerritProjectQueryResult, GerritProviderConfig } from './types';
import { LoggerService } from '@backstage/backend-plugin-api';
/** @public */
export class GerritEntityProvider implements EntityProvider {
private readonly config: GerritProviderConfig;
private readonly integration: GerritIntegration;
private readonly logger: Logger;
private readonly logger: LoggerService;
private readonly scheduleFn: () => Promise<void>;
private connection?: EntityProviderConnection;
static fromConfig(
configRoot: Config,
options: {
logger: Logger;
logger: LoggerService;
schedule?: TaskRunner;
scheduler?: PluginTaskScheduler;
},
@@ -94,7 +94,7 @@ export class GerritEntityProvider implements EntityProvider {
private constructor(
config: GerritProviderConfig,
integration: GerritIntegration,
logger: Logger,
logger: LoggerService,
taskRunner: TaskRunner,
) {
this.config = config;
@@ -139,7 +139,7 @@ export class GerritEntityProvider implements EntityProvider {
};
}
async refresh(logger: Logger): Promise<void> {
async refresh(logger: LoggerService): Promise<void> {
if (!this.connection) {
throw new Error('Gerrit discovery connection not initialized');
}
@@ -14,7 +14,6 @@
* limitations under the License.
*/
import { loggerToWinstonLogger } from '@backstage/backend-common';
import {
coreServices,
createBackendModule,
@@ -111,7 +110,7 @@ export const catalogModuleGithubOrgEntityProvider = createBackendModule({
schedule: scheduler.createScheduledTaskRunner(
definition.schedule,
),
logger: loggerToWinstonLogger(logger),
logger,
userTransformer,
teamTransformer,
}),
@@ -19,7 +19,7 @@ import { GithubCredentialsProvider } from '@backstage/integration';
import { GithubIntegrationConfig } from '@backstage/integration';
import { graphql } from '@octokit/graphql';
import { LocationSpec } from '@backstage/plugin-catalog-node';
import { Logger } from 'winston';
import { LoggerService } from '@backstage/backend-plugin-api';
import { PluginEndpointDiscovery } from '@backstage/backend-common';
import { PluginTaskScheduler } from '@backstage/backend-tasks';
import { ScmIntegrationRegistry } from '@backstage/integration';
@@ -41,14 +41,14 @@ export const defaultUserTransformer: (
export class GithubDiscoveryProcessor implements CatalogProcessor {
constructor(options: {
integrations: ScmIntegrationRegistry;
logger: Logger;
logger: LoggerService;
githubCredentialsProvider?: GithubCredentialsProvider;
});
// (undocumented)
static fromConfig(
config: Config,
options: {
logger: Logger;
logger: LoggerService;
githubCredentialsProvider?: GithubCredentialsProvider;
},
): GithubDiscoveryProcessor;
@@ -70,7 +70,7 @@ export class GitHubEntityProvider implements EntityProvider {
static fromConfig(
config: Config,
options: {
logger: Logger;
logger: LoggerService;
schedule?: TaskRunner;
scheduler?: PluginTaskScheduler;
},
@@ -78,7 +78,7 @@ export class GitHubEntityProvider implements EntityProvider {
// (undocumented)
getProviderName(): string;
// (undocumented)
refresh(logger: Logger): Promise<void>;
refresh(logger: LoggerService): Promise<void>;
}
// @public
@@ -90,7 +90,7 @@ export class GithubEntityProvider implements EntityProvider, EventSubscriber {
config: Config,
options: {
events?: EventsService;
logger: Logger;
logger: LoggerService;
schedule?: TaskRunner;
scheduler?: PluginTaskScheduler;
},
@@ -100,7 +100,7 @@ export class GithubEntityProvider implements EntityProvider, EventSubscriber {
// (undocumented)
onEvent(params: EventParams): Promise<void>;
// (undocumented)
refresh(logger: Logger): Promise<void>;
refresh(logger: LoggerService): Promise<void>;
// (undocumented)
supportsEventTopics(): string[];
}
@@ -147,7 +147,7 @@ export class GithubMultiOrgEntityProvider implements EntityProvider {
gitHubConfig: GithubIntegrationConfig;
githubCredentialsProvider: GithubCredentialsProvider;
githubUrl: string;
logger: Logger;
logger: LoggerService;
orgs?: string[];
userTransformer?: UserTransformer;
teamTransformer?: TeamTransformer;
@@ -161,7 +161,7 @@ export class GithubMultiOrgEntityProvider implements EntityProvider {
): GithubMultiOrgEntityProvider;
// (undocumented)
getProviderName(): string;
read(options?: { logger?: Logger }): Promise<void>;
read(options?: { logger?: LoggerService }): Promise<void>;
}
// @public
@@ -172,7 +172,7 @@ export interface GithubMultiOrgEntityProviderOptions {
githubCredentialsProvider?: GithubCredentialsProvider;
githubUrl: string;
id: string;
logger: Logger;
logger: LoggerService;
orgs?: string[];
schedule?: 'manual' | TaskRunner;
teamTransformer?: TeamTransformer;
@@ -183,7 +183,7 @@ export interface GithubMultiOrgEntityProviderOptions {
export class GithubMultiOrgReaderProcessor implements CatalogProcessor {
constructor(options: {
integrations: ScmIntegrationRegistry;
logger: Logger;
logger: LoggerService;
orgs: GithubMultiOrgConfig;
githubCredentialsProvider?: GithubCredentialsProvider;
userTransformer?: UserTransformer;
@@ -193,7 +193,7 @@ export class GithubMultiOrgReaderProcessor implements CatalogProcessor {
static fromConfig(
config: Config,
options: {
logger: Logger;
logger: LoggerService;
githubCredentialsProvider?: GithubCredentialsProvider;
userTransformer?: UserTransformer;
teamTransformer?: TeamTransformer;
@@ -227,7 +227,7 @@ export class GithubOrgEntityProvider
id: string;
orgUrl: string;
gitHubConfig: GithubIntegrationConfig;
logger: Logger;
logger: LoggerService;
githubCredentialsProvider?: GithubCredentialsProvider;
userTransformer?: UserTransformer;
teamTransformer?: TeamTransformer;
@@ -243,7 +243,7 @@ export class GithubOrgEntityProvider
getProviderName(): string;
// (undocumented)
onEvent(params: EventParams): Promise<void>;
read(options?: { logger?: Logger }): Promise<void>;
read(options?: { logger?: LoggerService }): Promise<void>;
// (undocumented)
supportsEventTopics(): string[];
}
@@ -256,7 +256,7 @@ export interface GithubOrgEntityProviderOptions {
events?: EventsService;
githubCredentialsProvider?: GithubCredentialsProvider;
id: string;
logger: Logger;
logger: LoggerService;
orgUrl: string;
schedule?: 'manual' | TaskRunner;
teamTransformer?: TeamTransformer;
@@ -267,14 +267,14 @@ export interface GithubOrgEntityProviderOptions {
export class GithubOrgReaderProcessor implements CatalogProcessor {
constructor(options: {
integrations: ScmIntegrationRegistry;
logger: Logger;
logger: LoggerService;
githubCredentialsProvider?: GithubCredentialsProvider;
});
// (undocumented)
static fromConfig(
config: Config,
options: {
logger: Logger;
logger: LoggerService;
githubCredentialsProvider?: GithubCredentialsProvider;
},
): GithubOrgReaderProcessor;
@@ -66,8 +66,7 @@
"lodash": "^4.17.21",
"minimatch": "^9.0.0",
"node-fetch": "^2.6.7",
"uuid": "^9.0.0",
"winston": "^3.2.1"
"uuid": "^9.0.0"
},
"devDependencies": {
"@backstage/backend-test-utils": "workspace:^",
@@ -20,12 +20,12 @@ import {
EntityProvider,
EntityProviderConnection,
} from '@backstage/plugin-catalog-node';
import { Logger } from 'winston';
import { GithubEntityProvider } from './providers/GithubEntityProvider';
import {
GithubOrgEntityProvider,
GithubOrgEntityProviderOptions,
} from './providers/GithubOrgEntityProvider';
import { LoggerService } from '@backstage/backend-plugin-api';
/**
* @public
@@ -57,7 +57,7 @@ export class GitHubEntityProvider implements EntityProvider {
static fromConfig(
config: Config,
options: {
logger: Logger;
logger: LoggerService;
schedule?: TaskRunner;
scheduler?: PluginTaskScheduler;
},
@@ -80,7 +80,7 @@ export class GitHubEntityProvider implements EntityProvider {
return this.delegate.getProviderName();
}
refresh(logger: Logger): Promise<void> {
refresh(logger: LoggerService): Promise<void> {
return this.delegate.refresh(logger);
}
}
@@ -15,10 +15,9 @@
*/
import {
createBackendModule,
coreServices,
createBackendModule,
} from '@backstage/backend-plugin-api';
import { loggerToWinstonLogger } from '@backstage/backend-common';
import {
catalogAnalysisExtensionPoint,
catalogProcessingExtensionPoint,
@@ -68,7 +67,7 @@ export const githubCatalogModule = createBackendModule({
catalog.addEntityProvider(
GithubEntityProvider.fromConfig(config, {
events,
logger: loggerToWinstonLogger(logger),
logger,
scheduler,
}),
);
@@ -28,8 +28,8 @@ import {
processingResult,
} from '@backstage/plugin-catalog-node';
import { graphql } from '@octokit/graphql';
import { Logger } from 'winston';
import { getOrganizationRepositories } from '../lib';
import { LoggerService } from '@backstage/backend-plugin-api';
/**
* Extracts repositories out of a GitHub org.
@@ -49,13 +49,13 @@ import { getOrganizationRepositories } from '../lib';
*/
export class GithubDiscoveryProcessor implements CatalogProcessor {
private readonly integrations: ScmIntegrationRegistry;
private readonly logger: Logger;
private readonly logger: LoggerService;
private readonly githubCredentialsProvider: GithubCredentialsProvider;
static fromConfig(
config: Config,
options: {
logger: Logger;
logger: LoggerService;
githubCredentialsProvider?: GithubCredentialsProvider;
},
) {
@@ -69,7 +69,7 @@ export class GithubDiscoveryProcessor implements CatalogProcessor {
constructor(options: {
integrations: ScmIntegrationRegistry;
logger: Logger;
logger: LoggerService;
githubCredentialsProvider?: GithubCredentialsProvider;
}) {
this.integrations = options.integrations;
@@ -36,7 +36,6 @@ import {
processingResult,
} from '@backstage/plugin-catalog-node';
import { graphql } from '@octokit/graphql';
import { Logger } from 'winston';
import {
assignGroupsToUsers,
buildOrgHierarchy,
@@ -50,6 +49,7 @@ import {
UserTransformer,
} from '../lib';
import { areGroupEntities, areUserEntities } from '../lib/guards';
import { LoggerService } from '@backstage/backend-plugin-api';
/**
* Extracts teams and users out of a multiple GitHub orgs namespaced per org.
@@ -61,13 +61,13 @@ import { areGroupEntities, areUserEntities } from '../lib/guards';
export class GithubMultiOrgReaderProcessor implements CatalogProcessor {
private readonly integrations: ScmIntegrationRegistry;
private readonly orgs: GithubMultiOrgConfig;
private readonly logger: Logger;
private readonly logger: LoggerService;
private readonly githubCredentialsProvider: GithubCredentialsProvider;
static fromConfig(
config: Config,
options: {
logger: Logger;
logger: LoggerService;
githubCredentialsProvider?: GithubCredentialsProvider;
userTransformer?: UserTransformer;
teamTransformer?: TeamTransformer;
@@ -86,7 +86,7 @@ export class GithubMultiOrgReaderProcessor implements CatalogProcessor {
constructor(
private options: {
integrations: ScmIntegrationRegistry;
logger: Logger;
logger: LoggerService;
orgs: GithubMultiOrgConfig;
githubCredentialsProvider?: GithubCredentialsProvider;
userTransformer?: UserTransformer;
@@ -29,7 +29,6 @@ import {
processingResult,
} from '@backstage/plugin-catalog-node';
import { graphql } from '@octokit/graphql';
import { Logger } from 'winston';
import {
assignGroupsToUsers,
buildOrgHierarchy,
@@ -38,6 +37,7 @@ import {
parseGithubOrgUrl,
} from '../lib';
import { areGroupEntities, areUserEntities } from '../lib/guards';
import { LoggerService } from '@backstage/backend-plugin-api';
type GraphQL = typeof graphql;
@@ -52,13 +52,13 @@ type GraphQL = typeof graphql;
*/
export class GithubOrgReaderProcessor implements CatalogProcessor {
private readonly integrations: ScmIntegrationRegistry;
private readonly logger: Logger;
private readonly logger: LoggerService;
private readonly githubCredentialsProvider: GithubCredentialsProvider;
static fromConfig(
config: Config,
options: {
logger: Logger;
logger: LoggerService;
githubCredentialsProvider?: GithubCredentialsProvider;
},
) {
@@ -72,7 +72,7 @@ export class GithubOrgReaderProcessor implements CatalogProcessor {
constructor(options: {
integrations: ScmIntegrationRegistry;
logger: Logger;
logger: LoggerService;
githubCredentialsProvider?: GithubCredentialsProvider;
}) {
this.integrations = options.integrations;
@@ -18,9 +18,9 @@ import { PluginTaskScheduler, TaskRunner } from '@backstage/backend-tasks';
import { Config } from '@backstage/config';
import {
GithubCredentialsProvider,
ScmIntegrations,
GithubIntegrationConfig,
GithubIntegration,
GithubIntegrationConfig,
ScmIntegrations,
SingleInstanceGithubCredentialsProvider,
} from '@backstage/integration';
import {
@@ -34,15 +34,14 @@ import { LocationSpec } from '@backstage/plugin-catalog-common';
import { graphql } from '@octokit/graphql';
import * as uuid from 'uuid';
import { Logger } from 'winston';
import {
readProviderConfigs,
GithubEntityProviderConfig,
readProviderConfigs,
} from './GithubEntityProviderConfig';
import { getOrganizationRepositories } from '../lib/github';
import {
satisfiesTopicFilter,
satisfiesForkFilter,
satisfiesTopicFilter,
satisfiesVisibilityFilter,
} from '../lib/util';
@@ -51,8 +50,9 @@ import {
EventsService,
EventSubscriber,
} from '@backstage/plugin-events-node';
import { PushEvent, Commit } from '@octokit/webhooks-types';
import { Commit, PushEvent } from '@octokit/webhooks-types';
import { Minimatch } from 'minimatch';
import { LoggerService } from '@backstage/backend-plugin-api';
const TOPIC_REPO_PUSH = 'github.push';
@@ -78,7 +78,7 @@ type Repository = {
export class GithubEntityProvider implements EntityProvider, EventSubscriber {
private readonly config: GithubEntityProviderConfig;
private readonly events?: EventsService;
private readonly logger: Logger;
private readonly logger: LoggerService;
private readonly integration: GithubIntegrationConfig;
private readonly scheduleFn: () => Promise<void>;
private connection?: EntityProviderConnection;
@@ -88,7 +88,7 @@ export class GithubEntityProvider implements EntityProvider, EventSubscriber {
config: Config,
options: {
events?: EventsService;
logger: Logger;
logger: LoggerService;
schedule?: TaskRunner;
scheduler?: PluginTaskScheduler;
},
@@ -132,7 +132,7 @@ export class GithubEntityProvider implements EntityProvider, EventSubscriber {
private constructor(
config: GithubEntityProviderConfig,
integration: GithubIntegration,
logger: Logger,
logger: LoggerService,
taskRunner: TaskRunner,
events?: EventsService,
) {
@@ -187,7 +187,7 @@ export class GithubEntityProvider implements EntityProvider, EventSubscriber {
};
}
async refresh(logger: Logger) {
async refresh(logger: LoggerService) {
if (!this.connection) {
throw new Error('Not initialized');
}
@@ -25,7 +25,7 @@ import {
GithubMultiOrgEntityProvider,
withLocations,
} from './GithubMultiOrgEntityProvider';
import { Logger } from 'winston';
import { LoggerService } from '@backstage/backend-plugin-api';
jest.mock('@octokit/graphql');
@@ -43,7 +43,7 @@ describe('GithubMultiOrgEntityProvider', () => {
describe('read', () => {
let mockClient: jest.Mock<any, any, any>;
let entityProviderConnection: EntityProviderConnection;
let logger: Logger;
let logger: LoggerService;
let gitHubConfig: { host: string };
let mockGetCredentials: jest.Mock<any, any, any>;
let entityProvider: GithubMultiOrgEntityProvider;
@@ -47,10 +47,10 @@ import { graphql } from '@octokit/graphql';
import {
InstallationCreatedEvent,
InstallationEvent,
MembershipEvent,
OrganizationEvent,
OrganizationMemberAddedEvent,
OrganizationMemberRemovedEvent,
MembershipEvent,
TeamCreatedEvent,
TeamDeletedEvent,
TeamEditedEvent,
@@ -58,7 +58,6 @@ import {
} from '@octokit/webhooks-types';
import { merge } from 'lodash';
import * as uuid from 'uuid';
import { Logger } from 'winston';
import {
assignGroupsToUsers,
@@ -83,6 +82,7 @@ import {
} from '../lib/github';
import { splitTeamSlug } from '../lib/util';
import { areGroupEntities, areUserEntities } from '../lib/guards';
import { LoggerService } from '@backstage/backend-plugin-api';
const EVENT_TOPICS = [
'github.installation',
@@ -140,7 +140,7 @@ export interface GithubMultiOrgEntityProviderOptions {
/**
* The logger to use.
*/
logger: Logger;
logger: LoggerService;
/**
* Optionally supply a custom credentials provider, replacing the default one.
@@ -230,7 +230,7 @@ export class GithubMultiOrgEntityProvider implements EntityProvider {
gitHubConfig: GithubIntegrationConfig;
githubCredentialsProvider: GithubCredentialsProvider;
githubUrl: string;
logger: Logger;
logger: LoggerService;
orgs?: string[];
userTransformer?: UserTransformer;
teamTransformer?: TeamTransformer;
@@ -257,7 +257,7 @@ export class GithubMultiOrgEntityProvider implements EntityProvider {
* Runs one single complete ingestion. This is only necessary if you use
* manual scheduling.
*/
async read(options?: { logger?: Logger }) {
async read(options?: { logger?: LoggerService }) {
if (!this.connection) {
throw new Error('Not initialized');
}
@@ -925,7 +925,7 @@ export class GithubMultiOrgEntityProvider implements EntityProvider {
}
// Helps wrap the timing and logging behaviors
function trackProgress(logger: Logger) {
function trackProgress(logger: LoggerService) {
let timestamp = Date.now();
let summary: string;
@@ -43,28 +43,28 @@ import {
TeamEvent,
} from '@octokit/webhooks-types';
import * as uuid from 'uuid';
import { Logger } from 'winston';
import {
TeamTransformer,
UserTransformer,
defaultOrganizationTeamTransformer,
defaultUserTransformer,
TeamTransformer,
UserTransformer,
} from '../lib/defaultTransformers';
import {
DeferredEntitiesBuilder,
GithubTeam,
createAddEntitiesOperation,
createRemoveEntitiesOperation,
createReplaceEntitiesOperation,
DeferredEntitiesBuilder,
getOrganizationTeam,
getOrganizationTeams,
getOrganizationTeamsFromUsers,
getOrganizationUsers,
GithubTeam,
} from '../lib/github';
import { assignGroupsToUsers, buildOrgHierarchy } from '../lib/org';
import { parseGithubOrgUrl } from '../lib/util';
import { withLocations } from '../lib/withLocations';
import { areGroupEntities, areUserEntities } from '../lib/guards';
import { LoggerService } from '@backstage/backend-plugin-api';
const EVENT_TOPICS = [
'github.membership',
@@ -115,7 +115,7 @@ export interface GithubOrgEntityProviderOptions {
/**
* The logger to use.
*/
logger: Logger;
logger: LoggerService;
/**
* Optionally supply a custom credentials provider, replacing the default one.
@@ -183,7 +183,7 @@ export class GithubOrgEntityProvider
id: string;
orgUrl: string;
gitHubConfig: GithubIntegrationConfig;
logger: Logger;
logger: LoggerService;
githubCredentialsProvider?: GithubCredentialsProvider;
userTransformer?: UserTransformer;
teamTransformer?: TeamTransformer;
@@ -214,7 +214,7 @@ export class GithubOrgEntityProvider
* Runs one single complete ingestion. This is only necessary if you use
* manual scheduling.
*/
async read(options?: { logger?: Logger }) {
async read(options?: { logger?: LoggerService }) {
if (!this.connection) {
throw new Error('Not initialized');
}
@@ -618,7 +618,7 @@ export class GithubOrgEntityProvider
}
// Helps wrap the timing and logging behaviors
function trackProgress(logger: Logger) {
function trackProgress(logger: LoggerService) {
let timestamp = Date.now();
let summary: string;
@@ -11,7 +11,7 @@ import { EntityProviderConnection } from '@backstage/plugin-catalog-node';
import { GitLabIntegrationConfig } from '@backstage/integration';
import { GroupEntity } from '@backstage/catalog-model';
import { LocationSpec } from '@backstage/plugin-catalog-node';
import { Logger } from 'winston';
import { LoggerService } from '@backstage/backend-plugin-api';
import { PluginTaskScheduler } from '@backstage/backend-tasks';
import { TaskRunner } from '@backstage/backend-tasks';
import { TaskScheduleDefinition } from '@backstage/backend-tasks';
@@ -25,7 +25,7 @@ export class GitlabDiscoveryEntityProvider implements EntityProvider {
static fromConfig(
config: Config,
options: {
logger: Logger;
logger: LoggerService;
schedule?: TaskRunner;
scheduler?: PluginTaskScheduler;
},
@@ -33,7 +33,7 @@ export class GitlabDiscoveryEntityProvider implements EntityProvider {
// (undocumented)
getProviderName(): string;
// (undocumented)
refresh(logger: Logger): Promise<void>;
refresh(logger: LoggerService): Promise<void>;
}
// @public
@@ -42,7 +42,7 @@ export class GitLabDiscoveryProcessor implements CatalogProcessor {
static fromConfig(
config: Config,
options: {
logger: Logger;
logger: LoggerService;
skipReposWithoutExactFileMatch?: boolean;
skipForkedRepos?: boolean;
},
@@ -80,7 +80,7 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider {
static fromConfig(
config: Config,
options: {
logger: Logger;
logger: LoggerService;
schedule?: TaskRunner;
scheduler?: PluginTaskScheduler;
userTransformer?: UserTransformer;
@@ -54,8 +54,7 @@
"@backstage/plugin-catalog-node": "workspace:^",
"lodash": "^4.17.21",
"node-fetch": "^2.6.7",
"uuid": "^9.0.0",
"winston": "^3.2.1"
"uuid": "^9.0.0"
},
"devDependencies": {
"@backstage/backend-test-utils": "workspace:^",
@@ -30,8 +30,8 @@ import {
LocationSpec,
processingResult,
} from '@backstage/plugin-catalog-node';
import { Logger } from 'winston';
import { GitLabClient, GitLabProject, paginated } from './lib';
import { LoggerService } from '@backstage/backend-plugin-api';
/**
* Extracts repositories out of an GitLab instance.
@@ -39,7 +39,7 @@ import { GitLabClient, GitLabProject, paginated } from './lib';
*/
export class GitLabDiscoveryProcessor implements CatalogProcessor {
private readonly integrations: ScmIntegrationRegistry;
private readonly logger: Logger;
private readonly logger: LoggerService;
private readonly cache: CacheClient;
private readonly skipReposWithoutExactFileMatch: boolean;
private readonly skipForkedRepos: boolean;
@@ -47,7 +47,7 @@ export class GitLabDiscoveryProcessor implements CatalogProcessor {
static fromConfig(
config: Config,
options: {
logger: Logger;
logger: LoggerService;
skipReposWithoutExactFileMatch?: boolean;
skipForkedRepos?: boolean;
},
@@ -66,7 +66,7 @@ export class GitLabDiscoveryProcessor implements CatalogProcessor {
private constructor(options: {
integrations: ScmIntegrationRegistry;
pluginCache: PluginCacheManager;
logger: Logger;
logger: LoggerService;
skipReposWithoutExactFileMatch?: boolean;
skipForkedRepos?: boolean;
}) {
@@ -18,7 +18,7 @@ import {
GitLabIntegrationConfig,
} from '@backstage/integration';
import fetch from 'node-fetch';
import { Logger } from 'winston';
import { LoggerService } from '@backstage/backend-plugin-api';
import {
GitLabDescendantGroupsResponse,
@@ -47,9 +47,12 @@ interface UserListOptions extends CommonListOptions {
export class GitLabClient {
private readonly config: GitLabIntegrationConfig;
private readonly logger: Logger;
private readonly logger: LoggerService;
constructor(options: { config: GitLabIntegrationConfig; logger: Logger }) {
constructor(options: {
config: GitLabIntegrationConfig;
logger: LoggerService;
}) {
this.config = options.config;
this.logger = options.logger;
}
@@ -15,10 +15,9 @@
*/
import {
createBackendModule,
coreServices,
createBackendModule,
} from '@backstage/backend-plugin-api';
import { loggerToWinstonLogger } from '@backstage/backend-common';
import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';
import { GitlabDiscoveryEntityProvider } from '../providers';
@@ -41,7 +40,7 @@ export const catalogModuleGitlabDiscoveryEntityProvider = createBackendModule({
async init({ config, catalog, logger, scheduler }) {
catalog.addEntityProvider(
GitlabDiscoveryEntityProvider.fromConfig(config, {
logger: loggerToWinstonLogger(logger),
logger,
scheduler,
}),
);
@@ -24,7 +24,6 @@ import {
locationSpecToLocationEntity,
} from '@backstage/plugin-catalog-node';
import * as uuid from 'uuid';
import { Logger } from 'winston';
import {
GitLabClient,
GitLabProject,
@@ -32,6 +31,7 @@ import {
paginated,
readGitlabConfigs,
} from '../lib';
import { LoggerService } from '@backstage/backend-plugin-api';
type Result = {
scanned: number;
@@ -45,14 +45,14 @@ type Result = {
export class GitlabDiscoveryEntityProvider implements EntityProvider {
private readonly config: GitlabProviderConfig;
private readonly integration: GitLabIntegration;
private readonly logger: Logger;
private readonly logger: LoggerService;
private readonly scheduleFn: () => Promise<void>;
private connection?: EntityProviderConnection;
static fromConfig(
config: Config,
options: {
logger: Logger;
logger: LoggerService;
schedule?: TaskRunner;
scheduler?: PluginTaskScheduler;
},
@@ -98,7 +98,7 @@ export class GitlabDiscoveryEntityProvider implements EntityProvider {
private constructor(options: {
config: GitlabProviderConfig;
integration: GitLabIntegration;
logger: Logger;
logger: LoggerService;
taskRunner: TaskRunner;
}) {
this.config = options.config;
@@ -143,7 +143,7 @@ export class GitlabDiscoveryEntityProvider implements EntityProvider {
};
}
async refresh(logger: Logger): Promise<void> {
async refresh(logger: LoggerService): Promise<void> {
if (!this.connection) {
throw new Error(
`Gitlab discovery connection not initialized for ${this.getProviderName()}`,
@@ -27,7 +27,7 @@ import {
} from '@backstage/plugin-catalog-node';
import { merge } from 'lodash';
import * as uuid from 'uuid';
import { Logger } from 'winston';
import { LoggerService } from '@backstage/backend-plugin-api';
import {
GitLabClient,
@@ -38,14 +38,14 @@ import {
import {
GitLabGroup,
GitLabUser,
GroupNameTransformer,
GroupTransformer as GroupEntitiesTransformer,
PagedResponse,
UserTransformer,
GroupTransformer as GroupEntitiesTransformer,
GroupNameTransformer,
} from '../lib/types';
import {
defaultGroupNameTransformer,
defaultGroupEntitiesTransformer,
defaultGroupNameTransformer,
defaultUserTransformer,
} from '../lib/defaultTransformers';
@@ -66,7 +66,7 @@ type GroupResult = {
export class GitlabOrgDiscoveryEntityProvider implements EntityProvider {
private readonly config: GitlabProviderConfig;
private readonly integration: GitLabIntegration;
private readonly logger: Logger;
private readonly logger: LoggerService;
private readonly scheduleFn: () => Promise<void>;
private connection?: EntityProviderConnection;
private userTransformer: UserTransformer;
@@ -76,7 +76,7 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider {
static fromConfig(
config: Config,
options: {
logger: Logger;
logger: LoggerService;
schedule?: TaskRunner;
scheduler?: PluginTaskScheduler;
userTransformer?: UserTransformer;
@@ -136,7 +136,7 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider {
private constructor(options: {
config: GitlabProviderConfig;
integration: GitLabIntegration;
logger: Logger;
logger: LoggerService;
taskRunner: TaskRunner;
userTransformer?: UserTransformer;
groupEntitiesTransformer?: GroupEntitiesTransformer;
@@ -189,7 +189,7 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider {
};
}
private async refresh(logger: Logger): Promise<void> {
private async refresh(logger: LoggerService): Promise<void> {
if (!this.connection) {
throw new Error(
`Gitlab discovery connection not initialized for ${this.getProviderName()}`,
@@ -65,8 +65,7 @@
"express-promise-router": "^4.1.0",
"knex": "^3.0.0",
"luxon": "^3.0.0",
"uuid": "^9.0.0",
"winston": "^3.2.1"
"uuid": "^9.0.0"
},
"devDependencies": {
"@backstage/backend-defaults": "workspace:^",
@@ -15,11 +15,10 @@
*/
import {
RootConfigService,
LoggerService,
RootConfigService,
SchedulerService,
} from '@backstage/backend-plugin-api';
import { loggerToWinstonLogger } from '@backstage/backend-common';
import { stringifyError } from '@backstage/errors';
import {
EntityProvider,
@@ -77,7 +76,7 @@ export class WrapperProviders {
async adminRouter(): Promise<express.Router> {
return await new IncrementalProviderRouter(
new IncrementalIngestionDatabaseManager({ client: this.options.client }),
loggerToWinstonLogger(this.options.logger),
this.options.logger,
).createRouter();
}
@@ -86,11 +85,9 @@ export class WrapperProviders {
providerOptions: IncrementalEntityProviderOptions,
connection: EntityProviderConnection,
) {
const logger = loggerToWinstonLogger(
this.options.logger.child({
entityProvider: provider.getProviderName(),
}),
);
const logger = this.options.logger.child({
entityProvider: provider.getProviderName(),
});
try {
if (!this.migrate) {
@@ -17,14 +17,17 @@
import { errorHandler } from '@backstage/backend-common';
import express from 'express';
import Router from 'express-promise-router';
import { Logger } from 'winston';
import { IncrementalIngestionDatabaseManager } from '../database/IncrementalIngestionDatabaseManager';
import { LoggerService } from '@backstage/backend-plugin-api';
export class IncrementalProviderRouter {
private manager: IncrementalIngestionDatabaseManager;
private logger: Logger;
private logger: LoggerService;
constructor(manager: IncrementalIngestionDatabaseManager, logger: Logger) {
constructor(
manager: IncrementalIngestionDatabaseManager,
logger: LoggerService,
) {
this.manager = manager;
this.logger = logger;
}
@@ -32,6 +32,7 @@ import type { PermissionEvaluator } from '@backstage/plugin-permission-common';
import type { DurationObjectUnits } from 'luxon';
import type { Logger } from 'winston';
import { IncrementalIngestionDatabaseManager } from './database/IncrementalIngestionDatabaseManager';
import { LoggerService } from '@backstage/backend-plugin-api';
/**
* Ingest entities into the catalog in bite-sized chunks.
@@ -200,7 +201,7 @@ export interface IterationEngine {
}
export interface IterationEngineOptions {
logger: Logger;
logger: LoggerService;
connection: EntityProviderConnection;
manager: IncrementalIngestionDatabaseManager;
provider: IncrementalEntityProvider<unknown, unknown>;
@@ -10,7 +10,7 @@ import { EntityProvider } from '@backstage/plugin-catalog-node';
import { EntityProviderConnection } from '@backstage/plugin-catalog-node';
import { GroupEntity } from '@backstage/catalog-model';
import { LocationSpec } from '@backstage/plugin-catalog-common';
import { Logger } from 'winston';
import { LoggerService } from '@backstage/backend-plugin-api';
import * as MicrosoftGraph from '@microsoft/microsoft-graph-types';
import { PluginTaskScheduler } from '@backstage/backend-tasks';
import { Response as Response_2 } from 'node-fetch';
@@ -122,7 +122,7 @@ export class MicrosoftGraphOrgEntityProvider implements EntityProvider {
constructor(options: {
id: string;
provider: MicrosoftGraphProviderConfig;
logger: Logger;
logger: LoggerService;
userTransformer?: UserTransformer;
groupTransformer?: GroupTransformer;
organizationTransformer?: OrganizationTransformer;
@@ -136,14 +136,14 @@ export class MicrosoftGraphOrgEntityProvider implements EntityProvider {
): MicrosoftGraphOrgEntityProvider[];
// (undocumented)
getProviderName(): string;
read(options?: { logger?: Logger }): Promise<void>;
read(options?: { logger?: LoggerService }): Promise<void>;
}
// @public @deprecated
export interface MicrosoftGraphOrgEntityProviderLegacyOptions {
groupTransformer?: GroupTransformer;
id: string;
logger: Logger;
logger: LoggerService;
organizationTransformer?: OrganizationTransformer;
schedule: 'manual' | TaskRunner;
target: string;
@@ -154,7 +154,7 @@ export interface MicrosoftGraphOrgEntityProviderLegacyOptions {
export type MicrosoftGraphOrgEntityProviderOptions =
| MicrosoftGraphOrgEntityProviderLegacyOptions
| {
logger: Logger;
logger: LoggerService;
schedule?: 'manual' | TaskRunner;
scheduler?: PluginTaskScheduler;
userTransformer?: UserTransformer | Record<string, UserTransformer>;
@@ -168,7 +168,7 @@ export type MicrosoftGraphOrgEntityProviderOptions =
export class MicrosoftGraphOrgReaderProcessor implements CatalogProcessor {
constructor(options: {
providers: MicrosoftGraphProviderConfig[];
logger: Logger;
logger: LoggerService;
userTransformer?: UserTransformer;
groupTransformer?: GroupTransformer;
organizationTransformer?: OrganizationTransformer;
@@ -177,7 +177,7 @@ export class MicrosoftGraphOrgReaderProcessor implements CatalogProcessor {
static fromConfig(
config: Config,
options: {
logger: Logger;
logger: LoggerService;
userTransformer?: UserTransformer;
groupTransformer?: GroupTransformer;
organizationTransformer?: OrganizationTransformer;
@@ -257,7 +257,7 @@ export function readMicrosoftGraphOrg(
userTransformer?: UserTransformer;
groupTransformer?: GroupTransformer;
organizationTransformer?: OrganizationTransformer;
logger: Logger;
logger: LoggerService;
},
): Promise<{
users: UserEntity[];
@@ -63,8 +63,7 @@
"node-fetch": "^2.6.7",
"p-limit": "^3.0.2",
"qs": "^6.9.4",
"uuid": "^9.0.0",
"winston": "^3.2.1"
"uuid": "^9.0.0"
},
"devDependencies": {
"@backstage/backend-common": "workspace:^",
@@ -20,7 +20,6 @@ import {
UserEntity,
} from '@backstage/catalog-model';
import limiterFactory from 'p-limit';
import { Logger } from 'winston';
import { MicrosoftGraphClient } from './client';
import {
MICROSOFT_GRAPH_GROUP_ID_ANNOTATION,
@@ -39,6 +38,7 @@ import {
defaultUserTransformer,
} from './defaultTransformers';
import * as MicrosoftGraph from '@microsoft/microsoft-graph-types';
import { LoggerService } from '@backstage/backend-plugin-api';
const PAGE_SIZE = 999;
@@ -51,7 +51,7 @@ export async function readMicrosoftGraphUsers(
userSelect?: string[];
loadUserPhotos?: boolean;
transformer?: UserTransformer;
logger: Logger;
logger: LoggerService;
},
): Promise<{
users: UserEntity[]; // With all relations empty
@@ -89,7 +89,7 @@ export async function readMicrosoftGraphUsersInGroups(
userGroupMemberFilter?: string;
groupExpand?: string;
transformer?: UserTransformer;
logger: Logger;
logger: LoggerService;
},
): Promise<{
users: UserEntity[]; // With all relations empty
@@ -381,7 +381,7 @@ export async function readMicrosoftGraphOrg(
userTransformer?: UserTransformer;
groupTransformer?: GroupTransformer;
organizationTransformer?: OrganizationTransformer;
logger: Logger;
logger: LoggerService;
},
): Promise<{ users: UserEntity[]; groups: GroupEntity[] }> {
const users: UserEntity[] = [];
@@ -435,7 +435,7 @@ export async function readMicrosoftGraphOrg(
async function transformUsers(
client: MicrosoftGraphClient,
users: Iterable<MicrosoftGraph.User> | AsyncIterable<MicrosoftGraph.User>,
logger: Logger,
logger: LoggerService,
loadUserPhotos = true,
transformer?: UserTransformer,
) {
@@ -19,7 +19,6 @@ import {
createBackendModule,
createExtensionPoint,
} from '@backstage/backend-plugin-api';
import { loggerToWinstonLogger } from '@backstage/backend-common';
import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';
import {
GroupTransformer,
@@ -130,7 +129,7 @@ export const catalogModuleMicrosoftGraphOrgEntityProvider = createBackendModule(
async init({ catalog, config, logger, scheduler }) {
catalog.addEntityProvider(
MicrosoftGraphOrgEntityProvider.fromConfig(config, {
logger: loggerToWinstonLogger(logger),
logger,
scheduler,
userTransformer: userTransformer,
groupTransformer: groupTransformer,
@@ -27,20 +27,20 @@ import {
} from '@backstage/plugin-catalog-node';
import { merge } from 'lodash';
import * as uuid from 'uuid';
import { Logger } from 'winston';
import {
GroupTransformer,
MicrosoftGraphClient,
MicrosoftGraphProviderConfig,
MICROSOFT_GRAPH_GROUP_ID_ANNOTATION,
MICROSOFT_GRAPH_TENANT_ID_ANNOTATION,
MICROSOFT_GRAPH_USER_ID_ANNOTATION,
MicrosoftGraphClient,
MicrosoftGraphProviderConfig,
OrganizationTransformer,
readMicrosoftGraphConfig,
readMicrosoftGraphOrg,
UserTransformer,
} from '../microsoftGraph';
import { readProviderConfigs } from '../microsoftGraph/config';
import { LoggerService } from '@backstage/backend-plugin-api';
/**
* Options for {@link MicrosoftGraphOrgEntityProvider}.
@@ -53,7 +53,7 @@ export type MicrosoftGraphOrgEntityProviderOptions =
/**
* The logger to use.
*/
logger: Logger;
logger: LoggerService;
/**
* The refresh schedule to use.
@@ -122,7 +122,7 @@ export interface MicrosoftGraphOrgEntityProviderLegacyOptions {
/**
* The logger to use.
*/
logger: Logger;
logger: LoggerService;
/**
* The refresh schedule to use.
@@ -272,7 +272,7 @@ export class MicrosoftGraphOrgEntityProvider implements EntityProvider {
private options: {
id: string;
provider: MicrosoftGraphProviderConfig;
logger: Logger;
logger: LoggerService;
userTransformer?: UserTransformer;
groupTransformer?: GroupTransformer;
organizationTransformer?: OrganizationTransformer;
@@ -294,7 +294,7 @@ export class MicrosoftGraphOrgEntityProvider implements EntityProvider {
* Runs one complete ingestion loop. Call this method regularly at some
* appropriate cadence.
*/
async read(options?: { logger?: Logger }) {
async read(options?: { logger?: LoggerService }) {
if (!this.connection) {
throw new Error('Not initialized');
}
@@ -364,7 +364,7 @@ export class MicrosoftGraphOrgEntityProvider implements EntityProvider {
}
// Helps wrap the timing and logging behaviors
function trackProgress(logger: Logger) {
function trackProgress(logger: LoggerService) {
let timestamp = Date.now();
let summary: string;
@@ -21,7 +21,6 @@ import {
processingResult,
} from '@backstage/plugin-catalog-node';
import { LocationSpec } from '@backstage/plugin-catalog-common';
import { Logger } from 'winston';
import {
GroupTransformer,
MicrosoftGraphClient,
@@ -31,6 +30,7 @@ import {
readMicrosoftGraphOrg,
UserTransformer,
} from '../microsoftGraph';
import { LoggerService } from '@backstage/backend-plugin-api';
/**
* Extracts teams and users out of the Microsoft Graph API.
@@ -40,7 +40,7 @@ import {
*/
export class MicrosoftGraphOrgReaderProcessor implements CatalogProcessor {
private readonly providers: MicrosoftGraphProviderConfig[];
private readonly logger: Logger;
private readonly logger: LoggerService;
private readonly userTransformer?: UserTransformer;
private readonly groupTransformer?: GroupTransformer;
private readonly organizationTransformer?: OrganizationTransformer;
@@ -48,7 +48,7 @@ export class MicrosoftGraphOrgReaderProcessor implements CatalogProcessor {
static fromConfig(
config: Config,
options: {
logger: Logger;
logger: LoggerService;
userTransformer?: UserTransformer;
groupTransformer?: GroupTransformer;
organizationTransformer?: OrganizationTransformer;
@@ -63,7 +63,7 @@ export class MicrosoftGraphOrgReaderProcessor implements CatalogProcessor {
constructor(options: {
providers: MicrosoftGraphProviderConfig[];
logger: Logger;
logger: LoggerService;
userTransformer?: UserTransformer;
groupTransformer?: GroupTransformer;
organizationTransformer?: OrganizationTransformer;

Some files were not shown because too many files have changed in this diff Show More