From fad2d6e1c4765b0a5dad51b44fe8960238e9c90a Mon Sep 17 00:00:00 2001
From: Lucas Nussbaum <lucas.nussbaum@inria.fr>
Date: Wed, 26 Feb 2025 10:30:05 +0100
Subject: [PATCH] [dev] Add text description of nodes at the cluster level
 (context: bug 11372)

I did not include the nodes count in the description, but used a
separate field.

The way the description is generated is copy/pasted from abamotd. I
propose to start with that, change consumers such as abamotd to use it,
and then improve if needed.
---
 .../sites/grenoble/clusters/dahu/dahu.json    |  2 +
 .../sites/grenoble/clusters/drac/drac.json    |  2 +
 .../grenoble/clusters/kinovis/kinovis.json    |  2 +
 .../grenoble/clusters/nessie/nessie.json      |  2 +
 .../grenoble/clusters/servan/servan.json      |  2 +
 .../sites/grenoble/clusters/troll/troll.json  |  2 +
 .../sites/grenoble/clusters/yeti/yeti.json    |  2 +
 .../sites/lille/clusters/chiclet/chiclet.json |  2 +
 .../lille/clusters/chifflot/chifflot.json     |  2 +
 .../sites/lille/clusters/chirop/chirop.json   |  2 +
 .../sites/lille/clusters/chuc/chuc.json       |  2 +
 .../sites/louvain/clusters/spirou/spirou.json |  2 +
 .../clusters/petitprince/petitprince.json     |  2 +
 .../sites/lyon/clusters/gemini/gemini.json    |  2 +
 .../sites/lyon/clusters/hercule/hercule.json  |  2 +
 .../sites/lyon/clusters/hydra/hydra.json      |  2 +
 .../sites/lyon/clusters/neowise/neowise.json  |  2 +
 .../sites/lyon/clusters/nova/nova.json        |  2 +
 .../sites/lyon/clusters/orion/orion.json      |  2 +
 .../sites/lyon/clusters/pyxis/pyxis.json      |  2 +
 .../lyon/clusters/sagittaire/sagittaire.json  |  2 +
 .../sites/lyon/clusters/sirius/sirius.json    |  2 +
 .../sites/lyon/clusters/taurus/taurus.json    |  2 +
 .../nancy/clusters/graffiti/graffiti.json     |  2 +
 .../sites/nancy/clusters/grappe/grappe.json   |  2 +
 .../sites/nancy/clusters/grat/grat.json       |  2 +
 .../nancy/clusters/gratouille/gratouille.json |  2 +
 .../sites/nancy/clusters/grdix/grdix.json     |  2 +
 .../sites/nancy/clusters/grele/grele.json     |  2 +
 .../sites/nancy/clusters/gres/gres.json       |  2 +
 .../sites/nancy/clusters/gros/gros.json       |  2 +
 .../nancy/clusters/grosminet/grosminet.json   |  2 +
 .../nancy/clusters/grostiti/grostiti.json     |  2 +
 .../nancy/clusters/grouille/grouille.json     |  2 +
 .../sites/nancy/clusters/grue/grue.json       |  2 +
 .../sites/nancy/clusters/gruss/gruss.json     |  2 +
 .../sites/nancy/clusters/grvingt/grvingt.json |  2 +
 .../nantes/clusters/econome/econome.json      |  2 +
 .../nantes/clusters/ecotype/ecotype.json      |  2 +
 .../rennes/clusters/abacus1/abacus1.json      |  2 +
 .../rennes/clusters/abacus10/abacus10.json    |  2 +
 .../rennes/clusters/abacus11/abacus11.json    |  2 +
 .../rennes/clusters/abacus12/abacus12.json    |  2 +
 .../rennes/clusters/abacus14/abacus14.json    |  2 +
 .../rennes/clusters/abacus16/abacus16.json    |  2 +
 .../rennes/clusters/abacus17/abacus17.json    |  2 +
 .../rennes/clusters/abacus18/abacus18.json    |  2 +
 .../rennes/clusters/abacus19/abacus19.json    |  2 +
 .../rennes/clusters/abacus2/abacus2.json      |  2 +
 .../rennes/clusters/abacus20/abacus20.json    |  2 +
 .../rennes/clusters/abacus21/abacus21.json    |  2 +
 .../rennes/clusters/abacus22/abacus22.json    |  2 +
 .../rennes/clusters/abacus25/abacus25.json    |  2 +
 .../rennes/clusters/abacus26/abacus26.json    |  2 +
 .../rennes/clusters/abacus27/abacus27.json    |  2 +
 .../rennes/clusters/abacus28/abacus28.json    |  2 +
 .../rennes/clusters/abacus3/abacus3.json      |  2 +
 .../rennes/clusters/abacus4/abacus4.json      |  2 +
 .../rennes/clusters/abacus5/abacus5.json      |  2 +
 .../rennes/clusters/abacus8/abacus8.json      |  2 +
 .../rennes/clusters/abacus9/abacus9.json      |  2 +
 .../rennes/clusters/paradoxe/paradoxe.json    |  2 +
 .../rennes/clusters/parasilo/parasilo.json    |  2 +
 .../rennes/clusters/roazhon1/roazhon1.json    |  2 +
 .../rennes/clusters/roazhon10/roazhon10.json  |  2 +
 .../rennes/clusters/roazhon11/roazhon11.json  |  2 +
 .../rennes/clusters/roazhon12/roazhon12.json  |  2 +
 .../rennes/clusters/roazhon13/roazhon13.json  |  2 +
 .../rennes/clusters/roazhon2/roazhon2.json    |  2 +
 .../rennes/clusters/roazhon3/roazhon3.json    |  2 +
 .../rennes/clusters/roazhon4/roazhon4.json    |  2 +
 .../rennes/clusters/roazhon5/roazhon5.json    |  2 +
 .../rennes/clusters/roazhon6/roazhon6.json    |  2 +
 .../rennes/clusters/roazhon7/roazhon7.json    |  2 +
 .../rennes/clusters/roazhon8/roazhon8.json    |  2 +
 .../rennes/clusters/roazhon9/roazhon9.json    |  2 +
 .../sophia/clusters/esterel10/esterel10.json  |  2 +
 .../sophia/clusters/esterel41/esterel41.json  |  2 +
 .../clusters/mercantour2/mercantour2.json     |  2 +
 .../sites/sophia/clusters/musa/musa.json      |  2 +
 .../sites/sophia/clusters/uvb/uvb.json        |  2 +
 .../clusters/fleckenstein/fleckenstein.json   |  2 +
 .../toulouse/clusters/estats/estats.json      |  2 +
 .../toulouse/clusters/montcalm/montcalm.json  |  2 +
 lib/refrepo/gen/reference-api.rb              | 59 +++++++++++++++++--
 85 files changed, 223 insertions(+), 4 deletions(-)

diff --git a/data/grid5000/sites/grenoble/clusters/dahu/dahu.json b/data/grid5000/sites/grenoble/clusters/dahu/dahu.json
index 40ecbd2889b..6f2b525bc7c 100644
--- a/data/grid5000/sites/grenoble/clusters/dahu/dahu.json
+++ b/data/grid5000/sites/grenoble/clusters/dahu/dahu.json
@@ -355,6 +355,8 @@
     }
   ],
   "model": "Dell PowerEdge C6420",
+  "nodes_count": 72,
+  "nodes_description": "2 CPUs Intel Xeon Gold 6130, 16 cores/CPU, 192GB RAM, 223GB SSD, 447GB SSD, 3726GB HDD, 1 x 10Gb Ethernet, 1 x 100Gb Omni-Path",
   "priority": "201800",
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/grenoble/clusters/drac/drac.json b/data/grid5000/sites/grenoble/clusters/drac/drac.json
index f2554a13133..668f2793b3e 100644
--- a/data/grid5000/sites/grenoble/clusters/drac/drac.json
+++ b/data/grid5000/sites/grenoble/clusters/drac/drac.json
@@ -919,6 +919,8 @@
     }
   ],
   "model": "IBM PowerNV S822LC (8335-GTB)",
+  "nodes_count": 12,
+  "nodes_description": "2 CPUs POWER8NVL 1.0, 10 cores/CPU, 4 GPUs Tesla P100-SXM2-16GB, 128GB RAM, 2x931GB HDD, 1 x 10Gb Ethernet, 2 x 100Gb InfiniBand",
   "priority": 201710,
   "queues": [
     "default",
diff --git a/data/grid5000/sites/grenoble/clusters/kinovis/kinovis.json b/data/grid5000/sites/grenoble/clusters/kinovis/kinovis.json
index 5f278e35ace..d403c79524f 100644
--- a/data/grid5000/sites/grenoble/clusters/kinovis/kinovis.json
+++ b/data/grid5000/sites/grenoble/clusters/kinovis/kinovis.json
@@ -79,6 +79,8 @@
     }
   ],
   "model": "HPE Proliant DL380 Gen11",
