Skip to content

Commit 75ede7b

Browse files
committed
feat(FR-540): display max, avg stats in session detail panel (UI hidden) (#3432)
resolves #3188 (FR-540) ### Add resource usage display options in session detail page > The Max, Avg cpu values currently require a Core-side fix. This PR adds a dropdown selector in the session detail page that allows users to choose between displaying current, maximum, or average resource usage statistics. The feature enhances the resource monitoring capabilities by providing more comprehensive usage information. Key changes: - Added a dropdown selector in the session detail page with options for "Current", "Max", and "Avg" resource usage (If there is no value, it is not visible on the screen.) - Modified the `SessionUsageMonitor` component to accept a `displayTarget` prop - Updated the component to display the selected resource usage metric (current/max/avg) - Added corresponding translation strings for all supported languages |Detail Panel|Session List| |---|---| |![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/lSyr8xXz1wdXALkJKzVx/9773788f-1af3-4107-9388-73d84db94ac5.png)|![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/lSyr8xXz1wdXALkJKzVx/46f9465a-b5f5-4554-be92-607979e38867.png)| |![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/lSyr8xXz1wdXALkJKzVx/4b09657d-0d58-4326-9584-010e39d90661.png)|![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/lSyr8xXz1wdXALkJKzVx/f50fd7b2-eb31-4257-b177-0cc6ce06261d.png)| |![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/lSyr8xXz1wdXALkJKzVx/7a2ed91e-a0f4-4591-b641-bc53fe4ac991.png)|![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/lSyr8xXz1wdXALkJKzVx/2d3d38c3-097e-47cb-a962-f7269e794dae.png)| **Checklist:** - [x] Documentation - [ ] Minium required manager version - [ ] Specific setting for review (eg., KB link, endpoint or how to setup) - [ ] Minimum requirements to check during review - [ ] Test case(s) to demonstrate the difference of before/after
1 parent e155485 commit 75ede7b

23 files changed

Lines changed: 175 additions & 12 deletions

react/src/components/SessionDetailContent.tsx

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import {
2727
Button,
2828
Descriptions,
2929
Grid,
30+
Select,
3031
Skeleton,
3132
Tag,
3233
theme,
@@ -54,6 +55,9 @@ const SessionDetailContent: React.FC<{
5455
useState<boolean>(false);
5556
const [openStatusDetailModal, setOpenStatusDetailModal] =
5657
useState<boolean>(false);
58+
const [usageMonitorDisplayTarget, setUsageMonitorDisplayTarget] = useState<
59+
'max' | 'avg' | 'current'
60+
>('current');
5761

5862
// TODO: remove and refactor this waterfall request after v24.12.0
5963
// get the project id of the session for <= v24.12.0.
@@ -330,8 +334,44 @@ const SessionDetailContent: React.FC<{
330334
/>
331335
</Descriptions.Item>
332336
) : null}
333-
<Descriptions.Item label={'Resource Usage'} span={md ? 2 : 1}>
334-
<SessionUsageMonitor sessionFrgmt={session} />
337+
<Descriptions.Item
338+
label={
339+
<Flex direction="column" align="start" gap={token.marginSM}>
340+
<Typography.Text style={{ color: token.colorTextSecondary }}>
341+
{t('session.ResourceUsage')}
342+
</Typography.Text>
343+
<Select
344+
size="small"
345+
popupMatchSelectWidth={false}
346+
style={{ width: '100%', display: 'none' }}
347+
variant="filled"
348+
defaultValue={'current'}
349+
options={[
350+
{
351+
label: t('session.CurrentUsage'),
352+
value: 'current',
353+
},
354+
{
355+
label: t('session.MaxUsage'),
356+
value: 'max',
357+
},
358+
{
359+
label: t('session.AverageUsage'),
360+
value: 'avg',
361+
},
362+
]}
363+
onChange={(value: 'current' | 'max' | 'avg') => {
364+
setUsageMonitorDisplayTarget(value);
365+
}}
366+
/>
367+
</Flex>
368+
}
369+
span={md ? 2 : 1}
370+
>
371+
<SessionUsageMonitor
372+
sessionFrgmt={session}
373+
displayTarget={usageMonitorDisplayTarget}
374+
/>
335375
</Descriptions.Item>
336376
</Descriptions>
337377
</Flex>

react/src/components/SessionUsageMonitor.tsx

Lines changed: 49 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import { useFragment } from 'react-relay';
1717
interface SessionUsageMonitorProps extends ProgressProps {
1818
sessionFrgmt: SessionUsageMonitorFragment$key | null;
1919
size?: 'small' | 'default';
20+
displayTarget?: 'max' | 'avg' | 'current';
2021
}
2122

2223
interface SessionUtilItemProps {
@@ -93,6 +94,7 @@ const SessionUtilItem: React.FC<SessionUtilItemProps> = ({
9394
const SessionUsageMonitor: React.FC<SessionUsageMonitorProps> = ({
9495
sessionFrgmt,
9596
size = 'default',
97+
displayTarget = 'current',
9698
}) => {
9799
const { mergedResourceSlots } = useResourceSlotsDetails();
98100

@@ -156,31 +158,51 @@ const SessionUsageMonitor: React.FC<SessionUsageMonitorProps> = ({
156158
} GiB`;
157159
};
158160

161+
const displayTargetName =
162+
displayTarget === 'current'
163+
? 'current'
164+
: (`stats.${displayTarget}` as const);
159165
const utilItems = filterEmptyItem([
160166
sortedLiveStat?.cpu_util && (
161167
<SessionUtilItem
162168
key={'cpu'}
163169
size={size}
164170
title={mergedResourceSlots?.['cpu']?.human_readable_name}
165-
percent={sortedLiveStat?.cpu_util?.pct || 0}
171+
percent={
172+
displayTarget === 'current'
173+
? (sortedLiveStat?.cpu_util?.pct ?? '0')
174+
: (sortedLiveStat?.cpu_util?.[displayTargetName] ?? '0')
175+
}
166176
/>
167177
),
168-
sortedLiveStat?.mem && (
178+
sortedLiveStat?.mem && sortedLiveStat?.mem?.[displayTargetName] && (
169179
<SessionUtilItem
170180
key={'mem'}
171181
size={size}
172182
title={mergedResourceSlots?.['mem']?.human_readable_name}
173-
percent={sortedLiveStat?.mem?.pct || 0}
183+
percent={
184+
displayTarget === 'current'
185+
? sortedLiveStat?.mem?.pct || '0'
186+
: _.toString(
187+
((convertBinarySizeUnit(
188+
sortedLiveStat?.mem?.[displayTargetName],
189+
'g',
190+
)?.number ?? 0) /
191+
(convertBinarySizeUnit(sortedLiveStat?.mem?.capacity, 'g')
192+
?.number || 1)) *
193+
100,
194+
)
195+
}
174196
description={displayMemoryUsage(
175-
sortedLiveStat?.mem?.current,
197+
sortedLiveStat?.mem?.[displayTargetName],
176198
occupiedSlots?.mem,
177199
)}
178200
tooltipTitle={
179201
<Flex direction="column" align="stretch">
180202
{mergedResourceSlots?.['mem']?.human_readable_name}
181203
<br />
182204
{displayMemoryUsage(
183-
sortedLiveStat?.mem?.current,
205+
sortedLiveStat?.mem?.[displayTargetName],
184206
occupiedSlots?.mem,
185207
)}
186208
</Flex>
@@ -198,8 +220,7 @@ const SessionUsageMonitor: React.FC<SessionUsageMonitorProps> = ({
198220
if (size === 'small' && !key?.endsWith('mem')) {
199221
deviceKey = undefined;
200222
}
201-
202-
return deviceKey ? (
223+
return deviceKey && value?.[displayTargetName] ? (
203224
<SessionUtilItem
204225
key={key}
205226
size={size}
@@ -212,10 +233,25 @@ const SessionUsageMonitor: React.FC<SessionUsageMonitorProps> = ({
212233
</Typography.Text>
213234
</>
214235
}
215-
percent={value.pct || 0}
236+
percent={
237+
displayTarget === 'current'
238+
? value?.pct || '0'
239+
: _.includes(key, 'util')
240+
? value?.[displayTargetName]
241+
: _.toString(
242+
((convertBinarySizeUnit(value?.[displayTargetName], 'g')
243+
?.number ?? 0) /
244+
(convertBinarySizeUnit(value?.capacity, 'g')?.number ||
245+
1)) *
246+
100,
247+
)
248+
}
216249
description={
217250
_.includes(key, 'mem')
218-
? displayMemoryUsage(value?.current, value?.capacity)
251+
? displayMemoryUsage(
252+
value?.[displayTargetName],
253+
value?.capacity,
254+
)
219255
: undefined
220256
}
221257
tooltipTitle={
@@ -225,7 +261,10 @@ const SessionUsageMonitor: React.FC<SessionUsageMonitorProps> = ({
225261
<>
226262
(mem)
227263
<br />
228-
{displayMemoryUsage(value?.current, value?.capacity)}
264+
{displayMemoryUsage(
265+
value?.[displayTargetName],
266+
value?.capacity,
267+
)}
229268
</>
230269
)}
231270
</Flex>

resources/i18n/de.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1110,6 +1110,7 @@
11101110
"AlreadyTerminatingSession": "Die Sitzung ist bereits beendet.",
11111111
"Architecture": "Architektur",
11121112
"Arguments": "Argumente",
1113+
"AverageUsage": "Avg",
11131114
"Batch": "Stapel",
11141115
"CPU": "CPU",
11151116
"CheckAgainDialog": "Diese Aktion kann nicht rückgängig gemacht werden. Willst du fortfahren?",
@@ -1126,6 +1127,7 @@
11261127
"ContainerToCleanUp": "Behälter zum Aufräumen",
11271128
"Core": "Ader",
11281129
"CreationFailed": "Sitzungserstellung fehlgeschlagen. Bitte versuchen Sie es in einigen Minuten erneut.",
1130+
"CurrentUsage": "Aktuell",
11291131
"DefaultTensorboardPath": "/home/work/logs",
11301132
"DescCommitSession": "Sie sind im Begriff, einen Container zu übertragen, der der folgenden Sitzung entspricht:",
11311133
"DownloadingCSVFile": "CSV-Datei wird heruntergeladen...",
@@ -1164,6 +1166,7 @@
11641166
"MEM": "Speicher",
11651167
"MaxSessionLifetime": "Maximale Lebensdauer der Sitzung",
11661168
"MaxSessionLifetimeDesc": "Erzwingt die Beendigung von Sitzungen nach dieser Zeit ab der Erstellung. Dadurch wird verhindert, dass die Sitzung unendlich lange läuft.",
1169+
"MaxUsage": "Max",
11671170
"Message": "Nachricht",
11681171
"ModifyArguments": "Argumente ändern",
11691172
"MySessions": "Meine Sitzungen",
@@ -1187,6 +1190,7 @@
11871190
"RequestContainerCommit": "Container Commit anfordern",
11881191
"Reservation": "Reservierung",
11891192
"ResourceGroup": "Ressourcengruppe",
1193+
"ResourceUsage": "Ressourcenverbrauch",
11901194
"Running": "Laufen",
11911195
"SFTPDescription": "Verwenden Sie Ihre bevorzugte SSH/SFTP-Anwendung, um eine Verbindung herzustellen.",
11921196
"SFTPExtraNotification": "Es wird empfohlen, Sitzungen zu löschen, nachdem sie benutzt wurden, da die Anzahl der Sitzungen begrenzt ist. Sitzungen, die innerhalb eines bestimmten Zeitraums nicht zum Hochladen von Dateien verwendet werden, können automatisch gelöscht werden.",

resources/i18n/el.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1106,6 +1106,7 @@
11061106
"AlreadyTerminatingSession": "Ήδη τερματισμός της συνεδρίας.",
11071107
"Architecture": "Αρχιτεκτονική",
11081108
"Arguments": "Επιχειρήματα",
1109+
"AverageUsage": "Μέγα μέρος",
11091110
"Batch": "Παρτίδα",
11101111
"CPU": "CPU",
11111112
"CheckAgainDialog": "Αυτή η πράξη δε μπορεί να αναιρεθεί. Θέλετε να συνεχίσετε?",
@@ -1122,6 +1123,7 @@
11221123
"ContainerToCleanUp": "Δοχείο(α) για καθαρισμό",
11231124
"Core": "πυρήνας",
11241125
"CreationFailed": "Η δημιουργία περιόδου σύνδεσης απέτυχε. Δοκιμάστε ξανά σε λίγα λεπτά.",
1126+
"CurrentUsage": "Ρεύμα",
11251127
"DefaultTensorboardPath": "/ σπίτι / εργασία / αρχεία καταγραφής",
11261128
"DescCommitSession": "Πρόκειται να δεσμεύσετε το δοχείο που αντιστοιχεί στην παρακάτω συνεδρία:",
11271129
"DownloadingCSVFile": "Λήψη αρχείου CSV ...",
@@ -1160,6 +1162,7 @@
11601162
"MEM": "Μνήμη",
11611163
"MaxSessionLifetime": "Μέγιστη διάρκεια ζωής συνόδου",
11621164
"MaxSessionLifetimeDesc": "Αναγκαστικός τερματισμός συνόδων μετά από αυτό το χρονικό διάστημα από τη δημιουργία. Αποτρέπει τη λειτουργία της συνόδου στο άπειρο.",
1165+
"MaxUsage": "Μέγιστος",
11631166
"Message": "Μήνυμα",
11641167
"ModifyArguments": "Τροποποιήστε τα ορίσματα",
11651168
"MySessions": "Οι συνεδρίες μου",
@@ -1183,6 +1186,7 @@
11831186
"RequestContainerCommit": "Αίτηση δέσμευσης εμπορευματοκιβωτίου",
11841187
"Reservation": "Κράτηση",
11851188
"ResourceGroup": "Ομάδα πόρων",
1189+
"ResourceUsage": "Χρήση πόρων",
11861190
"Running": "Τρέξιμο",
11871191
"SFTPDescription": "Χρησιμοποιήστε την αγαπημένη σας εφαρμογή SSH / SFTP για να συνδεθείτε.",
11881192
"SFTPExtraNotification": "Συνιστάται να διαγράφετε συνεδρίες μετά τη χρήση τους, καθώς υπάρχει όριο στον αριθμό των συνεδριών. Οι συνεδρίες που δεν χρησιμοποιούνται για τη μεταφόρτωση αρχείων εντός ορισμένου χρονικού διαστήματος ενδέχεται να διαγραφούν αυτόματα.",

resources/i18n/en.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1116,6 +1116,7 @@
11161116
"AlreadyTerminatingSession": "Already terminating the session.",
11171117
"Architecture": "Architecture",
11181118
"Arguments": "Arguments",
1119+
"AverageUsage": "Average",
11191120
"Batch": "Batch",
11201121
"CPU": "CPU",
11211122
"CheckAgainDialog": "This action cannot be undone. Do you want to proceed?",
@@ -1132,6 +1133,7 @@
11321133
"ContainerToCleanUp": "Container(s) to clean up",
11331134
"Core": "core",
11341135
"CreationFailed": "Session creation failed. Please try again in few minutes.",
1136+
"CurrentUsage": "Current",
11351137
"DefaultTensorboardPath": "/home/work/logs",
11361138
"DescCommitSession": "You are about to commit container corresponding to the session below: ",
11371139
"DownloadingCSVFile": "Downloading CSV file...",
@@ -1170,6 +1172,7 @@
11701172
"MEM": "MEM",
11711173
"MaxSessionLifetime": "Max Session Lifetime",
11721174
"MaxSessionLifetimeDesc": "Force-terminate sessions after this time from creation. It prevents the session from running infinitely.",
1175+
"MaxUsage": "Max",
11731176
"Message": "Message",
11741177
"ModifyArguments": "Modify arguments",
11751178
"MySessions": "My Sessions",
@@ -1193,6 +1196,7 @@
11931196
"RequestContainerCommit": "Request Container Commit",
11941197
"Reservation": "Reservation",
11951198
"ResourceGroup": "Resource Group",
1199+
"ResourceUsage": "Resource Usage",
11961200
"Running": "Running",
11971201
"SFTPDescription": "You can upload files quickly and securely through an SSH/SFTP client. If you haven't uploaded your SSH key pair beforehand, please click the \"DOWNLOAD SSH KEY\" button to save your SSH key first. You can then use that key to execute commands such as SFTP, SCP, and Rsync. On the \"Session - Upload Session\" page, you can manage the list of sessions for file uploads.",
11981202
"SFTPExtraNotification": "It is recommended to delete sessions after they have been used, as there is a limit on the number of sessions. Sessions that are not used for uploading files within a certain period of time may be automatically deleted.",

resources/i18n/es.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1110,6 +1110,7 @@
11101110
"AlreadyTerminatingSession": "Ya está terminando la sesión.",
11111111
"Architecture": "Arquitectura",
11121112
"Arguments": "Argumentos",
1113+
"AverageUsage": "Aviso",
11131114
"Batch": "Lote",
11141115
"CPU": "CPU",
11151116
"CheckAgainDialog": "Esta acción no se puede deshacer. ¿Desea continuar?",
@@ -1126,6 +1127,7 @@
11261127
"ContainerToCleanUp": "Contenedor(es) para limpiar",
11271128
"Core": "núcleo",
11281129
"CreationFailed": "No se ha podido crear la sesión. Por favor, inténtelo de nuevo en unos minutos.",
1130+
"CurrentUsage": "Actual",
11291131
"DefaultTensorboardPath": "/home/trabajo/registros",
11301132
"DescCommitSession": "Está a punto de comprometer el contenedor correspondiente a la sesión siguiente:",
11311133
"DownloadingCSVFile": "Descargando archivo CSV...",
@@ -1164,6 +1166,7 @@
11641166
"MEM": "Memoria",
11651167
"MaxSessionLifetime": "Duración máxima de la sesión",
11661168
"MaxSessionLifetimeDesc": "Fuerza la finalización de las sesiones después de este tiempo desde su creación. Evita que la sesión se ejecute infinitamente.",
1169+
"MaxUsage": "Máximo",
11671170
"Message": "Mensaje",
11681171
"ModifyArguments": "Modificar argumentos",
11691172
"MySessions": "Mis sesiones",
@@ -1187,6 +1190,7 @@
11871190
"RequestContainerCommit": "Solicitud de Compromiso de Contenedor",
11881191
"Reservation": "Reserva",
11891192
"ResourceGroup": "Grupo de recursos",
1193+
"ResourceUsage": "Uso de recursos",
11901194
"Running": "Ejecutar",
11911195
"SFTPDescription": "Puede cargar archivos de forma rápida y segura a través de un cliente SSH/SFTP. Si no has cargado previamente tu par de claves SSH, haz clic en el botón \"Descargar clave SSH\" para guardar primero tu clave SSH. A continuación, puede utilizar esa clave para ejecutar comandos como SFTP, SCP y Rsync. En la página \"Sesión - Sesión de carga\", puede gestionar la lista de sesiones para la carga de archivos.",
11921196
"SFTPExtraNotification": "Se recomienda eliminar las sesiones una vez utilizadas, ya que existe un límite en el número de sesiones. Las sesiones que no se utilicen para subir archivos en un determinado periodo de tiempo pueden eliminarse automáticamente.",

resources/i18n/fi.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1108,6 +1108,7 @@
11081108
"AlreadyTerminatingSession": "Istunto on jo päättymässä.",
11091109
"Architecture": "Arkkitehtuuri",
11101110
"Arguments": "Argumentit",
1111+
"AverageUsage": "Avg",
11111112
"Batch": "Erä",
11121113
"CPU": "CPU",
11131114
"CheckAgainDialog": "Tätä toimenpidettä ei voi perua. Haluatko jatkaa?",
@@ -1124,6 +1125,7 @@
11241125
"ContainerToCleanUp": "Säiliö(t) puhdistettava(t).",
11251126
"Core": "ydin",
11261127
"CreationFailed": "Istunnon luominen epäonnistui. Yritä uudelleen muutaman minuutin kuluttua.",
1128+
"CurrentUsage": "Nykyinen",
11271129
"DefaultTensorboardPath": "/home/work/logs",
11281130
"DescCommitSession": "Olet aikeissa sitouttaa alla olevaa istuntoa vastaavan kontin:",
11291131
"DownloadingCSVFile": "CSV-tiedoston lataaminen...",
@@ -1162,6 +1164,7 @@
11621164
"MEM": "Muisti",
11631165
"MaxSessionLifetime": "Istunnon enimmäiskestoikä",
11641166
"MaxSessionLifetimeDesc": "Pakottaa lopettamaan istunnot tämän ajan kuluttua luomisesta. Se estää istuntoa toimimasta loputtomiin.",
1167+
"MaxUsage": "Max",
11651168
"Message": "Viesti",
11661169
"ModifyArguments": "Muokkaa argumentteja",
11671170
"MySessions": "Istunnoni",
@@ -1185,6 +1188,7 @@
11851188
"RequestContainerCommit": "Pyyntö Container Commit",
11861189
"Reservation": "Varaukset",
11871190
"ResourceGroup": "Resurssiryhmä",
1191+
"ResourceUsage": "Resurssien käyttö",
11881192
"Running": "Running",
11891193
"SFTPDescription": "Voit ladata tiedostoja nopeasti ja turvallisesti SSH/SFTP-asiakasohjelman kautta. Jos et ole ladannut SSH-avainparia etukäteen, tallenna SSH-avaimesi ensin napsauttamalla \"SSH-avaimen lataus\" -painiketta. Tämän jälkeen voit käyttää avainta SFTP:n, SCP:n ja Rsyncin kaltaisten komentojen suorittamiseen. \"Istunto - Upload Session\" -sivulla voit hallita istuntojen luetteloa tiedostojen lataamista varten.",
11901194
"SFTPExtraNotification": "On suositeltavaa poistaa istunnot sen jälkeen, kun ne on käytetty, sillä istuntojen määrä on rajoitettu. Istunnot, joita ei käytetä tiedostojen lataamiseen tietyn ajan kuluessa, voidaan poistaa automaattisesti.",

resources/i18n/fr.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1110,6 +1110,7 @@
11101110
"AlreadyTerminatingSession": "La session est déjà terminée.",
11111111
"Architecture": "Architecture",
11121112
"Arguments": "Arguments",
1113+
"AverageUsage": "AVG",
11131114
"Batch": "Lot",
11141115
"CPU": "UNITÉ CENTRALE",
11151116
"CheckAgainDialog": "Cette action ne peut pas être annulée. Voulez-vous poursuivre?",
@@ -1126,6 +1127,7 @@
11261127
"ContainerToCleanUp": "Conteneur(s) à nettoyer",
11271128
"Core": "cœur",
11281129
"CreationFailed": "La création de la session a échoué. Veuillez réessayer dans quelques minutes.",
1130+
"CurrentUsage": "Actuel",
11291131
"DefaultTensorboardPath": "/maison/travail/journaux",
11301132
"DescCommitSession": "Vous êtes sur le point d'engager le conteneur correspondant à la session ci-dessous :",
11311133
"DownloadingCSVFile": "Téléchargement du fichier CSV...",
@@ -1164,6 +1166,7 @@
11641166
"MEM": "Mémoire",
11651167
"MaxSessionLifetime": "Durée de vie maximale de la session",
11661168
"MaxSessionLifetimeDesc": "Force l'arrêt des sessions après ce délai de création. Cela empêche la session de fonctionner à l'infini.",
1169+
"MaxUsage": "Max",
11671170
"Message": "Message",
11681171
"ModifyArguments": "Modifier les arguments",
11691172
"MySessions": "Mes sessions",
@@ -1187,6 +1190,7 @@
11871190
"RequestContainerCommit": "Demande de conteneur Engagement",
11881191
"Reservation": "Réservation",
11891192
"ResourceGroup": "Groupe de ressources",
1193+
"ResourceUsage": "Utilisation des ressources",
11901194
"Running": "En cours",
11911195
"SFTPDescription": "Utilisez votre application SSH/SFTP préférée pour vous connecter.",
11921196
"SFTPExtraNotification": "Il est recommandé de supprimer les sessions après leur utilisation, car leur nombre est limité. Les sessions qui ne sont pas utilisées pour télécharger des fichiers pendant une certaine période peuvent être automatiquement supprimées.",

0 commit comments

Comments
 (0)