From b7958434c636b1b507b4fc354135418039c5d818 Mon Sep 17 00:00:00 2001 From: Lucas Nussbaum <lucas.nussbaum@loria.fr> Date: Fri, 7 Dec 2018 10:44:33 +0100 Subject: [PATCH] [dev/wiki] Add some totals to the hardware page --- lib/refrepo/gen/wiki/generators/hardware.rb | 40 +++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/lib/refrepo/gen/wiki/generators/hardware.rb b/lib/refrepo/gen/wiki/generators/hardware.rb index 9c590749c7f..44665ce3778 100644 --- a/lib/refrepo/gen/wiki/generators/hardware.rb +++ b/lib/refrepo/gen/wiki/generators/hardware.rb @@ -13,6 +13,7 @@ class G5KHardwareGenerator < WikiGenerator @generated_content = "__NOEDITSECTION__\n" @generated_content += "<div class=\"sitelink\">[[Hardware|Global]] | " + G5K::SITES.map { |e| "[[#{e.capitalize}:Hardware|#{e.capitalize}]]" }.join(" | ") + "</div>\n" + @generated_content += generate_summary @generated_content += "\n= Clusters =\n" @generated_content += SiteHardwareGenerator.generate_all_clusters @generated_content += generate_totals @@ -20,6 +21,45 @@ class G5KHardwareGenerator < WikiGenerator @generated_content += MW::LINE_FEED end + def generate_summary + sites = @global_hash['sites'].length + clusters = 0 + nodes = 0 + cores = 0 + gpus = 0 + hdds = 0 + ssds = 0 + storage_space = 0 + + @global_hash['sites'].sort.to_h.each do |site_uid, site_hash| + clusters += site_hash['clusters'].length + site_hash['clusters'].sort.to_h.each do |cluster_uid, cluster_hash| + nodes += cluster_hash['nodes'].length + cluster_hash['nodes'].sort.to_h.each do |node_uid, node_hash| + next if node_hash['status'] == 'retired' + cores += node_hash['architecture']['nb_cores'] + if node_hash['gpu'] and node_hash['gpu']['gpu_count'] + gpus += node_hash['gpu']['gpu_count'] + end + ssds += node_hash['storage_devices'].values.select { |d| d['storage'] == 'SSD' }.length + hdds += node_hash['storage_devices'].values.select { |d| d['storage'] == 'HDD' }.length + node_hash['storage_devices'].each_pair do |k, e| + storage_space += e['size'] + end + end + end + end + return <<-EOF += Summary = +* #{sites} sites +* #{clusters} clusters +* #{nodes} nodes +* #{cores} CPU cores +* #{gpus} GPUs +* #{ssds} SSDs and #{hdds} HDDs on nodes (total: #{G5K.get_size(storage_space, 'metric')}) + EOF + end + def generate_totals data = { 'proc_families' => {}, -- GitLab