+  "nodes_count": 6,
+  "nodes_description": "2 CPUs Intel Xeon Gold 6442Y, 24 cores/CPU, 2 GPUs L40S, 256GB RAM, 1787GB SSD, 2 x 25Gb Ethernet, 1 x 100Gb Ethernet",
   "priority": 202506,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/grenoble/clusters/nessie/nessie.json b/data/grid5000/sites/grenoble/clusters/nessie/nessie.json
index 473bec41875..0bd07b7d462 100644
--- a/data/grid5000/sites/grenoble/clusters/nessie/nessie.json
+++ b/data/grid5000/sites/grenoble/clusters/nessie/nessie.json
@@ -8,6 +8,8 @@
 
   ],
   "model": "HPE ProLiant DL385 Gen10+ v2",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs Intel Xeon Gold 6430, 32 cores/CPU, 64GB RAM, 1788GB SSD, 447GB SSD, 1 x 25Gb Ethernet",
   "priority": 202408,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/grenoble/clusters/servan/servan.json b/data/grid5000/sites/grenoble/clusters/servan/servan.json
index 4d58cb493f6..f39dc148d37 100644
--- a/data/grid5000/sites/grenoble/clusters/servan/servan.json
+++ b/data/grid5000/sites/grenoble/clusters/servan/servan.json
@@ -525,6 +525,8 @@
     }
   ],
   "model": "Dell PowerEdge R7525",
+  "nodes_count": 2,
+  "nodes_description": "2 CPUs AMD EPYC 7352, 24 cores/CPU, 128GB RAM, 2x1490GB SSD, 1 x 25Gb Ethernet, 2 x 100Gb FPGA/Ethernet",
   "priority": 202112,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/grenoble/clusters/troll/troll.json b/data/grid5000/sites/grenoble/clusters/troll/troll.json
index ae4d02ae8fc..98f66806953 100644
--- a/data/grid5000/sites/grenoble/clusters/troll/troll.json
+++ b/data/grid5000/sites/grenoble/clusters/troll/troll.json
@@ -452,6 +452,8 @@
     }
   ],
   "model": "Dell PowerEdge R640",
+  "nodes_count": 4,
+  "nodes_description": "2 CPUs Intel Xeon Gold 5218, 16 cores/CPU, 384GB RAM, 1536GB PMEM, 447GB SSD, 1490GB SSD, 1 x 25Gb Ethernet, 1 x 100Gb Omni-Path",
   "priority": 201911,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/grenoble/clusters/yeti/yeti.json b/data/grid5000/sites/grenoble/clusters/yeti/yeti.json
index b20bea9a410..7e9a0d38718 100644
--- a/data/grid5000/sites/grenoble/clusters/yeti/yeti.json
+++ b/data/grid5000/sites/grenoble/clusters/yeti/yeti.json
@@ -403,6 +403,8 @@
     }
   ],
   "model": "Dell PowerEdge R940",
+  "nodes_count": 4,
+  "nodes_description": "4 CPUs Intel Xeon Gold 6130, 16 cores/CPU, 768GB RAM, 447GB SSD, 2x1490GB SSD, 3x1863GB HDD, 1 x 10Gb Ethernet, 1 x 100Gb Omni-Path",
   "priority": 201712,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/lille/clusters/chiclet/chiclet.json b/data/grid5000/sites/lille/clusters/chiclet/chiclet.json
index 3a8cc84d3af..feb61b3ed03 100644
--- a/data/grid5000/sites/lille/clusters/chiclet/chiclet.json
+++ b/data/grid5000/sites/lille/clusters/chiclet/chiclet.json
@@ -428,6 +428,8 @@
     }
   ],
   "model": "Dell PowerEdge R7425",
+  "nodes_count": 8,
+  "nodes_description": "2 CPUs AMD EPYC 7301, 16 cores/CPU, 128GB RAM, 447GB SSD, 2x3726GB HDD, 2 x 25Gb Ethernet",
   "priority": "201850",
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/lille/clusters/chifflot/chifflot.json b/data/grid5000/sites/lille/clusters/chifflot/chifflot.json
index 3648385869c..c0a0659558c 100644
--- a/data/grid5000/sites/lille/clusters/chifflot/chifflot.json
+++ b/data/grid5000/sites/lille/clusters/chifflot/chifflot.json
@@ -547,6 +547,8 @@
     }
   ],
   "model": "Dell PowerEdge R740",
+  "nodes_count": 8,
+  "nodes_description": "2 CPUs Intel Xeon Gold 6126, 12 cores/CPU, 2 GPUs Tesla P100-PCIE-16GB, 192GB RAM, 2x447GB SSD, 4x3726GB HDD, 2 x 25Gb Ethernet",
   "priority": "201870",
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/lille/clusters/chirop/chirop.json b/data/grid5000/sites/lille/clusters/chirop/chirop.json
index cb21f3b8e84..2a03bb2c59f 100644
--- a/data/grid5000/sites/lille/clusters/chirop/chirop.json
+++ b/data/grid5000/sites/lille/clusters/chirop/chirop.json
@@ -757,6 +757,8 @@
     }
   ],
   "model": "DL360 Gen10+",
+  "nodes_count": 5,
+  "nodes_description": "2 CPUs Intel Xeon Platinum 8358, 32 cores/CPU, 512GB RAM, 1788GB SSD, 2x3576GB SSD, 2 x 25Gb Ethernet",
   "priority": 202305,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/lille/clusters/chuc/chuc.json b/data/grid5000/sites/lille/clusters/chuc/chuc.json
index 789ba1c22cd..9e7205b4a9e 100644
--- a/data/grid5000/sites/lille/clusters/chuc/chuc.json
+++ b/data/grid5000/sites/lille/clusters/chuc/chuc.json
@@ -1571,6 +1571,8 @@
     }
   ],
   "model": "Apollo 6500 Gen10 Plus",
+  "nodes_count": 8,
+  "nodes_description": "1 CPU AMD EPYC 7513, 32 cores/CPU, 4 GPUs A100-SXM4-40GB, 512GB RAM, 4x1788GB SSD, 2 x 25Gb Ethernet",
   "priority": 202405,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/louvain/clusters/spirou/spirou.json b/data/grid5000/sites/louvain/clusters/spirou/spirou.json
index 595cc87f04b..86647da7492 100644
--- a/data/grid5000/sites/louvain/clusters/spirou/spirou.json
+++ b/data/grid5000/sites/louvain/clusters/spirou/spirou.json
@@ -8,6 +8,8 @@
 
   ],
   "model": "ThinkSystem SR630 V2",
+  "nodes_count": 8,
+  "nodes_description": "2 CPUs Intel Xeon Gold 5318Y, 24 cores/CPU, 256GB RAM, 447GB SSD, 3726GB HDD, 1 x 100Gb Ethernet",
   "priority": 202401,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/luxembourg/clusters/petitprince/petitprince.json b/data/grid5000/sites/luxembourg/clusters/petitprince/petitprince.json
index deffb5cb743..c123832a7ee 100644
--- a/data/grid5000/sites/luxembourg/clusters/petitprince/petitprince.json
+++ b/data/grid5000/sites/luxembourg/clusters/petitprince/petitprince.json
@@ -330,6 +330,8 @@
     }
   ],
   "model": "Dell PowerEdge M620",
+  "nodes_count": 16,
+  "nodes_description": "2 CPUs Intel Xeon E5-2630L, 6 cores/CPU, 32GB RAM, 232GB HDD, 2 x 10Gb Ethernet",
   "priority": 201210,
   "queues": [
     "default",
diff --git a/data/grid5000/sites/lyon/clusters/gemini/gemini.json b/data/grid5000/sites/lyon/clusters/gemini/gemini.json
index f6cf3921737..82b0258815b 100644
--- a/data/grid5000/sites/lyon/clusters/gemini/gemini.json
+++ b/data/grid5000/sites/lyon/clusters/gemini/gemini.json
@@ -1092,6 +1092,8 @@
     }
   ],
   "model": "Nvidia DGX-1",
