mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Fix crash in IngressDetails (#4267)
* Fix crash in IngressDetails - Adds check in Ingress.getServiceNamePort() for a .spec.defaultBackend.resource instead of .spec.defaultBackend.service Signed-off-by: Sebastian Malton <sebastian@malton.name> * remove undefined Signed-off-by: Sebastian Malton <sebastian@malton.name> * Add comment about RequireExactlyOne Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
142610ae0c
commit
1ce2e727af
@ -25,6 +25,7 @@ import { IMetrics, metricsApi } from "./metrics.api";
|
|||||||
import { KubeApi } from "../kube-api";
|
import { KubeApi } from "../kube-api";
|
||||||
import type { KubeJsonApiData } from "../kube-json-api";
|
import type { KubeJsonApiData } from "../kube-json-api";
|
||||||
import { isClusterPageContext } from "../../utils/cluster-id-url-parsing";
|
import { isClusterPageContext } from "../../utils/cluster-id-url-parsing";
|
||||||
|
import type { RequireExactlyOne } from "type-fest";
|
||||||
|
|
||||||
export class IngressApi extends KubeApi<Ingress> {
|
export class IngressApi extends KubeApi<Ingress> {
|
||||||
}
|
}
|
||||||
@ -58,7 +59,7 @@ export interface ILoadBalancerIngress {
|
|||||||
// extensions/v1beta1
|
// extensions/v1beta1
|
||||||
interface IExtensionsBackend {
|
interface IExtensionsBackend {
|
||||||
serviceName: string;
|
serviceName: string;
|
||||||
servicePort: number;
|
servicePort: number | string;
|
||||||
}
|
}
|
||||||
|
|
||||||
// networking.k8s.io/v1
|
// networking.k8s.io/v1
|
||||||
@ -101,14 +102,18 @@ export interface Ingress {
|
|||||||
}[];
|
}[];
|
||||||
// extensions/v1beta1
|
// extensions/v1beta1
|
||||||
backend?: IExtensionsBackend;
|
backend?: IExtensionsBackend;
|
||||||
// networking.k8s.io/v1
|
/**
|
||||||
defaultBackend?: INetworkingBackend & {
|
* The default backend which is exactly on of:
|
||||||
|
* - service
|
||||||
|
* - resource
|
||||||
|
*/
|
||||||
|
defaultBackend?: RequireExactlyOne<INetworkingBackend & {
|
||||||
resource: {
|
resource: {
|
||||||
apiGroup: string;
|
apiGroup: string;
|
||||||
kind: string;
|
kind: string;
|
||||||
name: string;
|
name: string;
|
||||||
}
|
}
|
||||||
}
|
}>
|
||||||
};
|
};
|
||||||
status: {
|
status: {
|
||||||
loadBalancer: {
|
loadBalancer: {
|
||||||
@ -153,10 +158,11 @@ export class Ingress extends KubeObject {
|
|||||||
return routes;
|
return routes;
|
||||||
}
|
}
|
||||||
|
|
||||||
getServiceNamePort() {
|
getServiceNamePort(): IExtensionsBackend {
|
||||||
const { spec } = this;
|
const { spec: { backend, defaultBackend } = {}} = this;
|
||||||
const serviceName = spec?.defaultBackend?.service.name ?? spec?.backend?.serviceName;
|
|
||||||
const servicePort = spec?.defaultBackend?.service.port.number ?? spec?.defaultBackend?.service.port.name ?? spec?.backend?.servicePort;
|
const serviceName = defaultBackend?.service?.name ?? backend?.serviceName;
|
||||||
|
const servicePort = defaultBackend?.service?.port.number ?? defaultBackend?.service?.port.name ?? backend?.servicePort;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
serviceName,
|
serviceName,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user