Merge pull request #9525 from devth/make-k8s-config-optional-in-dev

fix: allow missing k8s config in dev
This commit is contained in:
Ben Lambert
2022-02-18 14:52:46 +01:00
committed by GitHub
3 changed files with 45 additions and 10 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-kubernetes-backend': patch
---
Allow missing kubernetes config in development env
+12 -9
View File
@@ -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)
@@ -43,6 +43,21 @@ export interface KubernetesEnvironment {
config: Config;
}
/**
* The return type of the `KubernetesBuilder.build` method
*
* @public
*/
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,11 +70,23 @@ 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;
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(),
} as unknown as KubernetesBuilderReturn;
}
const customResources = this.buildCustomResources();
const fetcher = this.fetcher ?? this.buildFetcher();