+  "nodes_count": 2,
+  "nodes_description": "2 CPUs Intel Xeon E5-2698 v4, 20 cores/CPU, 8 GPUs Tesla V100-SXM2-32GB, 512GB RAM, 447GB SSD, 4x1788GB SSD, 1 x 10Gb Ethernet",
   "priority": 202006,
   "queues": [
     "default",
diff --git a/data/grid5000/sites/lyon/clusters/hercule/hercule.json b/data/grid5000/sites/lyon/clusters/hercule/hercule.json
index afe8287cd30..0c9328d77f8 100644
--- a/data/grid5000/sites/lyon/clusters/hercule/hercule.json
+++ b/data/grid5000/sites/lyon/clusters/hercule/hercule.json
@@ -140,6 +140,8 @@
     }
   ],
   "model": "Dell PowerEdge C6220",
+  "nodes_count": 4,
+  "nodes_description": "2 CPUs Intel Xeon E5-2620, 6 cores/CPU, 32GB RAM, 3x1863GB HDD, 1 x 10Gb Ethernet",
   "priority": "201299",
   "queues": [
     "default",
diff --git a/data/grid5000/sites/lyon/clusters/hydra/hydra.json b/data/grid5000/sites/lyon/clusters/hydra/hydra.json
index 21f842ce342..f03ae1a5cac 100644
--- a/data/grid5000/sites/lyon/clusters/hydra/hydra.json
+++ b/data/grid5000/sites/lyon/clusters/hydra/hydra.json
@@ -221,6 +221,8 @@
     }
   ],
   "model": "NVIDIA Grace Hopper",
+  "nodes_count": 4,
+  "nodes_description": "1 CPU Grace A02  CPU Unknown, 72 cores/CPU, 480GB RAM, 894GB SSD, 1788GB SSD, 1 x 10Gb Ethernet",
   "priority": 202402,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/lyon/clusters/neowise/neowise.json b/data/grid5000/sites/lyon/clusters/neowise/neowise.json
index a886bd9bcbb..aecc8f0b0c5 100644
--- a/data/grid5000/sites/lyon/clusters/neowise/neowise.json
+++ b/data/grid5000/sites/lyon/clusters/neowise/neowise.json
@@ -1246,6 +1246,8 @@
     }
   ],
   "model": "AMD-Penguin Computing",
+  "nodes_count": 10,
+  "nodes_description": "1 CPU AMD EPYC 7642, 48 cores/CPU, 8 GPUs Radeon Instinct MI50 32GB, 512GB RAM, 1788GB SSD, 2 x 10Gb Ethernet, 2 x 100Gb InfiniBand",
   "priority": 202205,
   "queues": [
     "default",
diff --git a/data/grid5000/sites/lyon/clusters/nova/nova.json b/data/grid5000/sites/lyon/clusters/nova/nova.json
index ef560f12d33..bb23ef335f7 100644
--- a/data/grid5000/sites/lyon/clusters/nova/nova.json
+++ b/data/grid5000/sites/lyon/clusters/nova/nova.json
@@ -317,6 +317,8 @@
     }
   ],
   "model": "Dell PowerEdge R430",
+  "nodes_count": 23,
+  "nodes_description": "2 CPUs Intel Xeon E5-2620 v4, 8 cores/CPU, 64GB RAM, 557GB HDD, 1 x 10Gb Ethernet",
   "priority": "201700",
   "queues": [
     "default",
diff --git a/data/grid5000/sites/lyon/clusters/orion/orion.json b/data/grid5000/sites/lyon/clusters/orion/orion.json
index ac92818f546..c8467d30492 100644
--- a/data/grid5000/sites/lyon/clusters/orion/orion.json
+++ b/data/grid5000/sites/lyon/clusters/orion/orion.json
@@ -322,6 +322,8 @@
     }
   ],
   "model": "Dell PowerEdge R720",
+  "nodes_count": 4,
+  "nodes_description": "2 CPUs Intel Xeon E5-2630, 6 cores/CPU, 1 GPU Tesla M2075, 32GB RAM, 278GB HDD, 1 x 10Gb Ethernet",
   "priority": "201299",
   "queues": [
     "default",
diff --git a/data/grid5000/sites/lyon/clusters/pyxis/pyxis.json b/data/grid5000/sites/lyon/clusters/pyxis/pyxis.json
index 8ef5c3ee6f2..c7802c7e074 100644
--- a/data/grid5000/sites/lyon/clusters/pyxis/pyxis.json
+++ b/data/grid5000/sites/lyon/clusters/pyxis/pyxis.json
@@ -999,6 +999,8 @@
     }
   ],
   "model": "Gigabyte R181-T92-00",
+  "nodes_count": 4,
+  "nodes_description": "2 CPUs ThunderX2 99xx, 32 cores/CPU, 256GB RAM, 2x232GB SSD, 1 x 10Gb Ethernet",
   "priority": 201911,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/lyon/clusters/sagittaire/sagittaire.json b/data/grid5000/sites/lyon/clusters/sagittaire/sagittaire.json
index 2b3632facbf..dc1c2a5b744 100644
--- a/data/grid5000/sites/lyon/clusters/sagittaire/sagittaire.json
+++ b/data/grid5000/sites/lyon/clusters/sagittaire/sagittaire.json
@@ -148,6 +148,8 @@
     }
   ],
   "model": "Sun Fire V20z",
+  "nodes_count": 79,
+  "nodes_description": "2 CPUs AMD Opteron 250, 1 core/CPU, 2GB RAM, 68GB HDD, 1 x 1Gb Ethernet",
   "priority": "301899",
   "queues": [
     "default",
diff --git a/data/grid5000/sites/lyon/clusters/sirius/sirius.json b/data/grid5000/sites/lyon/clusters/sirius/sirius.json
index e13e9a0b0b6..c678b698529 100644
--- a/data/grid5000/sites/lyon/clusters/sirius/sirius.json
+++ b/data/grid5000/sites/lyon/clusters/sirius/sirius.json
@@ -1900,6 +1900,8 @@
     }
   ],
   "model": "NVidia DGX A100",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs AMD EPYC 7742, 64 cores/CPU, 8 GPUs A100-SXM4-40GB, 1024GB RAM, 2x1788GB SSD, 4x3576GB SSD, 1 x 100Gb Ethernet",
   "priority": 202211,
   "queues": [
     "default",
diff --git a/data/grid5000/sites/lyon/clusters/taurus/taurus.json b/data/grid5000/sites/lyon/clusters/taurus/taurus.json
index 8ab2157b3f7..b847f3a3fce 100644
--- a/data/grid5000/sites/lyon/clusters/taurus/taurus.json
+++ b/data/grid5000/sites/lyon/clusters/taurus/taurus.json
@@ -322,6 +322,8 @@
     }
   ],
   "model": "Dell PowerEdge R720",
+  "nodes_count": 16,
+  "nodes_description": "2 CPUs Intel Xeon E5-2630, 6 cores/CPU, 32GB RAM, 278GB HDD, 1 x 10Gb Ethernet",
   "priority": 201207,
   "queues": [
     "default",
diff --git a/data/grid5000/sites/nancy/clusters/graffiti/graffiti.json b/data/grid5000/sites/nancy/clusters/graffiti/graffiti.json
index ebdd661cc70..d15b611375d 100644
--- a/data/grid5000/sites/nancy/clusters/graffiti/graffiti.json
+++ b/data/grid5000/sites/nancy/clusters/graffiti/graffiti.json
@@ -382,6 +382,8 @@
     }
   ],
   "model": "Dell PowerEdge T640",
+  "nodes_count": 13,
+  "nodes_description": "2 CPUs Intel Xeon Silver 4110, 8 cores/CPU, 4 GPUs GeForce RTX 2080 Ti, 128GB RAM, 446GB HDD, 1 x 10Gb Ethernet",
   "priority": 202005,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/nancy/clusters/grappe/grappe.json b/data/grid5000/sites/nancy/clusters/grappe/grappe.json
index dfca691a048..29ede9ee472 100644
--- a/data/grid5000/sites/nancy/clusters/grappe/grappe.json
+++ b/data/grid5000/sites/nancy/clusters/grappe/grappe.json
@@ -470,6 +470,8 @@
     }
   ],
   "model": "Dell PowerEdge R640",
+  "nodes_count": 16,
+  "nodes_description": "2 CPUs Intel Xeon Gold 5218R, 20 cores/CPU, 96GB RAM, 447GB SSD, 7452GB HDD, 1 x 25Gb Ethernet",
   "priority": 202007,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/nancy/clusters/grat/grat.json b/data/grid5000/sites/nancy/clusters/grat/grat.json
