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

Merge branch 'master' into vue_react_migration

This commit is contained in:
Lauri Nevala 2020-08-19 11:19:33 +03:00 committed by GitHub
commit fa4407b02e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 143 additions and 79 deletions

View File

@ -1,6 +1,6 @@
MIT License MIT License
Copyright (c) 2020 Lakend Labs, Inc. Copyright (c) 2020 Mirantis, Inc.
All rights reserved. All rights reserved.

View File

@ -822,7 +822,7 @@ msgid "Driver"
msgstr "Driver" msgstr "Driver"
#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:59 #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:59
#: src/renderer/components/+network-ingresses/ingress-details.tsx:67 #: src/renderer/components/+network-ingresses/ingress-details.tsx:87
msgid "Duration" msgid "Duration"
msgstr "Duration" msgstr "Duration"
@ -1048,6 +1048,7 @@ msgstr "Host: {0}"
#: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:33 #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:33
#: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:64 #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:64
#: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:76 #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:76
#: src/renderer/components/+network-ingresses/ingress-details.tsx:64
msgid "Hostname" msgid "Hostname"
msgstr "Hostname" msgstr "Hostname"
@ -1055,6 +1056,10 @@ msgstr "Hostname"
msgid "Http01" msgid "Http01"
msgstr "Http01" msgstr "Http01"
#: src/renderer/components/+network-ingresses/ingress-details.tsx:65
msgid "IP"
msgstr "IP"
#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:53 #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:53
msgid "IP addresses" msgid "IP addresses"
msgstr "IP addresses" msgstr "IP addresses"
@ -1235,8 +1240,10 @@ msgstr "Limited to {0}"
#: src/renderer/components/+cluster/cluster-pie-charts.tsx:72 #: src/renderer/components/+cluster/cluster-pie-charts.tsx:72
#: src/renderer/components/+cluster/cluster-pie-charts.tsx:115 #: src/renderer/components/+cluster/cluster-pie-charts.tsx:115
#: src/renderer/components/+workloads-pods/container-charts.tsx:40 #: src/renderer/components/+workloads-pods/container-charts.tsx:40
#: src/renderer/components/+workloads-pods/container-charts.tsx:64 #: src/renderer/components/+workloads-pods/container-charts.tsx:64
#: src/renderer/components/+workloads-pods/pod-charts.tsx:48 #: src/renderer/components/+workloads-pods/pod-charts.tsx:48
#: src/renderer/components/+workloads-pods/pod-charts.tsx:72 #: src/renderer/components/+workloads-pods/pod-charts.tsx:72
msgid "Limits" msgid "Limits"
@ -1258,6 +1265,10 @@ msgstr "Liveness"
msgid "Load Balancer IP" msgid "Load Balancer IP"
msgstr "Load Balancer IP" msgstr "Load Balancer IP"
#: src/renderer/components/+network-ingresses/ingress-details.tsx:108
msgid "Load-Balancer Ingress Points"
msgstr "Load-Balancer Ingress Points"
#: src/renderer/components/app-init/app-init.tsx:43 #: src/renderer/components/app-init/app-init.tsx:43
msgid "Loading" msgid "Loading"
msgstr "Loading" msgstr "Loading"
@ -1756,7 +1767,7 @@ msgid "Port"
msgstr "Port" msgstr "Port"
#: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:83 #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:83
#: src/renderer/components/+network-ingresses/ingress-details.tsx:74 #: src/renderer/components/+network-ingresses/ingress-details.tsx:94
#: src/renderer/components/+network-policies/network-policy-details.tsx:96 #: src/renderer/components/+network-policies/network-policy-details.tsx:96
#: src/renderer/components/+network-policies/network-policy-details.tsx:109 #: src/renderer/components/+network-policies/network-policy-details.tsx:109
#: src/renderer/components/+network-services/service-details.tsx:59 #: src/renderer/components/+network-services/service-details.tsx:59
@ -2080,7 +2091,7 @@ msgstr "Rollback <0>{releaseName}</0>"
msgid "Rule" msgid "Rule"
msgstr "Rule" msgstr "Rule"
#: src/renderer/components/+network-ingresses/ingress-details.tsx:85 #: src/renderer/components/+network-ingresses/ingress-details.tsx:105
#: src/renderer/components/+network-ingresses/ingresses.tsx:34 #: src/renderer/components/+network-ingresses/ingresses.tsx:34
#: src/renderer/components/+user-management-roles/role-details.tsx:25 #: src/renderer/components/+user-management-roles/role-details.tsx:25
msgid "Rules" msgid "Rules"
@ -2212,7 +2223,7 @@ msgstr "Selector"
msgid "Server" msgid "Server"
msgstr "Server" msgstr "Server"
#: src/renderer/components/+network-ingresses/ingress-details.tsx:82 #: src/renderer/components/+network-ingresses/ingress-details.tsx:102
msgid "Service" msgid "Service"
msgstr "Service" msgstr "Service"
@ -2379,7 +2390,7 @@ msgstr "Supplemental Groups"
msgid "Suspend" msgid "Suspend"
msgstr "Suspend" msgstr "Suspend"
#: src/renderer/components/+network-ingresses/ingress-details.tsx:78 #: src/renderer/components/+network-ingresses/ingress-details.tsx:98
msgid "TLS" msgid "TLS"
msgstr "TLS" msgstr "TLS"

