From 44cd7df329be28186c71a59de470e1fcf6d52a46 Mon Sep 17 00:00:00 2001 From: aabhinavvvvvvv Date: Fri, 15 May 2026 19:44:41 +0000 Subject: [PATCH] frontend: nodes: Add disk/storage column to nodes list view --- frontend/src/components/node/Charts.test.tsx | 105 +++++ frontend/src/components/node/Charts.tsx | 45 +- frontend/src/components/node/List.tsx | 16 +- .../List.Nodes.stories.storyshot | 63 ++- frontend/src/i18n/locales/ar/glossary.json | 2 +- frontend/src/i18n/locales/ar/translation.json | 2 + frontend/src/i18n/locales/de/glossary.json | 2 +- frontend/src/i18n/locales/de/translation.json | 2 + frontend/src/i18n/locales/en/glossary.json | 2 +- frontend/src/i18n/locales/en/translation.json | 2 + frontend/src/i18n/locales/es/glossary.json | 2 +- frontend/src/i18n/locales/es/translation.json | 2 + frontend/src/i18n/locales/fr/glossary.json | 2 +- frontend/src/i18n/locales/fr/translation.json | 2 + frontend/src/i18n/locales/he/glossary.json | 2 +- frontend/src/i18n/locales/he/translation.json | 2 + frontend/src/i18n/locales/hi/glossary.json | 2 +- frontend/src/i18n/locales/hi/translation.json | 418 +++++++++--------- frontend/src/i18n/locales/it/glossary.json | 2 +- frontend/src/i18n/locales/it/translation.json | 2 + frontend/src/i18n/locales/ja/glossary.json | 2 +- frontend/src/i18n/locales/ja/translation.json | 2 + frontend/src/i18n/locales/ko/glossary.json | 2 +- frontend/src/i18n/locales/ko/translation.json | 2 + frontend/src/i18n/locales/pt/glossary.json | 2 +- frontend/src/i18n/locales/pt/translation.json | 2 + frontend/src/i18n/locales/ru/glossary.json | 2 +- frontend/src/i18n/locales/ru/translation.json | 2 + frontend/src/i18n/locales/ta/glossary.json | 2 +- frontend/src/i18n/locales/ta/translation.json | 2 + frontend/src/i18n/locales/ur/glossary.json | 2 +- frontend/src/i18n/locales/ur/translation.json | 2 + frontend/src/i18n/locales/zh-tw/glossary.json | 2 +- .../src/i18n/locales/zh-tw/translation.json | 2 + frontend/src/i18n/locales/zh/glossary.json | 2 +- frontend/src/i18n/locales/zh/translation.json | 2 + frontend/src/lib/units.ts | 4 + .../plugin/__snapshots__/pluginLib.snapshot | 1 + 38 files changed, 487 insertions(+), 227 deletions(-) create mode 100644 frontend/src/components/node/Charts.test.tsx diff --git a/frontend/src/components/node/Charts.test.tsx b/frontend/src/components/node/Charts.test.tsx new file mode 100644 index 00000000000..a51b8003ff8 --- /dev/null +++ b/frontend/src/components/node/Charts.test.tsx @@ -0,0 +1,105 @@ +/* + * Copyright 2025 The Kubernetes Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { render } from '@testing-library/react'; +import { describe, expect, it, vi } from 'vitest'; +import { parseDiskSpace } from '../../lib/units'; +import { TestContext } from '../../test'; +import { StorageBarChart } from './Charts'; + +vi.mock('react-i18next', () => ({ + useTranslation: () => ({ + t: (key: string) => key.replace(/^.*\|/, ''), + i18n: { language: 'en' }, + }), +})); + +const capturedProps: any[] = []; +vi.mock('../common/Chart', () => ({ + PercentageBar: (props: any) => { + capturedProps.push(props); + return
; + }, +})); + +function makeNode(capacity: string, allocatable: string): any { + return { + status: { + capacity: { 'ephemeral-storage': capacity }, + allocatable: { 'ephemeral-storage': allocatable }, + }, + }; +} + +describe('StorageBarChart', () => { + it('passes correct allocatable value and capacity total to PercentageBar', () => { + capturedProps.length = 0; + const node = makeNode('100Gi', '90Gi'); + render( + + + + ); + expect(capturedProps).toHaveLength(1); + expect(capturedProps[0].data[0].value).toBe(parseDiskSpace('90Gi')); + expect(capturedProps[0].total).toBe(parseDiskSpace('100Gi')); + }); + + it('skips rendering PercentageBar when capacity is zero', () => { + capturedProps.length = 0; + const node = makeNode('0', '0'); + render( + + + + ); + expect(capturedProps).toHaveLength(0); + }); + + it('falls back to camelCase ephemeralStorage key', () => { + capturedProps.length = 0; + const node = { + status: { + capacity: { ephemeralStorage: '50Gi' }, + allocatable: { ephemeralStorage: '45Gi' }, + }, + } as any; + render( + + + + ); + expect(capturedProps).toHaveLength(1); + expect(capturedProps[0].data[0].value).toBe(parseDiskSpace('45Gi')); + expect(capturedProps[0].total).toBe(parseDiskSpace('50Gi')); + }); + + it('tooltip shows allocatable, capacity and percentage', () => { + capturedProps.length = 0; + const node = makeNode('100Gi', '90Gi'); + render( + + + + ); + expect(capturedProps).toHaveLength(1); + const tooltip = render({capturedProps[0].tooltipFunc()}); + const text = tooltip.container.textContent ?? ''; + expect(text).toContain('Allocatable'); + expect(text).toContain('Capacity'); + expect(text).toContain('%'); + }); +}); diff --git a/frontend/src/components/node/Charts.tsx b/frontend/src/components/node/Charts.tsx index 0dd79bf1052..abcaf9807c4 100644 --- a/frontend/src/components/node/Charts.tsx +++ b/frontend/src/components/node/Charts.tsx @@ -19,6 +19,7 @@ import React from 'react'; import { useTranslation } from 'react-i18next'; import { KubeMetrics } from '../../lib/k8s/cluster'; import Node from '../../lib/k8s/node'; +import { parseDiskSpace, unparseDiskSpace } from '../../lib/units'; import { getPercentStr, getResourceMetrics, getResourceStr } from '../../lib/util'; import { PercentageBar } from '../common/Chart'; import { TooltipIcon } from '../common/Tooltip'; @@ -41,7 +42,7 @@ export function UsageBarChart(props: UsageBarChartProps) { const data = [ { - name: t('used'), + name: t('translation|used'), value: used, }, ]; @@ -64,3 +65,45 @@ export function UsageBarChart(props: UsageBarChartProps) { ); } + +interface StorageBarChartProps { + node: Node; +} + +export function StorageBarChart(props: StorageBarChartProps) { + const { node } = props; + const { t } = useTranslation(['glossary', 'translation']); + + const cap = node.status?.capacity as Record | undefined; + const alloc = node.status?.allocatable as Record | undefined; + const capacityRaw = cap?.['ephemeral-storage'] ?? cap?.ephemeralStorage ?? '0'; + const allocatableRaw = alloc?.['ephemeral-storage'] ?? alloc?.ephemeralStorage ?? '0'; + const capacity = parseDiskSpace(capacityRaw); + const allocatable = parseDiskSpace(allocatableRaw); + + if (capacity === 0) { + return null; + } + + const capacityInfo = unparseDiskSpace(capacity); + const allocatableInfo = unparseDiskSpace(allocatable); + + const data = [ + { + name: t('translation|Allocatable'), + value: allocatable, + }, + ]; + + function tooltipFunc() { + return ( + + {t('translation|Allocatable')}: {allocatableInfo.value} + {allocatableInfo.unit} / {t('glossary|Capacity')}: {capacityInfo.value} + {capacityInfo.unit} ({getPercentStr(allocatable, capacity)}) + + ); + } + + return ; +} diff --git a/frontend/src/components/node/List.tsx b/frontend/src/components/node/List.tsx index 93deb7d6ec6..67f3a5d2828 100644 --- a/frontend/src/components/node/List.tsx +++ b/frontend/src/components/node/List.tsx @@ -16,10 +16,11 @@ import { useTranslation } from 'react-i18next'; import Node from '../../lib/k8s/node'; +import { parseDiskSpace } from '../../lib/units'; import { getResourceMetrics } from '../../lib/util'; import { HoverInfoLabel } from '../common/Label'; import ResourceListView from '../common/Resource/ResourceListView'; -import { UsageBarChart } from './Charts'; +import { StorageBarChart, UsageBarChart } from './Charts'; import { NodeReadyLabel } from './Details'; import { formatTaint, NodeTaintsLabel } from './utils'; @@ -74,6 +75,19 @@ export default function NodeList() { /> ), }, + { + id: 'disk', + label: t('translation|Disk'), + disableFiltering: true, + getValue: node => { + const alloc = node.status?.allocatable as + | Record + | undefined; + const raw = alloc?.['ephemeral-storage'] ?? alloc?.ephemeralStorage ?? '0'; + return parseDiskSpace(raw); + }, + render: node => , + }, { id: 'ready', label: t('translation|Ready'), diff --git a/frontend/src/components/node/__snapshots__/List.Nodes.stories.storyshot b/frontend/src/components/node/__snapshots__/List.Nodes.stories.storyshot index 1bf07e85a21..126fbaac44d 100644 --- a/frontend/src/components/node/__snapshots__/List.Nodes.stories.storyshot +++ b/frontend/src/components/node/__snapshots__/List.Nodes.stories.storyshot @@ -172,7 +172,7 @@
+ +
+
+ +
+
+
+ @@ -985,6 +1043,9 @@ style="width: 95%; height: 20px; min-width: 0;" /> diff --git a/frontend/src/i18n/locales/ar/glossary.json b/frontend/src/i18n/locales/ar/glossary.json index 966018534bd..846d3bda176 100644 --- a/frontend/src/i18n/locales/ar/glossary.json +++ b/frontend/src/i18n/locales/ar/glossary.json @@ -118,6 +118,7 @@ "except: {{ cidrExceptions }}": "باستثناء: {{ cidrExceptions }}", "Pod Selector": "محدد الـ Pod", "Network Policies": "سياسات الشبكة", + "Capacity": "السعة", "Uncordoning node {{name}}…": "إلغاء عزل العقدة {{name}}…", "Cordoning node {{name}}…": "عزل العقدة {{name}}…", "Uncordoned node {{name}}.": "تم إلغاء عزل العقدة {{name}}.", @@ -235,7 +236,6 @@ "Git Tree State": "حالة شجرة Git", "Go Version": "إصدار Go", "Platform": "المنصة", - "Capacity": "السعة", "Access Modes": "أنماط الوصول", "Volume Mode": "وضع التخزين", "Storage Class": "فئة التخزين", diff --git a/frontend/src/i18n/locales/ar/translation.json b/frontend/src/i18n/locales/ar/translation.json index 655be167515..49ad18d1805 100644 --- a/frontend/src/i18n/locales/ar/translation.json +++ b/frontend/src/i18n/locales/ar/translation.json @@ -691,10 +691,12 @@ "Create Namespace": "إنشاء نطاق", "To": "إلى", "used": "مستخدم", + "Allocatable": "", "Scheduling Disabled": "تم تعطيل الجدولة", "Scheduling Enabled": "تم تفعيل الجدولة", "Taints": "الملوثات", "Not ready yet!": "غير جاهز بعد", + "Disk": "", "Internal IP": "عنوان IP الداخلي", "None": "لا شيء", "Software": "البرمجيات", diff --git a/frontend/src/i18n/locales/de/glossary.json b/frontend/src/i18n/locales/de/glossary.json index 65fb55fb591..19610ba5669 100644 --- a/frontend/src/i18n/locales/de/glossary.json +++ b/frontend/src/i18n/locales/de/glossary.json @@ -118,6 +118,7 @@ "except: {{ cidrExceptions }}": "außer: {{ cidrExceptions }}", "Pod Selector": "Pod-Auswahl", "Network Policies": "Netzwerkrichtlinien", + "Capacity": "Kapazität", "Uncordoning node {{name}}…": "Aufhebung der Planungssperre für Node {{name}}…", "Cordoning node {{name}}…": "Node {{name}} wird für die Planung gesperrt…", "Uncordoned node {{name}}.": "Planungssperre für Node {{name}} wurde aufgehoben.", @@ -235,7 +236,6 @@ "Git Tree State": "Git-Tree-Status", "Go Version": "Go Version", "Platform": "Plattform", - "Capacity": "Kapazität", "Access Modes": "Zugriffsmodi", "Volume Mode": "Speichervolume-Modus", "Storage Class": "Speicher-Klasse", diff --git a/frontend/src/i18n/locales/de/translation.json b/frontend/src/i18n/locales/de/translation.json index e62558ff9ad..e08a8a37cb7 100644 --- a/frontend/src/i18n/locales/de/translation.json +++ b/frontend/src/i18n/locales/de/translation.json @@ -671,10 +671,12 @@ "Create Namespace": "", "To": "An", "used": "benutzt", + "Allocatable": "", "Scheduling Disabled": "Planung deaktiviert", "Scheduling Enabled": "Planung aktiviert", "Taints": "", "Not ready yet!": "Noch nicht fertig!", + "Disk": "", "Internal IP": "Interne IP", "None": "", "Software": "Software", diff --git a/frontend/src/i18n/locales/en/glossary.json b/frontend/src/i18n/locales/en/glossary.json index 18ab36c7c20..75919b09bbd 100644 --- a/frontend/src/i18n/locales/en/glossary.json +++ b/frontend/src/i18n/locales/en/glossary.json @@ -118,6 +118,7 @@ "except: {{ cidrExceptions }}": "except: {{ cidrExceptions }}", "Pod Selector": "Pod Selector", "Network Policies": "Network Policies", + "Capacity": "Capacity", "Uncordoning node {{name}}…": "Uncordoning node {{name}}…", "Cordoning node {{name}}…": "Cordoning node {{name}}…", "Uncordoned node {{name}}.": "Uncordoned node {{name}}.", @@ -235,7 +236,6 @@ "Git Tree State": "Git Tree State", "Go Version": "Go Version", "Platform": "Platform", - "Capacity": "Capacity", "Access Modes": "Access Modes", "Volume Mode": "Volume Mode", "Storage Class": "Storage Class", diff --git a/frontend/src/i18n/locales/en/translation.json b/frontend/src/i18n/locales/en/translation.json index a76fe7c1a6b..6d99f0068e1 100644 --- a/frontend/src/i18n/locales/en/translation.json +++ b/frontend/src/i18n/locales/en/translation.json @@ -671,10 +671,12 @@ "Create Namespace": "Create Namespace", "To": "To", "used": "used", + "Allocatable": "Allocatable", "Scheduling Disabled": "Scheduling Disabled", "Scheduling Enabled": "Scheduling Enabled", "Taints": "Taints", "Not ready yet!": "Not ready yet!", + "Disk": "Disk", "Internal IP": "Internal IP", "None": "None", "Software": "Software", diff --git a/frontend/src/i18n/locales/es/glossary.json b/frontend/src/i18n/locales/es/glossary.json index 7ee447e40b2..1b5ae844e06 100644 --- a/frontend/src/i18n/locales/es/glossary.json +++ b/frontend/src/i18n/locales/es/glossary.json @@ -118,6 +118,7 @@ "except: {{ cidrExceptions }}": "excepto: {{ cidrExceptions }}", "Pod Selector": "Selector de Pod", "Network Policies": "Políticas de Red", + "Capacity": "Capacidad", "Uncordoning node {{name}}…": "Desbloqueando el nodo {{name}}…", "Cordoning node {{name}}…": "Bloqueando nodo {{name}}…", "Uncordoned node {{name}}.": "Nodo {{name}} desbloqueado.", @@ -235,7 +236,6 @@ "Git Tree State": "Estado del Árbol de Git", "Go Version": "Versión de Go", "Platform": "Plataforma", - "Capacity": "Capacidad", "Access Modes": "Modos de Acceso", "Volume Mode": "Modo de Volume", "Storage Class": "Storage Class", diff --git a/frontend/src/i18n/locales/es/translation.json b/frontend/src/i18n/locales/es/translation.json index 4dc5a09d245..cb264cd13fc 100644 --- a/frontend/src/i18n/locales/es/translation.json +++ b/frontend/src/i18n/locales/es/translation.json @@ -676,10 +676,12 @@ "Create Namespace": "Crear Espacio de Nombre", "To": "A", "used": "usado", + "Allocatable": "", "Scheduling Disabled": "Agendamiento deshabilitado", "Scheduling Enabled": "Agendamiento habilitado", "Taints": "Taints", "Not ready yet!": "¡No listo todavía!", + "Disk": "", "Internal IP": "IP interna", "None": "Ninguno", "Software": "Software", diff --git a/frontend/src/i18n/locales/fr/glossary.json b/frontend/src/i18n/locales/fr/glossary.json index 8dab180c2df..179402ec0d7 100644 --- a/frontend/src/i18n/locales/fr/glossary.json +++ b/frontend/src/i18n/locales/fr/glossary.json @@ -118,6 +118,7 @@ "except: {{ cidrExceptions }}": "sauf: {{ cidrExceptions }}", "Pod Selector": "Sélecteur de pod", "Network Policies": "Politiques de réseau", + "Capacity": "Capacité", "Uncordoning node {{name}}…": "Débloquant le nœud {{name}}…", "Cordoning node {{name}}…": "Bloquant le nœud {{name}}…", "Uncordoned node {{name}}.": "Nœud {{name}} débloqué.", @@ -235,7 +236,6 @@ "Git Tree State": "État de l'arbre Git", "Go Version": "Version de Go", "Platform": "Plateforme", - "Capacity": "Capacité", "Access Modes": "Modes d'accès", "Volume Mode": "Mode Volume", "Storage Class": "Classe de stockage", diff --git a/frontend/src/i18n/locales/fr/translation.json b/frontend/src/i18n/locales/fr/translation.json index b8c1d6b0d02..d34bdc8cb1d 100644 --- a/frontend/src/i18n/locales/fr/translation.json +++ b/frontend/src/i18n/locales/fr/translation.json @@ -676,10 +676,12 @@ "Create Namespace": "Créer un espace de noms", "To": "À", "used": "utilisé", + "Allocatable": "", "Scheduling Disabled": "Planification désactivée", "Scheduling Enabled": "Planification activée", "Taints": "Taints", "Not ready yet!": "Pas encore prêt !", + "Disk": "", "Internal IP": "IP interne", "None": "Aucun", "Software": "Logiciel", diff --git a/frontend/src/i18n/locales/he/glossary.json b/frontend/src/i18n/locales/he/glossary.json index 18ab36c7c20..75919b09bbd 100644 --- a/frontend/src/i18n/locales/he/glossary.json +++ b/frontend/src/i18n/locales/he/glossary.json @@ -118,6 +118,7 @@ "except: {{ cidrExceptions }}": "except: {{ cidrExceptions }}", "Pod Selector": "Pod Selector", "Network Policies": "Network Policies", + "Capacity": "Capacity", "Uncordoning node {{name}}…": "Uncordoning node {{name}}…", "Cordoning node {{name}}…": "Cordoning node {{name}}…", "Uncordoned node {{name}}.": "Uncordoned node {{name}}.", @@ -235,7 +236,6 @@ "Git Tree State": "Git Tree State", "Go Version": "Go Version", "Platform": "Platform", - "Capacity": "Capacity", "Access Modes": "Access Modes", "Volume Mode": "Volume Mode", "Storage Class": "Storage Class", diff --git a/frontend/src/i18n/locales/he/translation.json b/frontend/src/i18n/locales/he/translation.json index 83ea29c9d6d..f56994ab9c4 100644 --- a/frontend/src/i18n/locales/he/translation.json +++ b/frontend/src/i18n/locales/he/translation.json @@ -676,10 +676,12 @@ "Create Namespace": "Create Namespace", "To": "To", "used": "used", + "Allocatable": "", "Scheduling Disabled": "Scheduling Disabled", "Scheduling Enabled": "Scheduling Enabled", "Taints": "Taints", "Not ready yet!": "Not ready yet!", + "Disk": "", "Internal IP": "Internal IP", "None": "None", "Software": "Software", diff --git a/frontend/src/i18n/locales/hi/glossary.json b/frontend/src/i18n/locales/hi/glossary.json index 6ec205fdef0..3096a38160b 100644 --- a/frontend/src/i18n/locales/hi/glossary.json +++ b/frontend/src/i18n/locales/hi/glossary.json @@ -118,6 +118,7 @@ "except: {{ cidrExceptions }}": "छोड़कर: {{ cidrExceptions }}", "Pod Selector": "Pod सेलेक्टर", "Network Policies": "नेटवर्क पॉलिसीज़", + "Capacity": "क्षमता", "Uncordoning node {{name}}…": "नोड {{name}} अनकॉर्डन कर रहा है…", "Cordoning node {{name}}…": "नोड {{name}} कॉर्डन कर रहा है…", "Uncordoned node {{name}}.": "नोड {{name}} अनकॉर्डन किया गया।", @@ -235,7 +236,6 @@ "Git Tree State": "Git ट्री स्टेट", "Go Version": "Go संस्करण", "Platform": "प्लेटफॉर्म", - "Capacity": "क्षमता", "Access Modes": "एक्सेस मोड्स", "Volume Mode": "वॉल्यूम मोड", "Storage Class": "स्टोरेज क्लास", diff --git a/frontend/src/i18n/locales/hi/translation.json b/frontend/src/i18n/locales/hi/translation.json index 3a820de800a..7221dab0df9 100644 --- a/frontend/src/i18n/locales/hi/translation.json +++ b/frontend/src/i18n/locales/hi/translation.json @@ -656,212 +656,214 @@ "Duration": "", "Active Deadline": "", "TTL After Finished": "", - "Holder Identity": "", - "Lease Duration Seconds": "", - "Renew Time": "", - "Holder": "", - "Container Limits": "", - "Default Request": "", - "Max": "", - "Min": "", - "A namespace with this name already exists.": "", - "Applying {{ newItemName }}…": "", - "Cancelled applying {{ newItemName }}.": "", - "Namespaces must be under 64 characters.": "", - "Create Namespace": "", - "To": "", - "used": "", - "Scheduling Disabled": "", - "Scheduling Enabled": "", - "Taints": "", - "Not ready yet!": "", - "Internal IP": "", - "None": "", - "Software": "", - "Redirecting to main page…": "", - "Metadata": "", - "Spec": "", - "Containers": "", - "Node": "", - "Optional: schedule the pod on a specific node": "", - "Lines": "", - "Prettify": "", - "Show JSON values in plain text by removing escape characters.": "", - "Format": "", - "Debug Pod": "", - "Debug: {{ itemName }}": "", - "No cluster selected": "", - "Pod debug is disabled in settings": "", - "Attaching to existing debug container...": "", - "Creating ephemeral debug container...": "", - "Failed to create debug container: {{message}}": "", - "Attaching to debug container...": "", - "Failed to connect…\r\n": "", - "Press Ctrl+D or type \"exit\" to terminate the ephemeral container. If you don't, the container will stay running.": "", - "Max Unavailable": "", - "Min Available": "", - "Allowed disruptions": "", - "Current//context:pods": "", - "Total": "", - "N/A": "", - "Allowed Disruptions": "", - "Start": "", - "Stop": "", - "Error fetching port forwards": "", - "Loading port forwarding": "", - "Pod Port": "", - "Local Port": "", - "Error starting port forward": "", - "Please enter a valid port number (1-65535).": "", - "Docker Desktop requires ports in range 30000-32000.": "", - "Leave empty to auto-assign from range 30000-32000.": "", - "Leave empty to auto-assign an available port.": "", - "Start Port Forward": "", - "Target": "", - "e.g. 30080": "", - "e.g. 8080": "", - "Global Default": "", - "Preemption Policy": "", - "Create new project": "", - "To create a new project pick which clusters you want to include and then select existing or create a new namespace": "", - "Project Name": "", - "A project with this name already exists": "", - "Enter a name for your new project.": "", - "Clusters": "", - "Select one or more clusters for this project": "", - "No available clusters": "", - "Type or select a namespace": "", - "Select existing or type to create a new namespace": "", - "No available namespaces - you can type a custom name": "", - "Creating": "", - "Create a Project": "", - "Project is a collection of Kubernetes resources. You can use projects to organize your resources, for example, by environment, team, or application.": "", - "New Project": "", - "Create a new project": "", - "New Project from YAML": "", - "Deploy a new application from YAML": "", - "URL is required": "", - "Failed to load from URL: {{error}}": "", - "Error processing files: {{error}}": "", - "Name is required": "", - "Cluster is required": "", - "No resources have been uploaded": "", - "Create new Project from YAML": "", - "Project name": "", - "Give your project a descriptive name": "", - "Enter a name": "", - "Select cluster for this project": "", - "Load resources": "", - "Upload files or load from URL": "", - "Upload Files": "", - "Choose Files": "", - "Drag & drop YAML files here or click to choose files": "", - "Supports .yaml and .yml files": "", - "YAML URL": "", - "Enter URL to YAML file": "", - "Load YAML resources from a remote URL": "", - "Loaded Resources ({{count}})_one": "", - "Loaded Resources ({{count}})_other": "", - "Clear All": "", - "API Version": "", - "Creating project": "", - "Creating following resources in this project:": "", - "Something went wrong": "", - "Delete project": "", - "Deleting project {{ projectName }}…": "", - "Cancelled deletion of project {{ projectName }}.": "", - "Deleted project {{ projectName }}.": "", - "Error deleting project {{ projectName }}.": "", - "Delete Project": "", - "Are you sure you want to delete project \"{{projectName}}\"?": "", - "By default, this will only remove the project label from the following namespaces:": "", - "Also delete the namespaces (this will remove all resources within them)": "", - "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "", - "Delete Project & Namespaces": "", - "Resources": "", - "Access": "", - "Map": "", - "Project Status": "", - "No Workloads": "", - "Unhealthy": "", - "Degraded": "", - "Healthy": "", - "Warning": "", - "Resource Quotas": "", - "Create Resource Quota to limit resource consumption within this project": "", - "Create resource quota": "", - "Roles": "", - "Role Bindings": "", - "Health": "", - "No Resources": "", - "Namespaces": "", - "No projects found": "", - "Create your first project to organize your Kubernetes resources": "", - "Create Project": "", - "Details": "", - "Show Logs": "", - "Logs: {{ itemName }}": "", - "Terminal / Exec": "", - "No {{category}} resources found for this project.": "", - "Current//context:replicas": "", - "Desired//context:replicas": "", - "Zoom in": "", - "Zoom out": "", - "No data to be shown. Try to change filters or select a different namespace.": "", - "Group By": "", - "Instance": "", - "Status: Error or Warning": "", - "Expand All": "", - "Fit to screen": "", - "Zoom to 100%": "", - "Home": "", - "Used": "", - "Hard": "", - "Request": "", - "Limit": "", - "Users": "", - "Handler": "", - "No data in this secret": "", - "Hide Helm Secrets": "", - "Shrink sidebar": "", - "Expand sidebar": "", - "Main Navigation": "", - "Navigation Tabs": "", - "Instances": "", - "Cluster version upgraded to {{ gitVersion }}": "", - "Cluster version downgraded to {{ gitVersion }}": "", - "Controlled Resources": "", - "Controlled Values": "", - "Min Allowed": "", - "Max Allowed": "", - "Mode": "", - "Last Transition Time": "", - "Recommendations": "", - "Provided": "", - "Admission Review Versions": "", - "Client Config: URL": "", - "Client Config: Service": "", - "Service: {{namespace}}/{{name}}": "", - "Path: {{ path }}:{{ port }}": "", - "Operations": "", - "0 Running": "", - "Ready//context:replicas": "", - "Up to date//context:replicas": "", - "Available//context:replicas": "", - "Failed": "", - "Select locale": "", - "": "", - "\"{{metricName}}\" on {{objectKind}}/{{objectName}} {{metricTarget}}": "", - "\"{{metricName}}\" on pods": "", - "resource {{resourceName}} on pods": "", - "resource {{resourceName}} of container {{containerName}} on pods": "", - "Warning. Incompatible plugins disabled: ({{ pluginList }})": "", - "Global Search": "", - "Open the global search dialog": "", - "Cluster Chooser": "", - "Open the cluster chooser popup": "", - "Toggle Table Filters": "", - "Toggle column filters in tables": "", - "Log Viewer Search": "", - "Toggle search in log viewer": "" + "Holder Identity": "होल्डर पहचान", + "Lease Duration Seconds": "लीज़ अवधि (सेकंड)", + "Renew Time": "नवीनता समय", + "Holder": "होल्डर", + "Container Limits": "कंटेनर सीमाएँ", + "Default Request": "डिफ़ॉल्ट अनुरोध", + "Max": "अधिकतम", + "Min": "न्यूनतम", + "A namespace with this name already exists.": "इस नाम का एक नेमस्पेस पहले से मौजूद है।", + "Applying {{ newItemName }}…": "{{ newItemName }} लागू किया जा रहा है…", + "Cancelled applying {{ newItemName }}.": "{{ newItemName }} लागू करना रद्द किया गया।", + "Namespaces must be under 64 characters.": "नेमस्पेस 64 वर्णों से कम होना चाहिए।", + "Create Namespace": "नेमस्पेस बनाएं", + "To": "तक", + "used": "उपयोग किया गया", + "Allocatable": "", + "Scheduling Disabled": "शेड्यूलिंग अक्षम", + "Scheduling Enabled": "शेड्यूलिंग सक्षम", + "Taints": "टेंट", + "Not ready yet!": "अभी तक तैयार नहीं!", + "Disk": "", + "Internal IP": "आंतरिक IP", + "None": "कोई नहीं", + "Software": "सॉफ्टवेयर", + "Redirecting to main page…": "मुख्य पृष्ठ पर पुनः निर्देशित किया जा रहा है…", + "Metadata": "मेटाडेटा", + "Spec": "स्पेक", + "Containers": "कंटेनर", + "Node": "नोड", + "Optional: schedule the pod on a specific node": "वैकल्पिक: एक निश्चित नोड पर पॉड की शेड्यूल करें", + "Lines": "लाइनें", + "Prettify": "सुधारें", + "Show JSON values in plain text by removing escape characters.": "एस्केप कैरेक्टर्स हटाकर JSON मानों को सादा पाठ में दिखाएँ।", + "Format": "फ़ॉरमेट", + "Debug Pod": "डीबग पॉड", + "Debug: {{ itemName }}": "डीबग: {{ itemName }}", + "No cluster selected": "कोई क्लस्टर नहीं चुना गया", + "Pod debug is disabled in settings": "सेटिंग्स में पॉड डीबग अक्षम है", + "Attaching to existing debug container...": "मौजूदा डीबग कंटेनर से जुड़ रहा है…", + "Creating ephemeral debug container...": "अस्थायी डीबग कंटेनर बना रहा है…", + "Failed to create debug container: {{message}}": "डीबग कंटेनर बनाने में विफल: {{message}}", + "Attaching to debug container...": "डीबग कंटेनर से जुड़ रहा है…", + "Failed to connect…\r\n": "कनेक्ट करने में विफल…\r\n", + "Press Ctrl+D or type \"exit\" to terminate the ephemeral container. If you don't, the container will stay running.": "अस्थायी कंटेनर समाप्त करने के लिए Ctrl+D दबाएँ या \"exit\" टाइप करें। यदि आप ऐसा नहीं करते, तो कंटेनर चलता रहेगा।", + "Max Unavailable": "अधिकतम अनुपलब्ध", + "Min Available": "न्यूनतम उपलब्ध", + "Allowed disruptions": "अनुमत अव्यवस्था", + "Current//context:pods": "वर्तमान", + "Total": "कुल", + "N/A": "लागू नहीं", + "Allowed Disruptions": "अनुमत व्यवधान", + "Start": "प्रारंभ करें", + "Stop": "रोकें", + "Error fetching port forwards": "पोर्ट फ़ॉरवर्ड प्राप्त करने में त्रुटि", + "Loading port forwarding": "पोर्ट फ़ॉरवर्डिंग लोड हो रहा है", + "Pod Port": "पॉड पोर्ट", + "Local Port": "लोकल पोर्ट", + "Error starting port forward": "पोर्ट फ़ॉरवर्ड शुरू करने में त्रुटि", + "Please enter a valid port number (1-65535).": "कृपया एक मान्य पोर्ट नंबर दर्ज करें (1-65535)।", + "Docker Desktop requires ports in range 30000-32000.": "Docker Desktop को 30000-32000 रेंज के पोर्ट्स की आवश्यकता होती है।", + "Leave empty to auto-assign from range 30000-32000.": "30000-32000 रेंज से ऑटो-असाइन के लिए खाली छोड़ें।", + "Leave empty to auto-assign an available port.": "उपलब्ध पोर्ट के लिए खाली छोड़ें।", + "Start Port Forward": "पोर्ट फ़ॉरवर्ड शुरू करें", + "Target": "टारगेट", + "e.g. 30080": "उदा. 30080", + "e.g. 8080": "उदा. 8080", + "Global Default": "ग्लोबल डिफ़ॉल्ट", + "Preemption Policy": "प्रीएम्प्शन नीति", + "Create new project": "नया प्रोजेक्ट बनाएं", + "To create a new project pick which clusters you want to include and then select existing or create a new namespace": "नया प्रोजेक्ट बनाने के लिए उन क्लस्टर्स को चुनें जिन्हें आप शामिल करना चाहते हैं और फिर मौजूदा या नया namespace चुनें या बनाएं", + "Project Name": "प्रोजेक्ट नाम", + "A project with this name already exists": "इस नाम का एक प्रोजेक्ट पहले से मौजूद है", + "Enter a name for your new project.": "अपने नए प्रोजेक्ट के लिए नाम दर्ज करें।", + "Clusters": "क्लस्टर्स", + "Select one or more clusters for this project": "इस प्रोजेक्ट के लिए एक या अधिक क्लस्टर्स का चयन करें", + "No available clusters": "कोई उपलब्ध क्लस्टर्स नहीं हैं", + "Type or select a namespace": "namespace टाइप करें या चुनें", + "Select existing or type to create a new namespace": "मौजूदा चुनें या नया namespace बनाने के लिए टाइप करें", + "No available namespaces - you can type a custom name": "कोई उपलब्ध namespaces नहीं हैं - आप कस्टम नाम टाइप कर सकते हैं", + "Creating": "बना रहा है", + "Create a Project": "प्रोजेक्ट बनाएं", + "Project is a collection of Kubernetes resources. You can use projects to organize your resources, for example, by environment, team, or application.": "प्रोजेक्ट कुबरनेट्स संसाधनों का संग्रह है। आप प्रोजेक्ट्स का उपयोग अपने संसाधनों को संगठित करने के लिए कर सकते हैं, उदाहरण के लिए, पर्यावरण, टीम या एप्लिकेशन द्वारा।", + "New Project": "नया प्रोजेक्ट", + "Create a new project": "एक नया प्रोजेक्ट बनाएं", + "New Project from YAML": "YAML से नया प्रोजेक्ट", + "Deploy a new application from YAML": "YAML से एक नया एप्लिकेशन परिनियोजित करें", + "URL is required": "URL आवश्यक है", + "Failed to load from URL: {{error}}": "URL से लोड करने में विफल: {{error}}", + "Error processing files: {{error}}": "फाइलें प्रोसेस करने में त्रुटि: {{error}}", + "Name is required": "नाम आवश्यक है", + "Cluster is required": "क्लस्टर आवश्यक है", + "No resources have been uploaded": "कोई संसाधन अपलोड नहीं किए गए हैं", + "Create new Project from YAML": "YAML से नया प्रोजेक्ट बनाएं", + "Project name": "प्रोजेक्ट नाम", + "Give your project a descriptive name": "अपने प्रोजेक्ट को विवरणात्मक नाम दें", + "Enter a name": "एक नाम दर्ज करें", + "Select cluster for this project": "इस प्रोजेक्ट के लिए क्लस्टर चुनें", + "Load resources": "संसाधन लोड करें", + "Upload files or load from URL": "फाइलें अपलोड करें या URL से लोड करें", + "Upload Files": "फाइलें अपलोड करें", + "Choose Files": "फाइलें चुनें", + "Drag & drop YAML files here or click to choose files": "YAML फाइलें यहाँ खींचें और छोड़ें या फाइलें चुनने के लिए क्लिक करें", + "Supports .yaml and .yml files": ".yaml और .yml फ़ाइलों का समर्थन करता है", + "YAML URL": "YAML URL", + "Enter URL to YAML file": "YAML फाइल के लिए URL दर्ज करें", + "Load YAML resources from a remote URL": "एक रिमोट URL से YAML संसाधन लोड करें", + "Loaded Resources ({{count}})_one": "लोड किए गए संसाधन ({{count}})", + "Loaded Resources ({{count}})_other": "लोड किए गए संसाधन ({{count}})", + "Clear All": "सभी साफ़ करें", + "API Version": "API संस्करण", + "Creating project": "प्रोजेक्ट बनाया जा रहा है", + "Creating following resources in this project:": "इस प्रोजेक्ट में निम्नलिखित संसाधन बनाए जा रहे हैं:", + "Something went wrong": "कुछ गलत हो गया", + "Delete project": "प्रोजेक्ट हटाएं", + "Deleting project {{ projectName }}…": "प्रोजेक्ट {{ projectName }} हटाया जा रहा है…", + "Cancelled deletion of project {{ projectName }}.": "प्रोजेक्ट {{ projectName }} का हटाना रद्द किया गया।", + "Deleted project {{ projectName }}.": "प्रोजेक्ट {{ projectName }} हटाया गया।", + "Error deleting project {{ projectName }}.": "प्रोजेक्ट {{ projectName }} हटाने में त्रुटि।", + "Delete Project": "प्रोजेक्ट हटाएं", + "Are you sure you want to delete project \"{{projectName}}\"?": "क्या आप वाकई प्रोजेक्ट \"{{projectName}}\" को हटाना चाहते हैं?", + "By default, this will only remove the project label from the following namespaces:": "डिफ़ॉल्ट रूप से, यह केवल निम्न namespaces से प्रोजेक्ट लेबल हटाएगा:", + "Also delete the namespaces (this will remove all resources within them)": "Namespaces भी हटाएं (इससे उनके सभी संसाधन हट जाएंगे)", + "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "चेतावनी: यह कार्रवाई पूर्ववत नहीं की जा सकती। इन namespaces के सभी संसाधन स्थायी रूप से हट जाएंगे।", + "Delete Project & Namespaces": "प्रोजेक्ट और Namespaces हटाएं", + "Resources": "संसाधन", + "Access": "एक्सेस", + "Map": "मैप", + "Project Status": "प्रोजेक्ट की स्थिति", + "No Workloads": "कोई वर्कलोड नहीं", + "Unhealthy": "अस्वस्थ", + "Degraded": "घटिया", + "Healthy": "स्वस्थ", + "Warning": "चेतावनी", + "Resource Quotas": "संसाधन क्वोटा", + "Create Resource Quota to limit resource consumption within this project": "इस प्रोजेक्ट के भीतर संसाधन की उपयोग सीमित करने के लिए संसाधन क्वोटा बनाएं", + "Create resource quota": "संसाधन क्वोटा बनाएं", + "Roles": "भूमिकाएं", + "Role Bindings": "भूमिका बाइंडिंग्स", + "Health": "स्वास्थ्य", + "No Resources": "कोई संसाधन नहीं", + "Namespaces": "नेमस्पेसेज", + "No projects found": "कोई प्रोजेक्ट नहीं मिला", + "Create your first project to organize your Kubernetes resources": "अपने Kubernetes संसाधनों को संगठित करने के लिए अपना पहला प्रोजेक्ट बनाएं", + "Create Project": "प्रोजेक्ट बनाएं", + "Details": "विवरण", + "Show Logs": "लॉग दिखाएं", + "Logs: {{ itemName }}": "लॉग: {{ itemName }}", + "Terminal / Exec": "टर्मिनल / एक्सेक्यूट", + "No {{category}} resources found for this project.": "इस प्रोजेक्ट के लिए कोई {{category}} संसाधन नहीं मिला।", + "Current//context:replicas": "वर्तमान प्रतिकृतियाँ", + "Desired//context:replicas": "इच्छित प्रतिकृतियाँ", + "Zoom in": "ज़ूम इन", + "Zoom out": "ज़ूम आउट", + "No data to be shown. Try to change filters or select a different namespace.": "दिखाने के लिए कोई डेटा नहीं है। फ़िल्टर बदलने का प्रयास करें या एक अलग namespace चुनें।", + "Group By": "इसके अनुसार समूहीकरण", + "Instance": "इंस्टेंस", + "Status: Error or Warning": "स्थिति: त्रुटि या चेतावनी", + "Expand All": "सभी को विस्तृत करें", + "Fit to screen": "स्क्रीन के अनुरूप फिट करें", + "Zoom to 100%": "100% पर ज़ूम करें", + "Home": "होम", + "Used": "उपयोग किया गया", + "Hard": "हार्ड", + "Request": "अनुरोध", + "Limit": "सीमा", + "Users": "उपयोगकर्ता", + "Handler": "हैंडलर", + "No data in this secret": "इस सीक्रेट में कोई डेटा नहीं है", + "Hide Helm Secrets": "हेल्म सीक्रेट छिपाएं", + "Shrink sidebar": "साइडबार संकुचित करें", + "Expand sidebar": "साइडबार विस्तृत करें", + "Main Navigation": "मुख्य नेविगेशन", + "Navigation Tabs": "नेविगेशन टैब्स", + "Instances": "इंस्टेंसें", + "Cluster version upgraded to {{ gitVersion }}": "क्लस्टर संस्करण {{ gitVersion }} में अपग्रेड किया गया", + "Cluster version downgraded to {{ gitVersion }}": "क्लस्टर संस्करण {{ gitVersion }} में डाउनग्रेड किया गया", + "Controlled Resources": "नियंत्रित संसाधन", + "Controlled Values": "नियंत्रित मान", + "Min Allowed": "न्यूनतम अनुमत", + "Max Allowed": "अधिकतम अनुमत", + "Mode": "मोड", + "Last Transition Time": "अंतिम संक्रमण समय", + "Recommendations": "सिफारिशें", + "Provided": "प्रदान किया गया", + "Admission Review Versions": "एडमिशन रिव्यू संस्करण", + "Client Config: URL": "क्लाइंट कॉन्फ़िग: URL", + "Client Config: Service": "क्लाइंट कॉन्फ़िग: सेवा", + "Service: {{namespace}}/{{name}}": "सेवा: {{namespace}}/{{name}}", + "Path: {{ path }}:{{ port }}": "पथ: {{ path }}:{{ port }}", + "Operations": "ऑपरेशन", + "0 Running": "0 चल रहे", + "Ready//context:replicas": "तैयार", + "Up to date//context:replicas": "अप टू डेट", + "Available//context:replicas": "उपलब्ध", + "Failed": "विफल", + "Select locale": "भाषा चुनें", + "": "<अज्ञात>", + "\"{{metricName}}\" on {{objectKind}}/{{objectName}} {{metricTarget}}": "\"{{metricName}}\" {{objectKind}}/{{objectName}} पर {{metricTarget}}", + "\"{{metricName}}\" on pods": "\"{{metricName}}\" पॉड्स पर", + "resource {{resourceName}} on pods": "संसाधन {{resourceName}} पॉड्स पर", + "resource {{resourceName}} of container {{containerName}} on pods": "कंटेनर {{containerName}} के संसाधन {{resourceName}} पॉड्स पर", + "Warning. Incompatible plugins disabled: ({{ pluginList }})": "चेतावनी: असंगत प्लगइन्स अक्षम कर दिए गए हैं: ({{ pluginList }})", + "Global Search": "वैश्विक खोज", + "Open the global search dialog": "वैश्विक खोज संवाद खोलें", + "Cluster Chooser": "क्लस्टर चुनाव", + "Open the cluster chooser popup": "क्लस्टर चुनाव पॉपअप खोलें", + "Toggle Table Filters": "टेबल फ़िल्टर्स टॉगल करें", + "Toggle column filters in tables": "टेबल में कॉलम फ़िल्टर्स टॉगल करें", + "Log Viewer Search": "लॉग व्यूअर खोज", + "Toggle search in log viewer": "लॉग व्यूअर में खोज टॉगल करें" } diff --git a/frontend/src/i18n/locales/it/glossary.json b/frontend/src/i18n/locales/it/glossary.json index 95c3c583512..f6bd485844a 100644 --- a/frontend/src/i18n/locales/it/glossary.json +++ b/frontend/src/i18n/locales/it/glossary.json @@ -118,6 +118,7 @@ "except: {{ cidrExceptions }}": "eccetto: {{ cidrExceptions }}", "Pod Selector": "Selettore Pod", "Network Policies": "Politiche di Rete", + "Capacity": "Capacità", "Uncordoning node {{name}}…": "Riabilitazione del nodo {{name}}…", "Cordoning node {{name}}…": "Disabilitazione del nodo {{name}}…", "Uncordoned node {{name}}.": "Nodo {{name}} riabilitato.", @@ -235,7 +236,6 @@ "Git Tree State": "Stato Git", "Go Version": "Versione Go", "Platform": "Piattaforma", - "Capacity": "Capacità", "Access Modes": "Modalità Accesso", "Volume Mode": "Modalità Volume", "Storage Class": "Classe Storage", diff --git a/frontend/src/i18n/locales/it/translation.json b/frontend/src/i18n/locales/it/translation.json index ac79713d2f8..762f43b98f6 100644 --- a/frontend/src/i18n/locales/it/translation.json +++ b/frontend/src/i18n/locales/it/translation.json @@ -676,10 +676,12 @@ "Create Namespace": "Crea Namespace", "To": "A", "used": "usato", + "Allocatable": "", "Scheduling Disabled": "Pianificazione Disabilitata", "Scheduling Enabled": "Pianificazione Abilitata", "Taints": "Contaminazioni", "Not ready yet!": "Non pronto ancora!", + "Disk": "", "Internal IP": "IP Interno", "None": "Nessuno", "Software": "Software", diff --git a/frontend/src/i18n/locales/ja/glossary.json b/frontend/src/i18n/locales/ja/glossary.json index 89f3679bb66..25a966bdd39 100644 --- a/frontend/src/i18n/locales/ja/glossary.json +++ b/frontend/src/i18n/locales/ja/glossary.json @@ -118,6 +118,7 @@ "except: {{ cidrExceptions }}": "例外: {{ cidrExceptions }}", "Pod Selector": "ポッドセレクター", "Network Policies": "ネットワークポリシー", + "Capacity": "容量", "Uncordoning node {{name}}…": "ノード {{name}} の封鎖解除中…", "Cordoning node {{name}}…": "ノード {{name}} を封鎖中…", "Uncordoned node {{name}}.": "ノード {{name}} の封鎖を解除しました。", @@ -235,7 +236,6 @@ "Git Tree State": "Git ツリー状態", "Go Version": "Go バージョン", "Platform": "プラットフォーム", - "Capacity": "容量", "Access Modes": "アクセスモード", "Volume Mode": "ボリュームモード", "Storage Class": "ストレージクラス", diff --git a/frontend/src/i18n/locales/ja/translation.json b/frontend/src/i18n/locales/ja/translation.json index 938b7e57613..54ffb359208 100644 --- a/frontend/src/i18n/locales/ja/translation.json +++ b/frontend/src/i18n/locales/ja/translation.json @@ -666,10 +666,12 @@ "Create Namespace": "ネームスペースの作成", "To": "宛先", "used": "使用中", + "Allocatable": "", "Scheduling Disabled": "スケジューリング無効", "Scheduling Enabled": "スケジューリング有効", "Taints": "テイント", "Not ready yet!": "まだ準備ができていません!", + "Disk": "", "Internal IP": "内部 IP", "None": "なし", "Software": "ソフトウェア", diff --git a/frontend/src/i18n/locales/ko/glossary.json b/frontend/src/i18n/locales/ko/glossary.json index ad0b8ccec70..510aa09aa6a 100644 --- a/frontend/src/i18n/locales/ko/glossary.json +++ b/frontend/src/i18n/locales/ko/glossary.json @@ -118,6 +118,7 @@ "except: {{ cidrExceptions }}": "제외: {{ cidrExceptions }}", "Pod Selector": "파드 셀렉터", "Network Policies": "네트워크 정책", + "Capacity": "용량", "Uncordoning node {{name}}…": "노드 {{name}} Cordon 해제 중…", "Cordoning node {{name}}…": "노드 {{name}} Cordon 중…", "Uncordoned node {{name}}.": "노드 {{name}} Cordon 해제 완료.", @@ -235,7 +236,6 @@ "Git Tree State": "Git 트리 상태", "Go Version": "Go 버전", "Platform": "플랫폼", - "Capacity": "용량", "Access Modes": "액세스 모드", "Volume Mode": "볼륨 모드", "Storage Class": "스토리지 클래스", diff --git a/frontend/src/i18n/locales/ko/translation.json b/frontend/src/i18n/locales/ko/translation.json index 2771f61d0c9..7183ad2b635 100644 --- a/frontend/src/i18n/locales/ko/translation.json +++ b/frontend/src/i18n/locales/ko/translation.json @@ -666,10 +666,12 @@ "Create Namespace": "네임스페이스 생성", "To": "대상", "used": "사용됨", + "Allocatable": "", "Scheduling Disabled": "스케줄링 비활성화", "Scheduling Enabled": "스케줄링 활성화", "Taints": "Taints", "Not ready yet!": "아직 준비되지 않았습니다!", + "Disk": "", "Internal IP": "내부 IP", "None": "없음", "Software": "소프트웨어", diff --git a/frontend/src/i18n/locales/pt/glossary.json b/frontend/src/i18n/locales/pt/glossary.json index eda83dd98ef..2c47623ab1d 100644 --- a/frontend/src/i18n/locales/pt/glossary.json +++ b/frontend/src/i18n/locales/pt/glossary.json @@ -118,6 +118,7 @@ "except: {{ cidrExceptions }}": "exceto: {{ cidrExceptions }}", "Pod Selector": "Seletor de Pod", "Network Policies": "Políticas de Rede", + "Capacity": "Capacidade", "Uncordoning node {{name}}…": "A remover o bloqueio do node {{name}}…", "Cordoning node {{name}}…": "A bloquear o node {{name}}…", "Uncordoned node {{name}}.": "Node {{name}} desbloqueado.", @@ -235,7 +236,6 @@ "Git Tree State": "Estado de Árvore do Git", "Go Version": "Versão do Go", "Platform": "Plataforma", - "Capacity": "Capacidade", "Access Modes": "Modos de Acesso", "Volume Mode": "Modo de Volume", "Storage Class": "Storage Class", diff --git a/frontend/src/i18n/locales/pt/translation.json b/frontend/src/i18n/locales/pt/translation.json index 5b62e092e02..3db84658b41 100644 --- a/frontend/src/i18n/locales/pt/translation.json +++ b/frontend/src/i18n/locales/pt/translation.json @@ -676,10 +676,12 @@ "Create Namespace": "Criar Namespace", "To": "Para", "used": "usado", + "Allocatable": "", "Scheduling Disabled": "Agendamento Desactivado", "Scheduling Enabled": "Agendamento Activado", "Taints": "Taints", "Not ready yet!": "Ainda não pronto!", + "Disk": "", "Internal IP": "IP Interno", "None": "Nenhum", "Software": "Software", diff --git a/frontend/src/i18n/locales/ru/glossary.json b/frontend/src/i18n/locales/ru/glossary.json index 21ea6a40bf3..d63039e284b 100644 --- a/frontend/src/i18n/locales/ru/glossary.json +++ b/frontend/src/i18n/locales/ru/glossary.json @@ -118,6 +118,7 @@ "except: {{ cidrExceptions }}": "кроме: {{ cidrExceptions }}", "Pod Selector": "Селектор Подов", "Network Policies": "Сетевые политики", + "Capacity": "Ёмкость", "Uncordoning node {{name}}…": "Снимаем cordon с узла {{name}}…", "Cordoning node {{name}}…": "Устанавливаем cordon на узел {{name}}…", "Uncordoned node {{name}}.": "Cordon снят с узла {{name}}.", @@ -235,7 +236,6 @@ "Git Tree State": "Состояние дерева Git", "Go Version": "Go-версия", "Platform": "Платформа", - "Capacity": "Ёмкость", "Access Modes": "Режимы доступа", "Volume Mode": "Режим тома", "Storage Class": "Класс хранилища", diff --git a/frontend/src/i18n/locales/ru/translation.json b/frontend/src/i18n/locales/ru/translation.json index 9007d4a18ac..844aa4e04b4 100644 --- a/frontend/src/i18n/locales/ru/translation.json +++ b/frontend/src/i18n/locales/ru/translation.json @@ -681,10 +681,12 @@ "Create Namespace": "Создать пространство имён", "To": "К", "used": "использовано", + "Allocatable": "", "Scheduling Disabled": "Планирование отключено", "Scheduling Enabled": "Планирование включено", "Taints": "Тейнты", "Not ready yet!": "Ещё не готов!", + "Disk": "", "Internal IP": "Внутренний IP", "None": "Ничего", "Software": "Программное обеспечение", diff --git a/frontend/src/i18n/locales/ta/glossary.json b/frontend/src/i18n/locales/ta/glossary.json index a215761894e..5d0e01a44f5 100644 --- a/frontend/src/i18n/locales/ta/glossary.json +++ b/frontend/src/i18n/locales/ta/glossary.json @@ -118,6 +118,7 @@ "except: {{ cidrExceptions }}": "தவிர: {{ cidrExceptions }}", "Pod Selector": "பாட் செலக்டர்", "Network Policies": "நெட்வர்க் பாலிசிகள்", + "Capacity": "கொள்ளளவு", "Uncordoning node {{name}}…": "{{name}} நோடை அன்கார்டன் செய்கிறது...", "Cordoning node {{name}}…": "{{name}} நோடை கார்டன் செய்கிறது...", "Uncordoned node {{name}}.": "{{name}} நோட் அன்கார்டன் செய்யப்பட்டது.", @@ -235,7 +236,6 @@ "Git Tree State": "கிட் ட்ரீ ஸ்டேட்", "Go Version": "கோ வெர்ஷன்", "Platform": "தளம்", - "Capacity": "கொள்ளளவு", "Access Modes": "அக்சஸ் மோட்கள்", "Volume Mode": "வால்யூம் மோட்", "Storage Class": "ஸ்டோரேஜ் கிளாஸ்", diff --git a/frontend/src/i18n/locales/ta/translation.json b/frontend/src/i18n/locales/ta/translation.json index 9dbd1be477e..86c6eb56965 100644 --- a/frontend/src/i18n/locales/ta/translation.json +++ b/frontend/src/i18n/locales/ta/translation.json @@ -671,10 +671,12 @@ "Create Namespace": "நேம்ஸ்பேஸ் உருவாக்கு", "To": "To", "used": "பயன்படுத்தப்பட்டது", + "Allocatable": "", "Scheduling Disabled": "ஷெட்யூலிங் முடக்கப்பட்டது", "Scheduling Enabled": "ஷெட்யூலிங் இயக்கப்பட்டது", "Taints": "டெய்ன்ட்ஸ்", "Not ready yet!": "இன்னும் தயாராகவில்லை!", + "Disk": "", "Internal IP": "இன்டர்னல் IP", "None": "ஏதுமில்லை", "Software": "சாஃப்ட்வேர்", diff --git a/frontend/src/i18n/locales/ur/glossary.json b/frontend/src/i18n/locales/ur/glossary.json index d95e24ea3b6..7e0841dcef8 100644 --- a/frontend/src/i18n/locales/ur/glossary.json +++ b/frontend/src/i18n/locales/ur/glossary.json @@ -118,6 +118,7 @@ "except: {{ cidrExceptions }}": "سوائے: {{ cidrExceptions }}", "Pod Selector": "پوڈ سلیکٹر", "Network Policies": "نیٹ ورک پالیسیاں", + "Capacity": "صلاحیت", "Uncordoning node {{name}}…": "نوڈ {{name}} کو انکارڈن کیا جا رہا ہے…", "Cordoning node {{name}}…": "نوڈ {{name}} کو کارڈن کیا جا رہا ہے…", "Uncordoned node {{name}}.": "نوڈ {{name}} کا انکارڈن مکمل ہوا۔", @@ -235,7 +236,6 @@ "Git Tree State": "Git ٹری اسٹیٹ", "Go Version": "Go ورژن", "Platform": "پلیٹ فارم", - "Capacity": "صلاحیت", "Access Modes": "ایکسیس موڈز", "Volume Mode": "والیوم موڈ", "Storage Class": "اسٹوریج کلاس", diff --git a/frontend/src/i18n/locales/ur/translation.json b/frontend/src/i18n/locales/ur/translation.json index 1b3db9ce637..fb8b0e5d3e9 100644 --- a/frontend/src/i18n/locales/ur/translation.json +++ b/frontend/src/i18n/locales/ur/translation.json @@ -671,10 +671,12 @@ "Create Namespace": "نیم اسپیس بنائیں", "To": "تک", "used": "استعمال شدہ", + "Allocatable": "", "Scheduling Disabled": "شیڈولنگ غیر فعال", "Scheduling Enabled": "شیڈولنگ فعال", "Taints": "ٹینٹس", "Not ready yet!": "ابھی تیار نہیں", + "Disk": "", "Internal IP": "اندرونی آئی پی", "None": "کوئی نہیں", "Software": "سافٹ ویئر", diff --git a/frontend/src/i18n/locales/zh-tw/glossary.json b/frontend/src/i18n/locales/zh-tw/glossary.json index afbee76291f..d4f2f0a768d 100644 --- a/frontend/src/i18n/locales/zh-tw/glossary.json +++ b/frontend/src/i18n/locales/zh-tw/glossary.json @@ -118,6 +118,7 @@ "except: {{ cidrExceptions }}": "例外: {{ cidrExceptions }}", "Pod Selector": "Pod 選擇器", "Network Policies": "網路政策", + "Capacity": "容量", "Uncordoning node {{name}}…": "解除封鎖節點 {{name}}…", "Cordoning node {{name}}…": "封鎖節點 {{name}}…", "Uncordoned node {{name}}.": "解除封鎖節點 {{name}}.", @@ -235,7 +236,6 @@ "Git Tree State": "Git 樹狀態", "Go Version": "Go 版本", "Platform": "平台", - "Capacity": "容量", "Access Modes": "存取模式", "Volume Mode": "卷模式", "Storage Class": "儲存類別", diff --git a/frontend/src/i18n/locales/zh-tw/translation.json b/frontend/src/i18n/locales/zh-tw/translation.json index ebd38e896d2..88a3e56d4e0 100644 --- a/frontend/src/i18n/locales/zh-tw/translation.json +++ b/frontend/src/i18n/locales/zh-tw/translation.json @@ -666,10 +666,12 @@ "Create Namespace": "新增命名空間", "To": "到", "used": "已用", + "Allocatable": "", "Scheduling Disabled": "排程已禁用", "Scheduling Enabled": "排程已啟用", "Taints": "污點", "Not ready yet!": "尚未準備好!", + "Disk": "", "Internal IP": "內部 IP", "None": "無", "Software": "軟體", diff --git a/frontend/src/i18n/locales/zh/glossary.json b/frontend/src/i18n/locales/zh/glossary.json index 3eeac098e87..032aec4174b 100644 --- a/frontend/src/i18n/locales/zh/glossary.json +++ b/frontend/src/i18n/locales/zh/glossary.json @@ -118,6 +118,7 @@ "except: {{ cidrExceptions }}": "例外: {{ cidrExceptions }}", "Pod Selector": "Pod 选择器", "Network Policies": "网络策略", + "Capacity": "容量", "Uncordoning node {{name}}…": "解除封锁节点 {{name}}…", "Cordoning node {{name}}…": "封锁节点 {{name}}…", "Uncordoned node {{name}}.": "解除封锁节点 {{name}}.", @@ -235,7 +236,6 @@ "Git Tree State": "Git 树状态", "Go Version": "Go 版本", "Platform": "平台", - "Capacity": "容量", "Access Modes": "存取模式", "Volume Mode": "卷模式", "Storage Class": "存储类别", diff --git a/frontend/src/i18n/locales/zh/translation.json b/frontend/src/i18n/locales/zh/translation.json index eb5d25e4d85..71e9de04d36 100644 --- a/frontend/src/i18n/locales/zh/translation.json +++ b/frontend/src/i18n/locales/zh/translation.json @@ -666,10 +666,12 @@ "Create Namespace": "新增命名空间", "To": "到", "used": "已用", + "Allocatable": "", "Scheduling Disabled": "调度已禁用", "Scheduling Enabled": "调度已启用", "Taints": "污点", "Not ready yet!": "尚未准备好!", + "Disk": "", "Internal IP": "内部 IP", "None": "无", "Software": "软件", diff --git a/frontend/src/lib/units.ts b/frontend/src/lib/units.ts index 5ac919871e6..0f7ba1536f4 100644 --- a/frontend/src/lib/units.ts +++ b/frontend/src/lib/units.ts @@ -62,6 +62,10 @@ function parseUnitsOfBytes(value: string): number { return number * 1000 ** unitIndex; } +export function unparseDiskSpace(value: number) { + return unparseRam(value); +} + export function unparseRam(value: number) { let i = 0; while (value >= 1024 && i < RAM_TYPES.length - 1) { diff --git a/frontend/src/plugin/__snapshots__/pluginLib.snapshot b/frontend/src/plugin/__snapshots__/pluginLib.snapshot index 05c86716518..a9ec0b0c029 100644 --- a/frontend/src/plugin/__snapshots__/pluginLib.snapshot +++ b/frontend/src/plugin/__snapshots__/pluginLib.snapshot @@ -562,6 +562,7 @@ "parseDiskSpace": [Function], "parseRam": [Function], "unparseCpu": [Function], + "unparseDiskSpace": [Function], "unparseRam": [Function], }, "useErrorState": [Function],