diff --git a/plugins/catalog-backend/src/database/metrics.ts b/plugins/catalog-backend/src/database/metrics.ts index 0f1ad54820..b6c4e248dc 100644 --- a/plugins/catalog-backend/src/database/metrics.ts +++ b/plugins/catalog-backend/src/database/metrics.ts @@ -15,7 +15,7 @@ */ import { Knex } from 'knex'; -import { createGaugeMetric } from '../next/metrics'; +import { createGaugeMetric } from '../util/metrics'; import { DbRefreshStateRow, DbRelationsRow, DbLocationsRow } from './tables'; export function initDatabaseMetrics(knex: Knex) { diff --git a/plugins/catalog-backend/src/index.ts b/plugins/catalog-backend/src/index.ts index 4d84330f27..0c72926210 100644 --- a/plugins/catalog-backend/src/index.ts +++ b/plugins/catalog-backend/src/index.ts @@ -26,3 +26,5 @@ export * from './legacy'; export * from './search'; export * from './util'; export * from './next'; +export * from './processing'; +export * from './providers'; diff --git a/plugins/catalog-backend/src/next/DefaultRefreshService.test.ts b/plugins/catalog-backend/src/next/DefaultRefreshService.test.ts index 42838f39da..0ea475a528 100644 --- a/plugins/catalog-backend/src/next/DefaultRefreshService.test.ts +++ b/plugins/catalog-backend/src/next/DefaultRefreshService.test.ts @@ -26,7 +26,7 @@ import { DbRefreshStateRow, } from '../database/tables'; import { ProcessingDatabase } from '../database/types'; -import { DefaultCatalogProcessingEngine } from './DefaultCatalogProcessingEngine'; +import { DefaultCatalogProcessingEngine } from '../processing/DefaultCatalogProcessingEngine'; import { EntityProcessingRequest } from '../processing/types'; import { Stitcher } from '../stitching/Stitcher'; import { Entity, stringifyEntityRef } from '@backstage/catalog-model'; diff --git a/plugins/catalog-backend/src/next/NextCatalogBuilder.ts b/plugins/catalog-backend/src/next/NextCatalogBuilder.ts index 964cf4538a..869af1581f 100644 --- a/plugins/catalog-backend/src/next/NextCatalogBuilder.ts +++ b/plugins/catalog-backend/src/next/NextCatalogBuilder.ts @@ -59,15 +59,12 @@ import { } from '../ingestion/processors/PlaceholderProcessor'; import { defaultEntityDataParser } from '../ingestion/processors/util/parse'; import { LocationAnalyzer } from '../ingestion/types'; -import { - CatalogProcessingEngine, - EntityProvider, - LocationService, -} from '../next/types'; +import { EntityProvider } from '../providers/types'; +import { CatalogProcessingEngine } from '../processing/types'; import { ConfigLocationEntityProvider } from '../providers/ConfigLocationEntityProvider'; import { DefaultProcessingDatabase } from '../database/DefaultProcessingDatabase'; import { applyDatabaseMigrations } from '../database/migrations'; -import { DefaultCatalogProcessingEngine } from './DefaultCatalogProcessingEngine'; +import { DefaultCatalogProcessingEngine } from '../processing/DefaultCatalogProcessingEngine'; import { DefaultLocationService } from './DefaultLocationService'; import { DefaultLocationStore } from '../providers/DefaultLocationStore'; import { NextEntitiesCatalog } from './NextEntitiesCatalog'; @@ -82,6 +79,7 @@ import { DefaultRefreshService } from './DefaultRefreshService'; import { DefaultCatalogRulesEnforcer } from '../ingestion/CatalogRules'; import { Config } from '@backstage/config'; import { Logger } from 'winston'; +import { LocationService } from './types'; export type CatalogEnvironment = { logger: Logger; diff --git a/plugins/catalog-backend/src/next/index.ts b/plugins/catalog-backend/src/next/index.ts index 055478e6f3..cc3ad0b979 100644 --- a/plugins/catalog-backend/src/next/index.ts +++ b/plugins/catalog-backend/src/next/index.ts @@ -23,10 +23,6 @@ export { createRandomRefreshInterval } from './refresh'; export type { RefreshIntervalFunction } from './refresh'; export * from '../stitching'; export type { - EntityProvider, - EntityProviderConnection, - EntityProviderMutation, - CatalogProcessingEngine, LocationService, LocationStore, RefreshOptions, diff --git a/plugins/catalog-backend/src/next/types.ts b/plugins/catalog-backend/src/next/types.ts index 18deca42df..4e3d52e205 100644 --- a/plugins/catalog-backend/src/next/types.ts +++ b/plugins/catalog-backend/src/next/types.ts @@ -15,7 +15,6 @@ */ import { Entity, Location, LocationSpec } from '@backstage/catalog-model'; -import { DeferredEntity } from '../processing/types'; export interface LocationService { createLocation( @@ -34,11 +33,6 @@ export interface LocationStore { deleteLocation(id: string): Promise; } -export interface CatalogProcessingEngine { - start(): Promise; - stop(): Promise; -} - /** * Options for requesting a refresh of entities in the catalog. * @@ -60,16 +54,3 @@ export interface RefreshService { */ refresh(options: RefreshOptions): Promise; } - -export type EntityProviderMutation = - | { type: 'full'; entities: DeferredEntity[] } - | { type: 'delta'; added: DeferredEntity[]; removed: DeferredEntity[] }; - -export interface EntityProviderConnection { - applyMutation(mutation: EntityProviderMutation): Promise; -} - -export interface EntityProvider { - getProviderName(): string; - connect(connection: EntityProviderConnection): Promise; -} diff --git a/plugins/catalog-backend/src/next/DefaultCatalogProcessingEngine.test.ts b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.test.ts similarity index 99% rename from plugins/catalog-backend/src/next/DefaultCatalogProcessingEngine.test.ts rename to plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.test.ts index 2bae899514..044c3e7c4b 100644 --- a/plugins/catalog-backend/src/next/DefaultCatalogProcessingEngine.test.ts +++ b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.test.ts @@ -20,7 +20,7 @@ import { DateTime } from 'luxon'; import waitForExpect from 'wait-for-expect'; import { DefaultProcessingDatabase } from '../database/DefaultProcessingDatabase'; import { DefaultCatalogProcessingEngine } from './DefaultCatalogProcessingEngine'; -import { CatalogProcessingOrchestrator } from '../processing/types'; +import { CatalogProcessingOrchestrator } from './types'; import { Stitcher } from '../stitching/Stitcher'; describe('DefaultCatalogProcessingEngine', () => { diff --git a/plugins/catalog-backend/src/next/DefaultCatalogProcessingEngine.ts b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.ts similarity index 99% rename from plugins/catalog-backend/src/next/DefaultCatalogProcessingEngine.ts rename to plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.ts index 3fb870230b..d0faff25d5 100644 --- a/plugins/catalog-backend/src/next/DefaultCatalogProcessingEngine.ts +++ b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.ts @@ -24,19 +24,19 @@ import { Hash } from 'crypto'; import stableStringify from 'fast-json-stable-stringify'; import { Logger } from 'winston'; import { ProcessingDatabase, RefreshStateItem } from '../database/types'; -import { createCounterMetric, createSummaryMetric } from './metrics'; +import { createCounterMetric, createSummaryMetric } from '../util/metrics'; import { + CatalogProcessingEngine, CatalogProcessingOrchestrator, EntityProcessingResult, } from '../processing/types'; import { Stitcher } from '../stitching/Stitcher'; import { startTaskPipeline } from './TaskPipeline'; import { - CatalogProcessingEngine, EntityProvider, EntityProviderConnection, EntityProviderMutation, -} from './types'; +} from '../providers/types'; const CACHE_TTL = 5; diff --git a/plugins/catalog-backend/src/next/TaskPipeline.test.ts b/plugins/catalog-backend/src/processing/TaskPipeline.test.ts similarity index 100% rename from plugins/catalog-backend/src/next/TaskPipeline.test.ts rename to plugins/catalog-backend/src/processing/TaskPipeline.test.ts diff --git a/plugins/catalog-backend/src/next/TaskPipeline.ts b/plugins/catalog-backend/src/processing/TaskPipeline.ts similarity index 100% rename from plugins/catalog-backend/src/next/TaskPipeline.ts rename to plugins/catalog-backend/src/processing/TaskPipeline.ts diff --git a/plugins/catalog-backend/src/processing/index.ts b/plugins/catalog-backend/src/processing/index.ts index 9e03f18f28..7b60a1670b 100644 --- a/plugins/catalog-backend/src/processing/index.ts +++ b/plugins/catalog-backend/src/processing/index.ts @@ -16,6 +16,7 @@ export type { CatalogProcessingOrchestrator, + CatalogProcessingEngine, EntityProcessingRequest, EntityProcessingResult, DeferredEntity, diff --git a/plugins/catalog-backend/src/processing/types.ts b/plugins/catalog-backend/src/processing/types.ts index 8b533714ce..4b16ccef32 100644 --- a/plugins/catalog-backend/src/processing/types.ts +++ b/plugins/catalog-backend/src/processing/types.ts @@ -44,3 +44,8 @@ export type DeferredEntity = { entity: Entity; locationKey?: string; }; + +export interface CatalogProcessingEngine { + start(): Promise; + stop(): Promise; +} diff --git a/plugins/catalog-backend/src/providers/ConfigLocationEntityProvider.test.ts b/plugins/catalog-backend/src/providers/ConfigLocationEntityProvider.test.ts index a44c803c5f..0663ad8d04 100644 --- a/plugins/catalog-backend/src/providers/ConfigLocationEntityProvider.test.ts +++ b/plugins/catalog-backend/src/providers/ConfigLocationEntityProvider.test.ts @@ -17,7 +17,7 @@ import { ConfigReader } from '@backstage/config'; import path from 'path'; import { ConfigLocationEntityProvider } from './ConfigLocationEntityProvider'; -import { EntityProviderConnection } from '../next/types'; +import { EntityProviderConnection } from './types'; describe('ConfigLocationEntityProvider', () => { it('should apply mutation with the correct paths in the config', async () => { diff --git a/plugins/catalog-backend/src/providers/ConfigLocationEntityProvider.ts b/plugins/catalog-backend/src/providers/ConfigLocationEntityProvider.ts index ce88488d8f..e497515035 100644 --- a/plugins/catalog-backend/src/providers/ConfigLocationEntityProvider.ts +++ b/plugins/catalog-backend/src/providers/ConfigLocationEntityProvider.ts @@ -17,7 +17,7 @@ import { Config } from '@backstage/config'; import path from 'path'; import { getEntityLocationRef } from '../processing/util'; -import { EntityProvider, EntityProviderConnection } from '../next/types'; +import { EntityProvider, EntityProviderConnection } from './types'; import { locationSpecToLocationEntity } from '../next/util'; export class ConfigLocationEntityProvider implements EntityProvider { diff --git a/plugins/catalog-backend/src/providers/DefaultLocationStore.ts b/plugins/catalog-backend/src/providers/DefaultLocationStore.ts index 5498b7105e..fdd33a422d 100644 --- a/plugins/catalog-backend/src/providers/DefaultLocationStore.ts +++ b/plugins/catalog-backend/src/providers/DefaultLocationStore.ts @@ -20,12 +20,10 @@ import { Knex } from 'knex'; import { v4 as uuid } from 'uuid'; import { DbLocationsRow } from '../database/tables'; import { getEntityLocationRef } from '../processing/util'; -import { - EntityProvider, - EntityProviderConnection, - LocationStore, -} from '../next/types'; +import { EntityProvider, EntityProviderConnection } from './types'; + import { locationSpecToLocationEntity } from '../next/util'; +import { LocationStore } from '../next'; export class DefaultLocationStore implements LocationStore, EntityProvider { private _connection: EntityProviderConnection | undefined; diff --git a/plugins/catalog-backend/src/providers/index.ts b/plugins/catalog-backend/src/providers/index.ts new file mode 100644 index 0000000000..3b4a1c4b7e --- /dev/null +++ b/plugins/catalog-backend/src/providers/index.ts @@ -0,0 +1,21 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export type { + EntityProvider, + EntityProviderConnection, + EntityProviderMutation, +} from './types'; diff --git a/plugins/catalog-backend/src/providers/types.ts b/plugins/catalog-backend/src/providers/types.ts new file mode 100644 index 0000000000..90c5f13215 --- /dev/null +++ b/plugins/catalog-backend/src/providers/types.ts @@ -0,0 +1,30 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { DeferredEntity } from '../processing'; + +export type EntityProviderMutation = + | { type: 'full'; entities: DeferredEntity[] } + | { type: 'delta'; added: DeferredEntity[]; removed: DeferredEntity[] }; + +export interface EntityProviderConnection { + applyMutation(mutation: EntityProviderMutation): Promise; +} + +export interface EntityProvider { + getProviderName(): string; + connect(connection: EntityProviderConnection): Promise; +} diff --git a/plugins/catalog-backend/src/next/metrics.ts b/plugins/catalog-backend/src/util/metrics.ts similarity index 100% rename from plugins/catalog-backend/src/next/metrics.ts rename to plugins/catalog-backend/src/util/metrics.ts