From 3ca229276dcd69134d204b8eee5d04d59b302cdf Mon Sep 17 00:00:00 2001 From: Oleg S <97077423+RobotSail@users.noreply.github.com> Date: Wed, 8 Mar 2023 14:10:36 -0500 Subject: [PATCH] allow a list of AppConfigs to be supplied at runtime Signed-off-by: Oleg S <97077423+RobotSail@users.noreply.github.com> --- .changeset/spotty-cougars-wink.md | 6 ------ packages/backend-app-api/api-report.md | 2 +- .../backend-app-api/src/config/ObservableConfigProxy.ts | 2 +- packages/backend-app-api/src/config/config.ts | 8 +++----- packages/backend-common/api-report.md | 3 +-- packages/backend-common/src/config.ts | 2 +- packages/config-loader/src/loader.ts | 9 +++------ 7 files changed, 10 insertions(+), 22 deletions(-) delete mode 100644 .changeset/spotty-cougars-wink.md diff --git a/.changeset/spotty-cougars-wink.md b/.changeset/spotty-cougars-wink.md deleted file mode 100644 index ca3effe724..0000000000 --- a/.changeset/spotty-cougars-wink.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/backend-app-api': minor -'@backstage/config-loader': minor ---- - -Introduces the ability to merge configs and JsonObjects diff --git a/packages/backend-app-api/api-report.md b/packages/backend-app-api/api-report.md index 6ef023333b..90b76ffb64 100644 --- a/packages/backend-app-api/api-report.md +++ b/packages/backend-app-api/api-report.md @@ -179,7 +179,7 @@ export const lifecycleServiceFactory: () => ServiceFactory< export function loadBackendConfig(options: { remote?: LoadConfigOptionsRemote; argv: string[]; - additionalConfig?: AppConfig; + additionalConfigs?: AppConfig[]; }): Promise<{ config: Config; }>; diff --git a/packages/backend-app-api/src/config/ObservableConfigProxy.ts b/packages/backend-app-api/src/config/ObservableConfigProxy.ts index 8e0ad218e9..dd3334c9a5 100644 --- a/packages/backend-app-api/src/config/ObservableConfigProxy.ts +++ b/packages/backend-app-api/src/config/ObservableConfigProxy.ts @@ -16,7 +16,7 @@ import { ConfigService } from '@backstage/backend-plugin-api'; import { ConfigReader } from '@backstage/config'; -import type { JsonValue } from '@backstage/types'; +import { JsonValue } from '@backstage/types'; export class ObservableConfigProxy implements ConfigService { private config: ConfigService = new ConfigReader({}); diff --git a/packages/backend-app-api/src/config/config.ts b/packages/backend-app-api/src/config/config.ts index 668226e8b2..a2a6f8de9e 100644 --- a/packages/backend-app-api/src/config/config.ts +++ b/packages/backend-app-api/src/config/config.ts @@ -71,7 +71,7 @@ export async function createConfigSecretEnumerator(options: { export async function loadBackendConfig(options: { remote?: LoadConfigOptionsRemote; argv: string[]; - additionalConfig?: AppConfig; + additionalConfigs?: AppConfig[]; }): Promise<{ config: Config }> { const args = parseArgs(options.argv); @@ -115,11 +115,9 @@ export async function loadBackendConfig(options: { `Loaded config from ${appConfigs.map(c => c.context).join(', ')}`, ); - // add the additional config if provided - if (options.additionalConfig) { - appConfigs.push(options.additionalConfig); + if (options.additionalConfigs) { + appConfigs.push(...options.additionalConfigs); } - config.setConfig(ConfigReader.fromConfigs(appConfigs)); return { config }; diff --git a/packages/backend-common/api-report.md b/packages/backend-common/api-report.md index a37b5874a3..b1dad254f9 100644 --- a/packages/backend-common/api-report.md +++ b/packages/backend-common/api-report.md @@ -6,9 +6,8 @@ /// /// +import { AppConfig } from '@backstage/config'; import { AwsCredentialsManager } from '@backstage/integration-aws-node'; -import type { AppConfig } from '@backstage/config'; -import aws from 'aws-sdk'; import { AwsS3Integration } from '@backstage/integration'; import { AzureIntegration } from '@backstage/integration'; import { BackendFeature } from '@backstage/backend-plugin-api'; diff --git a/packages/backend-common/src/config.ts b/packages/backend-common/src/config.ts index 47316cfd6e..cc824c47fd 100644 --- a/packages/backend-common/src/config.ts +++ b/packages/backend-common/src/config.ts @@ -19,7 +19,7 @@ import { loadBackendConfig as newLoadBackendConfig, } from '@backstage/backend-app-api'; import { LoggerService } from '@backstage/backend-plugin-api'; -import type { AppConfig, Config } from '@backstage/config'; +import { AppConfig, Config } from '@backstage/config'; import { LoadConfigOptionsRemote } from '@backstage/config-loader'; import { setRootLoggerRedactionList } from './logging/createRootLogger'; diff --git a/packages/config-loader/src/loader.ts b/packages/config-loader/src/loader.ts index 69b0e04b86..f5ce0eb80c 100644 --- a/packages/config-loader/src/loader.ts +++ b/packages/config-loader/src/loader.ts @@ -139,11 +139,8 @@ export async function loadConfig( const env = envFunc ?? (async (name: string) => process.env[name]); - const loadConfigFiles = async (): Promise<{ - fileConfigs: AppConfig[]; - loadedPaths: Set; - }> => { - const fileConfigs: AppConfig[] = []; + const loadConfigFiles = async () => { + const fileConfigs = []; const loadedPaths = new Set(); for (const configPath of configPaths) { @@ -179,7 +176,7 @@ export async function loadConfig( return { fileConfigs, loadedPaths }; }; - const loadRemoteConfigFiles = async (): Promise => { + const loadRemoteConfigFiles = async () => { const configs: AppConfig[] = []; const readConfigFromUrl = async (url: string) => {