diff --git a/generators/wiki/cpu_parameters.rb b/generators/wiki/cpu_parameters.rb index 441cad5cf875f6fc30dbb923506899934cf0513a..16997679c298b61a167c1eca6b808034f65d5308 100644 --- a/generators/wiki/cpu_parameters.rb +++ b/generators/wiki/cpu_parameters.rb @@ -15,8 +15,8 @@ class CPUParametersGenerator < WikiGenerator global_hash = load_yaml_file_hierarchy(File.expand_path("../../input/grid5000/", File.dirname(__FILE__))) # Loop over Grid'5000 sites - global_hash["sites"].each { |site_uid, site_hash| - site_hash.fetch("clusters").each { |cluster_uid, cluster_hash| + global_hash["sites"].sort.to_h.each { |site_uid, site_hash| + site_hash.fetch("clusters").sort.to_h.each { |cluster_uid, cluster_hash| node_hash = cluster_hash.fetch('nodes').first[1] diff --git a/generators/wiki/disk_reservation.rb b/generators/wiki/disk_reservation.rb index bd24177e985b1d0ea8f582f13b0e1e96e1db7325..65137b1a91cde563041e3d0cef9d03475e821d93 100644 --- a/generators/wiki/disk_reservation.rb +++ b/generators/wiki/disk_reservation.rb @@ -15,17 +15,17 @@ class DiskReservationGenerator < WikiGenerator global_hash = load_yaml_file_hierarchy(File.expand_path("../../input/grid5000/", File.dirname(__FILE__))) # Loop over Grid'5000 sites - global_hash["sites"].each { |site_uid, site_hash| - site_hash.fetch("clusters").each { |cluster_uid, cluster_hash| + global_hash["sites"].sort.to_h.each { |site_uid, site_hash| + site_hash.fetch("clusters").sort.to_h.each { |cluster_uid, cluster_hash| disk_info = {} - cluster_hash.fetch('nodes').sort.each { |node_uid, node_hash| + cluster_hash.fetch('nodes').sort.to_h.each { |node_uid, node_hash| next if node_hash['status'] == 'retired' reservable_disks = node_hash['storage_devices'].select{ |k, v| v['reservation'] == true }.count add(disk_info, node_uid, reservable_disks) } # One line for each group of nodes with the same number of reservable disks - disk_info.each { |num, reservable_disks| + disk_info.sort.to_h.each { |num, reservable_disks| table_data << [ "[[#{site_uid.capitalize}:Hardware|#{site_uid.capitalize}]]", "[https://public-api.grid5000.fr/stable/sites/#{site_uid}/clusters/#{cluster_uid}/nodes.json?pretty=1 #{cluster_uid}" + (disk_info.size== 1 ? '' : '-' + G5K.nodeset(num)) + "]", diff --git a/generators/wiki/hardware.rb b/generators/wiki/hardware.rb index 0faeee7c6a585d984d2eeceff42e4f422f670afe..121ca0ec323b5354e91b0289bc92d4431fbb63f8 100644 --- a/generators/wiki/hardware.rb +++ b/generators/wiki/hardware.rb @@ -36,9 +36,9 @@ class G5KHardwareGenerator < WikiGenerator 'node_models' => {} } - @global_hash['sites'].sort.each { |site_uid, site_hash| - site_hash['clusters'].sort.each { |cluster_uid, cluster_hash| - cluster_hash['nodes'].sort.each { |node_uid, node_hash| + @global_hash['sites'].sort.to_h.each { |site_uid, site_hash| + site_hash['clusters'].sort.to_h.each { |cluster_uid, cluster_hash| + cluster_hash['nodes'].sort.to_h.each { |node_uid, node_hash| next if node_hash['status'] == 'retired' @node = node_uid @@ -74,7 +74,7 @@ class G5KHardwareGenerator < WikiGenerator .uniq net_interconnects = interfaces.inject(Hash.new(0)){ |h, v| h[v] += 1; h } - net_interconnects.each { |k, v| + net_interconnects.sort_by { |k, v| k.first[:sort] }.each { |k, v| init(data, 'net_interconnects', k) data['net_interconnects'][k][site_uid] += v } @@ -87,7 +87,7 @@ class G5KHardwareGenerator < WikiGenerator gpu_families[[g['gpu_vendor']]] = g['gpu_count'] if g and g['gpu'] mic_families = {} mic_families[[m['mic_vendor']]] = m['mic_count'] if m and m['mic'] - gpu_families.merge(mic_families).each { |k, v| + gpu_families.merge(mic_families).sort.to_h.each { |k, v| init(data, 'acc_families', k) data['acc_families'][k][site_uid] += v } @@ -97,7 +97,7 @@ class G5KHardwareGenerator < WikiGenerator mic_details = {} mic_details[["#{m['mic_vendor']} #{m['mic_model']}"]] = [m['mic_count'], m['mic_cores']] if m and m['mic'] - gpu_details.merge(mic_details).each { |k, v| + gpu_details.merge(mic_details).sort.to_h.each { |k, v| init(data, 'acc_models', k) data['acc_models'][k][site_uid] += v[0] @@ -211,10 +211,10 @@ class G5KHardwareGenerator < WikiGenerator def generate_interfaces table_data = [] - @global_hash["sites"].each { |site_uid, site_hash| - site_hash.fetch("clusters").each { |cluster_uid, cluster_hash| + @global_hash["sites"].sort.to_h.each { |site_uid, site_hash| + site_hash.fetch("clusters").sort.to_h.each { |cluster_uid, cluster_hash| network_interfaces = {} - cluster_hash.fetch('nodes').sort.each { |node_uid, node_hash| + cluster_hash.fetch('nodes').sort.to_h.each { |node_uid, node_hash| next if node_hash['status'] == 'retired' if node_hash['network_adapters'] node_interfaces = node_hash['network_adapters'].select{ |k, v| v['interface'] == 'Ethernet' and v['enabled'] == true and (v['mounted'] == true or v['mountable'] == true) and v['management'] == false } diff --git a/generators/wiki/oar_properties.rb b/generators/wiki/oar_properties.rb index 6b8ed78caa8847a7ccc898cb17a824788d3bb40e..df4d59d67b6f79b7f599e8e58d7568374d283fbe 100644 --- a/generators/wiki/oar_properties.rb +++ b/generators/wiki/oar_properties.rb @@ -145,8 +145,8 @@ class OarPropertiesGenerator < WikiGenerator def get_nodes_properties(site_uid, site) properties = {} - site['clusters'].each do |cluster_uid, cluster| - cluster['nodes'].each do |node_uid, node| + site['clusters'].sort.to_h.each do |cluster_uid, cluster| + cluster['nodes'].sort.to_h.each do |node_uid, node| begin properties[node_uid] = get_ref_node_properties_internal(cluster_uid, cluster, node_uid, node) rescue MissingProperty => e @@ -182,9 +182,9 @@ class OarPropertiesGenerator < WikiGenerator #Compiled properties used to generate page oar_properties = {} - props.each { |site, site_props| - site_props.each { |node_uid, node_props| - node_props.each { |property, value| + props.sort.to_h.each { |site, site_props| + site_props.sort.to_h.each { |node_uid, node_props| + node_props.sort.to_h.each { |property, value| next if @@ignored_properties.include?(property) oar_properties[property] ||= {} @@ -198,7 +198,7 @@ class OarPropertiesGenerator < WikiGenerator } } - oar_properties.each { |prop, prop_hash| + oar_properties.sort.to_h.each { |prop, prop_hash| if (prop_hash["values"].length > 20) #Limit possible values to 20 elements and mark the list as truncated prop_hash["values"].slice!(0...-20) @@ -210,7 +210,7 @@ class OarPropertiesGenerator < WikiGenerator @generated_content = "Properties on resources managed by OAR allow users to select them according to their experiment's characteristics." + MW::LINE_FEED @generated_content += MW::heading("OAR Properties", 1) + MW::LINE_FEED - @@categories.each { |cat, cat_properties| + @@categories.sort.to_h.each { |cat, cat_properties| @generated_content += MW::heading(cat, 2) + MW::LINE_FEED cat_properties.each{ |property| values = oar_properties[property]["values"] rescue []