Skip to content

Commit 02648b6

Browse files
committed
Merge branch 'disk-order' into 'master'
fix disk order on site hardware pages See merge request grid5000/reference-repository!78
2 parents c1e9c78 + 7241e8f commit 02648b6

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

lib/refrepo/gen/wiki/generators/site_hardware.rb

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ def sort_data(data, key)
176176

177177
def get_hardware(sites)
178178
global_hash = G5K::get_global_hash
179+
known_devices_name = ["sda", "sdb", "sdc", "sdd", "sde","sdf", "nvme1n1", "nvme0n1"]
179180

180181
# Loop over each cluster of the site
181182
hardware = {}
@@ -184,6 +185,11 @@ def get_hardware(sites)
184185
site_hash['clusters'].sort.to_h.each { |cluster_uid, cluster_hash|
185186
hardware[site_uid][cluster_uid] = {}
186187
cluster_hash.fetch('nodes').sort.each { |node_uid, node_hash|
188+
node_hash['storage_devices'].map do |d|
189+
unless known_devices_name.include?(d['device'])
190+
raise "unknown device name: #{d['device']}, can't sort correctly"
191+
end
192+
end
187193
next if node_hash['status'] == 'retired'
188194
# map model to vendor (eg: {'SAS5484654' => 'Seagate', 'PX458' => 'Toshiba' ...}
189195
hard = {}
@@ -206,16 +212,17 @@ def get_hardware(sites)
206212
hard['processor_description'] = "#{hard['processor_model']} (#{hard['microarchitecture']}#{hard['processor_freq'] ? ', ' + hard['processor_freq'] : ''}, #{hard['cpus_per_node_str']}, #{hard['cores_per_cpu_str']})"
207213
hard['ram_size'] = G5K.get_size(node_hash['main_memory']['ram_size'])
208214
hard['pmem_size'] = G5K.get_size(node_hash['main_memory']['pmem_size']) unless node_hash['main_memory']['pmem_size'].nil?
209-
storage = node_hash['storage_devices'].map { |i| { 'size' => i['size'], 'tech' => i['storage'] } }
215+
storage = node_hash['storage_devices'].sort_by!{ |d| known_devices_name.index(d['device'])}.map { |i| { 'size' => i['size'], 'tech' => i['storage'] } }
210216
hard['storage'] = storage.each_with_object(Hash.new(0)) { |data, counts|
211217
counts[data] += 1
212-
}.to_a.sort_by { |e|
213-
e[0]['size'].to_f
214-
}.map { |e|
215-
(e[1] == 1 ? '' : e[1].to_s + ' x ') +
216-
G5K.get_size(e[0]['size'], 'metric') +
217-
' ' +
218-
e[0]['tech']
218+
}.to_a
219+
.map.with_index { |e, i|
220+
size = G5K.get_size(e[0]['size'], 'metric')
221+
if i.zero?
222+
(e[1] == 1 ? "<b>#{size}&nbsp;#{e[0]['tech']}</b>" : "<b>1&nbsp;x&nbsp;#{size}&nbsp;#{e[0]['tech']}</b>" + ' +&nbsp;' + (e[1] - 1).to_s + "&nbsp;x&nbsp;#{size}&nbsp;#{e[0]['tech']}")
223+
else
224+
(e[1] == 1 ? "#{size}&nbsp;#{e[0]['tech']}" : e[1].to_s + "&nbsp;x&nbsp;#{size}&nbsp;#{e[0]['tech']}")
225+
end
219226
}.join(' +&nbsp;')
220227

221228
hard['storage_size'] = storage.inject(0){|sum, v| sum + (v['size'].to_f / 2**30).floor }.to_s # round to GB to avoid small differences within a cluster
@@ -236,7 +243,7 @@ def get_hardware(sites)
236243
}
237244
end
238245

239-
hard['storage_description'] = storage_description.map { |e|
246+
hard['storage_description'] = storage_description.sort_by!{ |d| known_devices_name.index(d['device'])}.map { |e|
240247
[
241248
e['count'] > 1 ? "\n*" : '',
242249
G5K.get_size(e['size'],'metric'),
@@ -245,7 +252,8 @@ def get_hardware(sites)
245252
e['vendor'],
246253
e['model'],
247254
' (driver: ' + (e['driver'] || 'MISSING') + ', path: ' + (e['path'] || 'MISSING') + ')',
248-
e['reservation'] ? '[[Disk_reservation|(reservable)]]' : ''
255+
e['reservation'] ? '[[Disk_reservation|(reservable)]]' : '',
256+
e['device'] == 'sda' ? '(primary disk)' : ''
249257
].join(' ')
250258
}.join('<br />')
251259

0 commit comments

Comments
 (0)