diff --git a/generators/wiki/site_hardware.rb b/generators/wiki/site_hardware.rb index 459422293e2810b395b6a67a063c52506eceb2df..54e8efa6295fcc82de7251c9c5f165fc2ca266ee 100644 --- a/generators/wiki/site_hardware.rb +++ b/generators/wiki/site_hardware.rb @@ -18,6 +18,7 @@ class SiteHardwareGenerator < WikiGenerator @generated_content = "__NOTOC__\n__NOEDITSECTION__\n" @generated_content += "<div class=\"sitelink\">[[Hardware|Global]] | " + G5K::SITES.map { |e| "[[#{e.capitalize}:Hardware|#{e.capitalize}]]" }.join(" | ") + "</div>\n" @generated_content += "\n= Summary =\n" + @generated_content += "'''#{generate_oneline_summary}'''\n" @generated_content += self.class.generate_summary(@site, false) @generated_content += self.class.generate_description(@site) @generated_content += MW.italic(MW.small('Generated from the Grid5000 APIs on ' + Time.now.strftime('%Y-%m-%d'))) @@ -34,6 +35,23 @@ class SiteHardwareGenerator < WikiGenerator MW.generate_table('class="wikitable sortable"', table_columns, table_data) + "\n" end + def generate_oneline_summary + h = G5K::get_global_hash['sites'][@site] + # remove retired nodes + # FIXME this should probably move to a helper + h['clusters'].each_pair do |cl, v| + v['nodes'].delete_if { |n, v| v['status'] == 'retired' } + end + h['clusters'].delete_if { |k, v| v['nodes'].empty? } + + clusters = h['clusters'].length + nodes = h['clusters'].inject(0) { |a, b| a + b[1]['nodes'].values.length } + cores = h['clusters'].inject(0) { |a, b| cnodes = b[1]['nodes'].values ; a + cnodes.length * cnodes.first['architecture']['nb_cores'] } + flops = h['clusters'].inject(0) { |a, b| cnodes = b[1]['nodes'].values ; a + cnodes.length * (cnodes.first['performance']['node_flops'] rescue 0) } + tflops = sprintf("%.1f", flops.to_f / (10**12)) + return "#{clusters} cluster#{clusters > 1 ? 's' : ''}, #{nodes} node#{nodes > 1 ? 's' : ''}, #{cores} core#{cores > 1 ? 's' : ''}, #{tflops} TFLOPS" + end + def self.generate_summary(site, with_sites) table_columns, table_data = self.generate_summary_data(site, with_sites) MW.generate_table('class="wikitable sortable"', table_columns, table_data) + "\n"