View File

@ -318,6 +318,7 @@ msgstr ""
#~ msgid "Build version" #~ msgid "Build version"
#~ msgstr "" #~ msgstr ""
#: src/renderer/components/+workloads-pods/container-charts.tsx:75 #: src/renderer/components/+workloads-pods/container-charts.tsx:75
#: src/renderer/components/+workloads-pods/pod-charts.tsx:100 #: src/renderer/components/+workloads-pods/pod-charts.tsx:100
msgid "Bytes consumed on this filesystem" msgid "Bytes consumed on this filesystem"
@ -818,7 +819,7 @@ msgid "Driver"
msgstr "" msgstr ""
#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:59 #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:59
#: src/renderer/components/+network-ingresses/ingress-details.tsx:67 #: src/renderer/components/+network-ingresses/ingress-details.tsx:87
msgid "Duration" msgid "Duration"
msgstr "" msgstr ""
@ -1039,6 +1040,7 @@ msgstr ""
#: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:33 #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:33
#: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:64 #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:64
#: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:76 #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:76
#: src/renderer/components/+network-ingresses/ingress-details.tsx:64
msgid "Hostname" msgid "Hostname"
msgstr "" msgstr ""
@ -1046,6 +1048,10 @@ msgstr ""
msgid "Http01" msgid "Http01"
msgstr "" msgstr ""
#: src/renderer/components/+network-ingresses/ingress-details.tsx:65
msgid "IP"
msgstr ""
#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:53 #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:53
msgid "IP addresses" msgid "IP addresses"
msgstr "" msgstr ""
@ -1249,6 +1255,10 @@ msgstr ""
msgid "Load Balancer IP" msgid "Load Balancer IP"
msgstr "" msgstr ""
#: src/renderer/components/+network-ingresses/ingress-details.tsx:108
msgid "Load-Balancer Ingress Points"
msgstr ""
#: src/renderer/components/app-init/app-init.tsx:43 #: src/renderer/components/app-init/app-init.tsx:43
msgid "Loading" msgid "Loading"
msgstr "" msgstr ""
@ -1739,7 +1749,7 @@ msgid "Port"
msgstr "" msgstr ""
#: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:83 #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:83
#: src/renderer/components/+network-ingresses/ingress-details.tsx:74 #: src/renderer/components/+network-ingresses/ingress-details.tsx:94
#: src/renderer/components/+network-policies/network-policy-details.tsx:96 #: src/renderer/components/+network-policies/network-policy-details.tsx:96
#: src/renderer/components/+network-policies/network-policy-details.tsx:109 #: src/renderer/components/+network-policies/network-policy-details.tsx:109
#: src/renderer/components/+network-services/service-details.tsx:59 #: src/renderer/components/+network-services/service-details.tsx:59
@ -2063,7 +2073,7 @@ msgstr ""
msgid "Rule" msgid "Rule"
msgstr "" msgstr ""
#: src/renderer/components/+network-ingresses/ingress-details.tsx:85 #: src/renderer/components/+network-ingresses/ingress-details.tsx:105
#: src/renderer/components/+network-ingresses/ingresses.tsx:34 #: src/renderer/components/+network-ingresses/ingresses.tsx:34
#: src/renderer/components/+user-management-roles/role-details.tsx:25 #: src/renderer/components/+user-management-roles/role-details.tsx:25
msgid "Rules" msgid "Rules"
@ -2195,7 +2205,7 @@ msgstr ""
msgid "Server" msgid "Server"
msgstr "" msgstr ""
#: src/renderer/components/+network-ingresses/ingress-details.tsx:82 #: src/renderer/components/+network-ingresses/ingress-details.tsx:102
msgid "Service" msgid "Service"
msgstr "" msgstr ""
@ -2362,7 +2372,7 @@ msgstr ""
msgid "Suspend" msgid "Suspend"
msgstr "" msgstr ""
#: src/renderer/components/+network-ingresses/ingress-details.tsx:78 #: src/renderer/components/+network-ingresses/ingress-details.tsx:98
msgid "TLS" msgid "TLS"
msgstr "" msgstr ""

