@@ -207,7 +207,7 @@ export class KubernetesFanOutHandler {
|
||||
'backstage.io/kubernetes-label-selector'
|
||||
] || `backstage.io/kubernetes-id=${entityName}`;
|
||||
|
||||
const namespace =
|
||||
const namespace =
|
||||
requestBody.entity?.metadata?.annotations?.[
|
||||
'backstage.io/kubernetes-namespace'
|
||||
];
|
||||
@@ -221,7 +221,7 @@ export class KubernetesFanOutHandler {
|
||||
objectTypesToFetch: this.objectTypesToFetch,
|
||||
labelSelector,
|
||||
customResources: this.customResources,
|
||||
namespace
|
||||
namespace,
|
||||
})
|
||||
.then(result => this.getMetricsForPods(clusterDetailsItem, result))
|
||||
.then(r => this.toClusterObjects(clusterDetailsItem, r));
|
||||
@@ -229,16 +229,18 @@ export class KubernetesFanOutHandler {
|
||||
).then(this.toObjectsByEntityResponse);
|
||||
}
|
||||
|
||||
toObjectsByEntityResponse(clusterObjects: ClusterObjects[]):ObjectsByEntityResponse {
|
||||
return {
|
||||
items: clusterObjects.filter(
|
||||
item =>
|
||||
(item.errors !== undefined && item.errors.length >= 1) ||
|
||||
(item.resources !== undefined &&
|
||||
item.resources.length >= 1 &&
|
||||
item.resources.some(fr => fr.resources.length >= 1)),
|
||||
),
|
||||
}
|
||||
toObjectsByEntityResponse(
|
||||
clusterObjects: ClusterObjects[],
|
||||
): ObjectsByEntityResponse {
|
||||
return {
|
||||
items: clusterObjects.filter(
|
||||
item =>
|
||||
(item.errors !== undefined && item.errors.length >= 1) ||
|
||||
(item.resources !== undefined &&
|
||||
item.resources.length >= 1 &&
|
||||
item.resources.some(fr => fr.resources.length >= 1)),
|
||||
),
|
||||
};
|
||||
}
|
||||
|
||||
toClusterObjects(
|
||||
|
||||
@@ -515,12 +515,12 @@ describe('KubernetesFetcher', () => {
|
||||
},
|
||||
objectTypesToFetch: OBJECTS_TO_FETCH,
|
||||
labelSelector: '',
|
||||
namespace: "some-namespace",
|
||||
namespace: 'some-namespace',
|
||||
customResources: [],
|
||||
});
|
||||
|
||||
const mockCall = clientMock.listNamespacedCustomObject.mock.calls[0];
|
||||
const namespace = mockCall[2]
|
||||
expect(namespace).toBe("some-namespace");
|
||||
const namespace = mockCall[2];
|
||||
expect(namespace).toBe('some-namespace');
|
||||
});
|
||||
});
|
||||
|
||||
@@ -97,7 +97,7 @@ export class KubernetesClientBasedFetcher implements KubernetesFetcher {
|
||||
params.labelSelector ||
|
||||
`backstage.io/kubernetes-id=${params.serviceId}`,
|
||||
toFetch.objectType,
|
||||
params.namespace
|
||||
params.namespace,
|
||||
).catch(this.captureKubernetesErrorsRethrowOthers.bind(this));
|
||||
});
|
||||
|
||||
@@ -139,39 +139,21 @@ export class KubernetesClientBasedFetcher implements KubernetesFetcher {
|
||||
resource: ObjectToFetch,
|
||||
labelSelector: string,
|
||||
objectType: KubernetesObjectTypes,
|
||||
namespace?: string
|
||||
namespace?: string,
|
||||
): Promise<FetchResponse> {
|
||||
const customObjects =
|
||||
this.kubernetesClientProvider.getCustomObjectsClient(clusterDetails);
|
||||
|
||||
customObjects.addInterceptor((requestOptions: any) => {
|
||||
requestOptions.uri = requestOptions.uri.replace('/apis//v1/', '/api/v1/');
|
||||
});
|
||||
customObjects.addInterceptor((requestOptions: any) => {
|
||||
requestOptions.uri = requestOptions.uri.replace('/apis//v1/', '/api/v1/');
|
||||
});
|
||||
|
||||
if(namespace){
|
||||
if (namespace) {
|
||||
return customObjects
|
||||
.listNamespacedCustomObject(
|
||||
resource.group,
|
||||
resource.apiVersion,
|
||||
namespace,
|
||||
resource.plural,
|
||||
'',
|
||||
false,
|
||||
'',
|
||||
'',
|
||||
labelSelector,
|
||||
)
|
||||
.then(r => {
|
||||
return {
|
||||
type: objectType,
|
||||
resources: (r.body as any).items,
|
||||
};
|
||||
});
|
||||
} else {
|
||||
return customObjects
|
||||
.listClusterCustomObject(
|
||||
.listNamespacedCustomObject(
|
||||
resource.group,
|
||||
resource.apiVersion,
|
||||
namespace,
|
||||
resource.plural,
|
||||
'',
|
||||
false,
|
||||
@@ -186,5 +168,22 @@ export class KubernetesClientBasedFetcher implements KubernetesFetcher {
|
||||
};
|
||||
});
|
||||
}
|
||||
return customObjects
|
||||
.listClusterCustomObject(
|
||||
resource.group,
|
||||
resource.apiVersion,
|
||||
resource.plural,
|
||||
'',
|
||||
false,
|
||||
'',
|
||||
'',
|
||||
labelSelector,
|
||||
)
|
||||
.then(r => {
|
||||
return {
|
||||
type: objectType,
|
||||
resources: (r.body as any).items,
|
||||
};
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user