index c25c1e0f89b..a476ba93a5d 100644
--- a/data/grid5000/sites/nancy/clusters/grat/grat.json
+++ b/data/grid5000/sites/nancy/clusters/grat/grat.json
@@ -2017,6 +2017,8 @@
     }
   ],
   "model": "HPE Apollo 6500",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs AMD EPYC 7513, 32 cores/CPU, 8 GPUs A100-SXM4-40GB, 512GB RAM, 8x3576GB SSD, 1 x 25Gb Ethernet",
   "priority": 202306,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/nancy/clusters/gratouille/gratouille.json b/data/grid5000/sites/nancy/clusters/gratouille/gratouille.json
index 757d90ee93b..6f0d164166c 100644
--- a/data/grid5000/sites/nancy/clusters/gratouille/gratouille.json
+++ b/data/grid5000/sites/nancy/clusters/gratouille/gratouille.json
@@ -367,6 +367,8 @@
     }
   ],
   "model": "Dell PowerEdge R730",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs Intel Xeon E5-2650 v4, 12 cores/CPU, 1 GPU Tesla V100-PCIE-16GB, 128GB RAM, 2x278GB HDD, 1 x 10Gb Ethernet",
   "priority": 201806,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/nancy/clusters/grdix/grdix.json b/data/grid5000/sites/nancy/clusters/grdix/grdix.json
index 4956055a03d..9fa67c1f4a0 100644
--- a/data/grid5000/sites/nancy/clusters/grdix/grdix.json
+++ b/data/grid5000/sites/nancy/clusters/grdix/grdix.json
@@ -332,6 +332,8 @@
     }
   ],
   "model": "ProLiant DL365 Gen11",
+  "nodes_count": 16,
+  "nodes_description": "2 CPUs AMD EPYC 9754, 128 cores/CPU, 1024GB RAM, 1490GB SSD, 1 x 25Gb Ethernet, 1 x 200Gb InfiniBand",
   "priority": 202409,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/nancy/clusters/grele/grele.json b/data/grid5000/sites/nancy/clusters/grele/grele.json
index 68441f2e693..3da17dfaa82 100644
--- a/data/grid5000/sites/nancy/clusters/grele/grele.json
+++ b/data/grid5000/sites/nancy/clusters/grele/grele.json
@@ -367,6 +367,8 @@
     }
   ],
   "model": "Dell PowerEdge R730",
+  "nodes_count": 14,
+  "nodes_description": "2 CPUs Intel Xeon E5-2650 v4, 12 cores/CPU, 2 GPUs GeForce GTX 1080 Ti, 128GB RAM, 2x278GB HDD, 1 x 10Gb Ethernet, 1 x 100Gb Omni-Path",
   "priority": 201806,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/nancy/clusters/gres/gres.json b/data/grid5000/sites/nancy/clusters/gres/gres.json
index 3c20b114544..32e041c8aae 100644
--- a/data/grid5000/sites/nancy/clusters/gres/gres.json
+++ b/data/grid5000/sites/nancy/clusters/gres/gres.json
@@ -1201,6 +1201,8 @@
     }
   ],
   "model": "ProLiant DL385 Gen11",
+  "nodes_count": 7,
+  "nodes_description": "2 CPUs AMD EPYC 9254, 24 cores/CPU, 2 GPUs L40S, 512GB RAM, 5961GB SSD, 1 x 25Gb Ethernet",
   "priority": 202508,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/nancy/clusters/gros/gros.json b/data/grid5000/sites/nancy/clusters/gros/gros.json
index 5677c1dff04..88446b3d452 100644
--- a/data/grid5000/sites/nancy/clusters/gros/gros.json
+++ b/data/grid5000/sites/nancy/clusters/gros/gros.json
@@ -494,6 +494,8 @@
     }
   ],
   "model": "Dell PowerEdge R640",
+  "nodes_count": 124,
+  "nodes_description": "1 CPU Intel Xeon Gold 5220, 18 cores/CPU, 96GB RAM, 447GB SSD, 894GB SSD, 2 x 25Gb Ethernet",
   "priority": 201907,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/nancy/clusters/grosminet/grosminet.json b/data/grid5000/sites/nancy/clusters/grosminet/grosminet.json
index 8424d68ee75..3ad46287f72 100644
--- a/data/grid5000/sites/nancy/clusters/grosminet/grosminet.json
+++ b/data/grid5000/sites/nancy/clusters/grosminet/grosminet.json
@@ -699,6 +699,8 @@
     }
   ],
   "model": "Proliant DL560 Gen10",
+  "nodes_count": 1,
+  "nodes_description": "4 CPUs Intel Xeon Gold 6240L, 18 cores/CPU, 6144GB RAM, 8x1490GB SSD, 1 x 25Gb Ethernet",
   "priority": 202311,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/nancy/clusters/grostiti/grostiti.json b/data/grid5000/sites/nancy/clusters/grostiti/grostiti.json
index 888a213e561..29ab960240d 100644
--- a/data/grid5000/sites/nancy/clusters/grostiti/grostiti.json
+++ b/data/grid5000/sites/nancy/clusters/grostiti/grostiti.json
@@ -407,6 +407,8 @@
     }
   ],
   "model": "Dell PowerEdge R930",
+  "nodes_count": 1,
+  "nodes_description": "4 CPUs Intel Xeon E7-4850 v3, 14 cores/CPU, 1536GB RAM, 1117GB HDD, 3724GB HDD, 558GB HDD, 1 x 10Gb Ethernet",
   "priority": 201510,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/nancy/clusters/grouille/grouille.json b/data/grid5000/sites/nancy/clusters/grouille/grouille.json
index ed93f0fa341..1561166e264 100644
--- a/data/grid5000/sites/nancy/clusters/grouille/grouille.json
+++ b/data/grid5000/sites/nancy/clusters/grouille/grouille.json
@@ -395,6 +395,8 @@
     }
   ],
   "model": "Dell PowerEdge R7525",
+  "nodes_count": 2,
+  "nodes_description": "2 CPUs AMD EPYC 7452, 32 cores/CPU, 2 GPUs A100-PCIE-40GB, 128GB RAM, 1788GB SSD, 894GB SSD, 1 x 25Gb Ethernet",
   "priority": 202112,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/nancy/clusters/grue/grue.json b/data/grid5000/sites/nancy/clusters/grue/grue.json
index 9914e75d2b2..4eef69b2373 100644
--- a/data/grid5000/sites/nancy/clusters/grue/grue.json
+++ b/data/grid5000/sites/nancy/clusters/grue/grue.json
@@ -423,6 +423,8 @@
     }
   ],
   "model": "Dell PowerEdge R7425",
+  "nodes_count": 5,
+  "nodes_description": "2 CPUs AMD EPYC 7351, 16 cores/CPU, 4 GPUs Tesla T4, 128GB RAM, 446GB HDD, 1 x 10Gb Ethernet",
   "priority": 202011,
   "queues": [
     "production",
diff --git a/data/grid5000/sites/nancy/clusters/gruss/gruss.json b/data/grid5000/sites/nancy/clusters/gruss/gruss.json
index e986f1e861b..59fb1bc4f75 100644
--- a/data/grid5000/sites/nancy/clusters/gruss/gruss.json
+++ b/data/grid5000/sites/nancy/clusters/gruss/gruss.json
@@ -395,6 +395,8 @@
     }
   ],
   "model": "Dell PowerEdge R7525",
+  "nodes_count": 4,
+  "nodes_description": "2 CPUs AMD EPYC 7352, 24 cores/CPU, 2 GPUs A40, 256GB RAM, 1788GB SSD, 1 x 25Gb Ethernet",
   "priority": 202206,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/nancy/clusters/grvingt/grvingt.json b/data/grid5000/sites/nancy/clusters/grvingt/grvingt.json
index 000200ab1d6..5a5697aa151 100644
--- a/data/grid5000/sites/nancy/clusters/grvingt/grvingt.json
+++ b/data/grid5000/sites/nancy/clusters/grvingt/grvingt.json
@@ -355,6 +355,8 @@
     }
   ],
   "model": "Dell PowerEdge C6420",
+  "nodes_count": 64,
+  "nodes_description": "2 CPUs Intel Xeon Gold 6130, 16 cores/CPU, 192GB RAM, 931GB HDD, 1 x 10Gb Ethernet, 1 x 100Gb Omni-Path",
   "priority": "201701",
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/nantes/clusters/econome/econome.json b/data/grid5000/sites/nantes/clusters/econome/econome.json
index dd13522b97d..b8e8af2d1c0 100644
--- a/data/grid5000/sites/nantes/clusters/econome/econome.json
+++ b/data/grid5000/sites/nantes/clusters/econome/econome.json
@@ -357,6 +357,8 @@
     }
   ],
   "model": "Dell PowerEdge C6220",
