From 64acf65c03c0f108450e6e294c7769a431f67e97 Mon Sep 17 00:00:00 2001 From: Trevor Hartman Date: Mon, 14 Feb 2022 15:11:15 -0700 Subject: [PATCH 1/4] fix: allow missing k8s config in dev Signed-off-by: Trevor Hartman --- .changeset/grumpy-eels-swim.md | 5 +++++ .../src/service/KubernetesBuilder.ts | 12 ++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 .changeset/grumpy-eels-swim.md diff --git a/.changeset/grumpy-eels-swim.md b/.changeset/grumpy-eels-swim.md new file mode 100644 index 0000000000..bbf5b1ca79 --- /dev/null +++ b/.changeset/grumpy-eels-swim.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +Allow missing kubernetes config in development env diff --git a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts index 3333f7a0fc..da6c6c37c8 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts @@ -57,9 +57,21 @@ export class KubernetesBuilder { public async build() { const logger = this.env.logger; + const config = this.env.config; logger.info('Initializing Kubernetes backend'); + if (!config.has('kubernetes')) { + if (process.env.NODE_ENV !== 'development') { + throw new Error('Kubernetes configuration is missing'); + } + logger.warn( + 'Failed to initialize kubernetes backend: kubernetes config is missing', + ); + return { + router: Router(), + }; + } const customResources = this.buildCustomResources(); const fetcher = this.fetcher ?? this.buildFetcher(); From 3a4fc2b70b12e433793bf0715c3d968684790c97 Mon Sep 17 00:00:00 2001 From: Trevor Hartman Date: Wed, 16 Feb 2022 18:29:33 -0700 Subject: [PATCH 2/4] Add explicit return Signed-off-by: Trevor Hartman --- .../src/service/KubernetesBuilder.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts index da6c6c37c8..5c439896d7 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts @@ -43,6 +43,16 @@ export interface KubernetesEnvironment { config: Config; } +export type KubernetesBuilderReturn = Promise<{ + router: express.Router; + clusterDetails?: ClusterDetails[]; + clusterSupplier?: KubernetesClustersSupplier; + customResources?: CustomResource[]; + fetcher?: KubernetesFetcher; + objectsProvider?: KubernetesObjectsProvider; + serviceLocator?: KubernetesServiceLocator; +}>; + export class KubernetesBuilder { private clusterSupplier?: KubernetesClustersSupplier; private objectsProvider?: KubernetesObjectsProvider; @@ -55,7 +65,7 @@ export class KubernetesBuilder { constructor(protected readonly env: KubernetesEnvironment) {} - public async build() { + public async build(): KubernetesBuilderReturn { const logger = this.env.logger; const config = this.env.config; From 81248c2d1fb6fd6cb5ee8fbe901b3312b00730e6 Mon Sep 17 00:00:00 2001 From: Trevor Hartman Date: Thu, 17 Feb 2022 07:26:39 -0700 Subject: [PATCH 3/4] Make all properties of KubernetesBuilderReturn required Signed-off-by: Trevor Hartman --- .../src/service/KubernetesBuilder.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts index 5c439896d7..d8c93cccdf 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts @@ -45,12 +45,12 @@ export interface KubernetesEnvironment { export type KubernetesBuilderReturn = Promise<{ router: express.Router; - clusterDetails?: ClusterDetails[]; - clusterSupplier?: KubernetesClustersSupplier; - customResources?: CustomResource[]; - fetcher?: KubernetesFetcher; - objectsProvider?: KubernetesObjectsProvider; - serviceLocator?: KubernetesServiceLocator; + clusterDetails: ClusterDetails[]; + clusterSupplier: KubernetesClustersSupplier; + customResources: CustomResource[]; + fetcher: KubernetesFetcher; + objectsProvider: KubernetesObjectsProvider; + serviceLocator: KubernetesServiceLocator; }>; export class KubernetesBuilder { @@ -80,7 +80,7 @@ export class KubernetesBuilder { ); return { router: Router(), - }; + } as unknown as KubernetesBuilderReturn; } const customResources = this.buildCustomResources(); From 7d2146c93ba86ea9f24c2f1ef6416c09ba46858e Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 18 Feb 2022 14:26:33 +0100 Subject: [PATCH 4/4] chore: fix warnings in api-report and rebuild it Signed-off-by: blam --- plugins/kubernetes-backend/api-report.md | 21 +++++++++++-------- .../src/service/KubernetesBuilder.ts | 5 +++++ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/plugins/kubernetes-backend/api-report.md b/plugins/kubernetes-backend/api-report.md index 9b181c8514..ea273d7632 100644 --- a/plugins/kubernetes-backend/api-report.md +++ b/plugins/kubernetes-backend/api-report.md @@ -83,15 +83,7 @@ export interface GKEClusterDetails extends ClusterDetails {} export class KubernetesBuilder { constructor(env: KubernetesEnvironment); // (undocumented) - build(): Promise<{ - clusterDetails: ClusterDetails[]; - clusterSupplier: KubernetesClustersSupplier; - customResources: CustomResource[]; - fetcher: KubernetesFetcher; - objectsProvider: KubernetesObjectsProvider; - router: express.Router; - serviceLocator: KubernetesServiceLocator; - }>; + build(): KubernetesBuilderReturn; // (undocumented) protected buildClusterSupplier(): KubernetesClustersSupplier; // (undocumented) @@ -142,6 +134,17 @@ export class KubernetesBuilder { setServiceLocator(serviceLocator?: KubernetesServiceLocator): this; } +// @public +export type KubernetesBuilderReturn = Promise<{ + router: express.Router; + clusterDetails: ClusterDetails[]; + clusterSupplier: KubernetesClustersSupplier; + customResources: CustomResource[]; + fetcher: KubernetesFetcher; + objectsProvider: KubernetesObjectsProvider; + serviceLocator: KubernetesServiceLocator; +}>; + // Warning: (ae-missing-release-tag) "KubernetesClustersSupplier" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) diff --git a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts index d8c93cccdf..a1eb60a239 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts @@ -43,6 +43,11 @@ export interface KubernetesEnvironment { config: Config; } +/** + * The return type of the `KubernetesBuilder.build` method + * + * @public + */ export type KubernetesBuilderReturn = Promise<{ router: express.Router; clusterDetails: ClusterDetails[];