View File

@ -823,7 +823,7 @@ msgid "Driver"
msgstr "Драйвер" msgstr "Драйвер"
#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:59 #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:59
#: src/renderer/components/+network-ingresses/ingress-details.tsx:67 #: src/renderer/components/+network-ingresses/ingress-details.tsx:87
msgid "Duration" msgid "Duration"
msgstr "Продолжительность" msgstr "Продолжительность"
@ -1049,6 +1049,7 @@ msgstr "Хост: {0}"
#: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:33 #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:33
#: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:64 #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:64
#: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:76 #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:76
#: src/renderer/components/+network-ingresses/ingress-details.tsx:64
msgid "Hostname" msgid "Hostname"
msgstr "" msgstr ""
@ -1056,6 +1057,10 @@ msgstr ""
msgid "Http01" msgid "Http01"
msgstr "Http01" msgstr "Http01"
#: src/renderer/components/+network-ingresses/ingress-details.tsx:65
msgid "IP"
msgstr ""
#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:53 #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:53
msgid "IP addresses" msgid "IP addresses"
msgstr "IP-адреса" msgstr "IP-адреса"
@ -1259,6 +1264,10 @@ msgstr "Живучесть"
msgid "Load Balancer IP" msgid "Load Balancer IP"
msgstr "IP балансировщика нагрузки" msgstr "IP балансировщика нагрузки"
#: src/renderer/components/+network-ingresses/ingress-details.tsx:108
msgid "Load-Balancer Ingress Points"
msgstr ""
#: src/renderer/components/app-init/app-init.tsx:43 #: src/renderer/components/app-init/app-init.tsx:43
msgid "Loading" msgid "Loading"
msgstr "Загрузка" msgstr "Загрузка"
@ -1757,7 +1766,7 @@ msgid "Port"
msgstr "" msgstr ""
#: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:83 #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:83
#: src/renderer/components/+network-ingresses/ingress-details.tsx:74 #: src/renderer/components/+network-ingresses/ingress-details.tsx:94
#: src/renderer/components/+network-policies/network-policy-details.tsx:96 #: src/renderer/components/+network-policies/network-policy-details.tsx:96
#: src/renderer/components/+network-policies/network-policy-details.tsx:109 #: src/renderer/components/+network-policies/network-policy-details.tsx:109
#: src/renderer/components/+network-services/service-details.tsx:59 #: src/renderer/components/+network-services/service-details.tsx:59
@ -2081,7 +2090,7 @@ msgstr "Откатить <0>{releaseName}</0>"
msgid "Rule" msgid "Rule"
msgstr "" msgstr ""
#: src/renderer/components/+network-ingresses/ingress-details.tsx:85 #: src/renderer/components/+network-ingresses/ingress-details.tsx:105
#: src/renderer/components/+network-ingresses/ingresses.tsx:34 #: src/renderer/components/+network-ingresses/ingresses.tsx:34
#: src/renderer/components/+user-management-roles/role-details.tsx:25 #: src/renderer/components/+user-management-roles/role-details.tsx:25
msgid "Rules" msgid "Rules"
@ -2213,7 +2222,7 @@ msgstr "Селектор"
msgid "Server" msgid "Server"
msgstr "Сервер" msgstr "Сервер"
#: src/renderer/components/+network-ingresses/ingress-details.tsx:82 #: src/renderer/components/+network-ingresses/ingress-details.tsx:102
msgid "Service" msgid "Service"
msgstr "Service" msgstr "Service"
@ -2380,7 +2389,7 @@ msgstr ""
msgid "Suspend" msgid "Suspend"
msgstr "Заморозка" msgstr "Заморозка"
#: src/renderer/components/+network-ingresses/ingress-details.tsx:78 #: src/renderer/components/+network-ingresses/ingress-details.tsx:98
msgid "TLS" msgid "TLS"
msgstr "TLS" msgstr "TLS"

