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:
@@ -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`.
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
*/
|
||||
|
||||
import type { JsonObject, JsonValue } from '@backstage/types';
|
||||
import {
|
||||
import type {
|
||||
PodStatus,
|
||||
V1ConfigMap,
|
||||
V1CronJob,
|
||||
|
||||
@@ -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 ??
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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';
|
||||
|
||||
+1
-1
@@ -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';
|
||||
|
||||
+1
-1
@@ -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,
|
||||
|
||||
+1
-1
@@ -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';
|
||||
|
||||
+1
-1
@@ -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
@@ -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';
|
||||
|
||||
+1
-1
@@ -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';
|
||||
|
||||
+1
-1
@@ -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';
|
||||
|
||||
/**
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import {
|
||||
import type {
|
||||
V1ObjectMeta,
|
||||
V2HorizontalPodAutoscaler,
|
||||
V1Pod,
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import {
|
||||
import type {
|
||||
V1Pod,
|
||||
V1PodCondition,
|
||||
V1DeploymentCondition,
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user