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:
commit
fa4407b02e
2
LICENSE
2
LICENSE
@ -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.
|
||||||
|
|
||||||
|
|||||||
@ -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"
|
||||||
|
|
||||||
|
|||||||
@ -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 ""
|
||||||
|
|
||||||
|
|||||||
@ -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"
|
||||||
|
|
||||||
|
|||||||
@ -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\"",
|
||||||
|
|||||||
@ -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> {
|
||||||
|
|||||||
@ -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');
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@ -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,
|
||||||
|
});
|
||||||
|
|||||||
@ -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[]
|
||||||
|
|
||||||
|
|||||||
@ -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[];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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()}`
|
||||||
|
))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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>
|
||||||
)
|
)
|
||||||
|
|||||||
@ -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}/>
|
||||||
|
|
||||||
|
|||||||
@ -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",
|
||||||
@ -103,4 +103,4 @@
|
|||||||
"radioActiveBackground": "#36393e",
|
"radioActiveBackground": "#36393e",
|
||||||
"menuActiveBackground": "#36393e"
|
"menuActiveBackground": "#36393e"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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",
|
||||||
@ -104,4 +104,4 @@
|
|||||||
"radioActiveBackground": "#f1f1f1",
|
"radioActiveBackground": "#f1f1f1",
|
||||||
"menuActiveBackground": "#e8e8e8"
|
"menuActiveBackground": "#e8e8e8"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user