1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

generate metadata.selfLink if response does not have it

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
This commit is contained in:
Jari Kolehmainen 2020-12-18 08:49:03 +02:00
parent 2efd176780
commit 01caac7756

View File

@ -256,11 +256,32 @@ export class KubeApi<T extends KubeObject = any> {
return query; return query;
} }
protected generateSelfLink(kubeObject: T): string {
return createKubeApiURL({
apiPrefix: this.apiPrefix,
apiVersion: this.apiVersionWithGroup,
resource: this.apiResource,
namespace: this.isNamespaced ? kubeObject.getNs() : undefined,
name: kubeObject.getName(),
});
}
protected ensureObjectSelfLink(kubeObject: T): void {
if (!kubeObject.metadata?.selfLink) {
kubeObject.metadata ?? {};
kubeObject.metadata.selfLink = this.generateSelfLink(kubeObject);
}
}
protected parseResponse(data: KubeJsonApiData | KubeJsonApiData[] | KubeJsonApiDataList, namespace?: string): any { protected parseResponse(data: KubeJsonApiData | KubeJsonApiData[] | KubeJsonApiDataList, namespace?: string): any {
const KubeObjectConstructor = this.objectConstructor; const KubeObjectConstructor = this.objectConstructor;
if (KubeObject.isJsonApiData(data)) { if (KubeObject.isJsonApiData(data)) {
return new KubeObjectConstructor(data); const object = new KubeObjectConstructor(data);
this.ensureObjectSelfLink(object);
return object;
} }
// process items list response // process items list response
@ -270,11 +291,17 @@ export class KubeApi<T extends KubeObject = any> {
this.setResourceVersion(namespace, metadata.resourceVersion); this.setResourceVersion(namespace, metadata.resourceVersion);
this.setResourceVersion("", metadata.resourceVersion); this.setResourceVersion("", metadata.resourceVersion);
return items.map(item => new KubeObjectConstructor({ return items.map((item) => {
kind: this.kind, const object = new KubeObjectConstructor({
apiVersion, kind: this.kind,
...item, apiVersion,
})); ...item,
});
this.ensureObjectSelfLink(object);
return object;
});
} }
// custom apis might return array for list response, e.g. users, groups, etc. // custom apis might return array for list response, e.g. users, groups, etc.