View File

@ -5,10 +5,11 @@
"version": "3.6.0-dev", "version": "3.6.0-dev",
"main": "static/build/main.js", "main": "static/build/main.js",
"copyright": "© 2020, Lakend Labs, Inc.", "copyright": "© 2020, Lakend Labs, Inc.",
"copyright": "© 2020, Mirantis, Inc.",
"license": "MIT", "license": "MIT",
"author": { "author": {
"name": "Lakend Labs, Inc.", "name": "Mirantis, Inc.",
"email": "info@lakendlabs.com" "email": "info@k8slens.dev"
}, },
"scripts": { "scripts": {
"dev": "concurrently -k \"yarn dev-run -C\" \"yarn dev:main\" \"yarn dev:renderer\"", "dev": "concurrently -k \"yarn dev-run -C\" \"yarn dev:main\" \"yarn dev:renderer\"",

View File

@ -22,7 +22,7 @@ export class Tracker extends Singleton {
} catch (error) { } catch (error) {
this.visitor = ua(Tracker.GA_ID) this.visitor = ua(Tracker.GA_ID)
} }
this.visitor.set("dl", "https://lensapptelemetry.lakendlabs.com") this.visitor.set("dl", "https://telemetry.k8slens.dev")
} }
protected async isTelemetryAllowed(): Promise<boolean> { protected async isTelemetryAllowed(): Promise<boolean> {

View File

@ -42,7 +42,7 @@ export function buildMenu(windowManager: WindowManager) {
`${appName}: ${app.getVersion()}`, `${appName}: ${app.getVersion()}`,
`Electron: ${process.versions.electron}`, `Electron: ${process.versions.electron}`,
`Chrome: ${process.versions.chrome}`, `Chrome: ${process.versions.chrome}`,
`Copyright 2020 Lakend Labs, Inc.`, `Copyright 2020 Copyright 2020 Mirantis, Inc.`,
] ]
dialog.showMessageBoxSync(browserWindow, { dialog.showMessageBoxSync(browserWindow, {
title: `${isWindows ? " ".repeat(2) : ""}${appName}`, title: `${isWindows ? " ".repeat(2) : ""}${appName}`,
@ -178,7 +178,7 @@ export function buildMenu(windowManager: WindowManager) {
{ {
label: "License", label: "License",
click: async () => { click: async () => {
shell.openExternal('https://lakendlabs.com/licenses/lens-eula.md'); shell.openExternal('https://k8slens.dev/licenses/eula.md');
}, },
}, },
{ {

View File

@ -130,9 +130,16 @@ export class CustomResourceDefinition extends KubeObject {
} }
} }
export const crdApi = new KubeApi<CustomResourceDefinition>({ export const crdBetaApi = new KubeApi<CustomResourceDefinition>({
kind: CustomResourceDefinition.kind, kind: CustomResourceDefinition.kind,
apiBase: "/apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions", apiBase: "/apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions",
isNamespaced: false, isNamespaced: false,
objectConstructor: CustomResourceDefinition, objectConstructor: CustomResourceDefinition,
}); });
export const crdApi = new KubeApi<CustomResourceDefinition>({
kind: CustomResourceDefinition.kind,
apiBase: "/apis/apiextensions.k8s.io/v1/customresourcedefinitions",
isNamespaced: false,
objectConstructor: CustomResourceDefinition,
});

View File

@ -98,7 +98,7 @@ export class EndpointSubset implements IEndpointSubset {
@autobind() @autobind()
export class Endpoint extends KubeObject { export class Endpoint extends KubeObject {
static kind = "Endpoint" static kind = "Endpoints"
subsets: IEndpointSubset[] subsets: IEndpointSubset[]

View File

@ -25,6 +25,10 @@ export interface IIngressMetrics<T = IMetrics> {
responseDurationSeconds: T; responseDurationSeconds: T;
} }
export interface ILoadBalancerIngress {
hostname?: string;
ip?: string;
}
@autobind() @autobind()
export class Ingress extends KubeObject { export class Ingress extends KubeObject {
static kind = "Ingress" static kind = "Ingress"
@ -52,7 +56,7 @@ export class Ingress extends KubeObject {
} }
status: { status: {
loadBalancer: { loadBalancer: {
ingress: any[]; ingress: ILoadBalancerIngress[];
}; };
} }

View File

@ -7,6 +7,17 @@ import { KubeApi } from "../../api/kube-api";
import { CRDResourceStore } from "./crd-resource.store"; import { CRDResourceStore } from "./crd-resource.store";
import { KubeObject } from "../../api/kube-object"; import { KubeObject } from "../../api/kube-object";
function initStore(crd: CustomResourceDefinition) {
const apiBase = crd.getResourceApiBase();
const kind = crd.getResourceKind();
const isNamespaced = crd.isNamespaced();
const api = apiManager.getApi(apiBase) || new KubeApi({ apiBase, kind, isNamespaced });
if (!apiManager.getStore(api)) {
apiManager.registerStore(api, new CRDResourceStore(api));
}
}
@autobind() @autobind()
export class CRDStore extends KubeObjectStore<CustomResourceDefinition> { export class CRDStore extends KubeObjectStore<CustomResourceDefinition> {
api = crdApi api = crdApi
@ -15,9 +26,7 @@ export class CRDStore extends KubeObjectStore<CustomResourceDefinition> {
super(); super();
// auto-init stores for crd-s // auto-init stores for crd-s
reaction(() => this.items.toJS(), items => { reaction(() => this.items.toJS(), items => items.forEach(initStore))
items.forEach(this.initStore);
})
} }
protected sortItems(items: CustomResourceDefinition[]) { protected sortItems(items: CustomResourceDefinition[]) {
@ -27,23 +36,6 @@ export class CRDStore extends KubeObjectStore<CustomResourceDefinition> {
]) ])
} }
protected initStore(crd: CustomResourceDefinition) {
const apiBase = crd.getResourceApiBase();
let api = apiManager.getApi(apiBase);
if (!api) {
api = new KubeApi({
apiBase: apiBase,
kind: crd.getResourceKind(),
isNamespaced: crd.isNamespaced(),
});
}
let store = apiManager.getStore(api);
if (!store) {
store = new CRDResourceStore(api);
apiManager.registerStore(api, store);
}
}
@computed get groups() { @computed get groups() {
const groups: Record<string, CustomResourceDefinition[]> = {}; const groups: Record<string, CustomResourceDefinition[]> = {};
return this.items.reduce((groups, crd) => { return this.items.reduce((groups, crd) => {
@ -63,9 +55,10 @@ export class CRDStore extends KubeObjectStore<CustomResourceDefinition> {
getByObject(obj: KubeObject) { getByObject(obj: KubeObject) {
if (!obj) return null if (!obj) return null
const { kind, apiVersion } = obj; const { kind, apiVersion } = obj;
return this.items.find(crd => {
return kind === crd.getResourceKind() && apiVersion === `${crd.getGroup()}/${crd.getVersion()}` return this.items.find(crd => (
}) kind === crd.getResourceKind() && apiVersion === `${crd.getGroup()}/${crd.getVersion()}`
))
} }
} }

View File

@ -5,7 +5,7 @@ import { disposeOnUnmount, observer } from "mobx-react";
import { reaction } from "mobx"; import { reaction } from "mobx";
import { Trans } from "@lingui/macro"; import { Trans } from "@lingui/macro";
import { DrawerItem, DrawerTitle } from "../drawer"; import { DrawerItem, DrawerTitle } from "../drawer";
import { Ingress, ingressApi } from "../../api/endpoints"; import { Ingress, ILoadBalancerIngress, ingressApi } from "../../api/endpoints";
import { Table, TableCell, TableHead, TableRow } from "../table"; import { Table, TableCell, TableHead, TableRow } from "../table";
import { KubeEventDetails } from "../+events/kube-event-details"; import { KubeEventDetails } from "../+events/kube-event-details";
import { ingressStore } from "./ingress.store"; import { ingressStore } from "./ingress.store";
@ -66,12 +66,35 @@ export class IngressDetails extends React.Component<Props> {
}) })
} }
renderIngressPoints(ingressPoints: ILoadBalancerIngress[]) {
if (ingressPoints.length === 0) return null
return (
<div>
<Table className="ingress-points">
<TableHead>
<TableCell className="name" ><Trans>Hostname</Trans></TableCell>
<TableCell className="ingresspoints"><Trans>IP</Trans></TableCell>
</TableHead>
{ingressPoints.map(({hostname, ip}, index) => {
return (
<TableRow key={index}>
<TableCell className="name">{hostname ? hostname : "-"}</TableCell>
<TableCell className="ingresspoints">{ip ? ip : "-"}</TableCell>
</TableRow>
)})
})
</Table>
</div>
)
}
render() { render() {
const { object: ingress } = this.props; const { object: ingress } = this.props;
if (!ingress) { if (!ingress) {
return null; return null;
} }
const { spec } = ingress; const { spec, status } = ingress;
const ingressPoints = status?.loadBalancer?.ingress
const { metrics } = ingressStore; const { metrics } = ingressStore;
const metricTabs = [ const metricTabs = [
<Trans>Network</Trans>, <Trans>Network</Trans>,
@ -102,6 +125,9 @@ export class IngressDetails extends React.Component<Props> {
<DrawerTitle title={<Trans>Rules</Trans>}/> <DrawerTitle title={<Trans>Rules</Trans>}/>
{this.renderPaths(ingress)} {this.renderPaths(ingress)}
<DrawerTitle title={<Trans>Load-Balancer Ingress Points</Trans>}/>
{this.renderIngressPoints(ingressPoints)}
<KubeEventDetails object={ingress}/> <KubeEventDetails object={ingress}/>
</div> </div>
) )

View File

@ -64,6 +64,7 @@ export class RoleBindingDetails extends React.Component<Props> {
} }
const name = roleBinding.getName(); const name = roleBinding.getName();
const { roleRef } = roleBinding; const { roleRef } = roleBinding;
const subjects = roleBinding.getSubjects();
return ( return (
<div className="RoleBindingDetails"> <div className="RoleBindingDetails">
<KubeObjectMeta object={roleBinding}/> <KubeObjectMeta object={roleBinding}/>
@ -83,31 +84,33 @@ export class RoleBindingDetails extends React.Component<Props> {
</Table> </Table>
<DrawerTitle title={<Trans>Bindings</Trans>}/> <DrawerTitle title={<Trans>Bindings</Trans>}/>
<Table selectable className="bindings box grow"> {subjects.length > 0 && (
<TableHead> <Table selectable className="bindings box grow">
<TableCell checkbox/> <TableHead>
<TableCell className="binding"><Trans>Binding</Trans></TableCell> <TableCell checkbox/>
<TableCell className="type"><Trans>Type</Trans></TableCell> <TableCell className="binding"><Trans>Binding</Trans></TableCell>
<TableCell className="type"><Trans>Namespace</Trans></TableCell> <TableCell className="type"><Trans>Type</Trans></TableCell>
</TableHead> <TableCell className="type"><Trans>Namespace</Trans></TableCell>
{ </TableHead>
roleBinding.getSubjects().map((subject, i) => { {
const { kind, name, namespace } = subject; subjects.map((subject, i) => {
const isSelected = selectedSubjects.includes(subject); const { kind, name, namespace } = subject;
return ( const isSelected = selectedSubjects.includes(subject);
<TableRow return (
key={i} selected={isSelected} <TableRow
onClick={prevDefault(() => this.selectSubject(subject))} key={i} selected={isSelected}
> onClick={prevDefault(() => this.selectSubject(subject))}
<TableCell checkbox isChecked={isSelected}/> >
<TableCell className="binding">{name}</TableCell> <TableCell checkbox isChecked={isSelected}/>
<TableCell className="type">{kind}</TableCell> <TableCell className="binding">{name}</TableCell>
<TableCell className="ns">{namespace || "-"}</TableCell> <TableCell className="type">{kind}</TableCell>
</TableRow> <TableCell className="ns">{namespace || "-"}</TableCell>
) </TableRow>
}) )
} })
</Table> }
</Table>
)}
<KubeEventDetails object={roleBinding}/> <KubeEventDetails object={roleBinding}/>

View File

@ -2,7 +2,7 @@
"name": "Dark (Lens)", "name": "Dark (Lens)",
"type": "dark", "type": "dark",
"description": "Original Lens dark theme", "description": "Original Lens dark theme",
"author": "Lakend Labs", "author": "Mirantis",
"colors": { "colors": {
"blue": "#3d90ce", "blue": "#3d90ce",
"magenta": "#c93dce", "magenta": "#c93dce",

View File

@ -2,7 +2,7 @@
"name": "Light (Lens)", "name": "Light (Lens)",
"type": "light", "type": "light",
"description": "Original Lens light theme", "description": "Original Lens light theme",
"author": "Lakend Labs", "author": "Mirantis",
"colors": { "colors": {
"blue": "#3d90ce", "blue": "#3d90ce",
"magenta": "#c93dce", "magenta": "#c93dce",

View File

@ -39,7 +39,7 @@ export default function (): webpack.Configuration {
extractComments: { extractComments: {
condition: "some", condition: "some",
banner: [ banner: [
`Lens - The Kubernetes IDE. Copyright ${new Date().getFullYear()} by Lakend Labs, Inc. All rights reserved.` `Lens - The Kubernetes IDE. Copyright ${new Date().getFullYear()} by Mirantis, Inc. All rights reserved.`
].join("\n") ].join("\n")
} }
}) })