+ This option configures the warning threshold of free disk space. When free
+ space drops below this limit, a warning is shown for the corresponding agent
+ in the computer overview page, but the agent is not taken offline.
+
diff --git a/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitor/column.jelly b/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitor/column.jelly
index 81a19eb0a9f8..3d3ca8b23c2b 100644
--- a/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitor/column.jelly
+++ b/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitor/column.jelly
@@ -29,7 +29,19 @@ THE SOFTWARE.
This monitors the available disk space of
$JENKINS_HOME
- on each agent, and if it gets below a threshold, the agent will be marked
- offline.
+ on the controller or the remote root directory on each agent, and if it gets
+ below a threshold, the agent will be marked temporarily offline.
This directory is where all your builds are performed, so if it fills up,
diff --git a/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitorNodeProperty/config.jelly b/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitorNodeProperty/config.jelly
new file mode 100644
index 000000000000..8c1afdef6b14
--- /dev/null
+++ b/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitorNodeProperty/config.jelly
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitorNodeProperty/config_de.properties b/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitorNodeProperty/config_de.properties
new file mode 100644
index 000000000000..507903f0e77b
--- /dev/null
+++ b/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitorNodeProperty/config_de.properties
@@ -0,0 +1,2 @@
+Free\ Disk\ Space\ Threshold=Schwellwert für freien Festplattenspeicherplatz
+Free\ Temp\ Space\ Threshold=Schwellwert für freien temporären Speicherplatz
diff --git a/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitorNodeProperty/help-freeDiskSpaceThreshold.html b/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitorNodeProperty/help-freeDiskSpaceThreshold.html
new file mode 100644
index 000000000000..4e81303bcb73
--- /dev/null
+++ b/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitorNodeProperty/help-freeDiskSpaceThreshold.html
@@ -0,0 +1,8 @@
+
+ This option configures the amount of minimum amount of free disk space desired
+ for the agent's proper operation, such as "1.5GB", "100KiB", etc. If the agent
+ is found to have less free disk space than this amount, it will be marked
+ temporarily offline.
+
Set to 0 to disable this check on this agent.
+
Set to empty to use the globally defined value.
+
diff --git a/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitorNodeProperty/help-freeDiskSpaceWarningThreshold.html b/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitorNodeProperty/help-freeDiskSpaceWarningThreshold.html
new file mode 100644
index 000000000000..625b5525de0e
--- /dev/null
+++ b/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitorNodeProperty/help-freeDiskSpaceWarningThreshold.html
@@ -0,0 +1,8 @@
+
+ This option configures the amount of minimum amount of free disk space desired
+ for the agent's proper operation, such as "1.5GB", "100KiB", etc. If the agent
+ is found to have less free disk space than this amount, a warning will be
+ shown for it on the computer overview page, but it will not be taken offline.
+
Set to 0 to disable this warning on this agent.
+
Set to empty to use the globally defined value.
+
diff --git a/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitorNodeProperty/help-freeTempSpaceThreshold.html b/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitorNodeProperty/help-freeTempSpaceThreshold.html
new file mode 100644
index 000000000000..56d8a35febab
--- /dev/null
+++ b/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitorNodeProperty/help-freeTempSpaceThreshold.html
@@ -0,0 +1,8 @@
+
+ This option configures the amount of minimum amount of free temp space desired
+ for the agent's proper operation, such as "1.5GB", "100KiB", etc. If the agent
+ is found to have less free temp space than this amount, it will be marked
+ temporarily offline.
+
Set to 0 to disable this check on this agent.
+
Set to empty to use the globally defined value.
+
diff --git a/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitorNodeProperty/help-freeTempSpaceWarningThreshold.html b/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitorNodeProperty/help-freeTempSpaceWarningThreshold.html
new file mode 100644
index 000000000000..102843f4413c
--- /dev/null
+++ b/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitorNodeProperty/help-freeTempSpaceWarningThreshold.html
@@ -0,0 +1,8 @@
+
+ This option configures the amount of minimum amount of free temp space desired
+ for the agent's proper operation, such as "1.5GB", "100KiB", etc. If the agent
+ is found to have less free temp space than this amount, a warning will be
+ shown for it on the computer overview page, but it will not be taken offline.
+
Set to 0 to disable this warning on this agent.
+
Set to empty to use the globally defined value.
+
diff --git a/core/src/main/resources/hudson/node_monitors/Messages.properties b/core/src/main/resources/hudson/node_monitors/Messages.properties
index 749b326d2ab0..75c656aa4f21 100644
--- a/core/src/main/resources/hudson/node_monitors/Messages.properties
+++ b/core/src/main/resources/hudson/node_monitors/Messages.properties
@@ -31,6 +31,7 @@ ResponseTimeMonitor.TimeOut=Timed out for last {0} attempts
SwapSpaceMonitor.DisplayName=Free Swap Space
TemporarySpaceMonitor.DisplayName=Free Temp Space
AbstractNodeMonitorDescriptor.NoDataYet=Not yet
-DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=Disk space is too low. Only {0}GB left on {1}.
-DiskSpaceMonitorDescriptor.DiskSpace.FreeSpace={0}GB left on {1}.
+DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=Disk space is below threshold of {2}. Only {0} out of {3} left on {1}.
+DiskSpaceMonitorDescriptor.DiskSpace.FreeSpace={0} out of {2} left on {1}.
MonitorMarkedNodeOffline.DisplayName=Node Marked Offline Due to Health Check
+DiskSpaceMonitorNodeProperty.DisplayName=Disk Space Monitoring Thresholds
diff --git a/core/src/main/resources/hudson/node_monitors/Messages_bg.properties b/core/src/main/resources/hudson/node_monitors/Messages_bg.properties
index f7910a8de2ad..e6c3127b19d6 100644
--- a/core/src/main/resources/hudson/node_monitors/Messages_bg.properties
+++ b/core/src/main/resources/hudson/node_monitors/Messages_bg.properties
@@ -43,7 +43,7 @@ TemporarySpaceMonitor.DisplayName=\
AbstractNodeMonitorDescriptor.NoDataYet=\
Няма данни
DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=\
- Дисковото пространство привършва. На {1} остават само {0} GB.
+ Дисковото пространство привършва. На {1} остават само {0} .
MonitorMarkedNodeOffline.DisplayName=\
Компютърът е отбелязан като извън линия в резултат на проверката на\
състоянието му.
diff --git a/core/src/main/resources/hudson/node_monitors/Messages_cs.properties b/core/src/main/resources/hudson/node_monitors/Messages_cs.properties
index 2010f4261c31..68d3793c55a7 100644
--- a/core/src/main/resources/hudson/node_monitors/Messages_cs.properties
+++ b/core/src/main/resources/hudson/node_monitors/Messages_cs.properties
@@ -20,4 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=Málo místa na disku. Zbývá pouze {0}GB.
+DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=Málo místa na disku. Zbývá pouze {0}.
diff --git a/core/src/main/resources/hudson/node_monitors/Messages_da.properties b/core/src/main/resources/hudson/node_monitors/Messages_da.properties
index 6a9940dfab1a..edb1eff194f6 100644
--- a/core/src/main/resources/hudson/node_monitors/Messages_da.properties
+++ b/core/src/main/resources/hudson/node_monitors/Messages_da.properties
@@ -29,4 +29,4 @@ SwapSpaceMonitor.DisplayName=Ledig Swap Plads
ArchitectureMonitor.DisplayName=Arkitektur
ResponseTimeMonitor.MarkedOffline=Tager {0} offline midlertidigt da den ikke svarer
ResponseTimeMonitor.DisplayName=Respons Tid
-DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=Disk plads for lav. Kun {0}GB tilbage.
+DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=Disk plads for lav. Kun {0} tilbage.
diff --git a/core/src/main/resources/hudson/node_monitors/Messages_de.properties b/core/src/main/resources/hudson/node_monitors/Messages_de.properties
index cefa1860de38..1d9b196fbb98 100644
--- a/core/src/main/resources/hudson/node_monitors/Messages_de.properties
+++ b/core/src/main/resources/hudson/node_monitors/Messages_de.properties
@@ -28,8 +28,10 @@ ResponseTimeMonitor.DisplayName=Antwortzeit
ResponseTimeMonitor.TimeOut= {0} mal keine Antwort
SwapSpaceMonitor.DisplayName=Freier Swap Space
TemporarySpaceMonitor.DisplayName=Freier TEMP-Platz
-DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=Zu wenig Festplattenplatz: Nur noch {0}GB frei.
+DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=Festplattenplatz unterhalb der Schwelle von {2}. Nur noch {0} von {3} frei in {1}.
+DiskSpaceMonitorDescriptor.DiskSpace.FreeSpace={0} von {2} verbleibend in {1}.
DiskSpaceMonitor.MarkedOnline=Nehme {0} wieder online, da wieder genug Festplattenplatz verfügbar ist.
MonitorMarkedNodeOffline.DisplayName=Knoten durch Health-Check-Prüfung offline
ResponseTimeMonitor.MarkedOffline=Nehme {0} offline, da er nicht antwortet.
AbstractNodeMonitorDescriptor.NoDataYet=Noch keine Daten
+DiskSpaceMonitorNodeProperty.DisplayName=Schwellwerte für die Festplattenspeicherplatzüberwachung
diff --git a/core/src/main/resources/hudson/node_monitors/Messages_es.properties b/core/src/main/resources/hudson/node_monitors/Messages_es.properties
index 6ee2f1b6ddd2..a99d4a6f6b6e 100644
--- a/core/src/main/resources/hudson/node_monitors/Messages_es.properties
+++ b/core/src/main/resources/hudson/node_monitors/Messages_es.properties
@@ -29,4 +29,4 @@ ResponseTimeMonitor.MarkedOffline=Poniendo temporalmente {0} fuera de línea por
ResponseTimeMonitor.TimeOut=Se sobrepasó el tiempo de espera en el último intento de {0}
SwapSpaceMonitor.DisplayName=Espacio de intercambio libre
TemporarySpaceMonitor.DisplayName=Espacio temporal libre
-DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=El espacio en disco es muy bajo, sólo quedan {0}GB.
+DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=El espacio en disco es muy bajo, sólo quedan {0}.
diff --git a/core/src/main/resources/hudson/node_monitors/Messages_fr.properties b/core/src/main/resources/hudson/node_monitors/Messages_fr.properties
index d8c2f6b45846..df06f7fa0b1d 100644
--- a/core/src/main/resources/hudson/node_monitors/Messages_fr.properties
+++ b/core/src/main/resources/hudson/node_monitors/Messages_fr.properties
@@ -28,4 +28,4 @@ ResponseTimeMonitor.DisplayName=Temps de réponse
ResponseTimeMonitor.MarkedOffline={0} est marqué comme déconnecté temporairement, parce qu''il ne répond pas
ResponseTimeMonitor.TimeOut=Time out du dernier essai {0}
SwapSpaceMonitor.DisplayName=Espace de swap disponible
-DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=Espace disque insuffisant. Seulement {0} GB restant sur {1}
+DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=Espace disque insuffisant. Seulement {0} restant sur {1}
diff --git a/core/src/main/resources/hudson/node_monitors/Messages_it.properties b/core/src/main/resources/hudson/node_monitors/Messages_it.properties
index 9a247da8b27d..be608c38abb2 100644
--- a/core/src/main/resources/hudson/node_monitors/Messages_it.properties
+++ b/core/src/main/resources/hudson/node_monitors/Messages_it.properties
@@ -24,9 +24,9 @@
AbstractNodeMonitorDescriptor.NoDataYet=Non ancora
ArchitectureMonitor.DisplayName=Architettura
ClockMonitor.DisplayName=Differenza di orario
-DiskSpaceMonitorDescriptor.DiskSpace.FreeSpace={0} GB rimanenti su {1}.
+DiskSpaceMonitorDescriptor.DiskSpace.FreeSpace={0} rimanenti su {1}.
DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=Lo spazio su disco \
- disponibile è troppo basso. Su {1} rimangono solo {0} GB.
+ disponibile è troppo basso. Su {1} rimangono solo {0}.
DiskSpaceMonitor.DisplayName=Spazio su disco libero
DiskSpaceMonitor.MarkedOffline=Metto temporaneamente {0} non in linea per \
mancanza di spazio su disco
diff --git a/core/src/main/resources/hudson/node_monitors/Messages_ja.properties b/core/src/main/resources/hudson/node_monitors/Messages_ja.properties
index 51d0e5287f59..0c7f9114edd5 100644
--- a/core/src/main/resources/hudson/node_monitors/Messages_ja.properties
+++ b/core/src/main/resources/hudson/node_monitors/Messages_ja.properties
@@ -31,4 +31,4 @@ ResponseTimeMonitor.TimeOut=タイムアウト(直近 {0}回)
SwapSpaceMonitor.DisplayName=空きスワップ容量
TemporarySpaceMonitor.DisplayName=空きテンポラリ容量
AbstractNodeMonitorDescriptor.NoDataYet=データ未取得
-DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=ディスク容量が少なすぎます。残り{0}GBです。
+DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=ディスク容量が少なすぎます。残り{0}です。
diff --git a/core/src/main/resources/hudson/node_monitors/Messages_nl.properties b/core/src/main/resources/hudson/node_monitors/Messages_nl.properties
index 4a0fecb3a35a..bdffd29a2a9c 100644
--- a/core/src/main/resources/hudson/node_monitors/Messages_nl.properties
+++ b/core/src/main/resources/hudson/node_monitors/Messages_nl.properties
@@ -23,4 +23,4 @@
ArchitectureMonitor.DisplayName=Architectuur
ClockMonitor.DisplayName=Tijdsverschil
DiskSpaceMonitor.DisplayName=Beschikbare schijfruimte
-DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=Er is te weinig vrije schijfruimte, nog maar {0} GB over.
+DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=Er is te weinig vrije schijfruimte, nog maar {0} over.
diff --git a/core/src/main/resources/hudson/node_monitors/Messages_pt_BR.properties b/core/src/main/resources/hudson/node_monitors/Messages_pt_BR.properties
index 1d0ce852ed13..bc6f788641f1 100644
--- a/core/src/main/resources/hudson/node_monitors/Messages_pt_BR.properties
+++ b/core/src/main/resources/hudson/node_monitors/Messages_pt_BR.properties
@@ -31,6 +31,6 @@ SwapSpaceMonitor.DisplayName=Espaço de troca livre
ResponseTimeMonitor.MarkedOffline= Indisponível temporariamente por que não está respondendo
AbstractNodeMonitorDescriptor.NoDataYet=Nada ainda
DiskSpaceMonitor.MarkedOnline=Retornando {0} como ativo pois há espaço em disco suficiente novamente
-DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=Pouco espaço em disco. Somente {0}GB disponível em {1}.
+DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=Pouco espaço em disco. Somente {0} disponível em {1}.
MonitorMarkedNodeOffline.DisplayName=Nó marcado como fora de serviço devido a verificação de saúde
-DiskSpaceMonitorDescriptor.DiskSpace.FreeSpace={0}GB restantes em {1}.
+DiskSpaceMonitorDescriptor.DiskSpace.FreeSpace={0} restantes em {1}.
diff --git a/core/src/main/resources/hudson/node_monitors/Messages_ru.properties b/core/src/main/resources/hudson/node_monitors/Messages_ru.properties
index f6f714f97d5e..ad3e610e3763 100644
--- a/core/src/main/resources/hudson/node_monitors/Messages_ru.properties
+++ b/core/src/main/resources/hudson/node_monitors/Messages_ru.properties
@@ -31,6 +31,6 @@ ResponseTimeMonitor.TimeOut=Последние {0} попыток заверши
SwapSpaceMonitor.DisplayName=Свободное пространство подкачки
TemporarySpaceMonitor.DisplayName=Свободное временное пространство
AbstractNodeMonitorDescriptor.NoDataYet=Ещё нет
-DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=Слишком мало дискового пространства. На {1} осталось всего {0} ГБ.
-DiskSpaceMonitorDescriptor.DiskSpace.FreeSpace=На {1} осталось {0} ГБ.
+DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=Слишком мало дискового пространства. На {1} осталось всего {0}.
+DiskSpaceMonitorDescriptor.DiskSpace.FreeSpace=На {1} осталось {0}.
MonitorMarkedNodeOffline.DisplayName=Узлы, помеченные как отключённые проверками состояния
diff --git a/core/src/main/resources/hudson/node_monitors/Messages_sr.properties b/core/src/main/resources/hudson/node_monitors/Messages_sr.properties
index f65bf82f1491..20175c57947a 100644
--- a/core/src/main/resources/hudson/node_monitors/Messages_sr.properties
+++ b/core/src/main/resources/hudson/node_monitors/Messages_sr.properties
@@ -11,4 +11,4 @@ ResponseTimeMonitor.TimeOut=Изсткло време за последњи по
SwapSpaceMonitor.DisplayName=Слободног простора за заменом простору
TemporarySpaceMonitor.DisplayName=Слободног простора за привременом простору
AbstractNodeMonitorDescriptor.NoDataYet=Нема података
-DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=Нема довољно простора на диску. {1} остаје само {0}GB.
+DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=Нема довољно простора на диску. {1} остаје само {0}.
diff --git a/core/src/main/resources/hudson/node_monitors/Messages_sv_SE.properties b/core/src/main/resources/hudson/node_monitors/Messages_sv_SE.properties
index 2a381f215c66..866e0da49d3e 100644
--- a/core/src/main/resources/hudson/node_monitors/Messages_sv_SE.properties
+++ b/core/src/main/resources/hudson/node_monitors/Messages_sv_SE.properties
@@ -19,5 +19,4 @@
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-
-DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=Diskutrymme lågt. Enbart {0}GB kvar.
+DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=Diskutrymme lågt. Enbart {0} kvar.
diff --git a/core/src/main/resources/hudson/node_monitors/Messages_zh_TW.properties b/core/src/main/resources/hudson/node_monitors/Messages_zh_TW.properties
index 9b4a3dea59e8..48558c77287a 100644
--- a/core/src/main/resources/hudson/node_monitors/Messages_zh_TW.properties
+++ b/core/src/main/resources/hudson/node_monitors/Messages_zh_TW.properties
@@ -30,4 +30,4 @@ ResponseTimeMonitor.MarkedOffline={0} 沒有回應,將其離線
ResponseTimeMonitor.TimeOut=最近 {0} 次連線都逾時
SwapSpaceMonitor.DisplayName=可用 Swap 空間
TemporarySpaceMonitor.DisplayName=可用暫存空間
-DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=磁碟空間太少。{1} 上只剩 {0}GB。
+DiskSpaceMonitorDescriptor.DiskSpace.FreeSpaceTooLow=磁碟空間太少。{1} 上只剩 {0}。
diff --git a/core/src/main/resources/hudson/node_monitors/TemporarySpaceMonitor/column.jelly b/core/src/main/resources/hudson/node_monitors/TemporarySpaceMonitor/column.jelly
index 5c1a410d1bc0..8655fc2aadc6 100644
--- a/core/src/main/resources/hudson/node_monitors/TemporarySpaceMonitor/column.jelly
+++ b/core/src/main/resources/hudson/node_monitors/TemporarySpaceMonitor/column.jelly
@@ -29,7 +29,19 @@ THE SOFTWARE.
N/A |
- |
+
+
+
+ ${data.toHtml()}
+
+
+ ${data.toHtml()}
+
+
+ ${data.toHtml()}
+
+
+ |
diff --git a/core/src/main/resources/hudson/node_monitors/TemporarySpaceMonitor/help.html b/core/src/main/resources/hudson/node_monitors/TemporarySpaceMonitor/help.html
index ea237d75ae0d..2acf9a6f129e 100644
--- a/core/src/main/resources/hudson/node_monitors/TemporarySpaceMonitor/help.html
+++ b/core/src/main/resources/hudson/node_monitors/TemporarySpaceMonitor/help.html
@@ -1,6 +1,6 @@
This monitors the available disk space of the temporary directory, and if it
- gets below a certain threshold the node will be made offline.
+ gets below a certain threshold the agent will be marked temporarily offline.
Java tools and tests/builds often create files in the temporary directory,
diff --git a/core/src/test/java/hudson/FunctionsTest.java b/core/src/test/java/hudson/FunctionsTest.java
index 0fe72c16decc..95d5def0bbda 100644
--- a/core/src/test/java/hudson/FunctionsTest.java
+++ b/core/src/test/java/hudson/FunctionsTest.java
@@ -321,12 +321,13 @@ public void testHumanReadableFileSize() {
Locale.setDefault(Locale.ENGLISH);
assertEquals("0 B", Functions.humanReadableByteSize(0));
assertEquals("1023 B", Functions.humanReadableByteSize(1023));
- assertEquals("1.00 KB", Functions.humanReadableByteSize(1024));
- assertEquals("1.50 KB", Functions.humanReadableByteSize(1536));
- assertEquals("20.00 KB", Functions.humanReadableByteSize(20480));
- assertEquals("1023.00 KB", Functions.humanReadableByteSize(1047552));
- assertEquals("1.00 MB", Functions.humanReadableByteSize(1048576));
- assertEquals("1.50 GB", Functions.humanReadableByteSize(1610612700));
+ assertEquals("1.00 KiB", Functions.humanReadableByteSize(1024));
+ assertEquals("1.50 KiB", Functions.humanReadableByteSize(1536));
+ assertEquals("20.00 KiB", Functions.humanReadableByteSize(20480));
+ assertEquals("1023.00 KiB", Functions.humanReadableByteSize(1047552));
+ assertEquals("1.00 MiB", Functions.humanReadableByteSize(1048576));
+ assertEquals("1.50 GiB", Functions.humanReadableByteSize(1610612700));
+ assertEquals("1.50 TiB", Functions.humanReadableByteSize(1649267441664L));
} finally {
Locale.setDefault(defaultLocale);
}
diff --git a/test/src/test/java/hudson/model/ComputerSetTest.java b/test/src/test/java/hudson/model/ComputerSetTest.java
index cff8892c6f53..f40cf3e00c96 100644
--- a/test/src/test/java/hudson/model/ComputerSetTest.java
+++ b/test/src/test/java/hudson/model/ComputerSetTest.java
@@ -130,7 +130,7 @@ public void managePermissionCanConfigure() throws Exception {
assertEquals(HttpURLConnection.HTTP_OK, page.getWebResponse().getStatusCode());
responseContent = page.getWebResponse().getContentAsString();
// the "Node Monitoring" link in the app bar is visible
- assertThat(responseContent, containsString("Node Monitoring"));
+ assertThat(responseContent, containsString("Configure Monitors"));
page = wc.goTo("computer/configure");
assertEquals(HttpURLConnection.HTTP_OK, page.getWebResponse().getStatusCode());
// and the save button is visible
diff --git a/test/src/test/java/hudson/node_monitors/DiskSpaceMonitorDescriptorTest.java b/test/src/test/java/hudson/node_monitors/DiskSpaceMonitorDescriptorTest.java
index e897a8f300cf..e662f1909444 100644
--- a/test/src/test/java/hudson/node_monitors/DiskSpaceMonitorDescriptorTest.java
+++ b/test/src/test/java/hudson/node_monitors/DiskSpaceMonitorDescriptorTest.java
@@ -45,7 +45,9 @@ public void parse() throws Exception {
assertEquals(1024, DiskSpace.parse("1KB").size);
assertEquals(1024, DiskSpace.parse("1K").size);
assertEquals(1024, DiskSpace.parse("1kb").size);
+ assertEquals(1024, DiskSpace.parse("1kib").size);
assertEquals(1024 * 1024, DiskSpace.parse("1MB").size);
+ assertEquals(1024 * 1024, DiskSpace.parse("1MIB").size);
assertEquals(1024 * 1024 * 1024, DiskSpace.parse("1GB").size);
assertEquals(512 * 1024 * 1024, DiskSpace.parse("0.5GB").size);
}
@@ -55,8 +57,10 @@ public void parse() throws Exception {
@Issue("JENKINS-59383")
public void string() {
DiskSpace du = new DiskSpace("/tmp", 123 * 1024 * 1024);
- assertEquals("0.123GB left on /tmp.", du.toString());
- du.setTriggered(true);
- assertEquals("Disk space is too low. Only 0.123GB left on /tmp.", du.toString());
+ du.setTotalSize(300 * 1024 * 1024);
+ du.setThreshold(100 * 1024 * 1024);
+ assertEquals("123.00 MiB out of 300.00 MiB left on /tmp.", du.toString());
+ du.setThreshold(200 * 1024 * 1024);
+ assertEquals("Disk space is below threshold of 200.00 MiB. Only 123.00 MiB out of 300.00 MiB left on /tmp.", du.toString());
}
}
From 60f19cb24a97d0982a1afe978c31c69d610dad8b Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sun, 26 Nov 2023 13:11:40 -0800
Subject: [PATCH 08/50] Bump org.jenkins-ci.main:jenkins-test-harness from
2105.v5a_7b_f123294f to 2112.ve584e0edc63b_ (#8713)
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
test/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/pom.xml b/test/pom.xml
index a3c8ea0cbc5a..36df66770033 100644
--- a/test/pom.xml
+++ b/test/pom.xml
@@ -121,7 +121,7 @@ THE SOFTWARE.
${project.groupId}
jenkins-test-harness
- 2105.v5a_7b_f123294f
+ 2112.ve584e0edc63b_
test
From af941ceaea13f45f525cd877c74e63cf1597a367 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sun, 26 Nov 2023 13:12:08 -0800
Subject: [PATCH 09/50] Update dependency @babel/cli to v7.23.4 (#8716)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
war/package.json | 2 +-
war/yarn.lock | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/war/package.json b/war/package.json
index 8c0ea9634f47..3f966bc5c18d 100644
--- a/war/package.json
+++ b/war/package.json
@@ -23,7 +23,7 @@
"lint": "yarn lint:js && yarn lint:css"
},
"devDependencies": {
- "@babel/cli": "7.23.0",
+ "@babel/cli": "7.23.4",
"@babel/core": "7.23.3",
"@babel/preset-env": "7.23.3",
"babel-loader": "9.1.3",
diff --git a/war/yarn.lock b/war/yarn.lock
index bd73a9944d39..e645e75f8e1d 100644
--- a/war/yarn.lock
+++ b/war/yarn.lock
@@ -22,9 +22,9 @@ __metadata:
languageName: node
linkType: hard
-"@babel/cli@npm:7.23.0":
- version: 7.23.0
- resolution: "@babel/cli@npm:7.23.0"
+"@babel/cli@npm:7.23.4":
+ version: 7.23.4
+ resolution: "@babel/cli@npm:7.23.4"
dependencies:
"@jridgewell/trace-mapping": "npm:^0.3.17"
"@nicolo-ribaudo/chokidar-2": "npm:2.1.8-no-fsevents.3"
@@ -45,7 +45,7 @@ __metadata:
bin:
babel: ./bin/babel.js
babel-external-helpers: ./bin/babel-external-helpers.js
- checksum: 80ebb68216adab239ea2eb73e1dc1eb3a70ee8e1afad2ae8f2b7518119ebd247f776bd7d4ab2cb73c2cf0253e202b6af00e4a5fec79c2733084963901bde3903
+ checksum: f71bc378f62dd19983adc8dae4ee33cd44ac7d8ea3224709f787f290e0c3a4b8a36dad76d672b3479de2b9f524e55b4bb12a2296154c73134ba111114a15779c
languageName: node
linkType: hard
@@ -4406,7 +4406,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "jenkins-ui@workspace:."
dependencies:
- "@babel/cli": "npm:7.23.0"
+ "@babel/cli": "npm:7.23.4"
"@babel/core": "npm:7.23.3"
"@babel/preset-env": "npm:7.23.3"
babel-loader: "npm:9.1.3"
From 33b62b5db5ebe9c2ec70176c1a025359fc322271 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sun, 26 Nov 2023 13:12:59 -0800
Subject: [PATCH 10/50] Update dependency node to v20.10.0 (#8720)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
war/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/war/pom.xml b/war/pom.xml
index b6082a6d1ada..8c4377ac7b6b 100644
--- a/war/pom.xml
+++ b/war/pom.xml
@@ -46,7 +46,7 @@ THE SOFTWARE.
localhost
8080
- 20.9.0
+ 20.10.0
1.22.19
From aedae5bccf9121e0769e683d6641ac34616ae630 Mon Sep 17 00:00:00 2001
From: Zbynek Konecny
Date: Sun, 26 Nov 2023 23:20:42 +0100
Subject: [PATCH 11/50] Avoid scrollbar in dropdown popups (page footer, log
recorder) (#8704)
---
core/src/main/resources/lib/layout/overflowButton.jelly | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/core/src/main/resources/lib/layout/overflowButton.jelly b/core/src/main/resources/lib/layout/overflowButton.jelly
index afc6636b9274..f1ae18cf25b3 100644
--- a/core/src/main/resources/lib/layout/overflowButton.jelly
+++ b/core/src/main/resources/lib/layout/overflowButton.jelly
@@ -64,6 +64,8 @@ THE SOFTWARE.
${attrs.text}
-
+
+
+
From f9f542bffd9f38189f3c1393475b473f1f0e035e Mon Sep 17 00:00:00 2001
From: Santhosh-CloudB <131965145+Santhosh-CloudB@users.noreply.github.com>
Date: Mon, 27 Nov 2023 15:39:15 +0530
Subject: [PATCH 12/50] Added validation of FIPS password length (#8694)
Co-authored-by: Daniel Beck <1831569+daniel-beck@users.noreply.github.com>
---
.../java/hudson/security/HudsonPrivateSecurityRealm.java | 6 ++++++
core/src/main/resources/hudson/security/Messages.properties | 1 +
2 files changed, 7 insertions(+)
diff --git a/core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.java b/core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.java
index 0331884821d6..6305a69a6abb 100644
--- a/core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.java
+++ b/core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.java
@@ -114,6 +114,7 @@
* @author Kohsuke Kawaguchi
*/
public class HudsonPrivateSecurityRealm extends AbstractPasswordBasedSecurityRealm implements ModelObject, AccessControlled {
+ private static final int FIPS_PASSWORD_LENGTH = 14;
private static /* not final */ String ID_REGEX = System.getProperty(HudsonPrivateSecurityRealm.class.getName() + ".ID_REGEX");
/**
@@ -452,6 +453,11 @@ private SignupInfo validateAccountCreationForm(StaplerRequest req, boolean valid
si.errors.put("password1", Messages.HudsonPrivateSecurityRealm_CreateAccount_PasswordRequired());
}
+ if (FIPS140.useCompliantAlgorithms()) {
+ if (si.password1.length() < FIPS_PASSWORD_LENGTH) {
+ si.errors.put("password1", Messages.HudsonPrivateSecurityRealm_CreateAccount_FIPS_PasswordLengthInvalid());
+ }
+ }
if (si.fullname == null || si.fullname.isEmpty()) {
si.fullname = si.username;
}
diff --git a/core/src/main/resources/hudson/security/Messages.properties b/core/src/main/resources/hudson/security/Messages.properties
index 697c0f13fdd4..dee3d0923525 100644
--- a/core/src/main/resources/hudson/security/Messages.properties
+++ b/core/src/main/resources/hudson/security/Messages.properties
@@ -36,6 +36,7 @@ HudsonPrivateSecurityRealm.ManageUserLinks.Description=Create/delete/modify user
HudsonPrivateSecurityRealm.CreateAccount.TextNotMatchWordInImage=Text didn''t match the word shown in the image
HudsonPrivateSecurityRealm.CreateAccount.PasswordNotMatch=Password didn''t match
+HudsonPrivateSecurityRealm.CreateAccount.FIPS.PasswordLengthInvalid=Password must be at least 14 characters long
HudsonPrivateSecurityRealm.CreateAccount.PasswordRequired=Password is required
HudsonPrivateSecurityRealm.CreateAccount.UserNameRequired=User name is required
HudsonPrivateSecurityRealm.CreateAccount.UserNameInvalidCharacters=User name must only contain alphanumeric characters, underscore and dash
From 1f95b095187b80145a7972ceb5ae981ae767e33d Mon Sep 17 00:00:00 2001
From: Jan Faracik <43062514+janfaracik@users.noreply.github.com>
Date: Mon, 27 Nov 2023 19:36:43 +0000
Subject: [PATCH 13/50] Use symbols for build status (#8705)
* Init
* Rename ID
* Fix icon position
* Fix app bar build status icon being incorrect
* Address missed icons
---------
Co-authored-by: Alexander Brandes
---
.editorconfig | 2 +-
.../hudson/model/AbstractBuild/index.jelly | 4 +-
.../hudson/model/Job/buildTimeTrend.jelly | 8 ++
.../model/Job/buildTimeTrend_resources.js | 75 ++-----------------
.../resources/hudson/model/Job/index.jelly | 2 +-
.../hudson/model/Run/statusIcon.jelly | 2 +-
.../hudson/views/StatusColumn/column.jelly | 18 ++++-
.../hudson/widgets/HistoryWidget/entry.jelly | 2 +-
.../jenkins/model/Jenkins/_legend.jelly | 32 ++++----
.../resources/lib/hudson/buildCaption.jelly | 2 +-
.../main/resources/lib/hudson/buildLink.jelly | 2 +-
.../resources/lib/hudson/buildListTable.jelly | 9 +++
.../main/resources/lib/hudson/jobLink.jelly | 2 +-
.../resources/lib/hudson/projectView.jelly | 10 ++-
.../images/symbols/status-aborted-anime.svg | 5 ++
.../images/symbols/status-aborted.svg | 4 +
.../images/symbols/status-blue-anime.svg | 5 ++
.../resources/images/symbols/status-blue.svg | 4 +
.../images/symbols/status-disabled-anime.svg | 6 ++
.../images/symbols/status-disabled.svg | 5 ++
.../images/symbols/status-nobuilt-anime.svg | 7 ++
.../images/symbols/status-nobuilt.svg | 6 ++
.../images/symbols/status-red-anime.svg | 5 ++
.../resources/images/symbols/status-red.svg | 4 +
.../images/symbols/status-yellow-anime.svg | 6 ++
.../images/symbols/status-yellow.svg | 5 ++
war/src/main/scss/base/_style.scss | 13 +++-
war/src/main/scss/components/_app-bar.scss | 3 +-
.../scss/components/_side-panel-widgets.scss | 1 +
war/src/main/scss/pages/_dashboard.scss | 11 +++
30 files changed, 157 insertions(+), 103 deletions(-)
create mode 100644 war/src/main/resources/images/symbols/status-aborted-anime.svg
create mode 100644 war/src/main/resources/images/symbols/status-aborted.svg
create mode 100644 war/src/main/resources/images/symbols/status-blue-anime.svg
create mode 100644 war/src/main/resources/images/symbols/status-blue.svg
create mode 100644 war/src/main/resources/images/symbols/status-disabled-anime.svg
create mode 100644 war/src/main/resources/images/symbols/status-disabled.svg
create mode 100644 war/src/main/resources/images/symbols/status-nobuilt-anime.svg
create mode 100644 war/src/main/resources/images/symbols/status-nobuilt.svg
create mode 100644 war/src/main/resources/images/symbols/status-red-anime.svg
create mode 100644 war/src/main/resources/images/symbols/status-red.svg
create mode 100644 war/src/main/resources/images/symbols/status-yellow-anime.svg
create mode 100644 war/src/main/resources/images/symbols/status-yellow.svg
diff --git a/.editorconfig b/.editorconfig
index af8f0cf310a8..049d90619a70 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -1,6 +1,6 @@
root = true
-[*.{js, scss, css, hbs}]
+[*.{js, scss, css, hbs, svg}]
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
diff --git a/core/src/main/resources/hudson/model/AbstractBuild/index.jelly b/core/src/main/resources/hudson/model/AbstractBuild/index.jelly
index 8444984d49cd..aba425c3420b 100644
--- a/core/src/main/resources/hudson/model/AbstractBuild/index.jelly
+++ b/core/src/main/resources/hudson/model/AbstractBuild/index.jelly
@@ -76,7 +76,7 @@ THE SOFTWARE.
- ${dep.from.displayName}
+ ${dep.from.displayName}
?
@@ -86,7 +86,7 @@ THE SOFTWARE.
→
- ${dep.to.displayName}
+ ${dep.to.displayName}
(${%detail})
diff --git a/core/src/main/resources/hudson/model/Job/buildTimeTrend.jelly b/core/src/main/resources/hudson/model/Job/buildTimeTrend.jelly
index 4021ab4109a4..56201d48dab8 100644
--- a/core/src/main/resources/hudson/model/Job/buildTimeTrend.jelly
+++ b/core/src/main/resources/hudson/model/Job/buildTimeTrend.jelly
@@ -31,6 +31,14 @@ THE SOFTWARE.
+
+
+
+
+
+
+
+
${%Build Time Trend}
diff --git a/core/src/main/resources/hudson/model/Job/buildTimeTrend_resources.js b/core/src/main/resources/hudson/model/Job/buildTimeTrend_resources.js
index 105cdbc06ed2..eadcb5970622 100644
--- a/core/src/main/resources/hudson/model/Job/buildTimeTrend_resources.js
+++ b/core/src/main/resources/hudson/model/Job/buildTimeTrend_resources.js
@@ -67,76 +67,11 @@ window.buildTimeTrend_displayBuilds = function (data) {
/**
* Generate SVG Icon
*/
-function generateSVGIcon(iconName, iconSizeClass) {
- const imagesURL = document.head.getAttribute("data-imagesurl");
-
- const isInProgress = iconName.endsWith("anime");
- let buildStatus = "never-built";
- switch (iconName) {
- case "red":
- case "red-anime":
- buildStatus = "last-failed";
- break;
- case "yellow":
- case "yellow-anime":
- buildStatus = "last-unstable";
- break;
- case "blue":
- case "blue-anime":
- buildStatus = "last-successful";
- break;
- case "grey":
- case "grey-anime":
- case "disabled":
- case "disabled-anime":
- buildStatus = "last-disabled";
- break;
- case "aborted":
- case "aborted-anime":
- buildStatus = "last-aborted";
- break;
- case "nobuilt":
- case "nobuilt-anime":
- buildStatus = "never-built";
- break;
- }
+function generateSVGIcon(iconName) {
+ const icons = document.querySelector("#jenkins-build-status-icons");
+ iconName = iconName.replace("-anime", "");
- const svg1 = document.createElementNS("http://www.w3.org/2000/svg", "svg");
- svg1.setAttribute("class", "svg-icon");
- svg1.setAttribute("viewBox", "0 0 24 24");
- const use1 = document.createElementNS("http://www.w3.org/2000/svg", "use");
- use1.setAttribute(
- "href",
- imagesURL +
- "/build-status/build-status-sprite.svg#build-status-" +
- (isInProgress ? "in-progress" : "static"),
- );
- svg1.appendChild(use1);
-
- const svg2 = document.createElementNS("http://www.w3.org/2000/svg", "svg");
- svg2.setAttribute(
- "class",
- "svg-icon icon-" + iconName + " " + (iconSizeClass || "icon-sm"),
- );
- svg2.setAttribute("viewBox", "0 0 24 24");
- const use2 = document.createElementNS("http://www.w3.org/2000/svg", "use");
- use2.setAttribute(
- "href",
- imagesURL + "/build-status/build-status-sprite.svg#" + buildStatus,
- );
- svg2.appendChild(use2);
-
- const span = document.createElement("span");
- span.classList.add("build-status-icon__wrapper", "icon-" + iconName);
-
- let span2 = document.createElement("span");
- span2.classList.add("build-status-icon__outer");
- span2.appendChild(svg1);
-
- span.appendChild(span2);
- span.appendChild(svg2);
-
- return span;
+ return icons.content.querySelector(`#${iconName}`).cloneNode(true);
}
/**
@@ -155,7 +90,7 @@ window.displayBuilds = function (data) {
td1.classList.add("jenkins-table__cell--tight", "jenkins-table__icon");
var div1 = document.createElement("div");
div1.classList.add("jenkins-table__cell__button-wrapper");
- var svg = generateSVGIcon(e.iconName, p.dataset.iconSizeClass);
+ var svg = generateSVGIcon(e.iconName);
div1.appendChild(svg);
td1.appendChild(div1);
tr.appendChild(td1);
diff --git a/core/src/main/resources/hudson/model/Job/index.jelly b/core/src/main/resources/hudson/model/Job/index.jelly
index 23a454b4d52e..0fb537e267d7 100644
--- a/core/src/main/resources/hudson/model/Job/index.jelly
+++ b/core/src/main/resources/hudson/model/Job/index.jelly
@@ -33,7 +33,7 @@ THE SOFTWARE.
-
+