Merge pull request #28198 from backstage/renovate/kubernetes-client-node-1.x

Update dependency @kubernetes/client-node to v1.1.2
This commit is contained in:
Fredrik Adelöw
2025-04-23 15:01:33 +02:00
committed by GitHub
44 changed files with 152 additions and 101 deletions
+9
View File
@@ -0,0 +1,9 @@
---
'@backstage/plugin-kubernetes-backend': patch
'@backstage/plugin-kubernetes-common': patch
'@backstage/plugin-kubernetes-node': patch
'@backstage/plugin-kubernetes-react': patch
'@backstage/plugin-kubernetes': patch
---
Updated dependency `@kubernetes/client-node` to `1.1.2`.
+1 -1
View File
@@ -78,7 +78,7 @@
"@backstage/types": "workspace:^",
"@google-cloud/container": "^5.0.0",
"@jest-mock/express": "^2.0.1",
"@kubernetes/client-node": "1.0.0-rc7",
"@kubernetes/client-node": "1.1.2",
"@types/express": "^4.17.6",
"@types/http-proxy-middleware": "^1.0.0",
"@types/luxon": "^3.0.0",
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { createMockDirectory } from '@backstage/backend-test-utils';
import { ServiceAccountStrategy } from './ServiceAccountStrategy';
@@ -22,7 +23,7 @@ const mockDir = createMockDirectory({
},
});
jest.mock('@kubernetes/client-node', () => ({
const mockClient = {
KubeConfig: class {
#loaded = false;
loadFromCluster() {
@@ -43,12 +44,13 @@ jest.mock('@kubernetes/client-node', () => ({
};
}
},
}));
};
describe('ServiceAccountStrategy', () => {
describe('#getCredential', () => {
it('reads bearer token from config', async () => {
const strategy = new ServiceAccountStrategy();
(strategy as any).injectedKubernetesClient = mockClient;
const credential = await strategy.getCredential({
name: '',
@@ -65,6 +67,7 @@ describe('ServiceAccountStrategy', () => {
describe('when serviceAccountToken is absent from config', () => {
it('reads in-cluster token', async () => {
const strategy = new ServiceAccountStrategy();
(strategy as any).injectedKubernetesClient = mockClient;
const credential = await strategy.getCredential({
name: '',
@@ -20,7 +20,7 @@ import {
ClusterDetails,
KubernetesCredential,
} from '@backstage/plugin-kubernetes-node';
import { KubeConfig, User } from '@kubernetes/client-node';
import type { User } from '@kubernetes/client-node';
import fs from 'fs-extra';
/**
@@ -28,9 +28,16 @@ import fs from 'fs-extra';
* @public
*/
export class ServiceAccountStrategy implements AuthenticationStrategy {
// Only used in tests
private injectedKubernetesClient?: typeof import('@kubernetes/client-node');
public async getCredential(
clusterDetails: ClusterDetails,
): Promise<KubernetesCredential> {
const { KubeConfig } =
this.injectedKubernetesClient ??
(await import('@kubernetes/client-node'));
const token = clusterDetails.authMetadata.serviceAccountToken;
if (token) {
return { type: 'bearer token', token };
@@ -33,7 +33,7 @@ import {
PodFetchResponse,
PodStatusFetchResponse,
} from '@backstage/plugin-kubernetes-common';
import {
import type {
ContainerStatus,
CurrentResourceUsage,
PodStatus,
@@ -14,14 +14,7 @@
* limitations under the License.
*/
import {
bufferFromFileOrString,
Cluster,
CoreV1Api,
KubeConfig,
Metrics,
topPods,
} from '@kubernetes/client-node';
import type { Cluster, CoreV1Api, Metrics } from '@kubernetes/client-node';
import lodash, { Dictionary } from 'lodash';
import {
FetchResponseWrapper,
@@ -126,12 +119,14 @@ export class KubernetesClientBasedFetcher implements KubernetesFetcher {
return Promise.all(fetchResults).then(fetchResultsToResponseWrapper);
}
fetchPodMetricsByNamespaces(
async fetchPodMetricsByNamespaces(
clusterDetails: ClusterDetails,
credential: KubernetesCredential,
namespaces: Set<string>,
labelSelector?: string,
): Promise<FetchResponseWrapper> {
const { topPods } = await import('@kubernetes/client-node');
const fetchResults = Array.from(namespaces).map(async ns => {
const [podMetrics, podList] = await Promise.all([
this.fetchResource(
@@ -193,7 +188,7 @@ export class KubernetesClientBasedFetcher implements KubernetesFetcher {
};
}
private fetchResource(
private async fetchResource(
clusterDetails: ClusterDetails,
credential: KubernetesCredential,
group: string,
@@ -217,9 +212,9 @@ export class KubernetesClientBasedFetcher implements KubernetesFetcher {
clusterDetails.authMetadata[ANNOTATION_KUBERNETES_AUTH_PROVIDER];
if (this.isServiceAccountAuthentication(authProvider, clusterDetails)) {
[url, requestInit] = this.fetchArgsInCluster(credential);
[url, requestInit] = await this.fetchArgsInCluster(credential);
} else if (!this.isCredentialMissing(authProvider, credential)) {
[url, requestInit] = this.fetchArgs(clusterDetails, credential);
[url, requestInit] = await this.fetchArgs(clusterDetails, credential);
} else {
return Promise.reject(
new Error(
@@ -261,10 +256,12 @@ export class KubernetesClientBasedFetcher implements KubernetesFetcher {
);
}
private fetchArgs(
private async fetchArgs(
clusterDetails: ClusterDetails,
credential: KubernetesCredential,
): [URL, RequestInit] {
): Promise<[URL, fetch.RequestInit]> {
const { bufferFromFileOrString } = await import('@kubernetes/client-node');
const requestInit: RequestInit = {
method: 'GET',
headers: {
@@ -293,9 +290,12 @@ export class KubernetesClientBasedFetcher implements KubernetesFetcher {
}
return [url, requestInit];
}
private fetchArgsInCluster(
private async fetchArgsInCluster(
credential: KubernetesCredential,
): [URL, RequestInit] {
): Promise<[URL, fetch.RequestInit]> {
const { KubeConfig } = await import('@kubernetes/client-node');
const requestInit: RequestInit = {
method: 'GET',
headers: {
@@ -27,11 +27,7 @@ import {
KubernetesRequestAuth,
} from '@backstage/plugin-kubernetes-common';
import { AuthorizeResult } from '@backstage/plugin-permission-common';
import {
bufferFromFileOrString,
Cluster,
KubeConfig,
} from '@kubernetes/client-node';
import type { Cluster } from '@kubernetes/client-node';
import { createProxyMiddleware, RequestHandler } from 'http-proxy-middleware';
import fs from 'fs-extra';
@@ -176,6 +172,10 @@ export class KubernetesProxy {
const cluster = await this.getClusterForRequest(req);
const url = new URL(cluster.url);
const { bufferFromFileOrString } = await import(
'@kubernetes/client-node'
);
const target: any = {
protocol: url.protocol,
host: url.hostname,
@@ -234,6 +234,8 @@ export class KubernetesProxy {
}
private async getClusterForRequest(req: Request): Promise<ClusterDetails> {
const { KubeConfig } = await import('@kubernetes/client-node');
const clusterName = req.headers[HEADER_KUBERNETES_CLUSTER.toLowerCase()];
const clusters = await this.clusterSupplier.getClusters({
credentials: await this.httpAuth.credentials(req),
@@ -17,7 +17,7 @@ import { useApiResources } from './useApiResources';
import { useCallback, useEffect } from 'react';
import { useEntity } from '@backstage/plugin-catalog-react';
import { Table, TableColumn } from '@backstage/core-components';
import { IAPIGroup } from '@kubernetes-models/apimachinery/apis/meta/v1';
import type { IAPIGroup } from '@kubernetes-models/apimachinery/apis/meta/v1';
import { useKubernetesClusterError } from '../KubernetesClusterErrorContext/KubernetesClusterErrorContext';
import { makeStyles } from '@material-ui/core/styles';
@@ -17,7 +17,7 @@ import useAsync from 'react-use/esm/useAsync';
import { useApi } from '@backstage/core-plugin-api';
import { kubernetesApiRef } from '@backstage/plugin-kubernetes-react';
import { IAPIGroupList } from '@kubernetes-models/apimachinery/apis/meta/v1';
import type { IAPIGroupList } from '@kubernetes-models/apimachinery/apis/meta/v1';
/**
* Arguments for useApiResources
+1 -1
View File
@@ -55,7 +55,7 @@
"@backstage/catalog-model": "workspace:^",
"@backstage/plugin-permission-common": "workspace:^",
"@backstage/types": "workspace:^",
"@kubernetes/client-node": "1.0.0-rc7",
"@kubernetes/client-node": "1.1.2",
"kubernetes-models": "^4.3.1",
"lodash": "^4.17.21",
"luxon": "^3.0.0"
+15 -15
View File
@@ -9,21 +9,21 @@ import { FetchResponse as FetchResponse_2 } from '@backstage/plugin-kubernetes-c
import type { JsonObject } from '@backstage/types';
import type { JsonValue } from '@backstage/types';
import { ObjectsByEntityResponse as ObjectsByEntityResponse_2 } from '@backstage/plugin-kubernetes-common';
import { PodStatus } from '@kubernetes/client-node';
import { V1ConfigMap } from '@kubernetes/client-node';
import { V1CronJob } from '@kubernetes/client-node';
import { V1DaemonSet } from '@kubernetes/client-node';
import { V1Deployment } from '@kubernetes/client-node';
import { V1Ingress } from '@kubernetes/client-node';
import { V1Job } from '@kubernetes/client-node';
import { V1LimitRange } from '@kubernetes/client-node';
import { V1Pod } from '@kubernetes/client-node';
import { V1ReplicaSet } from '@kubernetes/client-node';
import { V1ResourceQuota } from '@kubernetes/client-node';
import { V1Secret } from '@kubernetes/client-node';
import { V1Service } from '@kubernetes/client-node';
import { V1StatefulSet } from '@kubernetes/client-node';
import { V2HorizontalPodAutoscaler } from '@kubernetes/client-node';
import type { PodStatus } from '@kubernetes/client-node';
import type { V1ConfigMap } from '@kubernetes/client-node';
import type { V1CronJob } from '@kubernetes/client-node';
import type { V1DaemonSet } from '@kubernetes/client-node';
import type { V1Deployment } from '@kubernetes/client-node';
import type { V1Ingress } from '@kubernetes/client-node';
import type { V1Job } from '@kubernetes/client-node';
import type { V1LimitRange } from '@kubernetes/client-node';
import type { V1Pod } from '@kubernetes/client-node';
import type { V1ReplicaSet } from '@kubernetes/client-node';
import type { V1ResourceQuota } from '@kubernetes/client-node';
import type { V1Secret } from '@kubernetes/client-node';
import type { V1Service } from '@kubernetes/client-node';
import type { V1StatefulSet } from '@kubernetes/client-node';
import type { V2HorizontalPodAutoscaler } from '@kubernetes/client-node';
// @public
export const ANNOTATION_KUBERNETES_API_SERVER = 'kubernetes.io/api-server';
@@ -14,7 +14,7 @@
* limitations under the License.
*/
import {
import type {
V1Pod,
V1Deployment,
V2HorizontalPodAutoscaler,
+1 -1
View File
@@ -15,7 +15,7 @@
*/
import type { JsonObject, JsonValue } from '@backstage/types';
import {
import type {
PodStatus,
V1ConfigMap,
V1CronJob,
+1 -1
View File
@@ -42,7 +42,7 @@
"@backstage/catalog-model": "workspace:^",
"@backstage/plugin-kubernetes-common": "workspace:^",
"@backstage/types": "workspace:^",
"@kubernetes/client-node": "1.0.0-rc7",
"@kubernetes/client-node": "1.1.2",
"node-fetch": "^2.7.0",
"winston": "^3.2.1"
},
@@ -38,6 +38,8 @@ import { setupServer } from 'msw/node';
import { loggerToWinstonLogger } from '@backstage/backend-common';
import { ExtendedHttpServer } from '@backstage/backend-defaults/rootHttpRouter';
jest.setTimeout(60_000);
describe('Pinniped - tokenCredentialRequest', () => {
let app: ExtendedHttpServer;
const logger = loggerToWinstonLogger(mockServices.logger.mock());
@@ -16,7 +16,6 @@
import { ClusterDetails } from '@backstage/plugin-kubernetes-node';
import * as https from 'https';
import { bufferFromFileOrString } from '@kubernetes/client-node';
import fetch, { RequestInit } from 'node-fetch';
import { Logger } from 'winston';
@@ -75,7 +74,7 @@ export class PinnipedHelper {
url.pathname = `/apis/${apiGroup}/tokencredentialrequests`;
const requestInit: RequestInit = this.buildRequestForPinniped(
const requestInit = await this.buildRequestForPinniped(
url,
clusterDetails,
pinnipedParams,
@@ -107,11 +106,13 @@ export class PinnipedHelper {
return Promise.reject(data.status.message);
}
private buildRequestForPinniped(
private async buildRequestForPinniped(
url: URL,
clusterDetails: ClusterDetails,
pinnipedParams: PinnipedParameters,
): RequestInit {
): Promise<fetch.RequestInit> {
const { bufferFromFileOrString } = await import('@kubernetes/client-node');
const body = {
apiVersion:
pinnipedParams.tokenCredentialRequest?.apiGroup ??
+1 -1
View File
@@ -62,7 +62,7 @@
"@backstage/types": "workspace:^",
"@kubernetes-models/apimachinery": "^2.0.0",
"@kubernetes-models/base": "^5.0.0",
"@kubernetes/client-node": "1.0.0-rc7",
"@kubernetes/client-node": "1.1.2",
"@material-ui/core": "^4.9.13",
"@material-ui/icons": "^4.11.3",
"@material-ui/lab": "^4.0.0-alpha.61",
+7 -7
View File
@@ -22,8 +22,8 @@ import { FetchApi } from '@backstage/core-plugin-api';
import { GroupedResponses } from '@backstage/plugin-kubernetes-common';
import { IContainer } from 'kubernetes-models/v1';
import { IContainerStatus } from 'kubernetes-models/v1';
import { IIoK8sApimachineryPkgApisMetaV1ObjectMeta } from '@kubernetes-models/apimachinery/apis/meta/v1/ObjectMeta';
import { IObjectMeta } from '@kubernetes-models/apimachinery/apis/meta/v1/ObjectMeta';
import type { IIoK8sApimachineryPkgApisMetaV1ObjectMeta } from '@kubernetes-models/apimachinery/apis/meta/v1/ObjectMeta';
import type { IObjectMeta } from '@kubernetes-models/apimachinery/apis/meta/v1/ObjectMeta';
import { JsonObject } from '@backstage/types';
import { JSX as JSX_2 } from 'react/jsx-runtime';
import { KubernetesRequestBody } from '@backstage/plugin-kubernetes-common';
@@ -34,11 +34,11 @@ import { Pod } from 'kubernetes-models/v1';
import { Pod as Pod_2 } from 'kubernetes-models/v1/Pod';
import { ProfileInfoApi } from '@backstage/core-plugin-api';
import { ReactNode } from 'react';
import { TypeMeta } from '@kubernetes-models/base';
import { V1Job } from '@kubernetes/client-node';
import { V1ObjectMeta } from '@kubernetes/client-node';
import { V1Pod } from '@kubernetes/client-node';
import { V2HorizontalPodAutoscaler } from '@kubernetes/client-node';
import type { TypeMeta } from '@kubernetes-models/base';
import type { V1Job } from '@kubernetes/client-node';
import type { V1ObjectMeta } from '@kubernetes/client-node';
import type { V1Pod } from '@kubernetes/client-node';
import type { V2HorizontalPodAutoscaler } from '@kubernetes/client-node';
import { WorkloadsByEntityRequest } from '@backstage/plugin-kubernetes-common';
// @public (undocumented)
@@ -20,7 +20,7 @@ import AccordionSummary from '@material-ui/core/AccordionSummary';
import Grid from '@material-ui/core/Grid';
import Typography from '@material-ui/core/Typography';
import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
import { V1CronJob, V1Job } from '@kubernetes/client-node';
import type { V1CronJob, V1Job } from '@kubernetes/client-node';
import { JobsAccordions } from '../JobsAccordions';
import { CronJobDrawer } from './CronJobsDrawer';
import { getOwnedResources } from '../../utils/owner';
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { V1CronJob } from '@kubernetes/client-node';
import type { V1CronJob } from '@kubernetes/client-node';
import { KubernetesStructuredMetadataTableDrawer } from '../KubernetesDrawer';
import Typography from '@material-ui/core/Typography';
import Grid from '@material-ui/core/Grid';
@@ -21,7 +21,7 @@ import AccordionSummary from '@material-ui/core/AccordionSummary';
import Grid from '@material-ui/core/Grid';
import Typography from '@material-ui/core/Typography';
import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
import { V1Pod, V2HorizontalPodAutoscaler } from '@kubernetes/client-node';
import type { V1Pod, V2HorizontalPodAutoscaler } from '@kubernetes/client-node';
import { PodsTable } from '../../Pods';
import { HorizontalPodAutoscalerDrawer } from '../../HorizontalPodAutoscalers';
import { RolloutDrawer } from './RolloutDrawer';
@@ -20,7 +20,7 @@ import AccordionDetails from '@material-ui/core/AccordionDetails';
import AccordionSummary from '@material-ui/core/AccordionSummary';
import Grid from '@material-ui/core/Grid';
import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
import { V1Pod, V1DaemonSet } from '@kubernetes/client-node';
import type { V1Pod, V1DaemonSet } from '@kubernetes/client-node';
import { PodsTable } from '../Pods';
import { DaemonSetDrawer } from './DaemonSetsDrawer';
import { getOwnedResources } from '../../utils/owner';
@@ -14,7 +14,7 @@
* limitations under the License.
*/
import { V1DaemonSet } from '@kubernetes/client-node';
import type { V1DaemonSet } from '@kubernetes/client-node';
import { KubernetesStructuredMetadataTableDrawer } from '../KubernetesDrawer';
import Typography from '@material-ui/core/Typography';
import Grid from '@material-ui/core/Grid';
@@ -15,7 +15,7 @@
*/
import { ReactNode } from 'react';
import { V1Deployment } from '@kubernetes/client-node';
import type { V1Deployment } from '@kubernetes/client-node';
import { KubernetesStructuredMetadataTableDrawer } from '../KubernetesDrawer';
import { renderCondition } from '../../utils/pod';
import Typography from '@material-ui/core/Typography';
@@ -21,7 +21,7 @@ import AccordionSummary from '@material-ui/core/AccordionSummary';
import Grid from '@material-ui/core/Grid';
import Typography from '@material-ui/core/Typography';
import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
import {
import type {
V1Deployment,
V1Pod,
V2HorizontalPodAutoscaler,
@@ -15,7 +15,7 @@
*/
import { ReactNode } from 'react';
import { V2HorizontalPodAutoscaler } from '@kubernetes/client-node';
import type { V2HorizontalPodAutoscaler } from '@kubernetes/client-node';
import { KubernetesStructuredMetadataTableDrawer } from '../KubernetesDrawer';
/** @public */
@@ -14,7 +14,7 @@
* limitations under the License.
*/
import { V1Ingress } from '@kubernetes/client-node';
import type { V1Ingress } from '@kubernetes/client-node';
import { KubernetesStructuredMetadataTableDrawer } from '../KubernetesDrawer';
import Typography from '@material-ui/core/Typography';
import Grid from '@material-ui/core/Grid';
@@ -20,7 +20,7 @@ import AccordionDetails from '@material-ui/core/AccordionDetails';
import AccordionSummary from '@material-ui/core/AccordionSummary';
import Grid from '@material-ui/core/Grid';
import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
import { V1Ingress } from '@kubernetes/client-node';
import type { V1Ingress } from '@kubernetes/client-node';
import { IngressDrawer } from './IngressDrawer';
import { GroupedResponsesContext } from '../../hooks';
import { StructuredMetadataTable } from '@backstage/core-components';
@@ -19,11 +19,14 @@ import { JobsAccordions } from './JobsAccordions';
import * as oneCronJobsFixture from '../../__fixtures__/1-cronjobs.json';
import { renderInTestApp } from '@backstage/test-utils';
import { kubernetesProviders } from '../../hooks/test-utils';
import { V1Job } from '@kubernetes/client-node';
import { ObjectSerializer } from '@kubernetes/client-node/dist/gen/models/ObjectSerializer';
import type { V1Job } from '@kubernetes/client-node';
describe('JobsAccordions', () => {
it('should render 2 jobs', async () => {
const { ObjectSerializer } = await import(
'@kubernetes/client-node/dist/gen/models/ObjectSerializer'
);
const wrapper = kubernetesProviders(oneCronJobsFixture, new Set<string>());
const jobs: V1Job[] = oneCronJobsFixture.jobs.map(
@@ -19,7 +19,7 @@ import AccordionDetails from '@material-ui/core/AccordionDetails';
import AccordionSummary from '@material-ui/core/AccordionSummary';
import Grid from '@material-ui/core/Grid';
import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
import { V1Job, V1Pod } from '@kubernetes/client-node';
import type { V1Job, V1Pod } from '@kubernetes/client-node';
import { PodsTable } from '../Pods';
import { JobDrawer } from './JobsDrawer';
import { getOwnedResources } from '../../utils/owner';
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { V1Job } from '@kubernetes/client-node';
import type { V1Job } from '@kubernetes/client-node';
import { KubernetesStructuredMetadataTableDrawer } from '../KubernetesDrawer';
import Typography from '@material-ui/core/Typography';
import Grid from '@material-ui/core/Grid';
@@ -15,7 +15,7 @@
*/
import { ReactNode, ChangeEvent, useState } from 'react';
import { IObjectMeta } from '@kubernetes-models/apimachinery/apis/meta/v1/ObjectMeta';
import type { IObjectMeta } from '@kubernetes-models/apimachinery/apis/meta/v1/ObjectMeta';
import Drawer from '@material-ui/core/Drawer';
import Grid from '@material-ui/core/Grid';
import IconButton from '@material-ui/core/IconButton';
@@ -25,7 +25,7 @@ import Grid from '@material-ui/core/Grid';
import { makeStyles, createStyles, Theme } from '@material-ui/core/styles';
import Close from '@material-ui/icons/Close';
import OpenInNewIcon from '@material-ui/icons/OpenInNew';
import { V1ObjectMeta } from '@kubernetes/client-node';
import type { V1ObjectMeta } from '@kubernetes/client-node';
import { withStyles } from '@material-ui/core/styles';
import {
LinkButton as BackstageButton,
+1 -1
View File
@@ -27,7 +27,7 @@ import { Table, TableColumn } from '@backstage/core-components';
import { ClusterContext } from '../../hooks/Cluster';
import { useMatchingErrors } from '../../hooks/useMatchingErrors';
import { Pod } from 'kubernetes-models/v1/Pod';
import { V1Pod } from '@kubernetes/client-node';
import type { V1Pod } from '@kubernetes/client-node';
import { usePodMetrics } from '../../hooks/usePodMetrics';
import Typography from '@material-ui/core/Typography';
@@ -14,7 +14,7 @@
* limitations under the License.
*/
import { V1Service } from '@kubernetes/client-node';
import type { V1Service } from '@kubernetes/client-node';
import { KubernetesStructuredMetadataTableDrawer } from '../KubernetesDrawer';
import Typography from '@material-ui/core/Typography';
import Grid from '@material-ui/core/Grid';
@@ -21,7 +21,7 @@ import AccordionSummary from '@material-ui/core/AccordionSummary';
import Grid from '@material-ui/core/Grid';
import Typography from '@material-ui/core/Typography';
import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
import { V1Service } from '@kubernetes/client-node';
import type { V1Service } from '@kubernetes/client-node';
import { ServiceDrawer } from './ServiceDrawer';
import { GroupedResponsesContext } from '../../hooks';
import { StructuredMetadataTable } from '@backstage/core-components';
@@ -15,7 +15,7 @@
*/
import { ReactNode } from 'react';
import { V1StatefulSet } from '@kubernetes/client-node';
import type { V1StatefulSet } from '@kubernetes/client-node';
import { KubernetesStructuredMetadataTableDrawer } from '../KubernetesDrawer';
import { renderCondition } from '../../utils/pod';
import Typography from '@material-ui/core/Typography';
@@ -21,7 +21,7 @@ import AccordionSummary from '@material-ui/core/AccordionSummary';
import Grid from '@material-ui/core/Grid';
import Typography from '@material-ui/core/Typography';
import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
import {
import type {
V1Pod,
V2HorizontalPodAutoscaler,
V1StatefulSet,
@@ -18,8 +18,8 @@ import {
DetectedError,
ResourceRef,
} from '@backstage/plugin-kubernetes-common';
import { TypeMeta } from '@kubernetes-models/base';
import { IIoK8sApimachineryPkgApisMetaV1ObjectMeta as V1ObjectMeta } from '@kubernetes-models/apimachinery/apis/meta/v1/ObjectMeta';
import type { TypeMeta } from '@kubernetes-models/base';
import type { IIoK8sApimachineryPkgApisMetaV1ObjectMeta as V1ObjectMeta } from '@kubernetes-models/apimachinery/apis/meta/v1/ObjectMeta';
/**
* Context for detected errors
@@ -14,7 +14,7 @@
* limitations under the License.
*/
import { createContext, useContext } from 'react';
import { IObjectMeta } from '@kubernetes-models/apimachinery/apis/meta/v1/ObjectMeta';
import type { IObjectMeta } from '@kubernetes-models/apimachinery/apis/meta/v1/ObjectMeta';
import { ClientPodStatus } from '@backstage/plugin-kubernetes-common';
/**
+1 -1
View File
@@ -14,7 +14,7 @@
* limitations under the License.
*/
import {
import type {
V1ObjectMeta,
V2HorizontalPodAutoscaler,
V1Pod,
+1 -1
View File
@@ -14,7 +14,7 @@
* limitations under the License.
*/
import {
import type {
V1Pod,
V1PodCondition,
V1DeploymentCondition,
+1 -1
View File
@@ -69,7 +69,7 @@
"@backstage/plugin-permission-react": "workspace:^",
"@kubernetes-models/apimachinery": "^2.0.0",
"@kubernetes-models/base": "^5.0.0",
"@kubernetes/client-node": "1.0.0-rc7",
"@kubernetes/client-node": "1.1.2",
"@material-ui/core": "^4.12.2",
"cronstrue": "^2.2.0",
"js-yaml": "^4.0.0",
+39 -15
View File
@@ -6794,7 +6794,7 @@ __metadata:
"@backstage/types": "workspace:^"
"@google-cloud/container": "npm:^5.0.0"
"@jest-mock/express": "npm:^2.0.1"
"@kubernetes/client-node": "npm:1.0.0-rc7"
"@kubernetes/client-node": "npm:1.1.2"
"@types/aws4": "npm:^1.5.1"
"@types/express": "npm:^4.17.6"
"@types/http-proxy-middleware": "npm:^1.0.0"
@@ -6869,7 +6869,7 @@ __metadata:
"@backstage/cli": "workspace:^"
"@backstage/plugin-permission-common": "workspace:^"
"@backstage/types": "workspace:^"
"@kubernetes/client-node": "npm:1.0.0-rc7"
"@kubernetes/client-node": "npm:1.1.2"
kubernetes-models: "npm:^4.3.1"
lodash: "npm:^4.17.21"
luxon: "npm:^3.0.0"
@@ -6890,7 +6890,7 @@ __metadata:
"@backstage/plugin-kubernetes-backend": "workspace:^"
"@backstage/plugin-kubernetes-common": "workspace:^"
"@backstage/types": "workspace:^"
"@kubernetes/client-node": "npm:1.0.0-rc7"
"@kubernetes/client-node": "npm:1.1.2"
msw: "npm:^1.3.1"
node-fetch: "npm:^2.7.0"
supertest: "npm:^7.0.0"
@@ -6913,7 +6913,7 @@ __metadata:
"@backstage/types": "workspace:^"
"@kubernetes-models/apimachinery": "npm:^2.0.0"
"@kubernetes-models/base": "npm:^5.0.0"
"@kubernetes/client-node": "npm:1.0.0-rc7"
"@kubernetes/client-node": "npm:1.1.2"
"@material-ui/core": "npm:^4.9.13"
"@material-ui/icons": "npm:^4.11.3"
"@material-ui/lab": "npm:^4.0.0-alpha.61"
@@ -6963,7 +6963,7 @@ __metadata:
"@backstage/test-utils": "workspace:^"
"@kubernetes-models/apimachinery": "npm:^2.0.0"
"@kubernetes-models/base": "npm:^5.0.0"
"@kubernetes/client-node": "npm:1.0.0-rc7"
"@kubernetes/client-node": "npm:1.1.2"
"@material-ui/core": "npm:^4.12.2"
"@testing-library/dom": "npm:^10.0.0"
"@testing-library/jest-dom": "npm:^6.0.0"
@@ -11484,9 +11484,9 @@ __metadata:
languageName: node
linkType: hard
"@kubernetes/client-node@npm:1.0.0-rc7":
version: 1.0.0-rc7
resolution: "@kubernetes/client-node@npm:1.0.0-rc7"
"@kubernetes/client-node@npm:1.1.2":
version: 1.1.2
resolution: "@kubernetes/client-node@npm:1.1.2"
dependencies:
"@types/js-yaml": "npm:^4.0.1"
"@types/node": "npm:^22.0.0"
@@ -11495,19 +11495,19 @@ __metadata:
"@types/tar": "npm:^6.1.1"
"@types/ws": "npm:^8.5.4"
form-data: "npm:^4.0.0"
hpagent: "npm:^1.2.0"
isomorphic-ws: "npm:^5.0.0"
js-yaml: "npm:^4.1.0"
jsonpath-plus: "npm:^10.0.0"
jsonpath-plus: "npm:^10.3.0"
node-fetch: "npm:^2.6.9"
openid-client: "npm:^5.6.5"
openid-client: "npm:^6.1.3"
rfc4648: "npm:^1.3.0"
socks-proxy-agent: "npm:^8.0.4"
stream-buffers: "npm:^3.0.2"
tar: "npm:^7.0.0"
tmp-promise: "npm:^3.0.2"
tslib: "npm:^2.5.0"
url-parse: "npm:^1.4.3"
ws: "npm:^8.18.0"
checksum: 10/dad4432c97d24410f3af293b64e3e261d3807d2e23d5b2e022e34d59b0fddd1e26087900695b13917941b40dda02dc6af3e04f08ffb3a6a28b1b23a8dc7543bb
checksum: 10/3dd193dc8c0eb86bceb8a184e178e39c72278c4c6cccad25c595c4b3d1f56ac36778a845abd18c013971db9d8a7ed1febd88dab8791e0819bbd74a2850f0e2ca
languageName: node
linkType: hard
@@ -34375,6 +34375,13 @@ __metadata:
languageName: node
linkType: hard
"jose@npm:^6.0.10":
version: 6.0.10
resolution: "jose@npm:6.0.10"
checksum: 10/8ba0d1aca94bdf780247c737328114fab3e394e1531e881dfe3fdd1d4a293b08cf7c0242769e72c8c8eee15c95761b542cf10730c3dfbb108084762df7d25cec
languageName: node
linkType: hard
"js-base64@npm:^3.6.0":
version: 3.7.7
resolution: "js-base64@npm:3.7.7"
@@ -38884,6 +38891,13 @@ __metadata:
languageName: node
linkType: hard
"oauth4webapi@npm:^3.4.1":
version: 3.5.0
resolution: "oauth4webapi@npm:3.5.0"
checksum: 10/7ac858b6edf3701c4752f386788acab01f7567a3e6068316582d80298b8113999bb9062d498ce0ab8bb4c4802d8007c5a1afdcb42974ffcf603af20b6d832993
languageName: node
linkType: hard
"oauth@npm:0.10.x":
version: 0.10.0
resolution: "oauth@npm:0.10.0"
@@ -39247,7 +39261,7 @@ __metadata:
languageName: node
linkType: hard
"openid-client@npm:^5.3.0, openid-client@npm:^5.4.3, openid-client@npm:^5.5.0, openid-client@npm:^5.6.5":
"openid-client@npm:^5.3.0, openid-client@npm:^5.4.3, openid-client@npm:^5.5.0":
version: 5.7.1
resolution: "openid-client@npm:5.7.1"
dependencies:
@@ -39259,6 +39273,16 @@ __metadata:
languageName: node
linkType: hard
"openid-client@npm:^6.1.3":
version: 6.4.2
resolution: "openid-client@npm:6.4.2"
dependencies:
jose: "npm:^6.0.10"
oauth4webapi: "npm:^3.4.1"
checksum: 10/798d4c88e6a5e52a37c8d321b92da9a93a431cfc6f909857ae1aadb558d2444d31fde68e03fd59e2779b69cdf46707f5a52e5ba9eaf4ab2e4bd63e621b51ada8
languageName: node
linkType: hard
"oppa@npm:^0.4.0":
version: 0.4.0
resolution: "oppa@npm:0.4.0"
@@ -47493,7 +47517,7 @@ __metadata:
languageName: node
linkType: hard
"url-parse@npm:^1.4.3, url-parse@npm:^1.5.10, url-parse@npm:^1.5.3":
"url-parse@npm:^1.5.10, url-parse@npm:^1.5.3":
version: 1.5.10
resolution: "url-parse@npm:1.5.10"
dependencies: