1
0
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:
Sebastian Malton 2020-08-10 09:24:19 -04:00
parent 2af58cde72
commit 4dad9eec13
7 changed files with 119 additions and 149 deletions

View File

@ -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:95
#: src/renderer/components/resource-metrics/resource-metrics-text.tsx:13
#: src/renderer/components/+nodes/nodes.tsx:55
msgid "CPU"
msgstr "CPU"
@ -297,7 +296,10 @@ msgstr "CPU limits"
msgid "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/dock/info-panel.tsx:97
#: 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/nodes.tsx:115
#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:44
#: src/renderer/components/+nodes/nodes.tsx:71
msgid "Disk"
msgstr "Disk"
#: src/renderer/components/+preferences/preferences.tsx:171
msgid "Does not affect cluster communications!"
msgstr "Does not affect cluster communications!"
#: src/renderer/components/+nodes/nodes.tsx:71
msgid "Disk:"
msgstr "Disk:"
#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:89
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:96
#: src/renderer/components/resource-metrics/resource-metrics-text.tsx:18
#: src/renderer/components/+nodes/nodes.tsx:63
msgid "Memory"
msgstr "Memory"
@ -1167,6 +1167,10 @@ msgstr "Memory requests"
msgid "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/+events/event-details.tsx:30
#: src/renderer/components/+events/events.tsx:62
@ -2389,8 +2393,8 @@ msgid "and <0>{tailCount}</0> more"
msgstr "and <0>{tailCount}</0> more"
#: src/renderer/components/+nodes/nodes.tsx:55
msgid "cores"
msgstr "cores"
msgid "cores:"
msgstr "cores:"
#: src/renderer/components/+workloads-pods/pod-details-container.tsx:41
msgid "exit code"

View File

@ -274,7 +274,6 @@ msgstr ""
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:53
#: src/renderer/components/+workloads-pods/pod-details-list.tsx:95
#: src/renderer/components/resource-metrics/resource-metrics-text.tsx:13
#: src/renderer/components/+nodes/nodes.tsx:55
msgid "CPU"
msgstr ""
@ -297,7 +296,10 @@ msgstr ""
msgid "CPU requests"
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/dock/info-panel.tsx:97
#: src/renderer/components/wizard/wizard.tsx:130
@ -659,10 +661,13 @@ msgstr ""
#: src/renderer/components/+nodes/node-details.tsx:65
#: src/renderer/components/+nodes/nodes.tsx:115
#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:44
#: src/renderer/components/+nodes/nodes.tsx:71
msgid "Disk"
msgstr ""
#: src/renderer/components/+nodes/nodes.tsx:71
msgid "Disk:"
msgstr ""
#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:89
msgid "Domains"
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:96
#: src/renderer/components/resource-metrics/resource-metrics-text.tsx:18
#: src/renderer/components/+nodes/nodes.tsx:63
msgid "Memory"
msgstr ""
@ -1154,6 +1158,10 @@ msgstr ""
msgid "Memory usage"
msgstr ""
#: src/renderer/components/+nodes/nodes.tsx:63
msgid "Memory:"
msgstr ""
#: src/renderer/components/+cluster/cluster-issues.tsx:100
#: src/renderer/components/+events/event-details.tsx:30
#: src/renderer/components/+events/events.tsx:62
@ -2368,7 +2376,7 @@ msgid "and <0>{tailCount}</0> more"
msgstr ""
#: src/renderer/components/+nodes/nodes.tsx:55
msgid "cores"
msgid "cores:"
msgstr ""
#: src/renderer/components/+workloads-pods/pod-details-container.tsx:41

View File

@ -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:95
#: src/renderer/components/resource-metrics/resource-metrics-text.tsx:13
#: src/renderer/components/+nodes/nodes.tsx:55
msgid "CPU"
msgstr "Процессор"
@ -298,7 +297,10 @@ msgstr "Лимиты процессора"
msgid "CPU requests"
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/dock/info-panel.tsx:97
#: src/renderer/components/wizard/wizard.tsx:130
@ -664,13 +666,12 @@ msgstr "Нужный уровень реплик"
#: src/renderer/components/+nodes/node-details.tsx:65
#: src/renderer/components/+nodes/nodes.tsx:115
#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:44
#: src/renderer/components/+nodes/nodes.tsx:71
msgid "Disk"
msgstr "Диск"
#: src/renderer/components/+preferences/preferences.tsx:171
msgid "Does not affect cluster communications!"
msgstr ""
#: src/renderer/components/+nodes/nodes.tsx:71
msgid "Disk:"
msgstr "Диск:"
#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:89
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:96
#: src/renderer/components/resource-metrics/resource-metrics-text.tsx:18
#: src/renderer/components/+nodes/nodes.tsx:63
msgid "Memory"
msgstr "Память"
@ -1168,6 +1168,10 @@ msgstr "Запросы к памяти"
msgid "Memory usage"
msgstr "Использование памяти"
#: src/renderer/components/+nodes/nodes.tsx:63
msgid "Memory:"
msgstr "Память:"
#: src/renderer/components/+cluster/cluster-issues.tsx:100
#: src/renderer/components/+events/event-details.tsx:30
#: src/renderer/components/+events/events.tsx:62
@ -2390,8 +2394,8 @@ msgid "and <0>{tailCount}</0> more"
msgstr "и <0>{tailCount}</0> ещё"
#: src/renderer/components/+nodes/nodes.tsx:55
msgid "cores"
msgstr "ядер"
msgid "cores:"
msgstr "ядер:"
#: src/renderer/components/+workloads-pods/pod-details-container.tsx:41
msgid "exit code"

View File

