Merge pull request #24224 from drodil/logger_service

chore: change most of plugins to use LoggerService
This commit is contained in:
Patrik Oldsberg
2024-04-15 11:28:30 +02:00
committed by GitHub
260 changed files with 861 additions and 896 deletions
+7 -6
View File
@@ -24,6 +24,7 @@ import { KubernetesRequestAuth } from '@backstage/plugin-kubernetes-common';
import type { KubernetesRequestBody } from '@backstage/plugin-kubernetes-common';
import { KubernetesServiceLocator as KubernetesServiceLocator_2 } from '@backstage/plugin-kubernetes-node';
import { Logger } from 'winston';
import { LoggerService } from '@backstage/backend-plugin-api';
import { ObjectToFetch as ObjectToFetch_2 } from '@backstage/plugin-kubernetes-node';
import { PermissionEvaluator } from '@backstage/plugin-permission-common';
import { PermissionsService } from '@backstage/backend-plugin-api';
@@ -75,7 +76,7 @@ export class AwsIamStrategy implements AuthenticationStrategy_2 {
// @public (undocumented)
export class AzureIdentityStrategy implements AuthenticationStrategy_2 {
constructor(logger: Logger, tokenCredential?: TokenCredential);
constructor(logger: LoggerService, tokenCredential?: TokenCredential);
// (undocumented)
getCredential(): Promise<KubernetesCredential_2>;
// (undocumented)
@@ -189,7 +190,7 @@ export class KubernetesBuilder {
): KubernetesObjectsProvider_2;
// (undocumented)
protected buildProxy(
logger: Logger,
logger: LoggerService,
clusterSupplier: KubernetesClustersSupplier_2,
discovery: DiscoveryService,
httpAuth: HttpAuthService,
@@ -240,7 +241,7 @@ export class KubernetesBuilder {
protected getObjectTypesToFetch(): ObjectToFetch_2[] | undefined;
// (undocumented)
protected getProxy(
logger: Logger,
logger: LoggerService,
clusterSupplier: KubernetesClustersSupplier_2,
discovery: DiscoveryService,
httpAuth: HttpAuthService,
@@ -301,7 +302,7 @@ export interface KubernetesEnvironment {
// (undocumented)
httpAuth?: HttpAuthService;
// (undocumented)
logger: Logger;
logger: LoggerService;
// (undocumented)
permissions: PermissionEvaluator;
}
@@ -321,7 +322,7 @@ export interface KubernetesObjectsProviderOptions {
// (undocumented)
fetcher: k8sAuthTypes.KubernetesFetcher;
// (undocumented)
logger: Logger;
logger: LoggerService;
// (undocumented)
objectTypesToFetch?: k8sAuthTypes.ObjectToFetch[];
// (undocumented)
@@ -347,7 +348,7 @@ export type KubernetesProxyCreateRequestHandlerOptions = {
// @public
export type KubernetesProxyOptions = {
logger: Logger;
logger: LoggerService;
clusterSupplier: KubernetesClustersSupplier;
authStrategy: AuthenticationStrategy;
discovery: DiscoveryService;
@@ -14,17 +14,17 @@
* limitations under the License.
*/
import { Logger } from 'winston';
import {
AccessToken,
DefaultAzureCredential,
TokenCredential,
} from '@azure/identity';
import {
AuthMetadata,
AuthenticationStrategy,
AuthMetadata,
KubernetesCredential,
} from '@backstage/plugin-kubernetes-node';
import { LoggerService } from '@backstage/backend-plugin-api';
const aksScope = '6dae42f8-4368-4678-94ff-3960e28e3630/.default'; // This scope is the same for all Azure Managed Kubernetes
@@ -37,7 +37,7 @@ export class AzureIdentityStrategy implements AuthenticationStrategy {
private newTokenPromise: Promise<string> | undefined;
constructor(
private readonly logger: Logger,
private readonly logger: LoggerService,
private readonly tokenCredential: TokenCredential = new DefaultAzureCredential(),
) {}
@@ -17,7 +17,6 @@
import { CatalogApi } from '@backstage/catalog-client';
import { Config } from '@backstage/config';
import { Duration } from 'luxon';
import { Logger } from 'winston';
import { ClusterDetails, KubernetesClustersSupplier } from '../types/types';
import { AuthenticationStrategy } from '../auth/types';
import { ConfigClusterLocator } from './ConfigClusterLocator';
@@ -27,12 +26,13 @@ import { LocalKubectlProxyClusterLocator } from './LocalKubectlProxyLocator';
import {
AuthService,
BackstageCredentials,
LoggerService,
} from '@backstage/backend-plugin-api';
class CombinedClustersSupplier implements KubernetesClustersSupplier {
constructor(
readonly clusterSuppliers: KubernetesClustersSupplier[],
readonly logger: Logger,
readonly logger: LoggerService,
) {}
async getClusters(options: {
@@ -71,7 +71,7 @@ export const getCombinedClusterSupplier = (
rootConfig: Config,
catalogClient: CatalogApi,
authStrategy: AuthenticationStrategy,
logger: Logger,
logger: LoggerService,
refreshInterval: Duration | undefined = undefined,
auth: AuthService,
): KubernetesClustersSupplier => {
+7 -9
View File
@@ -14,7 +14,6 @@
* limitations under the License.
*/
import { loggerToWinstonLogger } from '@backstage/backend-common';
import {
coreServices,
createBackendPlugin,
@@ -24,20 +23,20 @@ import { catalogServiceRef } from '@backstage/plugin-catalog-node/alpha';
import { KubernetesBuilder } from '@backstage/plugin-kubernetes-backend';
import {
kubernetesAuthStrategyExtensionPoint,
kubernetesClusterSupplierExtensionPoint,
kubernetesFetcherExtensionPoint,
kubernetesObjectsProviderExtensionPoint,
kubernetesServiceLocatorExtensionPoint,
type AuthenticationStrategy,
kubernetesAuthStrategyExtensionPoint,
type KubernetesAuthStrategyExtensionPoint,
type KubernetesClusterSupplierExtensionPoint,
type KubernetesClustersSupplier,
kubernetesClusterSupplierExtensionPoint,
type KubernetesClusterSupplierExtensionPoint,
type KubernetesFetcher,
kubernetesFetcherExtensionPoint,
type KubernetesFetcherExtensionPoint,
type KubernetesObjectsProvider,
kubernetesObjectsProviderExtensionPoint,
type KubernetesObjectsProviderExtensionPoint,
type KubernetesServiceLocator,
kubernetesServiceLocatorExtensionPoint,
type KubernetesServiceLocatorExtensionPoint,
} from '@backstage/plugin-kubernetes-node';
@@ -194,10 +193,9 @@ export const kubernetesPlugin = createBackendPlugin({
auth,
httpAuth,
}) {
const winstonLogger = loggerToWinstonLogger(logger);
// TODO: expose all of the customization & extension points of the builder here
const builder: KubernetesBuilder = KubernetesBuilder.createBuilder({
logger: winstonLogger,
logger,
config,
catalogApi,
permissions,
@@ -25,7 +25,6 @@ import { createPermissionIntegrationRouter } from '@backstage/plugin-permission-
import express from 'express';
import Router from 'express-promise-router';
import { Duration } from 'luxon';
import { Logger } from 'winston';
import {
AksStrategy,
@@ -46,15 +45,16 @@ import {
BackstageCredentials,
DiscoveryService,
HttpAuthService,
LoggerService,
} from '@backstage/backend-plugin-api';
import {
AuthMetadata,
AuthenticationStrategy,
AuthMetadata,
CustomResource,
KubernetesClustersSupplier,
KubernetesFetcher,
KubernetesObjectTypes,
KubernetesObjectsProvider,
KubernetesObjectTypes,
KubernetesServiceLocator,
} from '@backstage/plugin-kubernetes-node';
import { addResourceRoutesToRouter } from '../routes/resourcesRoutes';
@@ -78,7 +78,7 @@ import { KubernetesProxy } from './KubernetesProxy';
* @public
*/
export interface KubernetesEnvironment {
logger: Logger;
logger: LoggerService;
config: Config;
catalogApi: CatalogApi;
discovery: DiscoveryService;
@@ -353,7 +353,7 @@ export class KubernetesBuilder {
}
protected buildProxy(
logger: Logger,
logger: LoggerService,
clusterSupplier: KubernetesClustersSupplier,
discovery: DiscoveryService,
httpAuth: HttpAuthService,
@@ -540,7 +540,7 @@ export class KubernetesBuilder {
}
protected getProxy(
logger: Logger,
logger: LoggerService,
clusterSupplier: KubernetesClustersSupplier,
discovery: DiscoveryService,
httpAuth: HttpAuthService,
@@ -15,26 +15,25 @@
*/
import { Entity } from '@backstage/catalog-model';
import { Logger } from 'winston';
import {
CustomResource,
FetchResponseWrapper,
KubernetesFetcher,
KubernetesObjectsProviderOptions,
KubernetesServiceLocator,
ObjectsByEntityRequest,
FetchResponseWrapper,
ObjectToFetch,
CustomResource,
} from '../types/types';
import {
ClientContainerStatus,
ClientCurrentResourceUsage,
ClientPodStatus,
ClusterObjects,
CustomResourceMatcher,
FetchResponse,
KubernetesRequestAuth,
ObjectsByEntityResponse,
PodFetchResponse,
KubernetesRequestAuth,
CustomResourceMatcher,
PodStatusFetchResponse,
} from '@backstage/plugin-kubernetes-common';
import {
@@ -50,7 +49,10 @@ import {
KubernetesObjectsByEntity,
KubernetesObjectsProvider,
} from '@backstage/plugin-kubernetes-node';
import { BackstageCredentials } from '@backstage/backend-plugin-api';
import {
BackstageCredentials,
LoggerService,
} from '@backstage/backend-plugin-api';
/**
*
@@ -193,7 +195,7 @@ const toClientSafePodMetrics = (
type responseWithMetrics = [FetchResponseWrapper, PodStatusFetchResponse[]];
export class KubernetesFanOutHandler implements KubernetesObjectsProvider {
private readonly logger: Logger;
private readonly logger: LoggerService;
private readonly fetcher: KubernetesFetcher;
private readonly serviceLocator: KubernetesServiceLocator;
private readonly customResources: CustomResource[];
@@ -15,16 +15,15 @@
*/
import {
Config,
bufferFromFileOrString,
Cluster,
Config,
CoreV1Api,
KubeConfig,
Metrics,
bufferFromFileOrString,
topPods,
} from '@kubernetes/client-node';
import lodash, { Dictionary } from 'lodash';
import { Logger } from 'winston';
import {
FetchResponseWrapper,
KubernetesFetcher,
@@ -33,8 +32,8 @@ import {
import {
ANNOTATION_KUBERNETES_AUTH_PROVIDER,
FetchResponse,
KubernetesFetchError,
KubernetesErrorTypes,
KubernetesFetchError,
PodStatusFetchResponse,
} from '@backstage/plugin-kubernetes-common';
import fetch, { RequestInit, Response } from 'node-fetch';
@@ -45,9 +44,10 @@ import {
ClusterDetails,
KubernetesCredential,
} from '@backstage/plugin-kubernetes-node';
import { LoggerService } from '@backstage/backend-plugin-api';
export interface KubernetesClientBasedFetcherOptions {
logger: Logger;
logger: LoggerService;
}
type FetchResult = FetchResponse | KubernetesFetchError;
@@ -84,7 +84,7 @@ const statusCodeToErrorType = (statusCode: number): KubernetesErrorTypes => {
};
export class KubernetesClientBasedFetcher implements KubernetesFetcher {
private readonly logger: Logger;
private readonly logger: LoggerService;
constructor({ logger }: KubernetesClientBasedFetcherOptions) {
this.logger = logger;
@@ -22,19 +22,18 @@ import {
} from '@backstage/errors';
import {
ANNOTATION_KUBERNETES_AUTH_PROVIDER,
KubernetesRequestAuth,
kubernetesProxyPermission,
KubernetesRequestAuth,
} from '@backstage/plugin-kubernetes-common';
import { AuthorizeResult } from '@backstage/plugin-permission-common';
import {
Cluster,
KubeConfig,
bufferFromFileOrString,
Cluster,
Config,
KubeConfig,
} from '@kubernetes/client-node';
import { createProxyMiddleware, RequestHandler } from 'http-proxy-middleware';
import { Logger } from 'winston';
import fs from 'fs-extra';
import { Config } from '@kubernetes/client-node';
import { AuthenticationStrategy } from '../auth';
import { ClusterDetails, KubernetesClustersSupplier } from '../types/types';
@@ -44,9 +43,13 @@ import { IncomingHttpHeaders } from 'http';
import {
DiscoveryService,
HttpAuthService,
LoggerService,
PermissionsService,
} from '@backstage/backend-plugin-api';
import { createLegacyAuthAdapters } from '@backstage/backend-common';
import {
createLegacyAuthAdapters,
loggerToWinstonLogger,
} from '@backstage/backend-common';
export const APPLICATION_JSON: string = 'application/json';
@@ -80,7 +83,7 @@ export type KubernetesProxyCreateRequestHandlerOptions = {
* @public
*/
export type KubernetesProxyOptions = {
logger: Logger;
logger: LoggerService;
clusterSupplier: KubernetesClustersSupplier;
authStrategy: AuthenticationStrategy;
discovery: DiscoveryService;
@@ -94,7 +97,7 @@ export type KubernetesProxyOptions = {
*/
export class KubernetesProxy {
private readonly middlewareForClusterName = new Map<string, RequestHandler>();
private readonly logger: Logger;
private readonly logger: LoggerService;
private readonly clusterSupplier: KubernetesClustersSupplier;
private readonly authStrategy: AuthenticationStrategy;
private readonly httpAuth: HttpAuthService;
@@ -154,7 +157,8 @@ export class KubernetesProxy {
if (!middleware) {
const logger = this.logger.child({ cluster: originalCluster.name });
middleware = createProxyMiddleware({
logProvider: () => logger,
// TODO: Add 'log' to LoggerService
logProvider: () => loggerToWinstonLogger(logger),
ws: true,
secure: !originalCluster.skipTLSVerify,
changeOrigin: true,
@@ -212,7 +216,7 @@ export class KubernetesProxy {
error,
);
logger.error(wrappedError);
logger.error('Kubernetes proxy error', wrappedError);
const body: ErrorResponseBody = {
error: serializeError(wrappedError, {
@@ -17,7 +17,7 @@
import { Config } from '@backstage/config';
import type { KubernetesRequestBody } from '@backstage/plugin-kubernetes-common';
import * as k8sTypes from '@backstage/plugin-kubernetes-node';
import { Logger } from 'winston';
import { LoggerService } from '@backstage/backend-plugin-api';
/**
*
@@ -34,7 +34,7 @@ export type ServiceLocatorMethod =
* @public
*/
export interface KubernetesObjectsProviderOptions {
logger: Logger;
logger: LoggerService;
config: Config;
fetcher: k8sTypes.KubernetesFetcher;
serviceLocator: k8sTypes.KubernetesServiceLocator;