mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
remove refactoring
Signed-off-by: Sebastian Malton <smalton@mirantis.com>
This commit is contained in:
parent
2af58cde72
commit
4dad9eec13
@ -274,7 +274,6 @@ msgstr "CA Bundle"
|
|||||||
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:53
|
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:53
|
||||||
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:95
|
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:95
|
||||||
#: src/renderer/components/resource-metrics/resource-metrics-text.tsx:13
|
#: src/renderer/components/resource-metrics/resource-metrics-text.tsx:13
|
||||||
#: src/renderer/components/+nodes/nodes.tsx:55
|
|
||||||
msgid "CPU"
|
msgid "CPU"
|
||||||
msgstr "CPU"
|
msgstr "CPU"
|
||||||
|
|
||||||
@ -297,7 +296,10 @@ msgstr "CPU limits"
|
|||||||
msgid "CPU requests"
|
msgid "CPU requests"
|
||||||
msgstr "CPU requests"
|
msgstr "CPU requests"
|
||||||
|
|
||||||
#: src/renderer/components/+workspaces/workspaces.tsx:119
|
#: src/renderer/components/+nodes/nodes.tsx:55
|
||||||
|
msgid "CPU:"
|
||||||
|
msgstr "CPU:"
|
||||||
|
|
||||||
#: src/renderer/components/confirm-dialog/confirm-dialog.tsx:44
|
#: src/renderer/components/confirm-dialog/confirm-dialog.tsx:44
|
||||||
#: src/renderer/components/dock/info-panel.tsx:97
|
#: src/renderer/components/dock/info-panel.tsx:97
|
||||||
#: src/renderer/components/wizard/wizard.tsx:130
|
#: src/renderer/components/wizard/wizard.tsx:130
|
||||||
@ -663,13 +665,12 @@ msgstr "Desired number of replicas"
|
|||||||
#: src/renderer/components/+nodes/node-details.tsx:65
|
#: src/renderer/components/+nodes/node-details.tsx:65
|
||||||
#: src/renderer/components/+nodes/nodes.tsx:115
|
#: src/renderer/components/+nodes/nodes.tsx:115
|
||||||
#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:44
|
#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:44
|
||||||
#: src/renderer/components/+nodes/nodes.tsx:71
|
|
||||||
msgid "Disk"
|
msgid "Disk"
|
||||||
msgstr "Disk"
|
msgstr "Disk"
|
||||||
|
|
||||||
#: src/renderer/components/+preferences/preferences.tsx:171
|
#: src/renderer/components/+nodes/nodes.tsx:71
|
||||||
msgid "Does not affect cluster communications!"
|
msgid "Disk:"
|
||||||
msgstr "Does not affect cluster communications!"
|
msgstr "Disk:"
|
||||||
|
|
||||||
#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:89
|
#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:89
|
||||||
msgid "Domains"
|
msgid "Domains"
|
||||||
@ -1145,7 +1146,6 @@ msgstr "Medium"
|
|||||||
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:63
|
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:63
|
||||||
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:96
|
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:96
|
||||||
#: src/renderer/components/resource-metrics/resource-metrics-text.tsx:18
|
#: src/renderer/components/resource-metrics/resource-metrics-text.tsx:18
|
||||||
#: src/renderer/components/+nodes/nodes.tsx:63
|
|
||||||
msgid "Memory"
|
msgid "Memory"
|
||||||
msgstr "Memory"
|
msgstr "Memory"
|
||||||
|
|
||||||
@ -1167,6 +1167,10 @@ msgstr "Memory requests"
|
|||||||
msgid "Memory usage"
|
msgid "Memory usage"
|
||||||
msgstr "Memory usage"
|
msgstr "Memory usage"
|
||||||
|
|
||||||
|
#: src/renderer/components/+nodes/nodes.tsx:63
|
||||||
|
msgid "Memory:"
|
||||||
|
msgstr "Memory:"
|
||||||
|
|
||||||
#: src/renderer/components/+cluster/cluster-issues.tsx:100
|
#: src/renderer/components/+cluster/cluster-issues.tsx:100
|
||||||
#: src/renderer/components/+events/event-details.tsx:30
|
#: src/renderer/components/+events/event-details.tsx:30
|
||||||
#: src/renderer/components/+events/events.tsx:62
|
#: src/renderer/components/+events/events.tsx:62
|
||||||
@ -2389,8 +2393,8 @@ msgid "and <0>{tailCount}</0> more"
|
|||||||
msgstr "and <0>{tailCount}</0> more"
|
msgstr "and <0>{tailCount}</0> more"
|
||||||
|
|
||||||
#: src/renderer/components/+nodes/nodes.tsx:55
|
#: src/renderer/components/+nodes/nodes.tsx:55
|
||||||
msgid "cores"
|
msgid "cores:"
|
||||||
msgstr "cores"
|
msgstr "cores:"
|
||||||
|
|
||||||
#: src/renderer/components/+workloads-pods/pod-details-container.tsx:41
|
#: src/renderer/components/+workloads-pods/pod-details-container.tsx:41
|
||||||
msgid "exit code"
|
msgid "exit code"
|
||||||
|
|||||||
@ -274,7 +274,6 @@ msgstr ""
|
|||||||
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:53
|
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:53
|
||||||
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:95
|
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:95
|
||||||
#: src/renderer/components/resource-metrics/resource-metrics-text.tsx:13
|
#: src/renderer/components/resource-metrics/resource-metrics-text.tsx:13
|
||||||
#: src/renderer/components/+nodes/nodes.tsx:55
|
|
||||||
msgid "CPU"
|
msgid "CPU"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -297,7 +296,10 @@ msgstr ""
|
|||||||
msgid "CPU requests"
|
msgid "CPU requests"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/renderer/components/+workspaces/workspaces.tsx:119
|
#: src/renderer/components/+nodes/nodes.tsx:55
|
||||||
|
msgid "CPU:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/renderer/components/confirm-dialog/confirm-dialog.tsx:44
|
#: src/renderer/components/confirm-dialog/confirm-dialog.tsx:44
|
||||||
#: src/renderer/components/dock/info-panel.tsx:97
|
#: src/renderer/components/dock/info-panel.tsx:97
|
||||||
#: src/renderer/components/wizard/wizard.tsx:130
|
#: src/renderer/components/wizard/wizard.tsx:130
|
||||||
@ -659,10 +661,13 @@ msgstr ""
|
|||||||
#: src/renderer/components/+nodes/node-details.tsx:65
|
#: src/renderer/components/+nodes/node-details.tsx:65
|
||||||
#: src/renderer/components/+nodes/nodes.tsx:115
|
#: src/renderer/components/+nodes/nodes.tsx:115
|
||||||
#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:44
|
#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:44
|
||||||
#: src/renderer/components/+nodes/nodes.tsx:71
|
|
||||||
msgid "Disk"
|
msgid "Disk"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/renderer/components/+nodes/nodes.tsx:71
|
||||||
|
msgid "Disk:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:89
|
#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:89
|
||||||
msgid "Domains"
|
msgid "Domains"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1132,7 +1137,6 @@ msgstr ""
|
|||||||
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:63
|
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:63
|
||||||
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:96
|
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:96
|
||||||
#: src/renderer/components/resource-metrics/resource-metrics-text.tsx:18
|
#: src/renderer/components/resource-metrics/resource-metrics-text.tsx:18
|
||||||
#: src/renderer/components/+nodes/nodes.tsx:63
|
|
||||||
msgid "Memory"
|
msgid "Memory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1154,6 +1158,10 @@ msgstr ""
|
|||||||
msgid "Memory usage"
|
msgid "Memory usage"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/renderer/components/+nodes/nodes.tsx:63
|
||||||
|
msgid "Memory:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/renderer/components/+cluster/cluster-issues.tsx:100
|
#: src/renderer/components/+cluster/cluster-issues.tsx:100
|
||||||
#: src/renderer/components/+events/event-details.tsx:30
|
#: src/renderer/components/+events/event-details.tsx:30
|
||||||
#: src/renderer/components/+events/events.tsx:62
|
#: src/renderer/components/+events/events.tsx:62
|
||||||
@ -2368,7 +2376,7 @@ msgid "and <0>{tailCount}</0> more"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/renderer/components/+nodes/nodes.tsx:55
|
#: src/renderer/components/+nodes/nodes.tsx:55
|
||||||
msgid "cores"
|
msgid "cores:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/renderer/components/+workloads-pods/pod-details-container.tsx:41
|
#: src/renderer/components/+workloads-pods/pod-details-container.tsx:41
|
||||||
|
|||||||
@ -275,7 +275,6 @@ msgstr "CA Bundle"
|
|||||||
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:53
|
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:53
|
||||||
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:95
|
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:95
|
||||||
#: src/renderer/components/resource-metrics/resource-metrics-text.tsx:13
|
#: src/renderer/components/resource-metrics/resource-metrics-text.tsx:13
|
||||||
#: src/renderer/components/+nodes/nodes.tsx:55
|
|
||||||
msgid "CPU"
|
msgid "CPU"
|
||||||
msgstr "Процессор"
|
msgstr "Процессор"
|
||||||
|
|
||||||
@ -298,7 +297,10 @@ msgstr "Лимиты процессора"
|
|||||||
msgid "CPU requests"
|
msgid "CPU requests"
|
||||||
msgstr "Запросы к процессору"
|
msgstr "Запросы к процессору"
|
||||||
|
|
||||||
#: src/renderer/components/+workspaces/workspaces.tsx:119
|
#: src/renderer/components/+nodes/nodes.tsx:55
|
||||||
|
msgid "CPU:"
|
||||||
|
msgstr "CPU:"
|
||||||
|
|
||||||
#: src/renderer/components/confirm-dialog/confirm-dialog.tsx:44
|
#: src/renderer/components/confirm-dialog/confirm-dialog.tsx:44
|
||||||
#: src/renderer/components/dock/info-panel.tsx:97
|
#: src/renderer/components/dock/info-panel.tsx:97
|
||||||
#: src/renderer/components/wizard/wizard.tsx:130
|
#: src/renderer/components/wizard/wizard.tsx:130
|
||||||
@ -664,13 +666,12 @@ msgstr "Нужный уровень реплик"
|
|||||||
#: src/renderer/components/+nodes/node-details.tsx:65
|
#: src/renderer/components/+nodes/node-details.tsx:65
|
||||||
#: src/renderer/components/+nodes/nodes.tsx:115
|
#: src/renderer/components/+nodes/nodes.tsx:115
|
||||||
#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:44
|
#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:44
|
||||||
#: src/renderer/components/+nodes/nodes.tsx:71
|
|
||||||
msgid "Disk"
|
msgid "Disk"
|
||||||
msgstr "Диск"
|
msgstr "Диск"
|
||||||
|
|
||||||
#: src/renderer/components/+preferences/preferences.tsx:171
|
#: src/renderer/components/+nodes/nodes.tsx:71
|
||||||
msgid "Does not affect cluster communications!"
|
msgid "Disk:"
|
||||||
msgstr ""
|
msgstr "Диск:"
|
||||||
|
|
||||||
#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:89
|
#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:89
|
||||||
msgid "Domains"
|
msgid "Domains"
|
||||||
@ -1146,7 +1147,6 @@ msgstr ""
|
|||||||
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:63
|
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:63
|
||||||
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:96
|
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:96
|
||||||
#: src/renderer/components/resource-metrics/resource-metrics-text.tsx:18
|
#: src/renderer/components/resource-metrics/resource-metrics-text.tsx:18
|
||||||
#: src/renderer/components/+nodes/nodes.tsx:63
|
|
||||||
msgid "Memory"
|
msgid "Memory"
|
||||||
msgstr "Память"
|
msgstr "Память"
|
||||||
|
|
||||||
@ -1168,6 +1168,10 @@ msgstr "Запросы к памяти"
|
|||||||
msgid "Memory usage"
|
msgid "Memory usage"
|
||||||
msgstr "Использование памяти"
|
msgstr "Использование памяти"
|
||||||
|
|
||||||
|
#: src/renderer/components/+nodes/nodes.tsx:63
|
||||||
|
msgid "Memory:"
|
||||||
|
msgstr "Память:"
|
||||||
|
|
||||||
#: src/renderer/components/+cluster/cluster-issues.tsx:100
|
#: src/renderer/components/+cluster/cluster-issues.tsx:100
|
||||||
#: src/renderer/components/+events/event-details.tsx:30
|
#: src/renderer/components/+events/event-details.tsx:30
|
||||||
#: src/renderer/components/+events/events.tsx:62
|
#: src/renderer/components/+events/events.tsx:62
|
||||||
@ -2390,8 +2394,8 @@ msgid "and <0>{tailCount}</0> more"
|
|||||||
msgstr "и <0>{tailCount}</0> ещё"
|
msgstr "и <0>{tailCount}</0> ещё"
|
||||||
|
|
||||||
#: src/renderer/components/+nodes/nodes.tsx:55
|
#: src/renderer/components/+nodes/nodes.tsx:55
|
||||||
msgid "cores"
|
msgid "cores:"
|
||||||
msgstr "ядер"
|
msgstr "ядер:"
|
||||||
|
|
||||||
#: src/renderer/components/+workloads-pods/pod-details-container.tsx:41
|
#: src/renderer/components/+workloads-pods/pod-details-container.tsx:41
|
||||||
msgid "exit code"
|
msgid "exit code"
|
||||||
|
|||||||
@ -20,31 +20,16 @@ export class ApiManager {
|
|||||||
|
|
||||||
getApi(pathOrCallback: string | ((api: KubeApi) => boolean)) {
|
getApi(pathOrCallback: string | ((api: KubeApi) => boolean)) {
|
||||||
if (typeof pathOrCallback === "string") {
|
if (typeof pathOrCallback === "string") {
|
||||||
const { apiBase } = KubeApi.parseApi(pathOrCallback);
|
return this.apis.get(pathOrCallback) || this.apis.get(KubeApi.parseApi(pathOrCallback).apiBase);
|
||||||
const api = this.apis.get(pathOrCallback) || this.apis.get(apiBase);
|
|
||||||
if (!api) {
|
|
||||||
throw `"${apiBase}" is an unsupported kubernetes API`;
|
|
||||||
}
|
|
||||||
|
|
||||||
return api;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return Array.from(this.apis.values()).find(pathOrCallback);
|
return Array.from(this.apis.values()).find(pathOrCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
registerApi(apiBase: string, api: KubeApi) {
|
||||||
* registerApi registers the provided api under its `apiBase` URL.
|
if (!this.apis.has(apiBase)) {
|
||||||
* @param api the KubeApi object to register
|
this.apis.set(apiBase, api);
|
||||||
* @returns true if the KubeApi is a new entry, false if already
|
|
||||||
* present (and not updated)
|
|
||||||
*/
|
|
||||||
registerApi(api: KubeApi): boolean {
|
|
||||||
if (this.apis.has(api.apiBase)) {
|
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.apis.set(api.apiBase, api);
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected resolveApi(api: string | KubeApi): KubeApi {
|
protected resolveApi(api: string | KubeApi): KubeApi {
|
||||||
@ -52,17 +37,13 @@ export class ApiManager {
|
|||||||
return api;
|
return api;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
unregisterApi(api: string | KubeApi) {
|
||||||
* unregisterApi removes the
|
if (typeof api === "string") this.apis.delete(api);
|
||||||
* @param api the apiBase or KubeApi object to remove from the map
|
else {
|
||||||
* @returns true if the item was removed, false if not present
|
const apis = Array.from(this.apis.entries());
|
||||||
*/
|
const entry = apis.find(entry => entry[1] === api);
|
||||||
unregisterApi(api: string | KubeApi): boolean {
|
if (entry) this.unregisterApi(entry[0]);
|
||||||
if (typeof api === "string") {
|
|
||||||
return this.apis.delete(api)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.apis.delete(api.apiBase);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
registerStore(api: KubeApi, store: KubeObjectStore) {
|
registerStore(api: KubeApi, store: KubeObjectStore) {
|
||||||
@ -73,7 +54,11 @@ export class ApiManager {
|
|||||||
return this.stores.get(this.resolveApi(api));
|
return this.stores.get(this.resolveApi(api));
|
||||||
}
|
}
|
||||||
|
|
||||||
private registerViewsForApi(api: KubeApi, views: ApiComponents) {
|
registerViews(api: KubeApi | KubeApi[], views: ApiComponents) {
|
||||||
|
if (Array.isArray(api)) {
|
||||||
|
api.forEach(api => this.registerViews(api, views));
|
||||||
|
return;
|
||||||
|
}
|
||||||
const currentViews = this.views.get(api) || {};
|
const currentViews = this.views.get(api) || {};
|
||||||
this.views.set(api, {
|
this.views.set(api, {
|
||||||
...currentViews,
|
...currentViews,
|
||||||
@ -81,14 +66,6 @@ export class ApiManager {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
registerViews(api: KubeApi | KubeApi[], views: ApiComponents) {
|
|
||||||
if (Array.isArray(api)) {
|
|
||||||
api.forEach(api => this.registerViewsForApi(api, views));
|
|
||||||
} else {
|
|
||||||
this.registerViewsForApi(api, views);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
getViews(api: string | KubeApi): ApiComponents {
|
getViews(api: string | KubeApi): ApiComponents {
|
||||||
return this.views.get(this.resolveApi(api)) || {}
|
return this.views.get(this.resolveApi(api)) || {}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -123,25 +123,13 @@ const tests: KubeApi_Parse_Test[] = [
|
|||||||
namespace: undefined,
|
namespace: undefined,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
|
||||||
url: "/apis/apiextensions.k8s.io/v1/customresourcedefinitions/workspaceroles.iam.kubesphere.io",
|
|
||||||
expected: {
|
|
||||||
apiBase: "/apis/apiextensions.k8s.io/v1/customresourcedefinitions",
|
|
||||||
apiPrefix: "/apis",
|
|
||||||
apiGroup: "apiextensions.k8s.io",
|
|
||||||
apiVersion: "v1",
|
|
||||||
apiVersionWithGroup: "apiextensions.k8s.io/v1",
|
|
||||||
resource: "customresourcedefinitions",
|
|
||||||
name: "workspaceroles.iam.kubesphere.io",
|
|
||||||
namespace: undefined,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
];
|
];
|
||||||
|
|
||||||
describe.only("parseApi unit tests", () => {
|
describe.only("parseApi unit tests", () => {
|
||||||
for (const { url, expected } of tests) {
|
for (const i in tests) {
|
||||||
test(`testing "${url}"`, () => {
|
const { url: tUrl, expected:tExpect} = tests[i];
|
||||||
expect(parseApi(url)).toStrictEqual(expected);
|
test(`test #${parseInt(i)+1}`, () => {
|
||||||
|
expect(parseApi(tUrl)).toStrictEqual(tExpect);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@ -68,7 +68,7 @@ export class KubeApi<T extends KubeObject = any> {
|
|||||||
this.objectConstructor = objectConstructor;
|
this.objectConstructor = objectConstructor;
|
||||||
|
|
||||||
this.parseResponse = this.parseResponse.bind(this);
|
this.parseResponse = this.parseResponse.bind(this);
|
||||||
apiManager.registerApi(this);
|
apiManager.registerApi(apiBase, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
setResourceVersion(namespace = "", newVersion: string) {
|
setResourceVersion(namespace = "", newVersion: string) {
|
||||||
|
|||||||
@ -36,66 +36,66 @@ enum sortBy {
|
|||||||
interface Props extends RouteComponentProps<INodesRouteParams> {
|
interface Props extends RouteComponentProps<INodesRouteParams> {
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderCpuUsage(node: Node) {
|
@observer
|
||||||
const metrics = nodesStore.getLastMetricValues(node, ["cpuUsage", "cpuCapacity"]);
|
export class Nodes extends React.Component<Props> {
|
||||||
if (!metrics?.[1]) {
|
private metricsWatcher = interval(30, () => nodesStore.loadUsageMetrics());
|
||||||
return <LineProgress value={0} />;
|
|
||||||
|
componentDidMount() {
|
||||||
|
this.metricsWatcher.start(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
const [usage, cores] = metrics;
|
componentWillUnmount() {
|
||||||
const percentage = Math.ceil(usage * 100) / cores;
|
this.metricsWatcher.stop();
|
||||||
const CPUTrans = _i18n._(t`CPU`);
|
}
|
||||||
const CoreTrans = _i18n._(t`cores`);
|
|
||||||
|
|
||||||
return <LineProgress
|
renderCpuUsage(node: Node) {
|
||||||
|
const metrics = nodesStore.getLastMetricValues(node, ["cpuUsage", "cpuCapacity"]);
|
||||||
|
if (!metrics || !metrics[1]) return <LineProgress value={0}/>;
|
||||||
|
const usage = metrics[0];
|
||||||
|
const cores = metrics[1];
|
||||||
|
return (
|
||||||
|
<LineProgress
|
||||||
max={cores}
|
max={cores}
|
||||||
value={usage}
|
value={usage}
|
||||||
tooltip={`${CPUTrans}: ${percentage.toPrecision(4)}%, ${CoreTrans}: ${cores}`}
|
tooltip={_i18n._(t`CPU:`) + ` ${Math.ceil(usage * 100) / cores}\%, ` + _i18n._(t`cores:`) + ` ${cores}`}
|
||||||
/>;
|
/>
|
||||||
}
|
)
|
||||||
|
}
|
||||||
|
|
||||||
function renderMemoryUsage(node: Node) {
|
renderMemoryUsage(node: Node) {
|
||||||
const metrics = nodesStore.getLastMetricValues(node, ["memoryUsage", "memoryCapacity"]);
|
const metrics = nodesStore.getLastMetricValues(node, ["memoryUsage", "memoryCapacity"]);
|
||||||
if (!metrics?.[1]) {
|
if (!metrics || !metrics[1]) return <LineProgress value={0}/>;
|
||||||
return <LineProgress value={0} />;
|
const usage = metrics[0];
|
||||||
}
|
const capacity = metrics[1];
|
||||||
|
return (
|
||||||
const [usage, capacity] = metrics;
|
<LineProgress
|
||||||
const percentage = Math.ceil(usage * 100 / capacity);
|
|
||||||
const MemoryTrans = _i18n._(t`Memory`);
|
|
||||||
|
|
||||||
return <LineProgress
|
|
||||||
max={capacity}
|
max={capacity}
|
||||||
value={usage}
|
value={usage}
|
||||||
tooltip={`${MemoryTrans}: ${percentage.toPrecision(4)}%, ${bytesToUnits(usage, 3)}`}
|
tooltip={_i18n._(t`Memory:`) + ` ${Math.ceil(usage * 100 / capacity)}%, ${bytesToUnits(usage, 3)}`}
|
||||||
/>;
|
/>
|
||||||
}
|
)
|
||||||
|
}
|
||||||
|
|
||||||
function renderDiskUsage(node: Node): any {
|
renderDiskUsage(node: Node): any {
|
||||||
const metrics = nodesStore.getLastMetricValues(node, ["fsUsage", "fsSize"]);
|
const metrics = nodesStore.getLastMetricValues(node, ["fsUsage", "fsSize"]);
|
||||||
if (!metrics?.[1]) {
|
if (!metrics || !metrics[1]) return <LineProgress value={0}/>;
|
||||||
return <LineProgress value={0} />;
|
const usage = metrics[0];
|
||||||
}
|
const capacity = metrics[1];
|
||||||
|
return (
|
||||||
const [usage, capacity] = metrics;
|
<LineProgress
|
||||||
const percentage = Math.ceil(usage * 100 / capacity);
|
|
||||||
const DiskTrans = _i18n._(t`Disk`);
|
|
||||||
|
|
||||||
return <LineProgress
|
|
||||||
max={capacity}
|
max={capacity}
|
||||||
value={usage}
|
value={usage}
|
||||||
tooltip={`${DiskTrans}: ${percentage.toPrecision(4)}%, ${bytesToUnits(usage, 3)}`}
|
tooltip={_i18n._(t`Disk:`) + ` ${Math.ceil(usage * 100 / capacity)}%, ${bytesToUnits(usage, 3)}`}
|
||||||
/>;
|
/>
|
||||||
}
|
)
|
||||||
|
}
|
||||||
|
|
||||||
function renderConditions(node: Node) {
|
renderConditions(node: Node) {
|
||||||
if (!node.status.conditions) {
|
if (!node.status.conditions) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
const conditions = node.getActiveConditions();
|
||||||
return node
|
return conditions.map(condition => {
|
||||||
.getActiveConditions()
|
|
||||||
.map(condition => {
|
|
||||||
const { type } = condition
|
const { type } = condition
|
||||||
const tooltipId = `node-${node.getName()}-condition-${type}`
|
const tooltipId = `node-${node.getName()}-condition-${type}`
|
||||||
return (
|
return (
|
||||||
@ -113,18 +113,6 @@ function renderConditions(node: Node) {
|
|||||||
</Tooltip>
|
</Tooltip>
|
||||||
</div>)
|
</div>)
|
||||||
})
|
})
|
||||||
}
|
|
||||||
|
|
||||||
@observer
|
|
||||||
export class Nodes extends React.Component<Props> {
|
|
||||||
private metricsWatcher = interval(30, () => nodesStore.loadUsageMetrics());
|
|
||||||
|
|
||||||
componentDidMount() {
|
|
||||||
this.metricsWatcher.start(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
componentWillUnmount() {
|
|
||||||
this.metricsWatcher.stop();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
@ -132,8 +120,7 @@ export class Nodes extends React.Component<Props> {
|
|||||||
<MainLayout>
|
<MainLayout>
|
||||||
<KubeObjectListLayout
|
<KubeObjectListLayout
|
||||||
className="Nodes"
|
className="Nodes"
|
||||||
store={nodesStore}
|
store={nodesStore} isClusterScoped
|
||||||
isClusterScoped
|
|
||||||
isReady={nodesStore.isLoaded && nodesStore.metricsLoaded}
|
isReady={nodesStore.isLoaded && nodesStore.metricsLoaded}
|
||||||
dependentStores={[podsStore]}
|
dependentStores={[podsStore]}
|
||||||
isSelectable={false}
|
isSelectable={false}
|
||||||
@ -170,9 +157,9 @@ export class Nodes extends React.Component<Props> {
|
|||||||
const tooltipId = `node-taints-${node.getId()}`;
|
const tooltipId = `node-taints-${node.getId()}`;
|
||||||
return [
|
return [
|
||||||
node.getName(),
|
node.getName(),
|
||||||
renderCpuUsage(node),
|
this.renderCpuUsage(node),
|
||||||
renderMemoryUsage(node),
|
this.renderMemoryUsage(node),
|
||||||
renderDiskUsage(node),
|
this.renderDiskUsage(node),
|
||||||
<>
|
<>
|
||||||
<span id={tooltipId}>{node.getTaints().length}</span>
|
<span id={tooltipId}>{node.getTaints().length}</span>
|
||||||
<Tooltip htmlFor={tooltipId} style={{ whiteSpace: "pre-line" }}>
|
<Tooltip htmlFor={tooltipId} style={{ whiteSpace: "pre-line" }}>
|
||||||
@ -182,10 +169,12 @@ export class Nodes extends React.Component<Props> {
|
|||||||
node.getRoleLabels(),
|
node.getRoleLabels(),
|
||||||
node.status.nodeInfo.kubeletVersion,
|
node.status.nodeInfo.kubeletVersion,
|
||||||
node.getAge(),
|
node.getAge(),
|
||||||
renderConditions(node),
|
this.renderConditions(node),
|
||||||
]
|
]
|
||||||
}}
|
}}
|
||||||
renderItemMenu={(item: Node) => <NodeMenu object={item} />}
|
renderItemMenu={(item: Node) => {
|
||||||
|
return <NodeMenu object={item}/>
|
||||||
|
}}
|
||||||
/>
|
/>
|
||||||
</MainLayout>
|
</MainLayout>
|
||||||
)
|
)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user