[kubernetes-backend plugin] fix undefined kind for custom resources (#19421)

* [kubernetes-backend plugin] fix undefined kind for custom resources

Signed-off-by: Eric Yang <weityang@ebay.com>

* [kubernetes-backend plugin] fix typescript typing

Signed-off-by: Eric Yang <weityang@ebay.com>

* [kubernetes-backend plugin] update package.json

Signed-off-by: Eric Yang <weityang@ebay.com>

---------

Signed-off-by: Eric Yang <weityang@ebay.com>
This commit is contained in:
Eric Yang
2023-08-25 07:45:33 -07:00
committed by GitHub
parent fc845bc84f
commit 47ea122590
5 changed files with 20 additions and 2 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-kubernetes-backend': patch
---
fix "undefined" kind for custom resources
+1
View File
@@ -65,6 +65,7 @@
"@backstage/plugin-kubernetes-common": "workspace:^",
"@backstage/plugin-permission-common": "workspace:^",
"@backstage/plugin-permission-node": "workspace:^",
"@backstage/types": "workspace:^",
"@google-cloud/container": "^4.0.0",
"@jest-mock/express": "^2.0.1",
"@kubernetes/client-node": "0.18.1",
@@ -351,6 +351,7 @@ describe('KubernetesFetcher', () => {
res(
checkToken(req, ctx, 'token'),
withLabels(req, ctx, {
kind: 'PodList',
items: [{ metadata: { name: 'pod-name' } }],
}),
),
@@ -359,6 +360,7 @@ describe('KubernetesFetcher', () => {
res(
checkToken(req, ctx, 'token'),
withLabels(req, ctx, {
kind: 'ServiceList',
items: [{ metadata: { name: 'service-name' } }],
}),
),
@@ -369,6 +371,7 @@ describe('KubernetesFetcher', () => {
res(
checkToken(req, ctx, 'token'),
withLabels(req, ctx, {
kind: 'ThingList',
items: [{ metadata: { name: 'something-else' } }],
}),
),
@@ -424,6 +427,7 @@ describe('KubernetesFetcher', () => {
type: 'customresources',
resources: [
{
kind: 'Thing',
metadata: {
name: 'something-else',
labels: { 'backstage.io/kubernetes-id': 'some-service' },
@@ -41,6 +41,7 @@ import {
import fetch, { RequestInit, Response } from 'node-fetch';
import * as https from 'https';
import fs from 'fs-extra';
import { JsonObject } from '@backstage/types';
export interface KubernetesClientBasedFetcherOptions {
logger: Logger;
@@ -104,9 +105,15 @@ export class KubernetesClientBasedFetcher implements KubernetesFetcher {
(r: Response): Promise<FetchResult> =>
r.ok
? r.json().then(
({ items }): FetchResponse => ({
({ kind, items }): FetchResponse => ({
type: objectType,
resources: items,
resources:
objectType === 'customresources'
? items.map((item: JsonObject) => ({
...item,
kind: kind.replace(/(List)$/, ''),
}))
: items,
}),
)
: this.handleUnsuccessfulResponse(params.clusterDetails.name, r),
+1
View File
@@ -7434,6 +7434,7 @@ __metadata:
"@backstage/plugin-kubernetes-common": "workspace:^"
"@backstage/plugin-permission-common": "workspace:^"
"@backstage/plugin-permission-node": "workspace:^"
"@backstage/types": "workspace:^"
"@google-cloud/container": ^4.0.0
"@jest-mock/express": ^2.0.1
"@kubernetes/client-node": 0.18.1