From cc4e71e795dfec779f1e43e0fb0478516bfe4f59 Mon Sep 17 00:00:00 2001
From: Lucas Nussbaum <lucas.nussbaum@loria.fr>
Date: Sun, 19 Jan 2020 11:29:33 +0100
Subject: [PATCH] [oar-prop] code simplification

---
 lib/refrepo/gen/oar-properties.rb | 26 ++++++++++++--------------
 1 file changed, 12 insertions(+), 14 deletions(-)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index 881f21b29d4..eb3ed894062 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -1405,24 +1405,22 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
           # (2-e) [if cluster with GPU] Associate a gpuset to each core
           ############################################
 
-          numa_gpus = []
           if node_description.key? "gpu_devices"
-            numa_gpus = node_description["gpu_devices"].values
-            .select {|v| v['cpu_affinity'] == cpu_num and v.fetch("reservation", true)}
-          end
+            numa_gpus = node_description["gpu_devices"].values.select {|v| v['cpu_affinity'] == cpu_num and v.fetch("reservation", true)}
 
-          if not numa_gpus.empty?
-            gpu_idx = core_num / (phys_rsc_map["core"][:per_server_count] / numa_gpus.length)
+            if not numa_gpus.empty? # this can happen if GPUs are not reservable
+              gpu_idx = core_num / (phys_rsc_map["core"][:per_server_count] / numa_gpus.length)
 
-            selected_gpu = numa_gpus[gpu_idx]
-            if selected_gpu.nil?
-              next
-            end
+              selected_gpu = numa_gpus[gpu_idx]
+              if selected_gpu.nil?
+                next
+              end
 
-            row[:gpu] = phys_rsc_map["gpu"][:current_ids][node_index0 * phys_rsc_map["gpu"][:per_server_count] + selected_gpu['local_id']]
-            row[:gpudevice] = selected_gpu['local_id']
-            row[:gpudevicepath] = selected_gpu['device']
-            row[:gpumodel] = selected_gpu['model']
+              row[:gpu] = phys_rsc_map["gpu"][:current_ids][node_index0 * phys_rsc_map["gpu"][:per_server_count] + selected_gpu['local_id']]
+              row[:gpudevice] = selected_gpu['local_id']
+              row[:gpudevicepath] = selected_gpu['device']
+              row[:gpumodel] = selected_gpu['model']
+            end
           end
 
           core_idx += 1
-- 
GitLab