+  "nodes_count": 22,
+  "nodes_description": "2 CPUs Intel Xeon E5-2660, 8 cores/CPU, 64GB RAM, 1863GB HDD, 1 x 10Gb Ethernet",
   "priority": 201206,
   "queues": [
     "default",
diff --git a/data/grid5000/sites/nantes/clusters/ecotype/ecotype.json b/data/grid5000/sites/nantes/clusters/ecotype/ecotype.json
index bfc06856d39..a290777fe6d 100644
--- a/data/grid5000/sites/nantes/clusters/ecotype/ecotype.json
+++ b/data/grid5000/sites/nantes/clusters/ecotype/ecotype.json
@@ -916,6 +916,8 @@
     }
   ],
   "model": "Dell PowerEdge R630",
+  "nodes_count": 48,
+  "nodes_description": "2 CPUs Intel Xeon E5-2630L v4, 10 cores/CPU, 128GB RAM, 372GB SSD, 1 x 10Gb Ethernet",
   "priority": 201707,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/abacus1/abacus1.json b/data/grid5000/sites/rennes/clusters/abacus1/abacus1.json
index b982cc4fde6..03ed4a2be37 100644
--- a/data/grid5000/sites/rennes/clusters/abacus1/abacus1.json
+++ b/data/grid5000/sites/rennes/clusters/abacus1/abacus1.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge R730",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs Intel Xeon E5-2650 v4, 12 cores/CPU, 2 GPUs Tesla P100-PCIE-16GB, 128GB RAM, 278GB HDD, 1 x 1Gb Ethernet",
   "priority": 201707,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/abacus10/abacus10.json b/data/grid5000/sites/rennes/clusters/abacus10/abacus10.json
index 1267b134619..55a97a4d30f 100644
--- a/data/grid5000/sites/rennes/clusters/abacus10/abacus10.json
+++ b/data/grid5000/sites/rennes/clusters/abacus10/abacus10.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge T640",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs Intel Xeon Silver 4114, 10 cores/CPU, 4 GPUs RTX A5000, 192GB RAM, 893GB HDD, 278GB HDD, 5587GB HDD, 1 x 1Gb Ethernet",
   "priority": 201912,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/abacus11/abacus11.json b/data/grid5000/sites/rennes/clusters/abacus11/abacus11.json
index f1a3ada449f..0a3527b557e 100644
--- a/data/grid5000/sites/rennes/clusters/abacus11/abacus11.json
+++ b/data/grid5000/sites/rennes/clusters/abacus11/abacus11.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge T640",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs Intel Xeon Silver 4114, 10 cores/CPU, 2 GPUs RTX A5000, 192GB RAM, 278GB HDD, 893GB HDD, 7450GB HDD, 1 x 1Gb Ethernet",
   "priority": 201912,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/abacus12/abacus12.json b/data/grid5000/sites/rennes/clusters/abacus12/abacus12.json
index f5050955ddb..87fd40de09b 100644
--- a/data/grid5000/sites/rennes/clusters/abacus12/abacus12.json
+++ b/data/grid5000/sites/rennes/clusters/abacus12/abacus12.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge R740",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs Intel Xeon Gold 6248, 20 cores/CPU, 3 GPUs Tesla V100-PCIE-32GB, 384GB RAM, 278GB HDD, 1 x 10Gb Ethernet",
   "priority": 202010,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/abacus14/abacus14.json b/data/grid5000/sites/rennes/clusters/abacus14/abacus14.json
index c1efb3a359a..925c500a130 100644
--- a/data/grid5000/sites/rennes/clusters/abacus14/abacus14.json
+++ b/data/grid5000/sites/rennes/clusters/abacus14/abacus14.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge C4140",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs Intel Xeon Silver 4214, 12 cores/CPU, 4 GPUs Tesla V100-PCIE-32GB, 384GB RAM, 2x223GB SSD, 1 x 10Gb Ethernet",
   "priority": 202009,
   "queues": [
     "production",
diff --git a/data/grid5000/sites/rennes/clusters/abacus16/abacus16.json b/data/grid5000/sites/rennes/clusters/abacus16/abacus16.json
index fc5e169528b..c0aac9f50e4 100644
--- a/data/grid5000/sites/rennes/clusters/abacus16/abacus16.json
+++ b/data/grid5000/sites/rennes/clusters/abacus16/abacus16.json
@@ -409,6 +409,8 @@
     }
   ],
   "model": "Dell PowerEdge C4140",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs Intel Xeon Silver 4214, 12 cores/CPU, 4 GPUs Tesla V100-PCIE-32GB, 384GB RAM, 223GB HDD, 1 x 10Gb Ethernet",
   "priority": 202009,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/abacus17/abacus17.json b/data/grid5000/sites/rennes/clusters/abacus17/abacus17.json
index 0aeaa0b5449..3db92966310 100644
--- a/data/grid5000/sites/rennes/clusters/abacus17/abacus17.json
+++ b/data/grid5000/sites/rennes/clusters/abacus17/abacus17.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge R7525",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs AMD EPYC 7282, 16 cores/CPU, 2 GPUs Quadro RTX 6000, 256GB RAM, 223GB SSD, 894GB SSD, 1 x 1Gb Ethernet",
   "priority": 202111,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/abacus18/abacus18.json b/data/grid5000/sites/rennes/clusters/abacus18/abacus18.json
index 6c3211dd72d..515c8b06821 100644
--- a/data/grid5000/sites/rennes/clusters/abacus18/abacus18.json
+++ b/data/grid5000/sites/rennes/clusters/abacus18/abacus18.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge R7525",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs AMD EPYC 7352, 24 cores/CPU, 3 GPUs Quadro RTX 6000, 256GB RAM, 223GB SSD, 894GB SSD, 1 x 1Gb Ethernet",
   "priority": 202111,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/abacus19/abacus19.json b/data/grid5000/sites/rennes/clusters/abacus19/abacus19.json
index f94e91d7ebf..31ffcde813f 100644
--- a/data/grid5000/sites/rennes/clusters/abacus19/abacus19.json
+++ b/data/grid5000/sites/rennes/clusters/abacus19/abacus19.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge R740",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs Intel Xeon Gold 5220R, 24 cores/CPU, 2 GPUs Quadro RTX 8000, 384GB RAM, 894GB SSD, 223GB SSD, 1 x 1Gb Ethernet",
   "priority": 202111,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/abacus2/abacus2.json b/data/grid5000/sites/rennes/clusters/abacus2/abacus2.json
index ad2b2da21ab..321f3a22d67 100644
--- a/data/grid5000/sites/rennes/clusters/abacus2/abacus2.json
+++ b/data/grid5000/sites/rennes/clusters/abacus2/abacus2.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge R730",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs Intel Xeon E5-2609 v4, 8 cores/CPU, 2 GPUs Tesla P100-PCIE-16GB, 64GB RAM, 278GB HDD, 1 x 1Gb Ethernet",
   "priority": 201808,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/abacus20/abacus20.json b/data/grid5000/sites/rennes/clusters/abacus20/abacus20.json
index 9b7b1beba19..bbd5cb79302 100644
--- a/data/grid5000/sites/rennes/clusters/abacus20/abacus20.json
+++ b/data/grid5000/sites/rennes/clusters/abacus20/abacus20.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge T640",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs Intel Xeon Gold 5220R, 24 cores/CPU, 4 GPUs Quadro RTX 8000, 768GB RAM, 447GB SSD, 1788GB SSD, 1 x 1Gb Ethernet",
   "priority": 202112,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/abacus21/abacus21.json b/data/grid5000/sites/rennes/clusters/abacus21/abacus21.json
index c85b60bff4e..7c851285414 100644
--- a/data/grid5000/sites/rennes/clusters/abacus21/abacus21.json
+++ b/data/grid5000/sites/rennes/clusters/abacus21/abacus21.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge R7525",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs AMD EPYC 7F72, 24 cores/CPU, 3 GPUs A100-PCIE-40GB, 512GB RAM, 3576GB SSD, 2x446GB SSD, 1 x 1Gb Ethernet",
   "priority": 202208,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/abacus22/abacus22.json b/data/grid5000/sites/rennes/clusters/abacus22/abacus22.json
