diff --git a/src/config/dynamic/dynamic.config.ts b/src/config/dynamic/dynamic.config.ts index 978e19fd8..843939728 100644 --- a/src/config/dynamic/dynamic.config.ts +++ b/src/config/dynamic/dynamic.config.ts @@ -14,6 +14,7 @@ import { type ClustersConfigs } from './resolvers/clusters.types'; import cronListEnabled from './resolvers/cron-list-enabled'; import extendedDomainInfoEnabled from './resolvers/extended-domain-info-enabled'; import { type ExtendedDomainInfoEnabledConfig } from './resolvers/extended-domain-info-enabled.types'; +import failoverHistoryEnabled from './resolvers/failover-history-enabled'; import workflowActionsEnabled from './resolvers/workflow-actions-enabled'; import { type WorkflowActionsEnabledResolverParams, @@ -65,6 +66,12 @@ const dynamicConfigs: { 'request', true >; + FAILOVER_HISTORY_ENABLED: ConfigAsyncResolverDefinition< + undefined, + boolean, + 'request', + true + >; } = { CADENCE_WEB_PORT: { env: 'CADENCE_WEB_PORT', @@ -109,6 +116,11 @@ const dynamicConfigs: { evaluateOn: 'request', isPublic: true, }, + FAILOVER_HISTORY_ENABLED: { + resolver: failoverHistoryEnabled, + evaluateOn: 'request', + isPublic: true, + }, } as const; export default dynamicConfigs; diff --git a/src/config/dynamic/resolvers/failover-history-enabled.ts b/src/config/dynamic/resolvers/failover-history-enabled.ts new file mode 100644 index 000000000..95deb51e9 --- /dev/null +++ b/src/config/dynamic/resolvers/failover-history-enabled.ts @@ -0,0 +1,15 @@ +/** + * WIP: Returns whether failover history APIs and UI are enabled. + * + * To enable the failover history tab, set the CADENCE_FAILOVER_HISTORY_ENABLED env variable to true. + * For further customization, override the implementation of this resolver. + * + * Server version behaviour: + * - > 1.3.6 (still hasn't been released yet): The Failover History API will work as expected. + * - <= 1.3.6: The Failover History API will return a GRPC unimplemented error (maps to HTTP 404 in the client). + * + * @returns {Promise} Whether failover history UI is enabled. + */ +export default async function failoverHistoryEnabled(): Promise { + return process.env.CADENCE_FAILOVER_HISTORY_ENABLED === 'true'; +} diff --git a/src/config/dynamic/resolvers/schemas/resolver-schemas.ts b/src/config/dynamic/resolvers/schemas/resolver-schemas.ts index 41c31d7d6..7f36b9b98 100644 --- a/src/config/dynamic/resolvers/schemas/resolver-schemas.ts +++ b/src/config/dynamic/resolvers/schemas/resolver-schemas.ts @@ -63,6 +63,10 @@ const resolverSchemas: ResolverSchemas = { args: z.undefined(), returnType: z.boolean(), }, + FAILOVER_HISTORY_ENABLED: { + args: z.undefined(), + returnType: z.boolean(), + }, }; export default resolverSchemas; diff --git a/src/utils/config/__fixtures__/resolved-config-values.ts b/src/utils/config/__fixtures__/resolved-config-values.ts index 529754233..6fd54f813 100644 --- a/src/utils/config/__fixtures__/resolved-config-values.ts +++ b/src/utils/config/__fixtures__/resolved-config-values.ts @@ -42,5 +42,6 @@ const mockResolvedConfigValues: LoadedConfigResolvedValues = { }, WORKFLOW_DIAGNOSTICS_ENABLED: false, ARCHIVAL_DEFAULT_SEARCH_ENABLED: false, + FAILOVER_HISTORY_ENABLED: false, }; export default mockResolvedConfigValues;