Signed-off-by: Matthew Clarke <mclarke@spotify.com>
This commit is contained in:
Matthew Clarke
2022-04-11 22:04:13 -04:00
parent 753a20c89e
commit 005b1648af
3 changed files with 42 additions and 41 deletions
@@ -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,
};
});
}
}