index dacb0861ed6..22d1463b4f4 100644
--- a/data/grid5000/sites/rennes/clusters/abacus22/abacus22.json
+++ b/data/grid5000/sites/rennes/clusters/abacus22/abacus22.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "ProLiant DL385 Gen10 Plus v2",
+  "nodes_count": 3,
+  "nodes_description": "2 CPUs AMD EPYC 7413, 24 cores/CPU, 3 GPUs A40, 512GB RAM, 1788GB SSD, 894GB SSD, 1 x 10Gb Ethernet",
   "priority": 202301,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/abacus25/abacus25.json b/data/grid5000/sites/rennes/clusters/abacus25/abacus25.json
index 2042dfcad99..75c7f5859df 100644
--- a/data/grid5000/sites/rennes/clusters/abacus25/abacus25.json
+++ b/data/grid5000/sites/rennes/clusters/abacus25/abacus25.json
@@ -877,6 +877,8 @@
     }
   ],
   "model": "HPE ProLiant DL385 Gen10+ v2",
+  "nodes_count": 4,
+  "nodes_description": "2 CPUs AMD EPYC 7413, 24 cores/CPU, 3 GPUs A40, 512GB RAM, 3x894GB SSD, 1 x 10Gb Ethernet",
   "priority": 202310,
   "queues": [
     "production",
diff --git a/data/grid5000/sites/rennes/clusters/abacus26/abacus26.json b/data/grid5000/sites/rennes/clusters/abacus26/abacus26.json
index c15ac38c34b..52c6cc47176 100644
--- a/data/grid5000/sites/rennes/clusters/abacus26/abacus26.json
+++ b/data/grid5000/sites/rennes/clusters/abacus26/abacus26.json
@@ -79,6 +79,8 @@
     }
   ],
   "model": "HPE ProLiant DL380 Gen11",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs Intel Xeon Gold 6442Y, 24 cores/CPU, 2 GPUs L40S, 256GB RAM, 1490GB SSD, 1 x 10Gb Ethernet",
   "priority": 202510,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/abacus27/abacus27.json b/data/grid5000/sites/rennes/clusters/abacus27/abacus27.json
index 8a0aa1376ca..17086c8d584 100644
--- a/data/grid5000/sites/rennes/clusters/abacus27/abacus27.json
+++ b/data/grid5000/sites/rennes/clusters/abacus27/abacus27.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "ProLiant DL385 Gen11",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs AMD EPYC 9254, 24 cores/CPU, 3 GPUs H100 NVL, 512GB RAM, 5961GB SSD, 1 x 10Gb Ethernet",
   "priority": 202511,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/abacus28/abacus28.json b/data/grid5000/sites/rennes/clusters/abacus28/abacus28.json
index 674f7387594..4fcd84577f5 100644
--- a/data/grid5000/sites/rennes/clusters/abacus28/abacus28.json
+++ b/data/grid5000/sites/rennes/clusters/abacus28/abacus28.json
@@ -79,6 +79,8 @@
     }
   ],
   "model": "Dell PowerEdge C4140",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs Intel Xeon Silver 4216, 16 cores/CPU, 4 GPUs Tesla V100-SXM2-32GB, 384GB RAM, 447GB SSD, 1 x 10Gb Ethernet",
   "priority": 202112,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/abacus3/abacus3.json b/data/grid5000/sites/rennes/clusters/abacus3/abacus3.json
index 696de79cecc..068cf0903cd 100644
--- a/data/grid5000/sites/rennes/clusters/abacus3/abacus3.json
+++ b/data/grid5000/sites/rennes/clusters/abacus3/abacus3.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge T640",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs Intel Xeon E5-2620 v4, 8 cores/CPU, 4 GPUs RTX A5000, 128GB RAM, 278GB HDD, 893GB HDD, 7451GB HDD, 1 x 1Gb Ethernet",
   "priority": 201807,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/abacus4/abacus4.json b/data/grid5000/sites/rennes/clusters/abacus4/abacus4.json
index 134470948b1..283e15fcd37 100644
--- a/data/grid5000/sites/rennes/clusters/abacus4/abacus4.json
+++ b/data/grid5000/sites/rennes/clusters/abacus4/abacus4.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge R740",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs Intel Xeon Silver 4114, 10 cores/CPU, 2 GPUs A40, 128GB RAM, 893GB HDD, 1 x 1Gb Ethernet",
   "priority": 201811,
   "queues": [
     "production",
diff --git a/data/grid5000/sites/rennes/clusters/abacus5/abacus5.json b/data/grid5000/sites/rennes/clusters/abacus5/abacus5.json
index 7a77b4e6848..de4a2089408 100644
--- a/data/grid5000/sites/rennes/clusters/abacus5/abacus5.json
+++ b/data/grid5000/sites/rennes/clusters/abacus5/abacus5.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge R740",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs Intel Xeon Gold 5115, 10 cores/CPU, 2 GPUs Tesla P100-PCIE-16GB, 192GB RAM, 1116GB HDD, 1 x 1Gb Ethernet",
   "priority": 201905,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/abacus8/abacus8.json b/data/grid5000/sites/rennes/clusters/abacus8/abacus8.json
index 65cdd1845a5..59d4574aa42 100644
--- a/data/grid5000/sites/rennes/clusters/abacus8/abacus8.json
+++ b/data/grid5000/sites/rennes/clusters/abacus8/abacus8.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge R7920",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs Intel Xeon Gold 5120, 14 cores/CPU, 2 GPUs Quadro P6000, 192GB RAM, 2x476GB SSD, 1 x 1Gb Ethernet",
   "priority": 201911,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/abacus9/abacus9.json b/data/grid5000/sites/rennes/clusters/abacus9/abacus9.json
index 31a658183d0..9a1ca8ac31d 100644
--- a/data/grid5000/sites/rennes/clusters/abacus9/abacus9.json
+++ b/data/grid5000/sites/rennes/clusters/abacus9/abacus9.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge C4140",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs Intel Xeon Silver 4114, 10 cores/CPU, 4 GPUs Tesla V100-SXM2-32GB, 192GB RAM, 223GB HDD, 1 x 10Gb Ethernet",
   "priority": 201912,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/paradoxe/paradoxe.json b/data/grid5000/sites/rennes/clusters/paradoxe/paradoxe.json
index 0eec19ca07e..abdedad0a59 100644
--- a/data/grid5000/sites/rennes/clusters/paradoxe/paradoxe.json
+++ b/data/grid5000/sites/rennes/clusters/paradoxe/paradoxe.json
@@ -653,6 +653,8 @@
     }
   ],
   "model": "HPE Proliant DL360 Gen10+",
+  "nodes_count": 32,
+  "nodes_description": "2 CPUs Intel Xeon Gold 5320, 26 cores/CPU, 384GB RAM, 2x1788GB SSD, 1 x 25Gb Ethernet",
   "priority": 202305,
   "queues": [
     "default",
diff --git a/data/grid5000/sites/rennes/clusters/parasilo/parasilo.json b/data/grid5000/sites/rennes/clusters/parasilo/parasilo.json
index 603137c7c29..93aa37e26f4 100644
--- a/data/grid5000/sites/rennes/clusters/parasilo/parasilo.json
+++ b/data/grid5000/sites/rennes/clusters/parasilo/parasilo.json
@@ -538,6 +538,8 @@
     }
   ],
   "model": "Dell PowerEdge R630",
