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

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>
This commit is contained in:
Sebastian Malton 2021-11-05 10:21:55 -04:00
parent 7dd64246dd
commit d18ec17d46

View File

@ -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
@ -102,13 +103,13 @@ export interface Ingress {
// extensions/v1beta1 // extensions/v1beta1
backend?: IExtensionsBackend; backend?: IExtensionsBackend;
// networking.k8s.io/v1 // networking.k8s.io/v1
defaultBackend?: INetworkingBackend & { defaultBackend?: RequireExactlyOne<INetworkingBackend & {
resource: { resource: {
apiGroup: string; apiGroup: string;
kind: string; kind: string;
name: string; name: string;
} }
} }>
}; };
status: { status: {
loadBalancer: { loadBalancer: {
@ -153,10 +154,11 @@ export class Ingress extends KubeObject {
return routes; return routes;
} }
getServiceNamePort() { getServiceNamePort(): IExtensionsBackend | undefined {
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,