@ -20,31 +20,16 @@ export class ApiManager {
getApi(pathOrCallback: string | ((api: KubeApi) => boolean)) {
if (typeof pathOrCallback === "string") {
const { apiBase } = KubeApi.parseApi(pathOrCallback);
const api = this.apis.get(pathOrCallback) || this.apis.get(apiBase);
if (!api) {
throw `"${apiBase}" is an unsupported kubernetes API`;
}
return api;
return this.apis.get(pathOrCallback) || this.apis.get(KubeApi.parseApi(pathOrCallback).apiBase);
}
return Array.from(this.apis.values()).find(pathOrCallback);
}
/**
* registerApi registers the provided api under its `apiBase` URL.
* @param api the KubeApi object to register
* @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
registerApi(apiBase: string, api: KubeApi) {
if (!this.apis.has(apiBase)) {
this.apis.set(apiBase, api);
}
this.apis.set(api.apiBase, api);
return true;
}
protected resolveApi(api: string | KubeApi): KubeApi {
@ -52,17 +37,13 @@ export class ApiManager {
return api;
}
/**
* unregisterApi removes the
* @param api the apiBase or KubeApi object to remove from the map
* @returns true if the item was removed, false if not present
*/
unregisterApi(api: string | KubeApi): boolean {
if (typeof api === "string") {
return this.apis.delete(api)
unregisterApi(api: string | KubeApi) {
if (typeof api === "string") this.apis.delete(api);
else {
const apis = Array.from(this.apis.entries());
const entry = apis.find(entry => entry[1] === api);
if (entry) this.unregisterApi(entry[0]);
}
return this.apis.delete(api.apiBase);
}
registerStore(api: KubeApi, store: KubeObjectStore) {
@ -73,7 +54,11 @@ export class ApiManager {
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) || {};
this.views.set(api, {
...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 {
return this.views.get(this.resolveApi(api)) || {}
}

View File

@ -123,25 +123,13 @@ const tests: KubeApi_Parse_Test[] = [
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", () => {
for (const { url, expected } of tests) {
test(`testing "${url}"`, () => {
expect(parseApi(url)).toStrictEqual(expected);
for (const i in tests) {
const { url: tUrl, expected:tExpect} = tests[i];
test(`test #${parseInt(i)+1}`, () => {
expect(parseApi(tUrl)).toStrictEqual(tExpect);
});
}
});

View File

@ -68,7 +68,7 @@ export class KubeApi<T extends KubeObject = any> {
this.objectConstructor = objectConstructor;
this.parseResponse = this.parseResponse.bind(this);
apiManager.registerApi(this);
apiManager.registerApi(apiBase, this);
}
setResourceVersion(namespace = "", newVersion: string) {

View File

@ -36,66 +36,66 @@ enum sortBy {
interface Props extends RouteComponentProps<INodesRouteParams> {
}
function renderCpuUsage(node: Node) {
const metrics = nodesStore.getLastMetricValues(node, ["cpuUsage", "cpuCapacity"]);
if (!metrics?.[1]) {
return <LineProgress value={0} />;
@observer
export class Nodes extends React.Component<Props> {
private metricsWatcher = interval(30, () => nodesStore.loadUsageMetrics());
componentDidMount() {
this.metricsWatcher.start(true);
}
const [usage, cores] = metrics;
const percentage = Math.ceil(usage * 100) / cores;
const CPUTrans = _i18n._(t`CPU`);
const CoreTrans = _i18n._(t`cores`);
return <LineProgress
max={cores}
value={usage}
tooltip={`${CPUTrans}: ${percentage.toPrecision(4)}%, ${CoreTrans}: ${cores}`}
/>;
}
function renderMemoryUsage(node: Node) {
const metrics = nodesStore.getLastMetricValues(node, ["memoryUsage", "memoryCapacity"]);
if (!metrics?.[1]) {
return <LineProgress value={0} />;
componentWillUnmount() {
this.metricsWatcher.stop();
}
const [usage, capacity] = metrics;
const percentage = Math.ceil(usage * 100 / capacity);
const MemoryTrans = _i18n._(t`Memory`);
return <LineProgress
max={capacity}
value={usage}
tooltip={`${MemoryTrans}: ${percentage.toPrecision(4)}%, ${bytesToUnits(usage, 3)}`}
/>;
}
function renderDiskUsage(node: Node): any {
const metrics = nodesStore.getLastMetricValues(node, ["fsUsage", "fsSize"]);
if (!metrics?.[1]) {
return <LineProgress value={0} />;
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}
value={usage}
tooltip={_i18n._(t`CPU:`) + ` ${Math.ceil(usage * 100) / cores}\%, ` + _i18n._(t`cores:`) + ` ${cores}`}
/>
)
}
const [usage, capacity] = metrics;
const percentage = Math.ceil(usage * 100 / capacity);
const DiskTrans = _i18n._(t`Disk`);
return <LineProgress
max={capacity}
value={usage}
tooltip={`${DiskTrans}: ${percentage.toPrecision(4)}%, ${bytesToUnits(usage, 3)}`}
/>;
}
function renderConditions(node: Node) {
if (!node.status.conditions) {
return null
renderMemoryUsage(node: Node) {
const metrics = nodesStore.getLastMetricValues(node, ["memoryUsage", "memoryCapacity"]);
if (!metrics || !metrics[1]) return <LineProgress value={0}/>;
const usage = metrics[0];
const capacity = metrics[1];
return (
<LineProgress
max={capacity}
value={usage}
tooltip={_i18n._(t`Memory:`) + ` ${Math.ceil(usage * 100 / capacity)}%, ${bytesToUnits(usage, 3)}`}
/>
)
}
return node
.getActiveConditions()
.map(condition => {
renderDiskUsage(node: Node): any {
const metrics = nodesStore.getLastMetricValues(node, ["fsUsage", "fsSize"]);
if (!metrics || !metrics[1]) return <LineProgress value={0}/>;
const usage = metrics[0];
const capacity = metrics[1];
return (
<LineProgress
max={capacity}
value={usage}
tooltip={_i18n._(t`Disk:`) + ` ${Math.ceil(usage * 100 / capacity)}%, ${bytesToUnits(usage, 3)}`}
/>
)
}
renderConditions(node: Node) {
if (!node.status.conditions) {
return null
}
const conditions = node.getActiveConditions();
return conditions.map(condition => {
const { type } = condition
const tooltipId = `node-${node.getName()}-condition-${type}`
return (
@ -113,18 +113,6 @@ function renderConditions(node: Node) {
</Tooltip>
</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() {
@ -132,8 +120,7 @@ export class Nodes extends React.Component<Props> {
<MainLayout>
<KubeObjectListLayout
className="Nodes"
store={nodesStore}
isClusterScoped
store={nodesStore} isClusterScoped
isReady={nodesStore.isLoaded && nodesStore.metricsLoaded}
dependentStores={[podsStore]}
isSelectable={false}
@ -170,9 +157,9 @@ export class Nodes extends React.Component<Props> {
const tooltipId = `node-taints-${node.getId()}`;
return [
node.getName(),
renderCpuUsage(node),
renderMemoryUsage(node),
renderDiskUsage(node),
this.renderCpuUsage(node),
this.renderMemoryUsage(node),
this.renderDiskUsage(node),
<>
<span id={tooltipId}>{node.getTaints().length}</span>
<Tooltip htmlFor={tooltipId} style={{ whiteSpace: "pre-line" }}>
@ -182,10 +169,12 @@ export class Nodes extends React.Component<Props> {
node.getRoleLabels(),
node.status.nodeInfo.kubeletVersion,
node.getAge(),
renderConditions(node),
this.renderConditions(node),
]
}}
renderItemMenu={(item: Node) => <NodeMenu object={item} />}
renderItemMenu={(item: Node) => {
return <NodeMenu object={item}/>
}}
/>
</MainLayout>
)