+  "nodes_count": 28,
+  "nodes_description": "2 CPUs Intel Xeon E5-2630 v3, 8 cores/CPU, 128GB RAM, 5x558GB HDD, 186GB SSD, 2 x 10Gb Ethernet",
   "priority": 201501,
   "queues": [
     "default",
diff --git a/data/grid5000/sites/rennes/clusters/roazhon1/roazhon1.json b/data/grid5000/sites/rennes/clusters/roazhon1/roazhon1.json
index 294033c4724..1fcaa4dadde 100644
--- a/data/grid5000/sites/rennes/clusters/roazhon1/roazhon1.json
+++ b/data/grid5000/sites/rennes/clusters/roazhon1/roazhon1.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge R640",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs Intel Xeon Gold 6154, 18 cores/CPU, 384GB RAM, 744GB HDD, 1 x 1Gb Ethernet",
   "priority": 201809,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/roazhon10/roazhon10.json b/data/grid5000/sites/rennes/clusters/roazhon10/roazhon10.json
index c3a7693d6bb..73b0ca9bae1 100644
--- a/data/grid5000/sites/rennes/clusters/roazhon10/roazhon10.json
+++ b/data/grid5000/sites/rennes/clusters/roazhon10/roazhon10.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge MX740c",
+  "nodes_count": 4,
+  "nodes_description": "2 CPUs Intel Xeon Gold 5220, 18 cores/CPU, 384GB RAM, 223GB HDD, 1787GB HDD, 1 x 10Gb Ethernet",
   "priority": 201909,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/roazhon11/roazhon11.json b/data/grid5000/sites/rennes/clusters/roazhon11/roazhon11.json
index 09fd389dd05..571c6a257dd 100644
--- a/data/grid5000/sites/rennes/clusters/roazhon11/roazhon11.json
+++ b/data/grid5000/sites/rennes/clusters/roazhon11/roazhon11.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge C6220",
+  "nodes_count": 3,
+  "nodes_description": "2 CPUs Intel Xeon E5-2660, 8 cores/CPU, 64GB RAM, 556GB HDD, 1 x 1Gb Ethernet",
   "priority": 201209,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/roazhon12/roazhon12.json b/data/grid5000/sites/rennes/clusters/roazhon12/roazhon12.json
index 70763dab4fb..7451fde88f5 100644
--- a/data/grid5000/sites/rennes/clusters/roazhon12/roazhon12.json
+++ b/data/grid5000/sites/rennes/clusters/roazhon12/roazhon12.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge C6220",
+  "nodes_count": 4,
+  "nodes_description": "2 CPUs Intel Xeon E5-2660, 8 cores/CPU, 128GB RAM, 556GB HDD, 1 x 1Gb Ethernet",
   "priority": 201209,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/roazhon13/roazhon13.json b/data/grid5000/sites/rennes/clusters/roazhon13/roazhon13.json
index 4bec9ac4485..a337b620547 100644
--- a/data/grid5000/sites/rennes/clusters/roazhon13/roazhon13.json
+++ b/data/grid5000/sites/rennes/clusters/roazhon13/roazhon13.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge C6420",
+  "nodes_count": 8,
+  "nodes_description": "2 CPUs Intel Xeon Gold 6254, 18 cores/CPU, 384GB RAM, 931GB HDD, 1 x 10Gb Ethernet",
   "priority": 201909,
   "queues": [
     "production",
diff --git a/data/grid5000/sites/rennes/clusters/roazhon2/roazhon2.json b/data/grid5000/sites/rennes/clusters/roazhon2/roazhon2.json
index 36525b28777..0ccab51d315 100644
--- a/data/grid5000/sites/rennes/clusters/roazhon2/roazhon2.json
+++ b/data/grid5000/sites/rennes/clusters/roazhon2/roazhon2.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge R640",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs Intel Xeon Gold 5120, 14 cores/CPU, 256GB RAM, 744GB HDD, 14GB HDD, 1 x 1Gb Ethernet",
   "priority": 201810,
   "queues": [
     "production",
diff --git a/data/grid5000/sites/rennes/clusters/roazhon3/roazhon3.json b/data/grid5000/sites/rennes/clusters/roazhon3/roazhon3.json
index 6c5411635f9..219ed3dd393 100644
--- a/data/grid5000/sites/rennes/clusters/roazhon3/roazhon3.json
+++ b/data/grid5000/sites/rennes/clusters/roazhon3/roazhon3.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge R640",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs Intel Xeon Gold 6142, 16 cores/CPU, 1024GB RAM, 2x1489GB SSD, 1 x 10Gb Ethernet",
   "priority": 201811,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/roazhon4/roazhon4.json b/data/grid5000/sites/rennes/clusters/roazhon4/roazhon4.json
index 8c5a850561f..9bdcb973f8a 100644
--- a/data/grid5000/sites/rennes/clusters/roazhon4/roazhon4.json
+++ b/data/grid5000/sites/rennes/clusters/roazhon4/roazhon4.json
@@ -252,6 +252,8 @@
     }
   ],
   "model": "Dell PowerEdge R7525",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs AMD EPYC 7H12, 64 cores/CPU, 512GB RAM, 447GB HDD, 1863GB HDD, 1 x 1Gb Ethernet",
   "priority": 202012,
   "queues": [
     "production",
diff --git a/data/grid5000/sites/rennes/clusters/roazhon5/roazhon5.json b/data/grid5000/sites/rennes/clusters/roazhon5/roazhon5.json
index dfd706fc070..1241a730f9b 100644
--- a/data/grid5000/sites/rennes/clusters/roazhon5/roazhon5.json
+++ b/data/grid5000/sites/rennes/clusters/roazhon5/roazhon5.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge M630",
+  "nodes_count": 12,
+  "nodes_description": "2 CPUs Intel Xeon E5-2660 v3, 10 cores/CPU, 128GB RAM, 557GB HDD, 1 x 1Gb Ethernet",
   "priority": 201504,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/roazhon6/roazhon6.json b/data/grid5000/sites/rennes/clusters/roazhon6/roazhon6.json
index 87bd7bf92f3..ae278660a74 100644
--- a/data/grid5000/sites/rennes/clusters/roazhon6/roazhon6.json
+++ b/data/grid5000/sites/rennes/clusters/roazhon6/roazhon6.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge M630",
+  "nodes_count": 4,
+  "nodes_description": "2 CPUs Intel Xeon E5-2650 v4, 12 cores/CPU, 192GB RAM, 1116GB HDD, 1 x 1Gb Ethernet",
   "priority": 201710,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/roazhon7/roazhon7.json b/data/grid5000/sites/rennes/clusters/roazhon7/roazhon7.json
index cbfd60592d0..7bd5e1b0c2c 100644
--- a/data/grid5000/sites/rennes/clusters/roazhon7/roazhon7.json
+++ b/data/grid5000/sites/rennes/clusters/roazhon7/roazhon7.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge C6320",
+  "nodes_count": 4,
+  "nodes_description": "2 CPUs Intel Xeon E5-2650 v4, 12 cores/CPU, 128GB RAM, 931GB HDD, 1 x 10Gb Ethernet",
   "priority": 201706,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/roazhon8/roazhon8.json b/data/grid5000/sites/rennes/clusters/roazhon8/roazhon8.json
index bdb9931f560..e968d5577e6 100644
--- a/data/grid5000/sites/rennes/clusters/roazhon8/roazhon8.json
+++ b/data/grid5000/sites/rennes/clusters/roazhon8/roazhon8.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge C6320",
+  "nodes_count": 4,
+  "nodes_description": "2 CPUs Intel Xeon E5-2650 v4, 12 cores/CPU, 256GB RAM, 931GB HDD, 1 x 10Gb Ethernet",
   "priority": 201706,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/rennes/clusters/roazhon9/roazhon9.json b/data/grid5000/sites/rennes/clusters/roazhon9/roazhon9.json
index 23e76ff0c80..8cc991fbd65 100644
--- a/data/grid5000/sites/rennes/clusters/roazhon9/roazhon9.json
+++ b/data/grid5000/sites/rennes/clusters/roazhon9/roazhon9.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge C6420",
+  "nodes_count": 4,
+  "nodes_description": "2 CPUs Intel Xeon Gold 5118, 12 cores/CPU, 512GB RAM, 1116GB HDD, 1 x 10Gb Ethernet",
   "priority": 201712,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/sophia/clusters/esterel10/esterel10.json b/data/grid5000/sites/sophia/clusters/esterel10/esterel10.json
index 6c2db797ed5..5ec7cc537a7 100644
--- a/data/grid5000/sites/sophia/clusters/esterel10/esterel10.json
+++ b/data/grid5000/sites/sophia/clusters/esterel10/esterel10.json
@@ -79,6 +79,8 @@
     }
   ],
   "model": "Dell T630",
+  "nodes_count": 3,
+  "nodes_description": "2 CPUs Intel Xeon E5-2630 v4, 10 cores/CPU, 4 GPUs GeForce GTX 1080 Ti, 128GB RAM, 1490GB SSD, 2x558GB HDD, 1 x 1Gb Ethernet, 1 x 56Gb InfiniBand",
   "priority": 201811,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/sophia/clusters/esterel41/esterel41.json b/data/grid5000/sites/sophia/clusters/esterel41/esterel41.json
index 7a4405e86e9..fbbf8fcd803 100644
--- a/data/grid5000/sites/sophia/clusters/esterel41/esterel41.json
+++ b/data/grid5000/sites/sophia/clusters/esterel41/esterel41.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "DL380 Gen11",
+  "nodes_count": 1,
+  "nodes_description": "2 CPUs Intel Xeon Gold 6426Y, 16 cores/CPU, 2 GPUs L40, 512GB RAM, 446GB SSD, 2681GB SSD, 1 x 1Gb Ethernet, 1 x 56Gb InfiniBand",
   "priority": 202503,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/sophia/clusters/mercantour2/mercantour2.json b/data/grid5000/sites/sophia/clusters/mercantour2/mercantour2.json
