From 7b3f5541cde8e7b81fc3259ca66c52f730346450 Mon Sep 17 00:00:00 2001
From: Baptiste Jonglez <baptiste.jonglez@imag.fr>
Date: Tue, 12 Oct 2021 18:08:01 +0200
Subject: [PATCH] [wiki/hardware] Show all SSD models, not just NVMe

---
 lib/refrepo/gen/wiki/generators/hardware.rb | 32 ++++++++++++++-------
 1 file changed, 21 insertions(+), 11 deletions(-)

diff --git a/lib/refrepo/gen/wiki/generators/hardware.rb b/lib/refrepo/gen/wiki/generators/hardware.rb
index f7e86461a86..c662eaad118 100644
--- a/lib/refrepo/gen/wiki/generators/hardware.rb
+++ b/lib/refrepo/gen/wiki/generators/hardware.rb
@@ -79,7 +79,7 @@ class G5KHardwareGenerator < WikiGenerator
       'pmem_size' => {},
       'net_interconnects' => {},
       'net_models' => {},
-      'nvme_models' => {},
+      'ssd_models' => {},
       'acc_families' => {},
       'acc_models' => {},
       'acc_cores' => {},
@@ -177,20 +177,30 @@ class G5KHardwareGenerator < WikiGenerator
             }
 
             # NVMe SSD models
-            nvme = node_hash['storage_devices'].select{ |v|
-              v['interface'] == 'NVME'}.map{ |v|
+            ssd = node_hash['storage_devices'].select{ |v|
+              v['storage'] == 'SSD'}.map{ |v|
               t = v['alt_model_name'] || v['model'] || 'N/A';
+              # Add vendor if not already there
+              if not t.downcase.start_with?(v['vendor'].downcase)
+                t = "#{v['vendor']} #{t}"
+              end
               [
+                {
+                  text: v['interface'], sort: v['interface'] 
+                },
                 {
                   text: t, sort: t
-                }
+                },
+                {
+                  text: G5K.get_size(v['size'], 'metric'), sort: v['size'] 
+                },
               ]
             }
 
-            nvme_models = nvme.inject(Hash.new(0)){ |h, v| h[v] += 1; h }
-            nvme_models.sort_by { |k, v|  k.first[:sort] }.each { |k, v|
-              init(data, 'nvme_models', k)
-              data['nvme_models'][k][site_uid] += v
+            ssd_models = ssd.inject(Hash.new(0)){ |h, v| h[v] += 1; h }
+            ssd_models.sort_by { |k, v|  k.first[:sort] }.each { |k, v|
+              init(data, 'ssd_models', k)
+              data['ssd_models'][k][site_uid] += v
             }
 
             # Accelerators
@@ -292,9 +302,9 @@ class G5KHardwareGenerator < WikiGenerator
     generated_content += MW.generate_table(table_options, table_columns, get_table_data(data, 'net_models'))
 
     generated_content += "\n= Storage ="
-    generated_content += "\n== NVMe SSD models ==\n"
-    table_columns = ['NVMe SSD models'] + sites + ['NVMe SSDs total']
-    generated_content += MW.generate_table(table_options, table_columns, get_table_data(data, 'nvme_models'))
+    generated_content += "\n== SSD models ==\n"
+    table_columns = ['SSD interface', 'Model', 'Size'] + sites + ['SSDs total']
+    generated_content += MW.generate_table(table_options, table_columns, get_table_data(data, 'ssd_models'))
     generated_content += "\n== Nodes with several disks ==\n"
     generated_content +=  generate_storage
     generated_content += "\n''*: disk is [[Disk_reservation|reservable]]''"
-- 
GitLab