index eb8e730dcb3..c78ea4d1f32 100644
--- a/data/grid5000/sites/sophia/clusters/mercantour2/mercantour2.json
+++ b/data/grid5000/sites/sophia/clusters/mercantour2/mercantour2.json
@@ -52,6 +52,8 @@
     }
   ],
   "model": "Dell PowerEdge C6220 II",
+  "nodes_count": 8,
+  "nodes_description": "2 CPUs Intel Xeon E5-2650 v2, 8 cores/CPU, 256GB RAM, 931GB HDD, 1 x 1Gb Ethernet, 1 x 40Gb InfiniBand",
   "priority": 201509,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/sophia/clusters/musa/musa.json b/data/grid5000/sites/sophia/clusters/musa/musa.json
index c6165e565f4..f9df1c0ce13 100644
--- a/data/grid5000/sites/sophia/clusters/musa/musa.json
+++ b/data/grid5000/sites/sophia/clusters/musa/musa.json
@@ -1113,6 +1113,8 @@
     }
   ],
   "model": "ProLiant DL385 Gen11",
+  "nodes_count": 6,
+  "nodes_description": "2 CPUs AMD EPYC 9254, 24 cores/CPU, 2 GPUs H100 NVL, 512GB RAM, 5961GB SSD, 1 x 25Gb Ethernet",
   "priority": 202512,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/sophia/clusters/uvb/uvb.json b/data/grid5000/sites/sophia/clusters/uvb/uvb.json
index 171094abfdc..74c345a739b 100644
--- a/data/grid5000/sites/sophia/clusters/uvb/uvb.json
+++ b/data/grid5000/sites/sophia/clusters/uvb/uvb.json
@@ -51,6 +51,8 @@
     }
   ],
   "model": "Dell PowerEdge C6100",
+  "nodes_count": 44,
+  "nodes_description": "2 CPUs Intel Xeon X5670, 6 cores/CPU, 96GB RAM, 232GB HDD, 1 x 1Gb Ethernet, 1 x 40Gb InfiniBand",
   "priority": 201101,
   "queues": [
     "default",
diff --git a/data/grid5000/sites/strasbourg/clusters/fleckenstein/fleckenstein.json b/data/grid5000/sites/strasbourg/clusters/fleckenstein/fleckenstein.json
index 410f5a13f53..746370ed4b4 100644
--- a/data/grid5000/sites/strasbourg/clusters/fleckenstein/fleckenstein.json
+++ b/data/grid5000/sites/strasbourg/clusters/fleckenstein/fleckenstein.json
@@ -501,6 +501,8 @@
     }
   ],
   "model": "HPE Proliant DL360 Gen10+",
+  "nodes_count": 10,
+  "nodes_description": "2 CPUs Intel Xeon Silver 4314, 16 cores/CPU, 512GB RAM, 894GB SSD, 3x2235GB HDD, 2 x 25Gb Ethernet",
   "priority": 202212,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/toulouse/clusters/estats/estats.json b/data/grid5000/sites/toulouse/clusters/estats/estats.json
index 9cca6ee1a1d..20fad92a2d0 100644
--- a/data/grid5000/sites/toulouse/clusters/estats/estats.json
+++ b/data/grid5000/sites/toulouse/clusters/estats/estats.json
@@ -8,6 +8,8 @@
 
   ],
   "model": "Connecttech/Nvidia Jetson AGX Xavier",
+  "nodes_count": 12,
+  "nodes_description": "1 CPU Carmel Unknown, 8 cores/CPU, 1 GPU AGX Xavier, 32GB RAM, 1863GB SSD, 1 x 1Gb Ethernet",
   "priority": 202312,
   "queues": [
     "admin",
diff --git a/data/grid5000/sites/toulouse/clusters/montcalm/montcalm.json b/data/grid5000/sites/toulouse/clusters/montcalm/montcalm.json
index 92e475cf9d9..b9d089ae74c 100644
--- a/data/grid5000/sites/toulouse/clusters/montcalm/montcalm.json
+++ b/data/grid5000/sites/toulouse/clusters/montcalm/montcalm.json
@@ -787,6 +787,8 @@
     }
   ],
   "model": "HPE Proliant DL360 Gen10+",
+  "nodes_count": 10,
+  "nodes_description": "2 CPUs Intel Xeon Silver 4314, 16 cores/CPU, 256GB RAM, 894GB SSD, 1 x 10Gb Ethernet",
   "priority": 202211,
   "queues": [
     "default",
diff --git a/lib/refrepo/gen/reference-api.rb b/lib/refrepo/gen/reference-api.rb
index 242b92695e8..52b4077495c 100644
--- a/lib/refrepo/gen/reference-api.rb
+++ b/lib/refrepo/gen/reference-api.rb
@@ -15,6 +15,52 @@ def create_network_equipment(network_uid, network, refapi_path, site_uid = nil)
   write_json(network_path.join("#{network_uid}.json"), network)
 end
 
+def gen_node_description(node)
+  nb_cpu        = node['architecture']['nb_procs'].to_i
+  core_per_cpu  = node['architecture']['nb_cores'].to_i / nb_cpu
+  ram           = (node['main_memory']['ram_size'].to_i.to_f / (1024**3).to_f).round
+  pmem          = (node['main_memory']['pmem_size'].to_i.to_f / (1024**3).to_f).round if node['main_memory']['pmem_size']
+  proc_model    = node['processor']['model']
+  proc_version  = node['processor']['version']
+  if node.key?('gpu_devices')
+    nb_gpu       = node['gpu_devices'].length
+    gpu_model    = node['gpu_devices'].first[1]['model']
+  end
+  na            = {}
+  net_int       = node['network_adapters']
+  net_int.select {
+    |int| int['mountable']
+  }.each { |i|
+    if na.key?((i['rate'] / 1_000_000_000).to_s + 'Gb ' + i['interface'])
+      na[(i['rate'] / 1_000_000_000).to_s + 'Gb ' + i['interface']] += 1
+    else
+      na[(i['rate'] / 1_000_000_000).to_s + 'Gb ' + i['interface']] = 1
+    end
+  }
+  storages = {}
+  node['storage_devices'].each do |device|
+    unless device['storage'].nil?
+      storages[device['storage']].nil? ? storages[device['storage']] = [(device['size'].to_i / 1024**3).round] : storages[device['storage']] += [(device['size'].to_i / 1024**3).round]
+    end
+  end # each storage
+  cluster_storages = ''
+  storages.each do |t, s|
+    sizes = Hash.new(0)
+    s.each { |v| sizes.store(v, sizes[v]+1) }
+    sizes.each do |size, nb|
+      if nb > 1
+        cluster_storages += " #{nb}x#{size}GB #{t},"
+      else
+        cluster_storages += " #{size}GB #{t},"
+      end
+    end # each size
+  end # each storage
+  cluster_storages = cluster_storages[0..-2]
+  pmem_message = pmem ? ", #{pmem}GB PMEM" : ''
+  gpu_message  = nb_gpu ? ", #{nb_gpu} GPU#{nb_gpu > 1 ? "s" : ""} #{gpu_model}" : ''
+  return "#{nb_cpu} CPU#{(nb_cpu > 1) ? "s" : ""} #{proc_model} #{proc_version}, #{core_per_cpu} core#{(core_per_cpu > 1) ? "s" : ""}/CPU#{gpu_message}, #{ram}GB RAM#{pmem_message},#{cluster_storages}, #{na.map { |k,v| "#{v} x #{k}" }.join(', ') }"
+end
+
 def generate_reference_api
   # Output directory
   output_data_dir = "../../../data/grid5000/"
@@ -134,10 +180,6 @@ def generate_reference_api
         end
       end
 
-      # Write cluster info w/o nodes entries
-      write_json(cluster_path.join("#{cluster_uid}.json"),
-                 cluster.reject {|k, _v| k == "nodes"})
-
       #
       # Write node info
       #
@@ -165,6 +207,15 @@ def generate_reference_api
 
         write_json(cluster_path.join("nodes","#{node_uid}.json"), node)
       end
+
+      # Add nodes details to cluster description
+      cluster['nodes_count'] = cluster['nodes'].length
+      cluster['nodes_description'] = gen_node_description(cluster['nodes'].values.first)
+
+      # Write cluster info w/o nodes entries
+      write_json(cluster_path.join("#{cluster_uid}.json"),
+                 cluster.reject {|k, _v| k == "nodes"})
+
     end
 
   end
-- 
GitLab